制作一个捆绑程序

制作一个捆绑程序,第1张

捆绑程序是将一个或多个程序绑定成一个独立的exe,避免依赖的文件(如DLL)过多而影响传输/存储,常用于一些恶意软件。

OpenArk的Bundler即是这样一个功能,支持文件以及文件夹等捆绑成一个exe,同样支持脚本。

这里我们选了winhex(一款流行的编辑器),把它们放入文件夹中,命名shadow

winhex 17.2 SR-6目录是winhex安装后的文件夹

shadow.bat (用于测试)

shadow.vbs (用于测试)

在列表里找到winhex.exe,直接右键 Use this ICON,或者Select ICON选择一个图标(exe/ico皆可)。

Save to 保存到exe即可,例如Winhex.exe。

运行程序前,先使用OpenArk的命令工具,输入.cmd net user查看当首谈前用户列表者信碰。

运行程序,结果如图:

此时,再来看我们cmd添加用户,发现已经shadow用户已经成功添加:

OpenArk的坦兄捆绑器Bundler是一个通用的功能,同时也在不断完善,读者可自行测试。

文件捆邦是指将两个不同的文件合并成一个,一码基般该功能被用来捆绑木马或脚本病毒,大多是可执行程序相捆绑,捆绑之后文件大小发生变化,当该捆绑文件被下载之后,它包括两个部分,一个是正常的程序或文件,另外一个就是脚本或木马,迟答谨常常被用来举旅盗号,另外影音文件也常常被捆绑脚本,也就是在文件中插入一个脚本,当播放到脚本位置时,会强制d出窗口,如果捆绑的是恶意脚本,常常在背后下载各种病毒和木马。

一、 编程技术实现

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

二、 封装技术实现

封装出了用到工具,对于一些隐蔽性高的一般是编程封装。

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

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技术加了后门。可谓防不胜防的综合方式。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8246470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存