周趙軍,張 劍,彭春林
(①電子科技大學 電子科學技術研究院,四川 成都 611731;②中國電子科技集團公司第三十研究所,四川 成都 610041)
目前防火墻技術的迅猛發展,尤其是網關型防火墻,對進入局域網的數據包檢查的非常嚴格,通過IP過濾,這種類型的防火墻能夠阻止陌生主機的數據包,甚至禁止局域網主機打開端口[1]。因此目前互聯網上流行的木馬通信方式除了直連型木馬,又衍生出了基于端口反彈的木馬通信方式。在加入了對代理的支持后,木馬的通信方式就更加復雜了。文中主要對木馬的通信方式進行研究和改進。在通信方式上集中了反彈型木馬[2-3]、Web代理[4]、HTTP隧道[5]等多種技術的優勢,并對 Web代理進行了增強使其在連接速度上有所提升。
目前互聯網上較為流行的木馬基本上都支持各類代理。比如網絡神偷[6]、國產冰河[7]、灰鴿子等木馬,支持的網絡連接方式包含:撥號上網、ISDN、ADSL、DDN、Cable Modem、NAT 透明代理、HTTP 的GET 型代理、HTTP 的 CONNECT 型代理、SOCKS4 代理、SOCKS4A 代理、SOCKS5 代理。基本上只要能上網的電腦,就能夠被遠程控制。
代理技術的使用大大提高的木馬的通信能力,從而提高了木馬的生存能力。但是在使用過程中也存在一定的缺陷:
(1)更新不方便
直連型木馬不存在這個問題,每次連接受控端時,入侵者只需要實時的填寫代理的IP地址即可。
對于反彈型木馬,入侵者如果需要更新代理的話,則需要修改木馬的代理配置文件,然后通過命令使得木馬重新建立連接。
(2)帶寬不一定最優
在入侵者和寄宿主機建立通信之前,以及通信過程中,入侵者至多只能知道當前使用的代理是否可用,帶寬如何,而無法或很難與其他代理進行比較。因此在木馬的通信過程中,入侵者使用的帶寬并不一定是最快的,甚至有可能是最慢的一個,僅僅是可用而已。
(3)代理的穩定性決定了一切
代理的建立一般分兩種情況:入侵者在其他寄宿主機上安裝代理程序、互聯網上提供的免費代理;相對來說,互聯網上提供的免費代理可用性非常的差,因為此類代理服務器會經常更新,網速和可用性都不能很好的保證。使用其他寄宿主機做代理服務器,穩定性會較好,但是一旦寄宿主機的系統用戶安裝殺毒軟件清理了木馬、重裝了系統、或者在防火墻上配置了IP過濾信息等,都有可能使得該臨時代理服務器失效,那么使用該代理的所有寄宿主機也就無法控制了,因此穩定性也無法得到很好的保證。
為了彌補普通代理技術在木馬通信中的缺陷,木馬的控制端和受控端首先采用 HTTP隧道技術與Web代理進行通信保證穿透性,同時采用多 Web代理保證代理的穩定性和帶寬。以下是該方法的特點描述。
1)體積小:Web代理只需要對二進制數據進行轉發,代碼量極小。
2)便于安裝:能夠很方便的嵌入到正常網站的網頁中;或上傳到任意虛擬空間即可。
3)存儲空間容易獲取:提供免費虛擬空間的服務器在互聯網上多如牛毛。
4)隱藏性強:Web代理是以網頁的形式存在的,也能嵌入到正常網頁中。
5)代理可選:木馬能從多個代理中動態的選擇最快的可用代理。
6)更新簡單:代理的更新只需要往代理服務器上傳新的代理網頁即可。木馬更新可選的代理則由木馬通過網絡速度和可用性自動的更新。
Web代理又稱網頁代理,是一種在網頁上運行的代理服務器程序。其不用任何設置,輸入網址選擇好代理服務器便可以訪問的優點已經成為時下最流行的代理訪問方式。網頁代理給客戶端提供遠程網站上的網頁和文件的高速緩存,使客戶端可以更加快速安全的瀏覽遠程網站。目前網絡上流行的幾款 Web代理包括:PHPProxy[8]、Nginx以及 Glype proxy script等。然而目前網絡上流行的Web代理多為普通的單代理系統,僅僅支持Web瀏覽,有些甚至不能支持圖片瀏覽和腳本運行等操作,更別說支持木馬的通信了。最主要的是,木馬之間的通信數據多是二進制數據,而Web代理多用于訪問網站,另外專用于木馬通信的Web代理無需考慮Session,cookies等問題,也無需考慮界面問題,因此需要針對Web代理進行改造使其能夠用來作為受控端和控制端之間的代理。
以下以受控端為例,闡述受控端和Web代理進行通信的原理和流程。
2.2.1 接收數據
以下以PHP語言為例,闡述Web代理如何獲取受控端發送的二進制數據:

