Suricata規則介紹、以及使用suricata-update做規則管理

0x00 寫在前面

最近在整理Suricata規則,在網上看到@creepycool師傅對suricata的默認ET規則做了整理,介紹了每條規則的目的與用途。參考他的內容,做了些完善。後文詳細介紹下使用suricata-update工具對Suricata的規則進行管理。

0x01 Suricata規則簡介

網上能找到的Suricata規則很多,列舉幾個

  • github.com/jasonish/sur
  • sslbl.abuse.ch/blacklis
  • github.com/ptresearch/A
  • rules.emergingthreats.net

第一個是Suricata作者寫的一個規則生成的腳本,生成用於應用和服務識別的規則。沒用過,後面研究一下。

第二個是瑞士的非盈利組織abuse.ch維護的項目。他們維護的這個黑名單是標識惡意軟體與殭屍網路相關的。他們提供了一個Suricata的規則,可以根據黑名單檢測網路中的惡意連接。

第三個PT的Suricata規則庫,根據惡意軟體、黑客的網路通訊協議以及漏洞的poc去編寫,感覺挺不錯的,最主要的是,規則庫更新的很快。

第四個我們就比較熟悉了,是Emerging Threats維護的規則,我們一般常用的就是這個規則庫。很強大的規則庫,規則數量有20000+。

在後面規則管理的內容中,使用Suricata-Update規則管理工具,可以看到可用的規則源,該工具中有七個規則源,如下圖所示:

重點研究下ET的規則。

0x02 ET規則集

研究下ET規則的每條規則的作用,官方的規則解釋的鏈接為:

doc.emergingthreats.net

app-layer-events.rules

針對應用協議的規則

botcc.portgrouped.rules botcc.rules

這些是已知和確認的活動殭屍網路和其C&C(command and control)伺服器。由一些組織生成。每天更新。

ciarmy.rules

封鎖被ciArmy.com標記出來的Top Attackers(ciArmy.com是個威脅資料庫,對全球的任意ip地址提供準確的及時的評分)。定期更新。

compromised.rules

這是一個已知的受影響的主機列表。每天更新。

decoder-events.rules

解碼器事件,裡面包含了對解碼器解碼所產生的事件,比如包無效、包過大、過小等

dnp3-events.rules

包含對dnp3(分散式網路協議)的一些規則,不多,只有幾條

dns-events.rules

包含對dns協議的一些規則,比如dnsflooded事件等,不多,只有幾條

drop.rules

每天更新的Spamhaus DROP(Dont Route or Peer)列表,列出了著名的、專業的垃圾郵件發送者。每天更新。

dshield.rules

每天更新的DShield top attackers。十分可靠。

emerging-activex.rules

主要用來檢測與ActiveX控制項有關的攻擊

emerging-attack_response.rules

這些規則是為了捕獲成功攻擊的結果,諸如「id=root」之類的東西,或者表示可能發生妥協的錯誤消息(即雖然產生了錯誤消息,但是攻擊已經成功)。注意:木馬和病毒感染後的活動一般在VIRUS規則集里,不是在這個規則集里。

emerging-chat.rules

主要檢測聊天軟體、即時通訊軟體的攻擊,大部分是國外的一些軟體,比如facebook,雅虎,msn

emerging-current_events.rules

這些規則是不打算在規則集中長期保存的,或者是考慮納入之前需要進行測試的規則。大多數情況下,這些都是針對當天的大量二進位URL的簡單sigs,用來捕獲CLSID新發現的易受攻擊的應用程序,我們沒有這些漏洞的任何細節。這些sigs很有用,卻不是長期有效的。

emerging-deleted.rules

裡面都是被注釋掉的規則,可能刪除後的規則放在這裡

emerging-dns.rules

檢測dns協議相關的攻擊

emerging-dos.rules

目的是捕獲入站的DOS(拒絕服務)活動和出站指示。

emerging-exploit.rules

用來檢測exp的規則。一般來說,如果你正在找windows的exp,在這個規則里可以找到。就像sql注入一樣,exploits有著自己的體系。

總之就是用來檢測exploits漏洞的。

emerging-ftp.rules

檢測ftp協議相關的攻擊

emerging-games.rules

魔獸世界、星際爭霸和其他流行的在線遊戲都在這裡。我們不打算把這些東西貼上邪惡的標籤,只是它們不適合所有的攻擊環境,所以將它們放在了這裡。

emerging-icmp_info.rules emerging-icmp.rules

檢測與icmp協議相關的攻擊

emerging-imap.rules

檢測與imap相關的攻擊

emerging-inappropriate.rules

色情、兒童色情,你不應該在工作中訪問的網站等等。WARNING:這些都大量使用了正則表達式,因此存在高負荷和頻繁的誤報問題。只有當你真正對這些規則感興趣時才去運行這些規則。

emerging-info.rules

看了一些規則後,似乎是檢測與信息泄露、信息盜取等事件的規則,裡面會檢測後門、特洛伊木馬等與info相關的攻擊

