朱越凡,馬 迪,王 偉1,,毛 偉1,
1(中國科學院大學,北京 100049)
2(中國科學院 計算機網絡信息中心,北京 100190)
3(北龍中網(北京)科技有限責任公司,北京 100190)
一種NTP協議隱蔽通道①
朱越凡1,2,馬 迪3,王 偉1,3,毛 偉1,3
1(中國科學院大學,北京 100049)
2(中國科學院 計算機網絡信息中心,北京 100190)
3(北龍中網(北京)科技有限責任公司,北京 100190)
網絡隱蔽通道技術是一種被廣泛應用的網絡攻擊技術.掌握隱蔽通道的構建機制,對制定相應網絡防御策略具有指導意義.利用互聯網不可或缺的NTP時間同步協議,提出了基于NTP協議的隱蔽通道構建機制.通過分析NTP協議查詢/應答機制的特點,并研究可被用作載荷的NTP協議數據單元,設計了下行通道和上行通道分離的NTP隱蔽通道,它將隱藏信息偽裝成普通NTP報文,進行隱秘消息的傳遞.NTP報文的普及性和不可替代性,使得基于NTP的隱蔽通道具有穿透能力強、隱蔽性好的優點.試驗表明,提出的NTP隱蔽通道可以攜帶較多的秘密信息,穿透網絡監測設備.下一步的工作將圍繞NTP隱蔽通道的認證、加密等安全機制進行研究.
隱蔽通道;網絡安全;NTP協議;協議特點;傳輸帶寬
在信息傳遞過程中,我們通常使用加密技術來對需要保密的數據進行處理.加密技術使得信息對于第三方變得不可讀.但這并不能掩蓋通信存在的事實,并且很容易引起第三方的嗅探、竊聽等被動攻擊行為.隱藏信道試圖隱藏通信的存在.隱蔽通道(Covert Channel,CC)是指允許進程以危害系統安全策略的方式傳輸信息的通信信道[1].最初它被提出是為了解決囚犯問題.兩個囚犯進行通信,但他們之間的通信可以被獄警監聽并決定是否允許.因此囚犯必須設計一種方法來使它們的對話看起來無害卻隱藏著秘密消息.
網絡隱蔽通道技術是一種十分常見的網絡攻擊技術.該技術將隱蔽消息偽裝成普通消息在網絡中進行通信.防范隱蔽通道的最好辦法就是掌握隱蔽通道建立的機制,以便制定相應的網絡安全防護策略,來消除隱蔽通道給網絡安全帶來的隱患.構造隱蔽通道的方法通常是通過修改數據包、利用協議機制的弱點或者利用協議的空閑字段來實現[2].例如,張令通等利用TCP協議首部中的序列號和確認號字段建立了隱蔽通道[2];楊智丹等對IP報頭指針字段選項的網絡隱蔽通道技術進行了研究[3];羅成等利用Windows消息機制來控制擁有網絡訪問權限的應用程序,進而構建網絡隱蔽通道[4];Iodine利用DNS中NULL記錄類型構造Raw UDP模式,使得整個UDP載荷均為隱蔽通道[5].在NTP隱蔽信道的研究方面,Action Dan利用NTP報文 Transmit Timestamp字段作為隱蔽通道傳遞forkbomb指令[6],實施隱蔽通道攻擊;但這個方法帶寬有限,不適用于傳遞消息.
NTP是網絡時間協議(Network Time Protocol),是為實現高精確度的時間同步,而設計的網絡時鐘同步協議.NTP使用層次式時間分布模型,具有相當高的靈活性,可以適應各種互聯網環境,是互聯網上公認的時間同步工具[7].目前,基于NTP的隱蔽通道并沒有引起應有的重視.然而,網絡中大量存在的開放式分布的NTP服務器,高度開放的NTP協議123端口,以及NTP報文基于不可靠的UDP進行傳輸的協議特性,使得NTP協議非常容易被黑客利用,實施隱蔽通道攻擊.因此,研究基于NTP協議的隱秘通信方法對網絡安全防護具有重要的指導作用.本文利用NTP查詢/應答機制的協議特性,使用NTP協議報文中易被忽略的數據單元字段,提出一種高效的上下行分離的隱蔽通道方法,以達到穿透防火墻和躲避入侵檢測系統的目的.
隱蔽通道早期的定義只限于操作系統內部,重點研究操作系統內的安全.隨著網絡技術的發展,隱蔽通道逐漸被應用到網絡技術中.隱蔽通道由此有了更加廣泛的定義:任何利用非正常的通信手段在網絡中傳遞信息,突破網絡安全機制的通道都可以稱為隱蔽通道[8].
1.1 隱蔽通道類型
根據隱藏隱蔽通道又分為存儲型和時序型[8].存儲型隱蔽通道通常利用協議字段的冗余嵌入隱蔽信息.時序型隱蔽通道常利用一系列協議數據包的某種排序或相鄰數據包到達的時間差傳遞秘密信息.
根據嵌入的位置,協議隱藏可分為結構型和非結構型[9].結構型隱蔽通道指在協議的固定格式部分(協議首部)嵌入信息.非結構型隱蔽通道在協議攜帶的數據部分嵌入信息.
因為時序型隱蔽通道易受網絡中不穩定因素干擾,導致數據包延遲或丟失,不利于隱藏信息的傳遞,因此本文NTP隱蔽通道將使用存儲型隱蔽信道.在嵌入位置方面,本文對結構型和非結構型NTP隱蔽通道的效率和帶寬等也做了相關研究和分析.
1.2 隱蔽通道構建方法
構造隱蔽通道的關鍵有三點[8]:
1)尋找合適的協議.通常網絡應用層中隱蔽通道都是以HTTP、SMTP、DNS為載體;這主要是因為這些協議對現在的企業網絡來說是必須的.
2)尋找協議中的漏洞.即選擇協議頭部中的合適字段作為隱蔽通道的數據域.雖然這些數據域的有效載荷有限,但是Lampson[7]指出即使一個只能一天傳輸一位的隱蔽通道在特定的環境下也能夠帶來危害.
3)偽造要發送的數據.通常對要發送的數據進行加密.這樣可以躲避IDS檢測,讓隱蔽通道發揮更大的作用.
2.1 NTP協議的工作原理
NTP以客戶機/服務器模式進行通信:客戶機發送一個請求數據包,服務器接收后回送一個應答數據包[9].兩個數據包都帶有發送和接收的時間戳,根據這四個時間戳來確定客戶機和服務器之間的時間偏差和網絡時延.

圖1 時間同步算法時序
如圖1所示,t1為客戶機發送查詢請求包的時刻, t2為服務器收到查詢請求包的時刻,t3為服務器回復時間信息包的時刻,t4為客戶機收到時間信息包的時刻(t1、t4以客戶機的時間系統為參照,t2、t3以服務器的時間系統為參照).由此可得信息包在網絡上的傳輸時間為:

當請求信息包和回復信息包在網上的傳輸時間相等時,單程網絡時延為:

時間偏差為:

可以看到,θ、δ只與t2和t1的差值、t3和t4的差值相關,而與t3和t2的差值無關,即最終的結果與服務器處理請求所需的時間無關.據此,客戶機即可通過這4個時間戳計算出時間偏差θ和網絡時延δ去調整本地時鐘.
2.2 NTP的報文格式
NTP數據包的傳輸采用UDP協議.在UDP消息頭之后,緊接著的數據格式如圖2所示[10].

圖2 NTP報文格式
主要字段的解釋如下:
LI(Leap Indicator):長度為2比特,值為“11”時表示告警狀態,時鐘未被同步.為其他值時NTP本身不做處理.
VN(Version Number):長度為3比特,表示NTP的版本號,目前的最新版本為4.
Mode:長度為3比特,表示NTP的工作模式.不同的值所表示的含義分別是:0未定義、1表示主動對等體模式、2表示被動對等體模式、3表示客戶模式、4表示服務器模式、5表示廣播模式或組播模式、6表示此報文為NTP控制報文、7預留給內部使用.
Stratum:系統時鐘的層數,取值范圍為1~16,它定義了時鐘的準確度.層數為1的時鐘準確度最高,準確度從1到16依次遞減,層數為16的時鐘處于未同步狀態,不能作為參考時鐘.
Poll:輪詢時間,即兩個連續NTP報文之間的時間間隔.
Precision:系統時鐘的精度.
Root Delay:本地到主參考時鐘源的往返時間.
Root Dispersion:系統時鐘相對于主參考時鐘的最大誤差.
Reference Identifier:參考時鐘源的標識.
Reference Timestamp:系統時鐘最后一次被設定或更新的時間.
Originate Timestamp:NTP請求報文離開發送端時發送端的本地時間.
Receive Timestamp:NTP請求報文到達接收端時接收端的本地時間.
Transmit Timestamp:應答報文離開應答者時應答者的本地時間.
Extension Field:可選擴展字段.最小填充長度為16個字節,最大填充長度尚未被定義.
Key Identifier:客戶機和服務器雙方協商的密鑰(可選字段).
dgst:用密鑰計算得出的NTP頭部和擴展字段的哈希值(可選字段).
3.1 NTP隱蔽通道的基本原理
NTP隱蔽通道技術的基本思想是利用NTP請求和應答建立隱蔽通道,實現數據傳輸.通信前雙方商量好隱藏信息的字段和編碼方式等規則,發送方按照這個規則將隱秘信息偽裝、編碼、發送,接收方按照約定接收、解碼、提取隱秘信息.簡單的NTP隱蔽通道的工作模式如圖3所示.

圖3 上行通道和下行通道分離的NTP隱蔽通道
普通的NTP隱蔽通道在通信過程中會產生大量來自同一主機的NTP請求包和返回該主機的NTP應答包,流量分布特征十分顯著,很容易被入侵檢測系統識別出異常[1].為了降低NTP隱蔽通道被檢測的風險,我們利用NTP報文基于面向無連接的UDP協議工作的特點,如圖4所示,在客戶端節點處偽造其他主機IP地址發送NTP時間同步請求,最終服務器返回響應包到偽造IP主機處,從而平衡流量分布.

圖4 偽造源IP發送NTP同步請求報文
3.2 使用NTP協議構建隱蔽通道的詳細方法
我們可以使用一種非常暴力的方法來構建NTP隱蔽通道:將基于UDP的服務運行在123端口,從客戶端直接向服務器發起通信,讓整個NTP報文處于Raw UDP模式.此時,整個UDP載荷均為隱蔽通道,通信效率顯著提升.然而,這些報文不是有效的NTP消息,流量分析工具解析這些報文時會出現格式錯誤,從而引起懷疑.因此,我們采用了更加具有欺騙性的手段,既能保證一定的通信帶寬,又使得攜帶隱蔽消息的報文符合基本的NTP協議包特征,避免被網絡上流量分析檢測工具識別出來.
1)基于報文數據單元構建上行通道
NTP時間同步機制是由客戶機直接發起時間同步請求,因此在上行信道只需要考慮哪些字段可以隱藏數據,而不用考慮信道的發起時間和通信頻率.根據網絡防護設備的一般規則設置,對于NTP協議包的校驗主要是報文頭部和MAC校驗.因此,除去報文頭部4個字節的屬性特征分布(狀態、版本、模式等)和末尾MAC字段常被提取和檢查,其余字段都易被檢測設備忽略,很適合作為隱藏消息字段.結合NTP協議中的設計不嚴密的部分,我們在上行通道使用下面幾個字段來隱藏數據.
① 利用時間戳(Timestamp)最低有效位(LSB)
NTP報文中有四個時間戳字段:參考時間戳、原始時間戳、接受時間戳、傳送時間戳.時間戳字段用的是二進制補碼編碼方式.此時我們將時間戳信息進行輕微的變換而使其仍符合時間信號特征.我們可以利用時間戳的最低有效位來隱藏信息.最低有效位指的是一個二進制數字中的第0位(即最低位).但是使用這種方式無法攜帶較多的數據,難以滿足文件傳送、遠程桌面控制等大數據量密集通信應用的需求.
② 利用參考標識符(Reference Identifier)字段
KOD(Kiss of Death)包是一種當連接狀態未定義或者無效時,客戶機和服務器之間傳遞狀態報告和訪問控制的數據包.這種數據包的參考標識符字段沒有格式要求且不認為具有有效數據.NTPV4協議指定時規定[10]:如果客戶端或者服務器的一端使用IPV6地址,另一端使用IPV4地址,兩方進行通訊時,將無法完成時間循環(time looping)校驗.此時參考標識符字段也沒有格式限制且不認為具有有效數據.因此,幾乎所有的網絡分析工具都不把參考標識符字段當成訪問控制的判斷依據.這為基于該字段的信息隱藏提供了非常有利的條件.
③ 利用擴展域(Extension Field)填充字段
在NTP協議的最新版本NTPV4中,可以在頭部之后,MAC校驗字段之前添加一個或多個擴展域. RFC5905中,擴展域的內容沒有被明確定義,但被強制要求最少填充至16字節,最大填充長度未作要求.這樣,根據UDP協議包的最大長度512字節,除去UDP報文首部8字節和NTP報文首部48字節,我們可以讓填充字段擴充到一個十分可觀的長度(456字節).
因此,上行通道即把客戶端的隱蔽信息傳送給服務器端.可攜帶數據的域:Timestamp、Reference ID、Extension Field.
客戶端請求:

