您的位置:首页 > Web前端 > JavaScript

部分常用JavaScript代码三

2012-09-28 13:46 288 查看

2008-08-30 16:27:17
 标签:RootKit 映像劫持    [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://gslww.blog.51cto.com/407588/96216
正与邪的较量无处不在,当然Windows系统也不例外。俗话说:“知己知彼,百战不殆”,要取得这场战斗的胜利就要深入了解对手,然后找准要害一招制敌。当前“映像劫持”和“RootKit”肆虐Windows系统,我们就以此开始正与邪的较量。
一、“映像劫持”愚弄系统
所谓映像劫持(IFEO)就是通过修改注册表“Image File Execution Options”项下的相关键值达到欺骗系统,进而绝杀安全软件接管系统。本来这个注册表项主要是用来调试程序的,对一般用户意义不大,但木马、病毒似乎比较钟情于它往往陷系统于不义。
1、系统、杀软被劫持
大部分的病毒和木马都是通过加载系统启动项来运行的,也有一些是注册成为系统服务来启动,他们主要通过修改注册表来实现这个目的,主要有以下几个键值:
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrent\Version\Run
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsCurrent\Version\RunOnce
  HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsCurrent\Version\RunServicesOnce
  但是与一般的木马,病毒不同的是,就有一些病毒偏偏不通过这些来加载自己,不随着系统的启动运行。木马病毒的作者抓住了一些用户的心理,等到用户运行某个特定的程序的时候它才运行。因为一般的用户,只要发觉自己的机子中了病毒,首先要察看的就是系统的启动项,很少有人会想到映像劫持,这也是这种病毒高明的地方。
  映像劫持病毒主要通过修改注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\项来劫持正常的程序,比如有一个病毒vires.exe要劫持qq程序,它会在上面注册表的位置新建一个qq.exe项,再在这个项下面新建一个字符串的键debugger把其值改为C:\WINDOWS\SYSTEM32\VIRES.EXE(这里是病毒藏身的路径)。这样当我们运行QQ程序的时候其实运行的就是该病毒木马。



当然,映像劫持最可怕的是其对杀毒软件的劫持。一般是先释放一个脚本,该脚本运行后在注册表的Image File Execution Options项下修改或者添加相关的键值劫持杀毒软件的主程序。这样当系统重启后杀毒软件被终结,病毒木马就可以肆虐了。
2、反其道利用映像劫持
(1).禁止某些程序的运行
既然映像劫持可被病毒、木马利用,当然我们反其道而行之利用它来禁止某些程序的运行。比如在公共电脑中可以利用它限制别人使用QQ,打开记事本拷贝下面的代码:
  
  Windows Registry Editor Version 5.00
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\qq.exe]
  Debugger=c:\123.exe
  把上面的代码保存为disqq.reg,双击导入注册表,每次双击运行QQ的时候,系统都会弹出一个框提示说找不到QQ,原因就QQ被重定向了。如果要让QQ继续运行的话,将QQ的主程序改名或者删除或者修改该注册表项就可以了。



(2).偷梁换柱恶作剧
  每次我们按下CTRL+ALT+DEL键时,都会弹出“任务管理器”,我们可以通过映像劫持在按下这些键的时候让它打开“系统配置实用程序”。打开记事本,输入如下的代码:
  Windows Registry Editor Version 5.00
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe]
  Debugger=D:\WINDOWS\pchealth\helpctr\binaries\mconfig.exe
  将上面的代码另存为msconfig.reg,双击导入注册表。按下那三个键打开了“系统配置实用程序”。
  (3).让病毒迷失自我
  同上面的道理一样,如果我们把病毒程序给重定向了,是不是病毒就不能运行了,答案是肯定的。打开记事本,输入如下的代码:
  Windows Registry Editor Version 5.00
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sppoolsv.exe]
  Debugger=123.exe
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\logo_1.exe]
  Debugger=123.exe
  上面的代码是以金猪病毒和威金病毒为例,这样即使这些病毒在系统启动项里面,当我们重启系统后,由于映象劫持的重定向作用,系统会提示无法找到病毒文件(这里是logo_1.exe和sppoolsv.exe)。我们延伸一下,可以搜集病毒木马的程序名称,创建一个reg文件对系统实施病毒木马的免疫。



3、未雨绸缪预防映像劫持
(1).权限限制法
  打开注册表编辑器,定位到
  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\,选中该项,右键→权限→高级,取消administrator和system用户的写权限即可。这样任何帐户都无法对该注册表项进行修改,当然病毒也就无法利用映像劫持了。



(2).快刀斩乱麻法
  打开注册表编辑器,定位到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\,把“Image File Execution Options”项删除即可。该注册表项我们根本用不着,大家可以放心地删除以绝后患。



