搜索
    Hi~登录注册
    查看: 57|回复: 0
    收起左侧

    [转]回忆杀-特征码免杀实践

    [复制链接]

    58

    主题

    0

    精华

    151 小时

    在线时间

    密圈

    积分
    48
    发表于 2020-5-31 19:06:21 | 显示全部楼层 |阅读模式

    原文来自公众号:零队

    注:这个是很久之前写的了

    前言

    前段时间,小马哥做了免杀的分享。其中就有说到特征码免杀,看到小马哥说的几个特征码定位的工具,我有种莫名的熟悉感。其中的MyCll这个工具名字可能不记得了,但是这个工具上面的狗熊logo异常的熟悉。

    640.png

    CCL与MYCCL都采用文件分块定位的办法,定位效果带有运气成份,且可能每次定位出的位置都不尽相同,这个免杀带来了困难。

    VirTest5.0

    小马哥介绍的是这款工具,下面是作者自己的介绍:

    我们可以这样假设报毒过程,如果检测文件是PE,如果在CODE位置存在 标志A,在DATA位置存在标志B,在资源位置存在标志C,同时满足这个3个条件,那么杀软就会报毒,VIRTEST工作原理就是要找到引起报毒最后一个标志,也就是假设中的标志C。

    因此VIRTEST采用2分排除法,测试标志C所在文件中的位置,由于被杀的文件可能存在多个 类似于ABC这样的连锁条件,所以我们必须要通过一种排除机制,先要找最靠近文件前部的连锁条件,排除掉文件尾部数据,当找到第一个连锁条件后,抹掉引标志C,再恢复尾部数据,

    然后继续测试另外的连锁条件,直到找到最后一个连锁条件,抹掉后,整个文件免杀了,则说明特征代码被定位完毕了,所以VIRTEST绝对可以精确的定位出所有的复合特征。这比文件分块定位法先进得多,更为科学

    实践

    这里我们选择一个功能比较简单的工具,如下ms15-051提权exp。选功能简单的工具主要原因:复杂功能的工具特征码特别多,且特征码修改后可能会影响工具的使用。

    原有的ms15-051提权exp,在360全引擎最新病毒库的情况下是报毒的(建议断网)。 QQ截图20200531185714.png

    制作测试文件

    首先点击“制作测试文件”导入ms15-051.exe。 QQ截图20200531185816.png

    载入测试文件

    然后载入上面图中说的生成文件virtest测试文件。 QQ截图20200531185905.png

    定位特征代码

    再进行特征码定位 QQ截图20200531185953.png 安装上面的提示对vir目录进行杀毒操作。

    QQ截图20200531190026.png 查杀vir目录生成文件,如查杀出病毒点击处理,再回到virtest点确定。 QQ截图20200531190236.png 重复定位特征码,vir目录查杀。直到virtest提示已经找到特征码。 微信截图_20200531190345.png 微信截图_20200531190405.png 找到了特征码,只需要对这些地址进行修改就行了。

    常用的修改工具有,OD,C32ASM,UE,010Editor等等。

    修改特征代码

    找到相应的地址。进行修改,引用《2019补天白帽大会》 ——Red Teaming 红队行动中《仙果:红队行动,攻防之杀毒软件对抗》的分享中的一句话。

    之前学破解的时候有一个顺口溜,叫“74“变“75“,“84“变“85”,很老的一个段子。

    如下图我们直接对特征码进行加1操作。 微信截图_20200531190405.png 保存,会对旧文件进行备份,如下图中的ms15-051.exe.b00即备份文件。对ms15-051目录进行查杀,新生成的文件免杀且功能正常,可以进行提权操作。 QQ截图20200531190530.png

    附修改特征码方法

    如下修改特征码的方法:(收集自网络)

    • 直接修改特征码的十六进制法 修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制. 适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能否正常使用.
    • 修改字符串大小写法 修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了. 适用范围:特征码所对应的内容必需是字符串,否则不能成功.
    • 等价替换法 修改方法:把特征码所对应的汇编指令命令中替换成功能类拟的指令. 适用范围:特征码中必需有可以替换的汇编指令.比如JN,JNE 换成JMP等.如果和我一样对汇编不怎们精通的可以去查查8080汇编手册.
    • 指令顺序调换法 修改方法:把具有特征码的代码顺序互换一下. 适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行
    • 通用跳转法 修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行. 适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法.
    回复

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 获取账号

    快速回复 返回顶部 返回列表