虽然目前有很多方法可以让恶意软件使用某一技术绕过反病毒检测,但这些显然不是恶意软件免杀的终极目标, 它们的最终目标是实现 “FUD”,
“FUD” 是地下网络论坛的黑话,代表“恶意软件完全不可被检测到”的意思。
免杀主要有三种方法:静态免杀,动态免杀和启发式免杀。
一般杀软检测方式:
1.基于签名的检测
2.静态程序分析
3.动态程序分析
4.沙盒分析技术
5.启发式分析
6.信息熵检测
完美的免杀方法
到目前为止,要实现恶意软件的“FUD”,加密恶意代码被认为是个不错的选择,不过有几点要注意:
1.恶意程序在解密时,应当也进行代码混淆
2.当恶意文件在内存中运行解密代码时,我们必须要保证在不重定位绝对地址的情况下进行
3.恶意软件是否在沙箱环境中运行,如果是,则立马停止恶意文件的解密
4.应当只对 PE 文件中的 shellcode 或 只有二进制文件的.text部分进行加密,而不是对整个 PE 文件进行,以便把信息熵和降到最低
常用免杀方法
***静态免杀***
替换特征码
替换资源
加花
修改入口点
加壳
***行为免杀***
替换api
未导出api
重写api
api+5
底层api
合理替换调用顺序
绕过调用源
启发式引擎免杀注意
循环解密行为
读取运行设备名称
读取加密器的 GUID
连接随机域名
读取 Windows 安装日期
删除可执行文件
在二进制文件内存中搜索可用的IP地址
修改代理设置
在运行的进程中安装HOOKS或PATCHES
往浏览器中注入代码
注入远程进程
查询进程信息
设置过程错误模式以覆盖错误窗口
异常熵的出现
检测杀软的存在
对特定的注册表项的变动情况进行监控
包含提权的能力
修改软件的相关限制策略
读取系统/视频 BIOS 版本
PE文件头中的结束字节异常
创建受保护的内存区域
创建大量进程
企图进行长时间休眠
不常用的字节
读取 Windows产品ID
包含循环解密
包含启动或操作设备的驱动程序的能力
包含阻止用户进行干扰的能力
内存操作函数
HeapCreate和 HeapAlloc
LoadLibrary和 GetProcAddress
GetModuleHandle 和GetProcAddress