为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 特征码修改技术总结

特征码修改技术总结

2013-07-25 13页 pdf 403KB 12阅读

用户头像

is_677028

暂无简介

举报
特征码修改技术总结 特征码修改技术总结 如今杀软的升级,他们的性能越来越强大,查杀力度和广度都大幅度提高,启发式杀毒 的日益完善,使免杀工作越来越困难。杀软在进步我们小黑也不能落其后啊,我们必须努力 掌握最新的免杀技巧和动向,同时也不能一步登天的忘了我们的基础。而传统的特征码差杀 , 杀软依然在使用。因此要想使我们的木马文件不被查杀,修改文件特征码也是一种常用的方 法,今天就以特征码修改技术给大家做一个总结,献给支持和关心暗组的朋友,也献给免杀 初学者和即将要学习免杀的朋友,本人能力有限,错误之处请大家指出,我们共同学习进步… 一...
特征码修改技术总结
特征码修改技术总结 如今杀软的升级,他们的性能越来越强大,查杀力度和广度都大幅度提高,启发式杀毒 的日益完善,使免杀工作越来越困难。杀软在进步我们小黑也不能落其后啊,我们必须努力 掌握最新的免杀技巧和动向,同时也不能一步登天的忘了我们的基础。而传统的特征码差杀 , 杀软依然在使用。因此要想使我们的木马文件不被查杀,修改文件特征码也是一种常用的方 法,今天就以特征码修改技术给大家做一个总结,献给支持和关心暗组的朋友,也献给免杀 初学者和即将要学习免杀的朋友,本人能力有限,错误之处请大家指出,我们共同学习进步… 一.什么是“特征码” 我们从字面意思上看,就是具有一定特点或特征的一串字符…而这串字符就是被杀软定 义一文件是否是病毒的依据.. 然而稍微专业点就是程序运行时,在内存中为完成特定的动作,要有特殊的指令,一个 程序在运行时,同一内存地址的指令是相同的同一个程序中,一段连续的地址(它的指令相 同),那么我截取这段地址,就可以判断它是不是这个程序。为了防止出现病毒的误查杀, 可以提取出多段特征码。这也就是我们所说的复合特征码. A. 特征码主要又分为:文件特征码,内存特征码,行为特征码,(主动特征码,如瑞星) B. 同时,又分为:单一特征码和复合特征码; 单一特征码就是说,一个程序中的几句代码被杀毒软件做为识别标志。修改掉一处就可以免 杀。 复合特征码:一个程序中的多句代码被杀毒软件作为识别标志。有一处不修改都不能免杀。 二. 修改特征码免杀技术 修改特征码技术,是以杀软查杀特点得来的。杀软会用它们的特征库(也就是我们说的 病毒库)和我们的文件某些字符作对比,如果彼此吻和,就定义为我们的文件为木马病毒。 同时,我们只要修改了它定义出的文件特征码,这样会出现什么情况呢,不用说那就是我们 所说的免杀,也就是用修改特征码技术来达到我们文件的免杀. 三.文件特征码 我们要使一个木马文件免杀就要修改它的特征码,但这些特征码我们如何得来。这就 说到了我们特征码分析,也就是我们所说的特征码定位。而定位的工具有很多,常见也是大 家都觉得好用的有(CCL MYCCL multiCCL等).这就不具体说明,我们重点是特征码 admin 打字机 天野夕文库 admin 打字机 修改. 四.修改特征码常用工具 OD(Ollydbg.exe) C32(C32Asm.exe) 辅助:RestoratRestorator.exe LordPE.exe PEID 0.95.exe 汇编指令查询器(可以很好的帮助我们在修改特征码过程中遇到不认 识的汇编指令时,我们可以用它来查询,了解相关功能)(如下图) 五.修改特征码基础汇编指令 到了这里眼看就要修改了做免杀了。大家别急,有句话说的好:“巧妇难为无米之炊”。 也就是说,我们现在有了好的工具但是你会用吗?如果回答是否定的,那一切还是等于零。 工具的使用我这里就不说了,暗组论坛自己搜,NEW4写的 OD使用说明就很不错,大家可 以看看。好了,我们言归正传。修改特征码需要具备基本的汇编知识,不懂没关系,只要你 肯学肯记,不需要你对汇编了解太深,只要记住常见的指令和它们的作用。大家请注意,这 步是学习免杀即修改特征码最关键的一步,这步学习的好坏,决定你以后修改特征码技术的 高低…这里我给大家列出我们必须去掌握的一些指令,希望大家下来好好背记… 1.算术运算符 ADC:带进位加法 ADD:二进制数加法 DEC:减一 DIV:无符号数除法 IDIV:带符号数(整数)除法 IMUL:带符号数(整数)乘法 INC:加一 MUL:无符号书乘法 NEG:求补 SBB:带借位减法 SUB:二进制减法 XADD:交换并相加 2.ASCII-BCD转换 AAA:加后 ASCII调整 AAD:除前 ASCII调整 AAM:乘后 ASCII调整 AAC:减后 ASCII调整 DAA:加后十进制调整 DAS:减后十进制调整 3.移位 RCL:带进位循环左移 RCR:带进位循环右移 ROL:循环左移 ROR:循环右移 SAL:算术左移 SAR:算术右移 SHL:逻辑左移 SHR:逻辑右移 SHLD:双精度左移 SHRD:双精度右移 4.比较 BSF/BSR:位扫描 BT/BTC/BR/BB:位测试 CMP:比较 CMPSN:串比较 CMPXCHG:比较交换 CMPXCHG8B:比较并换?lt;br>TEST:测试位 5.数据传送 LDS:装如数据段寄存器 LEA:装入有效地址 LES:装入附加段寄存器 LODS:从串取 LSS:装入堆栈段寄存器 MOV:传送数据 MOVS:串传送 MOVSX:带符号扩展传送 MOVZX:带零扩展传送 STOS:存入串 XCHG:交换 XLAT:换码 6.标志操作 CLC:清除位标志 CLD:清除方向标志 CLI:清除中断标志 CMC:进位标志求反 LAHF:标志送 AH POPF:标志出栈 PUSHF:标志进栈 SAHF:AH送标志寄存器 STC:进位标志置 1 CTD:方向标志置 1 STI:中断标志置 1 7.输入/输出 IN:输入字节或字 INSN:串输入 OUT:输出字节或字 OUTSN:穿输出 8.逻辑操作 AND:逻辑与 NOT:逻辑非 OR:逻辑或 XOR:异或 9.循环 LOOP:循环直到完成 LOOPE:相等时循环 LOOPZ:为零是循环 LOOPNE:不相等时循环 LOOPPNZ:不为零是循环 LOOPPNEW:不相等时循环 LOOPNZW:不为零时循环 10.处理器控制 HLT:进入暂停状态 LOCK:封锁总线 NOP:无操作 WAIT:置处理器于等待状态 11.堆栈操作 ENTER:建立堆栈帧 LEAVE:结束堆栈帧 POP:字出栈 POPF:标志出栈 POPA:所有通用寄存器出栈 PUSH:字进栈 PUSHA:所有通用积存器进栈 PUSHF:标志进栈 12.串操作 CMPS:串比较 LODS:从串取 MOVS:串传送 REP:串重复 REPE:相等时重复 REPZ:为零时重复 REPNE:不相等时重复 REPNZ:不为零时重复 SCAS:串扫描 STDS:存入串 13.转移(条件) INT溢出中断 JA:高于则转移 JAE:高于或等于则转移 JB:低于则转移 JBE:低于或等于则转移 JC:进位为 1则转移 JCXZ:CX为零则转移 JE:相等则转移 JG:大于则转移 JGE:大于或等于则转移 JL:小于则转移 JLE:小于或等于 JNC:进位为零则转移 JNE:不相等则转移 JNG:不大于则转移 JNGE:不大于或等于则转移 JNL:不小于则转移 JNLE:不小于或等于则转移 JNA:不高于则转移 JNB:不低于则转移 JNBE:不低于或等于则转移 JNAE:不高于或等于则转移 JN不溢出则转移 JNP:奇偶位为 0则转移 JNZ:结果不为零则转移 JNS:结果为正则转移 J若溢出则转移 JP:奇偶位为 1则转移 JPE:奇偶性为偶则转移 JP奇偶性为奇则转移 JS:结果为负则转移 JZ:结果为零则转移 14.转移(无条件) CALL:调用过程 INT:中断 IRET:中断返回 JMP:无条件转移 RET:返回 RETN/RETF:近返回/远返回 15.类型转换 CBW:字节转换为字 CDQ:双字转换为四字 CWD:字转换为双字 CWDE:字转换为扩展的双字 大家不要怕辛苦,在你要动摇的时候,你就想想自己做出自己的免杀那种成就是多么开 心。。免杀需要我们的坚持和不断创新,它的乐趣在于挑战…希望大家努力而不放弃… 六.修改文件特征码 终于我们开始修改了,也恭喜你经过了无聊和乏味的时期,现在是我们创造奇迹的时候 了。特征码定位出来之后,就是我们修改的过程。只有这样才能达到躲过杀软查杀的目的。 修改文件特征码的有很多。如:替换法,填充法,大小写转换法,通用跳转法等。今天 就给大家一一道来…. 1. 排序法(就是我们说的上下互换法) 在我做免杀的过程中,上下互换我发现很重要也是很有效的办法,但是没有一个方法是 完美的,上下互换也不能保证 100%的成功率,不过它的通用率在 90%..好了,我们具体说 明一下。 例如:1 2 3 4 5 都分别代一汇编指令,而其中 3 就是被杀软定义为病毒特征。我们 要做的就是打乱它的顺序,让杀软无法辨别。修改后成:1 3 2 4 5 或 1 2 4 3 5 在不影响程 序运行前提下,找到相应的互换法.我们实例说明… 如图选定的 MOV XXXXXX 我们可以和 PUSH XXXXX 上下互换 或者 MOV XXXX 和下面的 MOV XXX 互换,从而达到免杀…一般情况下双 MOV 都可以互换,如图 CALL XXXX 也可以和下面 PUSH XXXXX 互换…但有时候的 CALL是不能乱换的,这里就需要大家给汇编知识的了解,和 自己的经验了…这个方法没什么技术含量,需要的是你下来多多练习,做多了自然掌握… 2. 替换法 替换法就是同等指令或者使用功能相同的代码之间的替换.就像5-5=0 而1-1也=0他们 最终的结果和功能上都是一样的,在程序里这种我们可以相互替换,不会影响程序的运行。 替换法就是程序灵活性的体现,一种功能,程序可以有 N种方法表达出来。所以大家必须掌 握我们常用的汇编指令,从而替换法将会简单如一。下来我们实例说明。 我们选定的区域,是这么一个汇编指令:SUB EAX,37 SUB 看了上面常用汇编指令的人应该 了解这种算术运算符中的减法运算。这句意思是 EAX 减 37 .从而我们就有了思路。在有理 数中,有了正负数,它们的加减我想大家都会吧。口诀是正正得正,负负得正,正负得负. 由此我们可以把这句指令修改成这样··· 我们修改成 ADD EAX,-37 ADD 是汇编中的加法,加负 37,结果还是减 37.功能上和结果上 到和原来的一致。程序也不会影响,杀软也将不会查杀…在我免杀中,还有如 AND=TEST Je可以换成JNL或jnz等 LEA 也可以换成 TEST或AND SAR 算术右移.(=SHR) SAL 算 术左移.(=SHL) 有时候CALL也可以换成 MOV或JMP JMP=JB+JNB ADC=ADD+INC 等 不过替换法也不是百分百成功的。我们要灵活运用,不能死板硬套,这样的想法是不可取的 , 我们多多尝试,多多创新,免杀技术才会进步。。上面都是相关指令的替换,还有一种就是 几句代码,我们可以用其他的代码替换掉,功能和结果都是同等,也不会影响程序正常运行 。 如:XOR AL ,0 XOR在汇编中是异或运算符。而异或运算的二进制方法是这样的: 1^1=0 0^0=0 1^0=1 0^1=1 看了这个我想大家可能就有所明了。我们可以把原 来的这句写成 MOV BL,0 XOR AL,BL 这两句的结果和原来的还是一样的…修 改后杀软也不会查杀…从这里我们看出了汇编指令的重要性,所以大家开始还是 要努力吃掉那些基本的语句,这样以后就会好多点… 3. 填充法 填充法,我想大家是最先学会的。因为这个不需要进行什么修改或者替换,只需要轻轻 一点 16进制填充“输入 00”就 OK。不过说起来很简单,做起来不是我们说的那样简单。 你填充一段或一句汇编代码时,你要了解,它是否影响程序的正常运行,有的代码或者指令 是不能随便填充掉的,填充掉的后果就是程序坏掉。所以我们在填充之前要了解它是否是垃 圾代码或者是无用代码,之后我们在填充它。填充法需要我们经常累计的经验和对汇编指令 的了解程度来衡量,所以大家还需要多练习,等你悟道那一刻其实一切都是很简单的.. 4. 跳转法 跳转法,是免杀人必须学会的一种技巧。因为它的通用性很好,免杀效果也不错。好了 , 我们先了解下什么是跳转法。所谓的跳转法就是把有特征码的代码在原有的位置上跳转到其 他位置,从而达到免杀的过程。这里用的最重要的汇编指令就是无条件跳转 “JMP”. 下来介绍下跳转的要领: a. 我建议在做跳转的时候在 OD里面进行,OD比较直观,同时防止出错; b. 要找一块可以写入的 0区域(也就是没有添加代码的空白区域)如图 C32里面 0区域表现.. 下图是 OD里面 0区域的表现 有人会问,我找的零区域都无法写入。怎么办?问的好,一般教程中说,在找到零区域 的时候先试着保存一下(OD坏境),不能保存就说明我们不能写入,这种说法是错误 的。因为我们的文件在被 PE装载器映射到内存的时候,PE装载器会读取相应节表结 成的 VOFFSET , VSIZE和属性,这些值决定了我们映射到内存中的起始偏移,大小 还有相应的内存区域的属性,一般我们的程序在被连接器连接的时候都会将数据段设置 为 DATA属性,将 CODE代码段设置为可执行属性。其实这些属性无关紧要,我们完 全可以自己手动进行更改,比如将所有的属性设置为可读可写执行等,这样在跳转或者 加花的时候可写的区域就会非常大,也就不用去加区段而使文件体积变大。 这里就教大家怎么开启这些不能写入的零区域.. 用到的工具:LORDPE.EXE 首先,用 LPE载入我们的木马文件(如图 1) 图一 然后点击区段..(如图 2) 图二 再右键点击 CODE区段,选择编辑区段。。(如图 3) 图三 最后点击,标志右边的小框框..(如图 4) 图四 大家是不是看见有个“可写入”没有勾选,我们把它勾选上,然后确定,保存即可。 这样我们 CODE区段中的零区域就变成可写的了。 c. 在跳转的时候,我们必须记住,跳转回来的地址; d. 还是那句话,方法不是万能的,跳转也不是 100%成功的..(切忌) 病毒木马在变异,我们的方法也可以变异,跳转一般都在用 JMP 杀毒软也会知晓,所 以我们不用 JMP,可以用 CALL ,MOV等也构造跳转,这样是代码更加复杂,提高杀 软查杀难度。这也是一般基本的跳转方法,还有如,跨区跳转,3级跳转等一些高级跳 转方法。万变不离其宗,只要我们了解原理,各种好方法也就以用而生。1生 2,2生4, 慢慢的扩展下去。。。 5. 就近法(也就是我们说的加一减一) 就近法就是把我们特征码的 16进制代码,修改成它相近的 16进制代码的过程。。从而达 到免杀。这种情况一般出现在字符串上,如,木马版本信息,一些对程序运行不起到绝对作 用的代码.(如下图) 图中红色的 30 我们可以改成 31 (如下图) 这样就可以达到免杀目的。不过还有种情况(如下图) MOV BL,14 这句汇编代码,我们又是可以在 14上面加一或者减一或者跨度大点修改,总 之在不损坏程序运行的前提下修改,要多观察代码周围的其他代码,看看这句代码的表达效 果。 再就是,CALL地址上的加一减一···免杀 CALL上特征时,都知道只要地址变了,杀软 也就不会查杀了(这只是其中一种情况,有时候不会成功) 如上图选定的 CALL 10003214 我们可以尝试修改成 CALL 10003215或 CALL 10003213也达到免杀的目的. 6. 大小写转换法 大小转换法就是把一些特定字符串,通过它相反的属性转换过来,从而达到免杀的目的。这 种方法是利用杀软的大小敏感而WINS对大小写不敏感这一特性而得出的一种方法.(如下 图) 比如我们选定的这部分是杀软定位的特征,我们修改。会点免杀的朋友一看,就知道这是一 处木马相关文件释放的路径,这其中的字母也就是我们所说的字符串,只要我们进行大小写 转换法,就能欺骗了杀软的眼睛。(如下图) 上图就是我们在 C32利用修改数据中大小写翻转修改后的表现。我们也可以手工找一些字 母进行大小写转换,直到免杀为止。 (此方法有相对的局限性) 说到着儿,我们也基本把特征码修改讲完了。我们现在总结一下。 1. 特征码是什么:就是被杀软定义一文件是否是病毒的依据.. 2. 特征码修改工具:OD C32 辅助有:LPE PEID Restorator 等 3. 修改特征码之前必须,熟练掌握常用汇编指令.. 4. 修改方法: A..排序法; B.替换法;C.填充法; D.跳转法;E,就近法;F.大小写转换法; 上述就是我们今天的主要内容,希望下来大家多多练习,熟能生巧,坚持最重要啊,你 喜欢它就应该义无反顾的去研究,去发挥到极致,不要轻易的说放弃,免杀道路布满荆棘, 需要我们坚定的信念和对自己的信心,只有你付出了,一定会有所收获的。 同时,暗组个学习的好地方,有什么不明白的可以在相关板块求助,热心的人还是很多 的,希望大家早日成为免杀大牛,为暗组贡献自己的力量。 最后,说一下,方法是死的,人是活的,免杀需要的是灵活的头脑和敢于举一反三的头 脑,希望大家努力去磨练自己,让自己真正强大起来。 (本人能力有限,让暗组各位高手见笑了,不足之处请多多包涵,虚心求教) BY:SuperManBY:SuperManBY:SuperManBY:SuperMan 09.7.1409.7.1409.7.1409.7.14
/
本文档为【特征码修改技术总结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索