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


    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
    
    • 1

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

    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/

  • 相关阅读:
    Linux系统编程·环境变量
    ssm基于web的网络租房系统毕业设计源码250910
    猿创征文|Linux 管道命令Cut、sort、wc、uniq、tee、tr【一】
    如何使用Idea打开、导入、运行maven项目
    【UR #7 C】水题走四方(DP)
    Flask 学习-36.Flask-RESTful 序列化输出对象
    基于Java实现的免疫算法-克隆选择算法
    生成视频 zeroscope_v2_576w 学习笔记
    读书,找资料,我的 SOP
    日防夜防,家贼难防?企业防泄密为什么这么难?
  • 原文地址:https://blog.csdn.net/qq_45449318/article/details/126187431