本發明涉及互聯網領域,尤其涉及一種探測流加密代理服務器的方法。
背景技術:
代理服務器(proxyserver)是指能夠代理網絡用戶去取得網絡信息的服務器。形象的說,它是網絡信息的中轉站。且一個完整的代理請求過程為:客戶端首先與代理服務器創建連接,接著根據代理服務器所使用的代理協議,請求對目標服務器創建連接或者獲得目標服務器的指定資源(如文件)。
流加密是對稱加密算法的一種,加密和解密雙方使用相同偽隨機加密數據流(pseudo-randomstream)作為密鑰,明文數據每次與密鑰數據流順次對應加密,得到密文數據流。
申請號為201210309017.6的一種代理服務器識別方法及裝置,其利用tcpack和瀏覽器反饋的ajax請求之間的時間差來判斷用戶是否使用了代理服務器。但目前還沒有一種能夠有效探測代理服務器是否為流加密代理服務器的方法。
技術實現要素:
本發明的目的是提供一種探測流加密代理服務器的方法,該方法能夠探測代理服務器是否為采用流加密的代理服務器。
為達上述目的,本發明所采用的技術方案為:
一種探測流加密代理服務器的方法,其步驟包括:
客戶端將經過流加密的報文發送給待測代理服務器,且客戶端的防火墻記錄所述報文內容;
防火墻修改上述報文的報文頭部分,得到報文頭部分的所有可填值,并將所有包含修改后的報文頭部分的報文組成報文組;
將上述報文組中的報文分別發送給上述待測代理服務器,當待測代理服務器有n次未直接關閉連接時,則該待測代理服務器為流加密代理服務器;其中n由上述報文的報文頭部分的可選值的個數確定。
進一步地,客戶端與待測代理服務器進行通信的協議包括但不限于socks5協議、http協議、tcp協議。
進一步地,所述報文的報文頭部分包括但不限于版本號和通信方法。
進一步地,采用窮舉法得到所述報文頭部分的所有可填值。
進一步地,當客戶端通過socks5協議與待測代理服務器使用流加密進行通信時,防火墻修改的報文頭部分atypdstaddr只有1個字節,且該字節的可選值為代表ipv4地址的1或代表域名的3或代表ipv6地址的4。
更進一步地,窮舉所述1個字節的256種可填值,將該256種可填值分別替換所述報文頭部分,并將包含所述報文頭部分的報文發送給所述待測代理服務器,當待測代理服務器有三次未直接關閉連接時,則該待測代理服務器為socks5流加密代理服務器。
更進一步地,當發送給所述待測代理服務器的報文的報文頭部分的可填值為1、3、4時,所述待測代理服務器未直接關閉連接。
本發明的有益效果在于:本發明提供一種探測流加密代理服務器的方法,該方法利用流加密的特性及窮舉法能夠成功有效的探測代理服務器是否為采用流加密的代理服務器。在該方法中客戶端將經過流加密的報文發送給待測代理服務器,同時客戶端的防火墻記錄所述報文內容;之后防火墻對上述報文的報文頭部分進行修改,并將所有包含修改后的報文頭部分的報文發送給上述待測代理服務器進行探測;當待測代理服務器有n次未直接關閉連接時,則該待測代理服務器為流加密代理服務器;其中n由上述報文的報文頭部分的可選值的個數確定。
附圖說明
圖1為本發明提供的一種探測流加密代理服務器的方法流程圖。
圖2為本發明一實施例的一種探測流加密代理服務器的方法流程圖。
具體實施方式
為使本發明的上述特征和優點能更明顯易懂,下文特舉實施例,并配合所附圖作詳細說明如下。
本發明提供一種探測流加密代理服務器的方法,其核心構思為:流加密使得明文和密文一一對應,修改任一位的明文都會導致對應位置的密文發生改變。
當使用代理服務器通信時,防火墻修改加密報文中的報文頭部分,例如版本號和通信方法,會導致代理服務器立即關閉連接,基于此可以對代理服務器進行主動探測。
本發明提供一種探測流加密代理服務器的方法,請參考圖1,該方法步驟包括:
客戶端將經過流加密的報文發送給待測代理服務器,且客戶端的防火墻記錄所述報文內容;
防火墻修改上述報文的報文頭部分,得到報文頭部分的所有可填值,并將所有包含修改后的報文頭部分的報文組成報文組;
將上述報文組中的報文分別發送給上述待測代理服務器,當待測代理服務器有n次未直接關閉連接時,則該待測代理服務器為流加密代理服務器;其中n由上述報文的報文頭部分的可選值的個數確定。
下面舉兩個具體實施例來解釋說明本發明。
實施例1
請參考圖2,在該實施例中,客戶端使用socks5協議與代理服務器通信,其步驟包括:
1、當客戶端使用socks5協議與待測代理服務器使用流加密進行加密通信時,客戶端將經過流加密的報文發送給待測代理服務器,同時客戶端的防火墻記錄所述報文內容。
2、防火墻修改上述經過流加密的報文的報文頭部分atypdstaddr,且該報文頭部分atypdstaddr只有一位(即1個字節),其有可能出現三個可選值(即1、3、4)中的一個,其中1代表ipv4地址,3代表域名,4代表ipv6地址。
3、窮舉該報文頭部分的atypdstaddr位的所有的256種可填值,并將這256種可填值替換報文中的報文頭部分的該位數據,之后將包含256種可填值的報文頭部分的報文發送給待測代理服務器,發現待測代理服務器有三次未直接關閉連接,則該待測代理服務器為socks5流加密代理服務器。
客戶端也可使用http協議、tcp協議等其它協議與代理服務器進行通信,其方法步驟上述相似,這里不再詳述。
實施例2
該實施例使用aes(高級加密標準)加密算法加密數據。
現有一個數據包,共7個字節,即0x01、0x08、0x08、0x08、0x08、0x00、0x50。
將該數據包比對socks5協議,可以判定這是一個ipv4數據包,其目標地址為8.8.8.8的80端口,使用aes-256-cfb算法,密碼abc加密后,該數據包變為0xbb、0x59、0x1c、0x4a、0xb9、0x0a、0x91、0xdc、0x07、0xef、0x72、0x05、0x90、0x42、0xca、0x0d、0x4c、0x3b、0x87、0x8e、0xca、0xab、0x32。
該數據包的前16個字節都是iv(initializationvector,初始化向量),因為明文和密文是一一對應的,因此只要修改正文第一個字節0x4c就可以起到修改明文中第一個字節的效果。
由于socks5協議的atypdstaddr字段值通常只有三種可選值,所以只要窮舉第三個字節的所有可填值(0-255),如果有三次代理服務器沒有立即關閉連接,即可判斷客戶端使用了socks5協議進行加密通信。
以上實施僅用以說明本發明的技術方案而非對其進行限制,本領域的普通技術人員可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明的精神和范圍,本發明的保護范圍應以權利要求書所述為準。