emerging-malware.rules

這一套最初只是間諜軟體,這就足夠了。間諜軟體和惡意軟體之間的界限已經很模糊了。這裡不僅僅是間諜軟體,但是請放心,這裡沒有任何東西是你想在自己的網路或者PC上運行的。已知的更新模式、已知的惡意軟體的UserAgent字元串和大量的其它有用的東西。如果你只準備運行一個規則集來保證安全性,這個規則集是首選。

emerging-misc.rules

檢測混雜的攻擊,這種攻擊一般沒有確切的分類,或者使用了多種技術

emerging-mobile_malware.rules

檢測移動設備上的惡意軟體

emerging-netbios.rules

檢測與netbios協議有關的攻擊

emerging-p2p.rules

P2P(Peer to Peer)之類的。我們並不想將它定義為有害的,只是不適合出現在IPS/IDS的網路環境中。

emerging-policy.rules

對於經常被公司或組織政策禁止的事務的規則。Myspace、Ebay之類的東西。

emerging-pop3.rules

檢測與pop3協議有關的攻擊

emerging-rpc.rules

檢測與rpc(遠程過程調用協議)有關的攻擊

emerging-scada.rules

檢測與SCADA(數據採集與監控系統)相關的攻擊

emerging-scan.rules

檢測探測行為。Nessus,Nikto,埠掃描等這樣的活動。這是攻擊前準備時期的警告。

emerging-shellcode.rules

檢測shellcode,shellcode是一段用於利用軟體漏洞而執行的代碼,以其經常讓攻擊者獲得shell而得名。

emerging-smtp.rules

檢測與smtp協議相關的攻擊

emerging-snmp.rules

測與snmp協議相關的攻擊

emerging-sql.rules

這是一個巨大的規則集,用於捕獲在特殊應用程序上的特殊攻擊。這裡面有一些普遍的SQL注入攻擊規則,效果很好,可以捕獲大多數攻擊。

但是這些規則根據不同的app和不同的web伺服器,有很大的差別。如果你需要運行非常嚴格的web服務或者很重視信息的安全性,請使用這個規則集。

emerging-telnet.rules

檢測與telnet協議相關的攻擊,例如暴力破解等

emerging-tftp.rules

檢測與tftp協議相關的攻擊

emerging-trojan.rules

檢測trojan木馬

emerging-user_agents.rules

檢測異常的user-agents

emerging-voip.rules

檢測voip相關的異常,它是一個新興的規則集,目前還很小,但是我們預計它很快就會增長。

emerging-web_client.rules

檢測web客戶端的攻擊

emerging-web_server.rules

檢測web服務端的攻擊

emerging-web_specific_apps.rules

檢測相關應用組件的漏洞(CVE)

emerging-worm.rules

檢測蠕蟲

http-events.rules

http事件規則

modbus-events.rules

檢測modbus事件

rbn-malvertisers.rules rbn.rules

Rbn的規則,該規則已經過時了,可忽略。

smtp-events.rules

檢測smtp事件

stream-events.rules

檢測stream事件

tls-events.rules

檢測tls事件

tor.rules

檢測使用tor進行匿名通信的流量,tor本身沒有威脅,但卻是很可疑的行為

0x03 規則管理

規則管理,就是便於對suricata的規則進行統一的管理,比如更新、啟用、停用等。相關的規則管理工具有很多,簡單列舉幾個:

  • Scirius:github.com/StamusNetwor
  • Suricata-Update:github.com/jasonish/sur
  • Oinkmaster:jianshu.com/p/1a9677069
  • Pulledpork:github.com/shirkdog/pul

Scirius是個管理Suricata規則集的Web應用。搭建和使用也不難,參見github。

我使用的是Suricata-Update做Suricata的規則管理:

規則更新

  • 安裝

pip install --pre --upgrade suricata-update

  • 更新Suricata規則庫

suricata-update

發現其他可用的規則庫

  • 更新規則源

suricata-update update-sources

  • 列出更新源列表

suricata-update list-sources

  • 啟用ptresearch/attackdetection的規則集

suricata-update enable-source ptresearch/attackdetection

  • 再次更新我們的規則集

suricata-update

  • 列出我們使用的規則源

suricata-update list-enabled-sources

  • 關閉某個規則源

suricata-update disable-source et/pro

  • 刪除某個規則源

suricata-update remove-source et/pro

0x04 總結

先簡單了解了下Suricata默認ET規則每個規則的作用,後續再根據公司自身的情況,對規則做梳理、剔除和編寫。

使用suricata-update管理規則很方便。我目前使用的規則源如下:

最近的一次更新結果如下,規則總數為23519條:

0x05 參考鏈接

creepycool師傅:Suricata默認規則集的目的與用途

suricata-update的官方文檔:suricata-update - A Suricata Rule Update Tool


推薦閱讀:

德國是如何一步步建立國內網路監控立法的
解讀 ip 命令展示的網路連接信息

TAG:網路安全 | IDS入侵檢測系統 | 網路監控 |