AI 時代のリバース エンジニアリング: 仕事がより重要になる理由、および AI がワークフローをどのように変えるか

AI 時代のリバース エンジニアリング: 仕事がより重要になる理由、および AI がワークフローをどのように変えるか

AI 時代のリバース エンジニアリング: 仕事がより重要になる理由、および AI がワークフローをどのように変えるか

導入

多くの人は、AI がリバース エンジニアリングを時代遅れに感じさせるだろうと考えていました。ファンタジーは素晴らしかったです。モデルは、コードを読み取り、バイナリを説明し、プロトコルのもつれを解き、マルウェアを要約し、一般に、患者による技術調査の古い作業を、より高速で、より光沢があり、会議のスライドにはるかに適したものに置き換えます。

現実はより残酷で、より興味深いものになりました。

AI によってもリバース エンジニアリングの必要性は減りませんでした。それはそれを増やしました。私たちは現在、より不透明なクライアント、モデルを囲む独自のラッパーが増え、文書化されていない動作を送信するエッジデバイスが増え、信頼境界を越えるエージェントランタイムが増え、派生ロジックをバイナリに隠すデスクトップおよびモバイルソフトウェアが増え、自分たちが構築していない、ソースだけから完全に検査できないシステムを統合または保護しようとするチームが増えている世界に住んでいます。これはリバース エンジニアリングと同じではありません。それはさらに多くのことであり、より大きな配信プレッシャーにさらされています。

より深い理由は単純です。 AI は、ソフトウェアの正直さを拡張するよりも早く、ソフトウェアの動作を拡張します。システムは、SDKs、ランタイム、エージェント、プラグイン、デバイス ファームウェア、モデル提供コンポーネント、サードパーティ クライアントから組み立てられます。これらは、1 つのバイナリが実際に何をしているのか、1 つのモデル ラッパーが実際に送信しているもの、または、なぜ誰も防御しようとしない方法で動作が変更されたのかを誰かが説明する必要があるまで、図上ではすべて一貫して見えます。

ここで、リバース エンジニアリングは、かすかにノスタルジックではなく、鋭く現代的になります。それはもはや、マルウェア アナリスト、ファームウェアの専門家、プロトコル考古学者だけの仕事ではありません。これは、文書が楽観的、不完全、または完全に架空になった後に、成果物から真実を回復する必要があるチームの仕事です。

AI はこの作業を変えます、そうです。トリアージ、アノテーション、仮説生成、比較、およびドラフト文書化を加速できます。ヘルパー スクリプトをより速く構築するのに役立ちます。 「これは何だろう?」と考えるまでの時間を短縮できます。そして、「有効な技術的情報が得られました。」しかし、それは中心的な規律を廃止するものではありません。アーティファクトはまだ調査する必要があります。実行時間は引き続き観察する必要があります。プロトコルはまだ検証する必要があります。人間は、その説明が証拠と接触しても生き残れるかどうかを判断する必要があります。

おそらく、スキップすると現代風に聞こえるため、人々はこの部分をスキップしようとし続けています。残念ながら、実稼働システム、インシデント対応、セキュリティレビューには、現実を優先するという昔ながらの弱点がまだあります。

リバース エンジニアリングの価値が低下するのではなく、より価値のあるものになった理由

現代のソフトウェア資産には、多くのチームが認めているよりも多くのブラック ボックスが含まれています。それらの中には、レガシー バイナリ、ベンダー クライアント、放棄されたデバイス ファームウェア、文書化されていないデスクトップ コンポーネント、独自のプロトコル、インストーラー、カーネル モジュール、または明白に話すことを学ばなかったミドルウェアなど、歴史的なものもあります。モデル ランタイム、エージェント シェル、埋め込み推論パッケージ、ブラウザ拡張機能、スマート デバイスの更新形式、スプリントがすでに遅れていたために誰も文書化していない方法で、ローカルの動作をネットワークの動作に静かに変換するアプリケーション バンドルなど、真新しいものもあります。

AI の時代は、3 つの方法でこのプレッシャーを増大させます。

まず、アーティファクトが増殖します。チームは現在、以前よりも多くのラッパー、より多くのアシスタント、より多くのクライアント側ロジック、より多くのベンダー SDKs、およびより多くの実験レイヤーを出荷および統合しています。新しいレイヤーはすべて、セキュリティの前提条件、パフォーマンス コスト、または動作の変更がブランディングや楽観主義の背後に隠れる場所になる可能性があります。