由于Web代理主要處理二進制數據,因此所有發送給 Web代理的請求統一設定為 POST。$HTTP_RAW_POST_DATA保存的就是受控端POST的完整數據包。
Web代理接收到的數據包分為兩類,一類用于請求數據,一類則是數據。因此Web代理的工作也就分為兩類:將數據保存為臨時文件,或讀取臨時文件中的數據返回給受控端。臨時文件的類型主要分以下幾種。
1)COMMAND: 操作命令,類似瀏覽文件夾,查看文件內容等操作。
2)CMD_COMMAND: CMD命令,類似Ping, tracert等在控制臺執行的命令。
3)RESPONSE: 操作命令的執行結果,對應與COMMAND。
4)CMD_RESPONSE: CMD命令的執行結果,對應與CMD_COMMAND。
5)DOWNLOAD: 通過木馬下載的文件。
6)UPLOAD: 往寄宿主機上傳的文件。
2.2.2 數據包格式
受控端發送到Web代理的數據,需要按一定的格式打包。下面是該數據包的包頭格式:

以下是在通信過程中用到的幾個字段的描述。
bVerb:宏定義,為POST時,Web代理將該數據包保存成臨時文件;為 GET時,Web代理立即返回對應的臨時文件。
bFileType:宏定義,bFileType對應臨時文件的類型。
HostName:保存受控端的主機名。Web代理通過該字段判斷當前處理的是哪個主機的臨時文件。
dwVersion:受控端應用程序的版本。
dwPackID:數據包ID;該字段可以有效的判斷臨時文件是否已失效,并維護通信的順序。
bOrderType:命令類型,由控制端填寫,受控端解析。一般情況下和通信無關,但是如果是特殊命令只需要代理執行而不轉發給受控端的數據包,則需要解析該字段。
dwOffset:分片偏移,如果數據包由分片的話,需要解析該字段。
dwDataBuffer:數據包大小,受控端返回的數據如果超過了一個數據包緩存大小的話,就需要分片;該字段和dwOffset配合使用。
2.2.3 通信流程
在整個通信過程中,都是受控端首先發起連接請求,并將數據POST給Web代理。Web代理通過解析POST上來的數據進行相應的動作,并返回執行結果。如果是控制端和受控端之間通信的數據包,則以臨時文件的形式保存和讀取。
Web代理數據處理流程:
解析 bOrderType字段,判斷是否特殊命令,如果是,則立即執行特殊命令,如:清理服務器所有臨時文件,否則進入下一步;
解析bFileType字段,判斷臨時文件的文件名;
解析HostName,判斷臨時文件的路徑;
根據數據包的分片偏移字段和數據包大小字段判斷數據包是否分片,如果數據包是分片傳輸,則根據dwOffset字段來讀/寫臨時文件;
解析bVerb字段,按照前面解析的信息,將數據包保存成臨時文件,或讀取對應的臨時文件返回給受控端。
通過讀取和保存臨時文件,Web代理為控制端和受控端之間提供了數據轉發。
控制端和Web代理之間的通信流程:
控制端發送數據包給Web代理,數據包ID為n;
Web代理將數據包緩存成臨時文件,bFileType字段“命令”,臨時文件類型為“命令文件”;
控制端輪詢Web代理,獲取數據包ID為n的臨時文件,臨時文件類型為“命令執行結果”;
如果Web代理緩存有類型為“命令執行結果”的臨時文件,則返回給控制端。
受控端和Web代理之間的通信流程:
受控端發送數據包給Web代理,輪詢數據包ID為n的臨時文件,臨時文件類型為“命令文件”;
受控端執行完命令后,將命令執行結果數據發送給Web代理;
Web代理將命令執行結果緩存成臨時文件,文件類型為“命令執行結果”。
多代理技術是指受控端并不通過單一的代理,而是通過多個代理,連接控制端的技術。受控端通過一定的算法計算出最佳代理,并通過該代理發送數據。
圖1為多代理的網絡拓撲圖。
代理列表以加密文件的形式,保存在受控端主機的特殊文件夾中。代理列表可以通過3種方式獲取:
1)安裝木馬時默認配置。
2)通過郵件服務器獲取。
3)通過控制端手動上傳。

