stig 舒马赫:软件后门捆绑技术曝光与防范

来源:百度文库 编辑:中财网 时间:2024/04/28 19:18:51
 【IT168 专稿】一些捆绑后门的来源起因:盗版使得一些小的软件厂商开发的共享软件没有市场,不得不与一些大的厂商的软件进行OEM捆绑销售,这样也使得自己带来了一定的收入。一般通过这种捆绑不会对我们造成什么危害,而下面两种方式则是主要来源。一些人为了谋求利益长将一些弹窗插件捆绑在一些常用软件中,这种靠广告来谋取利益,也称“病毒营销”。

    还有一些计算机黑客为了能广泛的在互联网上传播自己的病毒、木马程序及各类的恶意程序在一些软件中也加入后门 。俗话说“知己知彼百战不殆”,只有软件后门的加入方式才能除去它。后门没有标准的分类,例如有人把后门分为,网页后门,C/S后门,线程插入后门,扩展后门,root kit后门等等。当然本篇文章所指的后门比此分类更广义一些。本问所指的后门指软件中夹带的灰色软件(流氓软件,间谍软件,广告软件等)和黑色软件(病毒,蠕虫,ROOT KIT,木马,僵尸软件等)。在软件中加入后门的技术一般分为以下几种方式。另外对于下面的分类,不是严格划分的,你会发现捆绑里面封装里面都会需要编程的部分。

    一、 编程技术实现

    编程的实现有很多种实现方式,当然对于一个会编程的人来说是好实现的,作者可以直接写个CMDSHELL代码直接加在软件中,或者写个下载者(具有从网络下载可执行程序并执行的可执行程序)或者把别人写好的灰鸽子的服务端PCSHARE的服务端直接加在里面。这种是后门与程序集成的,一般从软件本身发现不出什么破绽。但是对于集成下载者的,如图1,图2,是有破绽的。

                                    
      
                                   图1                                                                                  图2

 

    打开“ResScope编辑器”客户端程序,单击“文件”菜单,选择“打开”选项,找到事先准备的软件后门程序,然后单击“打开”按钮导入,资源栏会出现软件内部的基本结构。一般看到了如图2那里,有某某URL和XXX.exe的信息这个多半是后门的特征。对于后门的实现可以结合后面我们将要介绍的X-CODE和ROOTKIT的方式来实现。这里对编程的实现,不做多说,因为下面的方式都是需要用到编程的,之所以把编程放在前面,是因为它是核心。

    二、 封装技术实现

    封装出了用到工具,对于一些隐蔽性高的一般是编程封装。
    1、 用软件包制作工具进行封装(如用FilePacker),把后门也封装进去,在封装好的文件释放到硬盘的时候,悄悄的自动运行了封装的后门。这个想必很多人都吃过这个、的苦头,例如去某个站上下载东西安装的时候就不幸中招了。这种可能被很多软件捆绑,在安装时就会出现重复的现象,CNNIC中文邮件网址、上网助手、划词搜索、网络猪、小蜜蜂、百度搜索工具条、青娱乐等软件就出现在多种软件里被集成使用。如果是装了弹窗广告软件更可怕。不但影响心情,更占用大量系统资源使计算机无法工作。

    2、 代码封装技术
    简单的方式:有编程基础的人,写一段代码将程序A和后门B都封装到可执行程序C中,在执行C的时候,先执行A在通过一段代码跳到B,把A的属性信息图标都换成A的,这样在执行C程序的时候,A与B都执行了。
复杂一点的方式和写壳差不多,写个stub,把宿主附加到它后面,替换原文件;目前很多XX加壳工具就是这样写的,称为非经典壳,更类似捆绑工具,在自己写的stub里
可以加上自己想要的更多的功能,STUB就是后门,或者STUB不是后门,把宿主附加到后面再把后门附加到后面也可以。甚至带个图标,熊猫烧香的原理里面有点类似这个原理。

    3、 用WINRAR进行封装。这里不做详细介绍了,您可以在BAIDU里面搜索:自解压缩木马制作,会有大量的文章。 

三、 捆绑工具实现技术

    木马工具里面有一种工具叫捆绑机。捆绑工具将后门加入软件简单化了,但是它的技术是发展的,且也是随着发展由潜入深的。

    所谓捆绑机是将两个或两个以上可执行文件或文本文件图片格式的文件或其他格式的文件捆绑在一起,成为一个可执行文件,在执行这个文件的时候,捆绑在里面的文件都被执行。捆绑工具的原理也不尽相同,简单介绍下面三种。

    1、 这个要说的和前面编程代码实现封装那个相类似,直接把A和B文件放在一起,中间通过一段代码把文件释放到某个文件夹中去,然后使A和B一起执行,但是这样做出来的可执行文件,非常容易被发现,开ResScope编辑器,单击“文件”菜单,选择“打开”选项,找到事先准备的软件后门程序,然后单击“打开”按钮导入,资源栏会出现软件内部的基本结构。这个里面很容易发现资源项很少,两个或者三个,导出后就是两个独立的可执行文件,后门也原形毕露了。这种捆绑机是传统的捆绑机。当然现在借助于加壳工具加一次压缩壳壳或加多重或加加密壳也是很难发现的。

    2、 融合式捆绑,这种结合了X-CODE的技术。学过编程或者了解PE结构的人都知道资源是EXE中的一个特殊的区段。可以用来包含EXE需要或需要用到的其他东西。只需要BeginUpdateResource 、UpdateResource和EndUpdateResource这三个API函数就可以了这三个API函数是用来做资源更新替换用的。作者只需先写一个包裹捆绑文件的头文件,文件中只需一段 释放资源的代码。而捆绑器用的时候先将头文件释放出来,然后用上面说的三个API函数将待捆绑的文件更新到这个头文件中即完成了捆绑。

    3、 编译捆绑技术实现。是将要捆绑的文件转换成16进制保存到一个数组中。像这样 muma:array[0..9128] of Byte=($4D,$5A,$50....$00);然后用时再用API函数CreateFile和WriteFile便可将文件还原到硬盘。这里稍稍学过编程的都知道。代码中的数组经过编译器、连接器这么一弄。就这种方法而言,目前还没有可以查杀的方法。这种方法可以利用编程辅助工具jingtao的DcuAnyWhere或Anskya的 AnyWhereFileToPas来实现。
