マルウェア解析者向け: TNEF ファイルを解析する Python ライブラリ tnefparse とメール内の MIME パートの内容をダンプする emldump
TNEF ファイルを解析する Python ツール
TNEF ファイルとは何か
- Transport Neutral Encapsulation Format - Wikipedia
Transport Neutral Encapsulation Format or TNEF is a proprietary email attachment format used by Microsoft Outlook and Microsoft Exchange Server. An attached file with TNEF encoding is most often named winmail.dat or win.dat, and has a MIME type of Application/MS-TNEF. The official (IANA) media type, however, is application/vnd.ms-tnef.[1]
- Microsoft OUTLOOK や Microsoft Exchange Server で使われている MS のプロプライエタリなメール添付ファイルのフォーマット名
- TNEF でエンコードされた添付ファイルには通常 winmail.dat ないし win.dat という名前がつけられることが多い
- MIME タイプは Application/MS-TNEF とされているが IANA の公式なメディアタイプは application/vnd.ms-tnef
tnefparse Python ライブラリの入手場所
- GitHub GitHub - koodaamo/tnefparse: a TNEF decoding library written in python, without external dependencies
サンプルの解析手順
- 同ライブラリの tnefparse-script.py で TNEF ファイルの中身を確認。元記事のサンプルでは .ISO が含まれていることがわかる*1
tnefparse-script.py -o <スキャン対象の TNEF ファイル>
- .ISO ファイルを tnefparse で TNEF から抽出し ISO ファイルとして書き出す
tnefparse-script.py -a <スキャン対象の TNEF ファイル>
- さらに 7-Zip で ISO の中身を確認すると、.ISO の中身が .exe であることが確認できる
7z.exe l <抽出された ISO ファイル名>
- さらに 7-Zip で当該 .exe ファイル抽出
7z.exe -so e <抽出された ISO ファイル名> <書き出す exe のファイル名*2>
- 抽出した exe ファイルの先頭部分を pecheck.py で解析すると、Visual Basic v5.0 / v6.0 で作成された PE ファイルであることがわかる
pecheck.py <抽出された PE ファイル> | headtail.py
同手順で抽出された .ISO の実際の解析*3
元記事 2 で紹介されているメールから添付ファイルを抽出するツール emldump.py
- emldump.py: メール内の MIME 構造を解析して確認する blog.didierstevens.com
- emldump.py で抽出する場合のコマンド: 指定した MIME パートを抽出する
emldump.py -s <確認した MIME パートの番号> -d <添付ファイル名> > <抽出した後書き出すファイル名>
この後の手順は元記事 1 と同じ