圖1 多代理網絡拓撲
圖2是多Web代理選擇算法流程圖。

圖2 代理選擇算法流程
受控端首先讀取本地默認配置的代理服務器列表,如果讀取成功則依次嘗試和列表上的所有代理服務器進行連接,并找出速度最快的一個用于接下來的通信。
如果本地沒有配置默認的代理服務器列表,或者讀取失敗,則從配置的郵件服務器上獲取。因此配置受控端時就必須配置一個郵件服務器。
受控端只有在本地的代理列表無效的時候,才會去郵件服務器更新代理列表,因此對郵件服務器的訪問也不是很頻繁,同時也能盡可能的利用代理列表上的資源。當然,也能夠通過上傳代理列表文件的方式更新。
該課題的研究提供了一種新的通信方式,采用HTTP隧道技術與Web代理進行通信,提高了通信的成功率,極少有防火墻會進行攔截,網絡管理員也很容易忽略這種看似正常的Web訪問。采用多代理技術又大大提高了控制端和寄宿主機之間建立連接的成功率和連接速度,使得用戶能夠選擇一條既可靠,速度又較快的連接鏈路,也大大提高了用戶體驗。該項技術的成功實施,能夠使木馬很好的適應各種受限網絡[9-12],幫助木馬解決IP封鎖問題,提高受控端和客戶端之間的通信質量。在解決木馬生存性問題的同時,也為今后的木馬制作,在通信方面拓展了一種新的思路。當然,在多代理選擇算法上,還有很大的改善空間。
[1] 賈文麗,薛強,孫濟洲.分布式端口反彈攻擊及檢測[J].計算機工程,2004(07):45-47.
[2] 羅紅,幕德俊,戴冠中. Research on Communication Techniques for Port Recall Trojan Horse[J].微電子學與計算機, 2006,23(02):193-197.
[3] 莊小妹. 木馬的入侵檢測技術與清除方法[J]. 內江科技, 2006(07):131-132.
[4] Web代理[EB/OL]http://baike.baidu.com/view/64380.htm.
[5] 黃偉峰.HTTP tunnel 技術在VOIP系統中的實現[J].微型電腦應用,2004(02):46-48.
[6] 網絡神偷[EB/OL].http://baike.baidu.com/view/812867.htm.
[7] 冰河木馬[EB/OL]. http://baike.baidu.com/view/295409.htm.
[8] PhpProxy介紹[EB/OL].http://baike.baidu.com/ view/2601068.htm.
[9] 胡耀東,武書彥.嵌入式網頁(IFRAME)病毒原理與防范[J]. 通信技術,2009,42(08):68-69.
[10] 高瑋,鄭連清.基于大體積文件傳遞的特洛伊木馬的設計方案[J]. 通信技術,2008,41(03):96-97,106.
[11] 藺聰,黑霞麗.木馬的植入與隱藏技術分析[J]. 信息安全與通信保密,2008(07):53-55.
[12] 鄧樂,李曉勇.基于IAT表的木馬自啟動技術[J]. 信息安全與通信保密,2007(02):151-153.