应急响应 -Yara 规则木马检测

Yara 规则介绍
Yara 是一个基于规则的恶意样本分析工具,可以帮助安全研究人员和蓝队分析恶意软件,并且可以在应急取证过程中自定义检测规则来检测恶意软件,Yara 支持有木马文件落盘和无木马文件落盘(内存马)的检测,由一组字符串和一个确定的布尔表达式组成。
下载安装
1. Windows 环境下可直接下载编译好的 exe 程序进行检测分析,当前使用的版本为 4.1.3。

程序运行截图
2.Yara 检测程序运行中使用的参数。

运行参数
下载地址:https://github.com/VirusTotal/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:宽字符
4.下面是一条 Yara 规则的 demo。

yara 规则 demo
恶意程序检测案例
1、挖矿程序检测
1、下载 xmrig 挖矿程序,https://github.com/xmrig/xmrig/
2、编写 xmrig 挖矿程序检测规则,利用 010 Editor、die 等 PE 文件编辑工具进行特征的提取。此规则使用 PE 文件的文件头 4D 5A、挖矿程序专用协议 stratum、xmrig 挖矿的程序的名称、矿池域名 xx.pool.xx 等特征进行关联匹配。

xmrig 挖矿程序检测规则
3、xmrig 挖矿程序扫描,利用-r 参数对目录下的文件进行递归扫描,可发现利用检测规则扫描出 xmrig.exe 挖矿程序。

挖矿程序扫描
2、 无文件检测-python flask 内存马
1.命令行运行 python flask 内存马脚本。

内存马脚本
2.浏览器访问执行 payload,完成内存马的注入。
http://172.16.120.115:5000/test?param={{url_for.__globals__['__builtins__']['eval']("app.add_url_rule('/shell1', 'shell', lambda :__import__('os').popen(_request_ctx_stack.top.request.values.get('cmd', 'whoami')).read())",{'_request_ctx_stack':url_for.__globals__['_request_ctx_stack'],'app':url_for.__globals__['current_app']})}}
3.查看命令执行的效果。

whoami 命令执行
4.利用 procdump.exe dump 内存。

procdump dump 内存命令
5.检测内存中的明文特征,如 payload 中的_request_ctx_stack、exec|eval、url_for.__globals__、add_url_rule、__import__(‘os’).popen 等函数在内存中全部明文显示,利用此特征编写检测规则。

python flask 内存马检测规则
6.利用 python flask 内存马检测规则扫描出 python.exe 进程中被注入内存马。

python flask 内存马检测
评论