一、概述
旁路式HTTP注入利用TCP会问劫持以及HTTP重定向机制实现HTTP信息的注入。与串接式注入方案相比,旁路式方案不需要将注入设备串接到用户现有的网络中,只需要将网络流量镜像到旁路式注入设备即可。该HTTP注入方式的主要优点是对现有的网络运行完全没有影响,而且通过添加更多的HTTP注入设备即可实现注入能力的线性扩展。
二、技术原理
1. TCP会话劫持
TCP会话劫持是通过检视正在进行TCP通信的用户浏览器和web服务器之间传送的报文来获取该保温的IP地址,TCP端口,TCPde seq/ack值等信息。这样,当用户浏览器发起到Web服务器的请求并且在收到Web服务器响应前,旁路式注入设备利用已知的seq/ack参数构造一个HTTP重定向报文发送给用户浏览器。
2. HTTP重定向
HTTP重定向通过向用户浏览器返回301/302响应代码将用户的HTTP请求指向另一个地址。301代表是永久性的转移,302代表暂时性转移。旁路式HTTP注入方案通过在TCP会话劫持阶段向用户浏览器返回302 Found响应消息将用户浏览器的后续请求重新定向到注入设备的HTTP反向代理。
3. HTTP反向代理
HTTP反向代理接收来自用户浏览器的请求后,将该请求转发给另外一个服务器,并将从该服务器上得到的结果返回给用户浏览器。HTTP信息的注入就是在HTTP反向代理服务器上实现的:在收到服务器的响应结果后,HTTP反向代理并不立即将该结果返回给用户,而是根据配置在响应结果中注入特定的内容(一般是JavaScript代码)后再将结果返回给用户浏览器。
三、技术实现
旁路式http注入系统工作原理利用libpacap的api接口,主线程再网口上嗅探数据包(只嗅探80端口的数据包,并且tcp payload长度要大于20);嗅探到指定规则的数据包后,将数据加到队列中,然后多个子线程去从队列中获取数据包,然后解析,将body的数据,替换成指定的js的代码,然后利用libnet的api,构造自定义的数据包,立即返回给用户。
不足:为了提高性能,可使用内核模块pfring。此api基本兼容libpcap接口。
网友评论