笑里藏刀——也谈文件捆绑技术

导读:
  笑里藏刀
  ——也谈文件捆绑技术
  作者:[HBU]小金
  一、眼睛,我凭什么相信你?
  某天,QQ上有朋友给小白发了个编译成EXE文件的精彩Flash,Flash的确很好看,把小白逗得哈哈大笑。可是才过一会儿,他就笑不出来了:光驱不停弹出、鼠标乱跑、文件被删除……在他手足无措的时候,电脑突然重启,系统彻底瘫痪。
  这是出现在许多描写黑客入侵的文章不约而同采用的“经典”题材,有朋友看了觉得奇怪:一个Flash文件都会造成这么大破坏?那我怕怕,我不看Flash了……
  有时候我真不得不佩服某些朋友举一反三未雨绸缪的态度,同时也理解他们的害怕,是啊,谁能告诉我,眼前的文件到底是什么?但是也不要太过于紧张了,留意那些文章后面一般都会有的说明:“原来这个Flash被捆绑了木马。”
  可是另一个问题又来了:什么是捆绑?
  二、步入文件捆绑——从自解压文件说起
  提起文件捆绑,许多朋友都会邹眉头,可是提起压缩文件,相信不会有人感到陌生。不知道大家有没有注意过一般压缩工具都会带的一个功能:生成自解压文件。这样压缩出来的文件是一个可执行文件,运行它就释放出整个压缩包了,有这样一个功能的确方便了用户,一些安装程序也是把自身做成自解压文件,可见这个方法的普遍性。
  产生一个自解压文件的步骤如下:
  1.把所有文件进行压缩编码,合成为一个普通压缩包
  2.压缩工具产生一个文件外壳,写入压缩包的文件信息
  3.把压缩包封装进这个文件外壳里,最终产生的可执行文件就是我们要的
  一个自解压文件就是这么简单,那么,它与文件捆绑技术有什么关系呢?最大的关系就在于文件外壳。自解压文件和捆绑程序都是给原来的文件加了一个文件外壳,而它们的区别在于编码、用途、运行方式。
  让我们先理解文件捆绑的概念:有一个可执行文件,它外表看起来并没有什么不妥,图标、把那版权也没问题,但是当你运行它的时候,它秘密分解成多个文件,只让其中一个或多个显示出来(通常是正常的,例如Flash),而其他程序(有害的)都是偷偷运行,让用户在不知不觉中受到侵害。实现这种“母鸡带崽”的技术就是“捆绑”(Bind),其实它不神秘,自解压文件就是一个光明正大带崽招摇过市的文件捆绑人员。
  //文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金
  但是我们不能把自解压文件称为“捆绑”,为什么呢?现在,来看看一个捆绑文件是怎么产生的:
  1.文件捆绑器产生一个文件外壳,把用户选择的可执行文件数量、体积、运行方式写入这个外壳里
  2.在这个文件外壳后部追加可执行文件的数据,每个文件之间可能有特殊区别符号。
  3.根据用户设定的文件图标、其他配置信息重写资源段
  就这样,一个危害人间的捆绑文件产生了,你能认出来吗?
  说白了,文件捆绑就是把几个可执行文件合并在一起,当用户运行这个文件集合体时,管理集合体的分离代码自动把每一个文件分离出来并偷偷执行,我们只要用自解压文件的知识就可以理解它。
  三、实战分析捆绑文件
  1.文件捆绑
  EXE Bundle是一款比较强大的EXE捆绑机(EXE Binder),它支持最多10个文件的捆绑,我把冰河控制端作为用户程序,其他一大堆后门作为后台运行程序,捆绑界面如图1。
  最后生成一个程序,看看图标,还认识吗?不过看看体积……(图2)
  2.分析内部
  用eXeScope载入文件(图3),发现什么问题没有?文件头部冒出两个EXEB字段,资源段里出现多个打不开的字串表,估计这些表就是分别对应每个EXE的分段。不同的捆绑器会产生不同的文件头部,但是追加文件的方法都一样的。
  太复杂了?那么现在用二进制编辑工具打开它,搜索ASCII字符“This”,看看你发现了什么:
  在第二个“This”的上面,我们看到这个
  ====================================================
  bundle.INI
  [Data Files]
  //文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金
  ExtPath=1
  Attrib2File1=1
  [Delete Box]
  CheckBox7=0
  [执行文件]
  File1=1
  [Name Files]
  File1=bundle.exe
  File2=G_CLIENT.EXE
  File3=G_SERVER.EXE
  File4=GetAdmin.exe
  File5=WinS.exe
  File6=server.exe
  File7=HAll.exe
  File8=
  File9=
  File10=
  File11=
  ======================================================
  这是一段配置文件,显然,它作为一个分界线把文件外壳与文件集合体分开了,不同的文件捆绑器产生的信息不同,不必太计较这个,继续往下看:
  //文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金
  1.G_CLIENT.EXEMZP
  2.G_SERVER.EXEMZP
  3.GetAdmin.exeMZ
  4.server.exeMZP
  如果你研究过一个程序的内部,就会知道我们查找“This”的原因:这是Windows下程序在DOS环境下运行显示的出错字符串,位于程序的头部。而这些“*****MZ”就是每个程序的起始段。
  继续找下去,所有捆绑文件的头部都被发现了(图4),但是在最后一个程序后面找不到多余代码了,所以可以证明文件捆绑器是把自己放最前面,其他文件都塞后面的。
  3.小结
  分析这个捆绑文件可以得知,文件捆绑器仅仅把程序代码追加到文件外壳的尾部,并且改写它的配置信息,对程序代码并没有做任何编码处理,因此文件体积会相对扩大。
  所以,可以对文件捆绑技术下个简单的概括:所谓文件捆绑,就是把多个可执行文件合并在一起,运行时偷偷释放出来所有并全部执行。
  四、教你几招——与自解压文件的区别、防范捆绑文件的方法
  如果你看到这里已经大彻大悟,那么我的苦心算是没有白费,如果还迷糊,那就看这里的概括……
  与自解压文件的区别:
  首先让我们看看两种文件的结构图(图5)。自解压文件仅仅是在原有的压缩包上加了个解压缩的可执行文件头,捆绑文件则是另一种结构体。但是从运行结果上看,它们是相同的。
  但是,如果要具体区分,它们仍有本质上的不同:
  1.自解压文件是压缩所有文件,并且大部分仅仅做释放文件功能;捆绑技术是集合可执行文件,释放后全部运行。
  2.自解压文件里一般只有一个头部,捆绑技术产生的文件一般有多少个程序就有多少个头部
  3.自解压文件体积一般比原来的文件集合要小,捆绑技术产生的文件却要大一点点
  //文章出处:网络技术论坛(http://bbs.nettf.net) 作者:小金
  4.自解压文件一般难以再处理,捆绑技术产生的文件可以再加壳、压缩。
  如何防范捆绑文件?
  1.不要随意打开别人给你的文件
  2.用字处理软件打开文件,如果查找到多于2个的“This program”字符串,那它一定是捆绑文件(这几乎是万能药)
  3.杀毒程序的监控(不如人工准确)
  4.对于一些捆绑器产生的伪造Flash文件之类,只要用一款查看文件调用函数的工具打开,如果看到调用了wsock32.dll、winsock.dll之类的,必然是木马无疑
  5.消除对捆绑文件的恐惧心理!要明确一点,它们只对可执行文件有效,不是随便一张图片都能捆绑的!

本文转自
http://bbs.nettf.net/forums/index.php?showtopic=33556
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值