【问题标题】:Snort rule for Java script does not workJava 脚本的 Snort 规则不起作用
【发布时间】:2015-03-31 18:04:33
【问题描述】:

我不明白为什么下面的规则没有检测到内容“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 似乎没有检测到脚本标签内的任何内容。 非常感谢。

【问题讨论】:

  • 您的问题是什么?你似乎已经有了答案。 . .
  • 我必须检测“unes​​cape”而不是“ 标签内。谢谢

标签: javascript rule snort


【解决方案1】:

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

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

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

http preprocessor server configuration 配置中的 server_flow_depth 可能设置得太低。默认值为 300,所以如果“&lt;script&gt;”出现在前 300 个字节内,而“unes​​cape”出现在 300 个字节后,snort 不会检查那么远。尝试将此值设置为 65535。您应该能够通过“&lt;/script&gt;”的内容匹配来测试它,如果这不会生成警报,则可能是该设置。

【讨论】:

  • server_flow_depth 设置为 0。 都被检测到,并且还检测到之前和之后的标签,例如 ,但
  • 您有什么方法可以提供此流量的示例 pcap 吗?
  • 我不明白为什么,但是禁用 normalize_javascript 它可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多