1. 程式人生 > >我是如何意外阻止了勒索病毒的全球攻擊

我是如何意外阻止了勒索病毒的全球攻擊

【伯樂線上導讀】:5月12日,英國、義大利、俄羅斯等多個國家爆發勒索病毒攻擊,中國國內校園網也出現大面積感染。請見我們昨天的推文:《全球爆發計算機勒索病毒(包含應急防範措施)》。

WannaCrypt 勒索病毒開始肆虐後 ,英國的網路安全人員 MalwareTech 博主分析發現,該病毒都會訪問一個域名 www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com,如果連線成功,就停止攻擊感染其他機器。於是他註冊了這個域名,偶然阻止了勒索病毒的全球攻擊。

(MalwareTech 的推特截圖。後一條是說他也沒想到註冊域名後會中斷擴散傳播。前一條則是他的嘚瑟內容,23333)

MalwareTech 博主在事後寫了一篇總結文章,以下是伯樂線上的摘編:

我現在終於有時間寫寫週五發生的事情了,這兩天各種電話和 Skype 都快把我催爆了,這件事情也花掉了我整個週末的時間(實際上前後一共花了四天時間,連我的工作時間都佔了,就是如此)。也許你已經從各種媒體上聽說了 WannaCrypt 病毒的事情了,但是我覺得你最好聽聽我的版本。

我那天早上 10 點鐘起床,然後就到“英國電子威脅資訊共享平臺”上去檢視資訊,因為我一直在跟蹤一個叫 Emotet banking 木馬的傳播情況,這種木馬病毒直至今日還很有威脅。然後我發現,有幾個很普通的貼子提到說,有幾個公司或者組織被“勒索木馬”攻擊了,不過這也並不是什麼“大新聞”….至少當時還不是。接著我就關了電腦出去和朋友吃午飯了,就是在這個時候,WannaCrypt 勒索木馬開始肆虐。

當我下午兩點半回到家的時候,我發現資訊共享平臺上已經到處都是 NHS(英國國家醫療體系)被攻擊的訊息了,據說全國有好幾個NHS 下屬機構的系統被木馬攻擊了,這也讓我感覺到很可能要有“大新聞”產生了。儘管勒索型病毒攻擊某些公共系統的情況並不新鮮,但是全國範圍內的系統同時中招的情況可就不那麼尋常了(而且現在 NHS 的僱員也挺聰明瞭,不會輕易點開帶病毒的釣魚郵件,所以這次能有這麼大的傳播範圍,肯定是有什麼其他的病毒傳播方式。)在我的一個好朋友(他是資訊保安研究員)和 Kafeine 軟體的幫助下,我用最快的速度拿到了一個木馬的樣本。我在分析環境裡運行了這個樣本,發現木馬會去訪問一個未註冊的域名( iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com

),然後我就很快把這個域名註冊了。

使用 Cisco Umbrella,我們就能看到木馬對特定域名的訪問流量情況(當然是在我註冊之前),這也能看出來,這次大波的木馬攻擊是在當地時間早晨 8 點開始的。

在域名傳播的同時,我在我的虛擬環境裡又運行了一次樣本,然後就看到了 WannaCrypt 勒索頁面;但是更有意思的是,木馬感染了我放在那裡的測試檔案以後,還嘗試在 445 埠(SMB協議使用的就是這個埠)隨機連線不同的 IP 地址。這種大量的訪問嘗試馬上讓我聯想到了漏洞掃描,事實上這種對 SMB 埠的掃描行為也讓我回憶起了最近報道過的,NSA 的 ShadowBroker 洩露事件,那個裡面就有 SMB 漏洞掃描。當然,我當時沒有證據能證明這次攻擊就是 SMB 漏洞掃描,或者就是用 NSA 洩露出來的漏洞掃描工具來做的,所以我只能在 Twitter 上貼出我發現的東西,然後追蹤木馬感染的域名。

“我發現木馬樣本在安裝 WannaCrypt 後會掃描 SMB。其他人找到的情況是不是也是這樣?注意到木馬是採用 P2P 方式傳播。” — MalwareTech (@MalwareTechBlog) May 12, 2017

