從資料包中可以看到,本次通訊中 hts(server)端向htc(client)端傳送了一個GET的標幟包,估計是去"取"剛才client端發來的資料包,而且是一次新的握手!為了驗證,我們分別在client,server端,執行netstat -an,結果證明了我們的觀察是正確的,如下:
client.yiming.com.51767 server.yiming.com.80 8760 0 8760 0 ESTABLISHED
client.yiming.com.51768 server.yiming.com.80 8760 0 8760 0 ESTABLISHED
在server端,執行netstat -an,結果如下:
server.yiming.com.80 client.yiming.com.51767 8760 0 8760 0 ESTABLISHED
server.yiming.com.80 client.yiming.com.51768 8760 0 8760 0 ESTABLISHED
果然,防火牆兩邊的系統都起了兩個socket,和一般程序不同,這是個比較特殊的現象。
GET動作完成後,server端又向client端傳送了一個資料包,內容是
HTTP/1.1 200 OK Content-Length: 102400
Connection: close
Pragma: no-cache
快取-Control: no-cache, no-store, must-revalidate
Expires: 0
Content-Type: text/html
這裡應該是定義資料包傳輸最大值等參數的。
作者察覺,經由了這三次htc和hts之間的作用後,httptunnel才真正的建立起來,後面的工作才能正常開展,而且很有意思的是,自此以後所有後續的資料包一律沒有80連接阜經常走的GET,PUT,POST之類的內容!!這裡看來可以想點辦法。
上面說過,正常走80連接阜的資料包應該是web行為,那麼就資料包中就應該少不了get等正常的動作內容,如果在80連接阜經過的資料總是沒有這些東東,那麼就肯定有問題了,
那麼這種問題就有了一種解決方案,就是手動式檢查通過80連接阜通過的資料包,如果資料包是明文傳送,那麼就很容易發現這種行為。但這種行為也只能在理論上可行。在實際上的操作是不可能的,有沒有比較成熟的這種產品呢?按照這個思法檢索網上的資料,果然發現有種入侵檢測e-Gap系統可以確實察覺及遮閉 httptunnel等通道軟體的存在,它工作在tcp/ip的應用層,在應用層一級檢測資料包的確切性,比如,檢測80連接阜的資料包,如果看起來資料包中總是沒有有效的資料(URL,get,put等參數),那麼e-Gap系統就會報警,並中斷連接行為。
需要注意的是,這種偵測方法僅對明文傳送的有效,如果資料被加密,那麼也就無計可施了。那麼再進去去一步,如果加密了呢?目前作者掌握的情況來看, StealthWatch硬體產品可能是一種比較好的選項,它完全擯棄了關於簽名的工作模式,而是採用一種正在申請專利的關於flow-base構架原則,按照幾家評測實驗室的結果來看,可以有效的察覺已經公開和未公開的各種攻擊,Dos,蠕蟲,病毒等,甚至包括加密的通訊!但是,它的價錢也遠遠的超出了普通的商用IDS系統,一套齊備的設施需4萬美元!具體效果作者目前沒有條件測試。
總結
在我們的試驗中,httptunnel同時逃過了防火牆的遮閉以及入侵檢測系統的追蹤,這是值得思考的。我們可以看到,網路安全僅僅依靠某種或某幾種手段是不可靠的,尤其是對安全性要求很高的套用系統,同時對安全系統的盲目依賴往往會造成巨大的安全隱患
|