PDF にはファイルを添付する機能がありますが、この機能を使って PDF ファイルに画像ファイルが添付されている場合、どう検出するかをフォレンジック調査サンプルマインドマップに追加しておこうと思ったので、PDFHACKS 本のP244 辺りを読みながら pdftk ツールを使って実験。
PDFTK
http://www.accesspdf.com/pdftk/PDFファイルにJPEG画像ファイル(Penguins.jpg)を添付する場合のコマンドライン:
pdftk test001.pdf attach_files Penguins.jpg output test002.pdf
この場合、添付されている JPEG 画像ファイルはストリーム内で圧縮されているので、\xFF \xD8 などのパターンや JFIF といった文字列を使ったバイナリ検索ではヒットしてくれない。ただし、添付したファイル名や拡張子(.jpg)とかを ASCII と UTF-16LE で検索することでそれらはヒットしますが、名前や拡張子が変更されている場合には一致してきません。
PDFファイルの圧縮を解除した後であれば、\xFF \xD8 や JFIF といったパターンでも検出できるのですが、圧縮を伸張する手間が必要になります。
PDFファイルの圧縮を伸張するコマンドライン:
pdftk test002.pdf output test003un.pdf uncompress
PDFにファイルが添付されている場合、PDFファイル内では /EmbeddedFiles が指定されているので、これをキーワード検索するということで、添付ファイルがあるPDFを簡単に検出できそうですが、/EmbeddedFiles が添付ファイル以外でも使われるケースがあるかは要確認です。
PDFファイルの添付ファイルをカレントフォルダに出力するコマンドライン:
pdftk test002.pdf unpack_files output
pdftk test002.pdf unpack_files output FolderName
pdftk test002.pdf unpack_files output PROMPT
ファイル毎に出力先フォルダを指定しないと、どの添付ファイルがどのPDFファイルのかわからなくなってしまいますね。オプションとしては、フォルダパスを指定しておく、保存先パスを指定するプロンプトを表示するように PROMPT オプション使えます。