| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 网络数据检测规则 -> 正文阅读 |
|
[网络协议]网络数据检测规则 |
?目录
规则头alert tcp $HOME_NET any -> $EXTERNAL_NET 1024: ? 规则行为,根据优先级排列:????????pass 如果匹配到规则后,suricata会停止扫描数据包,并跳到所有规则的末尾 ????????drop ips模式使用,如果匹配到之后则立即阻断数据包不会发送任何信息 ????????reject 对数据包主动拒绝,接受者与发送中都会收到一个拒绝包 ????????alert 记录所有匹配的规则并记录与匹配规则相关的数据包 协议:????????在规则中指定匹配那些协议,suricata支持的协议要比snort多一些 ????????TCP、UDP、ICMP、IP(同时用与TCP与UDP)、http、ftp、smb、dns 源ip,目标ip:????????支持单个ip,cidr,ip组,[96.30.87.36,96.32.45.57],所有主机any,以及规则文件中配置?的?ip变量$HOME_NET(受保护的ip段)与$EXTERNAL_NET(其他所有ip): 源端口/目标端口:????????支持设置单个端口80,端口组[80,8080],端口范围[1024:65535]以及any任意端口,还可以在配置文件中添加端口组,通过!号来进行排除 流量方向:????????-> 单向流量,从源ip到目标ip的单项流量 ????????<> 双向流量,2个ip往返之间的流量 规则体(msg:"ET MALWARE Win32/HunterStealer/AlfonsoStealer CnC Exfil"; flow:established,to_server; content:"|50 4b 03 04 14 00|"; depth:6; content:"Desktop.png"; distance:0; fast_pattern; reference:md5,20f025a45247cc0289e666057149c28e; reference:md5,7f053ba33d6e4bf07a15ee65dd2b0d92; classtype:command-and-control; sid:2031198; rev:1; metadata:affected_product Windows_XP_Vista_7_8_10_Server_32_64_Bit, attack_target Client_Endpoint, created_at 2020_11_11, deployment Perimeter, former_category MALWARE, malware_family HunterStealer, signature_severity Major, updated_at 2020_11_11;) msg:????????规则名称,规则中的第一个字段,ids告警上显示的信息 ????????ET MALWARE Win32/HunterStealer/AlfonsoStealer CnC Exfil?? flow流匹配:?????????flow是特定时间内具有相同数据的数据包(5元组信息)同属于一个流,suricata会将这些流量保存在内存中。 ????????to_client/from_server?? ?服务器到客户端 ????????to_server/from_client??? ?客户端到服务器 ????????established?????? 匹配已经建立连接的(tcp则是经过3次握手之后,udp则是有双向流量) ????????no_established???? 匹配不属于建立连接的 ????????only_stream?? ?匹配由流引擎重新组装的数据包 ????????no_stream?? ?不匹配流引擎重新组装的数据包 flowbits :????????flowbits set , name??? ?设置条件 ????????flowbits isset, name?? ?选择条件 ????????一旦设置flowbits之后,第一条规则没有命中那么第二条规则即使命中了也不会显示出来,例如一些攻击行为的响应信息,现在请求中设置条件,然后在响应中选择条件 ???????? sameip源ip、目标ip检测:????????会将流量中源ip和目标ip相同的显示出来。 ????????alert ?ip any any -> any any (msg:"GPL SCAN same SRC/DST"; sameip; ?????????reference:bugtraq,2666; reference:cve,1999-0016; ?????????reference:url,www.cert.org/advisories/CA-1997-28.html; classtype:bad-unknown; ?????????sid:2100527; rev:9; metadata:created_at 2010_09_23, updated_at 2010_09_23;) content内容匹配:????????检测数据包中是否存在此内容,例如检测流量中是否存在Desktop.png ????????如果有多个匹配项可以使用 content:"evilliveshere";? ?content:"here"; 这种写法,注意如果没有用内容修饰的话,ids不会按照先后顺序去匹配的,只会在内容中匹配是否包含这2个值,必须用内容修饰来调整先后顺序,用distance 0 来让第二个匹配项在第一个匹配项匹配位置之后匹配,并且如果有多个content他们的关系是and关系必须都匹配到才告警 。 ????????使用感叹号!对匹配项的否定:content:!"evilliveshere"; ????????将字符串的十六进制用管道符(|)进行包围:content:"|FF D8|"; 字符串与十六进制混合使用:content:"|FF |SMB|25 05 00 00 80|"; ? ????????匹配内容区分大小写,保留字符(; \ "|)须进行转义或十六进制转码 ????????内容修饰,能够更加精准匹配 不区分大小写 nocase:????????content:"root";nocase;??? #修饰符直接在;号后面添加 偏移位置 offset:????????content:"xss";offset 100;?? ?#代表了从数据包开始位置0往后偏移100位字节后进行匹配 结束位置 depth:????????content:"xss";offset 100;depth 200; #代表了匹配数据包结束的位置,如果没有offset则是从开始位置计算,有offset则是从offset开始,此次则是从100字节开始匹配到200字节内的内容。 在xx范围外 distance :????????本次匹配必须在上一次匹配结束位置到distance设置的偏移位置区间之外,例如content:"msg1";content:"msg2";distance:25; 如果msg1在第100行找到,那么就会在100+25后匹配msg2 ? 在xx范围内 within:????????本次匹配必须在上一次匹配结束位置之内,如果上次结束是100,within 15;那么第二次匹配必须在100到115之内开始匹配 ????????如果within与distance同时出现 content:"evilliveshere";? content:"here"; ?distance:1;within:7; 则匹配here在? evilliveshere位置结束1-7内匹配 有效载荷大小 dsize:????????dsize: >64?? 用来匹配payload大小,可以用来检测异常包大小 pcre正则 ?pcre:????????content:"xss"; pcre:"xss\w"? ?先匹配content内容后才进行匹配pcre正则,这样的话减少系统开销 http修饰符:????????更多详细内容查看:http://suricata.readthedocs.io/en/suricata4.0.4/rules/http-keywords.html alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"ET EXPLOIT Mi Router 3 Remote Code Execution CVE-2018-13023"; flow:to_server,established; http.method; content:"GET"; http.uri; content:"/cgi-bin/luci/|3b|stok="; fast_pattern; content:"&sns=sns&grant=1&guest_user_id=guid&timeout="; distance:0; reference:url,blog.securityevaluators.com/show-mi-the-vulns-exploiting-command-injection-in-mi-router-3-55c6bcb48f09; reference:cve,2018-13023; classtype:attempted-admin; sid:2030311; rev:2; metadata:affected_product Linux, attack_target IoT, created_at 2020_06_11, deployment Perimeter, former_category EXPLOIT, signature_severity Minor, updated_at 2020_06_11;) ????????http.method???????? 客户端使用的HTTP方法(GET,POST等) ????????http.uri?????????????? ? HTTP客户端请求的URI内容 ????????http.header????????? HTTP请求或响应头的任何内容 ????????http.request_body? http 客户端请求的主体内容 ????????http.request_line ????????http.header_names? http 头字符串("Referer", "User-Agent"等) ????????http.user_agent ????????http.referer ????????http.content_type ????????http.host ????????http.protocol? http版本("HTTP/1.0") ????????http.content_len ????????http.stat_code 服务器响应的HTTP状态字段内容 ? fast_pattern快速匹配模式:?????????如果suricata规则中有多个匹配项目,快速匹配的目的是设置优先级最高的匹配项,如果设置了快速匹配模式没有命中则跳过这条规则 threshold阀值:????????threshold: ?type <threshold|limit|both>, track <by_src | by_dst>, count <N>, seconds <T> ????????threshold 最小阀值? 也就是说只有匹配到至少多少次数才进行告警 ????????limit 限制告警次数,例如最少5分钟内告警一次 ????????调节阀值主要是通过2种方法,一种是通过规则内的threshold关键字来调节,下图中类型是limit也就是限制告警次数,track ?by_src代表来源ip,seconds 60 每个60秒告警一次count 1 ????????另外一种则是通过配置文件/etc/threshold.config来进行控制,更加推荐这种方法,写在规则内部每次更新后都会替换掉。 ????????event_filter gen_id 1(组id), sig_id ?1101111(规则id), type limit ,track by_src, count 1 , ?seconds 60 ????????suppress 则是告警排除,排除指定ip产生的规则告警,下图则表示如果来自217.110.97.128/25如果命中图中的规则后则不会产生告警,主要用于排除一些扫描ip ? reference引用:????????连接外部信息来源,补充描述,reference:url,sf-freedom.blogspot.com/2006/07/heap-spraying-internet-exploiter.html priority优先级:????????手动设置规则优先级别,范围1-255,1最高,一般都是1-4,suricata会首先检查优先级较高的规则 classtype类别:????????根据规则检测到的活动类型为规则分类, ?classtype:attempted-user sid特征标示符:????????用于唯一性规则标识,sid不能重复,0-10000000 VRT保留,20000000-29999999 Emerging保留,30000000+:公用 gid组:????????[1:2000000] 告警前面的1代表组id rev修订:????????规则版本号,每次修改规则rev则递增1 metadata元数据:????????suricata会忽略元数据背后的语句,用于添加备注 自定义一个规则alert? tcp any any -> any any (msg: "Http rule test!";? flow:to_server,established; http.host; content:" y.gtimg.cn"; sid:3030303; rev:1;) ? ? ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 10:55:15- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |