1

我不明白为什么以下规则没有检测到内容“unes​​cape”:

alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"unescape";sid:20001) 

虽然以下工作:

alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"<script>";sid:20001)

Snort 似乎没有检测到脚本标签内的任何内容。非常感谢。

4

1 回答 1

1

在 http 预处理器中有一个规范化 javascript 的选项。您需要确保已启用此功能,否则 unescape 之类的功能将不是您所期望的。但是,您仍然应该看到“unes​​cape”,所以我不完全确定这是您的问题。您可以在服务器配置选项中的 snort 手册中阅读有关如何配置此选项的信息。这是手册中有关此选项的片段:

"normalize_javascript 此选项启用 HTTP 响应正文中的 Javascript 规范化。您应该在配置此选项之前选择配置选项 extended_response_inspection。打开此选项时,Http Inspect 通过搜索<script>标签在 HTTP 响应正文中搜索 Javascript并开始对其进行规范化。当Http Inspect看到<script>没有类型的标签时,它被认为是javascript。javascript函数中的混淆数据,如unescape, String.fromCharCode, decodeURI, decodeURIComponent 将被规范化。在 unescape/decodeURI/decodeURIComponent 中处理的不同编码是 %XX、%uXXXX、XX 和 uXXXXi。除了这些编码之外,Http Inspect 还将检测连续的空格并将其规范化为单个空格。Http Inspect 还将规范化加号并连接字符串。规则选项 file_data 可用于从规则访问此规范化缓冲区。当 Http Inspect 中的混淆级别等于或大于 2 时,会生成 SID 9 和 GID 120 的预处理器警报。”

如果这仍然不起作用,那么您应该检查以下内容:

http 预处理器服务器配置配置中的 server_flow_depth 可能设置得太低。默认值为 300,因此如果“ <script>”出现在前 300 个字节内,而“unes​​cape”出现在 300 个字节之后,则 snort 不会检查那么远。尝试将此值设置为 65535。您应该能够通过“ </script>”的内容匹配来测试它,如果这不会生成警报,则很可能是该设置。

于 2015-02-05T00:17:02.790 回答