type
Post
status
Published
date
Dec 9, 2022
slug
summary
tags
攻防
内网
category
技术分享
icon
password
Property
Feb 9, 2023 07:21 AM
Mimikatz主要是通过工具内的sekurlsa模块来获取系统用户密码等信息,比如sekurlsa::logonpasswords(获取用户账户密码所有信息)、sekurlsa::msv(获取用户hash)、sekurlsa::wdigest(获取明文密码)等

本地抓取密码

攻击

下面对此举例说明:
1、用以下方式在线交互式抓取用户密码
privilege::debug #获取lsass进程句柄前的debug权限 sekurlsa::logonpasswords
notion image
2、先用procdump获取lsass内存数据,后续离线利用mimikatz读取内存数据以抓取用户密码
notion image
notion image
3、利用Invoke-Mimikatz.ps1抓取用户密码,同sekurlsa::logonpasswords
powershell Import-Module .\Invoke-Mimikatz.ps1 Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonPasswords full"'
notion image

发现

利用以上三者手法实现攻击后,在windows eventlog即事件查看器可以看到EventID=4663(仅针对win10及以上)的事件,该事件ID根据微软描述可以看到mimikatz和procdump均对lsass.exe做了访问句柄对象的操作,再细看根据AccessMask=0x10字段可以看出是对lsass.exe做了写入扩展文件的操作
notion image
notion image
notion image

检测

先对以上攻击产生的日志做个说明,此攻击共产生了4项可疑日志记录,EventID分别为4673(调用特权服务)、4703(调整用户权限)、4656(请求对象句柄)、4663(尝试访问对象)

EventID=4673

为工具申请了SeTcbPrivilege权限,此权限将其持有者标识为受信任计算机基础的一部分。 此用户权限允许进程在没有身份验证的情况下模拟任何用户。 因此,此过程可以访问与该用户相同的本地资源。

EventID=4703

为工具分配了SeDebugPrivilege权限,使用此权限,用户可以将调试器附加到任何进程或内核。 调试自己的应用程序的开发人员不需要此用户权限。 调试新系统组件的开发人员需要此用户权限。 此用户权限提供对敏感和关键操作系统组件的完全访问权限。

EventID=4656

工具已请求lsass.exe对象的特定访问权限,有失败或成功事件

EventID=4663

工具对lsass.exe对象已使用访问权限并执行了特定操作,该事件无失败事件
综上所述,唯有4663事件更能有效、精准的判定攻击。所以windows eventlog筛选语句建议如下:
<QueryList><Query Id='0' Path='Security'><Select Path='Security'>*[System[(EventID='4663') and TimeCreated[timediff(@SystemTime)&lt;=604800000]]] and *[EventData[Data[@Name='ObjectServer']='Security' and Data[@Name='ObjectType']='Process' and Data[@Name='AccessMask']='0x10']]
如若可通过第三方平台做日志筛查,对日志中的ObjectName\lsass.exe匹配更为合适

远程抓取密码

这一项讲的就是DCSync攻击。在DCSync技术没有出现之前,攻击者要想拿到域内用户的hash,就只能在域控制器上运行 Mimikatz 或 Invoke-Mimikatz去抓取密码hash,使用这项DCSync技术可以有效地 "模拟" 域控制器并从目标域控上请求域内用户密码hash,它提供了从域控制器远程提取域帐户密码数据的功能。运行 DCSync 的帐户需要具有适当的权限,因为 DCSync 通过标准域控制器复制 API 提取帐户数据

攻击

对于DCSync攻击来说,只要域用户拥有以下三条DACL即可向域控发出数据同步请求,从而dump去域内用户hash,这三条DACL分别为:
复制目录更改(DS-Replication-Get-Changes) 全部复制目录更改 (DS-Replication-Get-Changes-All) 在过滤集中复制目录更改(可有可无)(DS-Replication-Get-Changes-In-Filtered-Set)
使用以上权限,攻击者可以提取帐户上的有用密码数据,包括:
  • SAM 账户名
  • 帐户类型
  • 用户帐户控制选项
  • 帐户到期
  • 密码最后设置日期
  • 安全标识符 (SID)
  • RID
  • 当前和以前的(密码历史)NTLM 密码哈希显示密码历史,至少以 NTLM 哈希格式显示。
  • 当前和以前的 LM 密码哈希,以 LM 哈希格式显示密码历史记录。
  • 明文密码(需要可逆加密)
举例,利用mimikatz做DCSync攻击,键入以下命令:
privilege::debug lsadump::dcsync /all /csv //远程dump域控hash
notion image

发现

通过以上攻击利用,从攻击机是没法看出任何可疑的日志,而从域控日志中可以看到EventID=4662事件,当为 Active Directory 对象设置了适当的SACL并且执行的操作满足此SACL时,才会生成此事件
notion image
1、Access Mask0x100,即控制访问权限
2、Properties包含{1131f6ad-9c07-11d1-f79f-00c04fc2dcd2},即全部复制目录更改(DS-Replication-Get-Changes-All)属性

检测

通过以上试验发现可疑日志除了数据同步请求事件除外,无其他事件产生。所以windows eventlog筛选语句建议如下:
<QueryList><Query Id='0' Path='Security'><Select Path='Security'>*[System[(EventID='4662') and TimeCreated[timediff(@SystemTime)&lt;=604800000]]] and *[EventData[Data[@Name='ObjectServer']='DS' and Data[@Name='OperationType']='Object Access']]</Select></Query></QueryList>
还需要进一步筛选Properties属性是否包含{1131f6ad-9c07-11d1-f79f-00c04fc2dcd2},因为这是向域控申请数据同步请求的事件,事件出现频率可能比较多,所以还需要对SubjectUserName做筛查,判断它不为系统账户、服务账户或krbtgt
 
vCenter-利用kon-Boot抓取HashMimikatz-Hash传递攻击检测