掃描器設計
漏洞掃描器大家都不陌生,幾乎是每家公司必備的安全產品。幾乎早在快10年前,作為安全乙方,就需要扛著一臺極光掃描器,到全國各地去做各種安服。在當時極光掃描器就是一款非常成熟的商業產品了,那么到現在為什么沒有出現一款能夠通殺的產品,大家還都要一直重復的造輪子呢。我想問題出在兩個方面,一是掃描場景復雜,沒有一款掃描器能否覆蓋所有的場景,而是各有側重。二是掃描器自身的保密需求,把防御能力完全暴露在外不是一個好主意,最多做到開源掃描框架,poc是萬萬不能全部開源的。
滴滴建設掃描器也已經好多年,并且去年作為滴滴云安全解決方案,實現了首次商業化輸出。如何做掃描器,我比較推崇實用主義的理念,比較看重有利用價值的漏洞,有的掃描器掃完一看,一堆高危全是ssh版本漏洞,報告是好看,但實際利用價值不大(當然,版本漏洞也是有其價值的,我們也有購買商業掃描器,主要用于迎接各種合規檢查,自家掃描器人家可能不認)。受限于場景,滴滴自研的掃描器PoC數量至今也才不到500個。商業化掃描器則不同,沒有幾千個poc都不好意思說自己是做掃描器的。有時候大而全并不一定好,我在某云光一臺vm,就給我推了80多個漏洞,客戶要么無法處理,要么形成漏洞免疫,反而容易漏過真正的風險。
自研掃描器架構如下圖:
1、 采用C-S架構,服務端分為3部分,WEB界面、交互API、調度控制等。數據存儲采用mysql,隊列服務redis 。
2、WEB界面主要負責與人的交互,包括資產管理、任務管理、Agent管理、插件管理、漏洞管理等模塊。
3、交互API 主要負責與Agent的交互,Agent主動拉取任務并推送掃描結果。 生產網、辦公網、測試網等公司內部屬于不同的安全域,是有網絡隔離的,但只要Agent與服務端WEB端口做到單向通信,就能解決一個服務端打通多個掃描安全域的問題。
4、控制調度模塊負責 任務調度、維護redis隊列、輪詢更新任務狀態。
5、客戶端主要分為指紋識別、spider、WEB掃描、主機掃描四部分。Agent 架構很方便做到橫向擴容。
6、web掃描分為兩類,一種是基于spider的掃描,Web掃描依賴于spider 爬取的結果,瓶頸在spider,注定效果有限。第二是基于url的掃描。大公司可建設URL庫,匯聚來自訪問日志,流量鏡像、測試人員agent 三者所采集到的url。
7、主機掃描是基于指紋的掃描,掃描效果就要看插件的質量和數量了。所有基于特征性的掃描都可以放到這里,例如對于discus掃描插件,雖然屬于web服務,但應該放到主機掃描這里,因為它的明確的指紋特征,而WEB掃描主要基于URL,大多是針對參數的。
指紋識別的實現
今天先談談指紋識別吧,最簡單的指紋識別方法就是Nmap,它的服務指紋真的很強大,但不適用于大規模的掃描任務,你會發現掃描1-65535個端口實在太慢了。于是拆分成兩部分的任務,端口掃描和服務識別,nmap加 -sV選項只負責識別開放端口是什么具體服務。
端口掃描首選要確認是否探活以及掃描范圍,例如內網等不大會禁icmp的場景,建議進行ping探活,對于有資產完備且安全性要求較高的場景如外網邊界建議不探活直接進行1-65535全端口掃描。
其實最糾結的是掃描方法的選擇,我們嘗試過nmap、masscan、python、go開發tcp掃描、tcp-syn掃描等,最后的結論是go語言實現的掃描效率最佳。過程就不多說了, 有興趣的朋友可以參考小伙伴的博客(https://thief.one/2018/05/17/1/)
再說服務識別,世間服務千萬種,但大致可以分為web服務和其他服務。非web服務識別主要依賴于nmap,對于少量未識別的,也支持自定義擴展指紋。而對于WEB指紋,主要依賴于自建指紋庫,web服務非常規范,http header、title、body、robots.txt等都可以很方便的自定義指紋規則。自建指紋是個逐步積累的過程,在未完善之前,可以依賴于開源的服務如whatsweb,cms規則非常豐富,完善后再逐步淘汰。
指紋識別的功能
1、指紋聯動掃描插件
標題為基于指紋識別的漏洞掃描,主要是說掃描條件是由指紋決定的。掃描插件只對匹配到指紋條件的目標進行掃描,編寫掃描插件時就要同步check下指紋規則,兩者聯動更新,這樣就可以做到精準掃描。掃描poc未能很好的匹配指紋規則,這樣就會存在一定的gap, 有時候使用簡單的默認端口會造成漏掃,有時候又擴大了掃描范圍,例如一個wordpress漏洞插件需要對所有http服務進行掃描。有了精準指紋識別,則可以發起針對性掃描。
2、指紋識別漏洞
指紋即漏洞:部分漏洞不需要經過漏洞掃描,直接在指紋識別階段就篩選出來了。對于公司外網掃描,有安全規范的公司一般會要求禁止高危端口開放外網,禁止使用高危框架,后臺要有雙因素等。這些都可以通過指紋識別來探測到。另外常規的主頁信息泄露漏洞也可以探測到,如列目錄,報錯,敏感信息泄露等。
指紋無漏洞: 即指紋白名單的概念,以外網為例,我們已知SSO是安全的,那么一旦指紋探測到后臺接入了SSO,就可以打個標簽。其他白名單也類似,我們若是已知某個服務是安全的,就不用去反復掃描了。
3、0day應急響應
有了完備的指紋庫,當發生0day漏洞的時候,就能夠迅速排查到可能受影響的資產,進而進行快速響應。 當然公司可以有兩個指紋庫,掃描器探測屬于黑盒指紋庫,還有主機agent采集上來的“白盒”指紋庫。
-
指紋識別
+關注
關注
43文章
1743瀏覽量
102273 -
漏洞
+關注
關注
0文章
204瀏覽量
15396 -
掃描器
+關注
關注
0文章
169瀏覽量
11932
發布評論請先 登錄
相關推薦
評論