资产发现基础:IP、域名、端口扫描归纳总结

大家好,我是老赵。在接口安全领域摸爬滚打了快十年,我最大的感受就是:资产都找不到,谈什么安全? 很多团队买了几百万的扫描器,结果连自己有多少接口、分布在哪都不知道。这就是典型的“盲人摸象”。

今天这一章,我就把资产发现最核心的三板斧——IP、域名、端口扫描——掰开了揉碎了讲给你听。你想想看,这三样东西其实就是你网络资产的“身份证”、“门牌号”和“门窗状态”。搞清楚了它们,后面的自动化梳理才有根基。

1. IP资产发现:你得知道家里有几间房

IP 是资产的唯一网络标识。不管是公网还是内网,第一步永远是划定网段范围。我曾经接手过一个项目,客户说“我们只有 /24 段”,结果扫出来还有两个隐藏的 /24――那是被遗忘的测试环境,上面跑着生产数据库的备份。吓出一身冷汗。

那么 IP 怎么发现?常用的方法就这几种:

  • ICMP Ping 扫描:最基础,但容易被防火墙过滤。我个人习惯先做一次 Ping 扫全段,快速定位存活主机。
  • ARP 探测:内网环境下,ARP 基本不会被拦截。用 arp-scan 工具,几秒就能拿到同网段所有活跃 IP 和 MAC。
  • TCP SYN Ping:如果 ICMP 被禁,就用 TCP 80/443 端口发 SYN 包。我在项目里撞到过很多只开放 443 的服务器,ICMP 全关,TCP Ping 反而好使。
  • 被动监听:在交换机镜像口抓包,等一段时间就能收集到真实流量中的 IP 对。这个方法不产生任何告警,适合隐秘资产摸底。

这里给个经验比例:公网环境 ICMP 成功率大概只有 60%,TCP Ping 能到 85% 以上。所以别死磕一种方式。

核心原则:IP 扫描不是一次性的。网络会变,云环境 IP 会动态释放,容器编排会随时起停。建议按天或按小时做增量扫描,把变化记录到资产库。

2. 域名资产发现:别让子域名“飘在外头”

域名是用户访问的入口,也是攻击者最喜欢钻的洞。很多公司只记得 www.example.com,却忘了 dev.example.com、test.example.com 甚至一些已不在 DNS 记录的“幽灵”域名。我见过一个案例:某金融科技公司的旧子域名指向一个被废弃的 S3 存储桶,后来被恶意注册接管,直接用于钓鱼攻击。教训惨痛。

域名发现的手段有三层:

方法 原理 典型工具 个人评价
字典枚举 用常见子域名前缀 + 目标域名暴力请求 DNS 解析 subfinder, dnsx 速度最快,依赖词库质量。我自己的词库包含 5 万条,每天更新一次热门前缀。
证书透明度日志 从 crt.sh、CertSpotter 等 SSL 证书日志中提取域名 crt.sh API, ct-exposer 非常准!只要域名挂了 HTTPS,基本都能扫出来。我最常用的方法,没有之一。
搜索引擎/被动 DNS 用 Google dork、VirusTotal、Shodan 等平台查询关联域名 Google, SecurityTrails 适合做补充,有些内部域名不会暴露在 CT 日志里,但可能出现在安全厂商的被动 DNS 数据中。

嗯,这里要注意:一定要去重。三路来源会产出大量重复域名,而且很多是泛解析或者跳转域名。我个人习惯先做 DNS A 记录解析,只保留有真实 IP 的域名。

避坑指南:我曾经因为没过滤泛解析域名,扫出 1 万多个“子域名”,结果全是 * .example.com 通配符返回的同一个 IP。那叫一个冤枉。记住:拿到域名列表后,先做一次实际连接测试,比如 TCP 三次握手成功才算有效。

3. 端口扫描:摸清每扇门是开是关

