Sherlock Scenario
1 | Forela's domain controller is under attack. The Domain Administrator account is believed to be compromised, and it is suspected that the threat actor dumped the NTDS.dit database on the DC. We just received an alert of vssadmin being used on the DC, since this is not part of the routine schedule we have good reason to believe that the attacker abused this LOLBIN utility to get the Domain environment's crown jewel. Perform some analysis on provided artifacts for a quick triage and if possible kick the attacker as early as possible. |
Tasks
1 | 1. Attackers can abuse the vssadmin utility to create volume shadow snapshots and then extract sensitive files like NTDS.dit to bypass security mechanisms. Identify the time when the Volume Shadow Copy service entered a running state. |
Analysis
题目给了evtx文件和MFT文件,我们先来对这两个文件进行简要的解释
evtx
.evtx
文件是 Windows 操作系统的 事件日志文件格式,它用于存储系统、应用程序、安全相关的事件日志。Windows NT 和 Windows 2000 之前的版本的文件格式为.evt
。
日志文件通常存储在下面的默认路径中
1 | C:\Windows\System32\winevt\Logs\ |
常见的日志文件有
Application.evtx:记录应用程序或系统程序运行方面的日志事件,比如数据库程序可以在应用程序日志中记录文件错误,应用的崩溃记录等。
System.evtx:记录操作系统自身组件产生的日志事件,比如驱动、系统组件和应用软件的崩溃以及数据丢失错误等等。
Security.evtx:记录系统的安全审计日志事件,比如登录事件、对象访问、进程追踪、特权调用、帐号管理、策略变更等。这个日志在我们取证当中经常用到。
Setup.evtx:记录安装相关事件。
接下来介绍一下常见的Event ID
Security.evtx
Event ID | Description |
---|---|
4624 | 表示用户成功登录系统 但是要关注一下Logon Type的类型 2代表本地的交互式登录 3代表网络登录 10表示远程桌面登录 |
4625 | 表示用户尝试登录系统但未成功,可以从中识别暴力破解 |
4768 | Kerberos 身份验证票据(TGT)请求 |
4769 | Kerberos 服务票据(TGS)请求 |
4770 | Kerberos 服务票据的续订 上面的三条用来检测可疑的Kerberos 活动 |
4776 | NTLM 身份验证尝试的结果,检测横向移动或凭据滥用 |
4720 | 表示系统中创建了新用户,检测攻击者是否在系统中留下了后门账户 |
4722 | 表示已重新启用被禁用的账户,攻击者可能重新启用管理员账户 |
4726 | 表示系统中某账户被删除,攻击者可能试图清除痕迹 |
4732 / 4733 | 用户添加到组 / 从组移除,检测特权提升操作 |
4670 | 表示文件或对象的权限被更改,检测攻击者可能修改文件或注册表权限以维持持久性 |
System.evtx
Event ID | Description |
---|---|
7045 | 表示系统中安装了一个新服务,用于检测恶意服务的安装和启动 |
7034 | 表示服务异常终止,如终止系统的防护服务 |
6005 / 6006 | 系统启动 / 关机 |
1102 | 表示安全日志被清除,攻击者销毁痕迹 |
Application.evtx
Event ID | Description |
---|---|
4104 | 表示 PowerShell 脚本被执行,检测可疑的 PowerShell 活动 |
4004 | Windows Defender检测到威胁 |
4005 | 威胁被隔离 上面两条用于用于识别是否有恶意软件被防病毒程序捕获 |
Microsoft-Windows-TaskScheduler
Event ID | Description |
---|---|
106 | 表示创建了新的计划任务,检测常见的计划任务持久化 |
140 | 表示现有的计划任务被修改,检测是否有合法的计划任务被修改用于恶意目的 |
依据NTDS dumping attack detection这篇文章在这个挑战中我们将会用到下面的几个事件ID
首先我们的事件源限定在ESENT中,其中的事件ID325和327分别在创建新数据库和分离数据库时记录这些事件。两者的描述分别如下
1 | The database engine created a new database.... |
事件源 “ESENT” 是 Windows 事件日志中与 Extensible Storage Engine (ESE) 相关的事件源。ESE 是 Microsoft 的高性能、事务型数据库引擎,被许多 Windows 组件和应用程序用来管理数据存储和访问。我们的Active Directory服务用它来存储目录信息,例如用户、组和计算机对象。
事件ID 7036由 服务控制管理器 (Service Control Manager) 生成的,记录在系统日志中,表示服务的启动或停止状态发生了变化。事件描述如下
1 | The [Service Name] service entered the [state] state. |
事件ID 4799当某个进程枚举(列出)计算机或设备上某个启用了安全功能的本地组的成员时,会生成此事件。或者说尝试获取某个本地组(如 Administrators
组)的成员信息时。
1 | A security-enabled local group membership was enumerated. |
NTDS.dit
NTDS.dit 是 Windows 域控制器的核心数据库文件,存储了AD中的重要信息,存储了所有域控制器的目录服务数据,如用户账户、组信息和计算机对象。具体包括下面的内容:
- 存储 Active Directory 对象:用户账户、计算机账户、组、组织单位 (OU) 等。
- 存储身份验证凭据:包括用户的密码哈希 (如 NTLM、Kerberos 密钥等)。
- 存储安全策略:如组策略对象 (GPO) 和权限信息。
- 等等
我们之前说过我们的事件源来自ESENT,这是因为该文件采用了 Extensible Storage Engine (ESE) 数据库技术,支持高效的数据检索和写入。
NTDS.dit文件为LDAP提供底层支持,因此要访问和查询NTDS.dit通常需要专门的工具如ldapsearch或者ntdsutil等等。
非域环境中也有存储着当前主机用户的密码信息的SAM文件,但是他们都需要SYSTEM文件进行解密,他们的路径分别如下:
NTDS.dit
文件位置:C:\Windows\NTDS\NTDS.dit
SYSTEM
文件位置:C:\Windows\System32\config\SYSTEM
SAM
文件位置:C:\Windows\System32\config\SAM
注:SYSTEM
文件和HKEY_LOCAL_MACHINE\SYSTEM
注册表配置单元是同一个数据源,只是表现形式不一样
常见攻击方式
在Active Directory服务运行时NTDS.dit
被锁定(不允许被复制),但仍然具有非常多的方式提取NTDS.dit
文件,这里仅做简单介绍,以后有机会补充
Volume Shadow Copy Service (VSS)
卷影副本技术绕过文件锁定机制进行提取
1 | vssadmin create shadow /for=C: |
对SYSTEM文件的提取也类似
1 | copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\system.hiv |
NTDSUTIL.exe
NTDSUTIL
是一个用于管理和维护 Active Directory 域控制器的命令行工具,主要用于进行数据库操作、恢复、备份、清理活动目录等任务。
关于此工具的详细操作可参考https://www.cnblogs.com/suv789/p/18356208
利用如下命令进行副本的复制
1 | ntdsutil "ac i ntds" "ifm" "create full c:\ADBackup" q q |
之后会在C盘下创建ADBackup文件夹,文件夹中存有SYSTEM
文件和NTDS.dit
文件
工具提取
例如使用netexec进行NTDS文件提取
1 | nxc smb IP -u username -p password --ntds |
更多的提取方式可参考https://blog.csdn.net/Ping_Pig/article/details/108914583
在本地利用Impacket工具包的secretsdump.py进行密码提取
1 | python3 secretsdump.py -ntds ntds.dit -system system.hiv LOCAL |
MFT
MFT(Master File Table,主文件表),用于存储文件和目录的元数据。每个 NTFS 卷都包含一个 $MFT,它是 NTFS 文件系统的关键部分。
MFT包含以下信息:
- 文件和目录的属性:包括权限、所有者、创建时间、修改时间、访问时间等。
- 文件数据的物理位置:MFT记录了文件数据在磁盘上的存储位置。
- 文件名:MFT中存储了文件和目录的名称。
注:
- 即使文件被删除,$MFT 条目可能仍然保留,可以通过分析条目恢复被删除的文件。
- 通过分析 $MFT,可以追踪文件的创建、修改和删除活动。
- 删除文件的 $MFT 条目通常会被标记为未使用,但实际数据可能尚未被覆盖。
- 文件数据驻留在 $MFT 中时,不会占用磁盘空间,可能被用于隐藏恶意文件。
Task1
我们首先要确定卷影复制服务进入运行状态的时间,在SYSTEM.evtx
中寻找事件ID为7036的事件,然后搜索volumn shadow copy
服务
这里需要注意一下我们和HTB总部英国是存在8小时时差的,因此我们得到的结果需要减去8个小时才是我们的答案
Answer:2024-05-14 03:42:16
Task2
找到卷影复制进程查询的两个用户组以及执行该操作的计算机帐户,在Security.evtx
中筛选4799事件,并查找卷影服务进程VSSVC.exe
答案很明显
Answer:Administrators, Backup Operators, DC01$
Task3
卷影复制服务进程ID的10进制
Answer:4,496
Task4
提取卷影副本时分配的卷 ID/GUID 值,在Microsoft-Windows-NTFS.evtx
中过滤事件ID 4,这标志着NTFS 卷已成功挂载,找到ShadowCopy即可
Answer:{06c4a997-cca8-11ed-a90f-000c295644f9}
Task5
转储的 NTDS 数据库的完整路径,利用Eric Zimmerman个人网站中的MFT Explorer打开MFT文件
或者使用MFTECmd
1 | MFTECmd.exe -f "<Path-to-$MFT>" --csv "<Path-to-Output.csv>" |
Answer:C:\Users\Administrator\Documents\backup_sync_Dc\Ntds.dit
Task6
新转储的 ntds.dit 是什么时候在磁盘上创建的,在我们上面的页面的右下角
Answer:2024-05-14 03:44:22
Task7
转储了哪个注册表配置单元以及其文件大小(以字节为单位)是多少
这个就是我们上面说的SYSTEM.hive
了
Answer:SYSTEM, 17563648
About this Post
This post is written by Chromos2me, licensed under CC BY-NC 4.0.