
Frida.re ベースの RunPE(および MapViewOfSection)抽出ツール
FridaExtractは、Frida.reベースのRunPE抽出ツールです。RunPE型インジェクションは、マルウェアがコードを別のプロセス内に隠すために使用される一般的な手法です。これはまた、多くのパッカーにおける最終段階でもあります : )
注: Fridaは現在、「MapViewOfSection」手法を使用したインジェクトされたPEファイルの抽出もサポートしています。詳細はこちらで説明されています。
FridaExtractを使用すると、RunPEメソッドでインジェクトされたPEファイルを自動的に抽出、再構築し、これらのパッカーを回避できます!
RunPEでインジェクトされたコードを既に抽出する優れたツールはたくさんありますが、FridaExtractはそれらより優れているわけではありません。しかし、インストールが簡単で、ビルドも簡単で(笑)、実行も簡単で、ハックも簡単です。コンパイラやビルド環境は不要で、単に「pip install」と入力するだけで開始できます。
コードは、独自のFridaプロジェクトを構築するためのテンプレートとして機能するよう、特にコメントが付けられ整理されています。これは、Windows環境でフックを設定する方法を示す概念実証です。どうぞお好きなようにコピペ&ハックしてください!
警告: FridaExtractはWindows 32bitでのみ動作します。現在、wow64に関する原因不明のバグがあるため、Windows7 32bitまたはWindows Server 2008 32bitを使用することをお勧めします。
pip install frida と入力してFridaをインストールします。FridaExtractはRunPEでインジェクトされたPEファイルのみを抽出できるため、かなり限定的です。スナップショットの取得、実行、復元が容易なVMを使用している場合、すべてのマルウェアサンプルに対してFridaExtractを盲目的に試し、結果を確認することもできますが、お勧めしません。代わりに、FridaExtractはサンドボックス(malwrが大好きです)と組み合わせて使用するのに適しています。まずサンドボックスでサンプルを実行し、APIコールを確認します。
RunPE手法の場合、以下のAPIコールが見られたらFridaExtractが適している可能性があります:
MapViewOfSection手法の場合、以下のAPIコールが見られたらFridaExtractが適している可能性があります:
デフォルトでは、FridaExtractはインジェクトされたPEファイルを自動的に抽出、再構築し、dump.binというファイルにダンプします。
python FridaExtract.py bad.exe
--out_fileコマンドでダンプファイルを指定できます。
python FridaExtract.py bad.exe --out_file extracted.exe
抽出しようとしているパックされたPEファイルに引数が必要な場合、--argsコマンドを使用して渡せます。複数の引数はカンマ区切りで渡せます。
python FridaExtract.py bad.exe --args password
FridaExtractはダンプされたメモリを自動的にPEファイルに再構築しようとします。これが機能せず、サブプロセスに書き込まれたすべてのメモリの生のダンプが必要な場合は、--rawコマンドを使用します。再構築されたPEをダンプファイルに書き込む代わりに、生のメモリセグメントがアドレス順に書き込まれます。
python FridaExtract.py bad.exe --raw
FridaExtractは以下のAPIにフックを設定してインジェクトされたPEファイルを抽出します:
これらのAPIをトレースし、結果を表示するには、-vまたは--verboseコマンドを使用します。
python FridaExtract.py bad.exe --verbose
Fridaはユーザーランドフックを使用しており、簡単にバイパスされる可能性があります。より堅牢なDBIツールが必要な場合は、PINを試してみてください!PINを使用してRunPEを抽出する優れた例がこちらで提供されています。
Fridaは解析中のプロセスにJavaScriptランタイムを注入します。これはステルス性が高くありません。Fridaがマルウェアに検出される可能性についての概要は、こちらをご覧ください。