提醒:本文最后更新于 304 天前,其中某些信息可能已经过时,请谨慎使用!
你似乎正在查看一篇很久远的文章。
为了你这样的访客,我特地保留了我的历史博文。不要笑话过去的我,用温柔的目光看下去吧。

一种劫持 explorer 过启动的想法

熟悉早期的病毒,一定对 lpk.dll 病毒有印象。

系统本身的 lpk.dll 文件位于 C:\WINDOWS\system32\ ,而当年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 文件,或者直接监控所有复制到类似敏感目录的操作,并弹窗提示。

发表评论

共有 2 条看法

  1. ⑨BIE

    悄悄的说一下,其实劫持msdtc也有同样的效果(,更隐蔽并且写入时杀软不会杀,缺点就是这个服务可能默认不会启动,就算启动了默认权限也会有点低

    1. qwqdanchun@⑨BIE

      思路发散开,很多系统程序都有类似的问题,各种劫持拿来过启动爽的一批