連載
» 2011年08月22日 00時00分 UPDATE

リバースエンジニアリング入門(3):シェルコード解析に必携の「5つ道具」 (1/3)

コンピュータウイルスの解析などに欠かせないリバースエンジニアリング技術ですが、何だか難しそうだな、という印象を抱いている人も多いのではないでしょうか。この連載では、「シェルコード」を例に、実践形式でその基礎を紹介していきます。(編集部)

[青木一史,日本電信電話株式会社]

シェルコードの調理に必要なツール

 第1回第2回では、シェルコードの入手方法、概要について解説してきました。料理に例えるならば、素材を手に入れ、その素材がどういうものかを学んだ、というところでしょうか。

 今回は、素材であるシェルコードを調理するのに必要なツールを紹介します。ここで紹介するツールは、シェルコード解析だけではなく、マルウェア解析でも使えるので、シェルコード解析を卒業し、マルウェア解析に挑む際にも参考にしていただければと思います。

 図1はシェルコード解析の流れとそのときに使われるツールの例です。今回は、逆アセンブラである「IDA Pro(アイダ プロ)」、デバッガである「OllyDbg(オリーデバッガ)」「Immunity Debugger(イミュニティー デバッガ)」、シェルコードを実行ファイルに変換する「shellcode2exe.py(シェルコード トゥー エグゼ ドット パイ)」、シェルコードの実行をエミュレートする「libemu(リブエミュ)」を紹介します。

図1 今回紹介するツールと解析の流れ 図1 今回紹介するツールと解析の流れ
ツールの名称 URL
IDA Pro http://www.hex-rays.com/idapro/
OllyDbg http://www.ollydbg.de/
Immunity Debugger https://www.immunityinc.com/products-immdbg.shtml
shellcode2exe.py http://zeltser.com/reverse-malware/convert-shellcode.html
libemu http://libemu.carnivore.it/

リバースエンジニアリングのスタンダード「IDA Pro」

 リバースエンジニアリングには、逆アセンブラである「IDA Pro」がよく用いられます。IDA Proは逆アセンブラのデファクトスタンダートといっても過言ではありません。正規版はHex-Rays社から販売されていますが、非商用の利用に限っては、旧バージョン(Ver.5.0)を無償版として利用することができます。

 最新版(Ver.6.1)と比べ、無償版では対応しているファイルフォーマットやCPUアーキテクチャが少なかったり、組み込まれているプラグインやデバッガの数が少なかったりと、いくつか機能的に劣っている部分があります。とはいえ、シェルコード解析やマルウェア解析をこれから始めてみよう、という方であれば問題ないかと思います。解析をバリバリ行えるようになり、無償版では物足りないと思ったときに最新版の購入を検討するとよいでしょう。

 IDA Pro無償版のインストールは非常に簡単で、Hex-Rays社のサイトからダウンロードしたインストーラを起動するだけです。

 では、第1回で取得していた「download_exec.bin」をIDA Proに読み込ませてみましょう。IDA Proを立ち上げ、起動方法を選択する画面(図2)が出現したら、「New」をクリックします。

図2 IDA Proの起動方法選択画面 図2 IDA Proの起動方法選択画面

 なお、新しくバイナリを読み込ませて解析を始めるなら「New」、バイナリを読み込ませずに起動するなら「Go」、以前解析したことのあるバイナリの解析を行う場合は、画面下の履歴から解析したいバイナリ名を選んで「Previous」をクリックします。「Go」を選択した後、IDA Proのウィンドウにバイナリをドラッグアンドドロップして読み込ませることも可能です。

 「New」をクリックすると、読み込むバイナリのフォーマットを選択する画面が出てきます(図3)。

図3 IDA Proで読み込むバイナリの種類を選択する画面 図3 IDA Proで読み込むバイナリの種類を選択する画面

 今回は「Various files」タブの「Binary/Raw File」を選択して、download_exec.binを読み込ませます。この後、バイナリをロードするウィザードが立ち上がりますが、とりあえず「次へ」で先に進んでかまいません。プロセッサの選択では「Intel 80x86 processors: metapc」を選択しておきます。ウィザードが終わった後、16bit/32bitのどちらで逆アセンブルするかを選択する画面が出ますが、ここは32bitで逆アセンブルしましょう。

 これでIDA Proにシェルコードを読み込ませることができました。

 図4はシェルコードを読み込ませた直後の画面です。画面中央の「IDA View」のウィンドウに逆アセンブルしたコードが表示されていま……せんね。これは、シェルコードをバイナリとして読み込んだだけで、どのバイト値をコードと解釈するかが設定されていないためです。

 download_exec.binのエントリである「seg000:00000000」のところにカーソルを合わせて、キーボードの「c」を押してみましょう。「c」は、カーソルの位置をコードとして解釈し逆アセンブルする、というショートカットキーです。そうすると図5のように、逆アセンブルされたコードが画面に表示されます(注1)。

図4:IDA Proでシェルコードを読み込んだ直後の画面(クリックすると拡大します) 図4:IDA Proでシェルコードを読み込んだ直後の画面(クリックすると拡大します)
図5:IDA Proで逆アセンブルした後の画面(クリックすると拡大します) 図5:IDA Proで逆アセンブルした後の画面(クリックすると拡大します)
注1:デフォルトのままだと、IDA Proのウィンドウ上部にたくさんのアイコンが並んでおり、逆アセンブリを表示するウィンドウが狭くなっています。筆者は、逆アセンブリを表示するウィンドウを大きくするために、これらのアイコンを非表示にしています。非表示にする場合は、上部のメニューを「View」→「Toolbars」でたどり、「Main」のチェックを外してください。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。