有了 IP 和域名,下一步就是看它们对外暴露了哪些端口。端口扫描的核心不是“全端口扫一遍”,而是在时间与准确度之间找平衡。我刚开始做安全时,习惯用 nmap -p-,结果扫一个 C 段要等好几个小时。后来才明白,90% 的服务都集中在 1000 个常见端口上,先扫常见端口快速定位,再针对特定 IP 做全端口扫描,效率能提升 10 倍。

端口扫描的几个关键考量:

  • 扫描方式:TCP Connect 扫描(慢但可靠)、SYN 半开扫描(快且隐蔽,推荐)、UDP 扫描(很多服务用 UDP 比如 DNS、SNMP,别忽略)。我通常先 SYN 扫 TCP 热门端口,再用 UDP 扫 53、161、500 等核心 UDP。
  • 服务识别:端口开了不等于你知道上面跑什么。nmap -sV 可以探测版本信息。但有些服务会伪装,比如把 SSH 改到 2222 端口。我建议配合 banner 抓取和 TLS 证书 SNI 来识别。
  • 速率控制:猛扫会被 IDS/IPS 拦截,甚至触发云厂商的封禁策略。设置 -T3 或 --max-rtt-timeout 1000ms 等参数,分时段扫。我在公有云上吃过亏,扫太快直接被 AWS 弹出了告警邮件。

实用技巧:善用 masscan 做大规模快速扫描。这家伙号称可以“以 1000 万包/秒”的速度发起扫描。注意:别在办公网试,会把网络搞瘫。我一般在测试环境先调低参数,确认不会影响业务。

4. 三者的关系:一张图看懂资产发现流程

说了这么多,你可能觉得 IP、域名、端口是三个独立的事情。其实它们是逐层递进、互相验证的关系。下面这张图就是我多年实践中总结的资产发现流程:

资产发现核心流程 原始输入范围 IP 存活探测 ICMP / ARP / SYN 域名发现 枚举 / CTLog / 搜索引擎 端口扫描 SYN / Connect / 服务识别 去重、关联、合并 统一资产清单 说明:三个分支可并行扫描,结果汇聚去重

从这张图你可以看到:先拿到 IP 段、域名列表等原始输入,然后三个分支并行开展。IP 存活确认哪些主机在线,域名发现收集所有关联的子域,端口扫描则精确定位每台主机的开放服务。最后,三路数据去重合并,生成一份结构化的统一资产清单。这份清单就是后面接口梳理的原材料。

5. 常见误区与避坑

做资产扫描这么久,我踩过的坑能写一本书。挑几个典型的说说:

  • 误把 CDN 节点当成真实后端:很多网站用了 Cloudflare、Akamai,你扫描到的 IP 其实是 CDN 边缘节点,不是源站。要识别的话,看 ASN 归属或者用 DNS 历史记录反查。我一般在清单里打上“CDN”标签,避免误判。
  • 忽略了 IPv6:现在很多云原生环境默认启用 IPv6,但大部分扫描工具默认只扫 IPv4。我遇到过某公司的内部监控系统只配了 IPv6 地址,IPv4 扫描完全看不到它。建议加上 -6 参数。
  • 扫描速率导致被降权:公共云厂商(阿里云、AWS)对大规模扫描敏感。我建议分时段、分 IP 池扫,或者用云函数弹性扩缩来做,把流量伪装成正常访问量。

重要提醒:无论哪种扫描方式,务必获得对方书面授权。曾经有同行在未授权的情况下扫描合作方的内网,最后被起诉侵犯商业秘密。安全的前提是合规,这个底线不能破。

6. 小结:把资产发现变成一个“自动化的传感器”

IP、域名、端口扫描是资产发现的地基。但如果你只是手动执行一次,那就白做了。我个人习惯把这三种扫描封装成一个定时任务,每天凌晨跑一遍,输出增量变更报告。这样一旦出现新的子域名、新的端口,我能第一时间发现。你可以把它想象成一个“资产变化的传感器”——不用天天盯着,但它会主动告诉你哪里有动静。