
pdfid.py badpdf.pdf

pdfid.py 를 이용하여 pdf 파일 내 의심스러운 키워드 확인
OpenAction (1), JS (2), JavaScript(3) 의 의심스러운 키워드를 확인했음
pdf-parser --search openaction badpdf.pdf
OpenAction 이 문서를 염과 동시에 실행되므로 우선적으로 검색한다.

검색결과로 나온 obj 1 의 내용에서 JS 키워드를 사용해서 this.zfnvkWYOKv\\(\\) 함수가 실행됨을 알 수 있다.
해당 키워드를 추가적으로 검토할 필요가 있으며 정확한 내용을 확인하기 위해서는 obj 1이 참조하고 있는 obj 2, 3, 4, 5, 6, 7도 확인이 필요하다.
💡 /S 키워드?
pdf-parser --search JS badpdf.pdf

검색결과로 나온 obj 12 에서는 obj 13을 참조하고 있는 것을 확인 가능하다.
obj 13 을 기준으로 다시 검색 진행
pdf-parser --object 13 badpdf.pdf

검색 결과에서 obj 13은 데이터 스트림이 포함되어 있음을 확인할 수 있다.
해당 데이터를 분석하면 어떤 동작을 수행하는지 확인이 가능해보인다.
🔥 obj 13 은 /Filter /FlateDecode 키워드를 사용하여 FlateDecode 방식으로 인코딩 되어 있음을 확인했기 때문에 검색 시 --filter 옵션을 사용해줘야한다.
🔥 --filter 옵션 사용 시 FlateDecode, ASCIIHexDecode, ASCII85Decode, LZWDecode, RunLengthDecode 등 5가지의 인코딩에 대해 디코딩이 가능하다.
pdf-parser --object 13 --raw --filter badpdf.pdf