二、RootKit忽悠管理员
Rootkit是一个或者多个用于隐藏、控制系统的工具包,该技术被越来越多地应用于一些恶意软件中。在基于Windows的系统中rootkit更多地用于隐藏程序或进程,系统被注入Rootkit后就可以在不为用户察觉的情况下进行进行某些操作。因此,其隐蔽性极高,危害极大。
1、利用RootKit创建高级隐藏帐户
攻击者在控制系统后往往要创建一个具有管理员权限的帐户,但是常规情况下这些帐户是很容易被发现的。因此,他们也许会利用RootKit创建一个高级隐藏帐户。这样的帐户,如果不清除系统中的RootKit任何人是无法发现的。
(1).创建一般帐户
在命令提示符(cmd.exe)下输入如下命令:net user gslw$ test168 /add
通过上面的两行命令建立了一个用户名为gslw$,密码为test168的普通用户。为了达到初步的隐藏我们在用户名的后面加了“$”号,这样在命令提示符下通过net user是看不到该用户的,当然在“本地用户和组”及其注册表的“SAM”项下还可以看到。



(2).帐户非常规提权
下面我们通过注册表对gslw$帐户进行提权,使其成为一个比较隐蔽(在命令行和“本地用户和组”中看不到)的管理员用户。
第一步:打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SAM\SAM项。由于默认情况下管理员组对SAM项是没有操作权限的,因此我们要赋权。右键点击该键值选择“权限”,然后添加“administrators”组,赋予其“完全控制”权限,最后刷新注册表,就能够进入SAM项下的相关键值了。
第二步:定位到注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users项,点击“000001F4”
注册表项,双击其右侧的“F”键值,复制其值,然后点击“00000404”注册表项(该项不一定相同),双击其右侧的“F”键值,用刚才复制键值进行替换其值。



第三步:分别导出gslw$、00000404注册表项为1.reg和2.reg。在命令行下输入命令"net user gslw$ /del"删除gslw$用户,然后分别双击1.reg和2.reg导入注册表,最后取消administrators对SAM注册表项的访问权限。
这样就把gslw$用户提升为管理员,并且该用户非常隐蔽,除了注册表在命令下及“本地用户和组”是看不到的。这样的隐藏的超级管理员用户是入侵者经常使用的,对于一个水平不是很高的管理员这样的用户他是很难发现的。这样的用户他不属于任何组,但却有管理员权限,是可以进行登录的。
(3).高级隐藏用户
综上所述,我们创建的gslw$用户虽然比较隐蔽,但是通过注册表可以看见。下面我们利用RootKit工具进行高级隐藏,即在注册表中隐藏该用户。
可被利用的RootKit工具是非常多的,我们就以Hacker defende危机进行演示,它是个工具包,其中包含了很多工具,我们隐藏注册表键值只需其中的两个文件,hxdef100.exe和hxdef100.ini。其中hxdef100.ini是配置文件,hxdef100.exe是程序文件。打开hxdef100.ini文件定位到[Hidden RegKeys]项下,添加我们要隐藏的注册表键值gslw$和00000404即用户在注册表的项然后保存退出。



然后双击运行hxdef100.exe,可以看到gslw$用户在注册表中的键值“消失”了,同时这两个文件也“不见”了。这样我们就利用RootKit实现了高级管理员用户的彻底隐藏,管理员是无从知晓在系统中存在一个管理员用户的。



2、全面出击清除RootKit
那是否意味着我们就无能为力呢?俗话说“邪不胜正”,与RootKit就有反RootKit。我们就以清除上面的Hacker defende为例揪出刚才创建的隐藏帐户。

(1).深入扫描进行驱动级别分析
RootKit往往是驱动级别的,因此它比一般的应用程序更加靠近底层,清除起来更加的棘手。清除请进程扫描是必要的,RootKit Hook Analyzer是一款Rookit分析查询工具,利用它可以扫描分析出系统中存在的RooKit程序。该工具是英文程序,安装并运行点击其界面中下方的“Analyze”按钮就可以进行扫描分析,列出系统中的RooKit程序,勾选“Show hooked services only”就可以进行筛选值列出RooKit ervices。当然,类似这样的工具还有很多,我们可以根据自己的需要进行选择。



(2).通通透透看进程
RootKit的程序进程往往是隐藏性或者嵌入型的,通过Windows的“任务管理器”是无法看到的。我们可以利用一款强大的进程工具IceSword(冰刃)来查看。运行IceSword点击“进程”按钮,就可以列出当前系统中的进程,其中红色显示的是可疑进程。我们可以看到hxdef100.exe进程赫然其中,这真是我们刚才运行的RootKit。在该进程上点击右键选择“结束”进程。这时hxdef100.exe和hxdef100.ini文件显身了,再刷新并查看注册表,刚才消失的两个键值有重现了。



(3).专业工具查杀
利用IceSword进行RooKit的分析和并结束其进程不失为反RooKit的一种方法,但有的时候冰刃并不能分析出RootKit,因此我们就要比较专业的工具。比如卡巴斯基、超级巡警等都是不错的选择。下图就是通过超级巡警检测到的RootKit病毒。



总结:当然,在Windows系统中“正”与“邪”此消彼长,战争中没有永远的胜利者。我们只有深入了解,主动出击才能掌握主动权。
本文出自 “老五空间” 博客,请务必保留此出处http://gslww.blog.51cto.com/407588/96216本文出自 51CTO.COM技术博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: