NTDSUTIL+HashCat爆破AD域密码文件
NTDSUTIL是一个命令行工具,它是域控制器生态系统的一部分,其目的是为了使管理员能够访问和管理Windows Active Directory数据库,正义的系统管理员可以通过这个工具导出AD保存的所有域账号口令的哈希值。Hashcat是自称世界上最快的密码恢复工具。将这两个工具组合使用,我们可以在用户无感知的情况下完成AD域账号口令的弱密码检查(爆破);
另一方面,渗透测试人员和redteam可以用它来拍摄现有ntds.dit文件的快照,该文件可以复制到新位置以进行离线分析和密码哈希的提取。
0x01 环境准备
0x02 域密码hash导出
在域控服务器上执行以下命令(需要管理员权限),稍等片刻会在C:\ntdsutil生成新的文件夹
ntdsutil
activate instance ntds
ifm
create full C:\ntdsutil
quit
quit
将生成两个新文件夹:Active Directory和Registry。NTDS.DIT文件将保存在Active Directory中,SAM和SYSTEM文件将保存到Registry文件夹中。
ntdutils.png
0x03 域密码hash提取
Impacket是一组python脚本,可用于执行各种任务,包括提取NTDS文件的内容。impacket-secretsdump模块可以从NTDS导出的数据库文件中提取hash,这个模块在kali里面有。你可以将impacket工程下载下来然后直接使用impacket-secretsdump脚本,也可以使用kali自带的impacket模块,两者的效果是一模一样的,这里以kali为例。
将上一步提取的ntds.dit
和SYSTEM
copy到kali的 /root目录,然后执行:
impacket-secretsdump -system /root/SYSTEM -ntds /root/ntds.dit LOCAL
img
也可以直接下载impacket工程 https://github.com/SecureAuthCorp/impacket
提取内容的格式为<username>::RID::<LM Hash>::<NT Hash>:::
该hash的生成方法:
- 将明文口令转换成十六进制的格式
- 转换成Unicode格式,即在每个字节之后添加0x00
- 对Unicode字符串作MD4加密,生成32位的十六进制数字串
0x04 暴力破解NTLM hash
通过上一步,我们获取了所有账号密码的hash值,接下来我们将最后一列32位hash提取出来保存到win2.hash
,并使用HashCat爆破hash
将准备好的字典ptemp.txt、需要破解的hash值文件win2.hash
复制到oclHashcat32程序所在文件夹下,执行一下命令进行破解:
hashcat -m 1000 -a 0 -o winpass1.txt --remove win2.hash ptemp.txt
爆破成功的密码会输出到制定文件,如下图所示,然后通过key值就可以找到是哪个账号的密码被爆破了,从而达到弱口令检查的目的。
image.png
参数说明:
“-m 1000” 表示破解密码类型为“NTLM”;
“-a 0”表示采用字典破解;
“-o”将破解后的结果输出到winpass1.txt;
“--remove win2.hash”表示将移除破解成功的hash;
“ptemp.txt”为密码字典文件。
暴力破解Linux密码hash文件
最后再顺便提一个使用HashCat做Linux系统口令爆破的方法。Linux系统中有一个用户密码配置文件/etc/shadow,里面存放着用户名,Hash加密后的值,最后一次修改密码的日期。
shadow.png-
root是用户名
-
$6 是表示一种类型标记为6的密码散列算法,这里指SHA-512哈希算法
-
oKqzH.CY指的是加盐(Salt)值
-
08TTiAhyN0vEIRPN7N8cGIkq2Yxf281AwjUmVjI5x2cqqOzFWRde6h32ibzXz8ZW0PBl8fgp0ZmYH1zSQXSYk/ 是密码的hash
我们使用Hashcat破解的时候需要拷贝上述字符串中的一部分,即算法+盐+hash,如下:
$6$oKqzH.CY$08TTiAhyN0vEIRPN7N8cGIkq2Yxf281AwjUmVjI5x2cqqOzFWRde6h32ibzXz8ZW0PBl8fgp0ZmYH1zSQXSYk/
将hash字串复制到文件win2_hash.txt
,在hashcat中选择hash类型码为1800也就是SHA-512(Unix),然后运行破解
hashcat -m 1800 -a 0 -o winpass1.txt --remove win2.hash ptemp.txt
image.png