從Windows 到安卓:多重攻擊機制的遠控的分析

wyzsk發表於2020-08-19
作者: livers · 2014/03/21 18:16

0x00 背景


Feye近期檢測到一起透過高度偽造的釣魚郵件(魚叉式釣魚電郵)攻擊,目標直指美國的金融機構。攻擊中用到的惡意程式碼是由一個被作者出售的間諜和監視工具生成。此工具的功能很類似市面上常見的其他遠控軟體。同時,也發現了其他的攻擊者把此工具的惡意程式碼嵌入到宏文字檔案中用來攻擊其他的目標,看上去更像是第二輪的撒網式釣魚郵件攻擊。

用於攻擊金融機構的C&C的網路裝置是被WinSpy的作者控制的。這並不意味著作者有意在背後為攻擊者提供了伺服器。而是攻擊者使用了WinSpy包裡面預設配置儲存受害者的資料。這個功能也許是作者的無心之失。

在分析WinSpy的惡意程式碼的時候,我們發現其中也有AndroidSpy間諜的元件部分,我們稱之為GimmeRat。這個安卓工具有多種功能包括允許被感染的裝置透過簡訊或者其他形式被Windows的裝置控制。基於windows平臺的遠控看上去只能透過物理訪問控制安卓裝置。最近數量上升的安卓遠控如Dendroid或者AndroRAT,表名駭客們對移動裝置更感興趣。GimmeRAT是又一個攻擊者開始轉向andorid系統的例子。

0x01 利用 WinSpy進行攻擊


WinSpy 作為一個間諜和監視工具出售給使用者,其自身的遠端管理功能適合對手找到目標組織的法案.使用WinSpy包的預設指令和預設伺服器為攻擊者提供一層匿名代理。

enter image description here

圖1 – 針對金融機構的攻擊機制

透過偽造過網路釣魚的電子郵件並採用WinSpy的惡意程式碼針對美國金融機構進行攻擊。電子郵件的附件(b430263181959f4dd681e9d5fd15d2a0)是一個大的安裝程式的打包檔案。開啟時用一個工資單的pdf截圖作為誘餌,以避免受害者的關注。它同時會下載和生成如在圖1和圖2所示的各種元件。

enter image description here

圖二:WinSpy的元件

我們觀察到另一個攻擊者在微軟宏文件(78fc7bccd86c645cc66b1a719b6e1258, f496bf5c7bc6843b395cc309da004345) 和獨立的可執行檔案(8859bbe7f22729d5b4a7d821cfabb044, 2b19ca87739361fa4d7ee318e6248d05)中使用WinSpy。 這些惡意檔案作為附件或者是下載連結的形式封裝到電子郵件中。它們包含下列特徵元素:

enter image description here

這些被發現的惡意郵件有下列命名的附件:

Western Union Slip.xls
Money Transfer Wumt.xls
Wumt.xls

0x02 Windows 元件


WinSpy模組使用VB進行編碼的,同時用一些公開的lib庫如modJPEG.bas 和cJpeg.cls。 這些元件支援多種特性如下:

enter image description here

WinSpy木馬軟體會在登錄檔的SOFTWAREMSI64目錄下建立自己的配置。WinSpy的元件在執行時會讀取該配置。此配置包含各種設定,如:使用者名稱,唯一標識,連線引數,遠端FTP和認證,檔名,資料的路徑,當前的狀態等等。例如:DUNIN代表解除安裝日期,FTSV代表的FTP伺服器,FTUS代表著FTP使用者等。SID2表示識別感染的唯一標識,在初始化時候建立。

enter image description here

WinSpy 配置

WinSpy有多個選項配置來生成一個木馬檔案。有趣的是預設配置的引數竟然是作者控制的伺服器。

enter image description here

圖四 WinSpy生成器

控制器可以截圖,鍵盤記錄,也可以上傳下載檔案 執行惡意程式碼。

enter image description here

圖五 WinSpy控制器

enter image description here

圖六 WinSpy檔案瀏覽器

發指令和控制 WinSpy有多種通訊方式進行資料傳遞和指令控制(類似心跳包)。

方法一

反向連線控制者伺服器的14001埠,“/p”表示線上,伺服器也以”/p”回應。

enter image description here

圖七 線上狀態

方法二

透過自己封裝的協議反向連線作者伺服器的27171。

請求包含受害者的IP地址以及前面講的唯一標誌。伺服器返回帶有keep alive的response.

enter image description here

方法三

smtp 在配置了SMTP選項的情況下,他透過SMTP回傳鍵盤記錄的資料。作者伺服器STMP執行在37埠。37埠通常是用於NTP協議,但WinSpy的作者把它配置成STMP伺服器。SysMon v1.0.0的響應頭非常明顯。

enter image description here

圖十 SMTP

方法四

FTP 透過自定義的FTP伺服器進行定期傳輸。FTP帳號密碼等在前面說的登錄檔配置中。

方法五

