| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 黑客入侵 >> 正文 用户登录 新用户注册
解析映像劫持技术           ★★★ 【字体:
眼见为虚——解析映像劫持技术
作者:不详 文章来源:华盟收集 点击数: 更新时间:2008-9-20

  一. 诡异的中毒现象

  在成品检验科文员办公室的一台电脑上折腾半个小时后,计算机维护部门的技术员只觉得眼皮不停狂跳,因为从刚开始接手这个任务开始,他就一直在做无用功:他随身带的U盘里引以为豪的众多维护工具包在这台机器上全军覆没,无论他直接在U盘上运行还是随便复制到哪个目录里,系统都是报告“找不到文件”或者直接没有运行起来的反应,他第一次感受到了恐惧,文件分明就好好的在眼皮底下,可它们就是“找不到”或死活不肯执行,莫非是在这台机器上被病毒破坏了?他只好打开网页尝试重新下载,但是他很快就绝望了,刚下载的查杀工具同样也不能使用。

  无奈之下他只好在众多文员的期待下说出了大部分号称上门维护电脑的高手们常用的一句话,一般情况下这句话马上能让大部分用户接受残酷的现实,允许其重装系统,并为这次重装系统付出50元的价格,这句话就是:“系统文件严重损坏了,没法修了,只能重装。”

  装完系统和常用办公软件后,他像一个贼似的赶紧离开了办公室,生怕多呆一会儿就会惹来什么麻烦似的,而他却不知道,“麻烦”早已在他刚才使用的U盘上安家了。回到自己的电脑前,他刚右键点击U盘,就看见鼠标忙碌的状态比平时久了点,然后托盘区里的杀毒软件和网络防火墙都消失了,他心里一慌张,赶紧运行超级巡警,系统却报告“找不到文件”,他一下子呆在了电脑前:瘟神跟上门来了……

  古语云:道高一尺,魔高一丈。这句经典哲理在网络上得到了迅速的延伸应用。今年初,一种早已有之的系统调试功能被应用到病毒技术上,从而摇身一变成为恶魔的代言人,普通用户很快就面临了一场莫名其妙的病毒灾难,这就是“映像劫持”。

  二. 我本将心向明月,奈何明月照……

  “映像劫持”,也被称为“IFEO”(Image File Execution Options,其实应该称为“Image Hijack”,后面章节会详细提到,至少也应该称为IFEO Hijack而不是只有“IFEO”自身!),它的存在自然有它的理由,在WindowsNT架构的系统里,IFEO的本意是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定,系统厂商之所以会这么做,是有一定历史原因的,在Windows NT时代,系统使用一种早期的堆(Heap,由应用程序管理的内存区域)管理机制,使得一些程序的运行机制与现在的不同,而后随着系统更新换代,厂商修改了系统的堆管理机制,通过引入动态内存分配方案,让程序对内存的占用更为减少,在安全上也保护程序不容易被溢出,但是这些改动却导致了一些程序从此再也无法运作,为了兼顾这些出问题的程序,微软以“从长计议”的态度专门设计了“IFEO”技术,它的原意根本不是“劫持”,而是“映像文件执行参数”!

  IFEO设定了一些与堆分配有关的参数,当一个可执行程序位于IFEO的控制中时,它的内存分配则根据该程序的参数来设定,那么如何使一个可执行程序位于IFEO的控制中呢?答案很简单,Windows NT架构的系统为用户预留了一个交互接口,位于注册表的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”内,使用与可执行程序文件名匹配的项目作为程序载入时的控制依据,最终得以设定一个程序的堆管理机制和一些辅助机制等,大概微软考虑到加入路径控制会造成判断麻烦与操作不灵活的后果,也容易导致注册表冗余,于是IFEO使用忽略路径的方式来匹配它所要控制的程序文件名,例如IFEO指定了对一个名为“小金.EXE”的可执行程序文件进行控制,那么无论它在哪个目录下,只要它名字还叫“小金.EXE”,它就只能在IFEO的五指山里打滚了。

  说了半天都只是纯粹的概念,那么IFEO到底是怎么样发挥作用的呢?例如有一个程序文件名为“lk007.exe”,由于使用了旧的堆管理机制,它在新系统里无法正常运行甚至出现非法操作,为了让系统为其提供旧的堆管理机制,我们需要IFEO来介入,则需执行以下步骤:

  1. 确保在管理员状态下执行regedit.exe,定位到以下注册表项:

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options

  2. 在“Image File Execution Options”下建立一个子键,名为“lk007.exe”,不区分大小写。现在确保位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\lk007.exe\下,建立一个字符串类型的注册表项,名为“DisableHeapLookAside”,值为“1”

  3. 再次运行lk007.exe查看运行情况,如果真的是由于堆管理机制引发的问题,则程序得以正常运行,否则该程序问题不属于IFEO能够干涉的范围,或者需要尝试搭配其他的参数使用。

  目前已知的IFEO参数有:

  ApplicationGoo

  Debugger

  PageHeapFlags

  DisableHeapLookAside

  DebugProcessHeapOnly

  PageHeapSizeRangeStart

  PageHeapSizeRangeEnd

  PageHeapRandomProbability

  PageHeapDllRangeStart

  PageHeapDllRangeEnd

  GlobalFlag

  BreakOnDllLoad

  ShutdownFlags

  说白了,IFEO本质是系统厂商为某些可能以早期设计模式运行的软件提供一种保全措施而设计出来的产物,并对其加以扩充形成了一套可用于调试程序的简易方案,如“BreakOnDllLoad”参数可设定在载入某个DLL时设置断点,便于程序员调试ISAPI接口;带有“Range”字样的几个参数则用于限制堆的大小等。

  而里面有一个导致了今天这种局面的参数:Debugger。或许微软当初的用意是便于程序员能够通过双击某个设置了IFEO控制列表的执行体文件来直接调用调试器对其进行调试,而不用再通过繁琐的打开调试器再进行文件载入来实现调试,提高了工作效率。

  为了使得IFEO能够影响到任何一个程序启动请求,NT架构中将IFEO的优先权设置得很高,基本上,当用户要求执行某个程序时,系统首先判断该程序文件是否可执行体,然后就到IFEO的入口项进行文件名配对了,直到通过IFEO这一步后,进程才真正开始申请内存创建起来。

  如果系统在IFEO程序列表里匹配了当前运行的文件名,它就会读取文件名下的参数,这些参数在未被人为设置之前均有个默认值,而且它们也具备优先权,“Debugger”的优先权是最高的,所以它是第一个被读取的参数,如果该参数未被设置,则默认不作处理,如果设置了这个参数,情况就变得复杂了……

[1] [2] [3] 下一页

责任编辑:朱倩  联系方式  Email:朱倩
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客: 没有了
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关黑客
    解析映像劫持技术
    玩转映像劫持
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号