目录导航
yara简介
YARA是旨在(但不限于)帮助恶意软件研究人员识别和分类恶意软件样本的工具。使用YARA,您可以基于文本或二进制模式来创建恶意软件家族的描述(或任何您想描述的)。每个描述(也称为规则)都由一组字符串和一个布尔表达式组成,它们决定了逻辑。让我们来看一个例子:
rule silent_banker : banker
{
meta:
description = "This is just an example"
threat_level = 3
in_the_wild = true
strings:
$a = {6A 40 68 00 30 00 00 6A 14 8D 91}
$b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
$c = "UVODFRYSIHLNWPEJXQZAKCBGMT"
condition:
$a or $b or $c
}
上面的规则告诉YARA,任何包含三个字符串之一的文件都必须报告为silent_banker。这只是一个简单的示例,可以使用通配符,不区分大小写的字符串,正则表达式,特殊运算符以及您将在YARA文档中找到的许多其他功能来创建更复杂,更强大的规则。
YARA是多平台的,可以在Windows,Linux和Mac OS X上运行,可以通过其命令行界面使用,也可以从带有yara-python扩展名的Python脚本中使用。
额外资源
如果打算使用YARA扫描压缩文件(.zip,.tar等),则应查看yextend,它是由Bayshore Networks开发和开源的YARA的非常有用的扩展。
此外,InQuest的人员还精心策划了一系列与YARA相关的资料。
谁在使用YARA
- ActiveCanopy
- Adlice
- AlienVault
- BAE Systems
- Bayshore Networks, Inc.
- BinaryAlert
- Blue Coat
- Blueliv
- Cofense
- Conix
- CrowdStrike FMS
- Cuckoo Sandbox
- Cyber Triage
- Digita Security
- Dragos Platform
- Dtex Systems
- ESET
- ESTSecurity ESET
- Fidelis XPS
- FireEye, Inc. 火眼
- Fox-IT
- FSF
- Guidance Software
- Heroku
- Hornetsecurity
- InQuest
- JASK
- Joe Security
- jsunpack-n
- Kaspersky Lab 卡巴斯基
- Koodous
- Laika BOSS
- Lastline, Inc.
- LimaCharlie
- McAfee Advanced Threat Defense 迈克菲
- Metaflows
- NBS System
- Nozomi Networks
- osquery
- Payload Security
- PhishMe
- Picus Security
- Radare2
- Raytheon Cyber Products, Inc.
- RedSocks Security
- ReversingLabs
- root9B
- Scanii
- RSA ECAT
- SpamStopsHere
- stoQ
- Symantec
- Tanium
- Tenable Network Security
- The DigiTrust Group
- ThreatConnect
- ThreatStream, Inc.
- Thug
- Trend Micro 趋势
- VirusTotal Intelligence VirusTotal
- VMRay
- We Watch Your Website
- Websense
- x64dbg
- YALIH
yara规则
- AlienVault实验室规则
- 来自AlienVault实验室的研究人员的工具,签名和规则的集合。在仓库中搜索.yar和.yara扩展名,找到大约两打规则,范围从APT检测到通用沙箱/ VM检测。最后更新时间为2016年1月。
- 苹果OSX
- 苹果有约40个YARA签名,可用于检测OSX上的恶意软件。XProtect.yara文件可在/System/Library/CoreServices/XProtect.bundle/Contents/Resources/中本地获得。
- bamfdetect规则
- 来自Brian Wallace的自定义规则用于bamfdetect,以及来自其他来源的一些规则。
- 野蛮人YARA规则 ?
- 收集个人YARA规则
- BinaryAlert YARA规则
- 作为其BinaryAlert工具的一部分,AirBnB编写并发布了几十条规则(请参阅下一节)。在Linux,Window和OS X上检测黑客工具,恶意软件和勒索软件。这是一个新的活跃项目。
- burp YARA规则
- 旨在通过Yara-Scanner扩展与Burp代理一起使用的YARA规则的集合。这些规则主要针对通常通过HTTP传送的非exe恶意软件,包括HTML,Java,Flash,Office,PDF等。最近更新于2016年6月。
- BinSequencer
- 在一组样本中找到一个通用的字节模式,然后从识别出的模式中生成一个YARA规则。
- CAPE规则 ?
- 来自不同作者的规则与Config And Payload Extraction Cuckoo Sandbox扩展捆绑在一起(请参阅下一节)。
- CDI规则
- CyberDefenses发布供公众使用的YARA规则集合。根据情报档案,档案和文件工作中的信息构建。
- 公民实验室恶意软件签名
- 由市民实验室开发的YARA签名。涵盖各种恶意软件家族的数十个签名。还包括Vim的语法文件。最近一次更新是在2016年11月。
- ConventionEngine规则 ✨
- 一组Yara规则寻找具有PDB路径且具有独特,异常或明显具有恶意外观的关键字,术语或其他功能的PE。
- 死位规则 ?
- Splunk的首席威胁英特尔Adam Swanda公开了YARA规则的集合。分析师,来自他自己最近对恶意软件的研究。
- 迪迪埃·史蒂文斯规则 ?
- 迪迪埃·史蒂文斯(Didier Stevens)收集的规则,这是一套用于检查OLE / RTF / PDF的工具。迪迪埃的规则值得仔细研究,通常是为狩猎而写的。新规则经常通过NVISO Labs博客宣布。
- ESET IOC ?
- 从ESET研究人员收集的IOC中收集YARA和Snort规则。在此仓库中,大约有十几条YARA规则可供收集,搜索文件扩展名.yar。该存储库似乎每月大约更新一次。ESET WeLiveSecurity博客上经常提到新的IOC 。
- 费德利斯规则
- 您可以在Fidelis Cyber的IOC储存库中找到半打YARA规则。他们大约每季度更新一次此存储库。此存储库中也提供了完整的博客内容。
- 弗洛里安·罗斯规则 ? ?
- 弗洛里安·罗斯(Florian Roth)的签名库是不断更新的IOC和YARA规则的集合,涵盖了广泛的威胁。有数十条正在积极维护的规则。观看存储库,了解规则随着时间的推移而发展,以解决错误的正负值。
- 弗洛里安·罗斯(Florian Roth)的IDDQD规则
- 概念验证规则,显示检测红队和威胁组工具及代码实际上有多容易。
- 弗兰克·博尔德温规则
- FSF规则
- 主要是来自EmersonElectricCo FSF项目的文件类型检测规则(请参阅下一节)。
- GoDaddy ProcFilter规则
- GoDaddy编写和发布了数十条规则,可与ProcFilter一起使用(请参阅下一节)。规则示例包括检测包装工,mimikatz和特定的恶意软件。
- h3x2b规则 ?
- 来自h3x2b的签名集合非常突出,因为它们是通用的,可用于辅助逆向工程。有YARA规则,用于标识加密例程,高度熵的部分(例如,证书发现),发现注入/挂钩功能等等。
- 冰水规则
- 来自Icewater.io的自动生成的YARA规则的存储库。该存储库使用新生成的签名进行了快速更新,这些签名在文件大小范围和部分内容散列上基本匹配。
- 整数规则 ✨
- Intezer Labs发布的YARA规则。
- InQuest规则 ?
- InQuest研究人员发布的YARA规则主要针对Virus Total上的威胁搜寻。随着收集新样本并发现新的关键点,规则也会更新。在审讯博客经常会讨论新的发现。
- jeFF0Falltrades规则 ✨
- 各种恶意软件系列的YARA签名集合。
- kevthehermit规则
- 凯文·布雷恩(Kevin Breen)个人收藏中的数十条规则。自2016年2月以来,此存储库尚未更新。
- 卑鄙的社区规则
- Android APK恶意软件的社区贡献规则。
- 卢亚拉
- 规则集,用于扫描Linux服务器的外壳,垃圾邮件,网络钓鱼和其他Web服务器恶意程序。
- NCC组规则 ?
- NCC集团的网络防御团队发布了一些YARA规则。
- Malice.IO YARA插件规则 ?
- 从各种来源收集有关Malice.IO框架的YARA组件的主题。
- 马尔代夫自动生成的规则 ✨
- 一个zip文件,其中包含使用Malpedia的YARA-Signator创建的所有自动生成的基于代码的规则
- McAfee Advanced Threat Research IOC
- 包括YARA规则在内的IOC会与McAfee ATR的博客和其他公共帖子一起出现。
- McAfee Advanced Threat Research Yara-Rules
- McAfee ATR Teams制定的YARA规则存储库。
- mikesxrs YARA规则集 ? ?
- 大量开源规则收集自各种来源,包括博客和其他更短暂的来源。超过100个类别,1500个文件,4000条规则和20Mb。如果您要拉下一个回购来玩,那就是那个。
- 帕特里克·奥尔森规则 ?
- 少量规则收集,具有广泛的检测范围。RAT,文档,PCAP,可执行文件,内存中,销售点恶意软件等。不幸的是,自2014年下半年以来,该存储库一直没有更新。
- QuickSand Lite规则
- 此存储库包含一个C框架和用于恶意软件分析的独立工具,以及为该项目开发的一些有用的YARA规则。
- Rastrea2r
- 在数分钟内对可疑系统进行分类,并在成千上万的端点上寻找危害指标(IOC)。
- ReversingLabs YARA规则 ✨ ?
- 由ReversingLabs发布的一系列yara规则,涵盖了漏洞利用程序,信息窃取者,勒索软件,木马和病毒。
- Sophos AI YaraML规则
- 自动创建的Yara规则存储库,作为机器学习模型的翻译。每个目录都有一个规则和随附的元数据:训练中使用的文件的哈希值和准确性图(ROC曲线)。
- SpiderLabs规则
- SpiderLabs研究人员的与恶意软件分析相关的工具和脚本的资料库。这里只有三个YARA规则,最近一次更新是在2015年,但值得探索。
- 成立规则
- Tenable Network Security的少量收藏。
- TjadaNel规则
- 一小部分恶意软件规则。
- VectraThreatLab规则
- YARA识别反RE恶意软件技术的规则。
- x64dbg签名 ?
- 有趣的打包程序,编译器和加密标识签名的集合。
- 亚拉法医
- 文件类型标识规则的集合。
- yara4pentesters
- 识别包含多汁信息(例如用户名,密码等)的文件的规则。
- YaraRules项目官方仓库 ?
- 社区不断更新的大量规则集。
- 亚拉(Yara-Unprotect)
- 为Unprotect Project创建的规则,用于检测恶意软件规避技术。
项目地址
GitHub https://github.com/virustotal/yara
yara下载地址
①GitHub: github.com/VirusTotal/yara
②雨苁网盘: https://w.ddosi.workers.dev/
yara安装方法
YARA是在Windows,Linux和Mac OS X上运行的多平台程序。
您可以在https://github.com/VirusTotal/yara/releases找到最新版本。
编译和安装YARA
下载源tarball并准备对其进行编译:
tar -zxf yara-4.0.0.tar.gz cd yara-4.0.0 ./bootstrap.sh
请确保您系统中安装有automake
,libtool
,make
并gcc
与pkg-config
。Ubuntu和Debian用户可以使用如下命令安装yara:
sudo apt-get install automake libtool make gcc pkg-config
如果您打算修改YARA的源代码,可能还需要flex
以及 bison
生成词法分析器和解析器的方法:
sudo apt-get install flex bison
以标准方式编译和安装YARA:
./configure make sudo make install
运行测试用例以确保一切正常:
make check
YARA的某些功能取决于OpenSSL库。只有在系统中安装了OpenSSL库的情况下,才能启用这些功能。否则,YARA会正常工作,但您将无法使用禁用的功能。该configure
脚本将自动检测是否已安装OpenSSL。如果要强制执行与OpenSSL相关的功能,则必须传递 --with-crypto
给configure
脚本。Ubuntu和Debian用户可以 用来安装OpenSSL库。sudo apt-get install libssl-dev
默认情况下,以下模块未编译为YARA:
- cuckoo
- magic
- dotnet
如果打算使用它们,则必须将相应的参数传递给脚本。--enable-<module name>
configure
例如:
./configure --enable-cuckoo ./configure --enable-magic ./configure --enable-dotnet ./configure --enable-cuckoo --enable-magic --enable-dotnet
模块通常取决于外部库,根据您选择安装的模块,您将需要以下库:
- cuckoo:依赖于Jansson解析JSON。一些Ubuntu和Debian版本已经包含名为的软件包
libjansson-dev
,如果对您不起作用,则从其仓库中获取源代码 。sudo apt-get install libjansson-dev
- magic:取决于libmagic,这是Unix标准程序文件使用的库 。Ubuntu,Debian和CentOS包含一个软件包
libmagic-dev
。源代码可以在这里找到 。
使用vcpkg安装
您还可以使用vcpkg依赖性管理器下载并安装YARA :
git clone https://github.com/microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install vcpkg install yara
Microsoft团队成员和社区贡献者不断更新vcpkg中的YARA端口。如果版本过时,请在vcpkg存储库上创建问题或请求请求。
在Windows上安装
可以在下面的链接中找到32位和64位版本的Windows编译二进制文件。
只需下载所需的版本,解压缩存档,然后将 yara.exe
和和yarac.exe
二进制文件放在磁盘的任何位置。
要使用Scoop或Chocolatey安装YARA ,只需输入 scoop install yara 或choco install yara
《Scoop》和《Chocolatey》的整合并不是由YARA的作者们各自维护的。
使用Homebrew在Mac OS X上安装
要使用Homebrew安装YARA ,只需键入 。
brew install yara
yara-python
安装
如果您打算从Python脚本中使用YARA,则需要安装 yara-python
扩展。请参阅https://github.com/VirusTotal/yara-python 以获得有关如何安装它的说明。
首次运行YARA
现在您已经安装了YARA,您可以编写一个非常简单的规则并使用命令行工具来扫描某些文件:
echo rule dummy { condition: true } > my_first_rule yara my_first_rule my_first_rule
不要my_first_rule
为的参数 重复而感到困惑yara
,我只是传递与规则和要扫描的文件相同的文件。您可以传递要扫描的任何文件(第二个参数)。
如果一切顺利,您应该获得以下输出:
dummy my_first_rule
这意味着文件my_first_rule
与名为的规则匹配dummy
。
如果收到这样的错误:
yara: error while loading shared libraries: libyara.so.2: cannot open shared object file: No such file or directory
这意味着加载程序找不到libyara
位于中的库/usr/local/lib
。在某些Linux版本中,加载器默认情况下不会在此路径中查找库,我们必须通过添加/usr/local/lib
到加载器配置文件中来指示它这样做 /etc/ld.so.conf
:
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf' sudo ldconfig
如果您使用Windows PowerShell作为命令shell程序,则可能返回以下错误:yara my_first_rule my_first_rule
my_first_rule(1): error: non-ascii character
您可以通过Set-Content
在创建规则文件时使用cmdlet指定ascii输出来避免这种情况:
Set-Content -path .\my_first_rule -Value "rule dummy { condition: true }" -Encoding Ascii .\yara my_first_rule my_first_rule
yara在windows运行演示

