Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
EternalBlueC — C/C++で再作成されたEternalBlueスイート。これには以下が含まれます:MS17-010 Exploit、EternalBlue脆弱性検出器、DoublePulsar検出器、DoublePulsar Shellcode & DLLアップローダー | Kitploit
ツール/GitHubGitHub/bhassani/eternalbluec
エクスプロイトフレームワーク脆弱性分析エクスプロイトシェルコードマルウェア分析ペネトレーションテスト学習と教育シェルコード生成ペイロード開発バイナリエクスプロイト
GitHubbhassani/eternalbluec

EternalBlueC

6131381ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

C/C++で再作成されたEternalBlueスイート。これには以下が含まれます:MS17-010 Exploit、EternalBlue脆弱性検出器、DoublePulsar検出器、DoublePulsar Shellcode & DLLアップローダー

リポジトリを見る

License: GPL v3

EternalBlueC

EternalBlueスイートをC/C++で再実装。以下を含む:

  • MS17-010 エクスプロイト(DoublePulsar を含む)
  • EternalBlue/MS17-010 脆弱性検出器
  • DoublePulsar 検出器
  • DoublePulsar DLL アップロード
  • DoublePulsar シェルコードアップロード
  • SMB構造体による DoublePulsar DLL アップロード
  • SMB構造体による DoublePulsar シェルコードアップロード
  • DLL内の実行ファイルをアップロード(DoublePulsar 経由)

プロジェクトの成果

  • シェルコードアップロード - 完了・動作確認済み。任意のプロセスにシェルコードを注入可能。
  • DLL アップロード - 完了・動作確認済み。任意のプロセスに DLL を注入可能。
  • 実行ファイル内蔵 DLL のアップロード - 完了。任意のプロセスに DLL を注入し、実行ファイルを "mssecsvc.exe" としてドロップする。

プロジェクトの目標

  • DoublePulsar のネゴシエーション、セッションセットアップ、ツリーコネクト、TransNamedPipe、Transaction2 パケットを、SMB構造体と16進数キャプチャを用いて動的に生成できるようにする。
  • EternalBlue エクスプロイトペイロードを編集可能にし、DoublePulsar インプラントを除去して代わりにカスタムシェルコードを送信できるようにする。
  • EternalBlue パケットを動的に生成できるようにする。
  • すべての IP アドレス、ペイロード(シェルコードやファイルパスなど)、および続行の承認をユーザー入力として要求する。
  • より詳細な出力を行う。
  • SMB応答から Windows バージョンを画面に表示する。
  • コマンドライン引数のサポートを追加する(例: DoublepulsarExecute.exe -h 192.168.0.8 -f PopCalculatorShellcode.bin)。
  • ソケットタイムアウトなど、より多くのエラーチェックを追加する。

EternalBlue および DoublePulsar スイート

  • ms17_vuln_status.cpp - このプログラムは4つの SMB パケットを送信します。1つのネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、1つの TransNamedPipe 要求です。このプログラムは TransNamedPipeRequest(PeekNamedPipe要求)からの NT_STATUS 応答を読み取り、SMB パケット内の NT_STATUS が 0xC0000205(STATUS_INSUFF_SERVER_RESOURCES)であるかどうかを判定します。これが正しければ、ターゲットは MS17-010 に対して脆弱です。未パッチの Windows 7 x64 でテスト済み。

ms17vulnstatus

  • doublepulsar_check.cpp - このプログラムは4つの SMB パケットを送信します。1つのネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、および Trans2 SESSION_SETUP パケットです。Trans2 SESSION_SETUP パケットを送信することにより、送信された多重化IDを Trans2 応答パケット内の多重化ID(0x51 または 81)と比較できます。DoublePulsar は送信された多重化IDを読み取り、ping コマンドが成功した後、Trans2 SESSION_SETUP 応答の多重化IDに +10(16進数)を返します。その後、DoublePulsar バックドアを無効化するコマンドが送信されます。DoublePulsar の無効化コマンドは SMB パケットのタイムアウトパラメータに含まれています。その後、DoublePulsar は休止状態になり、システムから削除されるわけではありません。Windows 7 x64 でテスト済み。

doublepulsar_check

  • DoublePulsarXORKeyCalculator.cpp - このプログラムは4つの SMB パケットを送信します。1つのネゴシエーションパケットと3つの要求です。最後の要求は Trans2 SESSION_SETUP 要求です。Trans2 SESSION_SETUP 応答を受信し、SMB 署名が (Recvbuff[18] -> Recvbuff[22]) から抽出されます。Recvbuff[22] はアーキテクチャタイプを示します。値が1ならターゲットは x64、0なら x86/32 ビットです。SMB 署名は unsigned char 文字から unsigned int に変換されます。

