黃易群俠傳M脫機外掛應用程式黃易神行
826
0

[討論] NanoLocker勒索軟體的逆向分析

CrackBlack 發表於 2016-5-29 10:02:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |
我最近有機會碰到了一個以前沒見過的勒索軟體的變體,它的名字是」NanoLocker」。這個勒索軟體和賽門鐵克以前發佈的分析文章中闡述的勒索軟體不同,它很不尋常。鑑於這一事實,我決定逆向幾個樣品,瞭解一下它是怎麼工作的。
分析詳情會在之後進行展示,但是在進行詳細分析之前,我需要先建立一個解密工具來解密這個勒索軟體的加密文件,這些加密文件都是在特定情況下進行工作的。我們需要的先決條件如下。
注意樣本
我使用了兩個不同版本的NanoLocker作為樣本進行測試分析:
Version 1.27 – MD5 :c1cf7ce9cfa337b22ccc4061383a70f6
Version 1.29 – MD5 : fce023be1fb28b656e419c5c817deb73
概述
NanoLocker採取了和其他常見勒索軟體類似方法。這個惡意軟體利用Windows CryptAPI進行常規加密。密碼設計一般都是可靠的文件使用生成的256位AES密鑰進行加密,但是AES密碼初始化使用默認(null) IV完成。使用後,這個AES密鑰先進行弱混淆,然後使用一個RSA公鑰對其進行加密,這個公鑰是從base64字符串硬編碼導入到binary中的。更新的加密密鑰最後進行base64加密,顯示給用戶,這樣可以在比特幣交易時通過公共消息把它傳給惡意軟體作者。我們將把最後的這個base64加密密鑰成為MK。
這款勒索軟體主要的設計缺陷類似於早期的TeslaCrypt/AlphaCrypt-AES密鑰被寫在了磁盤的某個文件中,並且這個密鑰直到加密完成一直保持不變。這樣做的意義是,即使加密過程中存在中斷(休眠、斷電等),這種對稱加密密鑰已經被留在了磁盤上,它還是可以使用的。
我利用這種缺陷寫了一個解密工具並提供給受害者一種解密方法,但是受害者需要捕捉到了NanoLocker加密時的密鑰文件的副本或者在加密過程終端時從磁盤中獲取了密鑰文件。
執行細節
狀態跟蹤
NanoLocker在磁盤中創建了一個文件用於追蹤它的狀態、密鑰信息和文件目標列表。分析樣本中的這個文件名為%LOCALAPPDATA%\lansrv.ini,並且這個文件被創建成隱藏屬性。
該文件的第一個字節被用來保存一個整數-表示當前的執行狀態。隨著惡意軟體各種功能的進展,狀態追蹤值增加。追蹤字節有三種可能的狀態:
• 初始化和枚舉-對稱密碼已經被創建並以明文格式[44 bytes]儲存在起始偏移 0×02 的追蹤文件中。所有本地映射的驅動被列舉給了匹配目標和擴展的文件名,這些文件名都被寫入了追蹤文件。
• 加密-一旦到檢測到狀態成為應有狀態,追蹤文件中列出的文件就開始加密。
• 加密完成-所有的目標文件都已經被加密了。一旦到達了狀態3,原始對稱密鑰都會被比特幣付款地址和MK替換。此時,NanoLocker把初始屏幕顯示給了用戶。
在初始化過程中,生成AES密鑰,密鑰被寫入文件切狀態為狀態1,如下面來自解包binary的偽代碼所示:
一旦進入狀態2,直到所有被發現的文件都被加密,跟蹤文件(lansrv.ini)持有了導出的密鑰數據,這些數據在上面的調用中被寫入了WriteFile。此時捕獲的追蹤文件會揭示狀態標誌、密鑰數據和目標文件的列表:
最後,一旦目標文件都已經被加密,追蹤文件中的狀態變為3.此時密鑰數據會被跟著base64加密和被對稱密鑰加密的公鑰(MK)的比特幣交易地址替換:
通信
勒索軟體威脅的一個共同之處就在於通過網絡向控制命令服務器的攻擊者傳輸密鑰內容。NanoLocker也是如此,它需要一個簡單的方法進行網絡通信-它只向C2服務器外發出2個ICMP包。
一旦惡意軟體在內存中解壓,它就會開始一些初始化步驟(丟棄自身副本到磁盤,設置一個持久化機制等)。下一步是提交一個ping到控制服務器中。這些ping包可能在乍一看是典型的回送請求數據包,但是下面的代碼顯示,還發送了其他信息:
正如我們上面看到的,調用IcmpSendEcho使用勒索及帶有回顯請求的軟體比特幣地址作為數據進行提交。我們可以看出如果我們捕獲正在從受感染的系統中發出的數據包的動作:
一旦加密過程完成,進入狀態3,第二個ICMP包被NanoLocker發出。這個包和第一個相同,使用了ICMP消息的數據字節發送比特幣地址,在狀態2時增加文件總數。
解密工具
如上所述,如果追蹤文件在狀態1或者狀態2被捕捉到(通過加密過程中斷或其他方式),對稱密鑰可以被提取並應用於解密已經被加密的任何文件。
對於大多數獨立的Windows系統,在狀態1或狀態2捕捉這個追蹤文件操作基本不可行。這是一種簡單的文件數相對較少且系統加密速度慢的方法。但是在大型分佈式文件系統中,比如現代企業的網絡環境,它可能在加密階段(狀態2前)能夠檢測到NanoLocker加密文件。這樣的情況可能更常見,因為加密數十倍、數百倍甚至上千倍的文件需要更多的時間。為更大的加密系統加密數量如此多的文件需要花費幾小時或者幾天的功夫。
工具的使用方法如下:
NanoLocker_Decryptor.exe   這個解密工具會檢查加密的源文件和提供的追蹤文件來驗證兩個必要條件:
追蹤文件在狀態1或狀態2;加密的源文件是使用追蹤文件中的密鑰來加密的。多虧了NanoLocker的創造者做出的另一個設計選擇,我們才可以進行第二步。在每個加密文件中都有一個報頭,它是原始文件的真實加密字節前綴。這個報頭包含一個可以被用於驗證我們嘗試解密的密鑰和用來加密的密鑰相同的校驗值。
源代碼在github上。預編譯的版本可以在這裡找到。對於預編譯版本,你需要32bit Visual C++ 2013,如果你沒有你需要安裝它,Microsoft版本。
最終評論
我避免了描述拆包和反彙編這個勒索軟體的細節。在後續文章中,我會詳細說明拆包的方式。不過值得一提的是,使用Volatility能夠從內容中非常容易的找到這種特殊惡意軟體的解壓備份。
首先使用pslist確定進程id:
然後使用fix-up option(-x)把進程dump給磁盤:
最後加載到你最喜歡的反彙編中:
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2024-4-26 08:03 , Processed in 0.060380 second(s), 19 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?