杀毒与免杀技术详解之三:特征码免杀实战

1、前言

在前篇《杀毒与免杀技术详解之二:特征码定位-工具及原理 》中,笔者主要介绍了MyCCL这个特征码定位工具的使用方式,并对它的原理进行了一步步的分析解释,最后讲了学习这一工具的意义和作用。今天,在这实战篇中,我们将应用前面学到的知识,以几个市面上的特征码杀毒引擎为例,进行实战的免杀。同时也非常欢迎诸位朋友指点,互相学习、进步!

2、实战环境

实验主机: Vmware 11虚拟机

操作系统: XP sp3

实验用具: MyCCL 2.1、C32Asm、一份病毒样本(encode.exe)、百度杀毒、360杀毒抢鲜版

    (tips: 实在是不建议在物理机进行实验,运行恶意程序风险很大)

笔者已经准备好了病毒样本进行实验,在文章最后会连同视频一起分享出来。当然,大家也可以拿自己的程序进行实战,操作的方法是大同小异的!

准备好工具之后,我们先将虚拟机中的网断开。笔者这里是NAT上网,直接禁用本地连接即可。

这一步是为了禁用360的云查杀功能,我们要免杀的引擎是本地的,不能混在一起免杀。

第二步,我们打开360杀毒主界面:

在这里将实时防护关闭,以免一会自动把我们实验的样本杀了,然后点击设置:

在这里将最后两条的√去掉,防止在免杀过程中,自动上传分析文件,导致引擎发生改变。

最后一步设置,将引擎设置为只开启系统修复引擎即可:

3、开始实战

用杀软查杀一下病毒样本看看:

确定没问题。现在万事俱备了,让我们开始免杀实战吧!先打开MyCCL,按上篇讲过的方法,”文件”选好病毒样本、”目录”选好分块文件存放目录、设置分块数量(我这为20),设置好如下图:

点击<生成>,弹出双选框选’Yes’,生成完毕。然后打开分块文件目录:

确定分块文件生成OK了,然后用配置好的360杀毒,对所有分块文件进行查杀:

将报毒的文件手动删除,然后点暂不处理,别点立即处理。因为只有删除掉,MyCCL才能定位特征码。

接下来就可以点击”二次处理”按钮了,二次处理过后,再查杀一下:

无毒的话就不用继续查杀,如果有毒,就有重复”查杀删除->二次处理->查杀删除……”的循环。现在点击特征区间看看:

这里的格式是: 前一段是十六进制的文件偏移,后一段是十进制的特征码长度。我们第一次定位的特征码有4041字节!这么大的范围,肯定是不能直接进行修改免杀,所以我们要进行”复合定位”!

在特征区间这一行,右键->复合定位此处特征。然后就和一开始的情况差不多了,只是范围缩小了:

我们再重复刚才的步骤: “生成->查杀删除->二次处理->查杀删除->二次处理……”,就能得到更小范围的特征码。一般四次以内的重复操作,就能得到2字节范围的特征码,我们就能进行特征码的修改。

一番重复定位之后,我们最终得到了特征码的区间,通过再次点击”二次处理”,可以生成一个定位图:

特征码 物理地址/物理长度 如下:
[特征] 0004A982_00000002

特征码分布示意图:
[--------------------------------------------------]
[--------------------------------------------------]
[--------------------------------------------------]
[--------------------------------------------------]
[--------------------------------M-----------------]

这时候,我们就可以查看一下特征码具体长什么样。笔者使用的是C32Asm这一款工具,在百度一查就有安全的下载地址。通过这款工具,我们可以很轻松地查看、修改文件内容,它有”静态反汇编”的功能,所以修改起特征码很方便。

笔者以后会写一篇文章,专门讨论特征码的修改,所以不会修改也不必担忧,现在学习的重点是定位!

我们打开C32Asm,将病毒样本(不是分块文件)拖入其中:

我们点击”十六进制模式”,这个模式比较灵活,所以笔者推荐使用。一打开,看见一堆十六进制码,别慌,让我们先跳到特征码的位置!右键点击->跳到:

将刚才定位出的特征码的位置,填写下去,点击”确定”:

看到这一段,熟悉病毒特征的朋友应该能看出来,这就是病毒本体的一部分,这几个函数就是病毒会用到的函数。有兴趣的朋友可以自行研究,在文章结尾,会连同视频一起打包,我们先回到正题上。

目光放到特征码上,”E9 7A”被定位为特征码,其实熟悉的朋友应该已经知道怎么改了,因为”E9”就是典型的jmp跳转的机器码,这里笔者还是带大家熟悉下。我们右键->对应汇编模式编辑,看看它对应的汇编代码:

