
メモリからマルウェアのPEファイルをディスクにダンプし、解析するためのWindowsツール。
Process Dump は、マルウェアのメモリコンポーネントをディスクにダンプして分析するための Windows リバースエンジニアリングコマンドラインツールです。多くの場合、マルウェアファイルは実行前にパックや難読化が施され、AV スキャナーを回避しようとしますが、これらのファイルが実行されると、多くの場合、メモリ内にマルウェアコードのクリーンなバージョンが展開またはインジェクションされます。マルウェア研究者がマルウェアを分析する際の一般的なタスクは、この展開されたコードをメモリからディスクにダンプし、AV 製品でスキャンしたり、IDA などの静的解析ツールで分析したりすることです。
Process Dump は Windows 32 ビットおよび 64 ビットオペレーティングシステムで動作し、特定のプロセスまたは現在実行中のすべてのプロセスからメモリコンポーネントをダンプできます。Process Dump はクリーンハッシュデータベースの作成と使用をサポートしており、kernel32.dll などのクリーンファイルのダンプをスキップできます。主な機能は次のとおりです。
公式のコンパイル済みリリースを私のウェブサイトで管理しています: https://split-code.com/processdump.html
Process Dump の最新のコンパイル済みリリースはこちらからダウンロードできます:
このツールは Visual Studio 2019 用に設計されており、無料の Community エディションで動作します。プロジェクトファイルを VS2019 で開いてコンパイルするだけで、簡単にできるはずです。
Process Dump は、メモリから未知のコードをすべてダンプする('-system' フラグ)、特定のプロセスをダンプする、またはプロセスが終了する直前にすべてのプロセスをダンプするモニタリングモードで実行できます。
このツールを初めて使用する前に、クリーンなワークステーションで除外用クリーンハッシュデータベースを次のいずれかの方法で生成できます:
使用例:
コマンドライン引数は次のようにグループ化できます:
一般的なダンプオプション
クリーンハッシュデータベースオプション
出力オプション
| オプション | 説明 |
|---|---|
| -v | 詳細モード。デバッグ用に詳細情報が出力されます。 |
| -nh | 出力にヘッダーを表示しません。 |
高度なオプション
自動化サンドボックスや手動のマルウェア対策リサーチで Process Dump を使用する場合、次の手順が役立ちます。すべてのコマンドはクリーンな環境で管理者として実行してください。
クリーンハッシュデータベースの構築: pd64.exe -db gen を実行するか、より高速で不完全なプロセスとして pd64.exe -db genquick を実行します。状況に応じて、このクリーンハッシュデータベースを作成した後、VM のスナップショットを取得すると、毎回繰り返す必要がなくなります。
Process Dump 終了モニターの起動: pd64.exe -closemon をバックグラウンドで実行し続けます。マルウェアが使用するすべての中間プロセスをダンプします。
マルウェアファイルの実行: マルウェアのインストールを監視します。pd64.exe は、閉じようとするすべてのプロセスを自動的にダンプします。
実行中のマルウェアをメモリからダンプ: 準備ができたら、pd64.exe -system を使用してすべてのプロセスをダンプします。
ダンプされたコンポーネントは、pd64.exe の作業ディレクトリにあります。出力パスを変更するには、-o フラグを使用します。
ダンプされたファイルのファイル名の例
| オプション | 説明 |
|---|
| -system | アクセス可能なすべてのプロセスから、クリーンハッシュデータベースに一致しないすべてのモジュールを作業ディレクトリにダンプします。 |
| -pid <pid> | 指定された PID から、クリーンハッシュデータベースに一致しないすべてのモジュールを現在の作業ディレクトリにダンプします。'0x' プレフィックスを使用して 16 進数 PID を指定します。 |
| -closemon | モニターモードで実行します。プロセスが終了するとき、Process Dump は最初にそのプロセスをダンプします。 |
| -p <正規表現プロセス名> | フィルターに一致するプロセス名から、クリーンハッシュデータベースに一致しないすべてのモジュールを指定された PID にダンプし、現在の作業ディレクトリに出力します。 |
| -a <モジュールベースアドレス> | プロセスから指定されたベースアドレスのモジュールをダンプします。 |
| -o <パス> | ダンプされたコンポーネントのデフォルトの出力ルートフォルダを設定します。 |
| オプション | 説明 |
|---|
| -db gen | いくつかの一般的なフォルダと、現在実行中のすべてのプロセスを自動的に処理し、見つかったモジュールハッシュをクリーンハッシュデータベースに追加します。%WINDIR%、%HOMEPATH%、C:\Program Files\、C:\Program Files (x86)\ 内のすべてのファイルを再帰的に追加し、さらに実行中のすべてのプロセスのすべてのモジュールを追加します。これらのクリーンハッシュは、アプリケーションディレクトリ内の clean.hashes ファイルに追加されます。今後のプロセスダンプコマンドでは、これらの既知のモジュールはダンプされません。このツールを使用する前に、クリーンなシステムでこのコマンドを 1 回実行することをお勧めします。そうすることで、メモリからダンプされるモジュールが多くなりすぎるのを防げます。 |
| -db genquick | 上記と同じですが、すべてのプロセスのすべてのモジュールからのハッシュのみをクリーンハッシュデータベースに追加します。クリーンハッシュデータベースを構築するより高速な方法ですが、完全ではありません。 |
| -db add <dir> | 指定されたディレクトリ内のすべてのファイルを再帰的にクリーンハッシュデータベースに追加します。 |
| -db rem <dir> | 指定されたディレクトリ内のすべてのファイルを再帰的にクリーンハッシュデータベースから削除します。 |
| -nr | ハッシュデータベースのディレクトリ追加または削除コマンドの再帰を無効にします。 |
| -db clean | クリーンハッシュデータベースをクリアします。 |
| -db ignore | 今回のプロセスダンプ時にクリーンハッシュデータベースを無視します。一致が見つかった場合でも、すべてのモジュールがダンプされます。 |
| -cdb <ファイルパス> | この実行で使用するクリーンハッシュデータベースの完全なファイルパス。デフォルトの clean.hashes を上書きする場合に指定します。 |
| -edb <ファイルパス> | この実行で使用するエントリポイントハッシュデータベースの完全なファイルパス。 |
| -esdb <ファイルパス> | この実行で使用するエントリポイントショートハッシュデータベースの完全なファイルパス。 |
| オプション | 説明 |
|---|
| -g | 既存のヘッダーを無視して、PE ヘッダーを最初から強制的に生成します。 |
| -eprec | 有効なエントリポイントが存在するように見えても、エントリポイントの再構築を強制します。 |
| -ni | インポート再構築を無効にします。 |
| -nc | ルーズなコード領域のダンプを無効にします。 |
| -nt | マルチスレッドを無効にします。 |
| -nep | エントリポイントのハッシュ化を無効にします。 |
| -t <スレッド数> | 使用するスレッド数を設定します(デフォルトは 16)。 |
| コマンド | 説明 |
|---|
pd64.exe -db genquick | 現在実行中のプロセスに基づいてクリーンモジュールデータベースをすばやく構築します。今後のタスクでは、Process Dump は認識されていないモジュールのみをダンプします。 |
pd64.exe -system | すべてのプロセスから、クリーンモジュールを無視してすべてのモジュールと隠しチャンクをダンプします。 |
pd64.exe -closemon | 終了モニターモードで実行します。プロセスが終了しようとするときにすべてのプロセスをダンプします。 |
pd64.exe -pid 0x18A | 特定のプロセス ID からモジュールと隠しチャンクをダンプします。 |
pd64.exe -p .\*chrome.\* | プロセス名でモジュールと隠しチャンクをダンプします。 |
pd64.exe -db gen | 既知のモジュールのクリーンハッシュデータベースを構築します。これにより、後のタスクで既知の正常なモジュールをダンプしないようにします。 |
pd64.exe -pid 0x1a3 -a 0xffb4000 | PID 内の特定のアドレスからコードをダンプします。これにより、再構築された 32 ビットおよび 64 ビットの PE ヘッダーを持つ notepad_exe_x64_hidden_FFB40000.exe と notepad_exe_x86_hidden_FFB40000.exe の 2 つのファイルが分析用に生成されます。 |