至于编程的细节部分用到各种手段,本人也不是编程高手,甚至说不会编程。也不能多说什么,本文也不过作为认识性的文章。

    四、X- CODE技术

    先来介绍下什么是X-CODE。X-CODE是一段代码可以具有独立功能或不具有独立功能的调用的代码。可以编程实现和反汇编实现。这个名词来自于一本国外翻译的书中。对于本文的介绍谈不上技术,只能作为认识吧。

    X-CODE的实现需要做三个方面的工作:1、将其植入宿主(本文把要后门的文件叫做宿主),2、在程序启动之前或者执行过程中钩住控制。3、必须确定在宿主文件中对其有重要作用的API函数地址从而保证X-CODE能够被顺利执行。PE的结构有点象 DNA的结构,存在空白地带和功能地带,正因为PE文件中区段中存在空隙,这个就是X-CODE能够实现的关键所在。

    A1B2C3D4E5

    例如上面的一串,数字代表PE的空白地带,我们可以把XCODE查在1,2,3,4,的任何一处,只要空白足够大。或者将一段X-CODE支解,插在1那里一部分,2那里一部分,3那里一部分,最后通过代码在连接起来。当然在实现的过程中一定没我说的这么容易,要保证原来程序不遭到破坏。一般这种X-CODE是具有独立功能的。例如可以是个下载者或者CMDSHELL后门。这个方面的工具也有,以前有个叫见缝插针的工具。这个工具可以将一个很小的可执行文件插到另一个比较大的可执行文件中去。

    再介绍一种调用的方式的。例如某些大型软件不是一个单独的可执行程序,由若干个程序组成的,其中有个独立的主程序,可以在主程序中添加导入函数,添加一个导入函数,宿主会主动加载你的放在程序目录中的dll,因为程序执行过程中,先搜索程序本身的目录,然后再搜索系统目录。

    比较隐蔽,宿主体积和入口可以不变,但宿主是不完整的,没你的dll跑不起来这种方式比较隐蔽,但是如果没有你放在文件夹内的DLL,主程序运行不起来的。 

   五、 技术综合

    这个依照个人发挥了,举个简单的例子,软件加后门的人写了这样一个软件,在软件中需要第三方软件UPX进行压缩,把命令版UPX压缩可执行程序也集成进去了,而作者没有在软件本身做文章,而是对UPX做了手脚,利用 X-CODE技术加了后门。可谓防不胜防的综合方式。

    六、如何防范

    以上是对一些后门技术的简单总结。对于技术来说是无止境的,以上算做认识性的总结,高手不要见笑,错误之处还望指教。
双击某个被捆绑后的程序基本上看不到太多的表现形式,唯一能觉察到的是鼠标的箭头状态快速的变化着,然而被捆绑程序中的恶意程序即除了正常程序体本身)已经在后台被安装完毕并已被加载到内存当中了。如果是病毒或木马、后门之类的程序,往往已经非常隐蔽的驻留在你的系统中了,并在系统的启动项目列表中加入了自身。对于后门的防范,以下也作出一些基本的总结

    一、 以借助一些反捆绑工具进行检测,如下图。



 
图3

    二、 用C32ASM打开可疑文件搜索.exe或者http://这样的字符串,看看有没有整个象http://www.xxx.com/xx.exe这样的URL信息,如果有多半是带了下载者后门。

    三、 硬盘监测,注册表监测。利用一些监测软件(如Filemon  Regmon  木马辅助查照器2005  下载者及其监视器 TcpView等)将硬盘和注册表监和端口监视起来以后再运行那些你不确定是否被捆绑 的程序。这样,一旦硬盘和注册表出现变化,或有文件新建,或有文件和注册表改变都会被记录在案。这样查找起来就方便多了。

    四、一些建议性问题。为了远离间谍软件广告等流氓软件的痛苦,建议下载一些工具软件时候最好去官方或者软件下载大站去下载。这样虽然不是绝对的安全,但起码也作到了放心。另外要对自己的系统及时地打补丁和对杀毒软件升级。即使中了招也让一些后门无法存活在您的系统中。

    信息安全最弱的环节,仍然取决于电脑终端,最终用户的安全意识将决定整个系统的命运。本文很好的诠释了程序封装时捆绑恶意软件的原理,也为防范此类攻击行为提供了对应的解决方案。共享软件的生存尚存危机的今天,软件作者为获取收益,不得已选择了捆绑第三方软件的作法,实在是件悲哀的事情。捆绑木马就是赤裸裸的犯罪行为,应该受到BS和制裁。正如文章结尾描述的那样,在下载软件时,应尽可能选择大的网站。安装软件时,应该留个心眼,仔细看清楚提示信息。