今日はまず読者の方からの貴重なおたよりを頂戴したのでそれをご紹介しよう。ハンドルネーム「ラッコ社の秘密基地住人@円卓」さんからのおたよりである。
--アライ出しを読んでいて気がつきました! 著者の新井悠さんがパッカーを開発したら、名前は「ゆうパック」?
……次。こちらはハンドルネーム「yamagata0x21h」さんから。
--ゆうパック! … 別のパッカーと合併して、動作速度が低下して、謝罪ですね!
……最後。ハンドルネーム「HoneyWhalesの中の人」さんから。
--いやいや遅延実行は対解析テクニックです(キリッ)
……ハイ。皆様、貴重なご意見ありがとうございました。ご意見は今後の内容に反映できるよう鋭意努力いたします。またのご意見をお待ちしております。
パッカーについてのご意見をいただいたので、今回もパッカーの話題である。自動アンパックについてである。RECONの講演の中で筆者がいくつか気になったものをピックアップしていきたいが、まず「Packer Genetics: The Selfish Code」という発表についてである。発表者はZynamicsのJose Duart氏とVirusTotalのEro Carrera氏である。発表スライドはこちら。両氏が発表したのは、PC/AT互換機のエミュレータであるBochsにPythonベースのデバッギングインタフェースを用意することで、アンパックの自動化をするための環境準備を行った。そのうえで、アンパック終了の基準として次の2つの指標を置いた。
- 解凍コードの終了を示す特定のWin32 APIの監視
- オリジナルエントリポイントの兆候を確認できるパターン
特に、2番目が重要である。このパターンというのは、コンパイラの出力パターンとなる。Borland C、Delphi、Visual Basic、GCC、Visual Cといったさまざまな製品が存在しているが、それぞれのコンパイラが出力する実行可能ファイルには特徴が存在する。また、パッカーが使用されたマルウェア検体の大半は難読化された(無意味な)コードが使用されている一方で、コンパイラが生成するようなコードを含むことは少ない。
よって、アンパック終了サインにこうしたコンパイラの出力パターンを使用してマルウェアの実行を一時停止させることで、自動的にアンパックができるのである!という発表であった。
しかし、である。筆者はこの発表内容にデジャブを覚えた。すかさず検索エンジンを駆使するとともに、心当たりの知人に電子メールを送った。「そうあれは2008年ころに見たような……」そんな記憶があったのである。すると、やはりそうだった。
マルウェア対策研究人材育成ワークショップ(MWS) は、サイバークリーンセンターで収集しているボット観測データを 「研究用データセット」 として活用するワークショップである。2008年から開催されているワークショップであるが、その2008年開催の発表の中にその答えはあった。"コンパイラ出力コードモデルの尤度に基づくアンパッキング手法"(プレゼン / 論文)である。筆者が目下共著に取り組む友人、というか日本のマルウェア解析スペシャリストの一人、岩村さんの論文であった。当該論文では、ほぼ前記のプレゼン内容を網羅しており、すでに2年前に先駆していたのである。日本のマルウェア解析技術者にも海外に負けない優れた人材が居ることを、海外で思い知らされた気がするのであった。