6.9. 变换¶
转换关键字将粘性缓冲区中的数据转换为其他内容。有些转换支持更好地控制转换过程的选项
例子::
alert http any any -> any any (file_data; strip_whitespace; \
content:"window.navigate("; sid:1;)
此示例将匹配流量,即使在 navigate
和 (
.
可以链接变换。它们按照它们在规则中出现的顺序进行处理。每个变换的输出充当下一个变换的输入。
例子::
alert http any any -> any any (http_request_line; compress_whitespace; to_sha256; \
content:"|54A9 7A8A B09C 1B81 3725 2214 51D3 F997 F015 9DD7 049E E5AD CED3 945A FC79 7401|"; sid:1;)
注解
并非所有的粘性缓冲区都支持转换
6.9.1. 点前缀¶
获取缓冲区,并在 .
字符有助于简化域检查。例如,输入字符串 hello.google.com
会被修改成 .hello.google.com
. 此外,添加点允许 google.com
对抗 content:".google.com"
例子::
alert dns any any -> any any (dns.query; dotprefix; \
content:".microsoft.com"; sid:1;)
此示例将匹配 windows.update.microsoft.com
和 maps.microsoft.com.au
但不是 windows.update.fakemicrosoft.com
.
此规则只能用于域上的匹配;示例:
alert dns any any -> any any (dns.query; dotprefix; \
content:".microsoft.com"; endswith; sid:1;)
此示例将匹配 windows.update.microsoft.com
但不是 windows.update.microsoft.com.au
.
最后,此规则只能用于TLD上的匹配;示例:
alert dns any any -> any any (dns.query; dotprefix; \
content:".co.uk"; endswith; sid:1;)
此示例将匹配 maps.google.co.uk
但不是 maps.google.co.nl
.
6.9.2. strip_whitespace¶
删除所有空格 isspace()
呼叫C。
例子::
alert http any any -> any any (file_data; strip_whitespace; \
content:"window.navigate("; sid:1;)
6.9.3. compress_whitespace¶
将所有连续的空白压缩为一个空格。
6.9.4. to_md5¶
获取缓冲区,计算MD5哈希并传递原始哈希值。
例子::
alert http any any -> any any (http_request_line; to_md5; \
content:"|54 A9 7A 8A B0 9C 1B 81 37 25 22 14 51 D3 F9 97|"; sid:1;)
6.9.5. to_sha1¶
获取缓冲区,计算sha-1哈希并传递原始哈希值。
例子::
alert http any any -> any any (http_request_line; to_sha1; \
content:"|54A9 7A8A B09C 1B81 3725 2214 51D3 F997 F015 9DD7|"; sid:1;)
6.9.6. to_sha256¶
获取缓冲区,计算SHA-256哈希并传递原始哈希值。
例子::
alert http any any -> any any (http_request_line; to_sha256; \
content:"|54A9 7A8A B09C 1B81 3725 2214 51D3 F997 F015 9DD7 049E E5AD CED3 945A FC79 7401|"; sid:1;)
6.9.7. pcrexform公司¶
获取缓冲区,应用所需的正则表达式,并输出 第一个捕获的表达式 .
注解
此转换需要包含正则表达式的必需选项字符串。
此示例警告如果 http.request_line
包含 /dropper.php
例子::
alert http any any -> any any (msg:"HTTP with pcrexform"; http.request_line; \
pcrexform:"[a-zA-Z]+\s+(.*)\s+HTTP"; content:"/dropper.php"; sid:1;)
6.9.8. url_decode¶
解码url编码的数据,即将“+”替换为空格,将“%HH”替换为其值。这不会解码unicode“%uzzzzz”编码