Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Shinigami — 動的アンパッキングツール | Kitploit
ツール/GitHubGitHub/buzzer-re/shinigami
動的分析 (サンドボックス)リバースエンジニアリングシェルコードマルウェア分析バイナリ解析
GitHubbuzzer-re/shinigami

Shinigami

動的アンパッキングツール

リポジトリを見る
15212373年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Shinigami

Build Release

画像の説明

Shinigami は、プロセス・ホローイングまたは汎用パッカー・ルーチンを介して注入されたマルウェア・インプラントを検出およびアンパックするために設計された実験的なツールです。

動作の仕組み

このツールは、プロセス・ホローイングに関連するNT関数をフックし、新たに実行可能となったメモリページにページガードビットを設定することで動作します。この手法により、Shinigami は、通常シェルコードやアンパックされたコードによって引き起こされる間接的なフロー変更を検出できます。これらはマルウェアを示すことがよくあります。 Shinigami はターゲットの実行可能ファイルを中断状態で作成し、"Ichigo" というDLLライブラリを注入します。このライブラリは、インプラントを検出して抽出するために必要なすべての関数を自動的にフックします。アーティファクトが完全に抽出されると、ツールはプロセスを強制終了します。

Shinigami の効果は、対象とする特定のマルウェアによって異なる場合があります。しかし、あらゆるマルウェア解析ツールキットへの貴重な追加要素であり、プロセス・ホローイングや汎用パッカー・ルーチンを使用するマルウェアの検出と分析に役立つ可能性があります。

重要:これは動的アンパックツールであり、個人用マシンや静的解析ラボで実行すべきではありません

現在のアンパック手法

プロセス・ホローイング

Shinigami がプロセス・ホローイングを使用して注入されたインプラントを抽出する中心的な方法は、NtResumeThread と NtWriteVirtualMemory という2つのNT関数をフックすることです。仕組みは次のとおりです:

  • NtResumeThread フック

    • Shinigami は、NtAllocateVirtualMemory を介して以前に割り当てられたすべてのメモリをスキャンし、DOSヘッダーのシグネチャが含まれているかどうかを確認します。見つかった場合、リモートPEファイルを抽出し、セクションが整列されるようにパッチを当てて、filename_dumped.bin という形式でディスクに保存します。
  • NtWriteVirtualMemory フック

    • Shinigami は、NtWriteVirtualMemory をフックすることにより、実行可能ファイルがリモートプロセスにPEファイルを書き込もうとしているかどうかを検出します。PEファイルが見つかった場合、Buffer ポインタを使用して抽出され、filename_before_written.bin としてディスクに保存されます。このオプションは、--stop-at-write フラグが渡された場合にのみ使用されます。

汎用アンパッカー

Shinigami の汎用アンパッカーモジュールは、新しく割り当てられたメモリ領域に PAGE_GUARD ビットを設定します。また、既存のメモリ領域の保護が実行可能なものに置き換えられた場合にも、このビットを適用します。ガードページを使用することで、どのメモリ領域がシェルコードやPEイメージの割り当てに使用されるかを追跡できます。

検出された各シェルコードについて、Shinigami は生のシェルコード自体をディスクに保存します。また、そのメモリ領域をスキャンしてPEファイルを探し、それらも保存します。Shinigami はシェルコードの実行ごとに異なるステージとして扱うため、最終的に作業ディレクトリには filename_shellcode_STAGENUM.bin or .exe というファイルが作成されます。

使用法

このツールにはいくつかのオプションがあります:

Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name

Positional arguments:
  program_name                  Name of the program to execute

Optional arguments:
  -h, --help                    shows help message and exits
  -v, --version                 prints version information and exits
  -o, --output                  Directory to dump artefacts
  --stop-at-write               Unhollow: Stop the execution when the PE file is being to be written
  --verbose                     Display a verbose output
  -p, --only-executables        Only extract PE artefacts
  -e, --exported                Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)

いくつかの重要なオプションは次のとおりです:

-o, --output: 抽出されたアーティファクトをダンプするディレクトリを指定します。デフォルトでは、抽出されたアーティファクトは現在の作業ディレクトリ内の output というディレクトリに保存されます。引数としてパスを渡すことで、別のディレクトリを指定できます。

--stop-at-write: この引数は、ホローイングされたプロセスのアンパック中に使用されます。Shinigami が PE ファイルがホローイングされたプロセスに書き込まれていることを検出すると、実行を停止し、抽出した PE ファイルを保存します。このオプションは、ホローイングされたプロセス全体を実行せず、アンパックされたコードだけを抽出したい場合に便利です。

--verbose: 詳細な出力を表示します。これは、Shinigami の内部動作のデバッグや理解に役立ちます。

使用例:

Unhollow

Dridex に対するテスト

抽出が完了すると、プロセスは強制終了され、抽出されたPEファイルが得られます(期待しています):

ダンプされたインプラント

検出されたインプラントは、検出方法 セクションで説明されている形式に従ってダンプされます。

Unpacking

ランダムローダーのアンパック。詳細はこちら

上記の例では、Shinigami は汎用ローダーの動作を自動的に検出し、その中で実行されたすべてのシェルコードとイメージを抽出しました。アンパックルーチンを有効または無効にするための特定のスイッチは必要ありませんでした。これは、Shinigami が unhollow モジュールと一部の関数を共有し、Gancho ライブラリによって提供される共有フックを使用しているためです。

Emotet

Emotet DLL のアンパック

Shinigami はDLLサポートも備えており、切り離されたDOSヘッダーを使用して注入されたバイナリを再構築する機能もあります。特に、Emotet のようなマルウェアサンプルは、この手法を使用してインメモリPEスキャナーを回避します。Shinigami はこのような欠落部分(DOSヘッダー)を検出し、ヒューリスティックを使用してそれらを再構築します。

インストール

お好みのビルドをリリースページから入手してください。

ビルドとハッキング

このプロジェクトに協力していただけると素晴らしいです。必要であれば、依存関係と手順は次のとおりです。

  • C++ ワークロードを備えた Visual Studio >= 2019 をインストールします。
  • Zydis をインストールします。これは高速で軽量な x86/x86-64 逆アセンブラです。vcpkg メソッドの使用をお勧めします。
    • Zydis は、APIフックをより正確にし、コピー時にオペコードが失われないようにするために使用されます。
  • Visual Studio で Shinigami.sln ソリューションファイルを開き、プロジェクトをビルド/コーディングします。

変更を加えたい場合は、issue または pull request を開いてください。

結論

このクールなマスコット画像は「BLEACH」に触発され、Dall-E によって生成されました。

ツールをダウンロード