WEB渗透与网络安全

NTDSUTIL+HashCat爆破AD域密码文件

2020-02-03  本文已影响0人  半夜菊花茶

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.ditSYSTEMcopy到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的生成方法:

  1. 将明文口令转换成十六进制的格式
  2. 转换成Unicode格式,即在每个字节之后添加0x00
  3. 对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

我们使用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
上一篇下一篇

猜你喜欢

热点阅读