【安全告警分析之道:四】掃描識別(上)
引言
掃描行為往往會觸發大量安全告警,這些告警會干擾運營人員對“高危告警”的查找,這使得掃描識別成為安全運營的一大需求。而掃描行為看似簡單,但是在告警數據中卻體現出復雜的攻擊模式,檢測起來并不容易。《掃描識別》分為上、下兩篇文章,上篇主要介紹掃描行為,包括類型、特征、檢測所需考慮的因素、可能的干擾行為等,下篇依據掃描行為的特點,介紹基于安全告警數據的掃描檢測方法。
一、為什么要進行掃描識別
在系列文章《數據透視篇》中我們提到,安全設備每天產生的告警數據在千萬量級,雖然經過一定的過濾操作,可以過濾約90%的誤報(詳見《數據透視篇》),剩余告警仍然在百萬量級,仍然達不到“可運營”的需求。剩余告警中,包含大量的攻擊行為,而由掃描行為觸發的告警數量往往占絕大多數,因此對于掃描觸發的告警進行有效識別、聚類可顯著提升運營效率,減少“待研判”告警數量。
掃描識別不僅可以大幅減少“待研判”告警數量,更近一步,可以滿足運營人員對于“攻擊分類”需求,在互聯網中,充斥著各種各樣的攻擊嘗試,而只有少量的可能對系統造成影響的攻擊才會引起運營人員的重視、采取應急措施,在這種背景下,就需要對攻擊行為進行一定的分類,輔助運營人員對攻擊的嚴重程度做出判斷。
二、掃描面面觀
本小節從類型和拓撲兩方面對對掃描行為做較為全面的介紹,并且分析影響掃描檢測精度的干擾行為。
2.1 按類型分類
掃描分為主機掃描和網絡掃描,主機掃描是在主機上掃描一些本地信息,不產生網絡流量,暫時忽略;網絡掃描是基于網絡的遠程服務發現和系統脆弱點檢測的技術,大致可分為:
- 端口掃描。目標是獲取目的主機的端口開放情況(TCP、UDP),探測TCP端口開放技術包括:全連接掃描(TCP connect)、半連接掃描、FIN掃描、ACK掃描、NULL掃描、XMAS掃描、TCP窗口掃描(其中全連接掃描(TCP connect)、半連接掃描 為可靠的掃描方式,其他的不可靠);UDP掃描直接發送UDP包到對應端口即可;
- 服務掃描。掃描完開放端口后,一般還會進行服務掃描,檢測端口上運行的服務類型和版本,基本原理是針對不同服務使用的協議類型,發送響應的應用層協議探測報文,檢測返回報文,從而判斷目標服務類型和版本,一般的,掃描器會構建特征庫進行匹配。
- 操作系統掃描。由于各種各樣的原因,如:對RFC理解不同,沒有嚴格執行規范,些實現了一些可選特性,對TCP/IP協議做了改進等,不同操作系統對于TCP/IP協議的實現細節各不相同,以IPID的變化為例,Linux是隨機變化的,早期window是遞增的,某些打印設備或交換設備是固定不變的,不僅是IPID,FIN、TCP窗口、DF標志等等字段都可以作為判斷依據,這些字段的組合也會被用于構建特征庫集成到掃描工具當中;
- 弱口令掃描。在該過程中,攻擊者使用字典中的字符串探測需要進行遠程用戶認證的網絡服務(如SSH,TRLNET,FTP,SMB等)的用戶名和密碼。
- 漏洞掃描。指針對特定應用和服務查找目標網絡中存在的漏洞,常見的漏洞掃描器包括nessus、OpenVAS等。
- Web漏洞掃描。Web服務是互聯網中最重要、最復雜的服務,在安全領域廣受重視,幾乎所有的漏掃工具都會有專門的Web掃描模塊。Web漏掃的目標是掃描web漏洞(可參考OWASP的安全漏洞列表),不過目前來講很多漏洞的自動化發現還存在瓶頸(如:文件上傳漏洞、CSRF等等),大多數Web漏掃一般只掃描已經披露的漏洞,或者掃描sql注入、XSS等比較容易發現的漏洞類型。
一般來講,上述掃描行為都在在安全設備中留下大量的告警信息,將這些掃描行為找出、甚至細化到各種不同的子類別中,將提升安全運營的效率。
2.2 按拓撲分類
按照掃描源和被掃描對象的物理拓撲,掃描行為可以分為[1]:
- 一對一掃描。這種行為比較常見,典型案例就是滲透測試人員對目標系統進行信息收集,表現為同一IP對(sip,dip)在短時間內觸發大量告警。并且根據掃描類型的不同,觸發告警也有很大差異,如弱口令掃描,觸發的告警類型單一,但是告警載荷中username和password字段會快速變化;而漏洞掃描,觸發的告警類型眾多,肉眼即可分辨。由于這種掃描會比較深入,有時候也稱之為“縱向掃描”
- 一對多掃描。由于掃描資源、掃描時間是有限的,有些時候會對某些IP(如同一網段)做批量掃描,如:滲透人員對內網機器測試某個漏洞是否存在。這種行為表現為同一源IP對多個目的IP觸發同一種或同幾種類型的告警。這種掃描對每個機器發送的數據包都不是很多,有時候也稱之為“橫向掃描”或者“專項掃描”
- 多對一掃描。這種掃描也被稱之為“分布式掃描”,是攻擊者隱蔽掃描行為的一種手段。表現為大量的主機以相同的策略掃描一個網絡或者主機。
2.3 干擾行為分析[2]
做掃描識別的目標是準確地發現惡意掃描,交于運營人員進行后續操作。這里就涉及到兩點,第一是“惡意”,實際上,掃描只是搜集信息的一種行為,本身并不一定是惡意的,學術界和工業界往往會因某些原因(如完成科學研究、網絡空間引擎(如shodan)、網絡存檔(Internet Archive)行為)發起掃描行為,這些掃描行為并不會對企業造成危害,理論上可以忽略;第二是“掃描”,掃描行為在告警上最直觀的感受就是在短時間內觸發大量告警,可是在網絡空間內有大量的行為與之類似,造成干擾,需要設計更加精確的算法將這些行為與掃描行為分離。
在所有的干擾行為中,最明顯的屬于搜索引擎的爬蟲行為[2]。搜索引擎會爬取目標網站的資源數據,當這些數據比較敏感時,就會觸發告警。如圖1所示,百度爬蟲每天會觸發大量安全設備的告警,且告警類型眾多,圖2為告警的payload樣例,可以明顯看出“User-Agent”字段中包含有“Baiduspider”的標志。實際上,除了百度,其他各大廠商(如google,bing)的爬蟲也會觸發大量告警。這些爬蟲行為雖然與掃描行為類似,但嚴格意義上講并不屬于掃描行為,需要從算法上將兩種行為區分開來。

