yara规则--构建yara规则库

article/2025/9/23 7:22:57

零、快速构建yara规则库的方案

  1. Yara官方预置的规则库,链接  https://github.com/Yara-Rules/rules
  2. ClamAV的特征码转换为yara规则,利用工具clamav_to_yara.py将clamav的特征码转换为yara规则
  3. 从yara-generator爬取别人上传的样本的规则
  4. 利用 yarGen工具 自动生成新的yara规则
当分析一个样本时,先用yara官方预置的库进行扫描。若没有匹配,将其上传到yara-generator网站 http://www.yara-generator.net/上自动分析yara规则,再将规则加入到规则库中。对于有针对性的分析某些行业的恶意软件,可以人工分析一些行业的关键字串特征,手动修改yara规则。
思路:

一、Yara官方预置的yara规则库

git clone  https://github.com/Yara-Rules/rules.git
规则以yar结尾。

二、ClamAV特征码转换为yara规则

2.1、用自带工具解压特征码

默认规则库放在/var/lib/clamav/main.cvd中,使用clamav自带的工具sigtool可以将其解压。
命令sigtool -u /var/lib/clamav/main.cvd可以将特征码解压,结果如下:
root@node1:/var/lib/clamav# sigtool -u /var/lib/clamav/main.cvd
root@node1:/var/lib/clamav# ll
total 808912
drwxr-xr-x  2 clamav clamav      4096 3月   2 13:39 ./
drwxr-xr-x 74 root   root        4096 11月 29 14:50 ../
-rw-r--r--  1 clamav clamav   1430528 2月  23 06:09 bytecode.cld
-rw-r--r--  1 root   root       17992 3月   2 13:39 COPYING
-rw-r--r--  1 clamav clamav 192306688 3月   1 17:07 daily.cld
-rw-r--r--  1 clamav clamav        69 11月 29 14:50 freshclam.dat
-rw-r--r--  1 root   root          44 3月   2 13:39 main.cdb
-rw-r--r--  1 root   root          44 3月   2 13:39 main.crb
-rw-r--r--  1 clamav clamav 170479789 11月 29 14:51 main.cvd   
-rw-r--r--  1 root   root       27584 3月   2 13:39 main.fp
-rw-r--r--  1 root   root     5220903 3月   2 13:39 main.hdb  # 已知的恶意软件文件的MD5哈希值
-rw-r--r--  1 root   root   167946684 3月   2 13:39 main.hsb
-rw-r--r--  1 root   root        1221 3月   2 13:39 main.info
-rw-r--r--  1 root   root    11650768 3月   2 13:39 main.ldb
-rw-r--r--  1 root   root   255457140 3月   2 13:39 main.mdb  # Windows PE恶意软件文件的MD5哈希值
-rw-r--r--  1 root   root          92 3月   2 13:39 main.msb
-rw-r--r--  1 root   root    23720141 3月   2 13:39 main.ndb  # 十六进制特征码
-rw-r--r--  1 root   root          87 3月   2 13:39 main.sfp
Main.ndb 是下一步的输入文件。

2.2、特征码转换为规则

脚本地址:https://github.com/mattulm/volgui/blob/master/tools/clamav_to_yara.py
转换命令: python2 clamav_to_yara.py -f main.ndb -o clamav.yara -s Agent
转换出来的结果clamav.yara如下所示:
转换的规则存在部分问题,使用过程中还需要人工修整规则。

三、从yara-generator爬取规则

yara-generator(Joe Sandbox公司的)网上可以查看其他用户上传的样本文件生成的规则。其网址为 http://www.yara-generator.net/,这网站也可以下载恶意样本。
这里可以下载每个样本的yara rule,没有提供所有的打包下载,写个爬虫可以轻易获取所有的rule。
在不担心样本泄露的情况下,可以将样本上传到 www.yara-generator.net进行分析, 完成之后即可下载对应的yara规则,这样就省去了自己编写yara规则的繁重工作了。

四、yarGen生成yara规则

4.1、yarGen介绍

yargen是一个自动化提取yara规则的工具,可以提取strings和opcodes特征。
原理:
        先解析出样本集中的共同的字符串,然后经过白名单库的过滤,最后通过启发式、机器学习等方式筛选出最优的yara规则。
        yarGen从样本中提取所有ASCII和UNICODE字符串,并删除所有出现在 goodware 字符串数据库中的数据。然后,它通过使用fuzzy regular expressionsGibberish Detector”来评估和评分每个字符串,该检测器允许yarGen检测并首选真实语言而不是没有意义的字符链。字符串的前 20 个将集成到生成的规则中。
多数据库支持:
        yarGen允许为opcodesstrings创建多个数据库。您可以通过使用“-c”创建新数据库和“-i identifier”为新数据库提供唯一标识符(例如“office”)来轻松创建新数据库。它将创建两个名为“good-strings-office.db”和“good-opcodes-office.db”的新数据库文件,从那以后,这些文件将在内置数据库启动期间初始化。
数据库创建/更新示例:
从 Office 2013 程序目录创建新的字符串和操作码数据库:
yarGen.py -c --opcodes -i office -g /opt/packs/office2013
分析和字符串提取过程将在“./dbs”子文件夹中创建以下新数据库:
good-strings-office.db
good-opcodes-office.db
这些新数据库中的值将在规则创建过程中自动应用,因为子文件夹“./dbs”中的所有 *.db 文件都将在启动期间初始化。
可以使用“-u”参数更新创建后的数据库:
yarGen.py -u --opcodes -i office -g /opt/packs/office365 
这将使用从给定目录中的文件中提取的新字符串更新“office”数据库
可以从日常应急中收集恶意样本,还可以通过蜜罐、威胁情报平台等渠道获取恶意样本,然后根据特征或者个人的习惯进行分类存放。

4.2、安装

因为yarGen 将整个 goodstring 数据库拉到内存中,并在几秒钟内使用至少 3 GB 的内存,请确保您计划使用 yarGen 的计算机上至少有 4GB 的 RAM(如果规则生成中包含操作码,则为 8GB,请与 --opcodes 一起使用)
1、git clone https://github.com/Neo23x0/yarGen.git
2、cd yarGen/
3、安装依赖: pip3 install -r requirements.txt
4、运行 python3 yarGen.py --update以自动下载内置数据库。将保存到“ ./dbs”子文件夹中
5、对webshell样本文件生成yara规则文件,输入python3 yarGen.py -m webshell文件 -o yar文件名 
python3 yarGen.py -m  /home/yara_test/webshellSample/PHP/ransomware/ -o ransomware.yar
生成的yara规则还需修正。

4.3、yarGen指令

usage: yarGen.py [-h] [-m M] [-y min-size] [-z min-score] [-x high-scoring]
                 [-w superrule-overlap] [-s max-size] [-rc maxstrings]
                 [--excludegood] [-o output_rule_file] [-e output_dir_strings]
                 [-a author] [-r ref] [-l lic] [-p prefix] [-b identifier]
                 [--score] [--strings] [--nosimple] [--nomagic] [--nofilesize]
                 [-fm FM] [--globalrule] [--nosuper] [--update] [-g G] [-u]
                 [-c] [-i I] [--dropzone] [--nr] [--oe] [-fs size-in-MB]
                 [--noextras] [--debug] [--trace] [--opcodes] [-n opcode-num]
yarGen
optional arguments:
  -h, --help            show this help message and exit
Rule Creation:
  -m M                 扫描恶意软件的路径
  -y min-size           要考虑的最小字符串长度(默认值=8)
  -z min-score          要考虑的最小分数(默认值=0)
  -x high-scoring       将字符串设置为“高度特定字符串”所需的分数(默认值:30)
  -w superrule-overlap  创建超级规则时重叠的最小字符串数(默认值:5)
  -s max-size           要考虑的最大长度(默认值=128)
  -rc maxstrings        每个规则的最大字符串数(默认值=20,将应用智能筛选)
  --excludegood         强制排除所有goodware strings
Rule Output:
  -o output_rule_file   输出规则文件
  -e output_dir_strings 字符串导出的输出目录
  -a author             作者名字
  -r ref                引用(可以是string或text)
  -l lic                License
  -p prefix             规则描述的前缀
  -b identifier         Text file from which the identifier is read (default:
                        last folder name in the full path, e.g. "myRAT" if -m
                        points to /mnt/mal/myRAT)
  --score               将字符串分数显示为规则中的注释
  --strings             将字符串分数显示为规则中的注释
  --nosimple            跳过为包含在超级规则中的文件创建简单规则
  --nomagic             Don't include the magic header condition statement
  --nofilesize          Don't include the filesize condition statement
  -fm FM                Multiplier for the maximum 'filesize' condition value
                        (default: 3)
  --globalrule          创建全局规则global rules(提高了规则集速度) 
  --nosuper             不要尝试创建与各种文件匹配的超级规则
Database Operations:
  --update              从在线存储库更新本地字符串和操作码dbs
  -g G                  扫描goodware的路径(不要使用yaraGen附带的数据库)
  -u                    使用新的分析结果更新本地标准goodware数据库(与-g一起使用)
  -c                    创建新的本地goodware数据库(与-g和可选的-i "identifier"一起使用)
  -i I                  为新创建的数据库指定标识符(good-strings-identifier.db,good-opcode-identifier.db)
