原理:两种数据包包同时通过一个端口进行转发,比如一个木马绑定到服务器的一个合法端口,当接收到来自客户端的请求时,会先判断自己的特定包格式,如果是自己的包则自己处理,如果不是再转发给合法端口,攻击人无需与目标服务器建立连接,从而达到隐藏后门的目的。
如上图:
- 第一步:客户端会先去发送一个请求到服务端的80端口,该请求包可以是http/socks协议
- 第二步:服务端的80端口收到客户端的请求之后,会直接将请求包直接转发给4444端口
- 第三步:4444端口收到请求包,会去判断该请求包是什么协议,如果是http协议,就将包发回给80端口,如果是socks协议,则将请求包发给9999端口
- 总结:这样,就实现了80端口复用。其中,4444端口作为中间人,对请求包进行处理,从而使80端口不仅转发自身的http包,还会转发9999端口的socks包。
最重要的是,目标只需要对外开启80端口即可实现。
除此之外,上面案例中的4444端口其实也可以不用转发给9999端口,它既可以作为中间人,也可以作为socks包的处理者,自己处理socks包即可,无需将请求包发送给9999端口
最后,可以通过自己动手实现端口复用