多语言展示
当前在线:1982今日阅读:26今日分享:39

HTTP请求拦截与篡改技术原理

前些日子同事在给Java班学生做测试的时候,使用了一个叫IEC的工具,他是一个IE表单的拦截和篡改工具,可以拦截HTTP请求,并篡改其中的GET或者POST数据,然后再将篡改后的数据提交给服务器。这个功能有点意思,下面我们就来自己实现一个,同时分析分析一下他的实现原理。
方法/步骤
1

实现这个功能的方法很多。可以使用WINPCAP,直接从网卡截包然后篡改,也可以HOOK住SEND函数,或者其它相关的网络API。至于IEC这个软件使用的技术我还不太清楚,不过从他只可以截IE的数据来看,应该是BHO或者异步可插入协议(AsynchronousPluggable Protocols),具体就不研究了,说实话,VB P-CODE模式下编译的程序就是个虚拟机,在汇编层面,分析VB虚拟机里执行的P-CODE代码,实在是太麻烦。

2

使用WINPCAP实现这个功能,有点牛刀杀鸡了,而使用HOOK技术,又不是太安全,基本上带主动防御,智能行为分析的杀软,HOOK用到的几个函数都是被严密监控的。所以在这里,以上两种技术我们都不采用。

3

我们采用的是第三种技术--代理拦截技术,看到代理两个字,稍稍有点计算机知识的人,第一时间反应的词语应该都是代理服务器,是的,代理拦截技术,正是基于代理服务器技术实现的。下面,我们先来看看代理服务器的基本知识。一般情况下的HTTP请求与响应,如下图所示:

4

加入代理服务器后,如下图所示:有没有看出来什么门道,是的,当你使用代理服务器后,所有的HTTP请求,都是先发到代理服务器,然后由代理服务器重新包装后,再发给目标(实际)服务器,响应也是如此,代理服务器先接收来自目标(实际)服务器的响应,然后包装后发给客户机。到这里,实现方式,是不是已经很明显了。

推荐信息