可以很清楚地看到,这句代码的意思就是要跳转到某地址上。在这里笔者先讲一个方法——等价替代法,顾名思义就是用具有相同功能的代码替换它。jmp的话,按经验一般可以改成call,也就是将”E9”改为”E8”。在这里我们右键->汇编:

在这里要将JMP改为CALL,点击”汇编”,然后就完成了:

我们点击”文件”->”保存”,然后退出,再用360杀毒扫描看看:

我们已经成功免杀啦!现在360本地引擎已经没办法查出毒来了。怎么样?不算困难吧!我们可以通过同样的原理,完成对BD引擎、小红伞引擎的查杀,这就留给大家作为练习吧。

下一篇会讲特征码修改的技巧,有兴趣的朋友记得关注哦!

    如果有朋友没有理解,或是操作出了问题,没关系,本文附了操作视频,操作可以跟着笔者一起做。如果还是不行,欢迎回复本文,也可以联系笔者,互相交流

4、附录

实战操作视频及工具下载地址:

http://pan.baidu.com/s/1o6os8mI

推荐下大灰狼远控,可以用来作为免杀进一步练习,下载地址:

http://yunpan.cn/cdNzPxwzWh7gk 访问密码 5fa3

顺便推荐下书籍,推荐书目:

  1. 《黑客免杀攻防》
  2. 《黑客免杀入门 》
  3. 《精通黑客免杀》
  4. 《杀不死的秘密: 反汇编揭露黑客免杀变种技术》

其中,笔者重点推荐第一本《黑客免杀攻防》,写得不错,而且相对其它几本比较新,很多新技术都有讲到。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 17:05:04

杀毒与免杀技术详解之三:特征码免杀实战的相关文章

实现高性能纠删码引擎 | 纠删码技术详解(下)

作者介绍: 徐祥曦,七牛云工程师,独立开发了多套高性能纠删码/再生码编码引擎.柳青,华中科技大学博士,研究方向为基于纠删码的分布式存储系统. 前言: 在上篇<如何选择纠删码编码引擎>中,我们简单了解了 Reed-Solomon Codes(RS 码)的编/解码过程,以及编码引擎的评判标准.但并没有就具体实现进行展开,本篇作为<纠删码技术详解>的下篇,我们将主要探讨工程实现的问题. 这里先简单提炼一下实现高性能纠删码引擎的要点:首先,根据编码理论将矩阵以及有限域的运算工程化,接下来主

Linux磁盘阵列技术详解(二)--raid 1创建

我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还是以一块硬盘的不同分区为例,实际工作中应该是不同的硬盘才对. 具体分区步骤不再赘述! 分区后结果如下图所示: ② 创建raid 1 mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc1 /dev/sdc2 /dev/sdc3 或者 mdadm -C -v /de

CDN技术详解及实现原理

CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同好. 第一章    引言    “第一公里”是指万维网流量向用户传送的第一个出口,是网站服务器接入互联网的链路所能提供的带宽.这个带宽决定了一个 网站能为用户提供的访问速度和并发访问量.如果业务繁忙,用户的访问数越多,拥塞越严重,网站会在最需要向用户提供服务时失去用户.(还有“中间一公里” 和

Protocol Buffer技术详解(语言规范)

Protocol Buffer技术详解(语言规范) 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo.这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流.需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一些不是非常常用的功能并未予以说明,有兴趣的开发者

红帽Linux故障定位技术详解与实例(2)

红帽Linux故障定位技术详解与实例(2) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 3.内核故障情形及处理 (1)内核panic panic是内

红帽Linux故障定位技术详解与实例(1)

红帽Linux故障定位技术详解与实例(1) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 红帽Linux故障定位技术详解与实例是本文要介绍的内容,主要

红帽Linux故障定位技术详解与实例(3)

红帽Linux故障定位技术详解与实例(3) 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 5.用kdump工具内核故障定位实例 A) 部署Kdump 部署 kdump 收集故障信息的步骤如下: (1)设置好相关的内核启动参数 在 /boot/grub

红帽Linux故障定位技术详解与实例(4)

红帽Linux故障定位技术详解与实例(4) 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 6.使用kprobe来观察内核函数的执行实例 kprobe是SystemTap对内核函数进行probing的功能在内核中的实现,由于内核中提供了正式的API来使

转:LoadRunner中参数化技术详解

LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提交不同的数据,或者使用多个不同的值进行循环输入.这时,在LoadRunner中就可以进行参数化设置,以使用多个不同的值提交应用请求. [参数化]使用指定数据源中的值来替换脚本录制生成的语句中的参数. [好处] l  减少脚本的大小 l  提供使用不同的值执行脚本的能力,更加真实的模拟现实应用. [参