ATT&CK框架_操作系统凭据转储:LSASS内存

admin 2022年12月3日16:11:58评论213 views字数 14825阅读49分25秒阅读模式

0x01基础信息

具体信息 详情
ATT&CK编号 T1003-001
所属战术阶段 凭据访问
操作系统 windows 7 旗舰版 SP1
监测平台 火绒安全、火绒剑、sysmon

0x02技术原理

攻击者可能会尝试访问存储在本地安全机构子系统服务 (LSASS) 进程内存中的凭证材料。用户登录后,系统生成各种凭证材料,存储在LSASS进程内存中。这些凭证材料可以由管理用户或 SYSTEM 获取,并用于使用使用备用身份验证材料 进行横向移动

与内存技术一样,LSASS 进程内存可以从目标主机转储并在本地系统上进行分析。

例如,在目标主机上使用 procdump:

  • procdump -ma lsass.exe lsass_dump

在本地,可以使用以下方式运行 mimikatz:

  • sekurlsa::Minidump lsassdump.dmp
  • sekurlsa::logonPasswords

也可以使用内置的 Windows 工具,例如 comsvcs.dll:

  • rundll32.exe C:WindowsSystem32comsvcs.dll,  MiniDump lsass-PID  lsass.dmp  full

Windows 安全支持提供程序 (SSP) DLL 在系统启动时加载到 LSSAS 进程中。一旦加载到 LSA 中,SSP DLL 就可以访问存储在 Windows 中的加密和明文密码,例如任何登录用户的域密码或智能卡 PIN。SSP 配置存储在两个注册表项中:

HKLMSYSTEMCurrentControlSetControlLsaSecurity Packages

HKLMSYSTEMCurrentControlSetControlLsaOSConfigSecurity Packages。攻击者可能会修改这些注册表项以添加新的 SSP,这些 SSP 将在下次系统启动时或调用 AddSecurityPackage Windows API 函数时加载。

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 复现过程

  • 使用ProcDump转储LSASS.exe内存

lsass.exe(Local Security Authority Subsystem Service )进程空间中,存有着机器的域、本地用户名和密码等重要信息。如果获取本地高权限,用户便可以访问LSASS进程内存,从而可以导出内部数据(password),用于横向移动和权限提升。

lsass.exe 的内存经常被转储用于离线凭据盗窃攻击。这可以通过 Sysinternals ProcDump 来实现。

成功执行后,您应该会看到创建了以下文件 c:windowstemplsass_dump.dmp。

命令 描述 默认值
output_file 结果转储存放的路径 C:WindowsTemplsass_dump.dmp
procdump.exe Procdump 可执行文件的路径 Path To swordheartFolderprocdump.exe

攻击命令

procdump.exe -accepteula -ma lsass.exe lsass_dump.dmp

ATT&CK框架_操作系统凭据转储:LSASS内存

转储了lsass进程,把内存dump出来的dmp文件可以通过本地mimikatz进行解密

ATT&CK框架_操作系统凭据转储:LSASS内存

  • 使用 comsvcs.dll 转储 LSASS.exe 内存

lsass.exe 的内存经常被转储用于离线凭据盗窃攻击。这可以通过内置的 dll 来实现。

成功执行后,您应该会看到创建了以下文件 $env:TEMPlsass-comsvcs.dmp。

攻击命令【使用powershell运行】: rundll32.exe   comsvcs.dll,   MiniDump  lsass-PID   lsass-comsvcs.dmp   full

C:WindowsSystem32rundll32.exe  C:windowsSystem32comsvcs.dll, MiniDump (Get-Process lsass).id  $env:TEMPlsass-comsvcs.dmp full

获取lsass.exe的pid为540

ATT&CK框架_操作系统凭据转储:LSASS内存

MiniDump需要首字母大写,comsvcs.dll可以单独从system中取出来,因为存在杀软对敏感路径的访问进行拦截的行为,单独取出来火绒不会进行拦截

ATT&CK框架_操作系统凭据转储:LSASS内存