2)基于協議構建下行通道
上文闡述的基于報文的隱蔽信道的方法同樣也適用于下行通道.但如同Action Dan利用NTP隱蔽信道傳輸數據時,遇到的服務器對客戶端單向被動下行信道帶寬不足的問題,我們可以利用NTP協議中不嚴密的地方,構建“合法”的通信信道.
①利用KOD包
一個可控的隱蔽通道應該具備指令信號,對上行和下行通道的流量開關和傳輸速率作出適當的控制.此時,我們可以使用KOD包中的參考標識符字段作為這種信號.這個字段特定的ASCII字符串(DENY and RSTR、RATE等)原本就是設計來實現客戶端和服務器之間的訪問控制.這種信號可以被沿用作為隱蔽通道信息傳遞的控制信號,作為下行信道中服務器端通知客戶機開啟和關閉隱蔽通道的指令信號.
② monlist指令
NTP服務包含一個 monlist功能[11],它被設計用于監控 NTP服務器.NTP服務器響應monlist指令后會返回與自己進行過時間同步的最后600個客戶端的IP.這意味著,一個很小的請求包,就能獲取到大量的活動 IP地址組成的連續UDP包.響應包按照每 6個IP進行分割,最多有100個響應包,通常每個包為480字節.利用monlist指令,可以得到一個非常不錯的下行帶寬.
因此利用NTP服務的monlist功能,可以將隱蔽數據偽裝成合理的響應包在網絡中進行傳輸.在monlist觸發指令下,NTP服務器可以使隱藏信道具有不錯的帶寬,實現“接受簡短命令,返回大量結果”的下行通道模式.
③ 利用listpeers指令
Listpeers指令的使用和monlist指令類似.NTP服務器響應 listpeers指令后就會返回與 NTP服務器進行過時間同步的所有對等機的IP地址.因此listpeers指令也可以作為下行信道的觸發指令來傳遞隱蔽信息.
因此,下行通道即把服務器端的隱蔽信息傳送給客戶端.可攜帶數據的域: Receive timestamp、Transmit timestamp、Reference ID、Extension Field.
服務器端請求:

