Javascript的Snort规则不起作用

时间:2015-02-01 19:24:29

标签: javascript rule snort

我不明白为什么以下规则没有检测到内容" unescape":

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没有检测到脚本标记内的任何内容。 非常感谢你。

1 个答案:

答案 0 :(得分:1)

有一个选项可以在http预处理器中对javascript进行正规化。您需要确保已启用此功能,否则unescape等功能将无法满足您的期望。但是,你仍然应该看到&#34; unescape&#34;,所以我不完全确定这是你的问题。您可以在server configuration options的snort手册中了解如何配置此选项。以下是手册中有关此选项的摘录:

&#34; 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的预处理器警报。&#34;

如果仍然无法正常工作,那么您应该查看以下内容:

http preprocessor server configuration配置中的server_flow_depth可能设置得太低。默认值为300,因此如果&#34; <script>&#34;在前300字节内和#34; unescape&#34;在300字节之后,snort不会检查那么远。尝试将此值设置为65535.您应该可以通过内容匹配&#34; </script>&#34;来测试此值,如果这不会生成警报,则可能那个设置。