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