由于NTP協議具有普遍性和不可替代性,網絡監控設備通常不對NTP數據包做檢查.但在網絡安全措施較為嚴格的網絡中,網絡管理員強制關閉123端口,此時只允許從內部網絡向外部網絡發送NTP請求,而不允許外部網絡主動向內部網絡發送NTP數據包.這種情況有兩種解決辦法:第一,如果外部主機需要主動對內部主機發起隱蔽通道建立請求,那么就需要把NTP報文Mode字段設置成應答模式,偽裝成服務器或對等主機的應答報文,使其穿過防火墻;第二,內部主機首先發起NTP請求,內部主機和外部主機的連接即可建立[12].
3.3 基于NTP協議隱蔽通道的實現
在發送端,需要先構造NTP數據包:需要加強隱秘性的情況下,首先可以對隱秘信息進行加密,把加密后的信息映射到合法的NTP地址段單元,這樣的NTP數據包是“合法”的.在接收端通過提取相應字段的數據,進行解密操作,恢復隱秘信息.整個過程如圖5所示.

圖5 基于NTP協議的隱蔽通道的實現
通常情況網絡設備并不檢測NTP協議包的時間戳和擴展字段,甚至在一些入侵檢測系統(例如Snort)的用戶手冊里還強調:“如果用戶的服務器(比如NTP、NPS和DNS服務器)會妨礙端口掃描的探測,可以通知相應模塊忽略源自這些主機的TCP SYN和UDP端口掃描”.由此看出,這些網絡安全設備一般都在過濾包時主動忽略NTP包.因此從理論上說這種隱蔽通信是可行的;本文通過XCAP方式進行NTP隱蔽通道通信試驗,穿過防火墻和局域網網關,在接收端正確接收到含有隱秘消息的數據包,從實踐中證明了本文的方法.

