nccgroup/singularity

GitHub: nccgroup/singularity

Singularity 是一套用于执行 DNS rebinding 攻击的完整框架,提供自定义 DNS 与 HTTP 服务器以及多种示例负载,以帮助安全团队评估和利用内部服务的同源策略漏洞。

Stars: 1262 | Forks: 158

# 起源的奇点 最近更新: - **NEW (2025-11-25)**:Chrome 142 版新增本地网络访问(LNA),该功能会阻止 Singularity 中实现的 DNS 重新绑定攻击技术。Singularity of Origin 的 [LNA-from-Non-Secure-Contexts](https://github.com/nccgroup/singularity/tree/Experimental/LNA-from-Non-Secure-Contexts) 分支实现了对 [Trial for Local Network Access from Non-Secure Contexts](https://developer.chrome.com/origintrials/#/view_trial/3826370833404657665) 的支持。这暂时允许在非安全上下文中访问本地网络资源,从而让您在使用 Chrome 时可以稍微多实验一下 DNS 重新绑定攻击(直到 2026 年 5 月 18 日)。 - NEW (2025-05-19):我们的演示站点 [rebind.it](http://rebind.it:8080/singularity.html) 已升级以支持 IPv6([commit 3c5ee9a](https://github.com/nccgroup/singularity/commit/3c5ee9a8813879fba3dae3bccb0a9e749aa5ca37))。这对手动查询(Singularity Manager UI 之外)是一个破坏性更,因为 DNS 查询格式已被修改。请参阅 [How to Create Manual DNS Requests to Singularity of Origin](https://github.com/nccgroup/singularity/wiki/How-to-Create-Manual-DNS-Requests-to-Singularity%3F) 获取详细说明。此外,我们会定期添加新的攻击负载,请务必查看。 - (2023-04-27) 查看我们的博客文章记录了 [state of DNS rebinding for April 2023](https://www.nccgroup.com/us/research-blog/state-of-dns-rebinding-in-2023/)。我们描述了本地网络访问,这是一项当前在部分浏览器中实现的 W3C 草案,旨在防止 DNS 重新绑定,并展示了两种绕过这些限制的方法。我们还讨论了 WebRTC IP 地址泄漏缓解措施以及 DNS 位 0x20 对 DNS 重新绑定攻击的影响。 - (2020-03-30) 新博客文章调查了 [impact of DoH on DNS rebinding attacks](https://www.nccgroup.com/us/research-blog/impact-of-dns-over-https-doh-on-dns-rebinding-attacks/)。TL;DR:DoH(HTTPS DNS)对重新绑定攻击没有影响,提供商宣传的防护可以被绕过。 - 查看我们的 [DEF CON 27 video](https://youtu.be/y9-0lICNjOQ) 与 BSidesLV 演示 。 `Singularity of Origin` 是一种执行 [DNS rebinding](https://en.wikipedia.org/wiki/DNS_rebinding) 攻击的工具。 它包含了必要的组件,以将攻击服务器 DNS 名称的 IP 地址重新绑定到目标机器的 IP 地址,并向目标机器提供攻击负载以利用其易受攻击的软件。 它还附带示例负载,以利用多个易受攻击的软件版本,从简单的主页捕获到执行远程代码。其目标是提供一个框架,以促进利用 DNS 重新绑定攻击的易受攻击软件的利用,并提高对其工作原理及防护方式的认识。 详细文档位于 [wiki pages](https://github.com/nccgroup/singularity/wiki)。 ## 核心功能 - Singularity 提供完整的 DNS 重新绑定攻击递送栈: - 自定义 **DNS 服务器** 用于重新绑定 DNS 名称和 IP 地址 - **HTTP 服务器**(管理 Web 界面)用于向目标提供 HTML 页面和 JavaScript 代码并管理攻击 - 多种 **示例攻击负载**,从获取目标应用的主页到执行远程代码。这些负载可以轻松适配以执行新的自定义攻击。 - 支持在目标规范中使用 DNS CNAME 值,除了 IP 地址之外,以规避 DNS 过滤解决方案或针对 IP 地址未知的内部资源。 - 简单、快速且高效的 HTTP **端口扫描器**,用于识别易受攻击的服务。 - **攻击自动化** 可完全自动化网络中易受攻击服务的扫描和利用。 - **挂钩与控制** 允许使用受害者的 Web 浏览器作为 HTTP 代理来访问内部网络资源,以交互方式探索并利用原本不可访问的应用。 ### Singularity 管理界面 ![Singularity Manager Interface](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/a28d852c09002708.png) ### 在本地主机或其他主机上挂钩并控制易受攻击的应用 ![Fetch an application home page](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/4923cdf3bc002709.png) ### 自动化扫描并妥协所有易受攻击的应用 ![Fetch an application home page](https://static.pigsec.cn/wp-content/uploads/repos/2026/02/96efdc9cf7002711.png) ## 使用方法 设置 Singularity 需要一个可以编辑 DNS 记录的 DNS 域名以及一台运行它的 Linux 服务器。 请参阅 [setup singularity](https://github.com/nccgroup/singularity/wiki/Setup-and-Installation) Wiki 页面获取详细说明。 文档位于 [wiki pages](https://github.com/nccgroup/singularity/wiki)。 以下是一些入门提示: - [DNS Rebinding Attacks](https://github.com/nccgroup/singularity/wiki/How-Do-DNS-Rebinding-Attacks-Work%3F) 是什么? - [Preventing DNS Rebinding Attacks](https://github.com/nccgroup/singularity/wiki/Preventing-DNS-Rebinding-Attacks) - [Setup and Installation](https://github.com/nccgroup/singularity/wiki/Setup-and-Installation) - 现有 [Payloads](https://github.com/nccgroup/singularity/wiki/Payloads) 的说明以及如何编写自己的 演示实例可在 http://rebind.it:8080/manager.html 用于演示。 ## 速度 在最佳条件下,Singularity 已在以下浏览器中测试,耗时 **3 秒以内**: | 浏览器 | 操作系统 | 利用时间 | 重新绑定策略 | 抓取间隔 | 目标规范 | | --- | --- | --- | --- | --- | --- | | ~~Chrome~~ | ~~Windows 10~~ | ~3s | ~~`Multiple answers (fast)`~~ | ~~1s~~ | ~~127.0.0.1~~ | | ~~Edge~~ | ~~Windows 10~~ | ~3s | ~~`Multiple answers (fast)`~~ | ~~1s~~ | ~~127.0.0.1~~ | | Firefox | Windows 10 | ~3s | `Multiple answers (fast)` | 1s | 127.0.0.1 | | Chromium | Ubuntu | ~3s | `Multiple answers (fast)` | 1s | 0.0.0.0 | | Firefox | Ubuntu | ~3s | `Multiple answers (fast)` | 1s | 0.0.0.0 | | Chrome | macOS | ~3s | `Multiple answers (fast)` | 1s |0.0.0.0 | | Firefox | macOS | ~3s | `Multiple answers (fast)` | 1s |0.0.0.0 | | Safari | macOS | ~3s | `Multiple answers (fast)` | 1s |0.0.0.0 | ### 负载描述 Singularity 支持以下攻击负载: * **基本抓取请求** (`simple-fetch-get.js`):该示例负载使用 `fetch` API 对根目录 (`/`) 发起 GET 请求并显示服务器响应。此负载的目标是作为示例请求,使后续贡献尽可能简便。 * **automatic**:此负载会自动尝试检测已知服务并使用本节列出的其他负载或用户添加到 Singularity 的负载进行利用。 * **Chrome DevTools RCE** (`exposed-chrome-devtools.js`):该负载演示了 Microsoft VS Code 1.19.3 版本中修复的远程代码执行(RCE)漏洞。该负载可适配用于利用任何在 `localhost` 上暴露 Chrome Dev Tools 的软件。 * **Etcd k/v dump** (`etcd.js`):该负载从 [etcd](https://github.com/coreos/etcd) 键值存储中检索键和值。 * **pyethapp** (`pyethapp.js`):利用 [Pyethapp](https://github.com/ethereum/pyethapp) 以太坊客户端的 Python 实现获取拥有的以太地址列表并检索第一个以太地址的余额。 * **Rails Console RCE** (`rails-console-rce.js`):对 [Rails Web Console](https://github.com/rails/web-console) 发起远程代码执行(RCE)攻击。 * **AWS Metadata Exfil** (`aws-metadata-exfil.js`):强制无头浏览器向给定主机外泄 AWS 元数据(包括私钥)。请检查负载内容获取有关如何设置攻击的更多细节。 * **Duplicati RCE** (`duplicati-rce.js`):该负载利用 Duplicati 备份客户端并执行远程代码执行(RCE)攻击。要使此攻击生效,需要将 `payload-duplicati-rce.html` 文件中的 `targetURL` 参数更新为指向包含实际 RCE 负载(shell 脚本)的有效 Duplicati 备份。 * **WebPDB** (`webpdb.js`):用于利用 `PDB`(通过 websockets 暴露的 Python 调试器)的通用 RCE 负载。 * **Hook and Control** (`hook-and-control.js`):劫持目标浏览器并使用它们从您的浏览器或其他 HTTP 客户端访问不可访问的资源。默认情况下,您可以在 Singularity 管理主机的端口 3129 上的 “soohooked” 子(例如 http://soohooked.rebinder.your.domain:3129/)获取已挂钩浏览器列表。进行身份验证,请提交 Singularity 服务器启动时在控制台输出的密钥值。 * **Jenkins Script Console** (`jenkins-script-console.js`):该负载利用 [Jenkins Script Console](https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console) 并显示存储的凭证。 * **Docker API** (`docker-api.js`):该负载利用 [Docker API](https://docs.docker.com/engine/api/latest/) 并显示 Docker 主机的 `/etc/shadow` 文件。 * **Ollama Llama2 Exfil** (`ollama-exfil.js`):从运行 Ollama(一个用于运行和管理大型语言模型(LLM)的开源系统)的主机上外泄文件。请参阅博客 [post](https://www.nccgroup.com/us/research-blog/technical-advisory-ollama-dns-rebinding-attack-cve-2024-28224/)。 * 以及更多,请检查负载文件夹(`html/payloads`)。
标签:CI/CD集成, CVE挖掘, CVE防护, DNS 0x20, IP 地址批量处理, NCC Group, VS Code插件, WebRTC IP泄漏, 二进制发布, 内核驱动, 安全查询, 安全漏洞, 开源工具, 攻击框架, 数据可视化, 数据流分析, 污点分析, 网络协议, 网络安全, 网络渗透, 自动化分析, 自定义脚本, 请求拦截, 跨站脚本, 软件开发安全, 逆向工具, 配置错误, 防御机制, 隐私保护