[分享] 反沙箱 静态免杀 yara规则木马检测
反沙箱
枚举临时文件:沙箱系统一般都会还原环境,临时文件过少,就判断为沙箱
检测虚拟化环境,硬件资源,设备和供应商名称,通过进程名称判断,使用注册表键值判断,检测硬盘中的文件,检测当前环境运行的进程,检测当前环境运行的时间
时间判断:沙箱会对进程加速
判断CPU核心数 dwNumberOfProcessors
判断RAM大小 GlobalMemoryStatus
判断硬盘大小 PhysicalDrive0
判断系统用户名
- 以前有判断用户名的字典,现在一般都是DESKTOP-XXX随机的数字
判断工作组(域)
判断桌面上文件
- 大多数沙箱桌面文件数量很少,且有各种office软件,但没有微信QQ之类的软件
- 我们可以判断怎么文件数量小于某一个范围从而判断是否在沙箱
判断桌面上有没有微信QQ企业微信,等符合国人常规习惯软件
判断临时文件数量
- 相反,临时文件比一般正常用户多也可以判断为是沙箱
判断系统内有多少doc,xls,ppt类文件
- 较少的都可能为沙箱
判断自身文件名有没有被修改
判断自身进程是否运行在一个时间范围内(apt常用,hvv常用)
判断系统语言 GetSystemDefaultLangID
- 俄罗斯APT常用手段,判断为俄语就退出进程
判断自身被附加的dll制作黑名单
判断ip
- 按照目标来判断
- 例如我们目标是国内,就判断是否非国内ip,从而反制国外沙箱
- 或者范围缩小到地级市
判断扬声器是否正常可调用
判断麦克风是否有响应
判断当前前台窗口数量
- 虚拟机一般都较少
判断鼠标是否移动
- 之前很火的方法GetCursorPos
- 获取坐标后延迟两次 获取向量 看结果是否为一个类三角形若真则不是沙箱
- 因为在ATT&CK框架中被标识 所以列入敏感行为
判断显卡显存大小
- 一般家用机都为2gb以上,而沙箱不会给这么多
判断系统变量
- 一般判断是否有虚拟机相关文件的环境变量
判断CPU温度
参考文章1 反沙箱杂谈
参考文章2 沙箱对抗之反沙箱技巧
参考文章3 反沙箱和反调试总结
参考文章4 沙箱的攻与防
静态免杀
加密,数字签名,资源混淆,加壳,分离加载,白加黑
参考文章1 免杀学习1-静态免杀
参考文章2 免杀-绕过静态动态查杀
参考文章3 静态恶意代码免杀
Yara基于规则的恶意样本分析工具
可以帮助安全研究人员和蓝队分析恶意软件,并且可以在应急取证过程中自定义检测规则来检测恶意软件,Yara支持有木马文件落盘和无木马文件落盘(内存马)的检测,由一组字符串和一个确定的布尔表达式组成。
Yara规则语法
1.Yara规则内容支持字符串、正则表达式、十六进制进行匹配。
字符串:定义一个变量 $a = “字符串内容”
正则表达式:定义一个变量 $a = /正则表达式内容/
十六进制:定义一个变量 $a = {十六进制内容}
2.Yara规则条件
and:与 or:或 not:非
all of them:所有条件匹配即告警
any of them:有一个条件匹配即告警
$a and $b and $c:abc同时匹配即告警
($a and $b) or $c:匹配a和b或c即告警
3.Yara规则常用修饰符
nocase:不区分大小写
base64:base64字符串
xor:异或字符串
wide:宽字符
详情查看:
参考文章1 应急响应-Yara规则木马检测
参考文章2 如何通过Yara规则匹配CobaltStrike恶意样本