圖6 客戶端向服務器傳輸隱蔽信息
在圖6的實例中,客戶端發起NTP時間同步請求,將隱蔽信息Bob is a spy keep him under surveillance嵌入到NTP報文中.NTP報文最終送至NTP服務器,服務器端解析NTP報文可以獲得隱蔽信息.
隱蔽通道建立時,還必須考慮安全方面的因素,以保護隱蔽通道資源.本研究下一步工作將從以下幾個方面展開[13]:
1)認證:客戶端和服務器必須相互認證,以免第三方的數據干擾,防止隱蔽通道資源被惡意占用.
2)數據流加密:由于NTP協議報文的傳送一般情況下采用明文形式傳送,所以許多網絡嗅探器可以捕捉到網絡中傳輸的NTP數據包,并分析出NTP報文中的內容,這樣NTP隱蔽通道易被發現,從而降低NTP隱蔽通道的安全性.對于這種情況,通常我們可以對NTP隱蔽通道中數據流進行加密.
3)數據完整性:為了檢查隱蔽通道在傳輸數據的過程中數據是否被篡改,可以沿用NTP報文中的可選字段dgst字段存放校驗哈希值來保證數據完整性.
4)重放保護:為避免攻擊者利用以前的通信記錄來訪問客戶機或者服務器,客戶機和服務器應該制定相應機制應對重放攻擊.
目前,許多黑客正在利用基于NTP的隱蔽信道來進行攻擊,這主要是因為基于NTP協議的隱蔽通道有著它特有的優勢:
1)目前絕大多數網絡都開放 NTP服務.在Fyodor組織2014年互聯網主機端口開放狀況報告中, NTP所在的123端口排名第四位,僅次于NetBIOS協議137端口、SNMP協議161端口和SQLServer查詢的1434端口,而居然比DNS查詢53端口開放程度還要高.NTP協議數據包能順利通過防火墻、NAT設備而不被過濾或攔截.這些為基于NTP協議構建隱蔽通道創造了有利條件.
2)蒙騙式通信.UDP協議是面向無連接的.NTP隱蔽通道利用NTP報文基于UDP協議進行傳輸的特點,在NTP隱蔽通道的內部網絡源主機節點處隨機偽造內部網絡其他主機IP發送偽裝的NTP查詢請求,最終服務器響應包會返回到其他主機IP,從而平衡流量分布特征.
3)較高的帶寬.NTP協議報文有較多可以攜帶隱蔽信息的字段.僅在NTP報文頭部(48字節),就有若干個常被忽略而不被檢測的協議數據單元.此外,我們還可以利用NTP報文的擴展字段作為隱藏信息的載體.
本文利用互聯網公認的時間同步工具NTP協議的通用性和透明性,提出了基于NTP協議的隱蔽通道構建機制,是非常具有發展前景的信息隱藏技術.本文通過分析NTP協議數據單元,最大限度地利用NTP報文載荷,構建了上行隱蔽通道;充分利用查詢/應答機制特點,設計了“接受簡短命令,返回大量結果”的下行隱蔽通道:將隱藏信息偽裝成普通的NTP報文,進行隱秘消息的傳遞.本文提出的基于NTP協議的隱蔽通道技術具有穿透力強,隱蔽性好,流量分布特征不明顯等優點.
1王永杰,劉京菊.基于DNS協議的隱蔽通道原理及性能分析.計算機工程,2014,40(7):102–105.
2張令通,羅森林.基于TCP協議首部的網絡隱蔽通道技術研究.計算機工程與科學,2014,36(6):1072–1076.
3楊智丹,劉克勝,王康,汪松鶴.基于IP報頭選項的網絡隱蔽通道技術.計算機工程,2009,35(13):125–127.
4羅成.基于Windows消息機制的HTTP隱蔽通道的設計與實現[碩士學位論文].上海:上海交通大學,2008.
5廖曉鋒,邱桂華.一種基于Web訪問模型的網絡隱蔽通道.計算機系統應用,2013,22(2):10–14.
6曹自剛,熊剛,趙詠,郭莉.隱蔽式網絡攻擊綜述.集成技術, 2014,(2):1–16.
7曹自剛.隱蔽式網絡攻擊檢測關鍵問題研究[碩士學位論文].北京:北京郵電大學,2015.
8王相林,趙顏昌,李黎.一種基于源IP地址的信息隱藏技術.計算機應用與軟件,2010,27(10):222–224.
9王永吉,吳敬征,曾海濤,丁麗萍,廖曉鋒.隱蔽信道研究.軟件學報,2010,21(9):2262–2288.
10沈燕芬.用于網絡時間同步的NTP協議.現代計算機(專業版),2004,(4):54–56.
11楊先杰.NTP協議的研究與應用.電力信息化,2011,9(6): 28–32.
12師海燕,梁洪波.基于ICMP協議的網絡隱蔽通道技術的分析.電腦知識與技術(學術交流),2007,2(10):963,989.
13強亮,李斌,胡銘曾.基于HTTP協議的網絡隱蔽通道研究.計算機工程,2005,31(15):224–225.
Covert Channel Based on NTPProtocol
ZHU Yue-Fan1,2,MADi3,WANG Wei1,3,MAO Wei1,3
1(University of ChineseAcademy of Sciences,Beijing 100049,China)
2(Computer Network Information Center,ChineseAcademy of Sciences,Beijing 100190,China)
3(Internet Domain Name System Beijing Engineering Research Center Ltd.,Beijing 100190,China)
The covert channel based on network protocol has been widely used for network attack.Mastering the mechanism of covert channel is important to the formulating of corresponding network defense strategy.Due to the widely use of network time protocol,a kind of covert channel technology based on NTP protocol is proposed in this paper.This paper analyzes features of query/response mechanisms in the NTP protocol,utilizes the message field as hidden payload and then designs separated downstream and upstream NTP covert channels,in which secret information is disguised and transmitted as normal NTP messages.The popularity and irreplaceability of NTP message make NTP covert channel endowed with the advantages of great ability of penetration and high quality of concealment.Test results show that the technology could carry relatively considerable information and easily penetrate the network monitoring device.The future work will focus on authentication,encryption and other security mechanisms in NTP covert channel.
covert channel;network security;NTP protocol;protocol features;transmission bandwidth
2016-08-03;收到修改稿時間:2016-09-08
10.15888/j.cnki.csa.005715