朋友们,大家好!!今天我们来讨论一些对渗透测试非常有用的取证工具,主要是从主机内部获取NTLM密码的哈希值。我们知道,当进行渗透测试时,我们通常会从主机内部提取很多东西,如果发现了诸如NTDS.dit和系统hive之类的文件,那么,那么可以利用本文介绍方法来提取其中的用户信息。
Impacket是一个处理网络协议的Python类集。Impacket的设计初衷,是提供一种低层的编程方式来访问数据包以及某些协议(例如SMB1-3和MSRPC)的实现。该程序库提供了一组工具,我们可以将其视为在该库的上下文中可以执行的操作的示例。
secretsdump.py: 实现了多种无需在远程主机上运行代理的情况下转储机密数据的方法。对于SAM和LSA的机密数据(包括缓存的凭证),我们尽量从注册表中读取,然后将其保存到目标系统(%SYSTEMROOT%\Temp 目录)的hive文件中,并从那里读取剩余的数据。对于DIT文件,我们使用DL_DRSGetNCChanges()方法转储NTLM哈希值、明文凭证(如果有的话)以及Kerberos密钥。此外,我们还可以通过smbexec/wmiexec方法所用的vssadmin对NTDS.dit进行转储。
源代码: https://www.coresecurity.com/corelabs-research/open-source-tools/impacket
像官方定义描述的那样,我们从NTLM内部提取密码主要用到两个文件ntds.dit和System-hive。如果在主机上进行渗透测试时发现了上述文件,那么通过以下命令提取管理账户或其它内部账户的密码哈希值。
impacket-secretsdump -system /root/Desktop/NTDS/SYSTEM -ntds /root/Desktop/NTDS/ntds.dit LOCAL
-system: 系统hive 文件的路径 (SYSTEM)
-ntds: dit文件的路径 (ntds.dit)
现在,如你所看到的,NTLM密码已经从ntd.dit文件内转储出来了.....
我们可以利用在线解密工具来破解这个密码的哈希值。如图所示,我们得到的结果是“123@password”。
DSInternals PowerShell模块提供了一些非常易于使用的cmdlets命令,这些命令都是立在该框之上的。其主要功能包括通过目录复制服务(DRS)远程协议对域控制器进行操纵和查询。
源代码: https://github.com/MichaelGrafnetter/DSInternals
该方法仅适用于windows用户,要提取NTLM哈希值,我们需要借助如下所示的命令。
Save-Module DSInternals -Path C:\Windows\System32\WindowsPowershell\v1.0\Modules
Install-Module DSInternals
Import-Module DSInternals
Get-Bootkey -SystemHivePath 'C:\Users\sanje\Desktop\NTDS\SYSTEM'
Get-ADDBAccount -All -DBPath 'C:\Users\sanje\Desktop\NTDS\ntds.dit' -Bootkey $key
从命令输出可以发现,我们已经成功地提取了NTLM哈希值;接下来,我们可以按照前面介绍的方法对其进行破解。
首先,我们需要从NTDS.dit文件中提取表格,为此可以借助于libesedb-tools提供的esedbexport。Libesedb是一个程序库,用于访问可扩展储存引擎(ESE)数据库文件(EDB)格式,该格式主要因用于处理prev1.edb文件的微软扩展而出名。ESE数据库格式已经被各种应用程序广泛采用,例如Windows Search、Windows Mail、Exchange、Active Directory (NTDS.dit) 等等。
源代码:https://github.com/libyal/libesedb/
最新版下载链接: https://github.com/libyal/libesedb/releases
为了安装esedbexport,需要首先下载libesedb程序库,然后对tar文件进行解压,具体命令如下所示。
wget https://github.com/libyal/libesedb/releases/download/20170121/libesedb-experimental-20170121.tar.gz
tar xf libesedb-experimental-20170121.tar.gz
然后,通过下列命令完成安装:
cd libesedb-20170121
apt-get install autoconf automake autopoint libtool pkg-config
./configure
make
make install
ldconfig
现在工具已经安装好,接下来就可以利用它从ntds.dit文件中转储数据表了。
esedbexport -m tables /root/Desktop/NTDS/ntds.dit
上述命令将创建一个新目录,名为“ntds.dit.export”,其中含有提取的数据表,实际上,主要有两个数据表,分别是datatable 和 link_table。
现在,下载取证工具ntdsxtract,该工具不仅能够提取与用户对象、组对象、计算机对象相关的信息,同时还能从NTDS.dit文件中删除对象。
git clone https://github.com/csababarta/ntdsxtract.git
执行以下命令,安装所有配置文件。
cd ntdsxtract
python setup.py build && python setup.py install
现在,我们可以通过三个文件,即Datatable、link_table和system hive,来转储用户信息和NT/LM密码哈希值。我们可以通过执行下列命令来获取John the Ripper格式的NTLM密码。
dsusers.py ntds.dit.export/datatable.4 ntds.dit.export/link_table.6 data --syshive /root/Desktop/NTDS/SYSTEM --passwordhashes --pwdformat john --ntoutfile nthash.txt --lmoutfile lmhash.txt
如你所见,上述用户信息和密码哈希值已经被提取出来了。
cat data/nthash.txt
现在,我们可以在 John the ripper的帮助下破解这些密码的哈希值了。
原文:http://www.hackingarticles.in/3-ways-extract-password-hashes-from-ntds-dit/