yara安装与使用

article/2025/9/23 7:58:32

yara安装与使用

环境及安装

操作系统:win10

安装地址:https://github.com/VirusTotal/yara/releases/tag/v4.2.0-rc1

直接在这个地址下就可以

工具使用

在cmd目录下打开
命令:

yara my_rule my_file 

第一个参数是你的yara规则文件,第二个是检测文件,可以是目录
在这里插入图片描述

yara规则编写

yara的的每一条规则都由一系列字符串和一个bool型表达式构成,并且都具有关键字。

规则以字母、数字、下划线组成,字符串首字符不能是数字,单条描述不超过128字符

yara的基本规则定义如下:

rule ExampleRule{strings:$my_text_string = "text here"$my_hex_string = {E2 34 A1 C8 23 FB}condition:$my_text_string or $my_hex_string}

其中字符串区域非必需,条件区域必需。

可以存在只有条件区域的规则,如:

rule Dummy
{condition:true
}

strings部分

Strings部分可以使用3种字符串:文本字符串、十六进制字符串、正则表达式。

文本字符串:用来定义文件或内存中可读的部分;

十六进制字符串:用来定义十六进制字节内容;

正则表达式:可用来在文本字符串和十六进制字符串种。

文本字符串采用""引用;
十六进制采用{}引用,每个十六进制字符间用空格间隔,并且只能包含十六进制字符;
正则表达式直接在文本字符串和十六进制字符串种使用即可使用即可,也可单独使用//引用。

转义

字符串的转义直接参科与其他语言的转义一致。

大小写

yara默认对大小写敏感,可以使用nocase关键字来使yara对大小写不敏感。

例如:

