基于二进制码的yara规则生成
mkYARA的Python项目详细描述
mkyara
在恶意软件中基于可执行代码编写yara规则可能是一项乏味的任务。分析师不能简单地将原始可执行代码复制并粘贴到yara规则中,因为此代码包含变量值,如内存地址和偏移量。分析员必须反汇编代码和通配符代码中可以在样本之间更改的所有部分。mkyara的目标是通过生成可执行代码签名来自动编写规则的这一部分,这些可执行代码签名通配符将所有这些非静态的可执行代码片段通配符化。
安装
安装和安装pip包一样简单。
pip install mkyara
用法
importcodecsfromcapstoneimportCS_ARCH_X86,CS_MODE_32frommkyaraimportYaraGeneratorgen=YaraGenerator("normal",CS_ARCH_X86,CS_MODE_32)gen.add_chunk(b"\x90\x90\x90",offset=1000)gen.add_chunk(codecs.decode("6830800000E896FEFFFFC3","hex"),offset=0x100)gen.add_chunk(b"\x90\x90\x90\xFF\xD7",is_data=True)rule=gen.generate_rule()rule_str=rule.get_rule_string()print(rule_str)
独立工具
mkyara附带了一个独立的跨平台工具,它可以为运行在linux下的windows二进制文件创建签名。
usage: mkyara [-h] [-i {x86}] [-a {32,64,x86,x64}] -f FILE_PATH [-n RULENAME] -o OFFSET -s SIZE [-m {loose,normal,strict}] [-r RESULT] [-v] Generate a Yara rule based on disassembled code optional arguments: -h, --help show this help message and exit -i {x86}, --instruction_set {x86} Instruction set -a {32,64,x86,x64}, --instruction_mode {32,64,x86,x64} Instruction mode -f FILE_PATH, --file_path FILE_PATH Sample file path -n RULENAME, --rulename RULENAME Generated rule name -o OFFSET, --offset OFFSET File offset for signature -s SIZE, --size SIZE Size of desired signature -m {loose,normal,strict}, --mode {loose,normal,strict} Wildcard mode for yara rule generation loose = wildcard all operands normal = wildcard only displacement operands strict = wildcard only jmp/call addresses -r RESULT, --result RESULT Output file -v, --verbose Increase verbosity
IDA插件
mkyara附带一个ida插件,通过选择一组指令并选择mkyara->;生成yara规则选项之一,可以轻松创建yara签名。安装与安装pip包和将mkyara_plugin.py复制到您的ida plugin目录一样简单。