|
发表于 2008-10-27 16:57:14
|
显示全部楼层
下面我们在“区间设定”里右键单击特征码区间,在弹出的菜单中选择“复合精确定位此处特征”,然后重复上面的操作,直到你认为[单位长度]已经小到很方便更改的时候,特征码的定位就算结束了。
好了,一口气说了这么多,不知道刚入门的朋友是否懂得一些MyCCL的用法了没有……
但是上面我们定位的是文件特征码,还有内存特征码没有定义,这里我们要用到CCL的内存特征码定位功能,打开CCL后,我们依次选择[文件]→[特征码验测]→[内存特征码] 。
在弹出的对话框中选择我们要进行免杀操作的木马,然后会进入“定位范围选择窗口”。
由图中可知,第一个CODE段的偏移量为00000400,也就是说我们可以用00000400做为起始位置,那么我么就在用户输入区的“起始位置”处填写 00000400,下面的那个验测大小怎么填写呢?看到图22中画线的那个“当前文件大小”了吗?我们可以用WINDOWS系统自带的计算器进行计算,把计算器的“查看”菜单设置为科学型、十六进制、四字 。
然后用当前文件大小的值减去起始值00000400,得到的结果为000B9A00,那么我们就在“验测大小”后填上000B9A00,然后点击“填加区段”按钮 。
最后点击确定,在新弹出的对话框中点击运行,不过需要注意的是,在进行此步操作时一定要打开杀毒软件的所有功能。下面你要做的就是等待……
然而光找特征码是不够的,我们还得学会怎样更改,而关于特征码地更改是非常有学问的!这里为了方便广大读者能学以致用,在此我只介绍部分理论知识,着重介绍实践操作,但是我想请大家注意,免杀的方法象你做完免杀的木马一样,都有生存时间,而过了这个时间,这种免杀方法就变的不在实用,或者免杀效果大打折扣!所以要想真正成为免杀高手,还的打牢基本功,不断创造出新的免杀方法,因为我们是在与杀毒软件厂商的专业技术人员“斗法”啊!
关于需要注意的问题就先讲的这,下面我带大家先来了解一下目前更改特征码的办法。
1. 大小写替换(只适用于文件免杀)
适 用 于:出现可识别的英文字母或词组,并且确定其不是相关函数(如输入表函数)。
操作方法:如咱们“实战演习”的第一节讲的一样,只须将大小写替换一下就可以了,例如特征码中出现了A,你只要将其替换为a即可。
原 理:利用WINDOWS系统对大小写不敏感,而杀毒软件却对大小写非常敏感这一特性达到免杀目的。
2. 用00填充
适 用 于:几乎任何情况,但成功率不是非常高。
操作方法:例如我们找到了一处特征码0009EE7F_00000005,那么根据这段特征码信息我们可以知道它的位置在0009EE7F,大小为5个字节,也就是0009EE7F-0009EE83这一段内容 。
一直跟着文章实践操作的朋友肯定有疑问,你是怎么找到那个地址的呢?而我怎么找不到呢?那是因为WinHex的默认偏移量为decimal模式,我们单击Offset栏将其改为16进制模式即可 。
然后我们有选择的一处处地用00填充 。
记住要多试几次,80%的情况下你都能找到一处既能免杀又不影响程序正常运行的区域。对于定义出的内存特征码,只要将其内存地址用一个叫做《便宜量转换器》的小程序转换成16进制偏移量,然后在进行相应操作即可。
原理:由于PE文件的特殊格式以及程序编译语言等问题,使得生成目标代码的效率并不高,难免出现一些“垃圾信息”,而这些信息存在与否对与程序是否能正常运行并不起决定性的作用,而当木马的这部分“垃圾信息”被定义为特征码时,我们完全可以将其删除,而删除的方法就是用无任何意义的00将其替换。
3. 跳到空白区域
适 用 于:几乎任何情况,成功率比较高。
操作方法:还是以特征码0009EE7F_00000005为例子,假如我们使用00填充的方法失败了那么不要多想,接下来马上试试OllyDbg,关于 OllyDbg我就不多介绍了,它是非常棒而且非常专业的一个动态反汇编/调试工具,这里我们只用它来帮助我们进行免杀作业,首先应该做的就是将我们的 16进制偏移量0009EE7F转换为内存地址,因为OllyDbg的工作原理是先将程序释放到内存空间里,然后才能进行相关作业…这里要用到的是一个叫做《便宜量转换器》的小程序,我们用其转换完毕后得到的内存地址为0049FA7F 。
下面我们用OllyDbg打开我们的木马服务端,首先找到一处空白区,并域记下这的地址004A24A5,然后找到我们刚转换过来的地址0049FA7F,先将以0049FA7F开始以下的这三行数据选定,然后单击右键选则[复制]→[到接剪贴板] 。
将其复制到本文文档里备用,然后在将这三行代码一一NOP掉 。
最后右键点击0049FA7F,在弹出的对话框中选择汇编,并写入“jmp 004A24A5”这条汇编指令 。
记住,在点击[汇编]按钮之前一定先把“使用 NOP 填充”前面的勾去掉。然后我们记下汇编后0049FA7F的下面那个地址0049FA84(仔细观察图31)。好,下面我们回到004A24A5这处刚才找到的空白地址 。
然后用刚才汇编的方法把在本文文档里备用的信息一句句地汇编进去,然后在将最后一句代码的下一行004A24AA处加入“jmp 0049FA84”这行代码 。
然后单击右键→[复制到可执行文件]→[所有修改] 。
在弹出的对话框中选择“全部复制”然后保存即可。而对于内存免杀就省去了内存地址转换这一步了。
原理:大家先看图35,由图中可知,正象此方法的名字“跳到空白区域”一样,这种方法的原理就是将原本含有特征码的信息转移到空白区域,并把原先位置的信息全部NOP掉,并在那里加一个跳转指令,让其跳到004A24A5处,也就是我们找到的空白区域,并把原来在0049FA84的信息移到这里,加完信息后在加一条指令让其在跳回去,以使程序连贯起来。
4. 上下互换
适 用 于:几乎任何情况,成功率比较高。
操作方法:先用OllyDbg载入木马程序,假定其特征码为0009EE7F_00000005,我们还是先用《偏移量转换器》将其转换为内存地址,上面我们已经知道0009EE7F对应的内存地址为0049FA7F,然后在OllyDbg中找到相应位置,利用上面“跳到空白区域”里介绍的修改方法将 0049FA7F上下两句代码调换位置即可。而对于内存免杀就省去了内存地址转换这一步了。
原 理:杀毒软件的特征码定位是严格按照相关偏移量于内存地址进行的,而其实我们的应用程序中的机器码执行顺序的先后在一般情况下是没有死规定的,所以我们只需将其上下互换,杀毒软件自然就不认识了。
5.ADD与SUB 互换
适 用 于:在内存特征码中出现ADD或 SUB指令的,成功率比较高。
操作方法:用OllyDbg载入木马程序,假定其特征码所对应的地址中有ADD或SUB指令,例如00018A88:XXXXX 00000088 ADD ECX 10000000
我们可以将ADD ECX 10000000这段机器码改为SUB ECX F0000000,
更改完毕后保存为EXE文件即可。
原 理:我们都知道1+1=2,我们也知道1-(-1)=2,上面就是利用了这个原理,其中ADD指令的就是加意思,而SUB则是减的意思。虽然被我们互换了一下,但是最终结果还是一样的,可是换完之后杀毒软件就不认识了。
到这里,关于特征码的查找与修改就讲完了,但是除此之外呢?答案是还有许多!!下面我们就一起看看其他免杀方法。
4.)其他免杀方法
改文件头:
这里所说的改文件头包括加头去头,文件加花。关于加头去头,我们还是用OllyDbg。用OllyDbg载入后,OllyDbg会自动停在入口点 。
我们将头三行机器码复制保存起来,然后找到空白区域,用汇编的方法一一将其写入 。
然后在后面写入一条JMP指令,让其跳到初始入口点的第四行,相信一直仔细看本文的朋友一定明白其原理,如果忘了的话可以看上面修改特征码的第三种方法,原理与这差不多,修改完毕后如下所示:
004A2A730000add byte ptr ds:[eax],al
004A2A750000add byte ptr ds:[eax],al
004A2A7755push ebp
004A2A788BECmov ebp,esp
004A2A7AB9 04000000mov ecx,4
004A2A7F^ E9 CCF3FFFFjmp Server.004A1E50
004A2A840000add byte ptr ds:[eax],al
004A2A860000add byte ptr ds:[eax],al
004A2A880000add byte ptr ds:[eax],al
上面的add byte ptr ds:[eax],al就是所谓的空白区域,我们看到改完后的头文件位于004A2A77,所以我们还要用PEditor改一下入口点,打开 PEditor后载入文件,将入口点处的地址改为我们的新文件头地址004A2A77 ,保存后即可。
入口点加1:
打开PEditor后载入文件,将原来的入口点+1即可,例如我们的入口点为004A2A77,加1后应该是004A2A78 ,然后点击“应用更改”即可完成更改。
用这种简便的免杀方法即可以轻松的对付大部分杀毒软件。
用Vmportect加密:
Vmportect 是新一代的软件保护程序,利用虚拟机保护代码,可以对指定的部分区段进行加密,能让被保护的程序复杂化,最开始他被用于PcShare里的SYS文件免杀,效果值得称道!其实对于普通文件他照样发挥的比较出色!下面我们就用他来加密我们的那个存在特征码以0049FA7F开始的区段。打开 Vmportect后载入程序,在“转储”选项卡下的任意地方单击由键,在弹出的菜单中选择“前往地址” 。
然后在弹出的对话框中填入0049FA7F,点击“是”按钮即可跳到相应位置,然后点击“添加地址”按钮 。
并选则是即可,最后点击“编辑”按钮即可对以0049FA7F开头的区段进行加密 。
移动PE段的位置:
关于这种方法,可是绝学!今天借此机会贡献给各位朋友,希望此方法能在你免杀时助你一臂之力!那么修改PE段究竟能起到什么作用呢?首先当然可以达到长期免杀的目的,其次可以保护我们的免杀文件,其他人无法学走我们的免杀方法(A1Pass:要想真正达到这个目的,除此之外你还不能让别人看到这篇文章,所以这期的X档案赶紧全包了吧!呵呵!)。为什么呢?因为一些反汇编工具无法载入经过修改PE文件头的程序。
我们先来看看PE段,怎么看?先用WinHex载入我们的木马 。
看到图中PE那两个字了吗?这两个字的P所在位置就是PE段的入口点,我这里是00000100。我们在仔细看看图43,看看PE下一行的第一个16进制是不是E0?好,下面我们用WINDOWS系统自带的计算器计算一下,得到16进制的E0就是十进制的224。这是什么意思呢?它代表的就是PE段的大小,在WinHex中一行能显示16个字符,224个字符正好是14行,我们将这14行内容复制保存起来,并记住PE段的末尾地址,我这里是 000001EF,最后将这个PE段用0填充 。
最后将我们事先保存的PE段上移,但注意不要超过“This program must be run under Win32”这段内容。由于PE段的上移,其体积必然也就随之增大,而从我们现在PE段所处的00000080到000001EF,总共是368个字节,换成16进制为170,全部更改完毕后如图45所示。
针对瑞星:
先用OllyDbg载入文件,只要将其第一条机器码push ebp改为pop ebp即可躲过瑞星的内存杀毒。
加壳压缩:
加壳是菜鸟的专利,虽然操作简便,但是免杀效果与“报质期”都不尽人意,但是做完免杀后在加个压缩壳还是很有必要的。
加壳免杀的第一步就是要找到好壳,大家没事可以到看雪论坛逛逛,他那里经常有好壳出现。但关于加壳的一些操作步骤我在这里就不费笔墨了,大家下去自己一看就会,其实就是个使用软件的过程。
好了,到这里,我们对木马的免杀就做完了,总共用了七大类共计14种方法!恐怕一时理解起来比较困难。下面我就在用“苏式教育”的方法为各位读者规划一下本文所讲的知识,方便各位读者以后应用与查找。
免杀的操作顺序:
1. 主动查找可能存在的特征码
2. 用CCL等查找特征码,并将其更改
3. 尽可能多的更改输入表函数
4. 更改文件头
5. Vmportect区段加密
6. 移动PE段的位置
7. 加壳压缩
免杀分析:
一、主动查找可能的特征码
操作时注意:有关注册表、文件路径的信息最好只用大小写替换的方法,不要改成其他内容,那样容易出错。
优 点:可以防范未来将要出现的特征码,并且同时可以体验DIY的乐趣,顺便打造自己的“专用木马”。
不 足:无法进行有效的免杀,效果不明显。
成 功 率:几乎100%,只要不改错地方,一般更改后的程序完全可以正常运行。
二、尽量多的更改输入表函数
操作时注意:将输入表函数移动到新位置时,函数名的第一个字母最好在本行开头,另外注意地址的填写规律,不要弄错。
优 点:可以防范未来将要出现的特征码,给特征码的定位带来干扰。
不 足:无法进行有效的免杀,效果不明显。
成 功 率:只要操作上没问题,基本能保证90%以上!
三、用例如CCL等工具查找特征码并将特征码更改
操作时注意:此步骤最需要的就是耐心与细心!不能丢三落四,要及时做好备份,以防不测。
优 点:针对性非常强,免杀中最有效的方法之一。
不 足:只能针对一个杀毒软件进行免杀,无法针对多个杀毒软件进行作业,免杀文件的存活期短。另外,此方法也非常耗费时间。
成 功 率:理论上100%,主要看你的经验与编程、汇编的底子。不过其实只要有足够的]经验与方法,成功率就异常可观了!
四、移动PE短位置
操作时注意:16近制的转换一定要细心,并且时刻不要忘了开头与结尾的位置。
优 点:可延长免杀期,时对付特征码在PE文件头部的必杀技!同时可以保护我们的免杀文件,其他人无法学走我们的免杀方法。
不 足:除加壳外,就无法在对木马文件做进一步加工了。
成 功 率:大约75%左右,不确定的因素太多……
五、更改文件头
操作时注意:删除部分信息时文件结构的变化。
优 点:比较节省时间,免杀效果也很明显,是免杀中的有效方法之一。
不 足:免杀时间不长。
成 功 率:大约80%左右。
好的,到这里本文也快要结束了,不知道大家学会了多少……可以说这篇文章是我下了很大的力气与很大的决心写出来的,里面还是有一些“真玩意”的,希望大家在享受这份精神食粮的时候能同时为黑客这个领域做些什么,希望我们大家一起努力,为黑客正名! |
|