可以从当前目录直接转到powershell界面,在攻击时可以把comsvcs.dll放置到目标主机然后dump内存,与前面一样转储文件取回本地进行解密

ATT&CK框架_操作系统凭据转储:LSASS内存

  • 使用直接系统调用和 API unhooking 转储 LSASS.exe 内存

lsass.exe 的内存经常被转储用于离线凭据盗窃攻击。这可以通过使用直接系统调用和 API 脱钩来避免检测来实现。

成功执行后,您应该会看到创建了以下文件 C:windowstempdumpert.dmp。

dumpert:利用直接系统调用和API脱钩技术来实现AV/EDR软件的逃避

【直接系统调用】

为了理解系统调用到底是什么,我们首先必须深入了解操作系统体系结构,特别是 Windows。

原先在 MS-DOS 背景下,您可能还记得一个简单的应用程序崩溃可能会导致整个系统崩溃。这是由于操作系统在实模式下运行,这意味着处理器在未应用内存隔离和保护的模式下运行。由于严重的系统内存损坏,错误的程序或错误可能导致操作系统完全崩溃,因为对于哪些内存区域可以访问或不可以访问没有限制。

随着更新的处理器和支持所谓的 保护模式的操作系统,这一切都发生了变化。这种模式引入了许多安全措施,并且可以通过使用虚拟内存和特权级别或环将正在运行的程序彼此隔离来保护系统免于崩溃。在 Windows 系统上,实际使用了其中两个环。应用程序在 用户模式下运行,相当于 ring 3,而内核和设备驱动程序等关键系统组件在 与 ring 0 相对应 的内核模式下运行。

ATT&CK框架_操作系统凭据转储:LSASS内存

使用这些保护环可以确保应用程序是隔离的,并且不能直接访问在 内核模式下运行的关键内存部分和系统资源。当应用程序需要执行特权系统操作时,处理器首先需要切换到 ring 0 以将执行流程切换到 内核模式。这就是 系统调用发挥作用的地方。

让我们在监视 notepad.exe 进程并保存一个简单的文本文件的同时演示这种特权模式切换:

ATT&CK框架_操作系统凭据转储:LSASS内存

ProcessMonitor中的WriteFile调用堆栈

屏幕截图显示了我们保存文件时来自 notepad.exe 进程的程序流(调用堆栈)。我们可以在本地 API NtWriteFile 调用之后看到 Win32 API WriteFile 调用(稍后将详细介绍 API)。

对于将文件保存在磁盘上的程序,操作系统需要访问文件系统和设备驱动程序。这些是特权操作,而不是应用程序本身应该被允许做的事情。直接从应用程序访问设备驱动程序可能会导致非常糟糕的结果。因此,进入内核模式之前的最后一个 API 调用负责将 dip 开关拉入内核态。

系统API调用

CPU 进入 内核态的指令是 syscall指令(至少在 x64 架构上是这样)。我们可以在下面的 WinDBG 截图中看到这一点,它显示了未汇编的 NtWriteFile 指令:

ATT&CK框架_操作系统凭据转储:LSASS内存

在WinDBG中反汇编NtWriteFileAPI调用

来自 ntdll.dll 的 NtWriteFile API 负责在堆栈上设置相关的函数调用参数,然后将 NtWriteFile 调用的系统调用号移到 EAX 寄存器中并执行syscall指令。之后,CPU 将跳转到 内核模式(ring 0)。内核使用调度表 (SSDT) 找到属于系统调用号的正确 API 调用,将参数从用户模式堆栈复制到 内核模式堆栈并执行内核版本的 API 调用。当内核例程完成时,程序流将返回到用户模式几乎相同的方式,但会返回内核 API 调用的返回值。

这个(用户模式)也是许多安全产品(如 AV、EDR 和沙箱软件)放置钩子的地方,因此它们可以绕过执行流进入它们的引擎以监视和拦截 API 调用并阻止任何可疑的东西。正如您在 NtWriteFile 指令的反汇编视图中看到的那样,您可能已经注意到它只使用了一些汇编指令,其中系统调用号系统调用指令本身是最重要的。在执行直接系统调用之前唯一重要的事情是使用预期参数正确设置堆栈并使用正确的调用约定。

所以我们可以尝试直接执行系统调用并绕过Windows和本机API,这样我们也可以绕过任何可能存在的用户模式挂钩;这也是我们正在执行的操作。

Windows编程接口

在下面的屏幕截图中,我们看到了 Windows 操作系统架构的高级概述:

ATT&CK框架_操作系统凭据转储:LSASS内存

对于与底层操作系统交互的用户模式应用程序,它使用应用程序编程接口 (API)。如果您是编写 C/C++ 应用程序的 Windows 开发人员,您通常会使用 Win32 API。这是微软文档化的编程接口,它由几个 Win32 子系统 DLL组成。

在 Win32 API 之下是 Native API (ntdll.dll),它实际上是 用户模式应用程序和底层操作系统之间的真正接口。这是最重要的编程接口,但是这个编程接口并没有被公开。

微软之所以在 Native API 之上放置另一层,是因为真正的核心用途作用在这个 Native API 层中,因为它是用户模式和内核之间的最底层。Microsoft 可能决定使用一个额外的层来屏蔽记录的 API,这样他们就可以在不影响 Win32 编程接口的情况下更改操作系统架构。

所以现在我们对系统调用和 Windows 编程 API有了更多的了解 ,让我们看看我们如何真正跳过编程 API 并使用它们的系统调用号直接调用 API 或恢复潜在的挂钩 API 调用。

直接系统调用和API脱钩技术

编写仅使用直接系统调用并完全避开用户模式 API 调用的高级恶意软件实际上是不可能的,或者至少是极其繁琐的。有时您只想在恶意代码中使用 API 调用。但是,如果在调用堆栈的某处存在 AV/EDR 的用户模式挂钩怎么办?让我们看看如何使用直接系统调用来删除钩子。

AV/EDR 的基本用户模式 API 挂钩通常是通过使用跳转 (JMP) 指令修改 API 调用的前 5 个字节到指向安全软件的另一个内存地址来创建的。

在我们创建的 PoC 代码中,我们基本上使用相同的 unhooking 技术,通过使用原始汇编指令恢复前 5 个字节,包括系统调用号。唯一的区别是,我们用来解除 API 挂钩的 API 调用是直接系统调用函数。

概念验证阶段

在我们的操作中,我们有时需要 Mimikatz 来访问目标系统上的凭证、哈希和 Kerberos 票证。如今,端点检测软件和威胁搜寻工具在检测和预防 Mimikatz 方面非常出色。因此,如果您正在进行评估并且您的场景需要尽可能地保持低调,那么在端点上使用 Mimikatz 并不是最佳实践(即使是在内存中)。此外,使用 procdump 等工具转储 LSASS 内存通常会被现代 AV/EDR 使用 API 挂钩捕获。

因此,我们需要一种替代方法来访问 LSASS 内存,一种选择是在取消挂钩相关 API 函数后创建 LSASS 进程的内存转储。

作为概念验证,outflank创建了一个名为“ Dumpert ”的 LSASS 内存转储工具。该工具结合了直接系统调用和 API 脱钩,并允许您创建 LSASS 小型转储。这可能有助于绕过现代 AV 和 EDR 产品的防御。

ATT&CK框架_操作系统凭据转储:LSASS内存

ATT&CK框架_操作系统凭据转储:LSASS内存

执行outflank-dumpert.exe,通过系统直接调用和API脱钩技术,dump进程lsass的内存,火绒没有进行拦截,提取dumpert.dmp文件,本地解密读取密码

Sekurlsa::minidump dumpert.dmp
Sekurlsa::logonPasswords full

ATT&CK框架_操作系统凭据转储:LSASS内存

使用相同的直接系统调用和脱钩技术创建了“dumpert”工具的 DLL 版本;这个 DLL 可以使用以下命令行独立运行:

 rundll32.exe   C:DumpertDumpert.dll,Dump

