隧道代理-基础知识
渗透测试过程中,在外网getshell之后,需要通过转发端口或搭建代理等方式建立内网通道
隧道分类
从流量层分类
- 应用层隧道(DNS、SOCKS、HTTP、SSH)
- 传输层隧道(TCP隧道、UDP隧道)
- 网络层隧道(ICMP、IPv6隧道)
从作用上分类
- 反弹shell(nc、python、bash)
- 端口转发(LCX、SSH、iptables、telnet)
- 端口映射(LCX、NPS、FRP)
- 正向代理(EW、NPS、FRP)
- 反向代理(EW、NPS、FRP)
重要概念
正向连接和反向连接
- 正向是从攻击者电脑主动访问目标机器,例如:受控端主机监听一个端口,由控制端主机主动连接受控端主机建立shell(适用于受控主机具有公网IP)
- 反向是从目标机器主动连接攻击者电脑,例如:控制端主机监听一个端口,在受控端主机执行操作访问控制端主机建立的shell是反弹shell(适用于受控端主机没有公网IP的或控制端存在公网IP等情况)
典型例子是:Metasploit有两种meterpreter,一种是以windows/meterpreter/bind_tcp
为代表的bind shell,用于正向连接;一种是以windows/meterpreter/reverse_tcp
为代表的reverse shell,用于反向连接
渗透过程中,正向连接常受限于防火墙或权限不足,而反向连接可以有效突破这些限制(因为防火墙对出站流量的限制通常比对入站流量的限制要宽松)
端口转发和端口映射
两者在通常情况下未作严格区分,这里仅稍作解释
-
端口转发:有时被称为做隧道,是SSH或NAT的一种应用。简单来说,就是将一个端口收到的数据/流量转发到另一个端口,而转发到的端口可以是本机端口,也可以是其他主机上的端口(前提是其他主机与本机有网络连接)
如果内网中,部署的防火墙会检查敏感端口的连接情况并阻断异常通信,可以通过端口转发,可以绕过防火墙,实现通过访问允许的端口来与敏感端口通信
-
端口映射:是NAT的一种,功能是把在公网的地址转成私有地址。简单来说就是将一个端口映射到另一个端口,更适用于描述外网路由器(而不是外网主机)映射至内网主机
HTTP代理和socks代理
- http代理用的是http协议,工作在应用层,主要是用来代理浏览器访问网页
- socks代理用的是socks协议,标准端口为1080,工作在会话层,主要用来传递数据包。socks代理有socks4和socks5两个版本,socks4只支持TCP,socks5支持UDP、TCP等协议。在内网渗透中,通过搭建socks代理,可以无需进行多次端口转发,达到与目标内网主机进行通信的目的