使用Transfer-Encoding 穿过IDS

已知技術
1)在IP層可以使用IP Fragment將含有惡意程式之封包切割為多個封包
,以避免被
Network IDS抓到Pattern
2)在TCP也可以將將含有惡意程式之TCP連線切成多個TCP Segments,以
避免被
Network IDS抓到Pattern
3)HTTP 1.1裡支援zlib/gzip等壓縮,可以將有惡意程式(通常為含有
Java Script/
VB Script 之HTML檔)壓縮而不被發現

以1,2來說,目前的Snort IDS有IP Fragement與TCP 重組的弁
但是,在前一陣子的survey中,我發現HTTP 1.1裡除了支源zlib/gzip等
壓縮,HTTP/1.1
裡還支援了Transfer-Encoding 可以在傳輸時加上類似unix裡split
能,將一份要
傳送的message切割成多份

zlib與gzip等Content-Encoding與Transfer-Encoding不同處在於:
Content-Encoding
為對文件本身加密,HTTP/1.1傳輸只用Content-Encoding的header說明
文件的壓縮格式,
並沒有必要要處理.但是Transfer-Encoding為在Content-Encoding之
外,再另加的
Encoding.

HTTP response分為三部份, HTTP_RESPONSE_LINE,
HTTP_MESSAGE_HEADER與
HTTP_MESSAGE_BODY

範例:
其中從Content-Type到Content-Length為HTTP_MESSAGE_HEADER,之後

HTTP_MESSAGE_BODY

========不加Transfer-Encoding之HTTP response
HTTP/1.1 200 OK
Content-Type: text/html
Host:
http://www.csie.nctu.edu.tw
Content-Length: 25

hello world
========

若在HTTP_MESSAGE_HEADER中有Transfer-Encoding: chunked 字樣,則
HTTP_MESSAGE_BODY
會用chunked的encoding方式傳送.目前chunked encoding是HTTP/1.1
明定要支援的. 如下
面的http response即為加上chunked Transfer-Encoding之結果. 本
來有25個bytes現在被
分割為0x6, 0xb,0x7等三個部份. 在chunked Transfer-Encoding是採
用十六進位來表示,
與Content-Length採用10進位並不同

========外加Transfer-Encoding之HTTP response
HTTP/1.1 200 OK
Content-Type: text/html
Host:
http://www.csie.nctu.edu.tw
Transfer-Encoding: chunked

6

b
hello world
7

0

你可能感兴趣的:(加密,tcp,unix,header,NetWork,encoding)