关于源码免杀记录

  • 发表于
  • 周边

一、文件特征码定位:
一般我们先用MyCCL把被查杀文件的文件特征码定位出来,然后用C32判断定位出来的这个特征码是代码还 是字符串,或者是输入表、输出表、版权信息等…定位在不同的地方,就要用不同的方法来进行源码免杀。

如果特征码定位木马服务端的代码里,那么我们就把这个木马用OD载入,然后把特征码旁边(前 面和后面)调用了的API函数记录下来,再到源码里搜索并找到源码
特征码。或者用另外一种"Map定位法", 也就是在编译的时候生成一个map后缀的文件,然后把MyCCL定位出来的文件地址转换为内存地址,再到 map文件里找到这个内存地址对应的行数。但这个方法比起刚才的方法来说麻烦了点,所以就不具体介绍了。

二、源码特征码修改:
把特征码前后调用了的API函数复制出来,然后到源码里搜索这个API函数,在它附近(一般加在前面)加花就 可以了。或者你也可以修改代码,把原来的代码改成能达到同样目的的代码。 如果你不想定位的话,那也可以随便给源码加花,也就是说不特意的去定位特征码,而是随便选一个地方 加花。除非字符串或者输入表函数被杀,不定位加花的方法几乎可以不用定位特征码而达到免杀的目的。

三、示例:
1.交换代码位置
2.代码的合并和分离
3.根据MyCCL定位出来的特征码找出对应的源码特征码位置
4.代码加花指令
5.函数调用交换

