虛假軟體更新濫用NetSupport遠程訪問工具
過去幾個月,FireEye跟蹤了一場利用受感染網站傳播虛假更新的野外攻擊活動。在某些情況下,payload是NetSupport Manager RAT(遠程訪問工具)。 NetSupport Manager是一種商用RAT,可供系統管理員合法使用,用於遠程訪問客戶端計算機。然而,惡意攻擊者在受害者不知情的情況下將其安裝到受害者系統,濫用此程序來獲得未授權訪問他們機器的行為。本博客介紹了在payload為NetSupport RAT的情況下,對其使用的JavaScript和相關組件的詳細分析。
一、感染向量
這些攻擊行動背後的運營者使用受感染的網站來傳播偽裝成Adobe Flash,Chrome和FireFox更新的偽更新。當用戶訪問受感染的網站時,會下載惡意JavaScript文件,大多來自DropBox鏈接。在傳送payload之前,JavaScript將基本的系統信息發送至伺服器。在接收到來自伺服器的進一步命令後,它會執行最終的JavaScript來傳送最終的payload。在我們的例子中,傳送payload的JavaScript被命名為Update.js,並在wscript.exe的幫助下從%AppData%中執行。圖1顯示了感染流程。
圖1: 感染流程
二、深度分析JavaScript
初始JavaScript文件包含多層混淆。像其他惡意腳本一樣,第一層具有混淆,創建並執行第二層作為新函數。JavaScript的第二層包含dec函數,用於解密和執行更多JavaScript代碼。圖2顯示了第二層的快照。
圖2: 初始 JavaScript文件的第二層
在第二個JavaScript文件中,惡意軟體作者使用一種棘手的方法使逆向工程師的分析變得更加困難。作者使用調用者和被調用者函數代碼來獲取解密密鑰。在正常的JavaScript分析過程中,如果分析人員發現任何混淆的腳本,分析人員會嘗試去混淆或美化腳本以進行分析。JavaScript美化工具通常會添加換行符和製表符,以使腳本代碼看起來更好,更易於分析。這些工具還嘗試重命名局部變數並從腳本中刪除未引用的變數和代碼,這有助於僅分析核心代碼。
但在這種情況下,由於惡意軟體使用調用者函數和被調用函數代碼來派生密鑰,因此如果分析人員添加或刪除第一層或第二層腳本中的任何內容,則腳本將無法獲得密鑰而終止於例外。圖3中的代碼片段展示了這個技巧。
圖3: JavaScript中的反分析技巧
該代碼作為函數解密並執行JavaScript代碼。此解密函數包含啟動網路連接的代碼。在解碼函數中,命令和控制(C2)URL以及名為tid的值在腳本中被硬編碼並被一些編碼函數保護。
與伺服器的首次通信時,惡意軟體以編碼格式發送系統的tid值和當前日期,並等待來自伺服器的響應。它解碼伺服器響應並作為一個函數執行響應,如圖4所示。
圖4: 首次Server通信及響應
來自伺服器的響應是惡意軟體名為step2的函數執行的JavaScript代碼。
step2函數使用WScript.Network和Windows Management Instrumentation(WMI)來收集以下系統信息,然後將其編碼並發送到伺服器:
Architecture, ComputerName, UserName, Processors, OS, Domain, Manufacturer, Model, BIOS_Version, AntiSpywareProduct, AntiVirusProduct, MACAddress, Keyboard, PointingDevice, DisplayControllerConfiguration, ProcessList;
將系統信息發送給服務之後,來自伺服器的響應包含兩部分:content2和content3。
腳本(step2函數)解碼這兩部分。解碼後的content3包含名為step3的函數,如圖5所示。
圖5: 解密和執行響應step3
step3函數包含將解碼後的content2作為Update.js寫入%temp%目錄的代碼。Update.js包含下載和執行最終payload的代碼。step3函數還將結果數據(如runFileResult和_tempFilePath)發送到伺服器,如圖6所示。
圖6: 釋放和執行Update.js的腳本
Update.js文件也包含多層混淆。解碼後,JavaScript包含用於釋放%AppData%中多個文件的代碼,包括7zip獨立可執行文件(7za.exe),密碼保護壓縮文件(Loglist.rtf)和批處理腳本(Upd.cmd)。我們稍後會詳細討論這些組件。
JavaScript使用PowerShell命令從伺服器下載文件。它將屬性的執行策略設置為bypass,並將windows -style設置為hide,以便使自己對終端用戶隱藏。
三、攻擊中的組件
圖7顯示了我們觀察到惡意軟體作者更新腳本內容的惡意伺服器的目錄。
圖7: 惡意伺服器目錄
· 7za.exe:7zip獨立執行程序
· LogList.rtf:密碼保護的壓縮文件
· Upd.cmd:安裝NetSupport客戶端的批處理腳本
· Downloads.txt:IP列表 (可能是感染系統的)
· Get.php:下載LogList.rtf
(一)Upd.cmd
該文件是批處理腳本,用於提取壓縮文件並在系統上安裝遠程控制工具,該腳本使用變數替換方法進行混淆。在我們的分析過程中該文件由惡意軟體定期更新。
在去混淆之後,我們可以在腳本中看到批處理命令(圖8)。
圖8: 去混淆的Upd.cmd腳本
該腳本執行以下任務:
1.使用腳本中的密碼及7zip提取壓縮文件。
2.解壓後,刪除下載的壓縮文件(loglist.rtf)。
3.禁用Windows錯誤報告和應用程序兼容性。
4.將遠程控制客戶端可執行文件添加到防火牆允許的程序列表中。
5.運行遠程控制工具client32.exe。
6.添加名為ManifestStore的註冊表項或將快捷方式文件下載到啟動文件夾。
7.使用屬性隱藏文件。
8.刪除所有的組件(7zip,腳本,檔案文件)。
注意:在分析腳本時,我們在其中發現了一些拼寫錯誤(圖9)。是的,惡意軟體作者也犯了錯誤。該腳本可能處於測試階段,在後續更高版本中,作者刪除了這些拼寫錯誤。
圖9: 註冊表項
(二)痕迹清理
如前所述,該腳本包含用於從受害者系統中刪除攻擊中所使用部件的代碼。在監視伺服器的同時,我們還觀察到與該代碼相關的腳本中的一些變化,如圖10所示。
圖10: 痕迹清理命令
其中一個變體中突出顯示的命令表明它可能會在攻擊中釋放或使用此文件。該文件可能是一個誘餌文檔。
(三)持久性機制
在分析過程中,我們觀察到該攻擊的兩種變體具有不同的持久性機制。
在第一個變體中,惡意軟體作者使用RUN註冊表項來保持系統中的持久性。
圖11: 下載快捷方式文件
快捷方式文件的目標命令指向已放入%AppData%的遠程應用程序client32.exe,這樣在系統啟動時就可以啟動該程序。
(四)LogList.rtf
儘管文件擴展名是.rtf,但該文件實際上是一個7zip壓縮文件。此壓縮文件受密碼保護並包含NetSupport Manager RAT。腳本upd.cmd包含提取壓縮文件的密碼。
NetSupport工具提供的主要功能包括:
· 遠程桌面
· 文件傳輸
· 遠程目錄和系統信息
· 在客戶機中啟動程序
· 地理位置
(五)Downloads.txt
該文件包含一個IP地址列表,這可能是被入侵的系統。它具有IP和User-agent。文件中的IP地址屬於不同的地區,主要是美國,德國和荷蘭。
四、總結
RAT通常被系統管理員廣泛用於合法目的。但是,由於它們是合法應用程序並且易於獲得,因此惡意軟體作者可以輕鬆濫用它們,有時也可以避免用戶懷疑。
FireEye HX Endpoint平台在攻擊周期的初始階段成功檢測到此攻擊。
IoC
註冊表項
HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionRun : ManifestStore
HKCUSoftwareSeXKEx
文件
%AppData%ManifestStoreclient32.exe
%AppData%ManifestStoreclient32.ini
%AppData%ManifestStoreHTCTL32.DLL
%AppData%ManifestStoremsvcr100.dll
%AppData%ManifestStore
skbfltr.inf
%AppData%ManifestStoreNSM.ini
%AppData%ManifestStoreNSM.LIC
%AppData%ManifestStore
sm_vpro.ini
%AppData%ManifestStorepcicapi.dll
%AppData%ManifestStorePCICHEK.DLL
%AppData%ManifestStorePCICL32.DLL
%AppData%ManifestStore
emcmdstub.exe
%AppData%ManifestStoreTCCTL32.DLL
%AppData%systemupdateWhitepaper.docx
快捷方式
%AppData%RoamingMicrosoftWindowsStart MenuProgramsStartupdesktop.ini.lnk
Firewall program entry allowing the following application
%AppData%ManifestStoreclient32.exe
Running process named 「client32.exe」 from the path 「%AppData%ManifestStoreclient32.exe」
Hashes
fc87951ae927d0fe5eb14027d43b1fc3
e3b0fd6c3c97355b7187c639ad9fb97a
a8e8b2072cbdf41f62e870ec775cb246
6c5fd3258f6eb2a7beaf1c69ee121b9f
31e7e9db74525b255f646baf2583c419
12dd86b842a4d3fe067cdb38c3ef089a
350ae71bc3d9f0c1d7377fb4e737d2a4
c749321f56fce04ad8f4c3c31c7f33ff
c7abd2c0b7fd8c19e08fe2a228b021b9
b624735e02b49cfdd78df7542bf8e779
5a082bb45dbab012f17120135856c2fc
e57e4727100be6f3d243ae08011a18ae
9bf55bf8c2f4072883e01254cba973e6
20a6aa24e5586375c77b4dc1e00716f2
aa2a195d0581a78e01e62beabb03f5f0
99c7a56ba04c435372bea5484861cbf3
8c0d17d472589df4f597002d8f2ba487
227c634e563f256f396b4071ffda2e05
ef315aa749e2e33fc6df09d10ae6745d
341148a5ef714cf6cd98eb0801f07a01
※累覺不愛 Mac App Store 上竟然也有偷偷奴役你電腦挖礦的應用
※域滲透——獲得域控伺服器的NTDS.dit文件
TAG:嘶吼RoarTalk |