[原创]一种劫持 explorer 过启动的想法
发表于:
2021-1-14 22:48
13619
如果熟悉早期的病毒,一定对 lpk.dll 病毒有印象。
系统本身的 lpk.dll 文件位于 C:\WINDOWS\system32\lpk.dll ,而当年lpk.dll 病毒是将自身复制到全盘都是,借助的是dll hijack技术以及绝大多数 exe 文件都会调用 lpk.dll 的条件。
dll hijack(此处不再赘述其原理)的方法现在主要被用于绕过UAC提取,白加黑等操作。然而在整理权限维持方法时,我突然想到,如果对开机自启的应用进行劫持,是否可以达到过启动的目的。
理论存在,实践开始。我的实验目标选定了 explorer ,桌面这个进程开机自启,而且从进程链来看也显得正常。实验步骤也很简单,写入dll,然后等待计算机重启或者直接重启 explorer 进程。关于 dll 的选择,这里我选择的是 TextShaping.dll ,其会被 explorer 调用,且被替换后有很明显的特征(可以看后文图片)。
explorer.exe 位于电脑中的 C:\Windows\ 文件夹中,默认调用的是 C:\Windows\System32\TextShaping.dll 。
使用 Process Monitor 可以明显看到,正常 explorer.exe 的启动过程会试图从自身目录寻找 TextShaping.dll ,也就是 C:\Windows\TextShaping.dll 。
这与我的预期相符,只有向 C:\Windows\TextShaping.dll 这个位置写入一个 dll 即可劫持 explorer 。
我们简单的构造一个 dll ,创建互斥量(因为函数会被多次调用,不加互斥有概率直接卡死),并使用 WinExec 打开 calc 作为测试。
之后写一个写入dll的程序,并附加重启explorer的操作。(dll文件保存在Resources中)
程序需要 Administrator 权限来写入 C:\Windows\ 目录,开了个win10 x64的虚拟机,安装了最新版360卫士和杀毒,并没有对行为提示(倒是两个文件都被报毒查杀了。。。)。然后在 C:\Windows\ 目录确认文件存在。
执行成功的话,直接回到桌面,会看到下图的样子(这也是为什么选择这个dll,我们可以明显的看到桌面上的文件名等文字部分都消失了)。
任务管理器中可以看到 calc 已经被执行了,但是这里不知道因为什么,并没有弹出界面,不过这只是小问题就先不管了。
综合来看,通过这种手法来实现过启动是可行的。当然实际操作还有许多地方要处理,比如文件的免杀,dll 函数的转发,以及其他细节。
应对策略:现有的360其实对类似的操作有着防范,比如 explorer 调用的很多其他 dll 写入该目录是会有提示的。 最简单的解决方式就是向监控列表添加 dll 文件,或者直接监控所有复制到类似敏感目录的操作,并弹窗提示。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2021-1-15 16:08
被qwqdanchun编辑
,原因: 补充