扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:zdnet安全频道 来源:论坛整理 2008年11月4日
关键字: 网络管理
你是否遇到过公司网管或其他人员在你的机器上安装了所谓的“管理软件”而让自己一举一动隐私全部泄露呢?你是否发现自己的杀毒软件和安全工具无法顺利启动呢?你又是否为某个非法程序随机启动运行而发愁呢?这些麻烦充斥在我们的日常生活和工作中,查杀病毒关闭进程的工作是烦琐和复杂的,而且往往不太有效。那么遇到这些问题时难道只能够通过重新安装系统彻底解决吗?答案是否定的,今天就让各位IT168的读者跟随笔者一起双管齐下阻挠非法程序运行。
一,深入浅出了解映像劫持:
在了解具体防范方法前我们需要知道以上种种麻烦都是由于非法程序进行了映像劫持的结果。“映像劫持”,也被称为“IFEO”(Image File Execution Options,也可以叫作“Image Hijack”),它的存在是必然的,在Windows NT时代,系统使用一种早期的堆栈管理方式,由应用程序管理的内存区域)管理机制,使得一些程序的运行机制与现在的不同,而后随着系统更新换代,厂商修改了系统的堆栈管理机制,但是这些改动却导致了一些程序从此再也无法运作,为了兼顾这些出问题的程序,微软以“从长计议”的态度专门设计了“IFEO”技术。
那么IFEO到底是怎么样发挥作用的呢?例如有一个程序文件名为“softer.exe”,由于使用了旧的堆栈管理机制,它在新系统里无法正常运行甚至出现非法操作,为了让系统为其提供旧的堆栈管理机制,我们需要IFEO来介入,则需执行以下步骤.
第一步:确保在管理员状态下执行regedit.exe,定位到以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options。(如图1)
第二步:在“Image File Execution Options”下建立一个子键,名为“softer.exe”,不区分大小写。现在确保位于HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows NT\CurrentVersion\Image File Execution Options\softer.exe\下,建立一个字符串类型的注册表项,名为“DisableHeapLookAside”,值为“1”。
第三步:再次运行softer.exe查看运行情况,如果真的是由于堆栈管理机制引发的问题,则程序得以正常运行,否则该程序问题不属于IFEO能够干涉的范围,或者需要尝试搭配其他的参数使用。
小提示:
IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,例如IFEO指定了对一个名为“softer.exe”的可执行程序文件进行控制,那么无论它在哪个目录下,只要它名字还叫“softer.exe”,他就可以运行。
前面我们了解了基本理论,那么病毒或非法程序是如何实现映像劫持的呢?罪魁祸首就是IFEO下属的Debugger参数,该参数具备特殊性,它又被称为“重定向”(Redirection),利用它进行攻击又被称为“重定向劫持” (Redirection Hijack)。遭遇流行“映像劫持”病毒的系统表现为常见的杀毒软件、防火墙、安全检测工具等均提示“找不到文件”或执行了没有反应,用户只能够通过重新安装系统去解决问题,不过当我们将这个程序改了个名字就发现它又能正常运行了,这就是最典型的重定向劫持,说明IFEO被人为设置了针对这些流行工具的可执行文件名的列表,而且Debugger参数指向不存在的文件甚至病毒本身。
二,防范“映像劫持”法:
下面我们就来讲解具体的防范“映像劫持”的方法。
第一步:判断你的机器是否被劫持,逐个运行你常用的安全工具,检查是否出现“无法找到文件”或者干脆直接没了反应的,当然,执行结果和预期差别太大的也要被怀疑为劫持。另外只要注册表编辑器regedit.exe、regedt32.exe没有被劫持,那我们直接用它进入“HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”这个注册表项并展开里面的子项列表一个个看下来确认是否出现Debugger参数或其他可能影响程序运行的堆管理参数,便可得知机器是否被劫持。
小提示:
如果注册表编辑器被劫持了怎么办?直接将regedit.exe改个名就能够再次使用了。
第二步:记录好注册表IFEO区Debugger参数下值指向的程序位置,不要试图再执行任何安全工具,首先应该尝试删除受影响的IFEO项,然后刷新注册表看看数据是否马上恢复了,如果马上恢复,则说明后台里有程序正在实时判断和写入IFEO,这时候必须拿出注册表监控工具Regmon或类似工具,设置Filter为你正在尝试删除的安全工具的IFEO项,很快就能发现具体是什么进程在操作注册表了,然后在系统进程列表里将相应进程终止掉。关闭进程后就可以删除对应的注册表键值了。由于没有了映像文件存在,删除工作会很顺利。如果不放心还可以将杀毒软件改名运行查杀下系统硬盘各个目录。
这样就可以轻松防范和查杀采取“映像劫持”进行攻击的病毒了。
三,自制“映像劫持”阻挠非法程序运行:
前面我们了解了IFEO的工作原理以及“映像劫持”的具体实施手段,既然病毒可以拿来攻击,我们这些普通用户也就可以通过“映像劫持”来实现阻挠非法程序运行的目的了,例如那些流氓软件,监控软件。下面举例禁止QQ程序的运行。
第一步:进入到注册表编辑器中找到 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]键值,然后新建一个名为qq.exe的键值。
第二步:在qq.exe键值下再建立一个新参数项"Debugger"并赋予他的数值为"123.exe"。(如图2)
第三步:这样你再运行qq.exe时就没有之前那么顺利了。当然我们也可以建立一个注册表文件禁止时运行导入注册表,容许时再次运行反注册文件即可。内容如下。
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\qq.exe]"Debugger"="123.exe"
这样每次双击运行QQ的时候,系统都会弹出一个框提示说找不到QQ,原因就是QQ被重定向了。如果要让QQ继续运行的话,把123.exe改为QQ程序的安装目录就可以了,当然删除这段添加的注册码参数信息也行。以上的简单操作就实现了禁止QQ非法程序运行的目的。当然如果我们想禁止其他程序运行只需要将QQ.EXE换为其他对应名称即可。(如图3)
四,DLL建立法和非法程序运行说不:
如果说以上的自制“映像劫持”阻挠非法程序运行法对于初学者来说比较困难的话,下面笔者再介绍一个更为简单的方法,那就是DLL建立法和非法程序运行说不。我们同样以禁止QQ程序的运行为例进行介绍。
第一步:进入到QQ程序安装目录,这个目录应该是qq.exe所在目录。
第二步:在目录中点鼠标右键选择新建一个文本文件,然后保存退出。(如图4)
第三步:将建立的文本文件改名为ws2_32.dll,注意后缀名也要更改不是TXT而是DLL了。这样当我们要执行QQ.exe时系统就会以文件出错误而禁止运行。当然如果日后我们想使用QQ程序的话只需要把新建立的这个ws2_32.dll删除即可。(如图5)
小提示:
在我们更改文件名和扩展名时记得通过文件夹选项将系统设置为不隐藏文件扩展名,否则更改后实际上对应的不是DLL文件而是ws2_32.dll.txt文本文件,自然无法实现对应功能。
本方法适用基于NT系统的WinXP,Win2000,Win2003,另外新建ws2_32.dll法只能阻止与网络相关的程序,如果该程序是单机程序不进行任何网络通讯和访问的话此方法无效,用户还需要通过“映像劫持”阻挠非法程序运行法来解决实际问题。
五,小程序来帮忙让非法程序运行失败:
当然在网上还有很多类似的程序可以实现禁止非法程序运行的目的,这类程序的原理就是映像劫持,由于程序名称千差万别而且原理都一样,所以这里由于篇幅关系就不详细说明了,感兴趣的读者可以自行到IT168的下载站获取。(如图6)
六,总结:
本文从原理到实例介绍了两个禁止阻挠非法程序自动运行的方法,两个方法都是有效的,而且实现起来非常简单。dll法的缺点是实施后对应整个文件夹的exe都不能用,而映像劫持的缺点是不管是否同一文件夹,只要名字被重定向,那么这些程序都将无法正常使用,所以在实际工作中我们应该根据实际情况出发选取合适的方法,必要时两者同时实施互相补充协同工作。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者