楊順韜
(廣西交通職業技術學院 教務處,廣西 南寧 530023)
隨著計算機網絡技術在各行業和生活中的不斷普及,互聯網已全面進入人們的工作和生活中,越來越多的類似于網上銀行賬號、電子郵箱賬號、游戲賬號、OA系統賬號等敏感信息成為了網絡安全攻擊和防范技術研究的重點對象,從而使得木馬程序與防火墻和入侵檢測技術同步發展起來。
傳統木馬能及時被內部網絡安全工具發現進行分析,其主要原因如下[1]:
(1)與監控端的通訊為明文傳輸方式。
(2)監控端是基于特定操作系統的應用軟件,其兼容性差,并且無法實現基于WEB技術下的無差異性(任何操作系統平臺、任何時間地點)監控。
(3)監控端與客戶端采用私有通信協議,無標準化,可擴展性差。
防火墻技術已經實現了從包過濾技術發展到多層次內容檢測,同時,入侵檢測系統(IDS)能及時記錄在內、外網交換的數據信息以供管理員審查。在防火墻技術與入侵檢測技術不斷發展的過程中,各類安全防御系統及網絡安全工具可以很好的發現木馬,對其傳輸數據進行攔截,并具備防火墻及入侵檢測聯動監測和防護功能,從而使得傳統的木馬技術無法正常工作。
因此,借助于HTTP協議的跨平臺性和標準性,利用匿名Diffe-Hellman在基于HTTPS隧道技術來穿透防火墻并使入侵檢測系統記錄失效,利用Restful Web service建立統一的木馬監控平臺將有效的解決傳統木馬程序的缺陷。
典型的木馬關鍵技術一般分為反向鏈接技術、端口復用技術、無端口技術、遠程線程注入技術幾種,根據木馬關鍵技術的入侵模式和特征分析,國內外學者研究了很多反木馬技術,也稱為木馬檢測技術。從木馬檢測技術的發展現狀看,主要通過防火墻、入侵檢測、特征碼、實時監控、虛擬機、啟發式技術事先對木馬程序進行防御,具體原理如下[2]:
防火墻技術:主要通過控制網絡通信和監控注冊表的修改來實現反木馬的目的。
入侵檢測技術:通過收集操作系統、系統程序、應用程序、網絡包等信息,發現系統中違背安全策略或危及系統安全的行為的分析來實現木馬程序檢測的目的。
特征碼掃描:通過對非法程序樣本進行分析,提取“特征碼”,寫入反病毒軟件的特征碼庫實現軟件對木馬程序的識別和防御。
實時監控技術:通過多個不同的角度對流入、流出系統的數據進行過濾,檢測并處理其中可能含有的非法程序代碼實現木馬程序的防御。
虛擬機技術:模擬一個程序的運行環境,讓木馬程序在其中運行如同在真實的環境中不斷顯露出其病毒特征的木馬防御程序。
啟發式技術:通過抽取病毒的傳染規則,形成一組規則集,來判斷一個程序是否屬于木馬病毒技術。
筆者將以木馬客戶端由內向外發起的通信和木馬服務器對木馬監控進行分析,研究以匿名HTTPS隧道的木馬技術,利用防火墻的信任關系、數據加密性和HTTP協議的跨平臺性和標準性實現防火墻穿透應用。
結合木馬植入、加載、反清除、隱藏、信息獲取及通信等木馬關鍵技術的現狀,針對一般防火墻允許向外發起連接而拒絕由外部向內部發起連接請求的安全策略,利用防火墻信任HTTPS協議的特點,將獲取的用戶信息封裝到防火墻“信任”的協議中,結合反彈木馬的反向連接技術(HTTP協議為客戶端請求、服務器端響應的連接協議),實現防火墻穿透。
HTTPS協議是基于客戶端/服務器端模式,是面向連接的。典型的HTTPS協議一般需要PKI基礎設施和證書,在木馬程序中加入PKI基礎設施或證書會在很大程度上降低木馬程序的隱蔽性,因此,匿名的HTTPS是最好的選擇,匿名的HTTPS模式的通信原理如圖1所示。

圖1 匿名HTTPS通信流程
通過對匿名HTTPS協議的通信流程與反向連接型木馬的通信流程可看出,HTTPS模型的通信與反向連接型木馬通信流程一致,這也證明了反向木馬解決了傳統木馬通信與HTTP協議通信架構矛盾的實際問題。
為實現HTTPS隧道的防火墻穿透,依據HTTPS協議對通信數據進行封裝,將真正的HTTP消息封裝到TLS的記錄協議中進行傳輸,在應用層開始傳遞數據時,TLS協議對數據進行壓縮并添加消息認證碼(MAC),同時,進行加密和TLS記錄協議頭部,傳輸至操作系統協議棧,在協議棧中完成TCPIP頭部添加,由網卡發送。接收端接收數據后,完成IP與TCP頭部的剝離,解密TLS消息,確認信息完整性后,獲得數據信息[3]。過程如圖2所示。
注:TLS記錄協議是TLS協議的一種,用于數據傳輸加密,還有TLS更換密碼規格協議,TLS警告協議和握手協議等。

