昨天晚上做夢(mèng),夢(mèng)見(jiàn)不知道在之前還是現(xiàn)在的哪家公司,跟同事老板談hc,說(shuō)到,當(dāng)前最大的問(wèn)題是,人力問(wèn)題,是人力不夠。只有人力解決了,這個(gè)team才能運(yùn)轉(zhuǎn)下去。我就問(wèn),那你們團(tuán)隊(duì)是做啥的呢?他說(shuō)做掃描器和漏洞運(yùn)營(yíng)。夢(mèng)里就開(kāi)始回想在以前公司中,各種方法有效的效率提高和人力節(jié)省措施,我就回了一句,人力當(dāng)然重要,不然事情做不起來(lái),同時(shí)在有一定人力的情況下,方法更重要。接著,就開(kāi)始就掃描器的使用高談闊論了起來(lái)。
啥?掃描器不就一個(gè)工具么?有幾個(gè)人不會(huì)用?
這里就講一講在甲方互聯(lián)網(wǎng)公司,掃描器在具體實(shí)踐中的用法,個(gè)人淺見(jiàn),歡迎交流分享……頭次發(fā)文,不知道會(huì)被噴到多慘……
一、掃描器哪里來(lái)?
以前就職的兩家公司里,黑盒掃描器都是自研,白盒掃描器只有其中一家有。直到有一次某M公司來(lái)做分享,才知道,原來(lái)他們的黑白盒掃描器都是靠購(gòu)買的,乙方提供產(chǎn)品和售后支持。當(dāng)時(shí)納悶兒,如果是乙方提供,就不怕到時(shí)候也不知道代碼,添加規(guī)則的時(shí)候不能滿足需求嗎?M公司的專家解釋,以前M也是自研掃描器,但是發(fā)現(xiàn)的問(wèn)題是,掃描器的開(kāi)發(fā)維護(hù)團(tuán)隊(duì)的目標(biāo),很多時(shí)候和具體運(yùn)營(yíng)的安全團(tuán)隊(duì)是不一致的,更新規(guī)則的效率效果也比較不好說(shuō);而乙方由于提供給多家服務(wù),樣本也更多,產(chǎn)品更專業(yè),提供的服務(wù)也更好一些。回想起原來(lái)就職的兩家公司里,除非掃描器的開(kāi)發(fā)運(yùn)維和安全工程師就在一個(gè)小團(tuán)隊(duì),否則這其中的多個(gè)環(huán)節(jié)也確實(shí)很難保證掃描器的快速迭代。
除了比較大的公司,如果是初創(chuàng)公司或者是快速增長(zhǎng)期的公司,購(gòu)買一款質(zhì)量有保證,售后服務(wù)好的掃描器產(chǎn)品都是個(gè)不錯(cuò)的選擇。當(dāng)然如果能挖到專業(yè)的掃描器大牛過(guò)來(lái),進(jìn)行產(chǎn)品開(kāi)發(fā),不僅少走很多彎路,還便于內(nèi)部產(chǎn)品對(duì)接,就更好了。
二、掃描器誰(shuí)來(lái)用?
剛?cè)胄械臅r(shí)候,發(fā)現(xiàn)掃描器定期通過(guò)全流量,域名或ip,進(jìn)行掃描,然后推送到SOC上,安全工程師來(lái)進(jìn)行報(bào)警運(yùn)維,以及后續(xù)漏洞的分發(fā)。這是對(duì)掃描器最早的用戶的認(rèn)識(shí)。
隨著時(shí)間的增長(zhǎng),遇到了一群群特別牛叉的小伙伴兒,見(jiàn)識(shí)了,除了常規(guī)安全工程師運(yùn)維,還可以將安全工程師以外的員工動(dòng)員起來(lái),畢竟,安全不僅僅是一個(gè)安全團(tuán)隊(duì)的事情,而是一個(gè)公司,甚至還有公司外部人員一起來(lái)構(gòu)建的生態(tài)。
三、掃描器怎么用?
1. 常規(guī)黑盒掃描
收集和維護(hù)公司流量,ip和域名信息,對(duì)這些資產(chǎn)進(jìn)行定期全量和增量掃描。
全量掃描,重點(diǎn)在于,要收集和維護(hù)公司的資產(chǎn),并對(duì)資產(chǎn)進(jìn)行有效的去重策略。周期要比增量掃描的周期長(zhǎng)一些,這里的重點(diǎn)在于全,而不是快。去重也需要一套完整的策略,不過(guò)此處不作過(guò)多展開(kāi)。
增量掃描,對(duì)比原有資產(chǎn)庫(kù),一旦發(fā)現(xiàn)有新增資產(chǎn),立即進(jìn)行掃描,這里的重點(diǎn)在于要快。因?yàn)槿绻跉v史漏洞能夠有效修復(fù)的情況下,新增資產(chǎn)出現(xiàn)新漏洞或高危漏洞的可能性更大,需要盡快發(fā)現(xiàn)并處理。
2. 黑盒插件掃描
據(jù)Net Market Share 的7月份數(shù)據(jù),占據(jù)全球?yàn)g覽器排行榜首位的是Chrome瀏覽器,總市場(chǎng)份額為48.65%。實(shí)際工作中,也確實(shí)不少的程序員喜歡用Chrome瀏覽器。甚至于,不少瀏覽器直接使用的是Chrome的內(nèi)核。
在這個(gè)前提下,開(kāi)發(fā)Chrome瀏覽器掃描插件成為了可能。
由于黑盒掃描基于URL即可掃描發(fā)現(xiàn)漏洞的特性,只要通過(guò)Chrome或其內(nèi)核瀏覽器瀏覽過(guò)的URL,都可以通過(guò)插件進(jìn)行收集抓取,并進(jìn)一步進(jìn)行黑盒掃描。只要安全工程師將插件開(kāi)發(fā)成功,并推廣到公司的開(kāi)發(fā)和測(cè)試安裝使用,那么開(kāi)發(fā)和測(cè)試在線下環(huán)境中就可以自行檢測(cè)出漏洞,只要安全工程師準(zhǔn)備好相應(yīng)漏洞的修復(fù)方案,開(kāi)發(fā)即可自行修復(fù)上線。無(wú)需等待產(chǎn)品上線,將安全風(fēng)險(xiǎn)暴露到外面后,外部或安全工程師再倒推給開(kāi)發(fā)修復(fù)。不僅是降低了安全風(fēng)險(xiǎn),也節(jié)省了安全工程師的工作成本。
3. 黑盒自助掃描
仍基于拿到URL即可掃描或爬取漏洞的特性,可以將掃描器后臺(tái)功能,開(kāi)發(fā)成前臺(tái)產(chǎn)品,供對(duì)漏洞了解并未達(dá)到專業(yè)程度的開(kāi)發(fā)或測(cè)試使用。
產(chǎn)品形態(tài)可以就是簡(jiǎn)單的輸入框,用戶輸入U(xiǎn)RL,點(diǎn)擊掃描,即可對(duì)該URL進(jìn)行黑盒漏洞掃描。
對(duì)于更深度的用戶,也研發(fā)定期,批量,爬蟲或接口掃描等功能……可以做的事情就很豐富了。
4.服務(wù)器掃描
這個(gè)原理是,抓取開(kāi)發(fā)或測(cè)試的服務(wù)器上的日志,推到掃描器,進(jìn)行定期自動(dòng)化掃描。好處是一旦配置了,就能準(zhǔn)確的收集到最新變動(dòng)的代碼的日志,并且中途無(wú)須人工進(jìn)行更多的操作,只需等待結(jié)果即可。
需要注意的是,要盡量開(kāi)發(fā)封裝的agent,而不僅僅是接口,因?yàn)榉庋b的agent在開(kāi)發(fā)或者測(cè)試接入的時(shí)候成本更低,推廣起來(lái)也更容易。如果公司內(nèi)webserver類型不統(tǒng)一,那么可能需要開(kāi)發(fā)Apache,Ngnix,lighttpd等多個(gè)適用版本來(lái)進(jìn)行接入。
5. 白盒代碼掃描
白盒的代碼掃描,理論上也可以運(yùn)用方法3中,輸入代碼路徑的方式進(jìn)行自主掃描。還有一種方案就是,將白盒代碼掃描,封裝成一個(gè)腳本或者包,推廣給開(kāi)發(fā),在開(kāi)發(fā)常規(guī)開(kāi)發(fā)的時(shí)候,跑一遍腳本或者包,顯示哪里的代碼可能會(huì)產(chǎn)生安全漏洞。
這個(gè)方案的難點(diǎn)有兩點(diǎn)。一是,如果公司開(kāi)發(fā)使用的是多種語(yǔ)言,那么包的適配和開(kāi)發(fā)上可能就需要花比較多的心思。二是,白盒掃描本身產(chǎn)生的誤報(bào),想做好控制也比較難,這就要在漏報(bào)和誤報(bào)間做好權(quán)衡,至少選擇添加誤報(bào)達(dá)到某一基準(zhǔn)線的規(guī)則,并做好引導(dǎo)說(shuō)明,否則容易敗RP。
6. 上線平臺(tái)掃描
如果是比較專業(yè)的公司,代碼上線,一般都會(huì)有上線的平臺(tái)或者系統(tǒng)做支撐。
如果在上線前接入黑盒白盒掃描,并對(duì)漏洞進(jìn)行修復(fù),更是事半功倍。
需要注意的幾個(gè)事情是:
第一,要和上線的平臺(tái)打通,取得相應(yīng)平臺(tái),以及平臺(tái)的用戶的支持,這部分建議還是先走試點(diǎn)然后逐步推開(kāi)。
第二,接入黑白盒掃描,不要等到最終上線那一刻再去掃描,而是盡量將掃描的步驟提前,進(jìn)行預(yù)掃描,加快速度,提高用戶體驗(yàn)。
第三,對(duì)于掃描的結(jié)果,哪些可以不修復(fù)就上線,哪些必須修復(fù)后上線,必須制定相應(yīng)的策略,明確不修復(fù)上線的風(fēng)險(xiǎn)確認(rèn)方式。
第四,對(duì)于掃描器掃描規(guī)則的維護(hù),需要在安全自己的系統(tǒng)中,而不是上線的平臺(tái)。這樣添加規(guī)則,設(shè)置白名單,能夠不受上線平臺(tái)的影響,自己掌握主動(dòng)權(quán)。
最后,任何一種掃描器都不能解決所有的問(wèn)題,有必要的情況下,對(duì)于重點(diǎn)業(yè)務(wù)可以通過(guò)設(shè)定策略,添加人工測(cè)試。
四、掃描器怎么維護(hù)?
衡量掃描器好壞最簡(jiǎn)單的就是漏報(bào)和誤報(bào)率,如何盡量降低漏報(bào)和誤報(bào),是掃描器安全上的最主要目標(biāo)。當(dāng)然,穩(wěn)定性,效率,速度不可忽視,不過(guò)此處不做詳細(xì)說(shuō)明。
1.漏報(bào)
漏報(bào)是難免的,重要的是每次發(fā)現(xiàn)漏報(bào)后能夠更好的處理和解決,并且和誤報(bào)做好平衡取舍。漏洞一旦通過(guò)各種非掃描器的渠道上報(bào)后,要有專門的人對(duì)該漏洞進(jìn)行分析和規(guī)則添加。這其中,疑似漏報(bào)的漏洞的通知規(guī)則和方式,根據(jù)漏洞類型進(jìn)行初步的過(guò)濾和篩選,以及后續(xù)的規(guī)則添加都可以進(jìn)行策略制定,這些都可以提高工作的效率。
此外,對(duì)于基礎(chǔ)資產(chǎn),包括但不限于流量,域名,ip,代碼路徑相關(guān)信息,進(jìn)行收集和維護(hù),也是減少漏報(bào)的重要途徑。不過(guò),大公司資產(chǎn)分布較多,初創(chuàng)公司基礎(chǔ)建設(shè)又有可能不完整,收集資產(chǎn)都是個(gè)不易的任務(wù)。根據(jù)過(guò)往有限的經(jīng)驗(yàn),如果安全團(tuán)隊(duì)有人力的話,最有質(zhì)量的方案,是將資產(chǎn)梳理和資產(chǎn)數(shù)據(jù),通過(guò)各種方式,匯總到自己的平臺(tái)上,自己進(jìn)行維護(hù)。如果依賴其他平臺(tái)運(yùn)維,后續(xù)無(wú)論是工作對(duì)接上,還是保證數(shù)據(jù)準(zhǔn)確性上,都會(huì)有無(wú)窮無(wú)盡的麻煩。梳理資產(chǎn)確實(shí)是個(gè)比較需要耐心,恒心,毅力和溝通能力的工作。
2.誤報(bào)
這里涉及到的是添加規(guī)則。如果是自研掃描器,非常非常建議,添加規(guī)則是通過(guò)動(dòng)態(tài)配置,而非更新代碼。因?yàn)橐?guī)則本身就是不斷變化的,如果每次規(guī)則變化都依賴開(kāi)發(fā),后續(xù)的麻煩,你懂的。
最后,安全不是一個(gè)團(tuán)隊(duì)的事情,而是聯(lián)合公司內(nèi)外各種力量建立起來(lái)的生態(tài)。
任何一種掃描器也無(wú)法掃描出全部的漏洞。
向奮斗在第一線的安全從業(yè)人員致敬。