CF-Hero:获取受Cloudflare保护的网站的真实IP地址

2025-05-18 17:09:58 0 385

CF-Hero

Github:https://github.com/musana/CF-Hero

CF-Hero是什么?

CF-Hero 是一款综合侦察工具,用于发现受 Cloudflare 保护的网络应用程序的真实 IP 地址。它通过多种方法进行多源情报搜集。

DNS 侦查

  • 当前 DNS 记录(A、TXT)
  • DNS 历史数据分析
  • 相关域名发现

Intelligence Sources

  • 主动 DNS 枚举
  • Censys 搜索引擎
  • Shodan 搜索引擎
  • SecurityTrails 历史记录
  • 相关域名关联

该工具分析这些来源的数据,以识别 Cloudflare 保护目标的潜在来源 IP 地址。它通过响应分析来验证结果,以尽量减少误报。

功能

功能

  • DNS 侦查

    • 检查当前 DNS 记录(A、TXT)
    • 提取 Cloudflare 后面的域名
    • 提取非 Cloudflare 域名
  • 第三方情报

    • Censys 集成
    • Shodan 集成
    • SecurityTrails 集成
    • 相关域名的反向 IP 查询
  • 高级功能

    • 自定义 JA3 指纹支持
    • 并发扫描功能
    • 支持标准输入(管道)
    • 用于验证的 HTML 标题比较
    • 代理支持
    • 自定义用户代理配置

背景

当前 DNS 记录

让我们来看看一些 DNS 设置错误的用例。

如您所见,普通 DNS 查询会返回域名的 IP 地址。例如,musana.net 位于 Cloudflare (CF) 后面,但有时该域名有多个 A 记录,其中一些可能与 CF 关联的 IP 地址不对应。(此 DNS 输出仅为示例,可能不代表 musana.net 的确切 DNS 答案)。

;; ANSWER SECTION:
musana.net. 300 IN  A    104.16.42.102
musana.net. 300 IN  A    104.16.43.102
musana.net. 300 IN  A    123.45.67.89 (Real IP exposed)
musana.net. 300 IN  A    123.45.76.98 (Real IP exposed)

另一种情况与 TXT 记录有关。有时,域名在 CF 后面,但 TXT 记录中可能使用了域名的真实 IP。CF-Hero 会检查所有 TXT 记录,然后提取所有 IP 地址,最后尝试连接通过 HTTP 找到的 IP。

假设我们有类似的 DNS TXT 记录。在 TXT 记录中可以看到 SPF 记录。有些公司可能拥有自己的邮件服务器,TXT 记录可能包含指向目标域的 IP。

从下面的 DNS 答案中可以看到,SPF 记录包含一些 IP 地址。Cf-Hero 也会检查这些记录。

;; ANSWER SECTION:
musana.net. 115 IN  TXT  "1password-site-verification=LROK6G5XFJG5NF76TE2FBTABUA"
musana.net. 115 IN  TXT  "5fG-7tA-G4V"
musana.net. 115 IN  TXT  "MS=ms16524910"
musana.net. 115 IN  TXT  "OSSRH-74956"
musana.net. 115 IN  TXT  "docker-verification=6910d334-a3fc-419c-89ac-57668af5bf0d"
musana.net. 115 IN  TXT  "docusign=4c6d27bb-572e-4fd4-896c-81bfb0af0aa1"
musana.net. 115 IN  TXT  "shopify-verification-code=1Ww5VsPpkIf32cJ5PdDHdguRk22K2R"
musana.net. 115 IN  TXT  "shopify-verification-code=NM243t2faQbaJs8SRFMSEQAc4J9UQf"
musana.net. 115 IN  TXT  "v=spf1 include:_spf.google.com include:cust-spf.exacttarget.com include:amazonses.com include:mail.zendesk.com include:servers.mcsv.net include:spf.mailjet.com ip4:216.74.162.13 ip4:216.74.162.14  ip4:153.95.95.86 ip4:18.197.36.5 -all"

OSINT

OSINT 是另一种查找任何 CF 域名真实 IP 的技术。有许多专门的搜索引擎用于特殊目的。Shodan 和 Censys 就是其中的两个。它们提供更详细的技术信息。 这些搜索引擎持续扫描整个互联网,发现新的资产或监控和记录资产的变化。当一个不在 CF 后面的域名出现时,这些引擎的机器人可以记录该域名的真实 IP。过一段时间后,如果域名被 Cloudflare 托管,就可以通过这些搜索引擎找到其 IP。

CF-Hero 还会检查 censys 和 shodan。(请注意,使用这些服务时,由于 API 配额的限制,会有一些限制)。

(子)域名

另一种技巧是(子)域名技术。事实上,它不一定是子域,也可以是域。关键在于:域名应属于同一家公司。

比方说,我们有 2 个域名。其中一个在 CF 后面,而另一个不在 CF 后面。在这种情况下,您可以连接到不在 CF 后面的域,然后将主机标头更改为在 CF 后面的域。如果您收到的是 CF 后面的应用程序的响应,则说明您绕过了 CF。您可以直接从 IP 访问网络应用程序了。(当然,这也取决于配置)。

