<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    新出現的勒索軟件被曝有強大的反分析功能

    一顆小胡椒2022-04-28 13:39:41

    Pandora勒索軟件針對Windows用戶發起攻擊,且會對受感染設備上的大多數文件加密。

    新出現的 Pandora 勒索軟件已經被評級為中等攻擊的勒索軟件,它會竊取受害者設備上的數據并對受害者的文件進行加密,如果受害者不支付贖金,便公布竊取的數據,這是典型的二重勒索。Pandora 勒索軟件是否是一種新興的惡意軟件集成了目前勒索軟件使用的所有技術?我們會在本文討論:

    1.該勒索軟件如何試圖逃避檢測;

    2.用于阻礙分析師的許多混淆和反分析技術;

    3.如何使用多線程來加速處理;

    4.如何處理文件系統;

    5.哪些文件被加密。

     Pandora組織

    Pandora 勒索軟件組織早在 2022 年 2 月中旬就出現了,并以企業網絡為目標以獲取經濟利益。該組織在最近宣布他們從汽車行業的一家國際供應商那里獲得了數據后,很快就被大眾熟知。就在兩周前,據報道,另一家汽車供應商也受到了未知勒索軟件的攻擊,導致世界上最大的汽車制造商之一暫停了工廠運營。攻擊組織使用雙重勒索的方法來增加對受害者的壓力。這意味著他們不僅加密了受害者的文件,而且還將它們外泄,并威脅受害者盡快支付贖金,否則就公布數據。

    Pandora組織在暗網(TOR 網絡)中有一個泄密網站,他們在那里公開泄漏數據,并導致相關用戶被攻擊。目前,有三家公司受到了這樣的攻擊,一家美國房地產中介公司、一家日本科技公司和一家美國律師事務所。

    Pandora的泄密網站

     惡意軟件分析

    研究人員使用SHA-256哈希:

    5b56c5d86347e164c6e571c86dbf5b1535eae6b979fede6ed66b01e79ea33b7b分析了示例,它是一個64位Windows PE文件。

    這是勒索軟件本身,所以當這個文件在攻擊中被執行時,攻擊者可能已經大量訪問了受害者的網絡,并且他們已經竊取了他們用來勒索的數據。此樣本示例不具備與攻擊者進行通信的能力。它的唯一目的是查找和加密文件。然而,它以一種有趣而復雜的方式實現了這一點。

    接下來,研究人員將討論惡意軟件的這些有趣的方面。

    攻擊流程

    攻擊步驟如下:

    請注意,括號內的“T”后面的數字是指MITRE ATT&CK技術ID。

    1.解壓縮:樣本是用修改過的UPX打包程序(T1027.002)打包的,所以第一步是將真實內容解壓縮到內存并跳轉。

    2.互斥鎖:它創建了一個名為 ThisIsMutexa 的互斥鎖。

    3.禁用安全功能:它可以刪除 Windows 卷影副本 (T1490)、繞過 AMSI (T1562.001) 和禁用事件日志記錄 (T1562.002)。稍后將詳細介紹這些功能。

    4.收集系統信息:GetSystemInfo() 用于收集本地系統的信息。

    5.加載硬編碼的公鑰:惡意軟件樣本中的公鑰是硬編碼的,目的是進行加密。

    6.在注冊表中存儲私鑰和公鑰:生成一個私鑰,硬編碼的公鑰和新生成的私鑰都存儲在注冊表中(T1112)。

    7.搜索驅動程序:它搜索系統上未安裝的驅動程序,然后進行安裝,最后加密(T1005)。

    8.設置多線程:此示例使用工作線程來進行加密。

    9.枚舉文件系統:工作線程開始枚舉已識別驅動程序的文件系統(T1083)。

    10.刪除贖金通知:贖金通知被釋放在Restore_My_Files.txt中的每個文件夾中。

    11.檢查文件名黑名單:對于每個文件和文件夾,檢查文件/文件夾名稱的黑名單。如果文件/文件夾在黑名單上,則不會被加密。

    12.檢查文件擴展名黑名單:根據文件擴展名黑名單對每個文件進行檢查,如果擴展名在列表中,則不會被加密。

    13.解鎖文件:如果文件被一個正在運行的進程鎖定,示例將嘗試使用Windows Restart Manager(T1489)解鎖它。

    14.加密文件:工作線程將加密(T1486)文件并將其寫回原始文件。

    15.重命名文件:加密完成后,文件被重命名為[original_filename].pandora。

     防逆向工程技術

    Pandora 勒索軟件最重要的功能就是廣泛使用了防逆向工程技術。這對于惡意軟件來說并不是什么新鮮事,但 Pandora 在該功能上投入了很多。

     利用壓縮技術

    Pandora 使用經過改進的 UPX 壓縮程序進行壓縮,使用 Detect It Easy 可以輕松檢測到UPX。

    Detect It Easy 可以識別 UPX

    但是,標準的 UPX 解壓縮程序不起作用,這表明開發者對打包程序進行了修改,以確保不能使用現成的工具對其進行解壓縮。

    解壓縮仍然相對容易,只需在調試器中從入口點向下滾動到代碼末尾即可。代碼將以一個跳轉結束。這是典型的壓縮程序,在將原始代碼解壓縮到內存中的某個位置后,它們會跳轉到那里,而不是從主函數返回。

    解壓縮結束時的跳轉

    通過在末尾跳轉處設置斷點,我們可以從內存中轉儲 PE 文件,包括解壓后的代碼。使用轉儲文件,我們也可以靜態分析勒索軟件。

    Control-Flow Flattening

    JS代碼混淆加密時,常用到“平展控制流”,英文稱為:control flow flattening,即:控制流品平坦化。這是一種混淆技術,可以通過修改控制流來隱藏程序的結構。在最簡單的情況下,它將每個函數的正常控制流替換為狀態機,因此分析師很難快速了解每個函數的工作原理。Pandora 使用更復雜的平展控制流,使控制流更加復雜。

    main() 概況

    上圖顯示了解壓縮代碼中主函數的圖形視圖。我們可以看到它不像普通函數的控制流。它看起來像一個巨大的 switch-case 語句,它是實現狀態機的平展控制流的結果。然而,在 Pandora 的案例中,大多數基本塊根本沒有連接。這是不透明操作的結果。基本塊之間的大多數跳轉都是在運行時計算的,如下圖所示。

    在運行時計算 jmp 的地址

    第一個cmp指令檢查狀態機的當前狀態,并根據狀態機的當前狀態計算基本塊末尾jmp的rdx寄存器的值。由于這種靜態分析工具,例如 IDA Pro 無法理解控制流將在何處繼續,因此無法連接圖 4 中的基本塊。

    模擬可以在一定程度上用于理解控制流,但調試必須廣泛應用以確定執行流的方式。

    字符串編碼

    一些字符串可以在解壓后的二進制文件中找到,但大部分來自靜態鏈接庫。但是,可以幫助我們理解代碼中發生的事情的字符串是經過編碼的。下圖顯示了如何調用其中一個字符串解密函數。

    調用一個字符串解密函數

    解密函數的地址(通過rax調用)和編碼后的字符串的地址都是在運行時計算的。這樣,當靜態地查看這段代碼時,就無法知道其中發生了什么。右邊的注釋是一個IDAPython腳本的結果,該腳本使用flare-emu項目來模擬代碼并計算函數調用的地址,以及模擬解密函數。這個解決方案在恢復二進制中編碼的字符串方面非常有效。解密函數實現異或解碼。解密密鑰與每個編碼字符串一起存儲。此外,該惡意軟件還使用了多種解密功能。研究人員確定了用于字符串解碼的14個獨立函數。

    混淆函數調用

    上一節已經提到,大多數函數調用不是調用直接地址,而是調用寄存程序。它的值是在運行時計算的。

    如果我們以上圖為例,rax 中的地址計算如下:

    rax = *(*address_table_base + 638300900) - 1426601284)

    如上所述,這是使用模擬解決的。通過模擬函數的執行,我們可以在CALL指令中計算寄存器的值。這樣就可以大規模地解析函數調用。

     Windows API 調用混淆

    與其他惡意軟件相反,Windows API 函數名稱沒有經過編碼,而是使用了另一種混淆技術來隱藏它們的用法。如圖 7 所示,Windows API 函數組織在一個跳轉表中。在每個地址都有一個重定向到庫函數的 jmp 指令。

    Windows API 函數跳轉表

    解析 API 函數是在解析函數調用的相同flare-emu IDAPython 腳本中實現的。每當一個CALL [register]指向jmp指令時,而不是函數的開頭,研究人員就假定它指向API函數跳轉表。因此,研究人員使用跳轉操作數的名稱,并使用它為函數調用生成注釋。

    在模擬腳本中恢復 API 函數名稱

    腳本恢復到這是一個對OpenMutexA的函數調用

     多線程

    Pandora使用多個線程來加速加密進程。為此,它使用了Windows的IO完成端口概念。這允許線程等待一個文件/網絡句柄出現在IO完成端口隊列中,并處理它們。Pandora使用無關聯的IO完成端口,并通過它使用OVERLAPPED結構發送任何數據。在這種情況下,驅動器和文件路徑將被傳遞給線程來處理(枚舉或加密)它們。IO完成端口是使用CreateIOCompletionPort() API函數設置的,如下圖所示。通過傳遞INVALID_HANDLE_VALUE作為第一個參數(rcx = 0xffffffffffffffffff)和NULL作為第二個參數(rdx = 0x0),一個未關聯的IO完成端口被創建。第四個參數是NumberOfConcurrentThreads,它被設置為4 (r9 = 0x4),定義了最多允許4個線程使用這個IO完成端口。

    初始化 IO 完成端口

    在此之后,主函數將啟動新線程。線程之間的通信是使用 GetQueuedCompletionStatus() 和 PostQueuedCompletionStatus API 函數完成的。下圖顯示了如何將發現的文件(pydisas.py)放入帶有PostQueuedCompletionStatus()的隊列中。另一個線程將使用GetQueuedCompletionStatus()來執行這個任務,因為它接收到一個文件的完整路徑,所以它將對該文件進行加密和重命名。

    將文件路徑發布到 IO 完成端口的隊列

     重啟管理程序

    重新啟動管理程序是Windows 的一個功能,可減少安裝和更新期間所需的重新啟動次數。重新啟動的原因通常是因為需要更新的文件被正在運行的進程鎖定。Restart Manager 可以保存狀態并停止鎖定進程以解鎖目標文件。一旦更新完成,它可以再次恢復鎖定進程。Pandora 使用重啟管理程序來確保即使是當前被鎖定的文件也會被加密。對于每個文件,執行以下進程:

    1.使用 RmStartSession() 創建重啟管理程序會話;

    2.使用 RmRegisterResource() 將目標文件注冊為資源;

    3.使用 RmGetList() 檢查目標文件是否被任何進程鎖定;

    4.如果是,終止鎖定進程;

    5.使用 RmEndSession() 結束重啟管理程序會話;

     加密

    在文件被加密之前,Pandora 會執行以下檢查以確保它不會導致設備無法運行。根據以下文件和文件夾名稱的黑名單檢查每個目標文件。如果目標文件在列表中,Pandora 將不會對其進行加密。

    將每個目標文件與下面的文件擴展名列表進行比較。如果文件的擴展名在列表中,該文件將不會被加密:


    .hta .exe .dll .cpl .ini .cab .cur .drv .hlp .icl .icns .ico .idx .sys .spl .ocx
    

    如下圖所示,贖金通知承諾使用 RSA-2048 加密。惡意軟件附帶硬編碼的 RSA-2048 公鑰證實了這一說法。

    贖金通知

    硬編碼的 RSA 公鑰

    同時會生成一個私鑰,這兩個私鑰都存儲在HKCU\SOFTWARE\[private,Public]的注冊表中。

    密碼密鑰存儲在注冊表中

    解壓后的二進制文件包含靜態鏈接的 Mbed TLS 加密庫。

    一旦文件在內存中被加密,它就會被寫入磁盤。之后,該文件被重命名為以 .pandora 結尾的擴展名。

    禁用安全功能

    Pandora 勒索軟件能夠禁用目標設備上的一些安全措施。

    刪除卷影副本

    與許多其他勒索軟件一樣,Pandora 刪除了 Windows 卷影副本,這可以幫助操作員將設備恢復到感染前的狀態。下圖顯示了使用 runtime(T1059) 中的參數調用 ShellExecuteW()。我們可以看到它使用了 vssadmin.exe。

    使用 ShellExecuteW 刪除卷影副本

    AMSI繞過

    AMSI (anti - ware Scan Interface)允許安全產品更好地與Windows集成,能夠掃描各種不同的對象,如PowerShell腳本、JavaScript、VBScript等。通過繞過AMSI,惡意軟件可以繞過運行的安全機制。

    Pandora 通過修復內存中 amsi.dll 中的 AmsiScanBuffer() 函數來繞過 AMSI。

    禁用事件日志

    與繞過 AMSI 類似,Pandora 通過修復 Windows 內核 (ntdll.dll) 中的 EtwEventWrite() 函數來禁用 Windows 事件跟蹤 (ETW) 功能。下圖顯示函數的第一個字節被替換為 0xC3,即 ret 指令。這使得EtwEventWrite()函數無用,因為在每次調用之后,它會立即返回,而不會記錄事件。

    修復 EtwEventWrite 函數以立即返回

     總結

    新出現的Pandora 勒索軟件包含最先進的勒索軟件功能。通過各種混淆方法來緩解分析,另外攻擊者還注意解鎖文件以保證最大的加密覆蓋率,同時仍然允許設備運行。除此之外,研發人員還配置了很多繞過安全產品的功能。目前沒有證據表明 Pandora 以勒索軟件即服務 (RaaS) 的形式運行,但它們很可能正朝著這個方向發展。當前的攻擊和泄漏可能是他們在博取眼球的一種方式,如果他們以后采用 RaaS 模型,他們可以利用這一點。

    函數調用pandora
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Pandora勒索軟件針對Windows用戶發起攻擊,且會對受感染設備上的大多數文件加密。
    概述在windows系統上,涉及到內核對象的功能函數,都需要從應用層權限轉換到內核層權限,然后再執行想要的內核函數,最終將函數結果返回給應用層。本文就是用OpenProcess函數來觀察函數從應用層到內核層的整體調用流程。OpenProcess函數,根據指定的進程ID,返回進程句柄。NTSTATUS Status; //保存函數執行狀態。OBJECT_ATTRIBUTES Obja; //待打開對象的對象屬性。HANDLE Handle; //存儲打開的句柄。CLIENT_ID ClientId; //進程、線程ID. dwDesiredAccess, //預打開進程并獲取對應的權限。ObjectNamePresent = ARGUMENT_PRESENT ; //判斷對象名稱是否為空
    關于堆棧ShellCode操作:基礎理論002-利用fs寄存器尋找當前程序dll的入口:從動態運行的程序中定位所需dll003-尋找大兵LoadLibraryA:從定位到的dll中尋找所需函數地址004-被截斷的shellCode:加解密,解決shellCode的零字截斷問題
    反射式DLL注入實現
    2022-05-13 15:59:21
    反射式dll注入與常規dll注入類似,而不同的地方在于反射式dll注入技術自己實現了一個reflective loader()函數來代替LoadLibaryA()函數去加載dll,示意圖如下圖所示。藍色的線表示與用常規dll注入相同的步驟,紅框中的是reflective loader()函數行為,也是下面重點描述的地方。
    該漏洞發生的位置是在驅動文件Win32k.sys中的xxxHandleMenuMessage函數,產生的原因是沒有對該函數中調用的xxxMNFindWindowFromPoint函數的返回值進行合法性驗證,直接將其作為參數傳遞給后面的xxxSendMessage函數調用,從而造成了提權漏洞。
    Win32k組件最初的設計和編寫是完全建立的用戶層上的,但是微軟在 Windows NT 4.0 的改變中將 Win32k.sys 作為改變的一部分而引入,用以提升圖形繪制性能并減少 Windows 應用程序的內存需求。窗口管理器(User)和圖形設備接口(GDI)在極大程度上被移出客戶端/服務端運行時子系統(CSRSS)并被落實在它自身的一個內核模塊中。
    結構&拷貝與引用
    2023-05-10 11:27:04
    結構&拷貝與引用開始之前,我們約定數據塊也叫插槽,也就是storage。storage是永久存儲在區塊鏈上的地方。Stack 的最大深度為 1024 個元素,支持 256 位的字長。結構當定義局部變量時,它存儲在內存中,然后壓入堆棧以執行。1024棧深簡介EVM不是寄存器機而是堆棧機,所以所有的計算都在稱為堆棧的數據區域上進行。1024 是一個非常保守的值,以盡可能安全EVM 的設計方式往往會使更大的堆棧變得無用。EVM 只能訪問堆棧中前16個slot。
    可是當我們開啟了smap保護之后,內核態就沒有辦法訪問用戶態的數據,此時當我們再hijack tty_operation到我們的用戶態時,我們的kernel就會panic,更別說劫持執行流到用戶態上執行rop了。當我們調用msgsnd時,在linux內核中會調用do_msgsnd。
    本篇針對該JS中的字符串混淆進行還原。字符串是如何混淆的解密方式想要對字符串反混淆就要先分析該樣本是如何對字符串進行混淆的。而處于全局作用域的_0x1f1a68實際上也是對另一個函數的調用。
    當線程從等待狀態蘇醒后,會自動檢測自己得APC隊列中是否存在APC過程。所以只需要將目標進程的線程的APC隊列里面添加APC過程,當然為了提高命中率可以向進程的所有線程中添加APC過程。然后促使線程從休眠中恢復就可以實現APC注入。往線程APC隊列添加APC,系統會產生一個軟中斷。第二個參數表示插入APC的線程句柄,要求線程句柄必須包含THREAD_SET_CONTEXT訪問權限。第三個參數表示傳遞給執行函數的參數。如果直接傳入shellcode不設置第三個函數,可以直接執行shellcode。
    一顆小胡椒
    暫無描述
      亚洲 欧美 自拍 唯美 另类