IDA Pro活用事例
Hex-Rays社の主力製品であるIDA Proは、人気がありながら洗練されたソフトウェアです。 IDA Proは何に使用されているのでしょうか? IDAには、キャッチーなワンライナーでは要約できない非常に幅広い複雑なユースケースがあります。
そのため、IDAを説明するための売り込みを考え出すのではなく、ユーザーへのヒアリングをすることにしました。 以下は、IDA Proを使用してワークフローの重大な問題を解決し、結果を公開することを決定した、さまざまなセキュリティエキスパート、 マルウェアアナリスト、およびソフトウェアエンジニアからのサンプルです。このような出版物へのさまざまなリンクを収集し、 ソフトウェア業界のさまざまな下位区分にグループ化しました。 これにより、IDA Proが現場の実際のソリューションにどのように適用されているかを確認することが出来ます。
- チャレンジ
- デジタルフォレンジック調査は、システムが悪意のあるソフトウェアによって侵害された場合に発生します。 ソフトウェアベースの攻撃が発生した場合、通常企業は、専門のコンピュータ緊急対応チーム(CERT)を派遣し、脅威を排除し、 被害の程度を評価し、将来同様の事態を防ぐために攻撃がどのように実施されたかを調査します。 コンピューター、モバイルデバイス、ネットワークアプライアンス、さらには分散システムからデジタル証拠を収集する必要があります。 したがって、さまざまなバイナリコード形式で動作できる必要があります。 多くの場合、調査をより困難で時間のかかるものにすることを目的として、コードが難読化されています。
- アプローチ
- IDA Proは、フォレンジック調査中に収集されたバイナリコードを分析できます。 最新のプロセッサで実行されるほぼすべてのコードを処理でき、その機能はカスタムスクリプトとプラグインで拡張できます。 これは、非常に難読化されたコードを分析するときに特に役立ちます。 IDAは、実際のマルウェアとのフィールドでのテストを常に受けており、多くのCERT組織に最適なツールとなっています。
【事例】
- 米国政府の CERT 機関 (CISA、FBI、DoD を含む) は、IDA Pro を使用して、中国政府のサイバー攻撃者によって展開されたマルウェアの亜種を分析しました:
マルウェア分析レポート(AR20-216A)中国のリモートアクセストロイの木馬:TAIDOOR - ソフォスは、SQL インジェクションの脆弱性を悪用した組織的攻撃への対応に IDA を使用しました。
「Asnarök」トロイの木馬はファイアウォールを標的にします - ESETは頻繁にIDAを使用して、Wildで発見されたマルウェアのサンプルをリバースエンジニアリングしています。
ロシアとウクライナを標的としたStatinkoクリプトマイナーの難読化解除DePriMonの分析: 中東のネットワークに感染した悪意のあるダウンローダー
Vyvevaの発見:南アフリカで貨物物流会社に対して展開されたバックドア - Novettaは、ソニー・ピクチャーズに対するサイバー攻撃へのその調査中にIDAの逆コンパイラを使用しました。
Operation Blockbuster(ブロックバスター作戦):SonyAttackの長いスレッドの解明 - QI-ANXIN は、韓国でのマルウェア インシデントのクラスターへの対応に IDA を使用しました。
Operation OnionDog(Onion Dog作戦):韓国の政府および業界セクターに対する標的型攻撃の開示 - JPCERT/CCは、日本の組織を標的にしたLazarusマルウェアの継続的な分析にIDAを使用しています。
ネットワーク侵入後にLazarusが使用するマルウェア
Lazarusによるドリームジョブ作戦
日本を標的としたLazarus攻撃活動 - CERT Polska は IDA を使用して、特に蔓延しているいくつかのマルウェアローダーの難読化を解除しています。
Emotetの分析:広範囲に及ぶ大混乱をもたらすマルウェアファミリー
CloudEyE(GuLoader)を監視
Dissecting Smoke Loader - これまで知られていなかったサイバースパイプラットフォームであるSlingshotのKaspersky Lab によるフォレンジック分析。
Slingshot APT - セキュリティ組織は、業界の他の人が使用できるように、独自のIDAプラグインを公開していることがよくあります。
ComIDA:WindowsCOMを使用するマルウェアを分析するためにAirbus-CERTによって開発
FLARE IDA Proスクリプトシリーズ:マルウェア分析用のMSDNアノテーションプラグイン
Pharos:カーネギーメロン大学によるバイナリ静的解析ツール
D810:eShardによるIDAPro用の拡張可能な難読化解除プラグイン
Stadeo:ESETによるマルウェアの難読化解除ツール
VT-IDA:IDAProの公式VirusTotalプラグイン - フォレンジック分析における IDA の有効性を示すさまざまなホワイトペーパー出版物
メモリフォレンジックとLinux用のWindowsサブシステム
eForensics Magazine:ランサムウェアの攻撃と調査
IoTマルウェア解析のためのIDAPro
Hex-RaysマイクロコードAPIvs.難読化コンパイラ
- チャレンジ
- ソフトウェア開発者には、セキュリティを強化する目的で自分のソフトウェアを攻撃する強いインセンティブがあります。 一般的な哲学は、他の誰かがあなたのクライアントに対して悪意を持ってそれを使用する前に、 自分でセキュリティの欠陥を積極的に見つける方が良いということです。 セキュリティ監査は、社内の専門チームまたはサードパーティのコンサルタントが実行できますが、 ほとんどの場合、IDAなどのツールの精度が必要です。
- アプローチ
- IDAをより攻撃的に使用して、ミッションクリティカルなソフトウェアの悪用可能な脆弱性を検出することができます。 通常、これには、ユーザー入力の処理を担当するロジックを特定し、論理エラーがないか積極的に分析することが含まれます。 多くの場合、生のマシンコードからソフトウェアを逆コンパイルするときに、このようなエラーを見つけやすくなります。 これは、元のソースコードを作成するときに、怠惰なプログラマーによる偏見や仮定がないためです。 セキュリティ監査人は、どのような種類のバグを探すべきかを知っており、それらは非常に有害である可能性があります。
【事例】
- Lexfo は IDA を使用して、IBM Banking Server のバグを発見しました。
このバグを悪用すると、攻撃者は電子銀行取引の管理を担当するマシンにリモート アクセスできます。
バンキングFTPサービスの侵入テスト - Chris Valasek と Charlie Miller は、IDA を使用して自動運転ジープのファームウェアをリバースエンジニアリングし、
車をリモートで制御できる脆弱性を発見しました。
IDAでファームウェアの解析を議論するホワイトペーパー
DEF CON23での講演
WIREDの掲載 - DBAPPSecurity はIDAを使用して、中国のWindowsユーザーを攻撃するために使用されているWindows10カーネルの欠陥を発見しました。
Windowsカーネルのゼロデイエクスプロイトは、標的型攻撃でBITTERAPTによって使用される - Google Project Zero のホワイトハットハッカーは、脆弱性調査に関する優れた成果を公開しており、多くの重要なタスクをIDAで対応しています。
IDA に関する記事の一部は下記のとおりです。
iOSのゼロクリック無線近接エクスプロイトオデッセイ
MMSエクスプロイトパート1:SamsungQmageコーデックとリモート攻撃対象領域の概要
iPhoneの完全リモート攻撃対象領域
4時間以内にゼロデイ攻撃を解除する方法
MicrosoftEdgeでJITサーバーを攻撃することによる緩和策の回避 - RET2 Systems は、日々の脆弱性調査のために非常に堅牢なIDAプラグインを開発しています。
Tenet:リバースエンジニア向けのトレースエクスプローラー
Lighthouse:リバースエンジニア向けのコードカバレッジエクスプローラー
Lucid:インタラクティブなHex-Raysマイクロコードエクスプローラー
IntelAVX命令をサポートするためのHex-Raysデコンパイラの拡張 - 最新の Web アプリケーションは、非常に複雑なソフトウェアであり、多数の機能を備えているため、攻撃対象領域が非常に大きくなっています。
IDAは、セキュリティの専門家がバグをスキャンし、クライアントコンポーネントとサーバーコンポーネントの両方を強化するために使用します。
Windowsでのブラウザの悪用–解放後使用の脆弱性を理解する
6つの脆弱性を連鎖させることによるSafariを介したmacOSカーネルの侵害
さまざまなWebブラウザに実装された「Webアセンブリ」仮想マシンの脆弱性の発見と修正
「Webアセンブリ」バイナリ形式のサポートをIDAに追加
エストニアのWebベース投票システムのセキュリティ監査
AdobeのActionScript3仮想マシンの詳細 - セキュリティの欠陥を見つけることは、まだ途中過程です。
修正が不十分または欠陥であることが判明することが多いため、セキュリティパッチがリリースされたときに監査する必要があります。
BindiffやDiaphora などの強力なバイナリdiffツールは、IDAのコア分析エンジンを中心に構築されており、このタスクを大幅に簡素化できます。
CVE-2018-8653:IEスクリプトの欠陥はパッチが適用されていないシステムへの脅威
CVE-2019-1458:WizardOpium作戦で使用されるWindowsのゼロデイエクスプロイトCVE-2019-1458
CVE-2019-3568:NSO WhatsAppの脆弱性–これがどのように発生したか
CVE-2019-7286:iOS / OSXの脆弱性の分析と再現
CVE-2019-7287:CVE-2019-7287はProvInfoIOKitUserClientに隠されているのか?
CVE-2020-27950:iOS 1日ハンティング:CVE-2020-27950カーネルメモリリークの発見と悪用
CVE-2020-0796:CVE-2020-0796の脆弱性
- チャレンジ
- 知的財産は多くの企業にとって不可欠な資産です。無形ではありますが、多くの場合、企業の最も重要な資産を表しています。 知的財産は、著作権、特許、商標、企業秘密など、さまざまな形態があります。 知的財産権の侵害は、多くの企業の存在そのものにとって深刻な脅威です。 ソフトウェアIPの場合、そのような違反を見つけて証明する作業は課題です。 私たちの社会は、このタスクのために手動だけでなく自動ツールも必要としています。
- アプローチ
- IDA Proは、著作権侵害、IP盗難、および特許違反を検出するための自動システムを開発するための基盤として使用できるため、 このタスクに完全に適合します。手動検査も引き続き利用できます。
【事例】
- Check Point Research による IDA プラグインは、クローズド ソース バイナリ内のオープン ソース ソフトウェアを識別できます。
Karta–バイナリのオープンソースのマッチング - KAIST は、IDA Pro を使用してバイナリ コード類似性分析を実装する方法を考案しました。
解釈可能な機能エンジニアリングを使用したバイナリコード類似性分析の再検討 - Software Litigation Consultingは、リバースエンジニアリングが特許違反の検出にどのように役立つかを説明しています。
リバースエンジニアリングを使用してソフトウェア特許侵害を明らかにする
検査の対象:リバースエンジニアリングを使用したソフトウェアの先行技術の発見、パート2 - トロント大学の研究者は、IDAを使用してバイナリを自動的にソースコードと照合します。
BinPro:バイナリソースコード来歴のためのツール - リバース エンジニアリングは、IP を保護するためだけでなく、コピー防止スキームを攻撃するためにも使用できます。
このような攻撃は、既存の方法が完全ではなく、改善が必要であることを意味します。 下記記事では、Sentinelドングルについて説明します。
Sentinel Super Proドングルをアプリケーションから削除 - HASP暗号化スキームと同様の状況
リバースエンジニアリングに対する防御
- チャレンジ
- コンピュータプログラムを逆アセンブルすると、その動作について多くのことが明らかになりますが、生の逆アセンブルの有用性を制限する方法はたくさんあります。 マルウェアの作成者は、分析時に実行可能ファイルを無害に見せようと積極的に試み、実際に実行するときの動作は大きく異なります。 適切に設計された悪意のないプログラ ムでさえ、予期しない状況が原因で実行時に誤動作する可能性があります。 アナリストとエンジニアは、実行中にコードを監視できるツールに依存しています。 多くの場合、これが問題を理解して修正する唯一の方法です。
- アプローチ
- IDA Proは、すべての主要なデスクトッププラットフォーム(Windows、Linux、Mac)、モバイルプラットフォーム(iPhone、Android)、 およびエミュレーター(QEMU、Bochs)でアプリケーションをデバッグできます。 MIPSまたは他のプロセッサに基づくあまり知られていない組み込みシステムでさえ、Hex-Rays社のデバッガーは処理することができます。 IDA Proには、すぐに使用できる10種類のデバッガーが付属しています。当然、それらはすべて構成可能で、プログラム可能で、拡張可能です。
【事例】
- Google Project Zeroは IDAのXNUカーネルデバッガーを使用して、iOSの脆弱性を追跡しました。
KTRW:デバッグ可能なiPhoneを構築するための旅
最終的に、これはiOSのoob_timestamp脆弱性の検出につながりました(CVE-2020-3837) - IDAのデバッガーは、実際に発見された高度なマルウェアサンプルを理解するために必要になることがあります。
IDAのWindDbgデバッガーを使用してライブマルウェアサンプルの難読化を解除するFireEye
FireEyeはIDAのBochsデバッガーを使用して、エミュレーションを介してマルウェアを解凍します。
IDAのリモートWindowsデバッガーを使用してアンチVMおよびアンチデバッグマルウェアパッカーを打ち負かすOALabs
Check Point Researchは、IDAでマルウェアのデバッグセッションを適切にサンドボックス化する方法について説明しています。
Sogetiは、IDAデバッガメモリ内の文字列を検出することにより、Babukランソマーレバリアントを識別しました - IDAのGDBデバッガーは、一連のサードパーティデバッグプローブおよびエミュレーターとインターフェースできるため、
組み込みファームウェアのデバッグに特に役立ちます。 IDAは、ファームウェアが本番環境にリリースされる前にバグを発見したり、
標準の開発ツール、デバッグビルド、デバッグシンボルが利用できない場合にフィールドで問題をデバッグしたりするのに役立ちます。
SEGGERJ-LinkでのIDAの使用
LauterbachTRACE32シミュレーターを使用したIDAでのTricoreコードのデバッグ
QEMUエミュレーターを使用したIDAでのARMコードスニペットのデバッグ
GDBデバッグ用のIDAプロセッサモジュールの拡張 - モバイル プラットフォームは、「Walled garden(壁に囲まれた庭)」であることで有名です。
IDAのリモートiOSおよびAndroidデバッガーは、OSの内部構造を理解するのに役立ちます。
IDAのiOSデバッガーを使用してiOSInstrumentsサーバーをリバースエンジニアリングする
ネイティブレイヤーのAndroidプログラムを動的にデバッグする
IDAProを使用してDalvik命令を動的にデバッグする - IDAの他のほとんどの部分と同様に、デバッガーはカスタム機能で拡張できます。
infosecコミュニティによって開発された強力な IDAデバッガープラグインを次に示します。
DIE:IDA Debugger APIを使用して、動的データで静的分析を強化します。
funcap:実行時に収集された引数と戻り値で関数呼び出しに注釈を付けます。
HeapViewer:エクスプロイト開発に焦点を当てたヒープを調べるIDAProプラグイン
deREferencing:IDAのレジスタビューとスタックビューを差分ポインターで強化します。
IDA Stealth:IDAデバッガーを最も一般的なアンチデバッグ手法から隠します。
Labeless:IDAとサードパーティデバッガー間のシームレスな統合を実装します
QilingIDA:IDAPythonを使用して、新しいサードパーティエミュレーターとインターフェイスします - 仮想関数を含む C++コードは、静的に分析するのが困難です。 IDAのデバッガーは作業を容易にします。
IDAProデバッガーを使用してC ++ vtablesを分析する
- チャレンジ
- 現代の車両は、ソフトウェアエコシステムをローリングしています。今では、以前のような純粋なハードウェアではなく、 マイクロコントローラーで実行されているファームウェアに依存するようになっています。 車には70を超える電子制御ユニット(ECU)を搭載できるようになり、それぞれに専用のファームウェアが搭載されています。 エンジン、運転制御、インフォテインメント、ナビゲーション、および追跡システムがそれらに該当します。 これらのシステムの一部は、セルラーネットワークに接続されている場合があります。このすべてのコードには、潜在的なバグ、 脆弱性、または隠された/不要な機能があります。 したがって、「スマートカー」の概念は素晴らしいアイデアですが、一部の個人にとって「スマート」は単に「ハッキング可能」を意味します。 自動車業界は、複雑さが増しているにもかかわらず(文字通り)車両を駆動するソフトウェアを可視化する必要があります。 見落とされた欠陥は深刻な結果をもたらす可能性があります。
- アプローチ
- IDAは、最新の車両の論理インフラストラクチャへのエントリポイントとして機能します。 多くの場合、元のECUファームウェアをリバースエンジニアリングして、たとえばセンサーの読み取り方法やエンジンの制御方法を決定できます。 IDAは、ECUで使用されるすべての主要なプロセッサファミリをサポートしているため、このタスクに最適なツールです。 IDAを使用すると、完全なドキュメント、ソースコード、またはデバッグシンボルがなくても、ファームウェアの動作を段階的に理解することができます。
【事例】
- IDAは、車両ファームウェアの監査によく使用されます。 この調査により興味深い結果が得られます。
研究者はIDAを使用して、排出制御テスト(別名「ディーゼルゲート」)でのフォルクスワーゲンの不正行為を確認しました。
ディーゼルゲートー1年後
TencentSecurityによるメルセデスベンツMBUXのセキュリティ監査
テスラファームウェア更新プロセスのリバースエンジニアリング
車載インフォテインメントおよびアプリプラットフォームのセキュリティ分析 - 自動車メーカーが採用しているセキュリティ対策をグレー/ブラック市場では迂回し、車両ファームウェアへの不正な変更することがあります。
それを防止することに対する大きな需要があります。 IDAを使用して、ファームウェアで採用されているセキュリティ メカニズムを分析し、
悪意のある外部の第三者によって実行される前にバイパスする方法を見つけることができます。
犯罪者は車のイモビライザーの鍵を見つける
Megamos Cryptoの解体:車両イモビライザーをワイヤレスでピッキングする
乗用車のハッキング
RKEおよび暗号化アルゴリズムの車両セキュリティについて:調査 - 購入後の車の改造には無視できない需要があります。
たとえば、顧客は特定の運転状況でエンジン性能を改善したり、手動制御を追加したりする場合があります。
これは、標準メーカーのECUファームウェアを変更するか、完全にカスタムのECUを追加することで実行できます。
キャリブレーションテーブルを見つけるためにIDAを使用してSuperHベースのECUをリバースエンジニアリングする
IDAProを使用したBoschME7.1ECUの逆アセンブラ
ECUハッキング:カーハッカーのハンドブックの第6章を参照してください
- チャレンジ
- 情報がアプリケーション内で生成および消費されることはめったにありません。最近のコンピューターは、 他のコンピューターと情報を交換したり、ディスクやクラウドに情報を保存したりします。 多くの場合、使用されるデータ形式は文書化されていませんが、アプリケーションと対話したり、そのデータを抽出したりする必要がある場合があります。 たとえば、廃止されたソフトウェアからデータを抽出するには、使用されている形式を知る必要があります。 または、ボットネットを停止するには、感染したゾンビコンピュータにコマンドを送信するために、 ボットネットのネットワークプロトコルを知る必要がある場合があります。
- アプローチ
- ファイル形式を処理するために、IDA Proはカスタムメイドの「ローダー」で簡単に拡張でき、UI内からデータを利用できるようにします。 ネットワークプロトコルのリバースエンジニアリングに関しては、通常、IDA Proをパケットキャプチャツール(Wiresharkなど)とペアリングします。 両方のトラフィックを分析し、クライアント側またはサーバー側のコードでの使用法を照合することで、プロトコルの検出が高速化されます。
【事例】
- IDAは、文書化されていないネットワーク プロトコルをリバース エンジニアリングするために使用できます。
これには、多くの実用的な利点があります。
G Data SoftwareによるIoTボットネットの分析
iOSデバイスから診断データを取得するためのObjective-CベースのRPCプロトコルのリバースエンジニアリング
「Dragomon Hunter」のネットワークパケットの解読と変更
脆弱性を見つけるためにゲームのネットワークプロトコルとコードを分析する
オンラインゲームを復活させるための「デッド」プロトコルのリバースエンジニアリング - IDA は、レガシー ソフトウェアのリバース エンジニアリングによく使用されます。
ソフトウェアが元の作成者がいなくなった後も使用されると、ソースコードが利用できなくなる可能性があり、
ユーザーは簡単に変更または更新できない古いインフラストラクチャに固執しなくてはいけなくなることがあります。
IDAを「外科的に」使用して、レガシーバイナリにパッチを適用することでより快適な方法で動作させることができます。
まだ使用されているサポートされていないバージョンのInternetExplorerの非公式パッチを配布する。
IDAを使用してPalmOSをリバースエンジニアリングし、最新のハードウェアで実行できるようにする。
IDAを使用して多くの古いゲームエンジンを最新のプラットフォームに移植するScummVMプロジェクト。
サポートされないゲームにすぐにネットワークとマルチプレーヤーを追加する - IDAを使用して魅力的なファイル形式を調査する例
KLN89Bの更新:IDAを使用して独自のファイル形式からGPSデータを抽出する
Blackfin用のカスタムIDAローダーを使用したライカカメラファームウェアイメージのリバースエンジニアリング
- チャレンジ
- 悪意のないソフトウェアの内部動作は、調査する価値がある場合があります。 アナリストは、毎日使用されるソフトウェア (オペレーティング システム、ドライバー、サードパーティ アプリケーションなど) を明確に理解する必要があります。通常、商用ソフトウェアの内部詳細は文書化されていませんが、それらを調べる理由があります。
- アプローチ
- IDA は、デスクトップ、モバイル、および組み込みデバイスで使用されるすべての主要なアーキテクチャをサポートしています。 デバッグ情報の有無にかかわらず、バイナリを逆アセンブルするために使用できます。 FLIRT や Lumina などの組み込み機能を使用して、よく知られた関数やライブラリ関数を識別できます。 BinDiff や Diaphora などのサードパーティのアドオンを使用すると、バイナリ バージョン間の相違点を見つけて、 変更、修正、さらにはバックドアを特定できます。
事例
- IDAは、一般的なソフトウェアの有害なバックドアを検出するためによく使用されます。
D-Linkルーターのバックドアを使用して、認証なしでWebインターフェイスにアクセスする。
アプリケーションでバックドアを見つける:Black Hat Asia2020での講演
ソニーIPELAエンジンIPカメラのバックドア
THE FAKE CISCO:偽造されたシスコデバイスのバックドアを探す - IDAは、組み込みファームウェアのブラック ボックス リバース エンジニアリングにも使用できます。
研究者は、Intel MEファームウェアに文書化されていない機能を見つけました。
Withings Health Mateフィットネストラッカーのファームウェアを分析する
IDAを使用したHDDファームウェアのリバースエンジニアリングとデバッグ - Google Project Zeroは、よく使用されるソフトウェアを深く掘り下げ、セキュリティ、整合性、および設計を評価するために、IDAを使用することがあります。
iPhoneXSでのポインタ認証の調査
iOS Kernel PAC、1年後
Adobe Readerシンボルのストーリー
状態機械(State Machines)の状態 - Microsoftコンパイラの新しいセキュリティ機能を理解するためにIDAを使用します。
MSVCコンパイラがXFG関数プロトタイプハッシュを生成する方法
- チャレンジ
- リバース エンジニアリングには、かなりの量の経験、トレーニング、さらには直感が必要です。 しかし、適切なツールがなければ、熟練したリバース エンジニアでさえ、タスクを実行するのにかなりの時間を費やしたり、 重要な情報を見落とすことさえあります。
- アプローチ
- IDA Pro は、バイナリ分析を教えるのに最適なツールです。高速で強力でありながら使いやすく、 ほとんどのプロセッサとファイル形式をすぐにサポートし、教育機関向けの教育用無料ライセンスとしても利用できます。 IDA Pro は世界中の大学、オンラインまたはオフラインのクラス、トレーニング、セミナーで同様に使用されています。