2005年是免杀技术突飞猛进的一年,越来越多的人熟悉了简单的PE文件免杀操作。而杀毒软件也是在查杀方面下足了功夫,使得修改文件变得越来越困难。但是,无论定位和修改多么麻烦,只要杀软利用的是特征码扫描,PE文件就可以通过相对简单的特征码修改达到免杀。而CCL一直没有涉足的方面是脚本免杀,坛里也有朋友让我改进一下,因此最近给CCL加上了定位脚本特征码的功能,并对一款asp木马进行了测试,结果怎么样呢?
这里我选择了海阳顶端网ASP木马2006版。由于并不知道杀软是怎样定义脚本文件的特征码,所以我的操作与定位PE文件相同。杀软仍用大名鼎鼎Kaspersky。先查一下吧,卡巴报警发现Backdoor.ASP.Ace.aw。注意末尾的aw,这是杀软对同一个文件不同版本的特征码定义,有时我们需要运用定位过程中版本号的变化来确定特征码的位置。
首先假设将特征码定位器CCL设置成手动定位,生成文件200个,打开海洋的木马主文件2006.asp。这时弹出了定位范围选择窗口,由于脚本文件不是PE文件,因此没有分段,整个文件就是一个整体。如图1所示,段名为整个文件,段大小就是整个文件的大小。
screen.width-333)this.width=screen.width-333" border=0直接点确定,对整个文件进行定位。生成文件完毕后对目标进行查杀,结果,只剩下一个文件没有被杀,OUT_00000000_000001C3,这说明当从偏移0开始1C3个字节的数据被填0时,该文件免杀。我们看一下这里是什么。
代码:
脚本文件我不太熟,但总比改汇编指令简单,试着修改一下吧,原则还是不能破坏原文件功能。我们知道,asp中代码是在之间的,于是我们在每一个前插入一个,就像汇编插入nop空指令一样。保存修改,再用卡巴查一下。还是报警,但是这次显示的是Backdoor.ASP.Ace.w。这就说明:我们刚才修改是特征码中的一处,但不是全部,也就是说我们把aw中的a代表的特征码改掉了,但是w仍然在。
我们再用CCL打开修改过的2006.asp,设置保持不变,再重复上述步骤。经过查杀后,200个文件剩下了6个。看一下结果
-------------定位结果------------
序号起始偏移 大小 结束偏移
000100000000000001C3000001C3
0002000140A2000008CF00014971
第1段仍是在文件头部。我分析是卡巴在对脚本文件检测前会分析文件的完整性,而1号结果正好将“<%”给替换掉,这样的脚本代码是没法运行的,因此卡巴就不认为它有毒。(卡巴对PE操作也存在同样问题,这也是很多人用CCL定位卡巴总是遇到结果定位在PE文件头部的原因。)我们看2段处是什么,该段结果范围较大,我们找有“特色”的改。最终目标定在如下语句:
代码:
我们将“文件上传成功”改为“上传成功”,保存后再检测。OK,免杀成功了。运行一下试试,海洋的各项功能正常。当然,文件上传成功后的提示已经变了。如图2。
screen.width-333)this.width=screen.width-333" border=0总结一下:卡巴对恶意脚本的定义仍是沿用特征码的方式,且明显没有PE文件的特征码定义那样复杂。希望杀软早日在检测方式上产生根本性的改变