| 关键词: 0000000000000000 片段 字节 杀毒软件 nbsp aaaaaaaaa XXXXXXXXXXXXXXXX 文件 尾端 定位 |
multiCCL定位原理图示 by niu-cow in NE365 1.假设一种比较极端的情况: 某杀毒软件针对某样本 抽取了如下 a b c d e 的五个特征码片段 而其中的任何一个单独的片段都不构成完整的特征码 更极端的情况是可能有两套这样的组合。 却以其中任何两处来识别。(见 图1)这样,如果用原来的CCL就很难定位了,就算能定位,操作也 变得很复杂。(图1)..............................aaaaaaaaa....................................................................................................bbbbbbb.........ccc.................................................................................................................ddddddddd...............eeeee...............2.针对这种情况 有个思路是从一端开始盖零(考虑到PE文件文件头的重要性 multiCCL选择了从尾端开始往前盖)。 直到如图2所示时,杀毒软件才不能识别 (b片段被破坏了一个字节) 这样b尾端就出来了。(图2)..............................aaaaaaaaa......................................................................................................bbbbbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000------------------------------------------------------------------下面是定b片段的头端了 看看图3 图4 图5 ,注意看b片段中间那个字节的零的移动(图3)..............................aaaaaaaaa......................................................................................................bbbb0bbb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000----------------------------------(图4)..............................aaaaaaaaa......................................................................................................0bbbbbb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000----------------------------------------------------------------------(图5)..............................aaaaaaaaa.....................................................................................................0bbbbbbb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000--------------上图的a 和 b 两个片段都暴露了-------------------------- 图5 中,暴露出完整的a b 两个片段,这下又被杀毒软件认出来了这样就定位出b段了。接下来把b希用0盖掉作为新的样本,用杀毒软件检测一下是否被杀,还杀就重复前面的步骤定 c 段,如图6(图6)..............................aaaaaaaaa....................................................................................................0000000.........ccc.................................................................................................................ddddddddd...............eeeee...............-----------------------------------------------------------------------如果定好c段盖掉后还是被杀就再定 d 段如图7(图7)..............................aaaaaaaaa....................................................................................................0000000.........000.................................................................................................................ddddddddd...............eeeee...............-----------------------------------------------------------------------这样重复,直到片段d e ……都被找出盖掉后,杀毒软件再也不认了----------------------------------- 一个字节一个字节来显然太费时间,效率很低的,一次性生成上千个文件也是不现实的。 所以考虑先用二分法粗定。到范围小时再逐字节替换。-----------------------------------从尾端开始数,以1.2.4.6.8……的大小往前盖 即取2的指数阶 , 2^n < 文件尺寸就行了。 一次生成20个左右的样本文件,用杀毒软件检测以例图说明吧(见 图8图9)下面这个盖了128 bytes 的还被识别(图8)..............................aaaaaaaaa....................................................................................................bbbbbbb.........ccc...............................000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000-----------上面这个盖了128 bytes的还被识别---------------------------下面这个盖了256 bytes 的不被识别了--------------------(图9)..............................aaaaaaaaa........................000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000--------------------------------------------------------------------那就说明距文件末尾256--128之间有个特征码片段,下一步就以图8为样本, 定位的范围是 图10 中经XXXX标记的区域(图10)..............................aaaaaaaaa........................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000---------------------------------如此反复,当范围缩小到32字节或更小,二分法就显得效率低下了, 改用逐字节替换法,一次生成最多32个文件。-----------另外,图8 图9 图10 之外,还有一种情况, 就是某次用二分法生成的所有文件都 杀毒软件认出,那就说明特征码集中在最大盖0范围之前 即图9中 未盖0的区域,这时只要以图9为样本, 定位图11中以yyyy标记的区域(图11)yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000------------尾端定出后,再用 图3图4图5 所示的方法把0还字节前移,一次生成32个文件用杀毒软件检测,如果32个全不被杀时,就取这32个字节作为定位结果对于这种大尺寸的片段,没必要完全定位出片段的头端。 (因为一个片段中只要修改一个字节就够了)----------------------------------==================================---------------------------------- 基本原理就如上面所述,其实就什么简单。 不管杀毒软件用几套组合,用复合还是单一特征码,都照样搞定它。当然,以后杀毒软件使出什么新招就说不准。~~~~~~~~~~~~~~~~~ (本文仅作思路上的探讨,若有人因应用本文的思路带来某些后果,均与本文作者无关。) 若有不当之处,请各位指正,谢谢 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|