直接控制 Rdbms.exe模組監聽受害者機器的443埠。攻擊者可以直接從WinSpy控制器連線到該埠併發出各種命令來下載資料,上傳/下載檔案,執行檔案,傳送郵件,檢視攝像頭等。資料傳輸使用埠444。它支援各種命令,如下所示。在初始連線的命令表,作者打算在某個時間點來實現認證,但目前的情況是任何人都可以使用這個命令連線到受感染的機器 。

enter image description here

表示各種低小下啊!!!

0x03 安卓元件


終於有些感興趣的了。

在調查WinSpy的過程中發現一些android木馬元件。我們已經發現三個不同應用是該套件的一部分。其中一個應用,需要透過一個Windows伺服器進行控制。只能物理接觸androids裝置感染。其他兩個應用是C-S架構,透過另一個android手機進行遠端控制。

enter image description here

圖11 安卓元件

0x04 Windows 控制器


Windows的控制器需要對android裝置進行直接的物理接觸,可執行攻擊者獲取感染裝置的截圖。選項如下:

enter image description here

元件一 :GlobalService.apk

Components:
          a. Services
                    Global Service
          b. Methods
                    Sleeper
                    ScreenCapturer
                    ServiceActivity

Activity元件

該應用以intent繫結機制啟動android桌面應用。使用Intent連線com.google.system.service.StartUpReceiver服務時使用附加資訊。字串格式如下: “interval@@hostname@@port@@username@@password@@working_directory@@delete_after_upload” 伺服器名,埠,使用者名稱,密碼連線攻擊者的FTP伺服器。在後面介紹如何傳遞截圖。一旦此intent接收到就會讓 GlobalService服務一個間隔引數重啟。

GlobalService元件

服務包含下列變數

private static final String TAG = "GlobalService";
         private static boolean isScreenON;
         private int mInterval;
         private KeyguardManager mKeyGaurdManager;
         private BroadcastReceiver mPowerKeyReceiver;
         private Timer mSyncTimer;
         private TimerTask mSyncTimerTask;

他會一直檢測鍵盤鎖是否解鎖,如果螢幕鍵盤鎖被解,他會呼叫startScreenCaptureThread()擷取螢幕。

startScreenCaptureThread 該執行緒設定毫秒的時間間隔,將結果傳遞給服務。它還設定了 mSyncTimerTask的值(任務同步),呼叫ScreenCapturer. takeScreenshot方法,可以讓執行緒呼叫時,每隔多少秒進行截圖。
ScreenCapturer. takeScreenshot 使用socket連線到 localhost:42345埠,GlobalNativeService監聽此埠接收socket傳來的資料。
takeScreenshot以字串的形式傳送‘/data/local/tmp/images/screenshot_DATE.png’到GlobalNativeService。GlobalNativeService檢測接收的字串最後/的是否有screenshot,如果有 則呼叫screencap –P  路徑 截圖。
takeScreenshot 返回截圖的路徑作為引數傳給screenCaptureThread方法。該方法呼叫FTPService傳截圖給攻擊者的C&C伺服器。

GlobalNativeService

除了上面說的監聽 等待截圖指令還有其他類似 刪除檔案,儲存FTP資訊到/data/local/tmp/ftpInformation中。 此外 ,如果socket 傳來GPSLocationInfo這樣的字串,它會建立/data/local/tmp/GPSLocations.txt(但不含GPS資訊 未完善的功能)。

0x05 Android 遠端控制


元件1  GPSTracker.apk 

GPSTracker的啟動和GlobalService一樣,以一個時間間隔啟動。記錄裝置的GPS位置,定期五分鐘。只有當現在位置離開先前位置200m後才會記錄。 當某個位置已被新增到資料庫中的所有以前的位置被刪除。因此,它只能維持最後的位置。

這個應用監控所有傳進來的資訊,如果SMS (簡訊)帶有 [gmyl] (Short for (g)ive (m)e (y)our (l)ocation) 簡訊時,它會終止該簡訊的接收,並進行資料庫查詢。並回復簡訊 類似下面:

[himl]<>DATE><LATITUDE##LONGTITUDE

“himl” is short for (h)ere (i)s (m)y (l)ocation。只回復最後的位置。

元件2 GPSTrackerClient.apk

此應用是上一個應用的控制器。GPSTrackerClient.apk安裝到攻擊者的裝置上。他向被攻擊者傳送一個帶有“[gmyl]”的簡訊。呼叫本地地圖顯示被攻擊者的方位。

這裡值得注意的是,兩個模組之前沒有任何驗證機制。WTF!

0x06 總結


PC端其實是比較低階的遠控 通訊處理的一般,而且儲存惡意檔案。特徵也非常明顯。 Android端也是處於一般水平,畢竟Android 的資料加密和簽名機制比IOS要簡單的多。

from:http://www.fireeye.com/blog/technical/2014/03/from-windows-to-droids-an-insight-in-to-multi-vector-attack-mechanisms-in-rats.html

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章