圖2 HTTPS協議數據包封裝格式
以openssl為TLS庫為例。
2.3.1 核心代碼模塊分析
眾所周知,在TCP完成三次握手之后,安全會話就建立了,其客戶端的代碼片段一般為:
SSL_CTX*cts=ssl_CTX_net(TL Sv1_client_method());
SSL_CTX_set_cipher_list(ctx,“ADH-AES256-SHA”);
ssl=SSL_new(ctx),SSL_set_bio(ssl,conn,conn);
SSL_connet(ssl).
“ADH-AES256-SHA”作為會話建立的關鍵部分,采用了匿名的Diffe-Hellman協議實現密鑰交換和AES256加密,同時,利用SHA-1認證了消息的完整性,然后構建一個SSL對象,將其綁定到創建的SSL文本對象上。實現方法如下[4]:
(1)將ctx對象導入SSL_new函數庫中,使其返回一個SSL對象;
(2)通過SSL_conntect(SSL)實現安全對話連接,發送Client Hello報文(報文中包含TLS版本號及安全關聯“ADH-AES256-SHA”),等待服務器端回復Server Hello報文和密鑰交換信息,服務器端主要代碼:
viod THREA_CC server_thread(viod*arg)
{
SSL*ssl=(SSL*)arg;SSL_accept(ssl);
do_server_loop(ssl);
…
_endthread();
}
(3)服務器端開啟Server_thread線程,通過SSL—accept(SSL)接收客戶端的Client Hello報文,發送Server Hello報文、Server Key Ecchange、Server Hello Done報文進行安全會話的連接。
2.3.2 HTTPS通信模塊實現
HTTPS通信是在服務器端和客戶端建立安全會話的基礎上實現的,只要將客戶端應用的HTTP頭部信息通過SSL_write寫入到SSL對象中,并將服務端回復應答以標準輸出即可,客戶端主要代碼如下:
Static cha*REQUEST_TEMPLATE=”GET/HTTP/1.1\r user-agent:https clinet(yst) Host:%s ”;
Request=(char*)malloc(request_len);
snprintf(request,request_len,REQUEST_TEMPLATE,SERVER,PORT);
request_len=strlen(request);
SSL_write(ssl,request,request_len);
While(1)
{
SSL_read(ssl,buf,BUFSIZE);
fwrite(buf,1,len,stdout);
}
服務器端代碼通過SSL_read函數讀取客戶端應答請求,同樣,依據REPLY_TEMPLATE構造HTTPS回復信息,通過SSL_write函數發送到客戶端。
Web Service是讓兩臺設備在網絡中實現通信的一種方式,其定義可為一個用來支持在網絡上進行設備與設備之間進行互相操作的軟件。架構Web Service必須解決的兩個問題是“客戶端如何告知服務器端行為目標是什么”、“客戶端如何告知服務器端實現操作的數據集合”。而將Web Service中將表達方式信息放入HTTP中的一種有效途徑,其具有標準名稱的特點使得通信具備統一性是最大的優勢,不僅實現了客戶端與服務端的訪問名稱的統一性,且可將客戶端的行為訴求放入URI路徑中,操作簡單、目的明確。例如:客戶端想獲取一個搜索下的BBS的數據結果,其URI應為:http://域名/search?q=BBS。
由此可見,要建立實現Restful的Web Service可以通過在Restful的架構中,方法信息被放在HTTP中或在面向資源的架構中,作用域被放在URI中的組合方式實現。只要在客戶端給定了HTTP請求的第一行,服務器端就能理解客戶端想要實現的行為目標,其行為簡潔而有效,為木馬程序實現防火墻的穿透、數據獲取、遠程控制等奠定了高效的可行性基礎。
木馬植入客戶端和控制服務器端的實驗性軟、硬件配置分別為:
客戶端使用的操作系統為Windows XP sp3,IP地址為172.16.10.10/24,啟用自帶防火墻,安裝市面常見的天網、江民、卡巴斯基等防火墻,并升級、更新。
服務器端采用操作系統同樣為Windows XP sp3,IP地址為172.16.10.100/24。
(1)利用后門技術將木馬程序植入客戶端。
(2)在服務器端構架Restful Web Service結構。
(3)客戶端向服務端發出通信請求,完成TCP三次握手,形成通信信道鏈接。
(4)客戶端與服務端之間開始相互傳送報文(Hello)、協商通信版本(TLS)、壓縮方法、安全套件等。
(5)服務端與客戶端開展HTTPS通信,并同時實現密鑰交換。結果如圖3:

圖3 客戶端與服務端通信過程
實驗結論:在客戶端的各類防火墻開啟的情況下,服務器與客戶端的通信鏈路可建立,實現正常通信,防火墻對TCP的443端口未有阻止行為,在加密通信的過程中,防火墻無法實現對應用層的數據進行分析,無法做出判斷。
筆者針對防火墻的網絡安全防護特征,研究了利用可信端口的新型木馬技術,通過獲取用戶數據,并將其封裝于采用匿名Diffe-Hellman的協議中,以基于HTTPS隧道技術實現了在無需PKI體系支持下的密鑰交換的信任關系,建立通信過程。同時,大幅提高了數據傳輸動作的隱蔽性,使得木馬程序穿透防火墻的行為以及傳輸內容更難被審查。
實驗結果確定了該項新木馬技術能實現操作系統自帶防火墻和市場主流軟防火墻的穿透,并形成可信任的通信信道,實現獲取行為目標數據的目的。
[1]張昊.木馬技術發展的新趨勢探討[J].科技創新導報,2011,7(5):555-559.
[2]梁偉.校園網用戶行為分析系統研究與實現[D].北京:北京交通大學,2009.
[3]史記,張樂,陸旭飛.基于ICMP木馬攻擊技術和防范策略探討[J].無線互聯科技,2012(6):84-87.
[4]劉超,王軼駿,施勇.匿名HTTPS隧道木馬的研究[J].信息安全與通信保密,2011(12):78-80.
[5]黃偉,孟博,李云超.基于口令的安全用戶認證模型[J].現代電子技術,2009,12(21):57-60.