[系統安全] 三十七.APT系列(2)遠控木馬詳解與防御及APT攻擊中的遠控

文章目錄:
- 一.木馬的基本概念和分類
- 二.木馬的植入方式
- 三.遠控木馬的通信方式
- 1.正向連接
- 2.反向連接
- 3.通信協議
- 四.遠控木馬的常見功能及意圖
- 1.文件管理
- 2.進程管理
- 3.服務管理
- 4.注冊表管理
- 5.屏幕控制
- 6.鍵鼠操作
- 7.屏幕截取
- 8.語音視頻截獲
- 9.鍵盤記錄
- 五.APT攻擊與遠控木馬
- 1.APT攻擊與遠控木馬的關系
- 2.普通遠控木馬與APT遠控木馬的區別
- 3.APT攻擊中的典型遠控木馬
- 六.總結
作者的github資源:
- 逆向分析:
- https://github.com/eastmountyxz/
- SystemSecurity-ReverseAnalysis
- 網絡安全:
- https://github.com/eastmountyxz/
- NetworkSecuritySelf-study
聲明:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護。
一.木馬的基本概念和分類
木馬全稱為特洛伊木馬,來源于古希臘神話。木馬是通過欺騙或誘騙的方式安裝,并在用戶的計算機中隱藏以實現控制用戶計算機的目的。
- 具有遠程控制、信息竊取、破壞等功能的惡意代碼
木馬具有如下特點:
- 欺騙性
- 木馬都有很強的欺騙性,執行通常都由被攻擊者自己執行起來的
- 隱藏性
- 非授權性
- 執行惡意操作是沒有經過用戶授權的
- 交互性
- 主機之外的攻擊者可以通過某種方式對主機進行交互

接著分享木馬的分類,不同視角有不同的分類。
1.行為視角
粒度細,如卡巴斯基SafeStream病毒庫的分類標準。由下圖所示,它是卡巴斯基整個對惡意代碼分類體系,最上面的是蠕蟲(Worm)和病毒(Virus),接著是后門(Backdoor)和Trojan,接著將Trojan按行為分成了很多類,最后是Rootkit和Exploit。從下往上是按照危害程度進行排序,最上面的危害程度最大、最下面的危害程度最小。

下面這張圖是卡巴斯基木馬的具體分類,木馬分為Backdoor、Trojan、Rootkit、Exploit。 按道理說,將Exploit放到木馬范疇是不合適的,接著Trojan又分為Trojan-Downloader(下載)、Trojan-Dropper(釋放)、Trojan-Spy(間D軟件)Trojan-DDoS(拒絕服務)、Trojan-Ransom(磁盤數據加密勒索用戶)等。同時,它在命名的時候會根據其行為進行分類。對于卡巴斯基來首,Backdoor包括遠程控制型程序,就是這篇文章的遠控型木馬。

2.功能視角
包括遠程控制型、信息獲取型、破壞型等。
(1) 遠程控制型木馬遠程控制可以對目標計算機進行交互性訪問(實時或非實時),可以下發相應的指令觸發惡意軟件的功能,也能獲取目標的各種數據。其交互性是雙向的(攻擊者-被控制端)。
典型案例包括卡巴斯基分類標準下的木馬之類Backdoor,還有一些實際案例,包括冰河、網絡神TOU、廣外女神、網絡公牛、黑洞、上興、彩虹橋、PCShare、灰鴿子等。下圖展示了灰鴿子代碼,其具體測試方法推薦作者前文。

(2) 信息獲取型木馬信息型獲取木馬的功能是信息獲取,可以從鍵盤輸入、內存、文件、數據庫、瀏覽器Cookies等中獲取有價值的信息。其交互性是單向交互,是被控制端發送數據給攻擊者,比如發送至攻擊者的第三方空間、文件服務器、指定郵箱等,或者直接開啟FTP服務程序,攻擊者直接訪問從而下載數據。
下圖展示了BPK軟件界面,包括屏幕截屏、信息記錄等功能,并發送數據給攻擊者。典型案例包括卡巴斯基分類標準下的Trojan-Bank、Trojan-GameThief、Trojan-IM、Trojan-Spy、Trojan-PSW、Trojan-Mailfinder等。

