02-Suricata
一 ICMP流量预警
一条ICMP报文有四个重要内容,可与相应的ICMP关键字相匹配。它们是:消息的类型、代码、ID和序列。
通过ICMP的type进行匹配
alert icmp any any <> any any (msg:"icmp流量预警";itype:8;threshold:type threshold,track by_src, count 5, seconds 30;sid:10021;)
二 TCP流量预警
1 全连接预警
alert tcp any any <> any any (msg:"TCP全连接流量预警";flow:to_server,established;threshold:type threshold,track by_src, count 5, seconds 30;sid:10022;)
利用wrk进行全连接攻击
wrk -c 300 -t 5 -d 600 http://192.168.209.131/dashboard/
-c 并发数
-t 线程数
-d 持续的时间
2 半连接预警
alert tcp any any <> any any (msg:"TCP半连接流量预警";flow:to_server,not_established;flags:S;threshold:type threshold,track by_dst, count 20, seconds 10;sid:10023;)
flags:S
是一个规则选项,用于指定匹配TCP报文中SYN标志位为1的数据包TCP协议在建立连接时需要进行三次握手,其中第一次握手就是客户端向服务器发送一个SYN报文,请求建立连接。此时,SYN标志位被设置为1。因此,
flags:S
选项允许Suricata规则专门匹配这种TCP连接建立初期的数据包。track <by_src|by_dst|by_rule|by_both>by_src 源ip一样by_dst 目的ip一样tcp半连接攻击,源ip随机
hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.209.131
三 MySql流量预警
Sruicata没有提供对MySql应用层协议的支持,所以我们使用TCP协议
1 MySql爆破预警
预警mysql登录失败
alert tcp any any <> any any (msg:"MySql登录失败预警";content:"Access denied for user";sid:10024;)
预警mysql登录爆破-方式1
alert tcp any any <> any any (msg:"MySql登录爆破预警";content:"Access denied for user";threshold:type threshold,track by_src, count 5, seconds 30;sid:10025;)
预警mysql登录爆破-方式2
alert tcp any any <> any any (msg:"MySql登录失败预警";content:"|41 63 63 65 73 73 20 64 65 6e 69 65 64 20 66 6f 72 20 75 73 65 72|";sid:10026;)
使用流量载荷中ASCII对应的十六进制数据进行匹配
2 MySql木马文件写入预警
#查看mysql写入文件的权限 show variables like "secure_file_priv";空:在任意路径写入文件路径:在固定的路径写入NULL:不能写入文件 #写入木马文件 select "<?php eval($_POST[0]);?>" into outfile "/opt/lampp/htdocs/mm22.php" #预警规则 alert tcp any any <> any any (msg:"MySql写入木马文件预警";content:"into outfile";pcre:"/eval/i";sid:10027;)
四 SSH爆破预警
1、特征分析
SSH 协议交互主要分为三个阶段,传输层协议,用户认证协议,连接协议。在传输层协议中主要完成服务端和客户端之间的ssh版本协商,密钥和算法协商,在该阶段的最后客户端会发送New Keys数据包,表示双反构建了一个加密通道,从而开始用户认证。最后就是如果认证登录成功后,持续不断地进行数据通信,这个过程不再具备用户认证的数据和交换密钥的过程。
根据New Keys数据包中总是0x15和10个字节的0x00结尾的特点,可以标记该类数据包,与之类似的,Key Exchange Init过程也存在以较多的 00 00 00 00 等特征可以使用。当完成认证后,后续的通信全是常规加密流量,并且也不再存在Key Exchange或者New Keys流量。所以,针对SSH爆破的情况,必须存在较多的Key Exchange和New Keys流量。
alert ssh any any <> any any (msg:"ssh登录预警";content:"|15 00 00 00 00 00 00 00 00 00 00|";sid:10028;)alert ssh any any <> any any (msg:"ssh登录爆破预警";content:"|15 00 00 00 00 00 00 00 00 00 00|";threshold:type threshold,track by_src, count 5, seconds 30;sid:10029;)