我正在尝试编写YARA规则来匹配简单的IP地址(例如:127.0.0.1或192.168.1.1(。我知道我可以使用基于这个开源Github示例的正则表达式来实现这一点。
然而,YARA性能指南建议我们尽可能避免使用正则表达式,而是使用十六进制跳跃/通配符匹配,如本Github Readme中所述。我在很多例子中都使用了它,所以我一直在考虑性能。
我想知道,YARA需要以十六进制格式获取IP吗?或者我可以直接以普通IP格式(x.x.x.x
(匹配它吗?
我在尝试类似的东西:
rule url_localhost
{
strings:
$hex_test = { [1-3] 2E [1-3] 2E [1-3] 2E [1-3] ?? ?? }
condition:
any of them
}
我的逻辑是从3个数字开始,然后是一个点(ASCII中的2E(,并重复相同的内容,最后在IP地址中的潜在"路径"(例如:127.0.0.1/p
(中使用通配符
它似乎并不直接起作用。这种用例可能吗,或者Regex是解决这个问题的唯一方法吗?
我不知道为什么,但似乎不能用跳转([](开始或结束十六进制字符串。
我用了这个:
rule url_localhost{
strings:
$hex_test = { ?? [0-2] 2E [1-3] 2E [1-3] 2E }
condition:
$hex_test
}
然而,我仍然收到一个警告,该规则正在减慢扫描速度。我还没有对这种方法与regex进行任何测试,但我认为他们在幕后做的基本相同。