內網穿透:Android木馬進入高級攻擊階段

FreddieFors 8年前發布 | 8K 次閱讀 木馬 socks Android開發 移動開發

概述

近日,360烽火實驗室發現有數千個樣本感染了一種名為“DressCode”的惡意代碼,該惡意代碼利用實下流行的SOCKS代理反彈技術突破內網防火墻限制,竊取內網數據。這種通過代理穿透內網繞過防火墻的手段在PC上并不新鮮,然而以手機終端為跳板實現對企業內網的滲透還是首見[1]。

SOCKS是一種網絡傳輸協議,SOCKS協議位于傳輸層與應用層之間,所以能代理TCP和UDP的網絡流量,SOCKS主要用于客戶端與外網服務器之間數據的傳遞,那么SOCKS是怎么工作的呢,舉個例子:A想訪問B站點,但是A與B之間有一個防火墻阻止A直接訪問B站點,在A的網絡里面有一個SOCKS代理C,C可以直接訪問B站點,于是A通知C訪問B站點,于是C就為A和B建立起信息傳輸的橋梁。其工作流程大致分為以下5步:

(1)代理方向代理服務器發出請求信息。

(2)代理服務器應答。

(3)代理方需要向代理服務器發送目的IP和端口。

(4)代理服務器與目的進行連接。

(5)連接成功后將需要將代理方發出的信息傳到目的方,將目的方發出的信息傳到需要代理方。代理完成。

由于SOCKS協議是一種在服務端與客戶端之間轉發TCP會話的協議,所以可以輕易的穿透企業應用層防火墻;它獨立于應用層協議,支持多種不同的應用層服務,如TELNET,FTP,HTTP等。SOCKS協議通常采用1080端口進行通信,這樣可以有效避開普通防火墻的過濾,實現墻內墻外終端的連接[2]。

二.地域分布

360互聯網安全中心數據顯示,截止目前,“DressCode”惡意代碼傳播量已達24萬之多,在世界范圍內分布相當廣泛,感染了該惡意代碼的手機在全世界的分布情況如下圖所示:

圖1“DressCode”木馬在世界各地的分布情況

數據顯示,已有200多個國家的用戶手機安裝了帶有“DressCode”惡意代碼的應用,該惡意代碼大多寄宿在時下流行的手機游戲中,其擴散能力很強,其中美國、俄羅斯,德國、法國等歐美發達國家屬于重災區,中國的形勢也不容樂觀,企業內網安全正在遭受前所未有的挑戰。

三.詳細分析

該木馬的主要攻擊過程如下[3]:

(1)木馬運行時主動連接到攻擊者主機(SOCKS客戶端),建立一個與攻擊者對話的代理通道。

(2)作為SOCKS服務端的木馬根據攻擊者傳來的目標內網服務器的IP地址和端口,連接目標應用服務器。

(3)木馬在攻擊者和應用服務器之間轉發數據,進行通信。

當木馬安裝上手機后,首先會連接C&C服務器,連接成功后,那么木馬就與C&C服務器建立了一個對話通道,木馬會讀取C&C服務器傳送過來的指令, 當木馬收到以“CREATE”開頭的指令后,就會連接攻擊者主機上的SOCKS客戶端,攻擊者與處于內網中的木馬程序建立了信息傳輸的通道了。

SOCKS服務端讀取SOCKS客戶端發送的數據,這些數據包括目標內網應用服務器的IP地址和端口、客戶端指令。如下圖所示:

圖2SOCKS服務端獲取客戶端指令等信息

客戶端傳遞過來的命令主要有CONNECT與BIND兩種指令。

(一)CONNECT指令

當SOCKS客戶端要與目標應用服務器建立連接時,首先會發送一個CONNECT指令,SOCKS服務端接收到CONNECT指令后,會根據讀取到的IP地址和端口連接目標應用服務器,連接成功后,會將請求結果發送給SOCKS客戶端,此時目標應用服務器與SOCKS服務端,SOCKS服務端與SOCKS客戶端都建立起了會話通道,木馬作為數據中轉站,可以在攻擊者和應用服務器轉發任意數據了,其轉發過程如圖所示:

圖3木馬轉發數據過程

SOCKS協議對數據轉發的實現代碼如下:

圖4木馬轉發數據的代碼

那么通過這兩條已連接的數據傳輸通道如何竊取數據的呢?以HTTP協議為例,假設攻擊者要訪問位于內網的HTTP服務器,那么攻擊者首先通過SOCKS客戶端將HTTP請求數據發送給SOCKS服務端,SOCKS服務端讀取到這些數據后,馬上將這些數據轉發給應用服務器,應用服務器收到HTTP請求后,將HTTP應答數據發送給木馬,木馬檢查到應答數據,馬上轉發給攻擊者,這樣攻擊者就通過木馬完成了對內網HTTP服務器的訪問。

(二)BIND指令

當攻擊者需要訪問內網FTP應用服務器時,SOCKS代理客戶端需要向服務端發送BIND指令。SOCKS協議支持采用PORT模式傳輸FTP數據,PORT模式[4]傳輸數據的主要過程如下:

FTP客戶端首先和FTP服務器建立控制連接,用來發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。FTP服務器必須和客戶端建立一個新的連接用來傳送數據。PORT命令包含了客戶端用什么端口接收數據。在傳送數據的時候,服務端通過自己的端口(默認是20)連接至客戶端的指定端口發送數據。

SOCKS代理服務端接收到BIND指令后,木馬會利用本地IP和匿名端口生成一個服務端SocketA,并通過建立的數據轉發通道,將本地IP和端口發送給攻擊者;等待目標應用服務器連接(多為FTP服務器)。

(三)攻擊FTP服務器的過程

攻擊者想要竊取內網FTP服務器數據時,會首先發送CONNECT指令,處于內網中的SOCKS服務端接收到此命令后,會試圖和FTP服務器建立一個控制流,如果FTP服務器響應此請求,最終FTP控制流建立;攻擊者建立新的到SOCKS服務端的TCP連接,并在新的TCP連接上發送BIND請求,SOCKS服務端接收到BIND請求后,創建新的Socket,等待目標FTP服務器的連接,并向SOCKS客戶端發送第一個BIND響應包;SOCKS客戶端收到第一個BIND響應包后,攻擊者通過FTP控制流向FTP服務器發送PORT命令,通知FTP服務器主動建立到SocketA的連接;FTP服務器收到PORT命令,主動連接到SocketA;SOCKS服務端接收到來自FTP服務器的連接請求,向SOCKS客戶端發送第二個響應包,然后SOCKS服務端開始轉發數據流。這樣攻擊者就通過木馬完成了對內網文件服務器的數據竊取。

以上攻擊過程如下圖所示:

圖5黑客攻擊FTP服務器,竊取數據的過程

四.總結建議

“DressCode”惡意代碼穿透能力強,地域分布廣泛,已成為對內網安全的一種新的潛在威脅,減除接入企業內網的智能終端設備所帶來的安全威脅客不容緩。針對此種情況,企業應做好如下兩點防范措施:

(1)嚴格限制不可信的智能終端設備接入公司內部網絡,對要接入公司內網的終端設備進行身份認證。

(2)智能終端設備不應該與企業內部服務器處于同一個局域網段內。

與此同時,手機用戶應該提高安全意識,要從正規的安卓應用商店下載應用,不要安裝來歷不明的應用軟件。

 

 

來自:http://www.freebuf.com/articles/terminal/121634.html

 

 本文由用戶 FreddieFors 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!