看的是museHero写的文档,
源文档的链接:https://pan.baidu.com/s/1WMFii2xtVgcS4_eUaBxZbw
提取码:e0w4
3 3 、 触发式启动的程序
触发式启动程序是指需要用户进行某一操作来触发而启动的程序。触发式启动程序分类:
(1)最常见的就是文件关联式的触发启动 。
比如说修改 exe 文件关联的木马,每当你运行 exe 文件时都将触发木马程序的执行,同样的,如果修改了 gif 文件关联,那么每当你打开 gif 文件时,就会触发木马程序的执行。以 gif 文件为例,在“注册编辑器”中2, HKEY_CLASSES_ROOT 键下存储的正是文件关联,信息。各子键大都是以“.”开始的后面跟三个字母,跟文件的扩展名比较为像。Explorer.exe、Regedit.exe……后面的扩展名说明了文件的类型,.exe 是 Windows 可执行文件。A.gif、B.gif……后面的扩展名 GIF 说明了文件是 GIF 图片
如何查看哪一类型的文件是由哪个程序来打开的:
在“注册表编辑器”中找到.gif 键,其“默认”值是“giffile”。然后,我们再在 HKEY_CLASSES_ROOT 键下找到“giffile”子键,在 giffile 下的 shell\open\command 键的默认值,标明了当你双击 gif 文件时,系统所要做的动作,这里的数据是“rundll32.exeC:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen%1”,也就是说当你打开 GIF 图片时,系统会执行上面的命令,解释如下:运行 rundll32.exe 来调用
C:\WINDOWS\system32\shimgvw.dll 这个动态库,而参数就是 ImageView_Fullscreen,后面的%1 在执行中会用你双击的图片名字替换掉。结果就是打开了图片浏览器来浏览这个图片,我们下面修改一下这个值,改成:"D:\Adobe\PhotoshopCS\Photoshop.exe""%1"那么再次双击 GIF 图片文件时,执行的结果就是运行Photoshop.exe 来编辑这个图片了,而不是再用图片浏览器浏览。(可以改成任何一个程序)如果木马把这个值改成了“C:\木马.exe%1”那么,一旦你双击 GIF 图片文件想浏览一下图片时,系统就会很忠实的依照注册表中的这个值,启动“C:\木马.exe”,从而将木马触发启动,而木马也会在自己启动后,再度调用原有的程序将图片打开,这样,对你来说,是没有任何感觉的,你只知道双击一个图片后,图片打开了,而不会知道发生在这中间的一切。当前常见的木马对文件关联的修改都是以 exe、com、txt 等常见类型居多,而大多数安全软件也都对这几个常见的关联项进行了检查,但是系统中可供修改的文件关联简直太多了。Rar 文件,常见的压缩格式文件,从网上下载的文件有很多是以这种格式压缩的,修改了它,一旦你打开下载的压缩包时就将启动木马。BMP、GIF、JPEG 等图片文件、AVI、RM 等电影文件,修改任何一个,都将有很大机会被触发。
狙剑提供了对所有文件关联进行检查的功能,打开狙剑,在基本功能中选择“注册项扫描”,就可以对所有的文件关联及 COM 注册项等进行扫描。查找规则是列出所有非系统程序的文件关联,也就是说如果某一类型的文件并不是由系统程序打开的,那么就会被列出。虽然已经隐藏了上千个系统文件的文件关联,但剩下的仍然会有很多。可是并不难判断,一个程序通常对应着很多种类型的文件,检查文件关联也许会有意外的收获。
如果一个文件关联被木马修改了,我们如何改回正常:可以通过修改注册表来实现文件关联的修改。也可以自己选择打开方式。
(2)自动播放式的触发启动。
自动播放本是用于光盘的,当插入一个电影光盘到光驱时,系统会自动播放里面的内容,这就是自动播放的本意,播放什么是由光盘中的 AutoRun.inf 文件指定的。此文件的内容,通常如下:
———————————
[autorun]
open=AutoRun.exe
icon=AutoRun.ico
———————————
Open 那一行,指出了自动播放时系统自动运行的程序,icon 指出了所显示的图标。后来有人用于了硬盘与 U 盘,在 U 盘或硬盘的分区,创建 Autorun.inf 文件,并在 Open 中指定木马程序,这样,当你打开硬盘分区或 U 盘时,就会触发木马程序的运行。这类启动,大部分安全工具都进行了监管,在狙剑的自启动项中会列出每个磁盘或分区的自动播放式的自启动程序。
(3) 感染式的触发启动
这就涉及到病毒了,电脑病毒通过感染正常的程序来实现自己的传播与启动。计算机病毒其实也是一段程序,只是其完成的是特殊的工作。通常情况下,病毒程序的工作流是这样的“查找其它符合感染条件的程序 -- 判断是否已经感染 -- 如果是则查找下一个,如果不是则修改其工作流程进行感染 -- 执行其它任务。”病毒程序又是如何感染其它程序的呢?病毒的感染其实就是对正常程序工作流程的修改,病毒将自己的病毒体附加到了正常的程序上面,并修改了程序的入口地址为病毒体的执行地址,最后再由病毒体执行完毕后跳回原程序的入口地址来执行原程序的功能,这一切对用户来说都是不可见的。用户一旦运行被感染的程序,实际上也就完成了病毒木马的触发启动。病毒的清除并不复杂,不外乎就是一个分析,从被感染程序中找到病毒体,清掉,再恢复原程序的入口地址,就 OK 了。但难就难在病毒与病毒是各不相同的,而新病毒又层出不穷,这就使得这种分析与清除工作需要大量的人力与精力。所以,也只有有实力的大公司才有可能很好的维护一个病毒库,并不断的分析新病毒来更新病毒库。所以,朋友们遇到感染型的病毒后,最先要做的就是提交样本给杀毒软件公司。
(4) 修改式的触发启动
修改式的触发启动,主要是指修改原本为正常启动的环节,实现自身的启动,这个与感染式的比较像,但又不同。他们的修改并非大量的,而是有针对性的。
有修改引导扇区的、有修改系统文件的。修改方法与病毒感染大致相同,就是在正常的指令序列中插入自己调用病毒或木马程序的指令,以实现在自己的启动。
这种方式隐蔽性很强,但却很难逃过以数字签名验证为主要手段的启动项检查,因为一旦系统文件被修改,即不再能通过数字签名验证,前面提到的修改 Userinit.exe 的木马就是这样的一个例子。这种方法启动的木马,还使得清理起来比较困难,因为他们修改了系统文件,需要用原有的文件进行还原性的替换修复,如果手头有系统安装盘还好一点,没有就比较麻烦了。狙剑提供了系统文件修复的功能,其实这一功能也是调用的系统本身自带的系统文件修复,只是进行了少许的加工罢了。比如:有的光盘系统安装目录与原版系统盘并不相同,这样,用系统自带的系统文件修复功能时,即使你插入了系统安装盘,也会提示你找不到系统盘,而改进后的就可以手选择安装目录了。再比如,装机器时,有些装机员习惯在机器上拷贝一份安装目录,这样就不用频繁的插入系统光盘了。而这个硬盘上的目录,通常是不能用于系统文件修复的。改进后的多了一个全盘扫描系统安装目录的功能,你可以指定或让狙剑自动扫描安装目录后,再进行修复。修改引导区的,现在已经很少见到了,很多杀软都提供了恢复引导区的功能,相反,这种很少见的木马启动方式,安全工具反而很少有提供恢复的。
(5)事件触发启动
事件是指当你进行某项工作时,比如:下载。与文件关联不同的是这种触发并不区分你下载的是哪一类的文件,也无须打开下载的文件,只要有下载
的事件发生,就会触发。如果我们一下载东西就打开木马,那岂不是很可怕?
自启动项的隐藏与保护,虽然分成了隐藏与保护,但两者使用的也大多是相同的技术,能保护也就能隐藏,反之亦然。
4 4 、 自启动项的隐藏 、 保护与查杀
自启动项的隐藏与保护,跟进程的差不多,不外乎还是 HOOK,系统提供给程序开发人员对注册表操作
的功能函数常用的有如下几个:RegCreateKey、RegOpenKey 用于打开创建注册键;RegDeleteKey、RegDeleteValue 用于删除注册键及注册值;RegEnumKey、RegEnumValue 用于枚举注册键及注册值;还有RegQueryValu 来获取值。另外还有一套*Ex 函数,其实功能都是一样的。而系统查看或删除注册键与值时,也是用的上面的几个 API。而上面的一些个 API 是用于应用层的,它们又会调用系统内核中的 Nt*系统的功能服务来进行接下来的处理(*代表了 Nt 开头的那些与注册表相关的系统服务),而 Nt*系统服务又调用了 Cm*底层功能代码来进行操作,当然了,最终的操作都要实现在 HIVE文件上面去。
进程篇中的 SSDT-HOOK、SSDT-INLINE—HOOK 在注册表 HOOK 时是完全有效的,HOOK 应用层的RegCreateKey、RegOpenKey 或 RegDeleteKey 都可以实现注册键的防删除,而 HOOKRegEnumKey 就可以实现注册键的隐藏,这种 HOOK 可以对付系统与大多数应用层的安全工具的检查;而 HOOKNtCreateKey 等则同样
可以实现隐藏与防删除且层次更深,而 HOOKCm*系统注册表操作函数,则更加邪恶,且已经有这类程序出现。总之,在注册表操作的任何一个环节进行 HOOK,都可以实现隐藏与防删除的目的。
对 Inline-HOOK 的检测可以用“内核代码扫描”。内核代码扫描不仅能找到 Inline-HOOKNt*系列函数木马,同样能找到 Inline-HOOKCm*系列函数的木马。只不过 HOOKCm*系统函数的木马层次更深一些而已。如果直接用狙剑的自启动项管理对自启动项进行操作,则无须手动检查与恢复 HOOK,狙剑在扫描与
清除自启动项时,会自动恢复相关的 HOOK(有些 HOOK 有防恢复机制,也很难用手工来恢复,所以也就没必要非手工恢复它,交给工具去做就可以了)。注册表由于其特殊性,使得我们多了一个检查与清除木马自启动项的终极手段,那就是直接操作 HIVE文件,当然了,HIVE 文件的重要性使得系统对其保护很严密,这对直接操作 HIVE 文件造成了一定的麻烦,而风险性也进一步的提高。这使得当前绝大多数安全软件,对操作 HIVE 文件来查杀木马都望而却步,但其
效果却无疑是目前最好的。可以选择“仅显示自启动相关项”,这时与自启动无关的项将被隐藏,方便使用注册表编辑器进行木马的查找。
而如何使用注册表编辑器在 HIVE 级别上清除木马的自启动项呢?
找到这个键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\sr
注意在右则,是这个驱动的注册内容,在上面按右键,可弹出操作菜单,里面提供了几个功能“清除项值”、“修改项值”、“修改项名”。
A. 清除项值:这个功能用于一般的自启动项,结果是会将“数据”那一栏的内容清零。比如我们可以将 ImagePath 一项的数据清零,那么对于一般的驱动来说这个操作就可以禁止驱动的加载了。
B. 修改项值:这个功能是修改“数据”那一栏的内容,这个用来做什么呢?比如:将 Start 那一项的值改为 4!为什么改为 4 呢?或将 ImagePath 一项的数据中原来的 Sr.sys 改为:SS.sys 只改了一个字母,但驱动的加载是铁定会失败的,因为系统会在加载时努力的寻找 Sr.sys,结果当然是找不到了。
C. 修改项名:这个修改的是第一列的项名字,也就是“Start、ImagePath……”等。项名字都是固定了,稍加改动就会使得系统认为这是无效项。操作 HIVE 无疑是最底层的也是功能强大的,但用起来肯定不如使用自启动项管理方便,所以,一般情况下,这个是用不到的。但一旦遇到变态的木马时,有这个功能,会让我们感到心里有底。比如:一旦清除木马的启动项,系统马上就蓝屏的情况我就遇到过,这是木马变态般的自我保护,而其保护的基理就是注册了注册表改变通知的消息,一旦其注册表项被改变,他就会接到系统的通知,而他一旦接到通知,就会马上使系统崩溃,让我们对其所做的修改无效。
为什么马上系统崩溃就会使修改无效呢?这是因为系统的缓存机制在起作用,正常情况下,我们的修改只体现在了缓存中,系统通常是 5 秒钟为间隔的将缓存中的数据向磁盘中更新,而修改后马上崩溃,将使得系统来不及向磁盘中写入修改后的信息,导致修改无效。
对这个变态的木马,只是简单的将其“Start”中的值改为了 4,重启系统后,它就自然死亡了。原理也很简单,直接操作 HIVE 文件绕过了系统所有的注册表操作环节,系统也不知道我们做了更改,即然系统都不知道,木马自然也得不到通知了。总之,越向底层走,功能越强大,但操作就越不方便,风险也就越大。像狙剑的“终极修复”就是一个例子。终极修复其实也是一个操作注册表文件的例子,在系统初装时,系统会在 Windows\Repair 目录下,保存一份注册表 HIVE 文件的完整备份,这是最原始的也是最简洁干净的注册表文件。终极修复利用的就是这个备份的注册表文件,用这一套文件取代现有文件,将会使得系统的全部配置回复到初装系统时的状态,那些木马病毒的自启动项自然也就不存在了。终极的意思就是最终的手段,不到最后关头切勿使用。
-----------------------END-----------------------