General Options:
  --dropzone            Dropzone模式-监视要处理的新样本的目录警告[-m]:已处理的文件将被删除!
  --nr                  不递归扫描目录
  --oe                  仅扫描可执行扩展EXE、DLL、ASP、JSP、PHP、BIN、INFECTED
  -fs size-in-MB        要分析的最大文件大小(MB)(默认值=10)
  --noextras            不要使用Imphash或PE头细节等额外内容 
  --debug               Debug output
  --trace               Trace output
Other Features:
  --opcodes             请务必使用OpCode功能(如果找不到足够的高分字符串,请使用此功能)
  -n opcode-num         如果找不到足够的高分字符串,则要添加的opcodes数(默认值=3)

五、最佳实践

有关如何使用 yarGen 创建 YARA 规则的更详细说明,请参阅以下博客文章:
如何编写简单但合理的雅苒规则 - 第 1 部分
如何编写简单但合理的雅苒规则 - 第 2 部分
如何编写简单但合理的雅苒规则 - 第 3 部分

六、参考

Webshell样本库:
https://github.com/xl7dev/WebShell
https://github.com/tanjiti/webshellSample
https://github.com/webshellpub/awsome-webshell
https://github.com/DeEpinGh0st/PHP-bypass-collection/
GitHub - tutorial0/WebShell: WebShell Collect
https://github.com/malwares/WebShell
https://github.com/lhlsec/webshell
https://github.com/oneoneplus/webshell
https://github.com/vnhacker1337/Webshell
https://github.com/backlion/webshell

GitHub - Neo23x0/yarGen: yarGen is a generator for YARA rules  

https://github.com/Neo23x0/yarAnalyzer  

Yara规则以及yargen工具总结_qq_36944048的博客-CSDN博客

如何打造一款自己的恶意样本检测工具 - 哔哩哔哩 (bilibili.com)

构建自己的yara数据库 - alert123 - 博客园 (cnblogs.com)


http://chatgpt.dhexx.cn/article/xwt1iM8L.shtml

相关文章

yara规则--编写

编写 YARA 规则 — yara 4.2.0 文档 YARA规则易于编写和理解,并且它们的语法是 类似于 C 语言。这是您可以编写的最简单的规则 YARA,它什么都不做: rule dummy {condition:false } 一、规则标识符 每个规则都以关键字“ rule”开头&#xff0…

静态扫描之Yara第一话--安装及使用Yara

Yara安装及使用 概述 Yara是一款用于识别恶意软件及对其行为进行分类的安全利器。Yara会根据我们自己编写的yara规则,来对可疑软件进行一个模式匹配,若可疑软件中的一些特征与我们的yara规则匹配上了,则可以初步认定可疑软件为恶意软件。 项…

IDA报错No module named ‘yara‘

问题描述 D:\CTFTools\Reverse\IDA\ida77\plugins\findcrypt3.py: No module named yara Traceback (most recent call last):File "D:\CTFTools\Reverse\IDA\ida77\python\3\ida_idaapi.py", line 580, in IDAPython_ExecScriptexec(code, g)File "D:/CTFTool…

CentOS7下安装yara

Linux之yara的安装和使用 前言一、前置安装包1.安装automake2.安装libtool3.其余包4.SecureCRT 二、安装yara总结 前言 提示:本文将简述在centos下安装yara的方法: 一、前置安装包 在安装yara之前请先确定你的系统中是否已经安装automake,l…

使用 OSquery 和 YARA 进行审计

Part 1: osquery 简介 osquery是适用于 Windows、OSX、Linux 和 FreeBSD 的操作系统工具框架。这些工具使低级操作系统分析和监控既高效又直观。 osquery中的SQL表表示抽象概念,例如运行进程、加载的内核模块、开放式网络连接、浏览器插件、硬件事件或文件哈希。…

yara 实验

yara 实验 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. 什么是 yara YARA 是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具,使用 YARA 可以基于文本或二进制模式创建恶意软件家族…

yara 分析器

1.下载源码 wget https://github.com/VirusTotal/yara/archive/refs/tags/v4.2.3.tar.gz 2.预编译 tar -zxf yara-4.2.0.tar.gz cd yara-4.2.0 ./bootstrap.shyum -y install automake libtool make gcc pkg-config yum -y flex bison 3.编译与安装 ./bootstrap.sh ./conf…

yara安装与使用

