42807933 暗组
一、工具
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、对瑞星表面查杀有特效的压缩壳:撅北压缩
……