SMBSignatureWireshark

Recvbuff[18] から Recvbuff[22] までのこれらの値は、DoublePulsar XOR キー計算関数に入力され、DoublePulsar にアップロードするシェルコードまたは DLL ペイロードを暗号化するために使用できる unsigned int XOR キーが生成されます。Windows 7 x64 でテスト済み。

サンプルスクリーンショット:

XORCalculator

FUZZBUNCH の元の NSA バイナリと同じキー XORCalculatorFromNSAbinary

  • DoublePulsar_structure_ping.cpp - このプログラムは4つの SMB パケットを送信します。1つのネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、および Trans2 SESSION_SETUP パケットです。doublepulsar_check.cpp との違いは、Wannacry サンプルから抽出したハードコードされた SMB 16進文字列ではなく、構造体を使用して Trans2 DoublePulsar PING パケットを生成することです。もう1つの違いは、Wannacry サンプルに含まれているハードコードされたものではなく、プログラムが動的に TreeConnect パケットを生成することです。このプログラムで生成された ping パケットは、リモートマシンに DoublePulsar がインストールされているかどうかを通知します。

  • DoublePulsar_structure_exec.cpp - このプログラムは5つの SMB パケットを送信します。1つの SMB ネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、1つの Doublepulsar Trans2 SESSION_SETUP Ping パケット、および1つの Doublepulsar Trans2 SESSION_SETUP 実行パケットです。Doublepulsar_UploadShellcode.cpp との違いは、Wannacry サンプルから抽出したハードコードされた SMB 16進文字列ではなく、構造体を使用して Trans2 DoublePulsar 実行パケットを生成することです。

  • Doublepulsar_UploadDLL.cpp - このプログラムは DLL を対象としています。このプログラムは4つの SMB パケットを送信し、SMB Trans2 パケット内に DLL データを含めます。1つのネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、1つの Ping Trans2 SESSION_SETUP 要求、および1つの実行 Trans2 SESSION_SETUP パケットです。Ping Trans2 SESSION_SETUP 要求パケットは、Trans2 SESSION_SETUP 応答パケット内の SMB 署名を取得するために送信されます。この署名は DoublePulsar XOR キー計算機で処理されます。プログラムは DLL ファイルを読み取り、それを64ビットカーネルおよびユーザーランドシェルコードと結合して DLL を実行し、バッファを SMB 署名から計算した DoublePulsar XOR キーで XOR します。メモリを割り当て、Trans2 パケットをコピーし、SMBトランザクションに必要な値(UserID、TreeID、TotalDataCount、DataCount、ByteCount)を編集し、XOR されたデータ(カーネルシェルコード + DLL)を末尾にコピーし、合計パケット長 4096 バイトずつ DoublePulsar にループ送信するパケットが生成されます。総パケット長 = 4178。4096 は XOR 暗号化データ用です。今後のリリースでは SMB & TRANSACTION2 構造体も実装予定です。

  • Doublepulsar_UploadShellcode.cpp - このプログラムは5つの SMB パケットを送信します。1つのネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、1つの Ping Trans2 SESSION_SETUP パケット、1つの実行 Trans2 SESSION_SETUP パケットです。Trans2 SESSION_SETUP 要求パケットは、TRANS2 SESSION_SETUP 応答パケット内の SMB 署名を取得するために送信されます。この署名は DoublePulsar XOR キー計算機で処理されます。プログラムはカーネルシェルコードとサンプルシェルコードをバッファにコピーし、SMB 署名から計算した DoublePulsar XOR キーでバッファを XOR します。メモリを割り当て、Trans2 実行パケットをコピーし、SMBトランザクションに必要な値(UserID、TreeID、TotalDataCount、DataCount、ByteCount)を編集し、SESSION_SETUP パラメータと4096バイトの XOR されたシェルコードデータを末尾にコピーし、合計パケット長 4178 バイトで DoublePulsar に送信します。総パケット長 = 4178。NetBIOS 長は4174になります(NetBIOS ヘッダーは自身をサイズに含めないため)。このパケットのうち12バイトは Doublepulsar SESSION_SETUP パラメータ用、4096 は XOR 暗号化データ用です。今後のリリースでは SMB & TRANSACTION2 構造体が使用される予定です。