rule NocaseTextExample{strings:$text_string ="foobar" nocase	//foobar可以替换为FOOBAR、Foobar等condition:$text_string}

字符集表示

如果在目标文件中一个字符由两个字节表示,即宽字符形式,则可以使用wide关键词来表示文本字符串。如果既想表示宽字符,也想表示ASCII码,则可以再使用ascii关键词。

例如:

rule WideAsciiTextExample{strings:$text_string ="foobar" nocase wide asciicondition:$text_string}

匹配单个词组文本字符串

如果想匹配单个词组文本字符串,可以使用fullword关键词。

例如:

rule FullwordTextExample{strings:$text_string = "foobar"fullwordcondition:$text_string}/*
abcfoobar
foobar-abc
foobar.abc
在上述3种情况中,只会匹配到第三种情况
*/

condition部分

condition部分通常由一个bool型表达式构成。若该表达式成立则会被检测到,反之则不能。

该表达式由bool操作符、关系操作符、算数操作符、按位操作符和yara关键字组成。

condition部分涉及到的关键字及其使用方法。

#用来表示出现的次数

rule CountExample
{strings:$a = "dummy1"$b = "dummy2"condition:#a == 6 and #b > 10
}
/*
将$替换成#即可
#a即代表$a出现的次数
*/

in

in:用来确定相对于文件或进程的偏移地址的范围。

rule InExample
{strings:$a = "dummy1"$b = "dummy2"condition:$a in (0..100) and $b in (100..filesize)
}
/*
$a出现在偏移地址0~0x100并且$b出现在0x100之后
*/

filesize

filesize代表文件大小,若目标不为文件将无视

rule FileSizeExample
{condition:filesize > 200KB
}

at

表示字符串在文件中的偏移位置或虚拟地址

 rule CountExample{strings:$a = "text1"$b = "text2"$c = "text3"condition:$a at 100 and $b at 0x004C0000 and $cat 300}

entrypoint

表示文件入口点,适用于PE文件和ELF文件,也适用于正在运行的程序

该变量已被弃用,在yara3.0后被彻底弃用

rule FileSizeExample{string:$a = {E8 00 00 00}condition:$a at entrypoint}

int8/16/32、uint8/16/32

在相应地址访问相应数据类型,如果要读取大端整数,请使用以结尾的相应函数be

int8(<offset or virtualaddress>)int16(<offset or virtualaddress>)int32(<offset or virtualaddress>)uint8(<offset or virtualaddress>)uint16(<offset or virtualaddress>)uint32(<offset or virtual address>)

例如:

rule IsPE{condition:// MZ signature at offset 0uint16(0) == 0x5A4D and// PE signature at offset stored in MZheader at 0x3Cuint32(uint32(0x3C)) == 0×00004550}

of

集合

rule Example
{    strings:        $a = "dummy1"        $b = "dummy2"$c = "dummy3"condtion:2 of ($a,$b,$c)  //当$a$b$c中有两个字符串存在于文件时,表示匹配
}

??

匹配一字节未知数,即通配符

匹配半字节未知数,即通配符

[X-Y]

字符长度在X到Y的范围中即可匹配

限制:X<=Y;

​ 若X=Y,则[X]与[X-Y]等价;

从YARA 2.0开始,还可以使用[X-]或[-X]这种无界跳转

rule JumpExample
{strings:$hex_string = { F4 23 [4-6] 62 B4 }condition:$hex_string
}
/*
F4 23 01 02 03 04 62 B4
F4 23 00 00 00 00 00 62 B4
F4 23 15 82 A3 04 45 22 62 B4
以上3个字符串均可匹配
*/

them/($*)

可以使用them/($*)来代指所有规则

rule OfExample4
{strings:$a = "dummy1"$b = "dummy2"$c = "dummy3"condition:1 of them // equivalent to 1 of ($*)
}

@

@用来表示字符串在文件或内存中出现的偏移或虚拟地址

@a[i]表示字符串a在文件或内存中第i次出现的偏移或虚拟地址

如果i大于实际出现次数,将返回NaN(not a number)

rule OfExample4
{strings:$a = "dummy1"$b = "dummy2"$c = "dummy3"condition:@a[1]=0x123456
}

!

!用来表示字符串在文件或内存中出现的字符串长度

用法与@基本一致

!a=!a[1]

rule OfExample4
{strings:$a = "dummy1"$b = "dummy2"$c = "dummy3"condition:!a[1]=0x123456
}

for xxx of xxx :(xxx)

使用for n of ($a,$b,$c) : ($ at entrypoint)来表示在字符集中存在n个字符串符合条件

$用来代指字符集中的每一个字符串,其他如@、!、#等均可同样省略

rule OfExample4
{strings:$a1 = "dummy1"$a2 = "dummy2"$a3 = "dummy3"condition:for 2 of ($a*) : ($ at entrypoint)
}

for xxx i in (xxx) :(xxx)

功能用法与上一个基本一致

rule OfExample4
{strings:$a1 = "dummy1"$a2 = "dummy2"$a3 = "dummy3"condition:for 2 i in (1..#a) : ( @a[i] < 100 )	//遍历所有$a出现位置,偏移均要小于100
}

其他yara关键字

yara关键字具体如下:

global

global rule:全局规则,优先级最高

private

private rule:私有规则,进行匹配时不会输出任何匹配信息

TagRule

rule TagRule:规则标签,可以让你在YARA输出的时候只显示你感兴趣的规则,而过滤掉其它规则的输出信息

​ 你可以为规则添加多个标签

rule TagRule : dummy1 dummy 2 
{    strings:        $a = "dummy1"        $b = "dummy2"      condition:        $a and $b 
}

引用规则

在另一个规则中,直接引用即可

import

可以使用import导入其他模块,可以是第三方或官方模块,或自己写的模块

include

该部分与C语言类似,可以用来包含其他规则文件

注释

yara使用//进行单行注释,使用/**/进行多行注释。

mate

mate是yara中可有可无的一部分,用来放置有关该规则的其他信息

外部变量

可以使用在ext_var中添加一个外部变量,在编写规则时直接引用即可


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

相关文章

yara规则初识

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

Yara规则概述

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

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

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

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

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

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

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

游戏美术资源网站推荐

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

晶体结构资源网站

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

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

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

刷机资源网站推荐

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

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

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

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

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

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

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

​遗传算法优化神经网络实现数据预测

作者 | 李秋键 责编 | 寇雪芹 头图 | 下载于视觉中国 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 引言 随着人工智能和大数据的发展&#xff0c;大量实验和数据处理等流程对算法的要求也随之变得越来越高&#xff0c;故综合以及灵活运用不同的算法以实现更高效的…

Python实现GWO智能灰狼优化算法优化支持向量机回归模型(svr算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能…

基于遗传算法GA算法优化BP神经网络(Python代码实现)

一、 概述 BP-GA算法的设计︰基于遗传算法的BP神经网络算法(以下简称BP-GA)就是在BP神经网络的学习过程中,将权重和阀值描述为染色体,并选取适宜的适应函数,然后进行GA迭代,直到某种意义上的收敛.与普通BP学习算法相比,算法 BP一GA的优势在于可以处理一些传统方法不能处理的例子…

Python实现WOA智能鲸鱼优化算法优化支持向量机分类模型(SVC算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提出…

基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码1 GWO-SVM 模型1.1 灰狼优化器GWO1.2 支持向量机分类SVM 2 基于GWO-SVM 的分类算法2.1 优化变量与目标函数的选取2.2 GWO-SVM 建模步骤…

基于麻雀算法优化LSTM回归预测(matlab)

基于麻雀算法优化LSTM回归预测&#xff08;matlab&#xff09; 概述&#xff1a; 麻雀算法构思lstm原理麻雀优化lstm原理代码及结果展示 第一部分 麻雀算法构思 众所周知&#xff0c;麻雀是常见的留鸟而且非常喜欢群居。这种生物是非常聪明的&#xff0c;有很强的记忆力&am…

鲸鱼优化算法优化BP神经网络回归预测的算法设计-附代码

鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 文章目录 鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现1. 算法描述2. 鲸鱼优化算法优化BP神经网络预测的步骤与流程图设计3. WOA-BP预测算法的参数设置4. 运行结果5. MATLAB代码 1. 算法描述 鲸…

遗传算法优化BP神经网络

遗传算法原理 遗传算法背景不作介绍。遗传算法作为一种并行随机搜索最优化算法&#xff0c;将自然界的优胜劣汰的生物进化原理引入优化参数形成的编码串联群体中&#xff0c;按照所选的适应度函数并通过遗传中的选择&#xff0c;交叉和变异对个体进行筛选&#xff0c;使适应度…