Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pass-the-Challenge - Credential Guardの新たなバイパス手法

Nao
February 22, 2023

Pass-the-Challenge - Credential Guardの新たなバイパス手法

2023年2月22日に行われた「Security․Tokyo #1」の発表資料です。
@n_etupirka
https://security-tokyo.connpass.com/event/273983/

Nao

February 22, 2023
Tweet

More Decks by Nao

Other Decks in Technology

Transcript

  1. Pass-the-Challenge
    Credential Guardの新たなバイパス手法 なお(@n_etupirka)
    Security.Tokyo #1 February 22, 2023

    View Slide

  2. $ whoami
    • 小松 奈央(Nao Komatsu)
    • Job
    ◦ Penetration Testing
    ◦ Mobile Application Security
    ◦ Security Training Instructor
    • Twitter / Blog
    ◦ https://twitter.com/n_etupirka
    ◦ https://n-etupirka.net
    February 22, 2023 2

    View Slide

  3. Index
    • Credential Guardの概要
    • Pass-the-Challenge
    ◦ Pass-the-Challengeの概要
    ◦ 実際にやってみた
    • まとめ
    • 参考文献
    February 22, 2023 3
    【注意】
    本スライドの内容は犯罪行為を助長するものではありません。
    サイバー空間の安心・安全な環境を確保する目的にのみ利用し、絶対に悪用しないでください。

    View Slide

  4. Credential Guardの概要
    February 22, 2023 4

    View Slide

  5. Credential Guardとは
    • 資格情報(NTLMハッシュなど)の保護を目的とした
    Windowsの機能
    • 仮想化ベースセキュリティによって(Virtualization-based
    security)によって資格情報をLSASSから分離する
    • 資格情報が保護される仕組み
    ◦ LSASS:認証が必要な他のプログラムと通信し、LSAIsoを介して資
    格情報を使用する
    ◦ LSAIso:資格情報の直接操作(暗号化や復号など)を行う。LSASS
    からのみ呼び出され、他のプログラムと通信不可。
    February 22, 2023 5

    View Slide

  6. Credential Guardのアーキテクチャ
    February 22, 2023 6
    Microsoft. “How Windows Defender Credential Guard works”.
    https://learn.microsoft.com/en-us/windows/security/identity-protection/credential-guard/credential-guard-how-it-works
    • 資格情報の暗号化や復号などを行う
    • LSASSからのみ呼び出され、
    他のプログラムと通信不可
    • LSAIsoを介して資格情報を使用
    • 他のプログラムと通信可能

    View Slide

  7. MimikatzによるLSASSダンプの例
    • Credential Guardが無効の場合
    • Credential Guardが有効の場合
    February 22, 2023 7
    NTLMハッシュを入手でき、
    Pass-the-Hashなどに悪用可能
    NTLMハッシュが暗号化され
    ているため、悪用不可

    View Slide

  8. Pass-the-Challengeの概要
    February 22, 2023 8

    View Slide

  9. Pass-the-Challengeとは
    • 2022年12月27日にOliver Lyak(@ly4k_)氏によって公開さ
    れた攻撃手法
    • Credential Guardによって保護された資格情報から、NTLM
    ハッシュを回復することができる
    • 侵害済みの端末において、新たにログオンするユーザを標的
    とした従来のCredential Guardバイパス手法と異なり、端末
    侵害前にログオンしていたユーザも攻撃対象となる
    February 22, 2023 9

    View Slide

  10. Pass-the-Challengeの仕組み
    • LSAIsoのNtlmIumCalculateNtResponseメソッドを悪用する
    ◦ NetNTLMv1応答値を計算するメソッド
    ◦ NetNTLMv1認証は基本無効化されているものの、互換性のためメ
    ソッド自体は存在する
    • LSASSから上記メソッドを呼び出し、NetNTLMv1応答値を
    取得する
    ◦ LSAIsoのメソッドを呼び出すためにライブラリをLSASSへロード
    • NtlmIumLm20GetNtlm3ChallengeResponseメソッドを悪用
    する方法も存在する(本資料では対象外)
    February 22, 2023 10

    View Slide

  11. Pass-the-Challengeの仕組み
    1. LSASSから以下の情報をダンプ
    ◦ Context Handle / Proxy Info / Encrypted blob
    2. SecurityPackage.dll(LSAIsoを悪用するためのライブラ
    リ)をLSASSにロード
    3. SecurityPackage.dllを介してLSAIsoの
    NtlmIumCalculateNtResponseメソッドを呼び出し、
    NetNTLMv1応答値を取得する
    4. NetNTLMv1応答値からNTLMハッシュを回復する
    February 22, 2023 11

    View Slide

  12. Pass-the-Challengeの仕組み
    February 22, 2023 12
    ①LSASSから必要な情報をダンプ
    ②SecurityPackage.dllを
    LSASSにロード
    ③NtlmIumCalculateNtResponseメソッドを
    呼び出し、NetNTLMv1応答値を取得する

    View Slide

  13. Pass-the-Challengeの対策
    • Credential Guardの仕様を悪用する攻撃手法
    ◦ 根本的な対策は困難
    • 多層防御により、ネットワーク全体のセキュリティレベルを
    向上させることが重要
    ◦ 端末に侵入されないための対策
    ◦ 侵入範囲を拡大されないための対策
    ◦ 侵入を早期に検知するための監視、運用体制の強化
    February 22, 2023 13

    View Slide

  14. 実際にやってみた
    February 22, 2023 14

    View Slide

  15. 用意した環境
    • Active Directory環境*
    ◦ ドメインコントローラ1台
    ◦ クライアント端末1台(Credential Guard有効)
    • ドメインアカウント:john.smith
    ◦ パスワード:zmh4A5HVXG3sCiwuESKh
    ◦ NTLMハッシュ:664169295f48fcb3d5e43cd77c49e566
    February 22, 2023 15
    (*)Credential Guardの保護の対象は、ドメインに紐づく資格情報のみであるため

    View Slide

  16. 1. PypykatzによるLSASSダンプ
    February 22, 2023 16
    Oliver Lyak. “Pypykatz”. https://github.com/ly4k/Pypykatz
    C:¥> python -m pypykatz live lsa

    View Slide

  17. 2. SecurityPackage.dllのロード
    • SecurityPackage.dllをLSASSにロード
    C:¥> PassTheChallenge.exe inject SecurityPackage.dll
    February 22, 2023 17
    Oliver Lyak. “PassTheChallenge”. https://github.com/ly4k/PassTheChallenge

    View Slide

  18. 3. NetNTLMv1応答値の取得
    • LSASSからダンプした情報を使って、NetNTLMv1応答値を
    取得する
    C:¥> PassTheChallenge.exe nthash :Info>
    February 22, 2023 18

    View Slide

  19. 4. NTLMハッシュの回復
    • NetNTLMv1応答値からNTLMハッシュを回復する必要がある
    • NetNTLMv1応答値の生成には危殆化した暗号化方式であるDES
    暗号が使用されている
    • Pass-the-Challengeの元記事では、crack.shというWebサービス
    を利用している
    ◦ DES暗号のクラッキングに特化した研究目的のサービス。DES暗号のレイ
    ンボーテーブルを保持しており、数秒でクラック可能。
    • Webサービスに気軽に認証情報をアップロードするわけにもいか
    ないため、自力でのNTLMハッシュ回復を試みる
    February 22, 2023 19

    View Slide

  20. 4-1. NetNTLMv1応答値の生成方法
    February 22, 2023 20
    逆の手順を実施すれば
    NTLMハッシュを回復できる
    DES暗号のクラッキングに
    よって秘密鍵を求めた後、
    NTLMハッシュに変換する
    実質的な鍵空間が2Bytesしかな
    いため、容易に特定が可能

    View Slide

  21. 4-2. 末尾2Bytesの特定
    • 秘密鍵3は実質的な鍵空間が2Bytesしかないため、容易に特
    定が可能
    • 末尾2Bytesを求めるツールはHashcatが公開している
    ◦ C:¥> ct3_to_ntlm.exe
    February 22, 2023 21
    hashcat. “hashcat-utils”. https://github.com/hashcat/hashcat-utils

    View Slide

  22. 4-3. 秘密鍵の特定
    • Hashcatを用いてDES暗号のクラッキングを行う
    ◦ C:¥> hashcat.exe -m 14000 -a 3 -1 charsets¥DES_full.hcchr
    --hex-charset hashes.txt ?1?1?1?1?1?1?1?1
    ◦ 単一のGeForce RTX 3090を使うと14日程度でクラック完了
    February 22, 2023 22

    View Slide

  23. 4-4. NTLMハッシュの復元
    • 最後に特定した秘密鍵からNTLMハッシュを復元する
    ◦ NTLMハッシュから秘密鍵を生成するプログラムを参考に、その逆
    を行うプログラム*を作成
    • NTLMハッシュの回復に成功!
    February 22, 2023 23
    (*)作ったプログラムのソースコードはhttps://github.com/n-etupirka/des-to-ntlmで公開

    View Slide

  24. まとめ
    • 侵害後の端末において、Credential Guardが有効であったと
    しても比較的容易にNTLMハッシュを回復可能
    • 推奨事項
    ◦ Credential Guardは攻撃の障壁として有用な機能であるため、有効化
    することを推奨
    ◦ 単一の機能や製品に頼るのではなく、多層防御によりネットワーク
    全体でセキュリティレベルを向上することも重要
    • 以下の記事でより詳細に解説している
    ◦ https://n-etupirka.net/entry/2023/01/28/104428
    February 22, 2023 24

    View Slide

  25. 参考文献
    • [1] “Pass-the-Challenge: Defeating Windows Defender Credential Guard”. https://
    research.ifcr.dk/pass-the-challenge-defeating-windows-defender-credential-guar
    d-31a892eee22, (accessed January 25, 2023)
    • [2] “Protect derived domain credentials with Windows Defender Credential Guard”.
    https://learn.microsoft.com/en-us/windows/security/identity-protection/credenti
    al-guard/credential-guard, (accessed January 25, 2023)
    • [3] “Net-LTLMv1認証の危険性”. https://binary-pulsar.hatenablog.jp/entry/2018/1
    2/11/090000, (accessed January 25, 2023)
    • [4] “NTLMv1 to NTLM Reversing”. https://hashcat.net/forum/thread-9009.html,
    (accessed January 25, 2023)
    February 22, 2023 25

    View Slide

  26. Thank you. Any Questions?
    February 22, 2023 26

    View Slide