UploadShellcode

  • Shellcode generated from - zerosum0x0 は ETERNALBLUE 用のカスタムシェルコードを作成し、DOUBLEPULSAR 用に小さな修正を加えて再利用できるようにしました。コピーされたシェルコード内の syscall 上書きはこのユースケースでは不要だったため、未定義にしました:
    ;%define SYSCALL_OVERWRITE ; to run at process IRQL in syscall
    再コンパイル: nasm -w-other -o >(xxd -p -c 16 | sed 's/../\x&/g') external/source/shellcode/windows/multi_arch_kernel_queue_apc.asm
    https://github.com/rapid7/metasploit-framework/blob/master/external/source/shellcode/windows/multi_arch_kernel_queue_apc.asm
    https://raw.githubusercontent.com/ninp0/eternalblue/master/eternalblue_kshellcode_x64.asm
    https://raw.githubusercontent.com/ninp0/eternalblue/master/eternalblue_kshellcode_x86.asm
    https://www.rapid7.com/blog/post/2019/10/02/open-source-command-and-control-of-the-doublepulsar-implant/

  • DoublePulsar_UploadExe.cpp - このプログラムは実行ファイルを対象としています。実行ファイルはメモリに読み込まれ、Wannacry ランチャー DLL に配置され、DoublePulsar 経由で送信されます。1つのネゴシエーション、1つのセッションセットアップ、1つのツリーコネクト、1つの Trans2 Ping パケット、および複数の Trans2 exec SESSION_SETUP パケットです。Trans2 Ping 要求パケットは、Trans2 応答パケット内の SMB 署名を取得するために送信されます。この署名は DoublePulsar XOR キー計算機で処理されます。その後、プログラムは EXE ファイルを読み取り、64ビットカーネルおよびユーザーランドシェルコードとスケルトン DLL ファイルと結合し、バッファを SMB 署名から計算した DoublePulsar XOR キーで XOR します。メモリを割り当て、Trans2 実行パケットをコピーし、SMBトランザクションに必要な値(UserID、TreeID、TotalDataCount、DataCount、ByteCount)を編集し、XOR されたデータ(カーネルシェルコード + DLL + 実行ファイル)を末尾にコピーし、合計パケット長 4096 バイトずつ DoublePulsar にループ送信するパケットが生成されます。総パケット長 = 4178。NetBIOS 長は4174になります(NetBIOS ヘッダーは自身をサイズに含めないため)。このパケットのうち12バイトは Doublepulsar SESSION_SETUP パラメータ用、4096 は XOR 暗号化データ用です。

  • EternalBlue.cpp - このプログラムは複数の SMB パケットを送信します。ネゴシエーション、SessionSetup、TreeConnect、および複数の NT trans および Trans2 パケットです。これらの NT trans パケットは不正な形式であり、被害者コンピュータのメモリ内でエクスプロイトを準備します。より多くの空白または空の SMB パケットが、被害者の同じポート上の複数のソケットを介して被害者に送信されます。EternalBlue の base64 ペイロードのほとんどは、ネゴシエーション、SessionSetup、TreeConnect パケットが送信されたソケット1を介して送信されます。その後、さらに20個のソケットが作成され、それらのソケット(ソケット3からソケット21)にデータが送信されます。その後、DoublePulsar がソケット3からソケット21に送信されます。プログラムによってソケットが閉じられ、被害者コンピュータ上で EternalBlue と DoublePulsar が起動されます。SMB 切断要求と SMB ログオフ要求が送信され、接続が閉じられます。このエクスプロイトは動作し、Windows 7 x64 でテスト済みです。バックドアが完全に動作可能になるまで約5秒かかりました(これはすでにインターネット上で EternalBlue のレポートで報告されています)。より多くのエクスプロイト試行が必要な場合があります。ただし、現在パケット内の TreeID と UserID が正しく設定されていないバグがあり、これは後のリリースで修正される予定です。このプログラムは、最近起動されたマシンに対しては、TreeID と UserID がデフォルト値に設定されているため動作します。これらのパケットは現在デフォルト値 "08 00" に設定されているため、TreeID と UserID の値を更新する必要があります。

Metasploit モジュール

Metasploit のオープンソース DoublePulsar RCE モジュールを使用して機能するカスタム Metasploit モジュールを作成しました。

ロジックを変更して、DLL を生成し、それを Wannacry から取得した x64 カーネルシェルコード(先頭に追加)とマージすることで、DoublePulsar が DLL を実行できるようにしました。

msfconsole

追加の学習用コード

リポジトリには、教育目的で以下のコードも含まれていますが、私によるサポートは提供されません。

  • DoublePulsar x86/x64 DLL アップロード Python スクリプト

  • EternalBlue オールインワンバイナリ

  • マルチアーキテクチャカーネルキュー APC アセンブリコード & Windows x86/x64 マルチアーキテクチャカーネル Ring 0 から Ring 3 へのキュー APC カーネルコード

  • worawit による EternalBlue x64/x86 カーネルペイロードシェルコード

  • Eternalblue リプレイファイル

ツールをダウンロード
EternalBlue
EternalBlue_cmd
eternalbluepackets