因为内容涉及到汇编的知识,这几天正在学,还有实验中涉及到的部分工具,也基本在网上搜罗到了,所以断更了许久

此内容基于对cs生成的exe进行免杀

实验环境

一台安装火绒的win10,一台cs服务器

用到的cs版本为4.5

知识点

特征码修改

特征码:可以理解为一个文件的指纹,杀软检测到某个文件中的一小段特征码和恶意软件模板匹配,会判定它不是好东西,于是把他干掉。

我们做的就是修改掉被检测出来的特征码,将它顺序打乱,混淆视听

这里用到了virtest软件,它会批量生成我们上传的恶意软件,定位到具体是哪一段特征码被检测出来了,在其执行过程中需要开启杀软

制作测试文件-选择main.exe(是cs生成的exe)

载入测试文件-virtest.vir(是制作文件时生成的特征码)

定位特征码-确定(此时杀软会一直报毒)

产生偏移量的是我们后续定位特征码位置的重要条件

可以选择ollydbg,xdbg64等软件对特征码修改,大部分ollydbg只支持32位

我们先根据文件的偏移量找到刚刚是哪儿出的问题

视图-模块-main.exe(双击)

这个时候就进入该程序了,右键-转到-文件偏移

输入刚刚virtest产生三段数据的第一段

于是乎我们才开始真正的打boss

首先,里面的代码是汇编指令,随意修改会导致exe直接出错运行不了,这也是我恶补汇编的原因,所以如何修改是重中之重。前面提到,修改就是要么我有实力,我能直接给他改了还不出错,要么我没实力,但我能给他添加垃圾信息打乱他的特征还不影响主要内容

汇编中有一个jmp命令(后面跟着地址),会跳至后面的地址处。思路就是,在被杀特征码片段中添加jmp命令,跳到后面内容去,后面玩一圈再调回来,相当于啥事没干

我们拆开???和insb,在insb位置添加jmp命令。注意要复制后面一部分内容,因为添加jmp命令后会覆盖insb的内容,我们把insb在后面执行完再调回来

在后面找一块00落脚点

回到insb,修改为jmp 0945f76,我们截图的地址(找的落脚点)

可以看到红色部分是修改的内容,对照被覆盖的部分,我们需要在后面一直执行到f7,然后调回来执行f8

输入对应16进制

跳转到f8

ctrl+p保存为a.exe,上传上去测试此段特征码是否免杀

现在只有俩了,说明奏效了

关闭杀软上线也没问题

继续上面操作我们就可以实现免杀

我的a改一处,b改两处,c改三处(免杀),只对c进行了火绒检测

反TV保护

是指防止数据被篡改,一般用于防止被黑客逆向破解。对恶意软件进行保护可以让杀软检测不了形成干扰

将只修改一处特征码的a.exe加进去,选择rsa加密,直接运行,产生a.vmp.exe

上传上去,直接过杀软

上线也没问题

资源修改

是指对exe的图标,文本信息等内容修改,看上去就像一个正常的软件一样

将navicat资源对只修改一处的a.exe修改

随便拖过去一点文件就好了

上传测试

也能上线

加壳加花

加壳是指对exe添加一个”龟壳“,防止杀软对程序进行反编译,检测到特征码后直接杀掉

加花是指在特征码中插入一段没用的代码,通过修改程序入口点,先从花指令部分执行,再跳至原程序入口点运行原本的代码内容。这样做会打乱执行顺序,也相当于混淆了特征码

由于大部分的加壳工具已经被杀软识别,需要冷门壳,我没有测试。对于加花操作,我所使用的两款petools和peditor工具对程序入口点识别的偏移量不同,且写入绝对路径也无法跳至程序入口点,并没有测试出来