第二に、解釈の問題が増大します。問題はもはや「このバイナリは何をするのか?」というだけではありません。また、「このバイナリは、モデル呼び出しパス、取得パス、ローカル キャッシュ、プラグイン サーフェス、更新メカニズム、またはオペレーター ワークフローに対して何をしているのか?」ということでもあります。リバース エンジニアリングは、異なるチーム、異なる時代、または異なる気分によってドキュメントが作成されたシステムから動作を復元する作業になります。

第三に、間違いによるコストが倍増します。従来のユーティリティがおかしな動作をしたとしても、被害は狭い可能性があります。 AI 対応のクライアント、エージェント ヘルパー、または独自の自動化コンポーネントが異常な動作をすると、その被害はデータ漏洩、予測不可能な認証、誤った監査証跡、または最初にプロミスとパケット キャプチャを比較した時点で崩壊するセキュリティ ストーリーに波及する可能性があります。

したがって、成果物がより重要であるため、仕事はより重要です。問題は、ソフトウェアが理解できないことではありません。問題は、重要なソフトウェアが部分的にしか判読できないにもかかわらず、商業的にアクティブなままであることです。リバース エンジニアリングとは、ベンダー、原作者、または世界全体がより良い習慣を身につけるのを待たずに、チームがそのギャップを埋める方法です。

AI がリバース エンジニアリングに真に役立つ場所

AI は、真実の代わりとしてではなく、アクセラレーション レイヤーとして使用すると、リバース エンジニアリングに役立ちます。

最初のパスを動かすのがとても上手です。大量の文字列、インポート、ログ、シンボル、デコンパイラー出力、API トレース、および反復的な構造キューは、コーヒーが止まるまで人間が 1 人ですべてに目を細めるよりも、機械の支援によってはるかに迅速にクラスタリング、タグ付け、要約、および優先順位付けを行うことができます。多くの取り組みは、最も難しい技術的推論ではなく、実際の問題が明らかになる前に行わなければならない最初の分類の沼地で行き詰まっているため、これは重要です。

AI は注釈にも役立ちます。逆コンパイルされた関数には名前の提案が必要です。繰り返される通話パターンにはグループ化が必要です。状態遷移の候補には暫定的な説明が必要です。プロトコルフィールドには仮説が必要です。ツーリング用の接着剤を書く必要があります。ギドラとフリーダのヘルパーには最初のドラフトが必要です。チームの残りのメンバー向けのドキュメントは、バイナリからの身代金要求のように聞こえるのをやめる必要があります。

そのような助けは本物です。時間を節約できます。これにより、作業の前半部分の退屈さが軽減されます。また、生の成果物がすぐに議論されやすくなるため、コラボレーションが容易になります。エンジニア、研究者、意思決定者は、デジタルの洞窟の壁からではなく、ラベル付きの地図から始めることができます。

商業的に重要な利点がもう 1 つあります。 AI は、疑いを抱いてから決定品質の読み取りが行われるまでの時間を短縮します。それによってエンゲージメントの経済性が変わる可能性があります。チームは、通常の統合の問題、隠れたセキュリティ境界、保護されたモデル ラッパー、埋め込まれた更新パス、またはリーダーが別のふりをするのをやめるべきであるドキュメントと動作が十分に異なるコンポーネントを扱っているかどうかを知るために、それほど長く待つ必要はありません。

このように使用すると、AI はリバース エンジニアリングに代わるものではありません。これにより、リバース エンジニアリングの管理速度が低下します。

AI はどこにあるのか、そしてそれが依然として重要である理由

AI も見事に嘘をつきます。だからこそ、規律あるチームは結論をそれに任せることを拒否します。

モデルは、間違った、もっともらしい関数名を生成する可能性があります。フィールドの半分に適合し、残りのフィールドを幻覚させるプロトコル ストーリーを推測できます。逆コンパイラーの出力に対して、証拠に値するよりも鮮明に聞こえる自信に満ちた解説を生成できます。ランタイムが何かを確認する前に、あいまいさを洗練された文章にまとめることができます。そして、言葉が滑らかなので、人々はそれを、姿勢よく、推測ではなく知識として扱い始めます。

多くのアーティファクトがすでに暗示的に見えるため、リバース エンジニアリングではこれは特に危険です。文字列は動作を示唆します。インポートは能力を示唆しています。シンボルの形状は構造を示唆します。逆コンパイルされた制御フローは意図を示唆しています。ヒントは役に立ちます。ヒントは判定ではありません。 AI は、大人のワークフローで許可されるよりも早くヒントを判決のように聞こえる傾向があります。

強力なチームが、ほとんど時代遅れに感じられるルールを構築するのはこのためです。AI は仮説を作成するかもしれませんが、依然としてアーティファクトとランタイムが答えを所有しています。