ATT&CK框架_操作系统凭据转储:LSASS内存

通过cmd进行dump内存会出现一个丢失条目的报错信息,但是内存转储文件也确实生成了,通过powershell进行dump的话,则不会出现报错

ATT&CK框架_操作系统凭据转储:LSASS内存

可以在本地Mimikatz中使用minidump文件来提取凭证信息,而无需在目标系统上运行Mimikatz

ATT&CK框架_操作系统凭据转储:LSASS内存

Shellcode 反射 DLL 注入

反射 DLL 注入是一种库注入技术,其中采用反射编程的概念来执行将库从内存加载到主机进程中。因此,该库负责通过实现最小的可移植可执行 (PE) 文件加载器来加载自身。然后,它可以通过与主机系统和进程的最少交互来管理它将如何加载和与主机交互。

将库远程注入进程的过程有两个。首先,您要注入的库必须写入目标进程(以下简称宿主进程)的地址空间。其次,库必须以满足库的运行时预期的方式加载到该主机进程中,例如解析其导入或将其重新定位到内存中的合适位置。

这个dll文件是要落地到目标服务器磁盘上被加载执行的,将可执行文件放在目标上可能是您在对抗中想要避免的事情,我们可以把它转换为 sRDI shellcode。

使用 Visual Studio 编译 DLL 版本并将其转换为与位置无关的 shellcode。这可以使用 sRDI 项目中的 ConvertToShellcode.py脚本来完成。

python3   ConvertToShellcode.py   Dumpert.dll

ATT&CK框架_操作系统凭据转储:LSASS内存

要将 shellcode 注入远程目标,我们可以使用 Cobalt Strike 的 shinject命令,语法如下

shinject:使用shinject [pid] [架构] [/路径/…/file.bin]命令来从一个本地文件中注入 shellcode 到一个目标上的进程中。

ATT&CK框架_操作系统凭据转储:LSASS内存

正常来说,这shellcode是注入成功的,但是并没有成功转储lsass进程的内存,尝试注入多个进程后,发现成功了一次,怀疑跟进程活跃程度存在关系

ATT&CK框架_操作系统凭据转储:LSASS内存

ATT&CK框架_操作系统凭据转储:LSASS内存

shellcode注入dwm进程也是成功的,可能跟虚拟机性能也有关系,转储lsass的内存是需要一定时间的,大概在2-3分钟左右

ATT&CK框架_操作系统凭据转储:LSASS内存

ATT&CK框架_操作系统凭据转储:LSASS内存

为了提升在对抗中的效率,通过cobalt strike 脚本自动执行上传的步骤,并且把转储lsass的dmp文件自动下载,在beacon菜单中启用“dumpert”命令来完成攻击

ATT&CK框架_操作系统凭据转储:LSASS内存

  • 使用NanoDump转储LSASS.exe内存

一个灵活的工具,可以创建 LSASS 进程的小型转储。NanoDump可以有多种方式去转储lsass的内存信息,基本的原理都是为避免使用打开 LSASS 句柄,消除了直接读取LSASS的必要。

这其中利用了直接系统调用和无效的转储签名来避免检测,特点如下:

1.进程分叉

为避免使用打开 LSASS 句柄PROCESS_VM_READ,您可以使用--fork参数。这将使 nanodump 创建一个具有PROCESS_CREATE_PROCESS访问权限的 LSASS 句柄,然后创建该进程的“克隆”。然后将转储此新进程。

2.进程快照

--fork与该选项类似,您可以使用它--snapshot来创建 LSASS 进程的快照。同样创建一个具有PROCESS_CREATE_PROCESS访问权限的 LSASS 句柄,然后使用PssNtCaptureSnapshot. 然后将转储此新进程。快照将在完成后自动释放。

3.句柄复制

nanodump 可以搜索现有的 LSASS 句柄,将复制它并使用它来创建小型转储。但是不一定保证能找到这个句柄。

