suricata規則編寫-檢測ssh爆破攻擊

步驟:
1. 使用hydra攻擊ssh服務器,利用tcpdump 抓包。
2. 編寫suricata規則
3. 重放pcap包測試效果。
利用hydra和 tcpdump獲取攻擊流量包

使用KALI中自帶的hydra發起ssh爆破攻擊
hydra發起ssh爆破攻擊
同時利用tcpdump抓包保存攻擊流量
tcpdump抓包

編寫suricata規則

ssh 協議交互主要分爲三個階段,傳輸層協議,用戶認證協議,連接協議。在傳輸層協議中主要完成服務端和客戶端之間的ssh版本協商,密鑰和算法協商,在該階段的最後客戶端會發送New Keys數據包,表示雙反構建了一個加密通道。下圖所示爲ssh第一階段的流量交互:
在這裏插入圖片描述
因此,根據New Keys數據包中總是以0x15和10個字節的0x00結尾的特點,可以標記該類數據包。
New Keys數據包

  • 使用flowint 關鍵字
    利用flowint關鍵字,編寫如下規則,在keyCount大於5時發出預警。
    在這裏插入圖片描述
    利用tcpreplay重放攻擊數據包
    在這裏插入圖片描述
    在日誌系統中可以看到告警
    ssh-brute-forcing-detect
  • 使用threshold關鍵字
    雖然使用上述規則能夠檢測到ssh爆破,但是需要重放流量包很多次。因爲suricata對於不同的flow有不同的flowint,即使這些flow同屬於一個客戶端。如果該flow斷開,那麼flowint也將失效。所以,在hydra使用多線程進行攻擊時,與服務器建立了多個flow連接,只有當對應連接的flowint觸發規則時纔會預警。(關於flow可以參考這個文章

    在這裏插入圖片描述
    所以,當攻擊方使用的線程比較多而我們flowint的閾值設置的比較大的話,可能達不到理想的效果。
  • 使用threshold關鍵字
    使用threshold關鍵字不僅可以track指定的src,而不是根據五元組,而且可以控制報警的次數,更加簡潔。
    下面規則設置在30s內超過10個匹配流量將會產生一次告警。
    threshold關鍵字規則
    經過測試,只需要重放一次數據包,即可檢測到ssh爆破。
    threshold檢測ssh爆破
    end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章