木马免杀原理
木马免杀原理
一、实验目的
1.了解杀毒软件特征码查杀病毒的基本原理
2.掌握木马特征码免杀的原理和方法
二、实验环境
1.系统环境:Windows环境, XP环境
2.软件工具:灰鸽子,MYCCL,OC_cntrump,AVG杀毒软件,ollydbg
三、实验原理
杀毒软件特征码查杀病毒的工作原理
首先让我们简单了解一下杀毒软件特征码查杀病毒的原理,特征码就是能识别一个程序是病毒的一段不大于64字节的特征串。特征码定位法分为文件从查杀和内存查杀,杀毒软件公司拿到病毒的样本以后,定义一段病毒特征码到病毒库中,然后与扫描的文件比对,如果一致则认为是病毒。内存查杀则是载入内存后再比对,行为检测法是新出现的一种定义病毒的方法它利用的原理是某些特定的病毒会有某些特定的行为来做出是否为病毒的判断
四、实验步骤
打开Windows7虚拟机,打开工具软件安装包安装AVG杀毒软件,如下图所示:
打开灰鸽子远程控制软件,点击配置服务程序,输入本机的IP地址,生成服务器,如下图所示:
将生成的Server.exe程序复制到桌面,在其右键菜单中选择“Scan with AVG Anti-Spyware”用杀毒软件对其进行扫描,发现杀毒软件报毒,这里选择不采取任何操作,关闭杀毒软件,如图所示:
对Server.exe做免杀处理,首先需要定位其特征码,MYCCL工具是一款复合特征码定位系统,主要定位木马病毒的特征码工具。打开MYCCL工具,点击文件,打开Server.exe程序,如下图所示:
将开始位置为00000400,分块个数设置为100,点击生成按钮,在桌面上生成了OUTPUT文件夹,如下图所示:
桌面生成了OUTPUT文件夹,此文件夹可以看到由木马源程序衍生处的100个程序,如下图所示:
右键点击OUTPUT文件夹,用杀毒软件对其扫描,扫描完成之后点击Apply all actions按钮处理所有可疑文件,如下图所示:
处理完所有可疑文件之后,再次打开OUTPUT文件夹,可以发现可疑文件都被删除了只剩下83个程序,如下图所示:
在MYCCL工具点击二次处理,提示找到一处特征码,程序提示为文件0009A509_00001DB3中发现特征码,如下图所示:
继续扫描OUTPUT文件夹,没有发现可疑文件,表示其他位置已没有特征码
在MYCCL工具中,点击特征码区间按钮打开区间设定界面,右键点击打开右键菜单,选择复合定位此处特征码,如下图所示:
将分块个设置为100,点击生成,如下图所示:
处理完成之后,点击二次处理,提示已经找到特征码,选择yes继续寻找其他特征码,扫描OUTPUT文件夹,没有发现可疑文件,表示已经没有其他特征码,如下图所示:
完成上述操作之后,点击二次处理,显示特征码分布示意图,并精确定位特征码于0009B9C3处,如下图所示:
打开OC_cntrump.exe,将Server.exe文件拖入OC_cntrump.exe软件中,输入文件偏移地址0009B9C3(刚刚通过MYCCL定位的地址),将地址转换为内存地址,如下图所示:
用ollydbg工具对Server.exe进行处理,按下快捷键ctrl+g,输入上一步获取的内存地址,跳转至0049C5C3处,向上滑动滚轮,自动归位到指令首址,内容为MOV EAX,DWORD PTR SS:[EBP-101C]
(特征码包含在该指令中),如下图所示:
在程序的最下发找到一段“00”空白区,例如004A21E4双击这一行,在弹出窗口填入特征码段内容MOV EAX,DWORD PTR SS:[EBP-101C]
,点击“汇编”保存设置。此时会自动跳至下一地址进行编辑,输入JMP 0049C5C7
跳转到代码“MOV EAX,DWORD PTR SS:[EBP-101C]”的下一个地址,如下图所示:
返回到0049C5C1处,右键点击代码,选择汇编,写入跳转指令JMP 004A21E4
,如下图所示:
右键点击空白处,依此选择“复制到可执行文件”-“所有修改”-“全部复制”,在弹出界面空白处点击右键,选择“保存文件”,文件名称为“Server2.exe”,退出ollydbg程序,如下图所示:
在桌面右键Server2.exe进行扫描,发现杀毒软件没有报毒,说明特征码免杀成功,如下图所示:
在Windows7虚拟机启动灰鸽子控制软件,将免杀之后的Server2.exe挂马到网页上,在从XP虚拟机访问http://192.168.70.133,访问成功后,返回到Windows7虚拟机发现上线主机出现,说明免杀木马安装成功并能正常运行,如下图所示:
五、修改特征码的方法
方法一:直接修改特征码的十六进制法
-
修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制
-
适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能否正常使用
方法二:修改字符串大小写法
-
修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了
-
适用范围:特征码所对应的内容必需是字符串,否则不能成功.
方法三:等价替换法
-
修改方法:把特征码所对应的汇编指令命令中替换成功能类拟的指令
-
适用范围:特征码中必需有可以替换的汇编指令.比如JN,JNE 换成JMP等
方法四:指令顺序调换法
-
修改方法:把具有特征码的代码顺序互换一下.
-
适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行
方法五:通用跳转法
-
修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.
-
适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法