パケット キャプチャは物語に勝ります。リプレイは理論に勝ります。記憶の痕跡は自信に満ちた文章に勝ります。ダイナミックなフックが魅力的なモデルの概要を打ち破ります。再現された状態遷移は、実際には実行を生き延びることができなかった疑わしいほど洗練された説明を打ち破ります。

これによって AI が役に立たなくなるわけではありません。それによって統治可能になります。そして、管理可能なツールは、本格的なエンジニアリング作業において永続的な地位を獲得するものです。

実際に機能するワークフロー

AI とリバース エンジニアリングの間で最も信頼できる相互作用は、献身的なものではなく循環的なものです。

まずは素直にアーティファクトを集めましょう。バイナリ、パッケージ、トレース、文字列、インポート、キャプチャ、ログ、更新ペイロード、プロセス ツリー、システム コール、ネットワーク エッジ、逆コンパイラ出力。証拠が明らかになる前にツールの発明を開始させないでください。

2 番目に、AI を使用してトリアージを加速します。インポートをグループ化します。文字列にタグを付けます。反復的なフローを要約します。考えられるモジュールの責任を草案します。候補名と推定される境界線を生成します。反復的なツール作業用の小さなスクリプトを生成します。教義ではなく仮説を求めてください。

3 番目に、動的に検証します。パスをフックします。トラフィックを再生します。行動を引き起こします。ファイル システムの変更、レジストリの変更、ネットワークの変更、暗号化操作、または UI の状態を仮説と比較します。ここがきれいな嘘が消え始める場所であり、それは誰にとっても健康的です。

4番目に、精査に耐えられる人間の言語で結論を書きます。実際に何が起こっているのでしょうか?まだ不確実なことは何ですか?リスクは何ですか?次に何を変えられるでしょうか?その命令を裏付ける証拠は何ですか?リバース エンジニアリングは、結果が十分に読みやすくスケジュールを設定できる場合にのみ商業的に役立ちます。

このワークフローは空想よりも遅く、混乱よりも速くなります。通常はそれが適切な速度です。

最初に解決する価値のある実際的なケース

独自の AI クライアントの動作

チームは、安全、プライベート、スコープ指定、またはローカルであると主張するサードパーティのアシスタント、推論ラッパー、ブラウザ拡張機能、またはエンタープライズ クライアントにますます依存しています。リバース エンジニアリングは、ローカルが本当にローカルを意味するかどうか、キャッシュが正しく動作しているかどうか、添付ファイルが人々の考えどおりに処理されているかどうか、実際のネットワークとストレージの境界がどこにあるかを検証するのに役立ちます。

エージェントツールとプラグインサーフェス

エージェント シェルは、多くの場合、ガバナンスを蓄積するよりも早くツールを蓄積します。リバース エンジニアリングと動的検査は、チームがツールの呼び出し方法、どのような隠し引数がアタッチされているか、メモリやコンテキストがどこに保存されているか、実行時の動作が調達のために誰かが書いたポリシー ストーリーと一致するかどうかを確認するのに役立ちます。

マルウェアと脅威のトリアージ

これは典型的なケースであり、AI は、最終的な分析者になることを許可されずに初期のトリアージを迅速化する場合に、ここで真に役立ちます。インポート、文字列、解凍ヒント、コマンド アンド コントロール パターン、ファイル システムの動作を迅速に整理できます。危険なのは、「素早く整理する」ことが「完全に理解した」と誤解される場合です。

従来の相互運用性

最新の AI 製品は、古い企業資産にますます結びついています。従来のデスクトップ クライアント、デバイス コンポーネント、または文書化されていないブリッジがまだパスを形成している場合、リバース エンジニアリングによって、プロジェクトが推測することができなくなった境界が回復されます。

見た目の良さ

AI 時代の優れたリバース エンジニアリングは、3 つのことを同時に実行します。

曖昧さが軽減されます。チームは、高価な天気予報で話す代わりに、実際の経路、実際のインターフェース、実際の機能セット、または実際のリスク境界を示すことができます。

意思決定までの時間が短縮されます。リーダーシップ、製品、セキュリティ、またはプラットフォームの所有者は、パッチが必要なのか、封じ込め手順が必要なのか、書き換え境界線が必要なのか、ベンダーとの会話が必要なのか、あるいは疑わしいほど熱心な形容詞で導入されたツールを信頼することを拒否する必要があるのか​​をより早く理解できるようになります。

