1. 程式人生 > >HTTP代理原理以及HTTP隧道技術(經典)

HTTP代理原理以及HTTP隧道技術(經典)

               

通過HTTP協議與代理伺服器建立連線,協議信令中包含要連線到的遠端主機的IP和埠號,如果有需要身份驗證的話還需要加上授權資訊,伺服器收到信令後首先進行身份驗證,通過後便與遠端主機建立連線,連線成功之後會返回給客戶端200,表示驗證通過,就這麼簡單,下面是具體的信令格式:

CONNECT 124.xxx.xxx.xx:443 HTTP/1.1 //建立http隧道要443埠Proxy-Connection: Keep-Alive   //客戶端到伺服器端的連線持續有效Content-Length: 0Host: 124.xxx.xxx.xx   //主機地址Proxy-Authorization:Basic YTph //身份驗證資訊User-Agent: OpenFetion //可以標識請求者的資訊,如什麼瀏覽器型別和版本、作業系統、使用語言等資訊

     其中Proxy-Authorization是身份驗證資訊,Basic後面的字串是使用者名稱和密碼組合後進行base64編碼的結果,也就是對username:password進行base64編碼。

    其實編碼對安全性沒什麼意義,base64嚴格意義上都已經不能算是加密了,現在資訊保安這麼受重視的年代,不需要金鑰的加密演算法還是叫編碼更貼切一些,抓到這種包之後瞬間就可以得到使用者名稱和密碼。

HTTP/1.0 200 Connection established

    客戶端收到收面的信令後表示成功建立連線,接下來要傳送給遠端主機的資料就可以傳送給代理伺服器了,代理伺服器建立連線後會在根據IP地址和埠號對應的連線放入快取,收到信令後再根據IP地址和埠號從快取中找到對應的連線,將資料通過該連線轉發出去。

                               

    簡單的說,HTTP隧道技術就是把所有要傳送的資料全部封裝到HTTP協議裡進行傳送,HTTP隧道技術幾乎支援了所有的上網方式,如:撥號上網、ADSL、Cable Modem、NAT透明代理、HTTP的GET型和CONNECT型代理、SOCKS4代理、SOCKS5代理等。

    另外HTTP隧道技術也用於木馬的製作,如把HTTP資料包裡Agent段設為IE,對外埠為80,然後把自己的小馬注入IE程序,哪個防火牆能分辨出它是木馬在傳送資料?