攻击命令

成功执行后,会在临时目录生成nanondump.dmp文件

nanodump.exe  --fork  -w  nanondump.dmp

ATT&CK框架_操作系统凭据转储:LSASS内存

0x05 检测方法

1.日志特征

Process Create:
RuleName: -
UtcTime: 2022-11-17 08:05:35.307
ProcessGuid: {366efb63-0000-0000-883b-0f0000000000}
ProcessId: 2540
Image: C:UsersAdministratorDesktopProcdumpprocdump.exe
FileVersion: 10.11
Description: Sysinternals process dump utility
Product: ProcDump
Company: Sysinternals - www.sysinternals.com
OriginalFileName: procdump
CommandLine: procdump.exe -accepteula -ma lsass.exe lsass_dump.dmp
CurrentDirectory: C:UsersAdministratorDesktopProcdump
User: SWORDHEARTAdministrator
LogonGuid: {366efb63-0000-0000-fe19-0b0000000000}
LogonId: 0xb19fe
TerminalSessionId: 1
IntegrityLevel: High
Hashes: MD5=170637B901DC67CDA3D905A714096A7F,SHA256=8AE63DDACE21276FA6CB4B2613468E5730FC550A1374543372972E52DC232EC6,IMPHASH=FEE86DD9A394A7E4F66D19098C721A00
ParentProcessGuid: {366efb63-0000-0000-ad13-0f0000000000}
ParentProcessId: 2532
ParentImage: C:WindowsSystem32cmd.exe
ParentCommandLine: "C:WindowsSystem32cmd.exe"
ParentUser: SWORDHEARTAdministrator

ATT&CK框架_操作系统凭据转储:LSASS内存

Process Create:
RuleName: -
UtcTime: 2022-11-18 07:06:17.821
ProcessGuid: {366efb63-0000-0000-8158-280000000000}
ProcessId: 1480
Image: C:WindowsSystem32rundll32.exe
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
Description: Windows host process (Rundll32)
Product: Microsoft® Windows® Operating System
Company: Microsoft Corporation
OriginalFileName: RUNDLL32.EXE
CommandLine: "C:Windowssystem32rundll32.exe" comsvcs.dll MiniDump 540 lsass_comsvcs.dmp full
CurrentDirectory: C:UsersAdministratordesktopcomsvcs
User: SWORDHEARTAdministrator
LogonGuid: {366efb63-0000-0000-abe7-140000000000}
LogonId: 0x14e7ab
TerminalSessionId: 1
IntegrityLevel: High
Hashes: MD5=DD81D91FF3B0763C392422865C9AC12E,SHA256=F5691B8F200E3196E6808E932630E862F8F26F31CD949981373F23C9D87DB8B9,IMPHASH=F8F47A970BADB255F8249475E7FBEABB
ParentProcessGuid: {366efb63-0000-0000-93aa-240000000000}
ParentProcessId: 1936
ParentImage: C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
ParentCommandLine: "C:WINDOWSsystem32WindowsPowerShellv1.0powershell.exe"
ParentUser: SWORDHEARTAdministrator

ATT&CK框架_操作系统凭据转储:LSASS内存

Process Create:
RuleName: -
UtcTime: 2022-11-22 06:39:49.731
ProcessGuid: {366efb63-0000-0000-0f5e-cc0000000000}
ProcessId: 4212
Image: C:UsersAdministratorDesktopDumpertOutflank-Dumpert.exe
FileVersion: -
Description: -
Product: -
Company: -
OriginalFileName: -
CommandLine: Outflank-Dumpert.exe
CurrentDirectory: C:UsersAdministratorDesktopDumpert
User: SWORDHEARTAdministrator
LogonGuid: {366efb63-0000-0000-abe7-140000000000}
LogonId: 0x14e7ab
TerminalSessionId: 1
IntegrityLevel: High
Hashes: MD5=B9830CD0E05A9335330D688B4A112C21,SHA256=D213DDA0CA0F84AF7F364B154C629B0522EABA816AF1AF9E9C26EFAF67C33E2E,IMPHASH=03866661686829D806989E2FC5A72606
ParentProcessGuid: {366efb63-0000-0000-2608-cc0000000000}
ParentProcessId: 4412
ParentImage: C:WindowsSystem32cmd.exe
ParentCommandLine: "C:WindowsSystem32cmd.exe"
ParentUser: SWORDHEARTAdministrator

