CTOとCTO Function Listerを使ったマルウェアの解析方法(IIR vol.59 2章)
2023年06月23日 金曜日
CONTENTS
技術レポート「IIR vol.59」(2023年6月発行)の 第2章では、IIJでマルウェアの解析に従事する筆者が開発し、2021年に行われたVirus Bulletin(VB2021 localhost)で発表したプログラム解析支援ツール「CTO」及び「CTO Function Lister」(※1)について、マルウェア解析のどのような部分に適用可能なのかを、実際の解析事例と共に紹介します。
(※1)VB2021 localhostでの発表は次のリンクを参照のこと。(CTO(Call Tree Overviewer): yet another function call tree viewer)。また、CTOとCTO Function Listerは筆者のgithubリポジトリで公開している。
本報告のポイント
- マルウェア解析ツール「CTO」と「CTO Function Lister」の使い方について解析例を交えて紹介
- 起動方法や初期画面の解説、および、実際のマルウェア(SpiderPig)を例に、次のような処理を解析した事例を紹介する。
- 難読化されたデータを復号するルーチンの検出 (難読化されたデータを復号する処理を自動的に探索し、周辺にある不審なコードの探索に繋げる)
- 実行パス探査 (ある関数がどのような経緯で呼び出されるのかを解析し、プログラムの流れをつかむ)
- std::string/std::wstringの検出 (C++で書かれたマルウェアが使用することが多い関数だが、コンパイラがインライン展開する事があり単純な検索では発見が難しい。コンパイラの癖を見て検出を支援する)
- 起動方法や初期画面の解説、および、実際のマルウェア(SpiderPig)を例に、次のような処理を解析した事例を紹介する。
解析例
以下、レポートから解析例の画像を紹介します。 本レポートの全文はこちらからご覧いただけます。
CTO及びCTO Function Listerの起動ボタンと各画面
ループ内のXOR命令検出コマンドの実行方法
ループ内のXOR命令の検出結果表示方法
ループ内のXOR命令検出結果と、その付近のコード
パス探査
MFCメインアプリケーションクラスのvftableとInitInstanceの関数
std::stringの検出
std::stringの構造体適用とメンバ変数の認識
Internet Infrastructure Review(IIR) vol.59 2章 フォーカス・リサーチ(1)(2023年6月23日発行)