周趙軍,張 劍,彭春林
(①電子科技大學(xué) 電子科學(xué)技術(shù)研究院,四川 成都 611731;②中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
目前防火墻技術(shù)的迅猛發(fā)展,尤其是網(wǎng)關(guān)型防火墻,對(duì)進(jìn)入局域網(wǎng)的數(shù)據(jù)包檢查的非常嚴(yán)格,通過IP過濾,這種類型的防火墻能夠阻止陌生主機(jī)的數(shù)據(jù)包,甚至禁止局域網(wǎng)主機(jī)打開端口[1]。因此目前互聯(lián)網(wǎng)上流行的木馬通信方式除了直連型木馬,又衍生出了基于端口反彈的木馬通信方式。在加入了對(duì)代理的支持后,木馬的通信方式就更加復(fù)雜了。文中主要對(duì)木馬的通信方式進(jìn)行研究和改進(jìn)。在通信方式上集中了反彈型木馬[2-3]、Web代理[4]、HTTP隧道[5]等多種技術(shù)的優(yōu)勢(shì),并對(duì) Web代理進(jìn)行了增強(qiáng)使其在連接速度上有所提升。
目前互聯(lián)網(wǎng)上較為流行的木馬基本上都支持各類代理。比如網(wǎng)絡(luò)神偷[6]、國(guó)產(chǎn)冰河[7]、灰鴿子等木馬,支持的網(wǎng)絡(luò)連接方式包含:撥號(hào)上網(wǎng)、ISDN、ADSL、DDN、Cable Modem、NAT 透明代理、HTTP 的GET 型代理、HTTP 的 CONNECT 型代理、SOCKS4 代理、SOCKS4A 代理、SOCKS5 代理?;旧现灰苌暇W(wǎng)的電腦,就能夠被遠(yuǎn)程控制。
代理技術(shù)的使用大大提高的木馬的通信能力,從而提高了木馬的生存能力。但是在使用過程中也存在一定的缺陷:
(1)更新不方便
直連型木馬不存在這個(gè)問題,每次連接受控端時(shí),入侵者只需要實(shí)時(shí)的填寫代理的IP地址即可。
對(duì)于反彈型木馬,入侵者如果需要更新代理的話,則需要修改木馬的代理配置文件,然后通過命令使得木馬重新建立連接。
(2)帶寬不一定最優(yōu)
在入侵者和寄宿主機(jī)建立通信之前,以及通信過程中,入侵者至多只能知道當(dāng)前使用的代理是否可用,帶寬如何,而無法或很難與其他代理進(jìn)行比較。因此在木馬的通信過程中,入侵者使用的帶寬并不一定是最快的,甚至有可能是最慢的一個(gè),僅僅是可用而已。
(3)代理的穩(wěn)定性決定了一切
代理的建立一般分兩種情況:入侵者在其他寄宿主機(jī)上安裝代理程序、互聯(lián)網(wǎng)上提供的免費(fèi)代理;相對(duì)來說,互聯(lián)網(wǎng)上提供的免費(fèi)代理可用性非常的差,因?yàn)榇祟惔矸?wù)器會(huì)經(jīng)常更新,網(wǎng)速和可用性都不能很好的保證。使用其他寄宿主機(jī)做代理服務(wù)器,穩(wěn)定性會(huì)較好,但是一旦寄宿主機(jī)的系統(tǒng)用戶安裝殺毒軟件清理了木馬、重裝了系統(tǒng)、或者在防火墻上配置了IP過濾信息等,都有可能使得該臨時(shí)代理服務(wù)器失效,那么使用該代理的所有寄宿主機(jī)也就無法控制了,因此穩(wěn)定性也無法得到很好的保證。
為了彌補(bǔ)普通代理技術(shù)在木馬通信中的缺陷,木馬的控制端和受控端首先采用 HTTP隧道技術(shù)與Web代理進(jìn)行通信保證穿透性,同時(shí)采用多 Web代理保證代理的穩(wěn)定性和帶寬。以下是該方法的特點(diǎn)描述。
1)體積?。篧eb代理只需要對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),代碼量極小。
2)便于安裝:能夠很方便的嵌入到正常網(wǎng)站的網(wǎng)頁(yè)中;或上傳到任意虛擬空間即可。
3)存儲(chǔ)空間容易獲?。禾峁┟赓M(fèi)虛擬空間的服務(wù)器在互聯(lián)網(wǎng)上多如牛毛。
4)隱藏性強(qiáng):Web代理是以網(wǎng)頁(yè)的形式存在的,也能嵌入到正常網(wǎng)頁(yè)中。
5)代理可選:木馬能從多個(gè)代理中動(dòng)態(tài)的選擇最快的可用代理。
6)更新簡(jiǎn)單:代理的更新只需要往代理服務(wù)器上傳新的代理網(wǎng)頁(yè)即可。木馬更新可選的代理則由木馬通過網(wǎng)絡(luò)速度和可用性自動(dòng)的更新。
Web代理又稱網(wǎng)頁(yè)代理,是一種在網(wǎng)頁(yè)上運(yùn)行的代理服務(wù)器程序。其不用任何設(shè)置,輸入網(wǎng)址選擇好代理服務(wù)器便可以訪問的優(yōu)點(diǎn)已經(jīng)成為時(shí)下最流行的代理訪問方式。網(wǎng)頁(yè)代理給客戶端提供遠(yuǎn)程網(wǎng)站上的網(wǎng)頁(yè)和文件的高速緩存,使客戶端可以更加快速安全的瀏覽遠(yuǎn)程網(wǎng)站。目前網(wǎng)絡(luò)上流行的幾款 Web代理包括:PHPProxy[8]、Nginx以及 Glype proxy script等。然而目前網(wǎng)絡(luò)上流行的Web代理多為普通的單代理系統(tǒng),僅僅支持Web瀏覽,有些甚至不能支持圖片瀏覽和腳本運(yùn)行等操作,更別說支持木馬的通信了。最主要的是,木馬之間的通信數(shù)據(jù)多是二進(jìn)制數(shù)據(jù),而Web代理多用于訪問網(wǎng)站,另外專用于木馬通信的Web代理無需考慮Session,cookies等問題,也無需考慮界面問題,因此需要針對(duì)Web代理進(jìn)行改造使其能夠用來作為受控端和控制端之間的代理。
以下以受控端為例,闡述受控端和Web代理進(jìn)行通信的原理和流程。
2.2.1 接收數(shù)據(jù)
以下以PHP語言為例,闡述Web代理如何獲取受控端發(fā)送的二進(jìn)制數(shù)據(jù):
由于Web代理主要處理二進(jìn)制數(shù)據(jù),因此所有發(fā)送給 Web代理的請(qǐng)求統(tǒng)一設(shè)定為 POST。$HTTP_RAW_POST_DATA保存的就是受控端POST的完整數(shù)據(jù)包。
Web代理接收到的數(shù)據(jù)包分為兩類,一類用于請(qǐng)求數(shù)據(jù),一類則是數(shù)據(jù)。因此Web代理的工作也就分為兩類:將數(shù)據(jù)保存為臨時(shí)文件,或讀取臨時(shí)文件中的數(shù)據(jù)返回給受控端。臨時(shí)文件的類型主要分以下幾種。
1)COMMAND: 操作命令,類似瀏覽文件夾,查看文件內(nèi)容等操作。
2)CMD_COMMAND: CMD命令,類似Ping, tracert等在控制臺(tái)執(zhí)行的命令。
3)RESPONSE: 操作命令的執(zhí)行結(jié)果,對(duì)應(yīng)與COMMAND。
4)CMD_RESPONSE: CMD命令的執(zhí)行結(jié)果,對(duì)應(yīng)與CMD_COMMAND。
5)DOWNLOAD: 通過木馬下載的文件。
6)UPLOAD: 往寄宿主機(jī)上傳的文件。
2.2.2 數(shù)據(jù)包格式
受控端發(fā)送到Web代理的數(shù)據(jù),需要按一定的格式打包。下面是該數(shù)據(jù)包的包頭格式:
以下是在通信過程中用到的幾個(gè)字段的描述。
bVerb:宏定義,為POST時(shí),Web代理將該數(shù)據(jù)包保存成臨時(shí)文件;為 GET時(shí),Web代理立即返回對(duì)應(yīng)的臨時(shí)文件。
bFileType:宏定義,bFileType對(duì)應(yīng)臨時(shí)文件的類型。
HostName:保存受控端的主機(jī)名。Web代理通過該字段判斷當(dāng)前處理的是哪個(gè)主機(jī)的臨時(shí)文件。
dwVersion:受控端應(yīng)用程序的版本。
dwPackID:數(shù)據(jù)包ID;該字段可以有效的判斷臨時(shí)文件是否已失效,并維護(hù)通信的順序。
bOrderType:命令類型,由控制端填寫,受控端解析。一般情況下和通信無關(guān),但是如果是特殊命令只需要代理執(zhí)行而不轉(zhuǎn)發(fā)給受控端的數(shù)據(jù)包,則需要解析該字段。
dwOffset:分片偏移,如果數(shù)據(jù)包由分片的話,需要解析該字段。
dwDataBuffer:數(shù)據(jù)包大小,受控端返回的數(shù)據(jù)如果超過了一個(gè)數(shù)據(jù)包緩存大小的話,就需要分片;該字段和dwOffset配合使用。
2.2.3 通信流程
在整個(gè)通信過程中,都是受控端首先發(fā)起連接請(qǐng)求,并將數(shù)據(jù)POST給Web代理。Web代理通過解析POST上來的數(shù)據(jù)進(jìn)行相應(yīng)的動(dòng)作,并返回執(zhí)行結(jié)果。如果是控制端和受控端之間通信的數(shù)據(jù)包,則以臨時(shí)文件的形式保存和讀取。
Web代理數(shù)據(jù)處理流程:
解析 bOrderType字段,判斷是否特殊命令,如果是,則立即執(zhí)行特殊命令,如:清理服務(wù)器所有臨時(shí)文件,否則進(jìn)入下一步;
解析bFileType字段,判斷臨時(shí)文件的文件名;
解析HostName,判斷臨時(shí)文件的路徑;
根據(jù)數(shù)據(jù)包的分片偏移字段和數(shù)據(jù)包大小字段判斷數(shù)據(jù)包是否分片,如果數(shù)據(jù)包是分片傳輸,則根據(jù)dwOffset字段來讀/寫臨時(shí)文件;
解析bVerb字段,按照前面解析的信息,將數(shù)據(jù)包保存成臨時(shí)文件,或讀取對(duì)應(yīng)的臨時(shí)文件返回給受控端。
通過讀取和保存臨時(shí)文件,Web代理為控制端和受控端之間提供了數(shù)據(jù)轉(zhuǎn)發(fā)。
控制端和Web代理之間的通信流程:
控制端發(fā)送數(shù)據(jù)包給Web代理,數(shù)據(jù)包ID為n;
Web代理將數(shù)據(jù)包緩存成臨時(shí)文件,bFileType字段“命令”,臨時(shí)文件類型為“命令文件”;
控制端輪詢Web代理,獲取數(shù)據(jù)包ID為n的臨時(shí)文件,臨時(shí)文件類型為“命令執(zhí)行結(jié)果”;
如果Web代理緩存有類型為“命令執(zhí)行結(jié)果”的臨時(shí)文件,則返回給控制端。
受控端和Web代理之間的通信流程:
受控端發(fā)送數(shù)據(jù)包給Web代理,輪詢數(shù)據(jù)包ID為n的臨時(shí)文件,臨時(shí)文件類型為“命令文件”;
受控端執(zhí)行完命令后,將命令執(zhí)行結(jié)果數(shù)據(jù)發(fā)送給Web代理;
Web代理將命令執(zhí)行結(jié)果緩存成臨時(shí)文件,文件類型為“命令執(zhí)行結(jié)果”。
多代理技術(shù)是指受控端并不通過單一的代理,而是通過多個(gè)代理,連接控制端的技術(shù)。受控端通過一定的算法計(jì)算出最佳代理,并通過該代理發(fā)送數(shù)據(jù)。
圖1為多代理的網(wǎng)絡(luò)拓?fù)鋱D。
代理列表以加密文件的形式,保存在受控端主機(jī)的特殊文件夾中。代理列表可以通過3種方式獲取:
1)安裝木馬時(shí)默認(rèn)配置。
2)通過郵件服務(wù)器獲取。
3)通過控制端手動(dòng)上傳。
圖1 多代理網(wǎng)絡(luò)拓?fù)?/p>
圖2是多Web代理選擇算法流程圖。
圖2 代理選擇算法流程
受控端首先讀取本地默認(rèn)配置的代理服務(wù)器列表,如果讀取成功則依次嘗試和列表上的所有代理服務(wù)器進(jìn)行連接,并找出速度最快的一個(gè)用于接下來的通信。
如果本地沒有配置默認(rèn)的代理服務(wù)器列表,或者讀取失敗,則從配置的郵件服務(wù)器上獲取。因此配置受控端時(shí)就必須配置一個(gè)郵件服務(wù)器。
受控端只有在本地的代理列表無效的時(shí)候,才會(huì)去郵件服務(wù)器更新代理列表,因此對(duì)郵件服務(wù)器的訪問也不是很頻繁,同時(shí)也能盡可能的利用代理列表上的資源。當(dāng)然,也能夠通過上傳代理列表文件的方式更新。
該課題的研究提供了一種新的通信方式,采用HTTP隧道技術(shù)與Web代理進(jìn)行通信,提高了通信的成功率,極少有防火墻會(huì)進(jìn)行攔截,網(wǎng)絡(luò)管理員也很容易忽略這種看似正常的Web訪問。采用多代理技術(shù)又大大提高了控制端和寄宿主機(jī)之間建立連接的成功率和連接速度,使得用戶能夠選擇一條既可靠,速度又較快的連接鏈路,也大大提高了用戶體驗(yàn)。該項(xiàng)技術(shù)的成功實(shí)施,能夠使木馬很好的適應(yīng)各種受限網(wǎng)絡(luò)[9-12],幫助木馬解決IP封鎖問題,提高受控端和客戶端之間的通信質(zhì)量。在解決木馬生存性問題的同時(shí),也為今后的木馬制作,在通信方面拓展了一種新的思路。當(dāng)然,在多代理選擇算法上,還有很大的改善空間。
[1] 賈文麗,薛強(qiáng),孫濟(jì)洲.分布式端口反彈攻擊及檢測(cè)[J].計(jì)算機(jī)工程,2004(07):45-47.
[2] 羅紅,幕德俊,戴冠中. Research on Communication Techniques for Port Recall Trojan Horse[J].微電子學(xué)與計(jì)算機(jī), 2006,23(02):193-197.
[3] 莊小妹. 木馬的入侵檢測(cè)技術(shù)與清除方法[J]. 內(nèi)江科技, 2006(07):131-132.
[4] Web代理[EB/OL]http://baike.baidu.com/view/64380.htm.
[5] 黃偉峰.HTTP tunnel 技術(shù)在VOIP系統(tǒng)中的實(shí)現(xiàn)[J].微型電腦應(yīng)用,2004(02):46-48.
[6] 網(wǎng)絡(luò)神偷[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] 胡耀東,武書彥.嵌入式網(wǎng)頁(yè)(IFRAME)病毒原理與防范[J]. 通信技術(shù),2009,42(08):68-69.
[10] 高瑋,鄭連清.基于大體積文件傳遞的特洛伊木馬的設(shè)計(jì)方案[J]. 通信技術(shù),2008,41(03):96-97,106.
[11] 藺聰,黑霞麗.木馬的植入與隱藏技術(shù)分析[J]. 信息安全與通信保密,2008(07):53-55.
[12] 鄧樂,李曉勇.基于IAT表的木馬自啟動(dòng)技術(shù)[J]. 信息安全與通信保密,2007(02):151-153.