Suricata規則介紹、以及使用suricata-update做規則管理
0x00 寫在前面
最近在整理Suricata規則,在網上看到@creepycool師傅對suricata的默認ET規則做了整理,介紹了每條規則的目的與用途。參考他的內容,做了些完善。後文詳細介紹下使用suricata-update工具對Suricata的規則進行管理。
0x01 Suricata規則簡介
網上能找到的Suricata規則很多,列舉幾個
- https://github.com/jasonish/suricata-trafficid/blob/master/rules/traffic-id.rules
- https://sslbl.abuse.ch/blacklist/sslblacklist.rule
- https://github.com/ptresearch/AttackDetection
- https://rules.emergingthreats.net/open/suricata/rules/
第一個是Suricata作者寫的一個規則生成的腳本,生成用於應用和服務識別的規則。沒用過,後面研究一下。
第二個是瑞士的非盈利組織abuse.ch維護的項目。他們維護的這個黑名單是標識惡意軟體與殭屍網路相關的。他們提供了一個Suricata的規則,可以根據黑名單檢測網路中的惡意連接。
第三個PT的Suricata規則庫,根據惡意軟體、黑客的網路通訊協議以及漏洞的poc去編寫,感覺挺不錯的,最主要的是,規則庫更新的很快。
第四個我們就比較熟悉了,是Emerging Threats維護的規則,我們一般常用的就是這個規則庫。很強大的規則庫,規則數量有20000+。
在後面規則管理的內容中,使用Suricata-Update規則管理工具,可以看到可用的規則源,該工具中有七個規則源,如下圖所示:
重點研究下ET的規則。
0x02 ET規則集
研究下ET規則的每條規則的作用,官方的規則解釋的鏈接為:
http://doc.emergingthreats.net/bin/view/Main/EmergingFAQ#What_is_the_general_intent_of_ea
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:https://github.com/StamusNetworks/scirius
- Suricata-Update:https://github.com/jasonish/suricata-update
- Oinkmaster:https://www.jianshu.com/p/1a96770695db
- Pulledpork:https://github.com/shirkdog/pulledpork
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
推薦閱讀: