[レポート]IDA / Ghidraによるアンチデバッグの自動検出とサポート機能によるデバッグプロセスの効率化 - CODE BLUE 2024 #codeblue_jp

[レポート]IDA / Ghidraによるアンチデバッグの自動検出とサポート機能によるデバッグプロセスの効率化 - CODE BLUE 2024 #codeblue_jp

CODE BLUE 2024で行われた「IDA / Ghidraによるアンチデバッグの自動検出とサポート機能によるデバッグプロセスの効率化」というセッションのレポートです。
Clock Icon2024.11.14

こんにちは、臼田です。

みなさん、セキュリティ対策してますか?(挨拶

今回はCODE BLUE 2024で行われた以下のセッションのレポートです。

IDA / Ghidraによるアンチデバッグの自動検出とサポート機能によるデバッグプロセスの効率化

マルウェアの作成者は、しばしばアンチデバッグ技術を用いて解析を妨害する。デバッガ上で実行されると、マルウェアはデバッガの存在を検出し、その後の動作を停止するか、通常とは異なる動作を行うため、解析が困難になる。アンチデバッグの実装方法は、マルウェアごとにさまざまである。

特に、大規模なメール送信キャンペーンで拡散されるマルウェアや、組織に影響を与える人気のランサムウェアには、複数のアンチデバッグ技術が確認されている。たとえば、アンチデバッグ技術には、デバッグ環境を検出するためのVM検出、デバッグ中にプログラムの実行を一時停止するブレークポイントの検出、デバッガを使用してマルウェアを解析する際の実行時間の違いを利用する時間差検出などが含まれる。

「AntiDebugSeeker」は、解析者によく利用されるバイナリ解析ツールIDAとGhidra用のオープンソース・プラグインであり、Windowsマルウェアに組み込まれたアンチデバッグ技術を自動的に識別することで、マルウェア解析プロセスを効率化する。アンチデバッグ機能に関連するコードは、例えば、マルウェアが使用するプロセスインジェクションの準備ステップとも重なる。したがって、検出ルールを柔軟にカスタマイズすることで、アンチデバッグ機能を特定するだけでなく、マルウェアの機能を理解することも可能である。さらに、このツールは、これらのアンチデバッグに対する説明やデバッグする際のサポート情報を提供し、アナリストが理解し、回避するための対策を講じる能力を向上させる。

本講演では、マルウェア解析を実演し、このツールの機能をどのように使用するかを説明し、実際の脅威シナリオでこれらの機能がどのように応用できるかを実践的に理解する。

Speakers: 武田 貴寛

レポート

  • マルウェアに仕込まれるアンチデバッグを検出する仕組みを作った
  • 自己紹介
    • JSOCのアナリストを行っていた
    • 現在はマルウェア解析をしている

AntiDebugSeekerの紹介

  • IDAとGhidraからアンチマルウェアの検出
  • よく使われるAPIをルールベースで抽出
  • 十分検出できいないものを複数キーワード検出
  • unpackする必要がある

なんでツールを作ったのか

  • 表層解析して実行するとアンチデバッグが出てくる
  • 動的・静的解析をする
  • 問題なければいが、ここで手が止まることがある
  • これを解決するために作成した
  • IDAは有償ライセンスが必要になるのでGhidraの方も開発した
  • アンチデバッグを見つけるツールは既存でもある
  • 今回はよりアシストするコンセプト

IDAデモ

  • Ursnifを使う
    • unpackしたバージョンを利用する
    • アンチデバッグでkill
      • VMを検知していた
    • 解析する
      • IDAにロード
      • ショートカットで処理を開始できる
      • 検出した件数とルール名がでる
      • 検出結果の内容
        • APIのカテゴリ
        • アドレス
        • テクニック
        • などなど
      • ダブルクリックでアドレスに遷移できる
        • 背景を緑色にしてくれる
        • コメントでカテゴリを出してくれる
      • 関数ごとグルーピングできる
        • カーソルを当てるとルールの解説をしてくれる
        • 関数名をダブルクリックをするとルートを教えてくれる
        • アンチデバッグで検出したものはグレーになる
        • ジャンプもできる
        • 条件を確認するとexitする箇所を見つけたのでパッチを当てる
  • パッチを当てる
    • jeをjmpに変える
  • メモリを操作するAPIなども検出できる
  • カテゴリのコメントがあるのでAPIが何をするものなのかわかりやすくなる
  • 複数のキーワードでマッチした場合にはオレンジ色になる
    • 初心者のためにより詳細にコメントしている
    • 検知したものが誤検知の場合もあるので、どこを見るとアンチデバッグの可能性が高いかまでコメントに書いてある
  • ルールが多いと処理結果が多くなる
    • IDA画面からコントロールをいじれる
    • ルールを追加、編集、確認できる

IDAに必要なファイル

  • プラグインフォルダに展開
  • GtHubに公開している
  • anti_debug.config
    • Anti_Debug_API
      • カテゴリを作って検知できる
        • 名前は完全一致
    • Anti_Debug_Technique
      • サーチレンジの設定に合わせて、キーワードにマッチした先のレンジバイト数まで進んで次のキーワードがあるかチェックする
      • オペコードとオペランド、info tableを見ている
  • anti_debug_techniques_descriptions.json
    • コメントが入っている
  • 全部で54ルールある
    • 多くのアンチデバッグに対応している

Ghidraのデモ

  • Qakbotを使ってデモする
  • 実行するとプロセスは残っていて動くように見えるが通信が発生しない
  • Ghidraで確認
    • ウインドウが選べる
    • configファイル/jsonファイルをロードする
    • 処理結果のウインドウがでる
    • bookmarksでも確認できる
    • 検知したものとしていないものが混ざった画面になる
      • 真ん中のボタンを押すと検知結果だけ出る
      • 関数ごとのグルーピング結果も表示できる
    • bookmarksから操作
    • preコメントでコメントが入る
    • テクニックでpostコメントが入る
    • どのキーワードがどこで検出されたかわかる
    • VM検知のロジックを発見
    • コメントで入っているのですぐに分かる

Ghidraへの組み込み

  • ScriptとExtension
  • 設定ファイルは同じように2つ

.NETのパターン

  • Thanosで確認
  • キーワードでの検出ができる

まとめ

  • このツールで解析の効率化ができる
  • ルールの自由度が高い
  • IDAのみだがダブルクリックでパスを見るとかできる

感想

初心者でも手を止めずに使えるように、というコンセプトが非常に良いプラグインですね。
ぜひ使っていきましょう!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.