(3) 破壞性木馬它的功能是對本地或遠程主機系統進行數據破壞、資源消耗等。其交互性也是單向的,攻擊者可以向被控制端發送指令,有的情況也沒有任何交互。
典型案例包括卡巴斯基分類標準下的Trojan-DDoS、Trojan-Ransom、Trojan-ArcBomb、Trojan-Downloader、Trojan-Dropper等。
二.木馬的植入方式
木馬的欺騙性很強,那么它究竟是通過什么方式去欺騙用戶安裝這個程序呢?常見方式如下:
- 網頁掛MA植入
- 通過網頁掛MA實現比較典型,通常需要利用瀏覽器或相關漏洞,再結合實時新聞、熱點話題制作相關網頁,將漏洞和網頁結合,最后生成惡意網頁,當用戶打開網頁時,遠程的木馬程序會自動下載和安裝。常見的漏洞比如:MS06014、MS10003。
- 電子郵件植入(魚叉攻擊)
- 電子郵件植入最常見的是通過附件的形式,當用戶打開附件時被注入木馬;另一種是電子郵件與惡意網頁相結合,由于電子郵件是支持HTML正文的,如果將相關漏洞植入到網頁中,也是能夠達到相關的效果。即使不打開附件,選中就會被植入(以HTML格式發送,如求職者)

- 文檔捆綁植入(魚叉攻擊偏多)
- 這也是一種有效的方式,通過office文檔、pdf文檔漏洞等將文檔進行捆綁,當用戶打開文檔時會觸發漏洞,從而釋放木馬或執行shellcode執行遠程攻擊。這種文檔同時也常用于郵件附件的形式發送。
- 偽裝欺騙植入
- 比如可以對exe的文件后綴名進行修改,在原本一個“exe”文件前增加“doc”,然后輸入很多空格讓其exe不顯示出來,再修改成文檔類圖標,從而進行偽裝;另一種是更改后綴名(Unicode翻轉字符),將“cod”進行翻轉,再就是圖標偽裝等。
- 捆綁植入
- EXE捆綁、文檔嵌入、多媒體文件、電子書植入。在前文“WinRAR漏洞復現(CVE-2018-20250)”文章中,我們詳細講解過通過WinRAR捆綁文件的方法。

- 其他
- 比如特定U盤植入(故意丟棄、或者工作U盤、數據拷貝等)、社會工程等。
- 在APT攻擊中的惡意誘餌類型眾多,包括白加黑、lnk、doc文檔、帶有WinRARACE(CVE-2018-20250)漏洞的壓縮包等,之后的攻擊中還新增了偽裝為word圖標的可執行文件、chm文件等。比如,通過加載scrobj.dll,遠程調用http://45.xxx.xxx.67/window.sct,利用Microsoft系統文件的LOLbin以繞過殺軟的監測,達到遠程執行代碼。

三.遠控木馬的通信方式
木馬的控制端和被控端要通信,首先要建立傳輸的通道,常見的傳輸通道構建需要通過IP地址、端口等信息、第三方網站地址實現。建立通信的方式包括兩類:
- 正向連接
- 反向連接
1.正向連接
正向連接是指控制端主動去連接被控制端,需要被控制端開放相關端口來供控制端連接。首先,控制端會去連接被控端,然后發送相關的控制指令,被控端會將主機上的相關信息反饋給控制端,通常包括IP地址、MAC地址、計算機名稱、內存大小等。

