[WHS] 1주차 문서 포렌식 - 스테가노그래피

chwrld·2023년 9월 9일

화이트햇스쿨

목록 보기
1/2

🚩 마약 범죄자를 찾아라! - PDF 스테가노그래피


🥤 1. 거래장소

문제 파일 맨 밑으로 내려보면 /JS alert(...)가 있다.

해당 코드를 살펴보면 zlib로 압축된 데이터라고 한다.
그 증거는 'x\x9c'인데 '\x78'=x '\x9c'=zlib flag 라고 한다.

이것을 디코딩 해보면 결과를 얻을 수 있다.

import zlib

data = b'x\x9c\x15\xcc\xcb\t\x800\x14D\xd1V\xa6\x00\r*6`\x01\xa2`\x05Q\x86$\xf0\xe2\x0b\xf9,\xec^\xdd\xdd\xb3\xb9\xbb\xd0\x16"32\x9e\xcc\xc6\xa0z"\x89\xbd\x88P0\xcdC\x87M\x9e\x98\xc2\xd5g\xedp\xe8\xed\x92\xed]\xfb\x92\xda\x04\xb6b\x1c\x97\x15\x85\xc4\xa3\xed\xf7\x7f\xf0Z)/\xba\x95\x1f\x17'
data = zlib.decompress(data)
print(data)


🍺 2. 고객명

멘토님이 font가 힌트라고 주셨는데 font를 검색해봤다.

/BaseFont가 변경돼 있는 걸 확인할 수 있는데 고객명은 'Noliardaski'이다. 그렇다면 /FontName과 무슨 차이가 있는 것인가?

/FontName 또한 수정해도 파일이 잘 열리는 것을 확인했다.
폰트 이름 변경은 파일에 직접적인 손상을 가하지 않는다.


🍷 3. 거래가격

힌트는 '사이즈'인데 파일 크기가 아니라 슬라이드 크기를 말하는 것이다.
이 문제 파일은 2개의 슬라이드로 구성되어 있다

그중 /MediaBox는 슬라이드 크기를 나타내는 속성이고 검색해보면 3개의 obj를 확인할 수 있다.


가장 마지막에 있는 obj를 요약하면 슬라이드 크기는 595x842 이며 개수는 2개 자식요소는 1번 obj와 13번 obj이다.
즉 2개 슬라이드를 총괄하는 obj이다. 1번 obj를 보면

/MediaBox 가 100x100으로 설정돼있다.
595x842로 변경해주면

가격을 확인할 수 있다. 그리고 2번째 슬라이드 크기는 변경이 안됐으니

작게 표시되는 걸 확인할 수 있다.


💬 Comment

스테가노그래피는 할때마다 어려운것 같다. 각 파일 구조를 정확히 파악하고 있어야 하는 것이 중요하고, 그러기 위해서는 많은 공부와 실습이 필요할 것 같다. 또한 첫번째 JS코드와 같이 어떤 인코딩인지 파악하려면 기본 프로그래밍 지식 또한 겸비되어야 할 것이다.

profile
BoB 13th 최강포린이👮

0개의 댓글