作者:啟明星辰ADLab
公眾號:https://mp.weixin.qq.com/s/3B9e0FltRSYWyu96NQp5Tw
一、攻擊背景
2019年11月19日,門羅幣官方github上出現對門羅幣release版與官網上出現不一致問題的issues,其中提及出現問題的門羅幣版本為最新版0.15.0.0。且門羅幣官方承認其官網受到黑客入侵,使得其提供的門羅幣客戶端存在竊取用戶關鍵信息的事實,這也是首次被發現的直接針對加密貨幣客戶端的供應鏈攻擊。
門羅幣官方聲明,惡意攻擊發生在11月18日,11月19日攻擊被發現并進行了修復。通過對已經確認的感染版本的hash 進行比對,發現客戶端組件monero-wallet-cli被黑客篡改,其中hash為:5decc690a63aab004bae261630980e631b9d37a0271bbe0c5b477feffcd3f8c2的文件被替換為:7ab9afbc5f9a1df687558d570192fbfe9e085712657d2cfa5524f2c8caccca31。當天,reddit上也出現了使用者因為安裝了官方網站的最新release版本而丟失了價值7000美元門羅幣的實際案例。

事件披露的同時,我們也開始對其進行一定的關注,并對涉及該次攻擊的惡意代碼進行了分析和追蹤。從分析的結果來看,本次攻擊的黑客將門羅幣源碼中cryptonote::simple_wallet()類進行篡改,涉及的文件有:
monero/src/simplewallet/simplewallet.h
monero/src/simplewallet/simplewallet.cpp
黑客利用以上文件實現了竊取門羅幣seed的功能。黑客不會直接竊取門羅幣的錢包文件,而是竊取門羅幣seed以及盜取門羅幣貨幣的所有權,因此盜取之后需要使用seed來恢復錢包,以提取其中的門羅幣。此外,惡意代碼內置有三個C&C,分別為node.hashmonero.com、node.xmrsupport.co和45.9.148.65。其中,node.hashmonero.com為默認的CC服務器,而node.xmrsupport.co和45.9.148.65作為后備CC使用。從當前的域名解析情況來看,node.xmrsupport.co和45.9.148.65指向同一臺服務器,主CC node.hashmonero.com所指向的IP為91.210.104.245。所有CC都采用端口18081作為seed回傳的服務端口。
本文首先對被篡改惡意monero-wallet-cli文件做細致的分析,接著試圖對黑客的基礎設置進行追蹤分析,發現了黑客所使用過的其他基礎設施。由于門羅幣官方對于該事件仍在調查之中,所以對于黑客是如何攻擊進入門羅幣官方網站的具體細節外界并不知曉,我們會持續關注該事件的進展。
二、樣本分析:
該樣本主要竊取門羅幣的seed數據,門羅幣seed由25個單詞組成,用來證明擁有者對一個門羅幣地址里面的貨幣所有權,也可用于恢復錢包。seed類似于如下字符串:
juicy sorry lukewarm lively fitting pulp irony nobody ought pelican sanity fudge vibrate ozone nearby upright addicted foxes arises alerts sorry lobster inmate karate ozone
該樣本以源碼為基礎,在函數cryptonote::simple_wallet::print_seed函數中加入了惡意函數cryptonote::simple_wallet::send_seed。

該函數將獲取的seed信息發送給node.hashmonero.com,端口為18081,其中seed信息存儲在”memo=”參數中。該函數主要通過調用cryptonote::simple_wallet::send_to_cc函數來實現seed的發送。發送的方式是通過https POST方式實現。

在send_to_cc函數中,其將CC服務器的端口硬編碼在代碼中,通過SSL協議將竊取的門羅幣seed發送給指定的CC服務器(node.hashmonero.com)。

如果該CC無法使用,惡意代碼則會首先采用后備C&C node.xmrsupport.co進行連接并將竊取的seed回傳至CC服務器上。

如果后備C&C還是無法使用,則采用后備服務器"45.9.148.65"作為竊取seed的回傳CC。

同時,被篡改的函數send_seed還被額外添加到了monero-wallet-cli文件的其他三個地方以確保在各種使用操作中能夠更有效地獲取seed。這三個地方分別為錢包創建函數cryptonote::simple_wallet::new_wallet(),錢包打開函數cryptonote::simple_wallet::open_wallet,以及同名重載函數。
(1)在new_wallet()函數中,補丁函數主要用于截獲錢包創建過程,一旦錢包創建成功,其錢包相關的seed就會立即發送給C&C。

(2)open_wallet函數主要用于打開一個門羅幣錢包文件(包括由硬件錢包提供的設備打開),該惡意代碼同樣對該函數進行篡改,以便錢包被加載之后,將其發送到C&C服務器上。

