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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
impostor — SMB1サーバーによるNTLMv2ハッシュ傍受用ツール。C言語で記述されています。 | Kitploit
ツール/GitHubGitHub/lcky00/impostor
パスワード攻撃エクスプロイトネットワークセキュリティペネトレーションテスト学習と教育レッドチーミング
GitHublcky00/impostor

impostor

SMB1サーバーによるNTLMv2ハッシュ傍受用ツール。C言語で記述されています。

リポジトリを見る
4147日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Impostor

NTLMv2ハッシュを傍受するためのSMB1サーバー。C言語で書かれています。

このプロジェクトの目標は、SMB1サーバーをステートマシンとして実装し、クライアントの要求を正しく受け入れて応答することでクライアントを欺き、NTLM認証を完了させて、自身のNTLMv2ハッシュ(hashcat/johnと互換性のある形式)を漏えいさせることです。

このツールは、攻撃的セキュリティ/レッドチーム活動および教育目的(SMB1/NTLMプロトコルの研究)を意図しており、所有する環境または明示的な同意を得た環境でのみ使用してください。

仕組み

このサーバーは正規のSMB1サーバーを装い、クライアントを3フェーズのステートマシンで誘導します:

ステートマシン図

状態遷移
1. NEGOTIATESMB NEGOTIATEが到着すると、サーバーの応答に続いて状態は2. CHALLENGEへ移行します
2. CHALLENGENTLM_NEGOTIATEが到着すると、サーバーの応答に続いて状態は3. AUTHへ移行します
3. AUTHNTLM_AUTHが到着すると、サーバーの応答に続いて状態は1. NEGOTIATEへ戻ります

実装レベルでは、4バイトからなる外側のNetBIOS「エンベロープ」を考慮する必要があります。最後の3バイトはSMBパケットの長さをバイト単位で示します。

各クライアント接続は、ステートマシンの状態に加えて以下を保持する状態構造体(server.h内のclient_t)を介して追跡されます:

  • 受信バッファ(rx_buf)とその長さ。ソケットから読み取られたがまだ完全に処理されていないデータをバッファリングします;
  • 送信バッファ(tx_buf、オフセットtx_off付き)。クライアントに送信されるがまだ完全に送信されていないデータをバッファリングします;
  • NetBIOSヘッダーを追跡するためのnetbios_header_recvおよびnetbios_msg_lenフィールド。

データを受信すると、少なくとも4バイト(NetBIOSヘッダー)が受信されたことが確認され、SMBメッセージの長さが決定され、状態フィールドが更新され、最後にメッセージが処理されて、次の受信に備えてクライアントの状態が更新されます。

サーバーのメインループはpoll()に基づいており、複数の接続をノンブロッキング方式で同時に処理します:

受信用メインループのアイデア

NTLM認証が完了すると、サーバーはユーザー名、ホスト名、ドメイン、およびキャプチャされたNTLMv2ハッシュを画面に([INTERCEPTED] ...)次の形式で出力します:

root@kitploit:~
username::domain:server_challenge:ntlmv2_response:blob

hashcat(モード-m 5600)やjohnなどのクラッキングツールですぐに使用できます。

プロジェクト構造

要件

  • プロジェクトで使用される標準に準拠したCコンパイラ(例:gcc/clang)とPOSIXツールチェーン(コードはBSDソケット、poll()、signal()などを使用するため、Linux/Unix系環境を対象としています)。

コンパイル

Makefileが含まれています:

root@kitploit:~
make            # メインサーバーをビルド -> ./impostor
make debug      # デバッグビルド(シンボル、-O0、AddressSanitizer/UBSan)
make clean      # 生成されたオブジェクトファイルと実行可能ファイルを削除
make run        # サーバーをビルドして実行

あるいは、同等の手動コンパイルコマンドは次のとおりです:

root@kitploit:~
gcc -o impostor server.c smb1_parser.c spnego_decoder.c asn1_parser.c ntlm_parser.c

使用方法

root@kitploit:~
./impostor [port]
  • port(オプション):サーバーがリッスンするTCPポート。省略した場合、server.hで定義されたデフォルトポート(SERVER_PORT、9000)が使用されます。1〜65535の値である必要があります。

起動時に、サーバーはバナー、バージョン、および設定情報(ポート、最大クライアント数)を出力し、その後接続を待ち受けます。NTLMv2ハッシュがキャプチャされると、傍受されたデータ(ユーザー名、ホスト名、ドメイン、ハッシュ)が画面に出力されます。サーバーはintHandlerによって処理されるCtrl+C(SIGINT)で停止できます。

root@kitploit:~
 ___                  ___      _    ___        
|_ _|_ __ ___  _ __  / _ \ ___| |_ / _ \ _ __  
 | || '_ ` _ \| '_ \| | | / __| __| | | | '__| 
 | || | | | | | |_) | |_| \__ \ |_| |_| | |    
|___|_| |_| |_| .__/ \___/|___/\__|\___/|_|    
              |_| (v.1.0)             by Lcky  


[*] Version: 1.0
[*] Author: Lcky <luca9vinci at gmail dot com>

[*] Server Info
    Port: 9090
    Max Clients: 50


[*] Listening on port 9090
[*] Waiting for connections...

[INTERCEPTED] Username: test
[INTERCEPTED] Hostname: KALILINUX-2023-02
[INTERCEPTED] Domain  : WORKGROUP
[INTERCEPTED] Hash    : test::WORKGROUP:c4ba87a265de9e09:3482d0efa64fc09a94e44faa83d2a936:01010000000000009A3DE84B6235DD01D36FD06DFF4D64BB000000000200080038004E004900490001001E00570049004E002D00310046005800340055004D005000530034005400420004003400570049004E002D00310046005800340055004D00500053003400540042002E0038004E00490049002E004C004F00430041004C000300140038004E00490049002E004C004F00430041004C000500140038004E00490049002E004C004F00430041004C0008003000300000000000000000000000000000000CAFEB574B56CB6139E261228FBFE3075B4FA9393A3B71031AF3280F4D5A27D00A0010000000000000000000000000000000000009001C0063006900660073002F003100320037002E0030002E0030002E00310000000000
^C
[*] Stopping the server...
ツールをダウンロード
ファイル説明
server.c / server.hエントリーポイント、TCPリスナー設定、クライアントステートマシン、poll()ベースのメインループ、RX/TXバッファリング、傍受したハッシュの出力
smb1_parser.c / smb1_parser.hSMB1パケットの解析/構築(ヘッダー、NEGOTIATE、SESSION_SETUPコマンド、フラグ/flags2など)
spnego_decoder.c / spnego_decoder.hSMBメッセージに含まれるSPNEGOトークン(認証メカニズムのネゴシエーション、NTLMSSPブロブの抽出)のデコード
asn1_parser.c / asn1_parser.hSPNEGOデコーダーがASN.1構造ツリーを構築するために使用する最小限のASN.1 DERパーサー
ntlm_parser.c / ntlm_parser.hNTLMSSPメッセージ(NEGOTIATE、CHALLENGE、AUTHENTICATE)の解析と、ユーザー名、ドメイン、ホスト名、NTLMv2応答の抽出
endianness.hエンディアン処理用ユーティリティ(実行時のリトル/ビッグエンディアン変換)
test.c、test2.cパーサー用のテスト/実験ファイル
docs/図と補助資料(ステートマシン図、メインループ)