CTOとCTO Function Listerを使ったマルウェアの解析方法(IIR vol.59 2章)

2023年06月23日 金曜日


【この記事を書いた人】
IIJ Engineers Blog編集部

開発・運用の現場から、IIJのエンジニアが技術的な情報や取り組みについて執筆する公式ブログを運営しています。

「CTOとCTO Function Listerを使ったマルウェアの解析方法(IIR vol.59 2章)」のイメージ

技術レポート「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++で書かれたマルウェアが使用することが多い関数だが、コンパイラがインライン展開する事があり単純な検索では発見が難しい。コンパイラの癖を見て検出を支援する)

解析例

以下、レポートから解析例の画像を紹介します。 本レポートの全文はこちらからご覧いただけます。

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日発行)

関連リンク

IIJ Engineers Blog編集部

2023年06月23日 金曜日

開発・運用の現場から、IIJのエンジニアが技術的な情報や取り組みについて執筆する公式ブログを運営しています。

Related
関連記事