HTTP代理實現請求報文的攔截與篡改1--開篇


  返回目錄

  前些日子同事在給同學做測試的時候,使用了一個叫IEC的工具,他是一個IE表單的攔截和篡改工具,可以攔截HTTP請求,並篡改其中的GET或者POST數據,然后再將篡改后的數據提交給服務器。這個功能有點意思,下面我們就來自己實現一個,同時分析分析一下他的實現原理。    

  實現這個功能的方法很多。可以使用WINPCAP,直接從網卡截包然后篡改,也可以HOOK住SEND函數,或者其它相關的網絡API。至於IEC這個軟件使用的技術我還不太清楚,不過從他只可以截IE的數據來看,應該是BHO或者異步可插入協議(Asynchronous Pluggable Protocols),具體就不研究了,說實話,VB P-CODE模式下編譯的程序就是個虛擬機, 在匯編層面,分析VB虛擬機里執行的P-CODE代碼,實在是太麻煩。  

  使用WINPCAP實現這個功能,有點牛刀殺雞了,而使用HOOK技術,又不是太安全,基本上帶主動防御,智能行為分析的殺軟,HOOK用到的幾個函數都是被嚴密監控的。所以在這里,以上兩種技術我們都不采用 。 

  我們采用的是第三種技術--代理攔截技術,看到代理兩個字,稍稍有點計算機知識的人,第一時間反應的詞語應該都是代理服務器,是的,代理攔截技術,正是基於代理服務器技術實現的。

 

下面,我們先來看看代理服務器的基本知識 。     

一般情況下的HTTP請求與響應,如下圖所示。

 

加入代理服務器后,如下圖所示

  有沒有看出來什么門道,是的,當你使用代理服務器后,所有的HTTP請求,都是先發到代理服務器,然后由代理服務器重新包裝后,再發給目標(實際)服務器,響應也是如此,代理服務器先接收來自目標(實際)服務器的響應,然后包裝后發給客戶機。到這里,實現方式,是不是已經很明顯了。

  我們可以自己實現一個代理服務器,然后,將本機的代理服務器設置成指向我們自己實現的代理服務器,這樣,當本機的瀏覽器發出去請求的時候,其實都是發送到了我們自己實現的代理服務器上,如此請求的攔截就算實現了,攔截實現后,下一步就是篡改了。剛才也講了,發到代理服務器的的請求,是經過代理服務器重新包裝后,再轉發給目標(實際)服務器的,代理服務器是我們自己實現的,那么請求不就是隨我們自己的意進行“包裝”嗎 :)這樣篡改也就沒有什么問題了 。  

 

  返回目錄               


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM