
BlobRunner は、マルウェア解析中に抽出されたシェルコードを迅速にデバッグするためのシンプルなツールです。
BlobRunner は対象ファイル用にメモリを割り当て、割り当てられたメモリのベース(またはオフセット)にジャンプします。これにより、アナリストは最小限のオーバーヘッドと手間で抽出されたアーティファクトをすばやくデバッグできます。

BlobRunner を使用するには、リリースページ からコンパイル済みの実行ファイルをダウンロードするか、以下の手順で自分でビルドしてください。
実行ファイルのビルドは簡単で、比較的手間はかかりません。
必要条件
ビルド手順
cl blobrunner.c
x64 バージョンのビルドは上記とほぼ同じですが、x64 ツールを使用する点だけが異なります。
x64 Visual Studio のコマンドプロンプトを開く
BlobRunner をチェックアウトしたディレクトリに移動する
以下のコマンドを実行して実行ファイルをビルドする:
cl /Feblobrunner64.exe /Foblobrunner64.out blobrunner.c
デバッグするには:
BlobRunner.exe shellcode.bin
特定のオフセットでファイルにデバッグする。
BlobRunner.exe shellcode.bin --offset 0x0100
ファイルにデバッグし、ジャンプ前に一時停止しない。警告: ジャンプの前にブレークポイントが設定されていることを確認してください。
BlobRunner.exe shellcode.bin --nopause
オプションパラメータ --jit を使用すると、設定された Just-In-Time (JIT) デバッガでシェルコードをデバッグできます。
デバッガを起動するために、BlobRunner は新しく割り当てられたメモリ領域から実行アクセスを削除します。これにより、読み込まれたシェルコードを実行しようとしたときにプログラムが AccessViolation (0xC0000005) 例外を発生させます。
Windows で JIT デバッガを設定する手順はこちらを参照してください。 x64Dbg については setjit または setjitauto を参照してください。
例:
BlobRunner.exe shellcode.bin --jit
デバッガが読み込まれたら、その領域に実行アクセスを許可します。x64Dbg を使用して、BlobRunner が返したアドレスを指定して setpagerights コマンドを実行します。
setpagerights <region>, ExecuteReadWrite
x64 コンパイラではインラインアセンブリがサポートされていないため、x64 シェルコードのデバッグをサポートするために、ローダーは中断されたスレッドを作成します。これにより、スレッドが再開される前にスレッドエントリにブレークポイントを配置できます。
プロセスはローカルでのシェルコードデバッグとほぼ同じですが、シェルコードファイルをリモートシステムにコピーする必要がある点が異なります。ファイルが win32_remote.exe を実行しているのと同じパスにコピーされた場合は、パラメータとしてファイル名を使用する必要があります。それ以外の場合は、リモートシステム上のシェルコードファイルへのパスを指定する必要があります。
Metasploit ツール msfvenom を使用して、シェルコードサンプルをすばやく生成できます。
単純な Windows exec ペイロードの生成:
msfvenom -a x86 --platform windows -p windows/exec cmd=calc.exe -o test2.bin