网络安全 频道

软件后门捆绑技术曝光与防范

    三、 捆绑工具实现技术

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

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

    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,主程序运行不起来的。

1
相关文章