域渗透——绕过LSA保护机制总结

本文详细探讨了如何在后渗透中绕过LSASS进程的保护机制,包括删除注册表项、修改内核结构、驱动程序绕过以及非驱动式方法。涉及PPL保护机制、Mimikatz工具的使用、PPLKiller驱动程序和实用的攻击技巧。
摘要由CSDN通过智能技术生成

lsass

最简单的理解:lsass.exe是系统进程,用以当地安全验证网络服务器,她为winlogon服务的用户认证转化成一个进程。假如身份认证取得成功,Lsass将转化成用户的浏览动态口令,用以启动原始机壳程序。该用户启动的别的进程将承继这一动态口令(lsass.exe文件一般坐落于C:\Windows\System32文件目录。假如在其他地区存在lsass.exe,那么它可能是个马子)

我们在后渗透中,用mimikizi抓取的凭据,就是与 LSASS 进程(取决于所做的操作的要求)进行交互获得的。

Protected Process Light(PPL进程保护)

微软系统进程保护机制
防止非管理员非PPL进程通过打开进程之类的函数串改PPL进程的代码和数据。
PPL是 PP 的扩展,增加了Protection level的概念。
简单来说,就是在ppl的机制下,未经合法签名的程序不能对ppl保护的进程进行任意访问,只有非常受限的权限。
优先级区别:PP 可以以完全访问权限打开 PP 或 PPL,只要其签名者级别大于或等于;一个 PPL 可以打开另一个具有完全访问权限的 PPL,只要其签名者级别大于或等于;无论签名者级别如何,PPL 都无法以完全访问权限打开 PP。

如何启用 LSA 保护 (RunAsPPL)

如果您想在企业环境中启用它,则应按照 Microsoft 提供的程序并创建一个组策略:配置附加 LSA 保护。但是,如果您只想在单台机器上手动启用它,您只需:添加DWORD值RunAsPPL并将其设置为1;
重启:

在这里插入图片描述

绕过LSA保护

绕过LSA保护:
1.删除RunAsPPL注册表项并重新启动(这可能是最糟糕的方法,因为您将丢失内存中的所有凭据)
2.通过修改EPROCESS内核结构,在LSASS进程上禁用PPL标志
3.直接读取LSASS过程存储器的内容,而不使用打开的过程函数

mimikatz本身绕过

mimikatz绕过的原理为上文2,Mimikatz使用数字签名驱动程序来删除内核中 Process对象的保护标志。 自带的mimidrv.sys必须位于当前文件夹中,才能使用命令加载为内核驱动程序服务!+。然后,你可以使用该命令! processprotect取消保护并最终访问 lsass.exe.,如图:
在这里插入图片描述
后两种方法都需要具有读取和写入内核内存的能力。实现此目的最简单的方法是通过加载驱动程序,我们可以创建自己的驱动程序,但微软有内置的产品MSI Afterburner的RTCore64.sys驱动程序。并且它已签名,并允许读写任意内存

EnumDeviceDrivers 函数 可用于泄漏内核基地址。这可用于定位指向系统进程的 EPROCESS 结构的 PsInitialSystemProcess。由于内核将进程存储在链表中,因此可以使用 EPROCESS 结构的 ActiveProcessLinks 成员来迭代链表并找到 LSASS。

在这里插入图片描述
如果我们查看 EPROCESS 结构(参见下面的图 2),我们可以看到我们需要修补的 5 个字段通常都对齐为连续的 4 字节。这让我们可以在单个 4 字节写入中修补 EPROCESS 结构,如下所示:
​WriteMemoryPrimitive(Device, 4, CurrentProcessAddress + SignatureLevelOffset, 0x00);

在这里插入图片描述
​现在 PPL 已经被移除,所有传统的转储 LSASS 方法都可以使用

Python & Katz绕过

如果想访问 LSASS 的内存,要做的第一件事就是调用OpenProcess来获取一个对 Process 对象具有适当权限的句柄。因此,一些反病毒软件可能会阻止这种企图,从而有效地在早期阶段扼杀攻击。我们也许根本不调用 OpenProcess.,但是要是这样我们该如何获得初始句柄呢?答案来自以下。有时,其他进程(例如防病毒软件)已经在其内存空间中打开了 LSASS 进程的句柄。因此,作为具有调试权限的管理员,您可以将此句柄复制到您自己的进程中,然后使用它来访问 LSASS。

事实证明,这种技术还有另一个目的。它也可以用来绕过RunAsPPL,因为一些不受保护的进程可能已经通过另一种方式获得了 LSASS 进程的句柄,例如使用驱动程序。在这种情况下,可以通过以下命令使用pypykatz 。

pypykatz live lsa --method handledup

但是这种方法有点随机。成功的机会很大程度上取决于目标环境

PPLKiller:

PPLKiller是一个内核模式驱动程序,它在所有正在运行的进程上禁用 Protected Process Light 保护。
链接:https://github.com/Mattiwatti/PPLKiller
它在内核遍历进程,将 Protection.level、SignatureLevel 及 SectionSignatureLevel 都更改为 0 。

在这里插入图片描述
在这里插入图片描述

非驱动式绕过

老外写的可以不使用驱动相关的程序,来进行绕过的文章:
https://blog.scrt.ch/2021/04/22/bypassing-lsa-protection-in-userland/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值