ATT&CK框架_操作系统凭据转储:LSASS内存

Process Create:
RuleName: -
UtcTime: 2022-11-22 08:04:53.042
ProcessGuid: {366efb63-0000-0000-10e3-e80000000000}
ProcessId: 1016
Image: C:WindowsSystem32rundll32.exe
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
Description: Windows host process (Rundll32)
Product: Microsoft® Windows® Operating System
Company: Microsoft Corporation
OriginalFileName: RUNDLL32.EXE
CommandLine: "C:Windowssystem32rundll32.exe" Dumpert.dll Dump
CurrentDirectory: C:UsersAdministratorDesktopDumpert
User: SWORDHEARTAdministrator
LogonGuid: {366efb63-0000-0000-abe7-140000000000}
LogonId: 0x14e7ab
TerminalSessionId: 1
IntegrityLevel: High
Hashes: MD5=DD81D91FF3B0763C392422865C9AC12E,SHA256=F5691B8F200E3196E6808E932630E862F8F26F31CD949981373F23C9D87DB8B9,IMPHASH=F8F47A970BADB255F8249475E7FBEABB
ParentProcessGuid: {366efb63-0000-0000-c348-e80000000000}
ParentProcessId: 2804
ParentImage: C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
ParentCommandLine: powershell
ParentUser: SWORDHEARTAdministrator

ATT&CK框架_操作系统凭据转储:LSASS内存

Process Create:
RuleName: -
UtcTime: 2022-11-23 07:10:32.550
ProcessGuid: {366efb63-0000-0000-1fad-980000000000}
ProcessId: 3376
Image: C:UsersAdministratorDesktopnanondumpnanodump.x64.exe
FileVersion: -
Description: -
Product: -
Company: -
OriginalFileName: -
CommandLine: "C:UsersAdministratorDesktopnanondumpnanodump.x64.exe" --fork -w nanodump.dmp
CurrentDirectory: C:UsersAdministratorDesktopnanondump
User: SWORDHEARTAdministrator
LogonGuid: {366efb63-0000-0000-9cbf-0a0000000000}
LogonId: 0xabf9c
TerminalSessionId: 1
IntegrityLevel: High
Hashes: MD5=CE09204ACA5320CC193FC07370AA88BE,SHA256=7E2263A270A0D3463EE3E7A250D46E693976FB7AA02E2E0741BE4EF050438177,IMPHASH=57FB6F1CA964343559C8B01A48E3D8CE
ParentProcessGuid: {366efb63-0000-0000-5503-940000000000}
ParentProcessId: 3192
ParentImage: C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
ParentCommandLine: powershell
ParentUser: SWORDHEARTAdministrator

ATT&CK框架_操作系统凭据转储:LSASS内存

2.攻击特征

基本上不会出现告警,只有使用NanoDump进行转储,火绒出现告警,其他的方式目前都没有出现告警

ATT&CK框架_操作系统凭据转储:LSASS内存

0x06 处置方法与规则编写

1.处置方法

通过限制prodump调用系统的注册表,限制调用系统的dll文件来限制转储lsass进程的内存

ATT&CK框架_操作系统凭据转储:LSASS内存

但是添加了14条自定义规则,发现火绒还是没有起到拦截的效果

ATT&CK框架_操作系统凭据转储:LSASS内存

2.火绒监测规则编写

