httptunnel

  • TCPパケットをHTTPプロトコルに乗せてトンネリングする.Connectメソッドが使えないプロキシサーバーでもトンネリング出来る.
  • webサーバーの役割をする側でhts,webクライアントの役割をする側でhtcというプログラムを起動する.htsのデフォルトポートは8888番
  • 暗号化をしているわけではないのでトンネルされたパケットはそのまま見える.
  • クライアントからサーバーへの以下のようなリクエストがある.全リクエストに占めるPOSTの数が通常のHTTP通信より多くなる.
POST /index.html?crap=(番号) HTTP/1.0
Host: (htsサーバー名):(hts待機ポート番号)
Content-Length: 102400
Via: 1.1 (プロキシサーバー名):(プロキシサーバーポート番号)
Cache-Control: max-age=259200
Connection: keep-alive

(トンネルされたパケット)

GET /index.html?crap=(同じ番号) HTTP/1.0
Host: (htsサーバー名):(hts待機ポート番号)
Content-Length: 102400
Via: 1.1 (プロキシサーバー名):(プロキシサーバーポート番号)
Cache-Control: max-age=259200
Connection: keep-alive
  • サーバーからクライアントへ以下のような応答がある
HTTP/1.1 200 OK
Content-Length: 102400
Connection: close
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate
Expires: 0
Conent-Type: text/html

(トンネルされたパケット)