這種連接會存在一個問題,如果對方系統存在防火墻的話,通常會進行攔截。正向連接的優缺點如下:
- 優點
- 攻擊者無需外部IP地址,只要能夠上網,就能夠去連接遠程主機
- 木馬樣本不會泄露攻擊者IP地址,木馬不會主動去對外連接,不會泄露IP
- 缺點
- 可能被防火墻阻擋
- 被攻擊者必須具備外部IP地址
- 定位被攻擊者相對困難,比如被攻擊者IP是否變化?目標主機何時上線?當然有些木馬,在目標主機主機能夠上網時,會給指定郵箱發送IP地址信息,攻擊者收到IP地址后會去主動連接主機。
2.反向連接
第一種方式是右邊的被控端(服務端)主動連接控制端主機,這種情況下防火墻一般會允許通過,尤其是目前很多木馬程序采用80端口作為遠程連接的端口,防火墻會非常信任。

第一種方式的優缺點如下:
- 優點
- 通過防火墻相對容易
- 可以控制局域網內的目標
- 攻擊目標隨時上線,攻擊者可以進行隨時控制,因為攻擊者控制服務器一直在線,只要被控端上線就會連接過來,甚至可以通過短信等方式告知。
- 缺點
- 樣本會暴露控制服務器信息(域名或IP)
- 攻擊者通常應當具有外部IP
關于反向連接,還有另外一種方式,被控端和控制端之間有個第三方的肉J,它們都和第三方通信,比如肉J、Web服務器。
- 優點
- 可繞過防火墻,自動連接上線,不易被發現(代理)
- 缺點
- 肉雞的穩定性需要保障

3.通信協議
- TCP協議
- 穩定、易被發現
- HTTP協議偽裝
- UDP協議
- 和TCP一樣也有正向、反向兩種方式
- 負載比TCP少,但是可靠性低
- ICMP+TCP/UDP
- 該方式平時不開啟端口,但會監聽ICMP報文,以感知木馬數據。當攻擊者想對這臺主機控制時,可以發送ICMP報文,發過來之后控制端監聽到特定報文時,就知道到想要進行監聽并開啟相關端口。ICMP報文是由系統內核或進程直接處理而不是通過端口,其方式比較一筆,一般不會被防火墻過濾。
下圖展示了冰河寫的后門程序,叫BITS(Background Intelligent Transfer Service),是一種難以覺察的后門,采用ICMP+TCP/UDP方式實現。進程管理器首先看不到,另外平時沒有端口,只是在系統中充當臥D的角色,并且提供正向連接和反向連接兩種功能,適用于不同的操作系統(Windows2000/XP/2003),通過其提供的Shell,你能做很多事情。

同時,請各位博友思考一個問題:什么樣的協議最安全?
- 流量檢測手段
- IDS、VDS、IPS、VPS 、UTM
- 防火墻、SIEM (安全信息和事件管理)
- 如何逃避流量檢測?
四.遠控木馬的常見功能及意圖
首先看下木馬的結構,一般由三部分組成,包括木馬配置程序、控制端程序(客戶端)和被控制端程序(服務端程序)。其中配置程序用于配置被控端的特征和功能,包括是否創建服務、是否隱藏等。

下圖展示了PcShare的主控界面,其中“生成客戶”點擊后就是木馬的配置過程。

下圖展示了木馬上線后的控制界面,包括目錄瀏覽、屏幕控制、進程列表、窗口列表、服務管理、注冊表編輯、鍵盤記錄等。

下面是灰鴿子的主界面。

木馬的典型功能包括:
- 文件管理
- 進程管理
- 服務管理
- 注冊表管理
- 屏幕監控、屏幕截取
- 語音視頻截獲
- 鍵盤記錄
- 窗口管理
- 遠程Shell
- …
1.文件管理
文件管理主要目的是獲取目標的文件系統信息,通常包括如下功能:
- 瀏覽各磁盤文件
- 上傳、下載文件(包括上傳惡意文件)
- 執行文件
- 刪除文件
- 修改文件信息(如文件屬性、時間)
可能涉及的部分關鍵函數: GetLogicalDriveString、 GetDiskFreeSpace(Ex)、GetVolumeInformation、GetDriveType、 FindFirstFile、 FindNextFile、 FindClose、DeleteFile、SHFileOperation 、SHEmptyRecycledBin、 MoveFile、 CreateFile( Ex) 、WriteFile 等

