cover_image

九维团队-红队(突破)| 如何让杀软变得与世不争

joy.lin 安恒信息安全服务 2023年10月16日 08:27

图片

一、写在前面

图片


相信许多网安人经常会遇到这种情况:每每做一些“敏感操作”时,总会遇到各种各样的安全软件对行为拦截。正巧笔者想起了前两年xjun师傅原创的文章《利用procexp驱动突破PPL限制》,于是本文将结合该内容,分享如何根据该驱动进行二次利用让安全软件彻底安静。

利用procexp驱动突破PPL限制原文链接:https://www.52pojie.cn/thread-1546336-1-1.html

*左右滑动查看更多

二、PPL突破

图片


从Windows8.1/Windows Server 2012 R2引入了PPL(Protected Process Light)安全机制后,对受保护的进程无法进行一些如线程注入、内存读写等恶意操作。根据xjun师傅的文章,通过procexp驱动调用ZwOpenProcess会把PreviousMode设置为KernelMode可以绕过PPL。但安全防护软件都有OBJECT_CALLBACK对受自身保护的进程进行句柄降权。

(Query information, VM read, Synchronize, Read control)

*左右滑动查看更多


图片


所以无法通过驱动直接获得句柄,然后对防护软件进行恶意操作,但可以通过获得csrss这类的系统进程句柄,通过注入到这些可信的进程再对安全防护软件进行恶意操作。

图片


三、构造跳板

图片


绝大部分的安全软件都不会对csrss.exe这个进程(不要有自己创建同名进程、傀儡进程来绕过这个愚蠢的想法)有比较严的防护。通过测试验证可以知道(懒得分析回调函数)通过csrss.exe打开的进程句柄虽然不是FullContorl,但也是拥有较高的权限的。

(0x1f1fff (Query information, Set information, Set quotas, Set session ID, Create threads。。。。)

*左右滑动查看更多

但没有PROCESS_TERMINATE权限。


当csrss拥有对目标进程的CreateThread权限的句柄后,那么就可以通过注入到csrss后,通过线程注入到ZhuDongFangYu.exe以结束进程。

图片

但驱动只提供OpenProcess,没有提供CreateThread的功能,所以如何注入到csrss成为了一个问题(远程线程也会有PPL的限制)。

图片


图片



很庆幸还有获得的csrss句柄PROCESS_VM_OPERATION/VM_READ/VM_WRITE权限,只需要通过Read/WriteProcessMemory对一些函数如NtClose之类的频发函数进行修改,达到hook去执行写入到csrss进程里用来结束ZhuDongFangYu.exe的shellcode。


但这样时机并不是太可控,通过调试发现csrsrv模块里的CsrCreateProcess函数是一个很好的利用点,注入后只需要创建个进程就能执行到shellcode。


四、工具编写

图片


驱动调用的部分就不写了,xjun师傅给的比较齐全,uacpass、利用代码都给到了,大家可自行参考。我们只需要写shellcode和注入那一块即可,编写内容如下图:

图片


五、结果测试

图片


效果展示,打开某杀软进行测试


在win7系统下:

视频加载失败,请刷新页面再试

刷新


在win10系统下:

视频加载失败,请刷新页面再试

刷新


六、缓解措施

图片


建议结合终端和流量日志等进行综合分析,从而弥补终端安全机制被绕过后的威胁检测缺失。当前高版本process explorer的驱动已经修复了这个可以被利用的点,可以通过文件过滤驱动判断procexp是否是加载了可以被利用的版本。或对跟驱动通信的进程做检验,对于不带微软签名的进程禁止访问。




往期回顾

图片

图片

图片

图片

图片

图片


关于安恒信息安全服务团队
安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。

图片

图片

图片

九维技术团队 · 目录
上一篇九维团队-绿队(改进)| Java Spring编码安全系列之日志记录和监控不足下一篇九维团队-蓝队(防御)| 浅析多场景下的溯源反制

微信扫一扫
关注该公众号

继续滑动看下一个
安恒信息安全服务
向上滑动看下一个