
CVE-2021-36934 (HiveNightmare) を実証する教育用ラボ - シャドウコピーACLの設定ミスを利用したWindows LPE
管理されたラボ環境でHiveNightmare脆弱性を再現し分析する。
CVE-2021-36934(別名「SeriousSAM」または「HiveNightmare」)は、Windows 10 バージョン1809以降、初期のWindows 11、およびWindows Server 2019/2022に影響するローカル権限昇格(LPE)脆弱性です。標準ユーザーが、ローカルパスワードハッシュなどの機密データを含む保護されたシステムファイルを複製してアクセスできるようになります。根本的な問題は誤設定されたアクセス制御リスト(ACL)にあり、機密システムファイル(特にSAM、SYSTEM、SECURITYハイブ)に対してすべてのユーザーに読み取り権限を付与しています。これらのファイルは通常の動作中はロックされていますが、シャドウコピー/復元ポイントを介したバックアップコピーは同じ誤設定のアクセス許可を継承し、システム上の任意のユーザーがアクセスおよび悪用可能になります。
この脆弱性を悪用するには、(1) システムの保護が有効であることと、(2) 復元ポイントが存在することという2つの前提条件が必要です。これらの要素は、Windows 10/11マシンではデフォルトで存在することがよくあります。この実装では、シャドウコピー(復元ポイント)からSAM、SYSTEM、SECURITYファイルのコピーを抽出します。通常、システム実行中はロックされているこれらのファイルは、元のACLと同じACLを継承するスナップショットコピーを介してアクセス可能になります。
権限のないユーザーアカウントからは、公開スクリプトを使用して悪用できます。最もよく知られているのは、Cで記述された hivenightmare.exe です。回収された3つのファイルには、それぞれ補完的な役割があります。SAM にはローカルアカウントのパスワードハッシュ(暗号化済み)が含まれ、SECURITY には追加のLSAシークレット(キャッシュされた資格情報、サービスパスワード、これも暗号化済み)が保存され、SYSTEM は復号キー(BootKey)を提供します。厳密なローカル権限昇格のためには、NTLMハッシュを抽出するのに SAM と SYSTEM のみが必要です。これらのファイルを取得すると、secretsdump.pyやmimikatzなどのツールでハッシュを復号し、pass-the-hash攻撃を実行したり、psexec.pyを使用して完全な管理者アクセスを取得したりできます。
エクスプロイトの実装は、シャドウコピー/復元ポイントからWindowsハイブ(SAM、SYSTEM、SECURITY)を抽出し、抽出したハッシュを使用してsecretsdump.pyとpsexec.pyでSYSTEMアクセスを取得することに依存しています。
テスト済みプラットフォーム: Windows 10、ビルド1903(2020年12月更新)。
1. 背景: Windowsのバージョン 調査対象の脆弱性を含むWindows 10バージョン(1903、2020年12月更新)を使用しています。
2. 機密ファイルのアクセス許可 SAM、SYSTEM、SECURITYハイブのNTFSアクセス許可は、ローカルユーザーに読み取りアクセスを許可しており、これはconfigフォルダーから継承されています。
3. 復元ポイントなしのローカルユーザーからの hivenightmare 実行 復元ポイント/シャドウコピーのないローカルアカウントからhivenightmare.exeを起動すると、悪用する復元ポイントが見つからないため、ツールは失敗します。
4. システムの保護を有効にして復元ポイントを作成
ハイブ抽出のための必要な条件を作成するために、システムの保護を有効にしてから手動で復元ポイントを作成します。復元ポイントが存在すると、hivenightmareは機密ファイルのコピーにアクセスできるようになります。

5. 機密ハイブの抽出 復元ポイントの作成後、hivenightmare.exeを再度実行すると、シャドウコピーからSAM、SYSTEM、SECURITYファイルが正常に抽出されます。 他にも多くのスクリプト(C#、Go、PowerShellなど)があります。使用する技術に関係なく、すべてのスクリプトは同じパスを対象としています:
\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy[i]\Windows\System32\config\[SENSITIVE FILE]
6. Kali での分析: secretsdump.py によるハッシュ取得 抽出したファイルはKaliマシンに転送されます。secretsdump.py(Impacket)を使用してアカウントを一覧表示し、ハッシュを平文で取得します。
7. 権限昇格: psexec.py によるハッシュ再利用 抽出したハッシュを使用して、psexec.pyで認証し、SYSTEM権限を持つセッションを開き、マシンの完全な制御を取得します。
Microsoftの公式修正プログラム(KB5004605、2021年7月)は、影響を受けたファイルのACLを適切に復元します。ただし、いくつかの補完的な対策が推奨されます。まず、C:\Windows\System32\config のアクセス許可を手動で確認し、SYSTEMと管理者のみがフルアクセス権を持つことを確認します。次に、パッチ適用前に作成された古いシャドウコピーを削除します。これらは脆弱なアクセス許可を保持しているためです。運用上の理由(データ損失のリスク、ユーザーへの影響)から、配布されたパッチには古い復元ポイントの自動削除は含まれていません。最後に、システムイベントログでシャドウコピーへの異常なアクセスを監視します。
ここでは、手動によるACL修正と以前のシャドウコピーの削除を通じて、この脆弱性を緩和する方法を示します。
1. 手動ACL修正 このコマンドは、C:\Windows\System32\config フォルダーの継承を解除します。
2. ACL修正後の検証 修正前に作成された復元ポイントが存在するため、関連するシャドウコピーからハイブを抽出することは依然として可能です。
3. シャドウコピーの削除
4. 最終検証 古いシャドウコピーを削除すると、ハイブの抽出は失敗し、ローカルアカウントからこの脆弱性を悪用することはできなくなります。
CVE-2021-36934は、単純なACLの誤設定がWindowsシステムのセキュリティを完全に侵害する可能性があることを示しています。この脆弱性は、セキュリティ機能(復元ポイント)を攻撃ベクトルに変え、権限のない潜在的に悪意のあるユーザーが完全な管理者アクセスを取得できるようにします。結論として、CVE-2021-36934は、バックアップコピーであっても、システムのアクセス許可を定期的に監査し、機密ファイルへのアクセスを監視する必要性を浮き彫りにしています。
教育目的のみに使用してください。許可なくシステムで使用しないでください。