圖1. 百度爬蟲觸發的告警樣例

圖2. 百度爬蟲觸發的告警payload樣例
三、掃描檢測需要考慮的告警字段
在第二節中我們提到掃描在類型上、拓撲上均有不同細分,為了覆蓋盡可能多的掃描行為,我們需要考慮盡可能多的關聯字段,同時,為了與一些干擾行為做區分,還需要考慮一些特殊字段。具體來說:
- 為了滿足掃描行為在拓撲上的差異,需要選擇“sip”,“dip”字段,從而觀測是一對一、一對多、還是多對一的掃描類型
- 為了符合掃描的基本特性(短時間內觸發大量告警),需要選擇“timestamp”字段,判斷告警產生的密集程度。
- 為了檢測不同類型的掃描,需要針對性的選擇不同字段,如:對于漏洞掃描,該行為會觸發大量不同類型的告警,“log_message”字段就需要考慮;對于弱口令掃描,需要提取“payload”字段中的用戶名和密碼信息,若payload為密文(如ssh登錄),則從網絡側告警中無法檢測;對于Web漏洞掃描,需要對考慮“q_body”,”r_body”字段,對請求體和響應體做一定的解析處理
- 為了過濾大量的干擾行為,如爬蟲、正常用戶登錄、web滲透測試等。需要考慮許多其他字段:‘r_body’中的響應碼,爬蟲一般會掃描已經存在的資源,而掃描行為一般掃描攻擊者自己想要的資源,大概率不存在,一般會觸發“4XX”響應碼;q_body中URL的文件類型,爬蟲一般訪問一些靜態資源,如圖片、視頻類型(.jpg, .mp4等),而掃描一般訪問可以進行滲透或者獲取重要信息的資源,如 php文件、asp文件、mdb(數據庫)文件等;
四、總結
本文對掃描行為做了整體介紹,包括特點、類型、拓撲等方面,并且分析了對掃描檢測精度產生主要影響的干擾項,從而進一步介紹進行掃描檢測需要考慮安全告警數據中的哪些字段。在考慮這些字段的基礎上,設計精細的算法便可進行掃描檢測了,關于掃描檢測中使用的具體算法,將在下期文章中介紹,敬請期待。
參考文獻
[1] Bhuyan M H, Bhattacharyya D K, Kalita J K. Surveying portscans and their detection methodologies[J]. The Computer Journal, 2011, 54(10):1565-1581.
[2] Li X, Azad B A, Rahmati A, et al. Good bot, bad bot:Characterizing automated browsing activity[C]//2021 IEEE symposium on securityand privacy (sp). IEEE, 2021: 1589-1605.
關于天樞實驗室
天樞實驗室聚焦安全數據、AI攻防等方面研究,以期在“數據智能”領域獲得突破。
內容編輯:天樞實驗室 童明凱 責任編輯:王星凱
本公眾號原創文章僅代表作者觀點,不代表綠盟科技立場。所有原創內容版權均屬綠盟科技研究通訊。未經授權,嚴禁任何媒體以及微信公眾號復制、轉載、摘編或以其他方式使用,轉載須注明來自綠盟科技研究通訊并附上本文鏈接。