让我们仔细看看


--> TCP --> blog.musana.net [123.45.67.89] ---> HTTPs -------------\
                                                                    \
--> TCP --> api.musana.net [123.67.45.98] ----> HTTPs -----------\   \ 
                                                                  \   \
--> TCP --> test.musana.net [123.89.44.88] ---> HTTPs -------------\   \
                                                                    \___\____________________
--> TCP --> tools.musana.net [123.44.55.66] --> HTTPs -------------> | GET / HTTP/2          |
                                                                     | Host: musana.net      | ====> Check & Compare Responses
--> TCP --> admin.musana.net [33.44.123.45] --> HTTPs -------------->|_______________________|
                                                                          /    /
--> TCP --> ... [...] ------------------------> HTTPs ------------------>/    /
                                                                        /    /
--> TCP --> ... [...] ------------------------> HTTPs ---------------->/    /
                                                                      /    /
--> TCP --> random-test.com [55.44.11.33] ----> HTTPs -------------->/    /
                                                                         /
--> TCP --> fsubsidiary.net [66.77.22.123] ---> HTTPs ----------------->/

历史 DNS 记录

历史 DNS 记录服务试图发现互联网上的所有域名,并记录这些域名的 DNS 记录变化。如果一个域名以其真实 IP 地址发布在互联网上,这些服务的机器人就可以记录其真实 IP 地址,之后如果域名被 cloudflare 收录,真实 IP 地址就可以通过这些服务找到。因此,我们可以找到过去曾广播过真实 IP 地址的域名的真实 IP 地址。

它使用安全跟踪服务查找历史 DNS 记录。在 cf-hero.yaml 文件中输入 API 密钥后,可以使用 -securitytrails 参数执行扫描。

安装说明

cf-hero 需要 go1.18 才能成功安装。运行以下命令进行安装。

go install -v github.com/musana/cf-hero/cmd/cf-hero@latest

用法


        ____         __
  _____/ __/        / /_  ___  _________
 / ___/ /__  ___   / __ \/ _ \/ ___/ __ \
/ /__/ ___/ (___) / / / /  __/ /  / /_/ /
\___/_/          /_/ /_/\___/_/   \____/

                                @musana
_____________________________________________

Unmask the origin IPs of Cloudflare-protected domains

Usage:
  cf-hero [flags]

Flags:
GENERAL OPTIONS:
   -w int     Worker count (default 16)
   -f string  Input file containing list of host/domain

PRINT OPTIONS:
   -cf      Print domains behind of Cloudflare
   -non-cf  Print domains not behind of Cloudflare

SOURCES:
   -censys          Include Censys in scanning
   -securitytrails  Include SecurityTrails historical DNS records in scanning
   -shodan          Include Shodan historical DNS records in scanning
   -dl string       Domain list for sub/domain scanning
   -td string       Target domain for sub/domain scanning

CONFIGURATION:
   -hm string   HTTP method. (default "GET")
   -ja3 string  JA3 String (default "772,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,18-10-16-23-45-35-5-11-13-65281-0-51-43-17513-27,29-23-24,0")
   -ua string   HTTP User-Agent (default "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/113.0")
   -px string   HTTP proxy URL

运行 CF-Hero

最基本的运行命令。它默认检查 A 和 TXT 记录。

# cat domains.txt | cf-hero

或者你也可以给它传递 “f ”参数。

# cf-hero -f domains.txt

使用 censys 参数将 Shodan 包括在扫描中

# cat domain.txt | cf-hero -censys

使用 shodan 参数将 Shodan 包含到扫描中

# cat domain.txt | cf-hero -shodan

使用 securitytrails 参数将 Shodan 包含到扫描中

# cat domain.txt | cf-hero -securitytrails

使用 -td 和 -dl 参数,尝试利用不在 Cloudflare 后面的域或子域列表查找目标域的 IP 地址。在使用 -dl 参数确定了目标云或内部基础架构使用的实时 IP 地址的区块中指定 IP 地址,即可找到目标域的真实 IP 地址

# cf-hero -td https://musana.net -dl sub_domainlist.txt

获取 CF 后面的域名

# cf-hero -f domains.txt -cf

获取不在 CF 后面的域名

# cf-hero -f domains.txt -non-cf

其他选项(自定义 ja3、代理、工作者、用户代理)

# cf-hero -d https://musana.net -ua "Mozilla" -w 32 -ja3 "771,22..." -px "http://127.0.0.1:8080"

在 $HOME/.config/ 目录下创建 cf-hero.yaml 文件,设置 censys API 密钥

# touch ~/.config/cf-hero.yaml

// content of YAML file should be like;

securitytrails:
  - "api_key_here"
shodan:
  - "api_key_here"
censys:
  - "api_key_here"

关于作者

whoami109篇文章161篇回复

勤快的搬运工。

评论0次

要评论?请先  登录  或  注册