2.進程管理
查看、結束、暫停目標系統進程。具體目的包括:
- 查看目標系統的環境信息
- 通過進程查看功能可以實現查看安裝了哪些軟件?目前對方正在做什么?
- 停止或暫停目標系統的相關程序,從而形成干擾
- 如反病毒程序
涉 及 的 關 鍵 函 數 包 括:CreateToolhelp32SnapShot、 Process32First、Process32Next、 EnumProcesses、 GetCurrentProcess、 OpenProcessToken、LookupPrivilegeValue、 AdjustTokenPrivilege、 OpenProcess、 GetModuleBaseName、EnumProcessModules、 GetModuleFileNameEx、 TerminateProcess 等。

3.服務管理
主要功能是查看并管理目標系統的服務,包括:
- 創建服務
- 啟動/停止服務
- 刪除服務
具體作用如下:
- 查看目標系統的環境信息
- 安裝了哪些軟件?啟動了哪些服務?
- 停止或暫停目標系統的相關程序
- 如反病毒程序
可能涉及的關鍵函數: OpenSCManager、EnumServiceStatus、OpenService、 QueryServiceConfig、 StartService、StopService、 DeleteService 等。
下圖是PcShare提供的服務管理示例。

4.注冊表管理
注冊表管理可以瀏覽注冊表的信息及鍵值,也能創建、刪除一些鍵值。
可能涉及的關鍵函數包括: RegQueryInfoKey、RegEnumKeyEx、 RegEnumValue、 RegCreateKeyEx、RegDeleteKey、 RegSetValueEx、 RegDeleteValue 等。

5.屏幕控制
- 利用 keybd_event 或者SendInput 模擬按鍵PrintScreen
- 利用 CreateDC 獲取當前屏幕設備的句柄,然后獲取屏幕圖像

6.鍵鼠操作
下圖是PcShare遠程控制的鍵盤控制,主要涉及函數:
- SetCursorPos
- mouse_event
- SendInput

7.屏幕截取
對于有些木馬來說,會認為屏幕控制功能流量消耗很大,不希望引起被控制著注意,有時候進行屏幕抓取即可。
- 抓取屏幕(單張、多張連續)
- 了解目標主機的當前操作情況
常見函數包括:
- CreateDC
- CreateCompatibleBitmap
- BitBlt
8.語音視頻截獲
錄音包括竊取對方談話信息、竊取對方對外語音通話(如QQ、SKYPE、MSN等),甚至即使是在斷網的環境也可能會被錄音,當連接網絡后再傳輸對應的數據。另一個是攝像頭,主要包括打開攝像頭(了解對方現場環境)、攝像錄制(敲Z)等。下圖展示了語音視頻截獲的過程。

9.鍵盤記錄
獲取目標電腦中的鍵盤擊鍵信息,包括:
- 用戶名、密碼信息
- QQ、郵箱、網銀、網上證券、網絡游戲、支付寶等
- 聊天信息
- 部分木馬支持中文漢字記錄
其他功能還有窗口管理,比如查看目標主機目前開啟了哪些窗口,了解目標用戶正在做什么;再就是遠程Shell,包括交互式或非交互式Shell(遠程交互的Cmd.exe)、直接執行命令或第三方程序等。部分木馬功能如下圖所示,其中很多功能所有木馬都具有,比如文件管理、注冊表管理、屏幕監控,也有一些功能是特有的。

