1. 端口转发与代理
1.1 正向连接
由控制端主机主动连接受控端主机
适用于受控主机具有公网IP的情况
1.2 反向连接
控制端监听一个端口,由受控端主机反向连接控制端主机
适用于双方均在外网或内网的环境
正向连接往往受限于受控主机上的防火墙屏蔽及权限不足等情况,反向连接可以很好地突破这些限制
1.3 端口转发
端口转发(Port Forwarding)是网络地址转换(NAT)的一种应用。通过端口转发,一个网络端口上收到的数据可以转发给另一个网络端口。转发的端口可以是本机的端口,也可以是其它主机上的端口。
现实环境中,内网部署的各种防火墙和入侵检测设备会检查敏感端口上的连接情况,如果发现连接存在异样,会立即阻断通信。通过端口转发,设置将这个被检测的敏感端口的数据转发到防火墙允许的端口上,建立起一个通信隧道,可以绕过防火墙的检测,并于指定端口进行通信。
端口映射(Port Mapping)也是网络地址转换(NAT)的一种应用,用于把公网的地址翻译成私有地址。端口映射可以将外网主机收到的请求映射到内网主机上,使得没有公网IP地址的内网主机能够对外提供相应的服务。端口映射和端口转发可以看作同一个术语。
SSH 将目标主机服务端口映射到本地 80 端口:
1 | ssh -CfNg -L (本地端口):(目标主机ip):(目标主机端口) (跳板机用户名)@(跳板机ip) -p (跳板机端口) |
- -C:启用 SSH 连接的压缩功能。这可以减少传输数据量,适用于低带宽连接
- -f:SSH 会在认证成功后转入后台运行
- -N:告诉 SSH 不执行远程命令,只用于端口转发
- -g:允许其他主机连接到本地的转发端口
1.4 SOCKS代理
SOCKS(Protocol For Sessions Traversal Across Firewall Securely),是一种代理协议,其标准端口为1080。其有SOCKS4和SOCKS5两个版本,SOCKS4只支持TCP,而SOCKS5进一步可以支持UDP和各种身份验证机制等协议。
采用SOCKS协议的代理服务器称为SOCKS服务器,它在网络通信中扮演一个请求代理人的角色。内网渗透中,通过搭建SOCKS代理,可以与目标内网主机进行通信,避免多次使用端口转发。
2. 常见转发与代理工具
2.1 LCX
LCX 是一款经典的内网端口转发工具,基于Socket套接字,具有端口转发和端口映射的功能。
目前很多杀软已经将LCX加入了特征库,在实际利用时需要自己做免杀处理
2.2 FRP
FRP 是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等协议,可以将内网服务以安全、便捷的方式,通过具有公网IP节点的中转暴露刀公网。内网渗透中, FRP 是一款常用的隧道工具。FRP还支持搭建SOCKS5代理应用