首页 实地培训 VIP专区 文章中心 下载中心 精品动画 安全服务 安全产品 企业文化
技术论坛
 -->开创网络首先基于以学员为中心的人性化教学方式。以案例式教学、互动式教学为主线。
 
  当前位置: 首页 > 文章中心 > 黑客技术 >
 
 
眼见为虚——解析映像劫持技术
发布者ID:3 作者: 发布时间:2008-06-24 05:04:42 来源: 点击:
 

  小知识:互斥量

  为了预防用户简单的更改一个文件名就使得大部分安全工具破笼而出,一些木马还同时采用了一种被称为“互斥量”的技术来彻底阻止安全工具运行。在系统里,有一类特殊的系统对象被称为“互斥量”(Mutex),它们的存在是为了减少系统开销而设,例如一些工具在运行时会检测是否已经有另一个自己的副本在运行,要做这种检测最有效率的方法就是在第一次运行时创建一个互斥量,以后再运行时检测即可,这实际上是很简单的方法,因为系统会为我们保存已经创建的互斥量,直到程序请求销毁互斥量,否则它将一直存在。这样一来,问题又出现了,如果恶意程序掌握了一些安全工具的互斥量并伪造呢?这些安全工具就会因为检测到“自身已经运行”而放弃继续执行的权利,恶意程序就没有克星了。

  而那些双击时明明程序文件就在眼前,系统却报错说“找不到文件”,又是什么回事呢?这也是IFEO的另一种应用罢了,其秘诀是将Debugger参数指向一个不存在的文件位置,这样系统就会因为找不到这个调试器而无法顺利执行下去,如果系统老老实实报出“找不到调试器”的错误提示那倒还好了,但就不知道微软是出于对IFEO这个东西存在的事实掩盖还是什么苦衷,却死活不肯承认是Debugger指向的调试器不存在导致的错误,而是把已经被“变异”成为命令行参数无法进入系统创建进程机制的原执行请求作为“找不到的文件”给报了回去,于是未曾了解过IFEO的用户只能莫名其妙的看着眼前就存在而系统“不承认”的安全工具发愣了。

  作者:小金 转载请勿斩首,谢谢

四. 防范“映像劫持”

  好了,前面说了这么多,大概又吓得一批人开始冒冷汗了吧,我们现在就来学习如何防范和破解“映像劫持”。

  判断你的机器是否被劫持

  最简单的方法是逐个运行你常用的安全工具,检查是否出现“无法找到文件”或者干脆直接没了反应的,当然,执行结果和预期差别太大的也要被怀疑为劫持,例如你执行IceSword.exe反而是你的QQ运行了,那就不必我多说了。

  其实只要注册表编辑器regedit.exe、regedt32.exe没有被劫持,那我们直接用它进入“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”这个注册表项并展开里面的子项列表一个个看下来确认是否出现Debugger参数或其他可能影响程序运行的堆管理参数,便可得知机器是否被劫持。

  如果注册表编辑器被劫持了怎么办?直接改个名就能用了啊……

  更简单的方法,是使用Sysinternals的Autoruns,点击它的“Image Hijacks”选项卡,即可看到被劫持的程序项了。

  追查劫持来源

  如果不幸你的机器上已经成为“映像劫持”的受害者,请记录好Debugger指向的程序位置,也不要试图再执行那些安全工具,首先应该尝试删除受影响的IFEO项,然后刷新注册表看看数据是否马上恢复了,如果马上恢复,则说明后台里有程序正在实时判断和写入IFEO,这时候必须拿出Sysinternals出品的注册表监控工具Regmon或类似工具,设置Filter为你正在尝试删除的安全工具的IFEO项,很快就能发现具体是什么进程在操作注册表了,然后将IceSword改名(如果已经被劫持),在它的进程列表里将相应进程终止掉。如果这个进程立即又重生了呢?再终止一次,然后迅速点击IceSword的“监视进线程创建”,你就能发现上一次捣乱的程序是什么名字了,将它记录下来,再开启一个Sysinternals的工具“Process Explorer”,在对应进程上点击右键选择“Suspend”,这个进程就会被挂起,用IceSword和它配合把相关恶意进程都挂起后,再使用IceSword的文件功能里的“强制删除”,在这个程序还没来得及反应时就把它们的本体给歼灭,这时候再返回Process Explorer里按照大小排列从最大的一个守护进程开始Kill Process即可,由于没有了映像文件存在,它们意欲重新建立木马帝国的贼心也就无法实现了。

  如果查杀过程更为复杂的话,请自行参阅相关文章,这里就不再赘述了。

  如此实现“免疫”?不被推荐的做法

  由于AV终结者搞得人心惶惶,一时间网络上开始流传“免疫映像劫持”甚至“利用映像劫持免疫大部分常见病毒”的做法,对于这些方法的最初提供者,我相信他们的出发点是好的,只是,从严格的角度来看,这却是不可取的。

  首先是“免疫映像劫持”,具体的方法是,例如免疫威金病毒“logo_1.exe”,则在IFEO列表里建立一个“logo_1.exe”项,然后设定它的Debugger参数为它自身即“logo_1.exe”,根据原作者解释,其原理是递归死循环:“当Debugger的值等于本身时,就是调用自身来调试自己,结果自己不是调试器,又来一次,递归了,就进入了死循环,也就不能启动了。”

  这种方法虽然有效(最后的现象是“找不到文件”),但是它会导致系统在短时间内陷入一个CreateProcess循环和命令参数的字符串累加状态,会消耗一定的资源,最终没能执行程序是因为系统使用CreateProcess启动的实例会被它自身代替执行,从而造成死循环,而且命令行的长度是有系统限制的,到一定范围就会出错了,尤其在可以接受命令行参数的程序里,你甚至会发现硬盘狂转了好一会儿才弹出错误提示,这段时间里就是在死循环传递状态了,最终由于超过系统限制的命令行长度而导致系统传递执行请求时出错,才得以跳出这个死循环,换一个角度来看,如果系统没有限制命令行长度,那么这个操作很可能直接导致系统所有资源都消耗在这个自己反复执行自己的“调试器”上了。

  至于“利用映像劫持免疫大部分常见病毒”的做法,发起号召者模仿“映像劫持”后门屏蔽大部分常用安全工具的原理,搜集了许多流行危害程序的可执行文件名加以前面提到的递归死循环方法达到目的,如果不计较前面提到的递归死循环缺点,似乎这个方法是可行的。

  然而这真的可行吗?世界上存在许多与某些系统文件同名同姓的社交型后门,如位置不同而名字相同的命令提示符输入法控制程序“conime.exe”(被OSO超级U盘病毒借用名字)、重要程序Rundll32.exe被某些木马替换为自身、甚至IE浏览器主体iexplore.exe也存在被木马伪造文件名的案例,如此一来不知道多少正常的系统程序可能会被这份“免疫列表”给误杀了,我仅仅粗略浏览了一下就发现msiexec.exe居然存在“免疫列表”中,要知道这可是微软安装程序的主执行体啊……



上一页 1 2 3 4 下一页

 
 
 
 
   
 
   
     
  • 课堂实景
  • 课程体系
  • 培训课程
  • 学费介绍
  • 巧用mstsc命令登录到console的方法
  • 课程介绍
  • 团队介绍
  • Linkideo免费Vpn
  • 就业前景
  • 汇款方式
  •  
     
     
    无标题文档
    一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网一流开创网
      关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 友情链接  
      版权所有:吉林省开创科技信息有限公司  
      服务热线:0431-84714442
    Copyright 2001 - 2007 All Rights Reserved