最后簡單總結下編寫木馬的關鍵性。
- 功能適當[精簡靈活]
- 適用性強[功能、權限]
- 高效、穩定、隱蔽[傳輸]
- 可穿透性
- 自更新、自銷毀
- 反調試、反分析、防追蹤、反制對抗
- 持續免殺性能等
- 特征值、通用主機行為、異常的通信流量
- …
既然遠控木馬也是惡意軟件,那么怎么檢測木馬呢?下面簡單提供了一些思路。
- 靜態文件特征(木馬程序是獨立的文件,就存在靜態文件特征)
- 網絡流量特征(交互性木馬檢測流量)
- 系統行為特征(木馬執行時創建線程、進程、驅動、網絡等行為)
- 功能行為特征(錄音、截屏、鍵盤、shell行為檢測)
- 攻擊意圖(自動化檢測功能是正常或惡意,當然難度也大)
- …
推薦兩篇文章:
- 簡要分析Hacking Team遠程控制系統
- https://github.com/hackedteam
再次強調:堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網絡需要我們共同維護。本文主要是分享安全的原理知識,只推薦大家了解它們背后的原理,更好地進行安全防護,一切惡意破壞行為都將受到嚴懲。
五.APT攻擊與遠控木馬
接下來作者將對分享及總結安天李老師的APT攻擊與遠控木馬內容,希望您喜歡。同時,非常推薦作者之前分析的APT系列文章,可以結合本部分內容進行擴展。
1.APT攻擊與遠控木馬的關系
首先,APT攻擊為何要選擇遠控木馬呢?
近年來,安天持續監測分析和跟蹤多起針對我國的APT攻擊活動中,總能看到遠控木馬的身影,比如安天在2015年披露的一起針對我國ZF機構的APT攻擊事件中,海蓮花組織使用了美方出臺的CS平臺,結合Denis家族木馬、Ratsnif、Gh0st等木馬。在2018年的綠斑攻擊組織,使用了被修改過的ZXShell、PI、Gh0st木馬。近年來,方程式攻擊組織使用了多個復雜的遠控攻擊木馬平臺。
- 海蓮花
- Cobalt Strike、Denis、Ratsnit、Gh0st
- 綠斑
- ZXShell、Poison Ivy、Gh0st
- 方程式
- DoubleFantasy、EquationDrug、DanderSpritz

大家是否想過,APT攻擊中為什么要遠控木馬呢?我們可以從APT攻擊中三種典型的意圖進行考慮,包括竊Mi、獲利、破壞。在以竊Mi和獲利為目的中,攻擊者會利用遠控木馬持久控制跳板機、關鍵機,這也成為了達到最終目標的關鍵;同樣,在以破壞為目的中,攻擊者利用遠程控制木馬,精準控制破壞時機。

我們以2015年發生的烏克蘭電網遭受黑客攻擊大規模停電事件為例,攻擊者利用僵尸網絡完成前期的數據采集和環境日志,通過郵件的形式發送惡意代碼,使用遠程控制系統下達指令,并破壞系統發起客戶電話干擾,造成大面積停電。在這起事件中,事先預置的SSH后門扮演了遠控的角色。

美國在2018年發布的網空威脅框架(TCTF),它比較完整的描述了網空攻擊的各個階段及攻擊目標和行動。
- Administrator:行動管理與資源保障
- Preparation:目標勘察與環境整備
- Engagement:接觸目標與進攻突防
- Presence:持久化駐留潛伏
- Effect:致效能力運用
- Ongoing Processes:全程持續支撐作業

從下圖可以看到,我們在致效能力運用和全程持續支撐作業兩個階段,攻擊者為了達到監控、滲出、修改、拒絕、破壞、命令控制等目標,它會采取類似于弱口令訪問控制、CDS傳輸、加密破解、刪除數據等一系列行動,這些行動的實現就是通過遠程木馬來完成。所以在APT攻擊中,遠控木馬是必不可少的。

2.普通遠控木馬與APT遠控木馬的區別
APT組織往往具有一定的背景,有充足的資金來保證行動的隱蔽性,從而會選擇獨立開發或改造現有的遠控木馬,而不是直接拿來使用。它會投入更多的開發力量、攻擊資源,借助0Day或nDay漏洞、供應鏈污染、流量劫持來投送木馬。
同時,會采用更為復雜且難以發現的技術如MBR、固件植入、RootKit等來在受害主機上進行持久化,它會入侵已經被安全廠商加入到白名單里的居民網站作為C2,來實現對木馬的控制以及使用條件觸發等高級方式來連接C2。它甚至會開發加密的通訊協議來規避現有的網絡安全監測機制,針對目標來定制條件實現精準的竊Mi,包括使用無文件實體、Rootkit等來逃避檢測。具體的區別如下圖所示:

3.APT攻擊中的典型遠控木馬
(1) 綠斑組織改造的ZXShell
ZXShell是一個功能全面的遠控木馬,有十幾年的歷史并且開源,操作界面如下圖所示。

綠斑組織重新編譯了這個木馬,裁剪了一些功能,并增加了一些竊取信息的功能,比如手機Word、Excel、WPS等特定類型的文件,搜集包含特定關鍵詞的文件,以及增加自動回傳收集文件和列表,加密配置數據、規避安全監測等定制化功能。木馬可以根據當前系統的版本、殺軟進程,采取不同的行為,從而躲避多數安全軟件的檢測。下圖展示了ZXShell原版對比修改版新增功能和精簡功能,其中白色字體部分是保留下來的功能,黃色字體部分是新增功能,黑色字體是裁剪的功能。

通過對木馬樣本的逆向分析,我們就可以看到攻擊組織對木馬新增的功能,比如IEPass,它是用來竊取IE瀏覽器默認記錄的頁面登錄憑證,郵箱賬號和密碼等。同時,它會記錄這些登錄的憑證對應的網頁地址。

攻擊組織還為木馬增加了收集和獲取WPS文檔的能力,WPS是我國大量使用的軟件。下面代碼展示了收集“doc”、“xls”、“ppt”等文檔文件,只收集半年內修改過的文檔文件并使用RAR打包。

攻擊組織還為木馬增加了文件名包括“201”、“項”等字樣的文件的功能,收集全盤指定關鍵字的文件路徑,說明該組織希望從受害主機上獲取近年來項目、JS等文件。同樣,包括一些典型的收集被攻擊主機信息的功能,如硬件信息、系統信息、網絡信息、進程信息、關鍵字文件列表等。

(2) 方程式組織的DanderSpritz平臺
方程式組織利用DanderSpritz平臺曾今入侵某機構,通過永恒之藍一系列漏洞獲得主機權限后,會利用DS平臺來控制目標主機,DS平臺提供了一系列的功能框架及插件。

DanderSpritz平臺所支持的命令涵蓋了進程、網絡、注冊表、文件、驅動等各方面,我們可以看到和前面只有20多個命令的ZXSehll不一樣,DS平臺提供了全面的信息采集和控制指令。

在加密通訊方面,DS平臺提供了一個名叫Trigger的獨特的激活模式,使用這種模式的木馬,受害主機會被動監聽外部發來的連接請求,一旦檢測到在數據包中檢測到某種標識,并能夠按照事先約定的密鑰來正確解密數據,就會從數據包中正確解密C2,再去連接和控制。

RSA算法加密過程如下:

我們看一下普通的遠控木馬經常采用圖(1)和(2)的連接方式,對于第一種連接方式,只要分析木馬樣本就能找到C2,如果以這種C2作為IOC部署規則檢測流量,就能很容易的掌握哪些主機被植入了木馬;對于第二種方式,可以檢測主機端口開放情況,結合必要的主機取證分析工作,也能夠找到被植入木馬的主機。但是對于圖(3),就是DS支持的激活模式,它不開放特殊的端口,也沒有在樣本中配置C2地址,這就給我們檢測工作帶來了極大的挑戰。

簡單總結下,通過前面的介紹我們發現:
- 遠控木馬是APT攻擊中必不可少的一環
- 達成持久化控制能力必須采用遠控木馬,遠控木馬通常出現在網空威脅框架的后兩個階段
- APT攻擊中采用的遠控木馬,復雜性體現在多個方面
- 遠控來源、功能指令、連接方式、通訊協議和反檢測
同時,請大家思考下:檢測APT攻擊使用的遠控木馬會遇到哪些挑戰?
六.總結
寫到這里,這篇文章就介紹完畢,希望對您有所幫助,最后進行簡單的總結下。
- 木馬的基本概念和分類
- 木馬的植入方式
- 遠控木馬的通信方式
- 遠控木馬的常見功能及意圖
- APT攻擊與遠控木馬