從反饋來看,我得到了相互矛盾的答案,我很滿心焦慮地重新裝載了之前的分析環境,然後把木馬樣本又運行了一遍……結果什麼事情也沒發生。然後我又修改了 host 檔案,這樣可以讓木馬對域名的連線失敗,然後我又運行了一遍,結果……木馬感染成功了。

我估計你沒法想象一個成年人高興得上躥下跳的畫面吧,而且這個人高興的理由居然是自己的電腦被勒索木馬感染了,但是這個人就是我。

勒索木馬第一次執行失敗了,但是第二次成功感染了。這說明,只要木馬能向特定的域名註冊成功,那麼就能阻止木馬的傳播,也能阻止木馬感染新的電腦。(一開始我並沒有公佈這個發現,而是通過逆向工程反覆驗證,不過現在應該已經有其他人在網上公佈了這個方法了。)

所以,這麼簡單的一個伎倆,怎麼就能讓全球肆虐的木馬病毒停止傳播呢?

Talos 寫了一篇非常不錯的文章來解釋這個原理,我在這裡直接使用 Darien 的截圖來說明:

上面程式碼做的事情,就是嘗試連線我們註冊的域名。如果連線失敗的話,那麼就感染系統,如果連線成功的話,木馬就會退出執行(一開始我看這個程式碼並不是很明白,因為我不知道程式碼的上下文,也不知道這個函式執行的結果返回上一級會幹什麼。)

我們一開始認為,這個域名是一個“死亡開關”(Kill Switch),如果出了大問題就可以用它來關閉攻擊。不過現在我覺得,這是木馬用來切斷進一步執行的機制,當然這是一個糟糕的設計。

在沙箱環境裡,木馬的所有的網路請求都會被攔截,然後沙箱會返回一個虛擬的 IP 地址給木馬程式,而不是木馬要訪問的真正的 IP 地址。這種工作原理的副作用就是,如果木馬要求訪問一個未註冊的域名,沙箱則會告訴木馬說訪問成功(真實情況下是不可能成功的)。

我覺得勒索木馬的作者在程式裡故意要訪問一個未經註冊的域名,這種域名在虛擬機器的沙箱環境裡會被當做“已註冊”來處理,一旦程式發現這些“不應該返回結果”的域名居然返回了結果,那麼就知道這是在虛擬機器環境裡執行的,接著木馬程式就會自動退出,阻止進一步的入侵分析行為。這種技術並不是首創,Necurs 木馬之前就用過這種伎倆(Necurs 會去訪問 5 個隨機生成的域名,如果這 5 個域名都返回同一個 IP 地址的話,木馬程式就會自動退出)。

然而,因為 WannaCrypt 卻是在程式裡寫死了這個用來驗證的假域名,而因為我真的註冊了這個域名,所以現在不論是在虛擬機器裡,還是在真實的計算機上,這個域名都會真的返回響應資訊,所以木馬無論在任何條件下都會相信自己是在虛擬機器裡執行,從而自動退出……所以說,我們這不經意的註冊行為無意中阻止了木馬在傳播和進一步的勒索行為。我們會繼續持有這個域名,以阻止這個病毒樣本的進一步感染。

(伯樂線上補註:原作者感謝了在整個分析過程中幫助過他們的組織和機構,我們這裡就省略了。)

現在,我想我終於該睡會兒了。

伯樂線上補充:

② 5月14日下午,國家網路與資訊保安資訊通報中心釋出緊急通報:

監測發現,在全球範圍內爆發的 WannaCry 勒索病毒出現了變種:WannaCry 2.0, 與之前版本的不同是,這個變種取消了 Kill Switch,不能通過註冊某個域名來關閉變種勒索病毒的傳播,該變種傳播速度可能會更快。請廣大網民儘快升級安裝 Windows 作業系統相關補丁,已感染病毒機器請立即斷網,避免進一步傳播感染。

打賞支援我翻譯更多好文章,謝謝!

打賞譯者

打賞支援我翻譯更多好文章,謝謝!