{
  "ver":"5.0",
  "tag":"hipsuser",
  "data":[
      {
          "id":2,
          "power":1,
          "name":"T1003-001操作系统凭据转储防护",
          "procname":"*procdump*",
          "treatment":1,
          "policies":[
              {
                  "montype":2,
                  "action_type":15,
                  "res_path":"HKEY_USERS\S-1-5-21-1789165401-4187849794-3313424159-500\Software\Sysinternals\ProcDump\*"
              },
              {
                  "montype":2,
                  "action_type":15,
                  "res_path":"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*"
              },
              {
                  "montype":2,
                  "action_type":15,
                  "res_path":"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CustomLocale\*"
              },
              {
                  "montype":2,
                  "action_type":15,
                  "res_path":"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\ExtendedLocale\*"
              },
              {
                  "montype":2,
                  "action_type":15,
                  "res_path":"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Sorting\Versions\*"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\System32\wow64.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\System32\wow64cpu.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\System32\wow64win.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\SysWOW64\version.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\SysWOW64\sechost.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\SysWOW64\imm32.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\SysWOW64\pdh.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\SysWOW64\dbghelp.dll"
              },
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\SysWOW64\apphelp.dll"
              }
          ]
      }
  ]
}

3.处置方法

限制通过powershell和cmd调用的rundll32.exe加载dll执行

ATT&CK框架_操作系统凭据转储:LSASS内存

配置好防护策略之后,能够触发防护策略,并且能够限制通过dll加载方式进行lsass内存转储

ATT&CK框架_操作系统凭据转储:LSASS内存

4.火绒监测规则编写

{
  "ver":"5.0",
  "tag":"hipsuser",
  "data":[
      {
          "id":3,
          "power":1,
          "name":"T1003-001-操作系统转储内存防护",
          "procname":"C:\Windows\System32\cmd.exe",
          "treatment":1,
          "policies":[
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\system32\rundll32.exe"
              }
          ]
      }
  ]
}
{
  "ver":"5.0",
  "tag":"hipsuser",
  "data":[
      {
          "id":4,
          "power":1,
          "name":"T1003-001-操作系统转储内存凭证",
          "procname":"C:\Windows\System32\cmd.exe",
          "treatment":1,
          "policies":[
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\system32\rundll32.exe"
              }
          ]
      }
  ]
}

5.处置方法:使用系统直接调用和API脱钩技术转储内存,目前火绒没有什么很好的方式进行拦截,dll文件可以通过禁止调用rundll32.exe的方式限制执行

ATT&CK框架_操作系统凭据转储:LSASS内存

ATT&CK框架_操作系统凭据转储:LSASS内存

6.火绒监测规则编写

{
  "ver":"5.0",
  "tag":"hipsuser",
  "data":[
      {
          "id":5,
          "power":1,
          "name":"T1003-001-操作系统内存转储防护1",
          "procname":"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe",
          "treatment":1,
          "policies":[
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\system32\rundll32.exe"
              }
          ]
      },
      {
          "id":6,
          "power":1,
          "name":"T1003-001-操作系统内存转储防护2",
          "procname":"C:\Windows\System32\cmd.exe",
          "treatment":1,
          "policies":[
              {
                  "montype":1,
                  "action_type":15,
                  "res_path":"C:\Windows\system32\rundll32.exe"
              }
          ]
      }
  ]
}

0x07 总结

以上几种技术基本上围绕lsass进程转储来进行的,并且在这个过程中涉及到杀软的对抗,随着攻防技术的不断升级,越来越多的恶意软件都使用直接系统调用和API脱钩的技术来逃避杀软的检测。因为检测系统调用的恶意使用比较困难,所以去学习系统直接调用和API脱钩技术是非常有必要的。本次实验基本上能看出,使用了系统调用和API脱钩技术的工具,火绒基本不会出现告警,可以通过这几种方式获取lsass内存转储文件,进而离线窃取登录凭证。




原文始发于微信公众号(闪焰安全服务团队):ATT&CK框架_操作系统凭据转储:LSASS内存

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年12月3日16:11:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ATT&CK框架_操作系统凭据转储:LSASS内存https://cn-sec.com/archives/1442194.html

发表评论

匿名网友 填写信息