Myccl使用

  • 格式:docx
  • 大小:335.07 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MyCCL 工作原理详解——回答几个常见问题

2009-07-28 11:40

相信很多人一开始用MyCCL的时候都是根据网上的一些视频教程来按照步骤操作就行了,但是久而久之就会碰到一些无法解决的麻烦,甚至有些人因为专业知识太狭隘永远都不明白问题出在哪里。

因为我手上的MyCCL的说明书不见了,所以我先文字描述下MyCCL的工作原理,然后再用图文举例。MyCCL的工作原理如下:假设病毒/木马文件内容如下:X X XXX X XXXX,红X表示某个杀毒软件定位此病毒/木马的特征码所在的区间,我们把它切成十个文件,此时各个文件的内容不是单个X,而是第一个文件内容是X000000000,第二个文件内容是X X00000000,第三个文件内容是

X X X0000000,……,第九个文件内容是X X XXX X XXX0,第十个文件内容是

X X XXX X XXXX——也就是说这此病毒/木马在十个切片中慢慢恢复了。现在如果用杀毒软件查杀这十个切片,肯定会从第二个文件开始,后面的都报毒。等杀毒毒后二次处理时MyCCL就能发现第二个文件不见了,就能定位出一个特征区间,也就是第一个红X代表的区间。现在明白了为什么有的人杀到一个病毒就停止查杀了吧?因为按顺序摆放,找到某处特征码时,后面的暂时没必要管。

因为现在的杀毒软件一般是复合定位,也就是说多特征码定位,而且发现任何一处特征码就能确定出病毒/木马来,所以MyCCL在确定出一处特征码(这里是第一个红X)时,会提醒用户要不要继续分析。此时当然选"是"了,这个时候又会生成十个切片,而此时第一个文件内容是X000000000,第二个文件内容是X000000000,第三个文件内容是X0X0000000,……,第九个文件内容是

X0XXX X XXX0,第十个文件内容是X0XXX X XXXX。看见没?这十个切片和上面十个切片的差别就在于第一个特征码(红X)处被0覆盖了,也就是说这块不会被查杀了,此时会从第6个文件(第二个特征码出现)开始报毒,……………………然后按照上面同样的方法,一直到切片中没有被杀的了。

等第一轮切片完了后,就会出现显示特征码区间的文字格式形

如:.M...M....。现在开始逐步缩小区间范围,此时点击MyCCL界面上的特征区间,就能在右边看见两个特征区间了,然后选中一个-->右键-->复合定位此处特征。这个时候也像上面一样继续切片,如果选第一特征区间则切片是格式,

X x000000000XXX0XXXX,X xx00000000XXX0XXXX,也就是把另外一个特征区间出全部用0覆盖,这样就不会干扰了,而自己区间在分成若干块(这里是把1个大X 分成10个小x/0块),然后逐渐恢复,而其它没有特征码的区间则保留。就这样一直被特征码区间缩小到你可以接受的范围内,这样就可以方便对它动手脚了。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

上面是理论知识可是实践起来还是会有新的挑战的,我坚信像我这样悟性差的人还是有很多的。先打开MyCCL的界面让大家看看。

这是我打开一个黑防鸽子服务端后的界面,除了文件路径和输出路径外,其它的每个能选中的字符都是有学问的。从下往上看,最下面的大框里是这个PE文件区段信息。结束位置:是文件最后的文件偏移地址,这里可以由最后区段(.rsrc)的地址(B1C00)+长度(8200)-1得到。它的作用在解决分块时的边界问题、除不尽问题。分块数量、单位长度一般人都能理解,只是注意一下他们是十进制。填充00也好理解,在切片里某些区间用00填充、没有杀毒软件会把一串00当做特征码的,当然改成FF,90这些特殊串也行的。开始位置是最有研究价值的,它声明此位置前面的内容在任何切片中不被覆盖,主要是保留PE文件格式中必要的头部而存在。分段长度+开始位置=结束位置-1。

因为某个免杀视频教程的缘故,很多年轻人看见大框里最小的起始位置是400,就直接把它换掉上面的E0,然后去做免杀,其实这种方法是错误的。刚好这个黑防鸽子+瑞星能解释为什么。

我也先把开始位置这种填上400,然后切成10片。先别杀毒,去output

目录下看看结果。

因为刚好除的尽,所以长度都是12900H。用WinHex之类的十六进制工具打开这几个文件看看,所有文件的0-3FFH都保留完好,第一个文件恢复了从400H开始的12900H长度的内容,也就是从0-12CFFH块正常,后面其它区间范围都是00。第二个文件则比第一个多恢复了从12D00H开始的12900H范围的区间,以此类推最后那个文件完全恢复。用瑞星杀毒,发现全杀了,这说明从第一文件开始就存在特征码,也就是有一个特征码在400H-12CFFH(从400H开始的12900H长度)的区间。但是因为可能其它区间还存在特征码,所以继续分析。再切成10片,此时用WinHex之类的十六进制工具打开这10个文件看看,很明显此时400H开始的12900H长度在任何切片中都被覆盖成00,但是一杀毒结果结果还是全杀了,很奇怪吧?

上面说明第一处特征码并不在上图圈圈里那些区域,而是在保留的头

0-3FFH区间里。所以无论怎么切分都是会被全杀的。要验证也很简单,把第一个文件里从PE头开始到3FFH全填充00(保留PE标示符)后就不被杀了。

那么开始位置应该怎么选呢?当年杀毒软件的确只把特征码定位到各个区段,所以才会有哪些老的视频教程遗留下来的问题。现在有的杀毒软件把特征码定位到PE头上去了,虽然PE头范围小而且很容易发生碰撞,但是如果提取整个文件的一些宏观信息在配合PE头上的某些特征码就能唯一确定出病毒/木马了,所以开始位置应选在PE头的开始处。默认的开始位置特征之所以是E0,因为VC++6.0编译器编译的程序PE头开始位置就是E0(Delphi的是100H被囊括在内)。而病毒主要是汇编/C语言写的,木马一般是C++/Delphi写的,现在年轻人的水平越来越差了,所以主要是木马免杀的变种多。特别注意Dos MZ Head 和Dos stub块理论上也可以定位特征码的,尽管目前我还没发现过,如果发现定位异常就直接用十六进制打开文件看看头部有什么特殊的,要么把开始位置改成02(保留MZ头)。

现在大家明白为什么有一款灰鸽子首轮二次免杀切片的时候开始全被杀,很多人以为是分得不够细,导致每片都有特征码,后来有人只要把入口点加1,