查看原文
其他

想拥有自己的 Yak Bridge? DNSLog、ICMPLog、TCPLog 全部免费

V1ll4n Yak Project 2023-04-27


随着大家对 Yakit 的使用越来越深入,一些场景支持逐渐被提上日程。


众所周知,在 Yak 检测模块中,很多漏洞需要借助外部的 DNSLog 或者随机的 TCP 端口连接或 ICMP 长度进行反连确认。然而在内网中或者遇到 “数据不出网” 合规要求,我们不应当将反连操作接入公共的 Yak Bridge 来进行操作。很自然地,我们将会遇到 Yak Bridge 的私有化部署的问题。

在之前的版本,我们的 Yak Bridge 似乎可以自动获取 External IP,自动从诸如

"ifconfig.me""ipinfo.io/ip""ipecho.net/plain""www.trackip.net/ip""ip.sb""v4.ident.me""ident.me"

这些网站中寻找 Yak Bridge 所在的公网 IP;在这种情况下,我们部署在内网会遇到获取到 “出口网络” 的 IP,这个显然不应该作为给 Yakit 或者 Yaklang 脚本的 IP 地址;为此我们需要在一定程度上屏蔽这个问题:用户自行配置了公共 IP 后,将会绕过自动检测 IP 这个阶段。

搭建Yak Bridge服务


当然,如果用户想要不使用 Yakit 内置的公共服务,想要使用自己搭建的可以在 Yakit 平台中使用的公网服务来完成以下内容:

  1. 自用 DNSLog / ICMPLog / TCPLog 等优秀的特性;

  2. 使用 gRPC 编写客户端操作服务器;

  3. 有填入 “密码” 的需求;

启用DNSLog以及全部服务


我们为用户提供了一个docker-compose文件,用户只需要docker-compose up -d即可正常启动

version: "2"
services: bridge: image: v1ll4n/yak-bridge:latest network_mode: host restart: always command: yak bridge --dnslog --domain dnstunnel.run --public-ip [your-public-ip]

当然,如果用户的环境并不希望使用 Yak bridge docker-compose 的部署方式,也可以直接启动 Yak 引擎来实现这个服务,这些都被允许的!

我们生效的其实是 Yak Bridge 这个命令,一般情况下 ,我们使用命令行的 Yak 核心引擎,通过 yak bridge -h即可查看所有参数。

NAME: yak tunnel-server -
USAGE: yak tunnel-server [command options] [arguments...]
OPTIONS: --log-level value, -l value (default: "info") // 可以设置日志级别 --quiet, -q // 保持安静,不输出信息 --addr value // 监听的地址,可从此处修改端口 (default: "0.0.0.0:64333") --debug // 调试模式 Debug mode for see database output --retry-timeout value Set retry timeout (default: 10s) --secret value // 用户使用这个 Yak Bridge 需要使用密码 --dnslog // 启用 DNSLog 开关 --domain value // 为 DNSLog 设置域名 Set DNSLog RootDomain --public-ip value // 设置当前这个 Yak Bridge 的 IP 地址;Public IP Address: 设置公网显示的 IP 地址

很多时候,我们在域名配置完毕时,使用如下命令即可启动一个 Yakit 可连的 DNSLog 综合服务器:

yak bridge --dnslog --domain example.com --public-ip x.x.x.x

如何配置DNSLog?(两域名版)


一般来说,我们不配置 DNSLog 的话,上面描述的内容只能生效一半儿,我们只有 TCPLog / ICMPLog 以及穿透服务可用,如果想要 DNSLog 可用的话,我们不管在公网还是内网,都需要额外进行配置:

  一、配置之前的准备工作

我们可以先约定两个域名:

  1. DNSLog 使用的根域名

  2. DNSLog NS 服务器辅助域名

  3. 已经部署好的 Yak Bridge

我们以 Yakit 提供的公共服务作为案例:

  1. Yakit DNSLog 使用的根域名为 dnstunnel.run

  2. DNSLog NS 使用的辅助域名为 ns1.cybertunnel.run /ns2.cybertunnel.run

  3. 我们在 124.223.202.90 这台服务器上部署了 Yak Bridge,配置命令为

yak bridge --dnslog --domain dnstunnel.run
  二、配置根域名

我们接下来仍然用 Yakit 中的配置举例:

我们在 dnstunnel.run 域名购买的服务提供商中配置 NS 记录为:

  1. NS 记录1:ns1.cybertunnel.run

  2. NS 记录2:ns2.cybertunnel.run

这样的配置目的是,当大家要去找 dnstunnel.run 的解析时,

会先去询问ns1.cybertunnel.runns1.cybertunnel.run 所有 dnstunnel.run 相关的所有记录在哪。

  三、配置NS地址指向

在确定完成上述步骤后,我们进入 cybertunnel.run 的后台,为他添加两条 A 记录,指向的 IP 为我们搭建 Yak Bridge 的地址:124.223.202.90

我们配置ns1.cybertunnel.runns2.cybertunnel.run 指向上述地址


在配置完毕后,等待记录生效后我们的 Yak Bridge 就算配置完毕了。

备注:

一般推荐大家使用两域名版本来配置 DNSLog,通用性更强,绝大多数服务提供商均可按此配置;

单域名版本需要服务提供商支持配置 DNS Hosts,目前支持此项配置的并不多(阿里云)

Yakit中使用自定义配置(v1.0.15-sp16)


  一、点击右上角“配置”->配置全局反连


  二、在全局反连中配置DNSLog链接选项

在这个配置中,如果要自定义 dnslog 必须提前配好 dnslog 域名


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存