零日漏洞是軟件廠商和殺毒軟件公司先前從未發現過的漏洞,黑客罪犯和情報機構經常使用它們來打開后門,而且由于零日漏洞本身的特性,這些后門有可能數年保持不被發現。直到最近,發現零日漏洞還屬于只能靠運氣的事情。
然而來自卡巴斯基實驗室的研究人員首次在有目標地尋找后成功發現了零日漏洞。研究人員使用的只是不起眼的一些線索。
研究人員發現的是微軟公司 Silverlight 中的一個遠程代碼執行漏洞,Netflix 等很多流媒體服務提供商使用它作為瀏覽器插件。Sliverlight 還被 SCADA 和其它關鍵工業基礎設施的控制系統所使用。
微軟在周二發布的補丁中將該漏洞評為“高危”。如果用戶訪問掛載漏洞利用插件的惡意網站,攻擊者可以利用該漏洞感染系統。這種攻擊影響除 Chrome 之外的全部主流瀏覽器,原因并不復雜:谷歌在2014年移除了對 Silverlight 插件的支持。
卡巴斯基在去年11月發現,該零日漏洞感染了某客戶的設備。之后,卡巴斯基設下誘餌,并花了數個月時間等待黑客咬鉤。這次事件給想要發現零日漏洞的研究人員作了一個很好的例子。
第一條線索來自 Hacking Team 的電子郵件
發現起源于一次機密的談話。
2015年七月,代號為 Phineas Fisher 的黑客攻擊了意大利公司 Hacking Team ,并竊取了400GB 的公司數據,并將拿到的內部郵件公布在了網上。這次入侵將該公司的業務記錄公之于眾,同時暴露了一些想要向 Hacking Team 銷售零日漏洞的黑客。Hacking Team 一直飽受爭議,因為它向全球的執法和情報機構銷售漏洞利用軟件,客戶中包括蘇丹、巴林和沙特阿拉伯等專制政權。
克斯汀·雷奧(Costin Raiu)是卡巴斯基全球研究分析團隊的負責人,他在泄露的電子郵件中注意到了一條2013年的信息。當時,某自稱維塔利·托羅坡夫(Vitaly Toropov)的俄羅斯零日漏洞賣家聯系了 Hacking Team。一系列電子郵件顯示,Hacking Team 為某 Flash 漏洞支付了4萬5千美金。
就像所有成功的商人一樣,在做完這筆生意之后,陀羅坡夫想賣給 Hacking Team 更多貨。他還給出了折扣措施:第二次購買降價5千美元,第三次購買降價1萬美元。他在推銷中寫道:“我推薦一個嶄新的 iOS 7 和 OS X 雙系統都可以使用的 Safari 漏洞。你也可以買我在兩年半之前寫的 Silverlight 漏洞利用,這個漏洞在未來的幾年里很有可能生存下來。”
盡管 iOS 漏洞令人感興趣,雷奧對陀羅坡夫介紹的自2011年起從未被發現的 Silverlight 漏洞更好奇。這顯然不是某個新手在隨便自夸。
陀羅坡夫是多產的漏洞獵人和漏洞利用編寫者,他在2013年之前是漏洞賞金項目的積極參與者。他在網絡上發布的表格和在 Packet Storm 網站上貼出的歷史成果顯示,在2011年到2013年之間,陀羅坡夫向各大漏洞賞金項目提交了超過40個漏洞。2013年10月,他在向微軟提交兩個 Silverlight 漏洞之后停止了參加漏洞賞金項目。同一個月,他開始秘密地向 Hacking Team 銷售惡意軟件,顯然他保留了一個沒有提交給微軟的漏洞,想將它賣給黑客。
由于漏洞已經被賣給了客戶,而且在過去的兩年半時間里一直在感染設備,雷奧認為可以嘗試尋找這個漏洞。只有一個問題。陀羅坡夫沒有透露該漏洞的細節,因此很難找到他的本尊。
通常,零日漏洞是在意外中被發現的:某人發現自己被入侵了,經過取證檢測發現其系統上存在一個零日惡意軟件。在發現這些漏洞之后,反病毒廠商就會提取其指紋,幫助尋找其它系統上的該惡意軟件。之后,他們編寫掃描器使用的簽名,搜索客戶的系統。但在這此事件中,雷奧并不知道如何尋找零日漏洞,因為他既沒有拿到可供分析的代碼,也不知道 Silverlight 的哪一部分存在漏洞。
在看過陀羅坡夫給出的歷史漏洞發現記錄之后,雷奧有了想法。他開始研究陀羅坡夫為已發表成果寫的漏洞利用概念驗證,希望能夠發現其特別的編程技巧或風格,再將其作為搜索這一漏洞的標本。研究人員在參與漏洞賞金項目時會提交概念驗證的漏洞利用,以證明他們發現的漏洞是真實并有可能被利用的。通常,概念驗證代碼會在目標機器上啟動計算器應用,以證明利用是可行的。
雷奧選擇研究已發表文件的直覺是對的。他特別研究了陀羅坡夫為其中一個微軟 Silverlight 漏洞寫的概念驗證代碼,這里提到的漏洞已經在2013年被修復。在漏洞利用的代碼中包含 Debug 代碼,其中有幾行引起了雷奧的注意。
“漏洞利用開發者經常會重用代碼,簡化工作。Silverlight 零日漏洞是否有可能和陀羅坡夫在2013年發表的概念驗證攻擊相似呢。”
iOS 零日漏洞要價百萬美金
程序員通常在程序的最終版本中移除 Debug 代碼,但有時候他們會將其留在源碼中,這樣它就和所有代碼一起被編譯成二進制文件了,即使它們在程序中不起到任何作用。雷奧希望他的猜測正確。
雷奧使用了名為 YARA 的工具,查找客戶的計算機上是否存在這些字符串。在 VirusTotal 工作的西班牙安全研究人員維克托·奧瓦雷茲(Voctor Manuel Alvarez)在2007年設計了 YARA ,它是一種免費的病毒掃描器,谷歌現在已經收購了該工具。研究人員可以使用它創建所謂的 YARA 規則,搜索惡意文件并發現它們內含的規律,并將它們分類進特定的惡意軟件家族。YARA 規則也可以被用于掃描網絡和系統上的代碼格式。因此,雷奧決定使用這個工具。
出于類似的目的,雷奧之前使用過 YARA 規則,但以失敗告終。卡巴斯基的某客戶同時遭到了兩種漏洞利用的攻擊,黑客使用了被感染的 PDF 文檔進行滲透。其中一個漏洞可以讓攻擊者從 Adobe Reader 使用的沙箱中逃逸。雷奧和同事到最后都沒有找到那個漏洞,但還是弄清楚了其攻擊方式,并通知了 Adobe 公司發布補丁。
盡管之前使用 YARA 失敗了,雷奧還是決定在陀羅坡夫的惡意軟件上再試一次。7月,在讀過陀羅坡夫和 Hacking Team 之間溝通的電子郵件之后,雷奧根據 Debug 代碼創建了一個 YARA 規則,并將其分發給了公司的自動化漏洞利用防御工具和卡巴斯基安全網絡,這樣消費者就可以共享在計算機上找到的惡意代碼樣本。
幾個月過去了,沒有找到任何感染的跡象。雷奧幾乎忘記了這個小實驗。
11月25日,中東某客戶的設備上突然傳出了遭到感染的消息。該公司同意將設備上發現的惡意代碼通過卡巴斯基安全網絡上傳,以供分析。值得注意的是,幾個小時后,某人向 Virus Total 網站上傳了該漏洞利用的樣本,但源頭來自另外一個地理區域。Virus Total 收到的文件是從老撾的 IP 地址上傳的。這份文件的編譯日期是7月21日,這正是陀羅坡夫和 Hacking Team 協商賣出 Silverlight 漏洞的幾周后。
在雷奧得到惡意代碼之后,確定它是否就是一直在等候的 Silverlight 零日漏洞就很快了。
“這幾行 Debug 代碼是我們找到的唯一線索。”盡管希望渺茫,雷奧還是做到了。
之后,卡巴斯基沒有發現客戶設備上的其它樣本,這意味著不論是誰在使用漏洞,都是將其用于特定目標的。世界上兩個地區的用戶在同一天先后遭到攻擊,正表明攻擊者當天是同時對這兩個目標發起攻擊的。雷奧估計,該漏洞在零日漏洞市場上的價格大概在2萬到4萬美金之間。
媒體聯系到托洛坡夫求證零日漏洞一事,同時給他展示了卡巴斯基為此漏洞制作的技術描述文檔,但托洛坡夫表示對此這一二進制閱讀器漏洞并不熟悉。
他在給媒體的回復中寫道:“我并不了解這一類二進制閱讀器漏洞。”他詢問這一漏洞利用是否重用了他之前編寫的代碼,媒體在確認微軟官方已經修復此漏洞后將代碼發給了他。
“我很想承認,但這事的確不是我做的。不論如何,在這些 shell 代碼中發現我之前的概念驗證工作很有意思。謝謝分享。”
托洛坡夫在這里提到的概念驗證工作,即是他在2013年提交給微軟并得到修復的 Silverlight 漏洞。
托洛坡夫沒有解釋這種巧合出現的原因,但他對媒體表示這一結果并不令人吃驚。與此同時,他否認在2013年曾與 Hacking Team 做過交易。
雷奧表示,看到其他人會復用托洛坡夫公開的概念驗證攻擊代碼,這有些不合情理,但并非完全不可能。雷奧至少發現過一次某人使用托洛坡夫2013年的 Silverlight 漏洞代碼,作為漏洞利用的基礎構成。
托洛坡夫是否真的開發了該漏洞利用暫且不論,雷奧認為自己的獵捕零日漏洞行動獲得了巨大成功,因為攻擊者能夠利用的零日漏洞又少了一個。
這實際上是第一次有目的性的獵捕行動取得的成功,雖然可能靠了些直覺和運氣。如果代碼的編譯者移除了這些 debug 代碼,我顯然不會有這種運氣。
既然這種獵捕方式已經獲得成功,研究人員有可能對托洛坡夫發表的另外一個概念驗證攻擊如法炮制,發現更多零日漏洞。此外,該方法還可以被用于其它研究人員公開發布的代碼,破解更多零日漏洞 。