Javascript Java脚本的Snort规则不起作用
我不理解为什么以下规则没有检测到内容“unescape”: 而以下工作:Javascript Java脚本的Snort规则不起作用,javascript,rule,snort,Javascript,Rule,Snort,我不理解为什么以下规则没有检测到内容“unescape”: 而以下工作: alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"<script>";sid:20001) alert tcp any->any any(消息:“示例1”;流:到客户端,已建立;文件数据;内容:”;sid:20001) Snort似乎没有检测到脚本标记中的任何内容。 非
alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"<script>";sid:20001)
alert tcp any->any any(消息:“示例1”;流:到客户端,已建立;文件数据;内容:”;sid:20001)
Snort似乎没有检测到脚本标记中的任何内容。
非常感谢。在http预处理器中有一个使javascript正常化的选项。您需要确保已启用此功能,否则像unescape这样的功能将不是您所期望的。然而,您仍然应该看到“unescape”,所以我不完全确定这是您的问题。您可以在中的snort手册中了解如何配置此选项。以下是手册中有关此选项的片段: “normalize_javascript此选项启用HTTP响应主体内的javascript规范化。在配置此选项之前,您应该选择配置选项extended\u response\u inspection。启用此选项后,Http Inspect通过搜索
标记在Http响应正文中搜索Javascript,并开始对其进行规范化。当Http Inspect看到没有类型的
标记时,它被视为javascript。javascript函数(如unescape、String.fromCharCode、decodeURI、decodeURIComponent)中的模糊数据将被规范化。在unescape/decodeURI/decodeURI组件中处理的不同编码为%XX,%uxxx,
XX和
uxxxi。除了这些编码之外,Http Inspect还将检测连续的空格,并将其规范化为单个空格。Http Inspect还将规范化加号并连接字符串。规则选项file_data可用于从规则访问此规范化缓冲区。当Http Inspect中的混淆级别等于或大于2时,将生成具有SID 9和GID 120的预处理器警报。”
如果仍不起作用,则应检查以下各项:
配置中的服务器流深度可能设置得太低。默认值为300,因此如果“
”在前300个字节内,“unescape”在300个字节后,snort将不会检查那么远。请尝试将此值设置为65535。您应该能够通过让“
的内容匹配来测试这一点“,如果这不生成警报,则可能是该设置。您的问题是什么?你似乎已经有了答案。我必须检测到“unescape”而不是“,”被检测到,但“unescape”不是。为什么?(显然,unescape函数位于标记内部。Thankserver_flow_depth设置为0。检测到and以及前后的标记,例如,但标记内部的所有内容都未检测到。THXD您是否有任何方法提供此流量的示例pcap?我不明白为什么,但禁用normalize_javascript它可以工作。
alert tcp any any -> any any (msg:"example 1";flow:to_client,established;file_data;content:"<script>";sid:20001)