一、exe程序生成
1.使用如下shellcode加载器,生成c/c++语言的exe程序
加载器:1.c
#include <Windows.h>
#include <stdio.h>#pragma comment(linker,"/section:.data,RWE")unsigned char shellcode[] =生成的shellcode;int main()
{
__asm{
mov eax, offset shellcode
_emit 0xFF
_emit 0xE0
}
}
使用visual studio将加载器编译为exe程序
2.将生成的exe上传到目标系统,直接被火绒杀死
3.接下来将对exe程序实施免杀手段
二、成品EXE-反特征码-通用跳转
通用跳转
因为目标使用的是火绒,所以我们自己搭建一个火绒环境,使用VirTest工具检测出exe程序的什么地方被火绒杀了。
1.将工具和exe程序放到环境中,启动程序,点击制作测试文件---选择exe程序,点击ok后会在工具目录下生成一个virtest.vir文件
2.点击载入测试文件——选择工具目录下生成的文件
3.在保证火绒开启检测的情况下,点击定位特征代码——自动确定——确定。等待完成。
4.检测完成后,工具成功定位到exe程序中被火绒检测的特征码。
5.退出火绒,启动C32反汇编工具,将exe程序拖入工具中,选择16进制打开。修改特征码,看火绒是否还会杀。
下载:https://www.onlinedown.net/soft/10012039.htm
6.找到特征码位置,选中特征码---右键点击填充,填充为00。保存
7.启动火绒,看看是否还会查杀修改后的exe程序。
成功免杀:说明特征码查找正确。如果不能免杀,就是特征码没找对,可以改名重新检测一次试试。
8.关闭火绒,还原或者重新上传exe程序,将程序拖入OllyDbg工具中。点击下图按钮,搜索特征码处
Ollydbg下载:http://www.tugaga.com/soft/bc/945.html#down
安装:记得先执行根目录下路径修复工具.exe
9.定位到特征码处,向下滑动一下,然后选中复制,将特征码的汇编地址保存起来
在将特征码下一行也复制保存
10.重新导入exe程序,往下滑找到00区间,选中几个00区间——右键选择二进制-----用nop填充
11.双击一个nop,将第九步复制的特征码写进去。右键复制,将汇编地址保存起来
在下一行也双击写入特征码的下一行的汇编地址
12.复制00区间的特征码汇编地址,保存起来
13.ctrl+G 写入特征码地址,定位到特征码处,将其填充
14.然后双击填充的特征码,写入(jmp 00区间的特征码汇编地址)
以上操作简单来说就是:在代码执行到原来的特征码处时,跳转到00区间处去执行。其实就是将特征码换了一个地方执行。执行了00区间的特征码后,还要跳转回原来特征码的下一行继续执行代码。
17.选中00区间做修改的地方,右键选择保存
点击全部复制
跳转到下图,右键保存文件
18.保存出来的exe文件还是不能免杀,因为只保存了00区间的修改。
为什么只保存了00区间的修改:00区间特征码处和原来特征码处的修改无法同时选中保存。
所以需要再次修改特征码处:将保存了00区间修改的exe程序拖入ollydbg工具中,搜索定位特征码汇编地址后四位
19.选中特征码,右键进行填充
20.然后双击填充的特征码,写入(jmp 00区间的特征码汇编地址)
注意00区间的特征码汇编地址:再次导入exe,前几个数字改变了,写入时注意
21.选中修改的特征码,右键
跳转到如下,右键——保存文件
22.开启火绒检测,只保存了00区间修改的半成品被杀了。但是完全品成功绕过火绒检测,执行exe,msf成功上线。