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