suricata规则编写-检测ssh爆破攻击

步骤:
1. 使用hydra攻击ssh服务器,利用tcpdump 抓包。
2. 编写suricata规则
3. 重放pcap包测试效果。
利用hydra和 tcpdump获取攻击流量包

使用KALI中自带的hydra发起ssh爆破攻击
hydra发起ssh爆破攻击
同时利用tcpdump抓包保存攻击流量
suricata规则编写-检测ssh爆破攻击_第1张图片

编写suricata规则

ssh 协议交互主要分为三个阶段,传输层协议,用户认证协议,连接协议。在传输层协议中主要完成服务端和客户端之间的ssh版本协商,密钥和算法协商,在该阶段的最后客户端会发送New Keys数据包,表示双反构建了一个加密通道。下图所示为ssh第一阶段的流量交互:
在这里插入图片描述
因此,根据New Keys数据包中总是以0x15和10个字节的0x00结尾的特点,可以标记该类数据包。
suricata规则编写-检测ssh爆破攻击_第2张图片

  • 使用flowint 关键字
    利用flowint关键字,编写如下规则,在keyCount大于5时发出预警。
    suricata规则编写-检测ssh爆破攻击_第3张图片
    利用tcpreplay重放攻击数据包
    suricata规则编写-检测ssh爆破攻击_第4张图片
    在日志系统中可以看到告警
    suricata规则编写-检测ssh爆破攻击_第5张图片
  • 使用threshold关键字
    虽然使用上述规则能够检测到ssh爆破,但是需要重放流量包很多次。因为suricata对于不同的flow有不同的flowint,即使这些flow同属于一个客户端。如果该flow断开,那么flowint也将失效。所以,在hydra使用多线程进行攻击时,与服务器建立了多个flow连接,只有当对应连接的flowint触发规则时才会预警。(关于flow可以参考这个文章

    在这里插入图片描述
    所以,当攻击方使用的线程比较多而我们flowint的阈值设置的比较大的话,可能达不到理想的效果。
  • 使用threshold关键字
    使用threshold关键字不仅可以track指定的src,而不是根据五元组,而且可以控制报警的次数,更加简洁。
    下面规则设置在30s内超过10个匹配流量将会产生一次告警。
    threshold关键字规则
    经过测试,只需要重放一次数据包,即可检测到ssh爆破。
    threshold检测ssh爆破
    end

你可能感兴趣的:(信息安全)