windows PP&&PPL概念简析
2021-11-01 19:30:00 Author: mp.weixin.qq.com(查看原文) 阅读量:43 收藏

最近有点忙,所以文章写的不多,并且打算从底层去研究以前内网碰到的问题,有时候也是困难重重,所以更新可能没有java快了。说一下接下来的方向吧。(1)java可能会复现,或者自己写一点工具项目碰到了用(2)会抽空把钓鱼,免杀的方法整理一点(3)主攻windows,对一些机制,api进行系统学习,从底层走,底层看原理,至少达到能写工具的水平。(有同学要学这个的)建议稍微看一点汇编,VS2019可以汇编和C++一起学,我是这么来的。供日常使用就好。

参考链接

https://itm4n.github.io/lsass-runasppl/https://www.crowdstrike.com/blog/evolution-protected-processes-part-1-pass-hash-mitigations-windows-81/

lsass.exe流程分析

在windows中,本地用户账户使用ntml的算法散列存放在sam数据库中。该数据库是一个注册表配置

单元文件。lsass.exe进程使用了两种方法来管理这些密码数据。

(1)基于文件

也就是我们通用的利用卷影拷贝的方式离线或者在线访问,并从中提取出hash值。(lsass可能会缓

存混淆一部分数据)

(2)基于进程

也就是我们重用的通过dump lsass.exe进程(其实也就是通过注入代码到lsass.exe中,利用一些查

询的api对密码信息进行访问。由于可逆的堆成加密算法导致了lsass.exe加密狗的数据可以恢复为

明文,也就是明文dump密码)

这里会引入一个进程保护概念,在 Windows 8.1 RT 中,lsass.exe是一个PPL保护进程。利用之前直

接使用mimikatz进行注入恶意代码然后读取数据制造了障碍。

Protected Process Light(PPL进程保护)

微软系统进程保护机制
防止非管理员非PPL进程通过打开进程之类的函数串改PPL进程的代码和数据。

一个可执行文件必须要有签名才行。受保护的进程再未保护过程中只有有限的特权可以访问。PPL是

PP的扩展,增加了Protection level的概念。其实简单来说,就是在ppl的机制下,未经合法签名的

程序不能对ppl保护的进程进行任意访问,只有非常受限的权限。

优先级区别

PP 可以以完全访问权限打开 PP 或 PPL,只要其签名者级别大于或等于;
一个 PPL 可以打开另一个具有完全访问权限的 PPL,只要其签名者级别大于或等于;
无论签名者级别如何,PPL 都无法以完全访问权限打开 PP。
RunAsPPL是对工具的有效保护。入下图,使用mimikatz的时候访问被拒绝。防止普通程序访问受保护的程序。当需要启动的时候,利用注册表键HKLM\SYSTEM\CurrentControlSet\Control\Lsa\DWORDd的RunAsPPL设置为1进行启动。比较贴合实际的就是有时候mimikatz报错问题。如下图


绕过方式

(1)mimikatz本身绕过

Mimikatz使用数字签名驱动程序来删除内核中 Process 对象的保护标志。该文件mimidrv.sys必须位于当前文件夹中,才能使用命令加载为内核驱动程序服务!+。然后,你可以使用该命令!processprotect取消保护并最终访问lsass.exe.
抓取
mimikatz # !+
mimikatz # !processprotect /process:lsass.exe /remove
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
恢复
mimikatz # !processprotect /process:lsass.exe
mimikatz # !-
!!恢复以后不是恢复原来的级别

(2)自带驱动程序

生成一个合法的签名;

(3)Python & Katz

原理就是利用反病毒软件可能已经打开了lsass的句柄,然后利用这个句柄去利用,而不是直接

OpenProcesslsass进程。

工具地址:python版本的mimikatz
https://github.com/skelsec/pypykatz

抓密码保护措施

(1)修改注册表键,2012以后默认不可抓明文密码
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
(2)RunAsPPL 注册表键设置进程保护
(3)设置HKEY_LOCAL_MACHINE\SECURITY\Cache放置凭借缓存
(4)禁用管理员的SeDebugPrivilege权限

PP进程保护

典型的进程不能对受保护的进程执行如下操作:

· 将线程注入受保护的进程

· 访问受保护进程的虚拟内存

· 调试一个活动的受保护进程

· 从受保护的进程中复制句柄

. 更改受保护进程的配额或工作集

典型的进程不能对受保护进程的线程执行以下操作,例如:

· 设置或检索上下文信息

· 模拟线程
PP保护就是说一个二进制程序,要么被保护,要么不被保护。层次分明。


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652882394&idx=2&sn=98a15e4d31dcceecafb58737f6907d1e&chksm=bd59b9178a2e3001988706b44fe1c5a7ba1defd9280289dfe4dcf21c0578594cffdce563e3c0#rd
如有侵权请联系:admin#unsafe.sh