解压—cd到该目录下,输入 yara64 –help
C:\Users\ddos1\Desktop\yara-v4.0.2-1347-win64>yara64 --help
YARA 4.0.2, the pattern matching swiss army knife.
Usage: yara [OPTION]... [NAMESPACE:]RULES_FILE... FILE | DIR | PID
长选项的强制参数对于短选项也是强制的。
--atom-quality-table=FILE 带有atom质量表的文件的路径
-C, --compiled-rules 导入编译规则
-c, --count 只输出匹配的数量
-d, --define=VAR=VALUE 定义外部变量
--fail-on-warnings 失败的警告
-f, --fast-scan 快速匹配模式
-h, --help 显示帮助并退出
-i, --identifier=IDENTIFIER 仅输出命名为标识符的规则
-l, --max-rules=NUMBER 在匹配大量规则后终止扫描
--max-strings-per-rule=NUMBER 设置每个规则的最大字符串数(默认值为10000)
-x, --module-data=MODULE=FILE 将文件内容作为额外数据传递给模块
-n, --negate 只输出不满足的规则(否定)
-w, --no-warnings 禁用警告
-m, --print-meta 输出元数据
-D, --print-module-data 输出模块数据
-e, --print-namespace 输出规则的名称空间
-S, --print-stats 输出规则的统计数据
-s, --print-strings 输出匹配的字符串
-L, --print-string-length 输出匹配字符串的长度
-g, --print-tags 打印标签
-r, --recursive 递归搜索目录(在符号链接后面)
--scan-list 扫描文件中列出的文件,每行一个
-k, --stack-size=SLOTS 设置最大堆栈大小(默认=16384)
-t, --tag=TAG 只打印标记为标签的规则
-p, --threads=NUMBER 使用指定数目的线程扫描目录
-a, --timeout=SECONDS 在给定的秒数后中止扫描
-v, --version 显示版本信息
可发送bug报告和建议到该邮箱: [email protected]
更多操作说明使用方法请自行查阅如下yara说明书