(3)第三處是加入到了同名的重載函數cryptonote::simple_wallet::print_seed(bool encrypted) 中,在該函數中,其竊取由函數tools::wallet2::get_multisig_seed和tools::wallet2::get_seed所得到的seed。該同名重載函數主要由cryptonote::simple_wallet::encrypted_seed和cryptonote::simple_wallet::seed兩個函數調用。encrypted_seed用于顯示加密后的門羅幣seed,而seed函數用于查看未加密的門羅幣seed。這意味著,任何外部錢包文件的查看行為都會被劫持,從而導致與錢包相關的seed遭到黑客竊取。

三、黑客追蹤與溯源
我們在受感染的門羅幣客戶端中發現硬編碼的CC服務器地址,其中有2個域名和1個IP地址,硬編碼的CC信息如下圖所示:

其中后兩個硬編碼CC目前指向同一個服務器。

為了對黑客使用的設施有進一步的掌握,我們隨后對這幾個硬編碼的CC進行了詳細的分析。
首先,我們來看C&C node.hashmonero.com,這個C&C是惡意代碼的默認C&C地址。該C&C當前被解析到IP:91.210.104.245。從whois信息中我們發現該域名是2019年11月14日注冊的,且域名申請的公司字段被保護。域名查詢結果如下圖所示:

此外還可以看出該域名做了隱私保護,很難對黑客的信息再進行進一步的追蹤,但是我們從該域名的注冊時間可以看出黑客計劃實施攻擊時間也應該不會太長久。而從域名node.xmrsupport.co的whois信息中得知其創建于2019年11月15日。因此可以推斷黑客生成攻擊樣本時,應該已經掌握了門羅幣官方網站的漏洞及攻擊方法。因而黑客的攻擊計劃也應該在2019年11月14日之前的就已經開始了,真正實施攻擊就在隨后幾天(11月15日-18日之間)。
通過IP地址45.9.148.65解析的歷史,還發現2019年11月16日域名hashmonero.com被解析到此IP地址上,在攻擊被發現當天2019年11月19日域名node.xmrsupport.co才被解析到該IP。

此前在github上有人利用瀏覽器訪問https://91.210.104.245:18081頁面會被重定向到https://monerohash.com/?r=from_node,不過在11月20日21時左右,由于被大量用戶舉報,CC服務器91.210.104.245已經被主機提供商停止服務。經查詢,我們發現91.210.104.245為俄羅斯主機服務商www.hostkey.ru所有,IP地址的whois信息如下圖所示:

通過VT對IP :91.210.104.245的歷史記錄進行分析,發現該服務器曾于2017年7月24日指向一個域名bitcoinbotreview.com,在兩年以后才被解析到當前的IP :91.210.104.245。

該域名雖然只有卡巴斯基一款殺毒軟件報毒,但從域名關聯出的樣本可以看出該服務器曾被作為另外一款惡意代碼的CC服務器。從域名本身的含義上看,似乎應該與比特幣相關惡意攻擊有關。此處我們也對這個關聯的樣本進行了簡要分析。
VT上的關聯樣本原始名稱為“documentation.doc.exe”。

在對樣本“documentation.doc.exe”進行分析后,我們發現其是一個使用Autoit3編寫的惡意代碼加載器(加載器內置有兩個C&C:bitcoinbotreview.com和bitcoinautobot.com),其從鏈接http://bitcoinbotreview.com/mailpv.exe下載后續文件并加載執行。但是在我們分析時,該鏈接已經失效,但通一些特征我們找到這個鏈接的原始文件。該文件是一款竊密型的木馬,其偽裝成NirSoft公司開發的郵箱密碼恢復軟件mailpv.exe:

由于目前門羅幣官方尚未有調查信息披露,所以我們這里僅僅做了一些初步追蹤,但仍可以看出這是一起通過精心準備網絡攻擊,從黑客急于注冊新域名并在注冊后的2-3天內就開始進行攻擊的情況來看,黑客應該是不久前發現了門羅幣網站的漏洞,從而特意定制惡意程序以期能夠及時兌現。
四、總結
通過該事件的分析我們可以看出,黑客并沒有直接竊取數據量較大的門羅幣錢包文件,取而代之的是竊取用戶門羅幣的seed,并使用SSL協議進行通信,使得攻擊更加隱秘。由于竊取seed對用戶賬戶的影響具有滯后性,因而,雖然目前僅有少數人報告了金錢損失的案例,但是不排除黑客已經竊取了相當數量的門羅幣seed,只不過黑客目前還未進行兌現。
本次攻擊事件再次給予我們安全警示,目前越來越多的黑客通過供應鏈攻擊,利用用戶對官方的信任,滲透進提供可信工具的網站并替換掉原始文件,以可信官網作為惡意代碼的傳播途徑,提高攻擊的成功率。因此我們提醒相關企業用戶,加強自身的網絡安全,定期進行網站的安全排查和加固,及時更新系統的安全補丁。
參考鏈接:
- https://github.com/monero-project/monero/issues/6151
- https://www.reddit.com/user/moneromanz/
- https://bartblaze.blogspot.com/2019/11/monero-project-compromised.html
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1083/
暫無評論