本文將深入探討一些活躍的勒索軟體家族,例如Mallox或Epsilon Gang的加密程式,揭示它們偶爾呈現的獨特現象,以及它們在途中保持的共同之處。每個家族將代表當前勒索軟體格局的不同部分,展示多年來它是如何多樣化的。
多年來出現了數百種不同的勒索軟體家族,最初攻擊者以電子郵件為主要感染途徑,目的在於達成大規模影響。後來,勒索軟體變得更加複雜和有針對性,發動並利用RaaS型式,並在原本的基礎上添加了雙重勒索的元素。
這篇文章將深入探討一些活躍的勒索軟體家族,例如Mallox或Epsilon Gang的加密程式,揭示它們偶爾呈現的獨特現象,以及它們在途中保持的共同之處。每個家族將代表當前勒索軟體格局的不同部分,展示多年來它是如何多樣化的。
近乎完美的勒索軟體
本文將深入探討一個最近被識別的勒索軟體家族「QazLocker」。勒索軟體就像一般的惡意軟體一樣是多樣的,包括進階威脅以及那些具有弱點的威脅,提供了恢復的機會。在每個案例中,將探索攻擊者的作法、威脅行為者所利用的工具,以及他們實施的加密方法。
大多數勒索軟體家族會以一種讓檔案無法在沒有加密金鑰的情況下恢復的方式進行加密,這是由於已知的破解密碼算法的限制。然而,偶爾會出現新的家族,因為攻擊還沒完備,所以可以被破解。
在所調查的QazLocker案例中,威脅行為者主要使用現成、可立即使用的破解工具進行密碼轉儲和埠掃描。
從首次犯罪跡象到他們嘗試啟動的「幾乎完美」勒索軟體有效負載之間,有四天的停留時間。
QazLocker戰術及作法分析
最初,犯罪者展示一系列旨在提升權限並在本地網路中擴散的工具。值得注意的是,使用了幾個知名的破解工具和所謂的免費管理工具,這些工具被誤用於偵察和橫向移動,包括:
‧ Mimikatz
‧ Advanced Port Scanner
‧ Network Share Scanner(NS.exe)
‧ NirSoft MessenPass(mspass.exe)
‧ NirSoft Protected Storage Pass View(pspv.exe)
‧ NirSoft Password Sniffer(SniffPass.exe)
‧ NirSoft Wireless Key View
這些工具主要位於「C:\Users\Desktop\Loki[tools]\」目錄或下載檔案夾中。同時還存在一個名為「!start.cmd」的批次腳本,該腳本執行了如圖1所示的Mimikatz命令以轉儲權杖和憑證。
進一步觀察到的情況包括嘗試安裝Traffmonetizer PUA應用程式,以及從桌面啟動可疑的「svchost.exe」二進位檔案。
在攻擊的第四天,威脅行為者使用了勒索軟體有效負載「C:\PROGRA2\COMMON1\anti.exe」作為一個排程任務。
需要注意的是,儘管這些惡意程式被Acronis Cyber Protect阻擋了,但攻擊者仍持續不斷地嘗試。在接下來的幾周中,他們多次試圖重新執行這些程式。經過幾個星期的無效加密嘗試後,威脅行為者嘗試部署RDP暴力破解工具NLBrute,可能是為了內部擴散或利用受影響的主機攻擊其他公開訪問的RDP服務。這一行動還指向了基於RDP當成初始攻擊方式的可能性(圖2)。為了評估其可能造成的損害,我們取得了有效負載的副本,在沒有任何保護措施的情況下執行它,並進行了深入分析。
勒索軟體二進化分析
主要的勒索軟體有效負載是一個經過UPX壓縮的AutoIt編譯腳本,這是一種常用於壓縮可執行檔案的工具,尤其是在AutoIt的情況下。當執行有效負載時,它執行一系列命令,其中大部分是典型的勒索軟體威脅。所有的活動,包括加密(稍後將進一步說明),都是純粹透過AutoIt的腳本功能來實現的。它會檢查網路配置,創建新的排程任務,刪除影子副本,禁用Windows自動修復,並將「BootStatusPolicy」設置為「IgnoreAllFailures」。每個命令窗口都會將其標題設置為一個隨機數字。接下來,加密器會將自身複製到「C:\Program Files (x86)\Common Files」,並將加密檔案的日誌保存為同一檔案夾中的「log.txt」(圖3)。
當加密過程完成後,勒索軟體會在記事本中顯示一份贖金通知,同時在GUI窗口中顯示已加密檔案的列表(圖4)。存在一個名為「Key」的輸入欄位,暗示可能具有可恢復的能力,因為需要驗證其有效性。加密後的檔案保留其原始擴展名,在其前面加上「.encrypted」字串,例如對於名為「test.exe」的檔案,則會變為「test.encrypted.exe」。
勒索通知字條
在記事本中顯示的贖金通知相當簡單,其提供了多個電子郵件地址以進行溝通,還有與給定電腦相關的鎖定識別碼(圖5)。通知中沒有任何連結到暗網站或是任何羞辱牆(Wall of Shame)的跡象,也沒有加密貨幣錢包,同時也沒有顯示攻擊者可能要求的贖金金額。
AutoIt程式解析
AutoIt是一款廣受許多IT專業人士歡迎的自動化工具,其具有極為靈活的腳本撰寫功能,可將腳本編譯並嵌入可執行檔案,便於移植。對於反編譯和解析AutoIt二進位檔案,有多種選項可供選擇。然而,根據作者的技能水準,我們可能會面臨須拆解額外的混淆層。在初步反編譯之後,發現腳本中使用了十六進位編碼的AutoIt代碼,如圖6所示。
解混後,將得到更易於理解的腳本輸出。這個腳本的核心功能是利用Windows API函數調用來實現目標。無論是基本的檔案操作還是加密,都使用了來自系統庫(例如kernel32.dll和advapi32.dll)的函數(圖7)。
網路遺跡
儘管攻擊者在贖金通知中未留下任何要求的跡象,但可觀察到該可執行檔試圖連接至「blockchain.info」以查詢比特幣(BTC)的當前價值,分別為1,000美元或200美元,視主機是否加入域而定。若連接成功,則將所得值以文本形式寫入至「C:\Program Files (x86)\Common Files」目錄下的檔案中。
然而,此檔案和比特幣價值均未在其他地方使用。這可能顯示該勒索軟體是基於現有代碼進行修改,並保留某些功能,而非完全刪除。
密鑰生成缺陷
現代勒索軟體以其對用於加密的密碼算法實施的「足夠安全」而聞名。網路罪犯通常將一個快速的對稱算法(例如AES、ChaCha20)與一個明顯慢得多但安全性更高的非對稱算法(例如RSA、ECDSA)相結合,後者保護了前者生成的密鑰。最終結果的安全性,不僅取決於所選擇的算法,還取決於實際的實施方式。即使世界上最安全的鎖,如果鑰匙被放在門墊下,也是毫無用處的。
在詳細分析解混的AutoIt腳本時得出了結論,其實施可能也存在缺陷。發現贖金通知中的「LOCK-ID」被用作密鑰生成算法的種子。這個「LOCK-ID」是從「ipconfig /all」命令的輸出中取得的第一個(頂部)MAC位址生成的,並移除分隔符號,然後以十六進位形式附加當前月份,如圖8所示。
LOCK-ID的最後五個位元組將用於金鑰衍生,它們將使用RC4進行加密。RC4的密碼設置為字符串「Kernel32.dll」的MD5雜湊值——輸出的密文也是五個位元組長度。接著,計算這五個位元組的MD5雜湊值,並將結果用於Windows API中的「CryptDeriveKey」函數,以衍生AES 256位金鑰。生成的金鑰將與Windows函數「CryptEncrypt」一起使用,以AES密碼在CBC模式下加密檔案,並將初始向量(IV)設置為零(圖9)。
因此,要推導解密金鑰,需要使用LOCK-ID,或者是加密執行的月份以及電腦的MAC位址。
構建解密工具
如上所示,案例中的加密方案由於對本來安全的加密算法實施的弱點而容易被逆轉。為了還原加密檔案,因此創建一個Python的概念驗證解密腳本,如圖10、圖11所示。
結語
鑑於主要勒索軟體組織的聲名狼藉,企業可能會認為解密檔案的可能性是徒勞無功的。儘管大多數情況下上述說法是正確的,但本次的分析表明了在外面的網路世界仍然存在較不複雜的威脅,令人鼓舞的是,可能可以在不屈服於贖金要求的情況下實現檔案恢復。不幸的是,勒索軟體格局多樣,充滿了能夠造成更大損害的威脅行為者。
<本文作者:王榮信現為Acronis大中華區首席技術顧問。專精外對內之資安技術防護措施、內對外之機敏資料外洩保護、資安事件關連分析及進階勒索軟體防護,透過企業資訊安全風險評估及框架,規劃符合需求的安全策略及架構。曾輔導多個大金融機構建立資料外洩防護架構、進階惡意程式防護架構及ATM與伺服器系統防駭解決方案。>