Censys 是一款互联网空间搜索引擎,它的核心工作方式是持续对全球 IPv4 地址空间、域名系统和证书库进行主动探测与被动汇聚。和传统 DNS 工具只针对单个域名做递归解析不同,Censys 把 DNS 记录作为主机资产的一个属性来存储,因此可以反向查询:给定一个 IP 地址,能看到哪些域名解析到它;给定一个域名,能找到它对应的 A、AAAA、MX、NS 等记录,还能从证书透明日志中提取和该域名绑定的子域名。这种双向关联让 DNS 扫描从简单的解析扩展到了互联网暴露面分析。

Censys 的 DNS 数据采集机制
Censys 的 DNS 数据并不像本地 dig 或 nslookup 那样实时向目标权威服务器发起查询,而是通过全球部署的扫描节点,对开放 53 端口的 IP 地址主动发送标准 DNS 请求,并记录返回的各类记录,包括 A、AAAA、CNAME、MX、NS、SOA、TXT 等。这些数据被统一存储在主机索引中,用户可以通过域名查找对应 IP,也可以通过 IP 反查其承载的所有域名。
除了主动扫描,Censys 还从证书透明日志(Certificate Transparency)中提取证书里的域名信息。证书透明日志会公开记录证书申请时的域名列表,其中往往包含大量子域名,比如 admin.ippipp.com、vpn.ippipp.com、dev.ippipp.com。这些子域名是攻击面管理的重要线索,而 Censys 将其与主机数据和证书数据关联在一起,使得用户可以一次查询就获得域名、IP、开放端口和证书的完整画像。此外,Censys 还融合了被动 DNS 数据,通过多个上游数据源收集递归解析器观察到的域名与 IP 对应关系,弥补主动扫描在覆盖范围上的不足。
在字段设计上,Censys 将 DNS 记录拆分为多个可检索字段,例如 dns.names 表示主机关联的所有 DNS 名称,dns.a 表示 IPv4 地址解析结果,dns.aaaa 表示 IPv6 地址,dns.mx 表示邮件交换记录,dns.ns 表示名称服务器。这种结构化存储让用户可以使用类似搜索引擎的语法进行精确过滤,而不需要自行解析原始 DNS 报文。需要注意的是,Censys 的扫描周期通常为几天到几周,数据存在一定延迟,因此适合做资产测绘和历史快照分析,不适合替代实时 DNS 排查工具。
用 Censys Web 界面完成 DNS 记录查询
Censys 的 Web 搜索界面提供了直观的查询入口。登录后进入 Search 页面,在搜索框中输入字段名和值即可。例如要查找所有 DNS 名称中包含 ippipp.com 的主机,可以使用查询语句 dns.names: ippipp.com。如果要查找解析到某个特定 IP 的主机,则可以使用 dns.a: 93.184.216.34。这种反向查询是 Censys 相较于传统 DNS 工具的明显优势:你不必先知道域名,只需一个 IP 就能发现它背后到底绑定了哪些域名。
Censys 的查询语法支持布尔逻辑和通配符。比如要查找属于某个域名的子域名,可以写成 dns.names: *.ippipp.com,这样会返回所有以 .ippipp.com 结尾的 DNS 名称。再比如要缩小范围,只查看同时开放 DNS 服务的主机,可以使用 dns.names: ippipp.com AND services.service_name: DNS。通配符在子域名发现中非常高效,尤其是在证书索引中,查询 parsed.names: ippipp.com 可以列出所有证书中包含该域名的记录,其中往往隐藏着大量未被主动解析到的子域名。
搜索结果页面会展示主机列表,点击任意主机可以查看其完整的 DNS 记录、开放端口、服务版本和证书详情。这种聚合视图帮助安全人员快速判断某个子域名是否指向了测试环境、老旧系统或第三方服务。例如一个子域名的 A 记录指向了云服务提供商的 IP,但证书已经过期,就可能存在配置疏漏。与手工执行多次 DNS 查询相比,Censys 的 Web 界面更适合快速调查和交叉验证。
通过 Censys API 批量获取 DNS 数据
对于需要批量处理或自动化集成的场景,Censys 提供了 REST API。首先需要在 Censys 账号的 Account 页面生成 API ID 和 Secret,然后使用 HTTP Basic Auth 进行身份认证。API 的基础地址为 https://search.censys.io/api/v2,常用端点包括 /hosts/search 和 /certificates/search。下面是一个使用 Python 请求查询主机 DNS 记录的示例。
import requests
API_ID = "your_api_id"
SECRET = "your_secret"
url = "https://search.censys.io/api/v2/hosts/search"
params = {
"q": "dns.names: ippipp.com",
"per_page": 10
}
resp = requests.get(url, auth=(API_ID, SECRET), params=params)
if resp.status_code == 200:
data = resp.json()
for hit in data.get("result", {}).get("hits", []):
ip = hit.get("ip")
names = hit.get("dns", {}).get("names", [])
print(ip, names)
这段代码向 Censys 的 hosts 搜索端点发送请求,查询所有 DNS 名称中包含 ippipp.com 的主机,并打印每个主机的 IP 和关联域名。返回的 JSON 中包含 result.hits 数组,每条命中记录对应一个主机。通过设置 cursor 参数可以进行分页,获取超过单次限制的结果。需要注意,免费版账户有查询配额限制,通常每 5 分钟只能发起有限次数的请求,商用版则支持更高的并发和数据导出能力。
如果不想手动处理 HTTP 请求,也可以使用 Censys 官方提供的 Python SDK。以下代码展示了如何使用 SDK 查询主机并获取 DNS 名称。
from censys.search import CensysHosts
h = CensysHosts()
query = h.search("dns.names: ippipp.com", per_page=10)
for page in query:
for hit in page:
print(hit["ip"], hit["dns"]["names"])
SDK 封装了认证、分页和错误处理,适合快速编写脚本。无论是直接调用 API 还是使用 SDK,都可以将查询结果导出为 CSV 或 JSON,方便后续与资产管理平台、SIEM 或漏洞扫描器集成。批量获取 DNS 数据时,建议控制查询频率,避免触发限流。对于大规模子域名枚举任务,可以先通过证书索引查询获取候选子域名,再使用主动 DNS 工具进行验证,这样在效率和准确性之间取得平衡。
DNS 扫描在资产发现与安全审计中的实战应用
子域名枚举是攻击面管理的起点。通过 Censys 的证书透明日志查询 parsed.names: ippipp.com,可以快速列出所有已签发证书中出现的子域名。这些子域名往往对应后台管理入口、VPN 网关、测试环境或第三方服务,容易被安全团队遗漏。例如 staging.ippipp.com 可能指向一个没有访问控制的测试服务器,owa.ippipp.com 可能暴露了企业邮件系统。使用 Censys 可以一次性获取这些子域名及其对应的 IP 和开放端口,大幅缩短资产梳理时间。
另一个常见场景是检测 DNS 配置错误。如果一个域名的 CNAME 记录指向了某个已过期的第三方服务,例如指向一个不再受控的 GitHub Pages 站点或云存储桶,就可能发生子域名接管。攻击者可以注册该第三方服务来接管子域名,从而发动钓鱼攻击。通过 Censys 查询该域名的 CNAME 记录,并结合证书信息判断目标服务是否仍然活跃,可以帮助发现这种风险。同样,NS 记录指向不再受控的名称服务器时,也可能导致域名解析被劫持,Censys 的全局 DNS 数据能够提供线索。
Censys 还可以用于钓鱼检测。攻击者常注册与目标域名相似的域名,并配置 MX 记录接收邮件。通过搜索 dns.mx: target.com 或 dns.names: target,可以找到包含目标关键词的可疑域名。安全团队可以对这些域名进行监控,在其注册后迅速采取封锁或通知措施。由于 Censys 汇总了被动 DNS 数据,有些查询结果甚至包含尚未在本地 DNS 解析中出现的新域名,这对威胁情报分析非常有帮助。
Censys DNS 扫描的局限与工具选型建议
Censys 并非实时 DNS 解析器,它的数据快照特性意味着你无法用它来排查刚刚发生的 DNS 解析故障。如果需要进行实时解析验证,仍然需要使用 dig、nslookup 或 host 等本地工具。免费版 Censys 的查询配额有限,对于需要持续监控大量域名的企业,可能需要购买商用授权或使用其数据订阅服务。此外,Censys 对 DNS 记录的覆盖主要来自主动扫描和被动数据源,某些使用非标准端口或内部 DNS 解析的记录可能不会出现在结果中。
与 SecurityTrails、Shodan、Fofa 等同类平台相比,Censys 的核心优势在于证书透明日志与主机属性的深度关联。Shodan 更侧重于端口和服务的实时扫描,SecurityTrails 拥有较深的历史 DNS 记录,而 Censys 在证书域名的聚合分析上表现突出。如果目标是对单个域名做全面的子域名爆破,可以结合 amass、subfinder 等主动工具;如果需要监控新出现的子域名,可以使用 Censys 的 API 轮询或数据导出功能。总体而言,将 Censys 作为互联网资产测绘的基础数据源,再配合主动扫描和持续监控工具,能够形成更完整的暴露面管理闭环。