分享一种可关闭大多数杀软的技术(对360安全卫士已验证成功)【转】

[更新]360公司针对此文发出回应:

360安全卫士能够防御“模拟用户退出安全软件”的攻击方法,本文的演示应该是在64位系统关闭了360“核晶引擎”的情况下进行的。

由于64位系统的限制,安全软件需要应用CPU硬件虚拟化技术才能具备完整的防护能力,否则任何安全软件都可以被轻易关闭。核晶引擎是360在国内首家针对64位系统推出的CPU硬件虚拟化防护引擎,在开启了64位系统默认打开的“核晶引擎”后,360能够防御本文描述的攻击方法,读者可以自行验证。


声明:本文由expsky@MS509Team原创,仅用于技术交流分享,禁止将相关技术应用到不当途径。 

木马与杀软的对抗从未停止,这样的对抗客观上也促进了安全技术的进步与发展。病毒、木马除了本身的功能以外,最重要一部分就是与杀软的对抗,这也是技术难点所在。试想一下如果在一台没装杀软的电脑上,病毒木马不需要什么注入、白加黑、rootkit技术来隐藏进程,不需要用什么高深未公开的方式来实现自启动,不需要精心构造隐秘通道实现C&C通信,不需要加密混淆来躲避静态查杀,也不用担心调用了跨进程内存读写或者注册表敏感位置读写、磁盘扇区读写、驱动加载等被杀软主防列为的危险API…….只需一个十多年前的简单木马就可以为所欲为。

关闭杀软,是病毒木马追求的最理想状态,但能做到这点只有极少数的特种木马或rootkit型木马能办到,绝大部分木马也只是通过各种技术手段来绕过杀软的部分功能,少有听说能关掉杀软的木马。

真有能关掉杀软的技术手段吗?

0×01 原理思路

我们尝试用模拟真实用户的操作,来关闭杀软。这里用360安全卫士目前最新版作为实验对象。是否能成功,我们一起往下看。

(声明:本人并不刻意针对360,而正是认可360在国内安全行业具有的代表性,并且该技术思路可以适用于其余绝大部分杀软)

要模拟真实用户关闭360安全卫士的流程如下:

1)鼠标右键点击桌面右下角360卫士的系统托盘图标

2)在弹出的托盘菜单中点击【退出】按钮

1.jpg

3)在弹出的360卫士退出窗口中点击【继续退出】按钮

2.jpg

完成以上步骤后360安全卫士就会被关闭。

接下来就是如何用程序自动模拟完成这些动作。

0×02 技术实现

点击相关窗口的按钮是通过对应的窗口类名得到相应的窗口句柄,然后实现点击。

通过“彗星小助手”的窗口SPY功能可以找出需要的窗口类名,而通过窗口类名找出窗口句柄是常规windows编程的知识,本文就不再累述

3.jpg

这里需要注意的是,系统360卫士托盘图标可能直接显示在桌面右下角的系统托盘上,也可能在隐藏的系统托盘区域。两种情况都需要考虑到

系统托盘的窗口类

4.jpg

Shell_TrayWnd   >>   TrayNotifyWnd   >>   ToolbarWindow32 通过这样的窗口关系找出系统托盘

5.jpg

而隐藏区域的系统托盘窗口类名是NotifyIconOverflowWindow

6.jpg

360卫士托盘菜单窗口类名:Q360TrayMenuClass

360卫士退出窗口类名:Q360HIPSClass

到此就可以定位到所有需要的窗口,我们还需要定位到窗口上的两个【退出】按钮

7.jpg8.jpg

这里需要注意的是,按钮实际上也是一个子窗口,普通的windows按钮通过彗星小助手可以直接定位识别,但现在很多软件包括这里的360卫士,按钮都是自绘出来的,不是传统的按钮控件,不能直接识别。不过也有办法,因为【退出】按钮相对于父窗口的位置是固定,通过父窗口的位置与【退出】按钮的相对位置就可以分别定位到两个需要点击的【退出】按钮,模拟鼠标点击就可以自动关闭360安全卫士

定位360卫士托盘菜单的【退出】按钮位置:7.jpg

x坐标 = 托盘菜单的x坐标 + 托盘菜单的宽度(260)- 20

y坐标 = 托盘菜单的y坐标 + 托盘菜单的高度(560)- 10

说明:-20和-10 即为【退出】按钮相对窗口右下角的位置

定位360卫士退出窗口上的【继续退出】按钮位置:8.jpg

x坐标 = 360退出窗口x坐标 + 360退出窗口的宽度(600)- 120

y坐标 = 360退出窗口y坐标 + 360退出窗口的高度(400)- 40

说明:-120和-40 即为【继续退出】按钮相对窗口右下角的位置

0×03 真实演示

“空谈误国,实干兴邦”,理论讲得再好,实现不了还是等于零。所以按照上面的技术思路我实现了一个演示工具,成功关闭了360卫士。大概1秒钟左右360安全卫士就被关闭了。录制了一张gif动图展示了整个过程

demo.gif

从上面的动图可以看出,关闭过程中会有窗口闪动。因为实现原理本来就是模拟用户的实际操作,所以用户真实关闭360卫士会出现的窗口这里都会出现。

有人可能会质疑这样不是就被用户发现了吗,其实这已经不重要了,木马已经在没有防护的环境下植入用户电脑,相关恶意代码已经成功执行。

0×04 结尾

如何防御这种攻击手段,通常的做法是在关闭安全软件的时候要求输入验证码,确保是人的真实操作,但验证码这种方式会影响用户使用体验,也不是最佳的方案。要想找到一个特别理想的方案不是太容易,做安全很多时候都是不得不去牺牲一些其他代价

由于本演示程序具有危害,所以这里就不提供源码了,但本文已经把这个原理以及相关的窗口类名称等重要信息说的很清楚,熟悉windows编程的话很容易自己就可以实现。唯一还有一个小点需要注意的是在系统托盘里如何定位到360卫士图标的位置,我是通过图像识别的方法来实现的,也许还有其他更好的办法。

本文的目的不是宣扬去攻击安全软件,而是想说明攻防的博弈永远没有尽头,而攻击者对安全技术研究的深度、广度、还有脑洞的大小,都会使得各种新型攻击方式出现,安全从业人员不能放松警惕。

此条目发表在免杀技术, 未分类分类目录。将固定链接加入收藏夹。