概要
パッカー・クリプター判定ツールは、対象のプログラムがどのように生成されたのか、どのような難読化ツールが使用されたのかといったことを分析するツールです。プログラムをツールに読み込むことで、コンパイラーに関する情報やパッカーおよびクリプターに関する情報を取得することが可能です。
代表的なツールは以下のとおりです。
- Detect It Easy
- Exeinfo PE
- PEiD
マルウェア解析では、主にパッカーやクリプターを判定する用途で使用されることが多いです。マルウェアの中には、セキュリティ製品による検出回避や解析妨害といった目的で、パッカーを使って難読化が施された検体が存在します。使用されたパッカーを特定することで、難読化を解除する際のヒントとなる場合があります。
マルウェア解析における利用方法
今回はDetect It Easyを例に、検体(sample.exe)に対して使用されたパッカーを特定してアンパックする流れを紹介します。
- 検体の読み込み
- 使用されているパッカーの特定
- プログラムのアンパック
- アンパックした検体の分析
詳細な手順
1.検体の読み込み
ファイルダイアログあるいはドラッグ&ドロップにより、解析対象の検体をDetect It Easyに読み込ませます。
2.使用されているパッカーの特定
検体を読み込ませると、デフォルトの設定では自動でプログラムの解析が行われます。解析結果を確認すると、図の検体の場合は32ビットのWindows実行形式ファイルであることやパッカーとしてUPXのバージョン3.96が使用されていることなどが分かります。
3.プログラムのアンパック
アンパック機能を備えたパッカーも存在しますが、その機能が無い場合はアンパックが可能な別のツールを探す必要があります。今回の検体で使用されたUPXにはアンパック機能が備わっているため、そのままUPXを使ってアンパックすることが可能です。以下の図ではアンパックした検体をunpack.exeとして出力しています。
4.アンパックした検体の分析
プログラムをアンパックすることでバイナリの難読化が解除されるため、主にマルウェアの表層解析や静的解析でより多くの情報を得ることができるようになります。例として、今回の検体に動的リンクされたインポート関数の比較を以下に示します。
このほか、Stringsで抽出できる有意な文字列が増える、アンパック後の挙動を静的解析で確認できるようになるなど、検体解析の観点で多くのメリットを享受できるようになります。