
在二进制数据和/或文本中发现的所有正则匹配(以及它们更性感,更多的斗篷和匕首)。查看当您将各种字符编码强制对那些匹配的字节进行强制编码时会发生什么。带有颜色。
pipx install yaralyzer
# Scan against YARA definitions in a file:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Scan against an arbitrary regular expression:
yaralyze --regex-pattern ' good and evil.*ofs+w+byte ' the_crypto_archipelago.exe
# Scan against an arbitrary YARA hex pattern
yaralyze --hex-pattern ' d0 93 d0 a3 d0 [-] 9b d0 90 d0 93 ' one_day_in_the_life_of_ivan_cryptosovich.bin'/.+/' ,并立即将窗口介绍到前面斜杠之间的文件中所有字节中的所有字节。支持Yara可以处理的任何报价,BOMS等的故事都得到支持,因此天空是极限。chardet是一个用于猜测角色编码的复杂库,在这里利用它。chardet来查看字节是否符合任何已知编码的模式。如果chardet有足够的自信(可配置)尝试使用该编码来解码字节。当很明显二进制中的可视化和解码模式匹配比在PDF分析工具中,可视化和解码模式匹配具有更多的用途,从而从PDFALYZER中提取了Yaralyzer的功能。
Yara,对于那些不了解1的人来说,它被称为恶意软件分析/警报工具,但实际上既要多得多,而且要少得多。考虑到这一点的一种方法是,Yara是类固醇上的正则表达式匹配引擎。它可以像任何Regex引擎一样在二进制文件中找到正则匹配项,但它也可以做一些更荒谬的事情,例如在逻辑组中结合回报,将Regexes与所有256个Xored版本进行比较,检查base64和其他模式的其他编码等等。也许在所有Yara中最重要的是,Yara提供了一种基于标准的文本格式,让人们与世界分享其ro的regexes。在分析或反向工程恶意软件时,所有这些功能都特别有用,其作者倾向于花费大量时间来制作很难找到东西。
但是...这也是Yara所做的一切。其他一切都取决于用户。 Yara只是一个匹配引擎,如果您不知道该匹配的内容(甚至是您可以匹配的角色编码),它只会使您走得太远。我发现自己有点沮丧,试图使用Yara来查看几种关键模式的所有比赛:
".+"和'.+' )之间的字节/.+/ )。前斜线在许多实现中划定了正则表达式,我试图看看与此模式相匹配的任何字节是否实际上是Regexes。Yara只是告诉您字节位置和匹配的字符串,但不能告诉您这些字节是否为UTF-8,UTF-16,Latin-1等(或以上都不是)。我还发现自己想了解匹配字节的区域,而不仅仅是在匹配的字节中发生了什么。换句话说,我想在匹配的任何内容之前和之后立即范围内范围。
输入Yaralyzer ,它使您可以快速扫描比赛周围的区域,同时还向您展示这些区域如果被迫使用各种角色编码的区域。
重要的是要注意, Yaralyzer并不是针对恶意软件逆转工具的完整。它无法完成像Cyberchef这样的工具所做的所有事情,并且不会尝试。它更旨在让您快速对二进制中的可疑区域进行视觉概述,以便您可以使用更严肃的工具(例如Cyberchef)进行磨练。
使用pipx或pip3安装。 pipx是一种更好的解决方案,因为它可以保证将其安装的任何软件包与您的其他本地Python环境隔离。当然,如果您真的没有本地的Python环境,这是一个有争议的点,您可以随意使用pip / pip3安装。
pipx install yaralyzer
运行yaralyze -h查看命令行选项(下面的屏幕截图)。

有关导出SVG图像,HTML等的信息,请参见示例输出。
如果您将一个名为.yaralyzer的文件放在主目录或当前工作目录中,则每次调用Yaralyzer时,将在该.yaralyzer文件中指定的环境变量。这提供了一种永久配置各种命令行选项的机制,因此您可以避免一遍又一遍地键入它们。请参阅示例文件.yaralyzer.example以查看可以以这种方式配置的选项。
将只加载一个.yaralyzer文件,并且工作目录的.yaralyzer优先于主目录的.yaralyzer 。
Yaralyzer是主要班级。它有多种构造函数支持:
.yara文件中的Yara规则bytes如果您想在BytesMatch上迭代(例如yara匹配的re.Match对象)和BytesDecoder (跟踪Yaralyzer返回的对象)对象,您可以这样这样做:
from yaralyzer . yaralyzer import Yaralyzer
yaralyzer = Yaralyzer . for_rules_files ([ '/secret/rule.yara' ], 'lacan_buys_the_dip.pdf' )
for bytes_match , bytes_decoder in yaralyzer . match_iterator ():
do_stuff ()Yaralyzer可以使用RICH随附的文件导出功能向HTML,ANSI彩色文本和SVG矢量图像导出可视化。 SVG可以使用Inkscape或cairosvg等工具将SVG变成png格式图像。根据我们的经验,他们俩都在工作,尽管我们已经看到了cairosvg的故障。
PYPI用户:如果您正在阅读有关PYPI的文档,请意识到它在GitHub上的渲染要好得多。漂亮的图片,有效的脚注等。


chardet.detect()对您的字节的可能性进行思考的内容: 
rich渲染引擎有关。目前,控制台输出是“更正确”的一个,因此通常可以。 issue_with_output_to_txt_file_incorrect.png参阅issue_with_output_to_console_correct vs.soess_with_output_to_txt_file_incorrect.pngchardet的Behest上进行的解码直到最近。 ↩