コンテンツにスキップ

TinyTracer - API/命令トレーサーアンパッキングチートシート

TinyTracer - API/命令トレーサーアンパッキングチートシート

TinyTracer (hasherezadeによる)は、Intel Pin 上に構築された動的トレーシングツールです。ターゲット実行可能ファイルを実行して、API呼び出しと選択された命令のトレースログを生成し、各イベントをモジュール相対オフセット (RVA)として記録するため、コードが再配置されても出力が有意です。Pinは低レベルで計装するため、TinyTracerはパッカースタブが使用するほとんどのアンチデバッグトリックの影響を受けません。これは、サンプルの元のエントリーポイント (OEP) を特定し、実際の動作を観察するのに優れています。

認可されたマルウェア分析用。信頼できないサンプルは分離されたVM/サンドボックスでのみ実行してください。

要件

  • Intel Pin (動的バイナリ計装フレームワーク)
  • Windows (x86/x64) 分析VM
  • コンパイルされたTinyTracer TinyTracer.dll (Pintool)

インストール

ステップ方法
Pinを入手Intel Pinをダウンロードして PIN_ROOT を設定
TinyTracerを入手リリースをダウンロードまたはPintoolをビルド
ヘルパースクリプトバンドルされた run_me.bat / インストーラーヘルパーを使用
確認既知のEXEに対して実行し、.tag/ログ出力をチェック

トレースの実行

# 概念的な呼び出し (バンドルされたヘルパーまたは直接pin)
pin.exe -t TinyTracer.dll -o output.tag -- target.exe
フラグ目的
-t TinyTracer.dllTinyTracerをPintoolとして読み込む
-o FILEトレースログ (.tag) パス
-m MODULEトレースをモジュールに限定
-b基本ブロック / より細粒度なイベントをトレース
-- target argsトレースするプログラムと引数

トレースログに含まれるもの

エントリー意味
RVA;called: FUNCAPI呼び出し、モジュール相対アドレス
セクション遷移セクション間の実行移動 (アンパッキング)
TLSコールバック早期アンチ分析/実行フック
サブ呼び出しオプションで内部コールターゲット

RVAベースのログが重要なポイント:パッカーがアンパック後に新しいコードにジャンプしても、エントリーはモジュールにアンカーされ続けるため、逆アセンブラーにマップ戻せます。

OEPの検出

古典的な使用:パッカースタブ後の実行先を見る。

ステップ探すべき内容
1パック済みサンプルをTinyTracerの下で実行
2以前に書き込まれていないセクションへのジャンプを観察
3最初の「本物の」APIバースト (GetModuleHandleなど)がアンパック済みコードをマーク
4RVAをメモ — その領域がOEP候補
5その時点でダンプ (PE-sieveなど) および静的に分析

ツールキット統合

ツールTinyTracerの隣での役割
PE-sieveOEPで検出されたアンパック済みモジュールをダンプ
x64dbgOEP RVAにブレークポイントを設定してさらに分析
Detect It Easyトレース前にパッカーを識別
GhidraトレースされたRVAを逆アセンブリにマップ

一般的なワークフロー

# サンプルのAPI使用の動的トレース
pin -t TinyTracer.dll -o sample.tag -- sample.exe
# → 疑わしいAPIシーケンス (crypto、network、injection) についてsample.tagを確認

# 未知のパッカーのOEPハント
# 1) トレース、2) アンパック済みコードへのセクション遷移を検出、
# 3) PE-sieveでダンプ、4) クリーンバイナリを分析

TinyTracerと関連アプローチ

側面TinyTracerx64dbg (手動)API Monitor
ベースPin計装インタラクティブデバッガーAPIフッキング
アンチデバッグ耐性高いScyllaHideが必要中程度
出力RVAトレースログインタラクティブライブAPIログ
最適用途自動OEP/動作トレースハンズオンステッピングAPIコール監視

リソース