背景
2023年底,闲来没事想起了xjun师傅2021年发的procexp驱动利用帖子时在群里讨论的,通过procexp驱动突破PPL后注入到csrss进程中,再通过csrss来结束那些个安全防护软件。于是在当时就有了如下成果:
这些弄完之后,觉得通过hook csrss中的CsrCreateProcess来达到主动kill 指定进程并不优雅。于是对360的360FsFlt和360Hvm64进行了分析,并从中找到了他的防护缺陷。导致可以用简单的办法结束ZhuDongFangYu.exe和360try.exe等进程。
ObjectCallback的降权突破
在360FsFlt的回调中,存在一个白名单,而这个白名单为360安装目录下的exe,每当运行后都会记录对应的pid。
但是,当你想当然的去启动它的exe以此获得白名单时,你会发现启动的exe不能注入,不能写。所以他仍然还有手段禁止白名单被利用。不要灰心,在这个阶段我们知道了白名单可以不被降权。那么接下来的目的就是想办法获得一个内存修改的权限。
内存修改的康庄大道
在上面的启动白名单的exe获得的句柄权限是最高权限,但并没有操作的空间。显然是对api做了手脚,于是目光转到了晶核上,在360Hvm64中发现了这么个表
从下图可以发现,在调用NtWriteVirtualMemory会有校验
到这里可以确定,通过下图的部分exe中可以对白名单进行读写注入。
123456 | 可以用来创建白名单进程的系统进程\\SystemRoot\\System32\\Lsass.exe\\SystemRoot\\System32\\Svchost.exe\\SystemRoot\\System32\\Services.exe\\SystemRoot\\System32\\Csrss.exe\\SystemRoot\\System32\\Consent.exe |
冲锋前的总结
通过分析,我们得到如下几个点
123 | Obj的降权可以通过白名单绕过白名单进程可以随便创建但不能做其他操作在晶核的防护中允许了部分系统进程可以对白名单进程操作 |
那么我们的利用链就可以是
1234 | 启动并注入晶核中的白名单(Lsass.exe、Svchost.exe、Services.exe、Csrss.exe、Consent.exe)程序,比如svchost。通过svchost去启动并注入360安装目录下的exe,如360ShellPro.exe再通过360ShellPro.exe对ZhuDongFangYu.exe或360try.exe之类的进程进行关闭最后完成冲锋。 |
开冲
根据上面的一顿操作,得到下图的中的一坨