yara安装与使用 环境及安装工具使用yara规则编写strings部分转义大小写字符集表示匹配单个词组文本字符串 condition部分infilesizeatentrypointint8/16/32、uint8/16/32of???[X-Y]them/($*)!for xxx of xxx :(xxx)for xxx i in (xxx) :(xx…

yara规则初识

一、YARA介绍 YARA 是一个免费开源工具,旨在帮助安全人员检测和分类恶意软件,但它不应仅限于这一种用途。YARA规则还可以帮助检测特定文件或您可能想要检测的任何内容。目前使用YARA 的知名软件有赛门铁克、火眼、卡巴斯基、VirusTotal、安天等。 YARA的…

Yara规则概述

一、Yara概述 YARA是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具(由virustotal的软件工程师Victor M. Alvarezk开发),使用YARA可以基于文本或二进制模式创建恶意软件家族描述信息,当然也可以是其他匹配信息。…

这五个资源超多的资源网站 请务必珍藏起来

现在很多人都会在网上找资源,如今互联网的快速发展也让大家找起资源来非常的容易,只要有好的资源网站,就不怕没有找不到的资源。而今天我和大家分享的就是几个资源超多的网站,希望你们不再缺少资源。 1、落花网 这个就很厉害了&…

这5款电影资源网站,让人第一眼就心动,第二眼就流连忘返!

工作烦心了一天,回到家忙完事情泡一杯热腾腾的咖啡,拿起手机或平板,打开电影网站,惬意的躺在沙发上享受自己心仪的电影带给你的快乐时光吧! 今天小编为大家推荐几款电影资源网站,喜欢的小伙伴千万不要错过&…

盘点程序员必备的免费资源网站

文章目录 1、软件资源类1、JDK国内镜像资源站2、 Arm原生 JDK(为 M1系列Mac而生)3、程序员大礼包 2、工具类1、在线工具2、菜鸟工具3、爱资料 2、算法&题库1、LeetCode2、LintCode3、牛客网 3、在线资源1、Github2、Stack Overflow3、CSDN4、天堂电影…

游戏美术资源网站推荐

梚辰 2022.4.25 未经授权禁止转发 最近我整理了一下以前使用过的购买游戏美术资源的网站,现在把这些分享给大家,希望对大家有些帮助。 1.Unity Asset Store(Unity资源商店) 这些Unity资源商店可以算是Unity官方的资源库了&#x…

晶体结构资源网站

晶体结构资源网站 1、无机晶体结构数据查询软件ICSD(findit)2、[晶体原型百科全书aflowlib](http://aflowlib.org/prototype-encyclopedia/index.html)3、[Crystallography Open Database](http://www.crystallography.net/cod/search.html)4、[American…

免费资源网站,你想要的全都有【各类宝藏资源 】

这6个免费资源网站,能帮你找到所有想要资源 前言 今天就把多年收藏整理的各类资源网站全都分享出来,都是完全免费的“资源”网站,质量非常高,一起来看看吧! 1、我爱分享网 网站整理了办公软件、解压软件、截图工具、…

刷机资源网站推荐

是不是各位想刷机的朋友找不到资源站今天就来推荐一下(资源均来源于网络,如果侵权请联系删除) 1.萤火虫资源站 首页 - 首页 - 👈萤火虫资源站 (kamiui.ml) 资源比较充足还有OneDrive资源 2.Mindows工具箱 mindows.cn 可以把你的手…

珍藏已久的6个资源网站,每天让你不愁找不到资源,你值得拥有

想必如果你是一名在网上混迹多年的老网民,手上一定有几套属于自己的网站,有时候想要什么直接在里面搜索十分方便!也不需要满网进行瞎找,但是这类网站起来很快倒下来也很多,所以在很多时候我们要不断的更新自己手头上的资源。 这里我也整理了6款适合我们工作学习中常用的网…

你还在为找资源而发愁?这里有最佳的5个资源网站!

搜索引擎在我们工作生活中是举足轻重的工具了,想要在如此庞大的互联网资源库中找到自己需要的信息也是不简单的,这里给大家分享5个优质的资源网站,看完你肯定有相见恨晚的感觉。 1、纳米学习 http://www.1nami.com/ 这是一个集合了网易云课…

13个免费资源网站,你想要的全都有!【各类宝藏资源,建议收藏】

前言 前段时间,博主写了一篇文章关于如何用Python自制一款音乐播放器,有不少粉丝私信我说,这些高颜值UI设计模板都是从哪里找的,可以把网址分享出来嘛~ 当然没问题,今天就把多年收藏整理的各类资源网站全都分享出来&…