CF-Hero:获取受Cloudflare保护的网站的真实IP地址
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"
评论0次