菜鸟也来对付最流行的几种病毒捆绑器
菜鸟也来对付最流行的几种病毒捆绑器
作者:lvvl 来源:赛迪网
【编者按:我们经常听到有人说“我中毒啦”、“我的文件被感染”啦。而且很多时候人们会发现,病毒被查杀的同时,自己的文件也被破坏了,这一切其实都是和病毒的捆绑技术有关。本文内容仅供参考,切勿用于不当之处!】
最近不知怎么搞的,一夜就冒出许多捆绑机,害得我等菜鸟苦不堪言。今天就各种捆绑器的原理和检测方法做个简单的总结,以帮助各位识别带毒程序。
一、传统的捆绑器 这种原理很简单,也是目前用的最多的一种。就是将B.exe附加到A.exe的末尾。这样当A.exe被执行的时候,B.exe也跟着执行了。这种捆绑器的代码是满网都是。我最早是从jingtao的一篇关于流的文章中得知的。就目前来说,已经没什么技术含量了。
检测方法:稍微懂一点PE知识的人都应该知道。一个完整有效的PE/EXE文件,他的里面都包含了几个绝对固定的特点(不管是否加壳)。一是文件以MZ开头,跟着DOS头后面的PE头以PE\0\0开头。有了这两个特点,检测就变得很简单了。只需利用UltraEdit一类工具打开目标文件搜索关键字MZ或者PE。如果找到两个或者两个以上。则说明这个文件一定是被捆绑了。不过值得注意的是,一些生成器也是利用了这个原理,将木马附加到生成器末尾,用户选择生成的时候读出来。另外网上流行的多款“捆绑文件检测工具”都是文件读出来,然后检索关键字MZ或者PE。
说到这里,相信大家有了一个大概的了解。那就是所谓的“捆绑文件检测工具”是完全靠不住的一样东西。
二、资源包裹捆绑器 就这原理也很简单。大部分检测器是检测不出来的,但灰鸽子木马辅助查找可以检测出捆绑后未经加壳处理的EXE文件。但一般人都会加壳,所以也十分不可靠。这个学过编程或者了解PE结构的人都应该知道。资源是EXE中的一个特殊的区段。可以用来包含EXE需要/不需要用到的任何一切东西。利用这个原理进行100%免杀捆绑已经让人做成了动画。大家可以去下载看看。那捆绑器是如何利用这一点的呢?这只需要用到BeginUpdateResource、UpdateResource和EndUpdateResource这三个API函数就可以搞定。这三个API函数是用来做资源更新/替换用的。作者只需先写一个包裹捆绑文件的头文件Header.exe.头文件中只需一段释放资源的代码。而捆绑器用的时候先将头文件释放出来,然后用上面说的三个API函数将待捆绑的文件更新到这个头文件中即完成了捆绑。类似原理被广泛运用到木马生成器上。
检测方法:一般这种很难检测。如果你不怕麻烦,可以先将目标文件进行脱壳。然后用“灰鸽子木马辅助查找”或“ResTorator”一类工具将资源读出来进行分析。但这种方法毕竟不通用。所以还是推荐有条件的朋友使用虚拟机。
三、编译器捆绑法 暂时不知用什么名字来形容,所以只能用这个来代替。这种方法相当的阴险。是将要捆绑的文件转换成16进制保存到一个数组中。像这样
muma:array[0..9128] of Byte=($4D,$5A,$50....$00);
然后用时再用API函数CreateFile和WriteFile便可将文件还原到硬盘。这里稍稍学过编程的都知道。代码中的数组经过编译器、连接器这么一搞。连影都没了。哪还能有什么文件是吧?所以就这种方法而言,目前还没有可以查杀的方法。这种方法可以利用编程辅助工具jingtao的DcuAnyWhere或Anskya的AnyWhereFileToPas来实现。
四、最最毒辣的一种 因为暂时用的人较少,且危害性及查杀难度太大,所以就不公布了。此法查杀方法通用性极差。如果流行,估计大家连动画都不敢下着看了。
补充:可以利用一些第三方工具将硬盘和注册表监视起来以后再运行那些你不确定是否被捆绑的程序。这样,一旦硬盘出现变化,或有文件新建,或有文件改变都会被记录在案。就算是查找起来也方便一点。
安全技巧之教你学会分离带木马的文件
作者:塞北|谷子熟了吗 来源:赛迪网安全社区
第一步:用Ultraedit的十六进制方式打开绑定程序,选中第二个mz到第三个mz之间的内容(即第二个文件),将该部分复制。然后新建一个文件,粘贴,保存为exe文件。
第二步:选中第三个mz至文件末尾之间的内容(即第三个文件),同样复制,新建文件后粘贴、保存为exe文件。
第三步:现在你要通过检查两个文件的图标及大小来判断哪个文件是所需的正常程序。一般来说,所需程序文件与捆绑后的图标一致,且文件体积较大的那个文件就是我们所要的原文件。
揭秘融合多种传播方式的蠕虫病毒设计
作者:lvvl 来源:赛迪网
【编者按:以往的病毒一般只会采取一种传播方式,而现在,特别是“熊猫烧香”病毒的出现,多种传播方式的融合成为了一种新的趋势。本文内容仅供参考,切勿用于不当之处!】
一个典型的蠕虫病毒有两个功能型部件:传播和破坏,流行的蠕虫病毒大都是利用操作系统或者应用程序的漏洞(以弱口令和溢出最为常见),但常常并不会对宿主机造成“致命”的破坏。这两个特点使蠕虫病毒比普通电脑病毒传播得更快,影响力更大。一般来说,单一的蠕虫病毒只针对某种特定的漏洞进行攻击,所以一旦这种漏洞得到大范围修补,病毒也就没有了生存空间。
更新这种设计,我把传播部件拆分开来:把扫描、攻击和破坏脚本化,主程序则负责解析这些脚本。例如针对ftp弱口令进行扫描,我们可以定义如下脚本:
uid = iscript-0a21-2331-x #随机唯一编号
using tcp;
port 21;
send “user anonymous”;
send crlf;
send “pass fake@nothing.com”
send crlf;
if (find “200”) result ok;
next;
解析了这段脚本后(我想这种脚本是很容易读懂的),我们再定义一系列的过程,把我们的蠕虫体upload上去,一次完整的传播动作就完成了。如果是溢出漏洞,为了简单起见我们可以采集远程溢出的数据包,然后修改ip地址等必要数据,再转发溢出数据包进行溢出(这种情况下要实现connect-back就不容易了,不过这些具体问题就待有心人去研究吧),例如:
using raw;
ip offset at 12;
send “\x1a\xb2\xcc” ……
主程序在完成传播后留下一个后门,其他宿主机可以通过这个后门与本地的蠕虫病毒同步传播脚本,这样每次有新的漏洞产生,宿主机的传播方式可以很快地得到升级。我们当然不会仅满足于这样一个蠕虫程序,扫描/攻击脚本的传播过程也是需要仔细处理的。
我们希望适应力(fitness)最强的脚本得到广泛的应用(看起来有点类似 蚁群算法 和 ga),所以我们要求得每个个体的fitness,当它和另一个体取得联系的时候就可以决定谁的传播脚本将取代另一个:
fitness = number of host infected / number of host scanned
但也不能仅凭fitness就修改传播脚本,我个人觉得一个合适的概率是75%,20%的机会保持各自的传播脚本,剩下的5%则交换脚本。这样在维持每种脚本都有一定生存空间的情况下使适应性最好的个体得到更多的传播机会,同时,一些在某种网络环境下适应性不强的脚本也有机会尝试不同的网络环境。











没有评论:
发表评论