peepdfによる悪意のあるPDFの静的解析 は何をしますか?
使用すべき場面
- フィッシングメールから疑わしいPDF添付ファイルをトリアージするとき
- PDFベースのエクスプロイト文書をマルウェア解析するとき
- PDFに埋め込まれたJavaScript、シェルコード、実行可能ファイルを抽出するとき
- 武器化された文書アーティファクトをフォレンジック調査するとき
- PDFベースの脅威に対する検知シグネチャを構築するとき
前提条件
- Python 3.8以上とpeepdf-3がインストールされていること(pip install peepdf-3)
- Didier Stevensスイートに含まれるpdfid.pyとpdf-parser.py
- 隔離された解析環境(VMまたはサンドボックス)
- 任意: PyV8(peepdf内でのJavaScriptエミュレーション用)
- 任意: Pylibemu(シェルコード解析用)
ワークフロー
- pdfidによるトリアージ: PDFをスキャンし、怪しいキーワード(/JS、/JavaScript、/OpenAction、/Launch、/EmbeddedFile)が含まれていないか確認します。
- 対話型解析: peepdfの対話モードでPDFを開き、オブジェクト構造を調査します。
- 怪しいオブジェクトの特定: JavaScript、ストリーム、エンコード済みデータを含むオブジェクトを特定します。
- コンテンツの抽出: 怪しいストリームをダンプし、フィルタ(FlateDecode、ASCIIHexDecodeなど)をデコードします。
- JavaScriptの難読化解除: 抽出したJSを解析し、シェルコード、ヒープスプレー、エクスプロイトコードを特定します。
- VirusTotalチェック: peepdfのvtcheckを使ってファイルハッシュをウイルス対策エンジンの検知結果と照合します。
- IoCの生成: URL、ドメイン、ハッシュ、シェルコードシグネチャを抽出します。
主要な概念
| 概念 | 説明 |
|---|
| /OpenAction | PDFを開いたときに自動的に実行されるアクション |
| /JavaScript /JS | PDFオブジェクトに埋め込まれたJavaScriptコード |
| /Launch | 外部アプリケーションを起動するアクション |
| /EmbeddedFile | PDF構造内に埋め込まれたファイル |
| FlateDecode | コンテンツを隠すために使用されるzlib圧縮フィルタ |
| オブジェクトストリーム | 圧縮ストリーム内に格納されたPDFオブジェクト |
ツールとシステム
| ツール | 目的 |
|---|
| peepdf / peepdf-3 | JSエミュレーション機能付き対話型PDF解析 |
| pdfid.py | 怪しいキーワードの高速トリアージスキャン |
| pdf-parser.py | 詳細なオブジェクトレベルPDF解析 |
| VirusTotal | ハッシュ検索とウイルス対策検知の相互参照 |
| CyberChef | 抽出されたペイロードのデコードと変換 |
出力形式
Analysis Report: PDF-MAL-[DATE]-[SEQ]
File: [filename.pdf]
SHA-256: [hash]
Suspicious Keywords: [/JS, /OpenAction, etc.]
Objects with JavaScript: [Object IDs]
Extracted URLs: [List]
Shellcode Detected: [Yes/No]
Embedded Files: [Count and types]
VirusTotal Detections: [X/Y engines]
Risk Level: [Critical/High/Medium/Low]