源码花指令:
__asm
{
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
:——免杀原理大全——
一、工具
mycll:特征码定位
PEID:查壳工具
PEditor: 入口点修改工具 加花
c32asm
ollybg
oc:文件地址到内存地址 的换算
resscope:资源编辑
zeroadd:加区段的
木马采衣:加花
maskpe,vmprotect:加密
upx,aspack北斗壳:压缩
免疫007:免疫器
二、效果分析
1、加密:vmprotectv1.21和 MASKPE2.0(对瑞星有特效),比较容易过瑞星表面,不能过卡巴
压缩:北斗,UPX:主要是减少体积
加花:对卡巴有特效,通用性比较好
2、北斗+VMpro,但是北斗+maskpe 出错!无壳木马可以先加花
3、无壳木马直接用maskPE22.0可过瑞星表面但是过不了卡巴。
4、无壳木马加一道花指令后再用VMPRO1.21加密可直接过卡巴但是可能无法过瑞星表面
5、经过免杀处理,过几种杀毒软件,加压缩壳后仍免杀过他们,但是北斗除外,棉纱处理国卡巴的木马北斗后可能被卡巴杀
6、测试操作
1)手工加花+掘北压缩,鸽子
先脱壳,在用OD在零区域添加指令(根据字节编写):先找原入口点,零区域,记录其地址(新入口点),指令push eax pop eax add esp 1 inc esp push 004A1E48 retn 保存。用PE修改入口点。能过卡巴,过不了瑞星。用掘北(对瑞星表面有特效)
2)工具加花(花蝴蝶三号)+VMPRO+UPX 。捆绑器
三、手工加花方法
1、直接:OD,记录入口点;找零区域,复制地址(新入口);写指令:push 0 nop add esp 2 inc esp inc esp push exp pop esp push 原入口点 retn 改入口点(新)(lordpe);可以把这段代码保存为二进制以后方便用。
2、去头:复制头,并去掉,填加到空白区域(新地址);再填加花指令。
3、加区:zeroadd加区段,大小一般100左右;OD打开文件,用ALT+M打开内存景象,复制区段入口地址和原程序入口,到区段加花,程序入口地址不变;lordpe修改入口为区段的入口。
4、壳中:UPX压缩;OD打开,记录壳的入口(即原入口);记录零区域地址(新入口)加花(有的壳不能写入,或保存后不能运行);LORDPE改入口。
5、壳中加区:UPX;zeroadd加区;OD,记录壳后入口,ALT+M记录区段入口,在区段里加花; 改地址。
四、编写花指令
1、相关汇编(王国军汇编64讲,汇编指令查询器)
2、花指令变形修改(用花蝴蝶三号给程序加花,OD打开)
1)替换法:把mov eax 程序.地址 jmp eax改为 push 地址 retn
2)添加法:在花指令的上面把nop换成 push eax pop eax
3)移位法:在花指令里把 push eax move xxxxx xxxx pop eax换成pop eax move xxxxx xxxx push eax
4)去除法:在花指令里把 push eax move xxxxx xxxx pop eax换成nop move xxxxx xxxx nop
5)以上4种方法可综合利用
3、编写技巧:
入口地址最好是: push 地址 retn的形式或 jb 入口地址 jnb 入口地址或 mov eax 入口地址 jmp eax ,而不是 jmp 入口地址,因为容易被卡巴查杀。
五、myccl地位原理与使用介绍
1、基本原则:开始位置为代码段的其实地址,风乱长度为物理长度,定位一般选复合定位,正向之程序从上到下恢复,定位内存特征码的时候用到后缀。对体积比较大(1000 5000K)的程序分块个数可少点,第一次一般10快,定位大致位置后可分非50 100块(建议不超过200);体积比较小的程序分块可大点,定位的时间就少。
2、定位黑防鸽子的瑞星文件特征码:用myccl检测出来以后要用C32打开文件把检测出来的数据段填0后用瑞星检测。
3、定位鸽子的瑞星内存特征码:要在上步以后用。
1)TK.loader和myccl放在同一目录,tk.loader用来加载木马到内存。myccl参数与上同,另外加上后缀。
2)点生成,在目录路径上右键用TK.loader带开目录,全部载入内存,用瑞星杀。
3)记录被杀文件名,手工删除。重复上步。
4)定位好以后,用C32ASM打开已免杀的程序,把定位好的内存特征码全部填0,用OD载入,用瑞星查,测试定位是否正确。
4、技巧总结:muccl定位文件特征码效率不错,但是定位内存特征码相对比较慢,而有时候对dll文件内存定位不理想,这时候可以用OD手工定位。
六、免杀工具的组合运用
1、工具回顾:加压缩壳一减少体积为住,部分可过瑞星表面;加密与其他方法组合使用效果较好,一般可过瑞星表面;加花免杀卡巴效果好多,对不常见的黑软这中方法的马杀通用性比较好。
2、工具组合要领:可以对无壳程序直接加密也可在无壳木马加花后再加密;一般在其他免杀工作做好以后加压缩壳;加花可以对无壳,加密后的和加壳的软件做。
3、实例
1)、超级加花器V1.0(最后一个选项)+VMPRITECT V1.21
2)、maskPE2.0 + upx + 加区加花:mask选import;花指令为 push ebx pop ebx push ebx pop ebx inc ecx dec ecx jb 原入口 jnb 原入口 , lordpe改入口
3)、maskPE2.0加密(鸽子):找零区域(00482274即新入口),写入jmp 原入口 ;用lordpe改入口;加密(import).
4、工具组合经验:找特效工具组合,如maskpe 对瑞星表面,加花对卡巴,加掘北也对瑞星比较好 (加花后不能用maskpe)。黑防鸽子棉纱花指令后再用MASKPE,将不能正确运行,但是可直接向上找5字节零区域直接写jimp入口地址,然后改入口,再用mask加密,就可运行 并免杀。
七、PE头反调试
PE头的修改步骤:用C32ASM打开目标,计算PE header的大小(“?”)记录PE头开始地址,把计算出大小的区块向上复制,则PE头增大,将其HEX大小写入(”?“),修改PE头的开始地址。
八、免杀新技术(改壳免杀法)
1、改壳特征码:研究的人少,特征码单一,不脱壳做免杀方便简单,对于放DLL文件类型的木马一定要先脱壳,到处DLL文件分别做免杀。
2、步骤:用myccl定位加壳软件,用偏移量转换器OC查看特征码地址的内存地址,用跳转法修改。
3、技巧:用UPX压缩过的木马程序,有两处跳转都是卡巴的特征码,只要修改任一出都可达到免杀,第一处是离入口点的一处JMP跳转,第二出是最末尾的一处JMP,所一可以直接找到用UPX压缩过的任何木马,可以不用定位。木马复杂的特征码修改经过UPX压缩后就变的简单化。
写花指令的时候找一些比较小的零区域,用一句话花指令等方法,效果不错,这些区域一般写入花指令用 maskpe加密以后程序就回出错,但是用一句话花指令或去头免杀法,然后在用 maskpe 加密,程序不会出错(黑防鸽子的实验结论)。
4、UPX壳的几种免杀方法。卡巴查到鸽子的一个固定地址是一个固定跳转时,就认为是木马。若跳转下面有空为则可用:替换,移位(把”特征代码下移),变换修改,修改头法(把头转移到空白区域再跳到第二句,修改入口),加壳加花。
5、北斗壳的几种免杀。北斗兼容性好,压缩率高,但是有些本来免杀的软件,被北斗压缩后可能被卡巴查杀。写花指令(免卡巴),用VMPROTECT加密可过瑞星表面。polycryptpe也能免杀瑞星表面,007加密可阻止瑞星内存扫描。
6、很多查毒软件只查壳的头几句代码,可将起NOP掉测试,并利用空白区域做免杀;杀毒软件不太注意壳的特征码,所以壳的病毒特征码是单一的,可以很方便的定位和修改。
九、黑防鸽子全免杀:思路是先免杀木马本身(改特征码,加花),然后用工具加密或加压(一般是压缩),最后对壳进行免杀(改壳特征码,加花)。
1、木马本身免杀:修改瑞星内存特征码,手工加花免杀卡巴江民
2、对瑞星表面查杀有特效的压缩壳:撅北压缩