そしてそれは組織的な活動を減少させます。バイナリがマッピングされ、プロトコルが再生され、クライアントが監視され、またはランタイムがフックされると、部屋は静かになります。人々は意見を聞くのをやめ、証拠をもとに取り組み始めます。リバース エンジニアリングが過小評価されている理由の 1 つは、リバース エンジニアリングが明確化しているためであり、明確化作業には水増しされたストーリーを維持するのが困難になるという厄介な習慣があります。

ハンズオン ラボ: 小さなインポートトリアージヘルパーを構築する

研究室を実用的なものに保ちましょう。多くのリバース エンジニアリング作業は、「これはどのような種類のバイナリになろうとしているのか?」という控えめな質問から始まります。

triage.py

from collections import Counter

IMPORT_BUCKETS = {
    "network": {"send", "recv", "connect", "WSAStartup", "InternetOpenUrlW"},
    "filesystem": {"CreateFileW", "ReadFile", "WriteFile", "DeleteFileW"},
    "registry": {"RegOpenKeyExW", "RegSetValueExW"},
    "crypto": {"CryptProtectData", "BCryptEncrypt", "BCryptDecrypt"},
    "process": {"CreateProcessW", "OpenProcess", "VirtualAllocEx", "WriteProcessMemory"},
}


def classify_imports(imports):
    counts = Counter()
    for name in imports:
        for bucket, members in IMPORT_BUCKETS.items():
            if name in members:
                counts[bucket] += 1
    return counts


if __name__ == "__main__":
    sample_imports = [
        "CreateFileW",
        "ReadFile",
        "send",
        "recv",
        "BCryptEncrypt",
        "OpenProcess",
        "VirtualAllocEx",
        "WriteProcessMemory",
    ]

    result = classify_imports(sample_imports)
    for bucket, value in result.items():
        print(f"{bucket}: {value}")

走る

python triage.py

この小さな練習がなぜ重要なのか

それは、アーティファクトノイズから有界仮説に素早く移行するという有益な習慣を示しているからです。スクリプトはバイナリが何をするのかを証明するものではありません。それはあなたに明確な最初の質問を与えます。実際の作業では、AI はこのようなヘルパーの生成と改良を支援するのに非常に優れています。人間は依然として、カウントが文脈の中で何を意味するのかを判断する必要があります。

愛好家向けのテストタスク

  1. WinHTTP、WinINet、POSIX ソケット、または libc インポートを使用して分類子を拡張し、複数のターゲット ファミリ間で動作できるようにします。
  2. 文字列パターンのグループ化を追加し、インポートと文字列を一緒に表示したときに初回パスの読み取りがどの程度向上するかを比較します。
  3. 出力を小さな Ghidra または IDA ノート テンプレートにフィードすると、初期の仮説が再利用可能なチームの成果物になります。
  4. AI アシスタントにバケット ラベルを提案してもらい、信頼する前に実際のランタイム パスに対して各ラベルを検証してください。
  5. 同じバイナリの 2 つのバージョンからの 2 つのインポート リストを比較し、セキュリティ リーダーが実際に使用できる 1 ページの変更概要を作成します。

まとめ

AI の時代では、リバース エンジニアリングがより重要になります。現代のシステムでは、ドキュメントだけでは信頼できない、より不透明なアーティファクト、より隠された境界、より商業的に意味のある動作が生成されるためです。 AI は、トリアージ、アノテーション、仮説生成を加速する際に作業に役立ちます。アシスタントから証人への昇進が早すぎると、仕事に悪影響を及ぼします。

勝ちパターンは機械対人間ではありません。これは、人間による検証によって管理される、機械支援による証拠作業です。このようにして、チームは、滑らかな言語で説明すべきシステムを追い越すことなく、成果物から真実を迅速に抽出して配信を支援できるようになります。

参考文献

  1. Ghidra プロジェクトのホーム: https://ghidra-sre.org/
  2. フリーダのドキュメント: https://frida.re/docs/home/
  3. angr ドキュメント: https://docs.angr.io/
  4. Wireshark ドキュメント: https://www.wireshark.org/docs/
  5. Capstone 逆アセンブリ フレームワーク: https://www.capstone-engine.org/
Yevhen R.

Yevhen R. – ソフトウェア エンジニアおよび AI 研究者

ブログに戻る

接触

会話を始める

明確な線が数本あれば十分です。システム、プレッシャー、そして妨げられた決断について説明してください。 または直接書いてください midgard@stofu.io.

01 システムが行うこと
02 今何が痛いのか
03 どのような決定がブロックされているのか
04 オプション: ログ、スペック、トレース、差分
0 / 10000
ファイルが選択されていません