0
1945年9月9日下午,美國海軍編程員、編譯器的發(fā)明者格格蕾絲·霍波正領(lǐng)著她的小組構(gòu)造一個稱為“馬克二型”的計算機(jī)。
突然,馬克二型死機(jī)了。技術(shù)人員試了很多辦法,最后定位到第70號繼電器出錯?;舨òl(fā)現(xiàn)一只飛蛾躺在中間,她小心地用攝子將蛾子夾出來,小心翼翼地帖到“事件記錄本”中,并注明“第一個發(fā)現(xiàn)蟲子的實(shí)例”。
這是有記載的計算機(jī)系統(tǒng)第一個Bug,從此以后,人們將計算機(jī)錯誤戲稱為Bug。
遺憾的是,從計算機(jī)誕生至今,工程師們也沒能把Bug消滅。
舉個例子。來看這樣一句話:“那個語文老師是我父親?!闭б豢?,這句話并沒有語病,讀起來也并不拗口。
但是,當(dāng)環(huán)境中有兩個語文老師呢?這就出現(xiàn)了指代不清的問題。所以,這句話在特定環(huán)境中,是有缺陷的。
此時你可能會發(fā)布一個“補(bǔ)丁”:那個長得最高的語文老師是我父親。
很快問題又來了,如果他們一樣高的話,這句話同樣是有缺陷的。你不得不再次發(fā)布“補(bǔ)丁”,如此循環(huán)往復(fù)下去,缺陷不斷地“消失再出現(xiàn)”。
而能夠被利用的Bug或者是設(shè)計缺陷,就是漏洞。
漏洞有危害嗎?當(dāng)然。關(guān)于漏洞的危害,《計算機(jī)安全技術(shù)規(guī)劃研究》作者James在1972年說了這么一段話:函數(shù)的代碼沒有正確地檢查源地址和目的地址,允許用戶覆蓋部分系統(tǒng)數(shù)據(jù)。這可能被用來向系統(tǒng)中注入代碼,從而使用戶獲得機(jī)器的控制權(quán)。
而在隨后的數(shù)十年間,桌面操作系統(tǒng)取代了DOS系統(tǒng)一統(tǒng)天下,應(yīng)用軟件生態(tài)百花齊放,漏洞的利用一發(fā)不可收拾:
2003年8月,在微軟發(fā)布新一輪的操作系統(tǒng)安全漏洞后不久,沖擊波病毒利用微軟RPC漏洞開始全面爆發(fā),受其感染的機(jī)器會不停重啟、IE瀏覽器不能正常打開鏈接、應(yīng)用程序異常等等;
2010年7月,有著“有史以來最復(fù)雜的網(wǎng)絡(luò)武器”之稱的震網(wǎng)病毒開始爆發(fā),它利用了微軟操作系統(tǒng)中至少4個漏洞(包括3個當(dāng)時的0day漏洞),突破了工業(yè)生產(chǎn)網(wǎng)絡(luò)與辦公網(wǎng)絡(luò)的物理邊界,致使伊朗核設(shè)施遭受重大損失;
2014年4月,心臟滴血漏洞首次向公眾披露,攻擊者可通過讀取網(wǎng)絡(luò)服務(wù)器內(nèi)存,訪問敏感數(shù)據(jù),從而危及服務(wù)器及用戶的安全,其影響范圍之大實(shí)屬罕見;
2017年5月,全球范圍內(nèi)爆發(fā)基于Windows網(wǎng)絡(luò)共享協(xié)議進(jìn)行攻擊傳播的永恒之藍(lán)蠕蟲惡意代碼,本次爆發(fā)使用了已知Office漏洞、永恒之藍(lán)SMB漏洞等。盡管微軟早在數(shù)月前就發(fā)布了相關(guān)漏洞補(bǔ)丁,但依然沒有阻止數(shù)百萬臺主機(jī)的失陷。
……
指望不再出現(xiàn)漏洞是不可能的。能夠預(yù)見的是,將來還會有更多的漏洞出現(xiàn),誰都無法阻止。
只要是人編寫的程序,一定會有缺陷,即便用于防范網(wǎng)絡(luò)攻擊的網(wǎng)絡(luò)安全產(chǎn)品也不能例外。不管工程師如何修復(fù),隨著外部環(huán)境的變化,缺陷就會暴露出來。一旦這個缺陷能夠被用于網(wǎng)絡(luò)攻擊,漏洞就形成了。
面對漏洞利用,防守者只能血戰(zhàn)到底。
按照公開程度,漏洞大致可以分成三類:
第一類是Nday漏洞,即已公開并且已經(jīng)有修復(fù)方案的老舊漏洞;第二類是1day漏洞,即已公開但尚未發(fā)布補(bǔ)丁的漏洞,甚至沒有緩解措施;第三類是0day漏洞,即尚未公開的漏洞。
理想狀態(tài)下,只要發(fā)現(xiàn)的足夠及時,修復(fù)足夠快,漏洞攻擊就追不上我,也就不存在0day的問題。
或許在絕大多數(shù)情況下,事實(shí)的確如此。在賽博空間,每天都有大量的白帽子發(fā)現(xiàn)并協(xié)助廠商完成漏洞修復(fù)工作。
但現(xiàn)實(shí)卻是骨感的,沒有人能做到一直領(lǐng)先。所以,攻擊者仍可能掌握著少數(shù)0day,而你對它一無所知。尤其是那些不需要與用戶過多交互就能夠輕松觸發(fā)利用的遠(yuǎn)程代碼執(zhí)行漏洞,更是頗受攻擊者的青睞。
一旦出現(xiàn)0day,安全廠商最重要的事情,就是與時間賽跑,盡可能縮短漏洞利用的“空窗期”,讓它變成Nday。
首先是盡快幫助客戶確定漏洞的危害以及影響范圍。漏洞的危害包括很多種,有的被用于竊取數(shù)據(jù),有的被用于獲取控制權(quán)限,還有的則可能用于破壞,危害不同,處置方法也不盡相同;漏洞的影響范圍則包括影響哪些軟件版本,有哪些主機(jī)安裝了有漏洞的軟件等等。
其次是通過漏洞復(fù)現(xiàn)盡快找出通用規(guī)則,在補(bǔ)丁發(fā)布之前輸出緩解措施和檢測方案。從漏洞發(fā)現(xiàn)到補(bǔ)丁安裝,這中間需要經(jīng)過一段相當(dāng)漫長的過程,而且即便有補(bǔ)丁,也會考慮到業(yè)務(wù)的連續(xù)性和穩(wěn)定性原因,補(bǔ)丁安裝也不會十分順利。因此,通過關(guān)閉部分不常用的端口等緩解措施來防范漏洞利用就顯得非常重要了。與此同時,安全廠商還應(yīng)盡快推動相應(yīng)的安全產(chǎn)品更新檢測規(guī)則,及時發(fā)現(xiàn)對應(yīng)的攻擊行為。
尤其是需要注意那些POC或者EXP已公開的漏洞,它們隨時可能被其他攻擊者大范圍利用。
話雖如此,但攻擊者手握0day甚至是1day,就意味著掌握網(wǎng)絡(luò)攻擊的絕對主動權(quán),往往能夠在成功在內(nèi)網(wǎng)建立“根據(jù)地”,向其余目標(biāo)進(jìn)行橫向滲透。
因此在攻防對抗階段,防守方?jīng)Q不能完全依賴某一款或者某一類安全產(chǎn)品,一旦攻擊者繞過安全產(chǎn)品的檢測(尤其是使用該安全產(chǎn)品的漏洞),便可以暢通無阻。這就要求防守隊(duì)必須構(gòu)建起多批次、大縱深的防御體系,對異常行為進(jìn)行持續(xù)的檢測。
這種做法的好處有兩個,其一是提高攻擊者的攻擊成本,迫使攻擊者不得不花費(fèi)更多的資源甚至是使用多個0day漏洞的組合攻擊,才能達(dá)成攻擊目標(biāo);其二是在邊界、終端、服務(wù)器等多個不同網(wǎng)絡(luò)位置,完整記錄攻擊者的入侵行為,包括端口嗅探、弱口令暴破、文件上傳、DNS解析、進(jìn)程創(chuàng)建等,結(jié)合威脅情報,為溯源反制提供數(shù)據(jù)支撐。
當(dāng)攻擊者利用社會工程學(xué)技巧向目標(biāo)用戶發(fā)動釣魚郵件攻擊時,防守方可以利用各類檢測設(shè)備,輕松獲取攻擊者的IP地址、域名后綴郵箱、釣魚網(wǎng)站或惡意附件樣本等信息。
此時,溯源反制便顯得游刃有余:其一,可以通過相關(guān)聯(lián)的域名/IP進(jìn)行追蹤;可以利用沙箱對郵件惡意附件進(jìn)行分析,獲取文件MD5等信息后與威脅情報進(jìn)行比對,完善攻擊者畫像;在規(guī)則允許的情況下,還可以對攻擊者進(jìn)行反向釣魚滲透,進(jìn)一步獲取攻擊者的社交信息。
而想要獲取上述數(shù)據(jù),至少需要在網(wǎng)絡(luò)側(cè)部署全流量檢測設(shè)備,記錄全部的網(wǎng)絡(luò)會話;在終端側(cè)部署終端檢測與響應(yīng)系統(tǒng),記錄終端上的各類文件執(zhí)行等數(shù)據(jù);在服務(wù)器側(cè),部署服務(wù)器安全軟件,記錄服務(wù)器內(nèi)部的行為數(shù)據(jù);甚至可以在內(nèi)網(wǎng)大量部署蜜罐,對攻擊行為進(jìn)行欺騙誘捕并記錄。
話說回來,0day的最大危險性來源于其未知性。既然無法避免,那就兵來將擋水來土掩。一旦被防守方捕獲或者成功溯源,0day很快就會變得和Nday一樣,失去它的銳利。
值得欣慰的是,0day漏洞的首次利用并非完全無懈可擊。漏洞是未知的,可攻擊者觸發(fā)漏洞的方式,卻可能是執(zhí)行已知的攻擊命令,并且剛好命中安全設(shè)備的檢測規(guī)則。
例如,安全員可能無法完全排查出飛機(jī)上所有的火災(zāi)隱患(漏洞),但可以阻止乘客攜帶明火登機(jī),而縱火犯想要縱火的方式恰好就是帶明火上飛機(jī),于是被安檢攔截了。
雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。