数据资产发现:主动扫描与被动监听技术
数据资产发现,说白了就是在你的网络里找出所有藏着数据的角落。我做了这么多年数据安全,见过太多团队连自己有多少数据库、多少文件服务器都搞不清楚。你想想,连自己有什么资产都不清楚,又怎么保护它们?
资产发现有两种主流手段:主动扫描和被动监听。两者各有优劣,我习惯把它们搭配着用,像左右手一样配合。
主动扫描:像拿着手电筒四处照
主动扫描就是由工具主动向目标网络发送探测包,然后根据回复判断资产是否存在。常用的技术包括:
- 网络扫描:通过Ping、ARP请求发现存活主机
- 端口扫描:检查目标主机开放了哪些TCP/UDP端口
- 服务探测:向开放端口发送特定协议握手,识别服务类型和版本
- API枚举:针对Web应用,通过字典请求发现隐藏的REST端点或GraphQL接口
我的习惯:主动扫描之前一定要拿到授权书。有一次我接手一个客户环境,他们网络团队没走流程就扫了一圈,结果触发IDS直接把出口封了,第二天才恢复。所以,先签字,再动手,这是铁律。
主动扫描的优点是速度快、覆盖面广。缺点也很明显:会产生大量流量,容易被安全设备察觉。而且在非生产环境能扫到的东西,到生产环境可能被防火墙阻断,导致漏报。
被动监听:像坐在路边听车辆声音
被动监听不发送任何数据包,只在网络关键节点部署流量采集器,通过镜像端口(SPAN/TAP)或分析DNS、HTTP日志来发现数据资产。常见方式:
- 流量镜像:在交换机上配置端口镜像,把流量复制一份到分析设备
- DNS日志分析:从DNS查询记录中提取域名、主机名,识别内部服务
- NetFlow/sFlow:收集流数据摘要,识别通信对端和端口
- 日志聚合:从Syslog、Windows Event Log中解析出服务器和数据库信息
被动监听最大的好处是隐身——完全不影响业务,也不会触发任何告警。但它只能看到已经发生的流量,如果某个数据库几个月没人访问,它就不会出现在发现结果里。
主动扫描 vs 被动监听:核心差异
| 维度 | 主动扫描 | 被动监听 |
|---|---|---|
| 基本原理 | 发送探测包,分析响应 | 捕获现有流量,解析协议 |
| 对网络影响 | 增加流量,可能触发规则 | 完全无侵入 |
| 资产发现完整性 | 高(只要不被防火墙拦截) | 依赖历史流量,易遗漏冷资产 |
| 实时性 | 即时结果 | 有延迟(需等待流量经过) |
| 隐蔽性 | 低 | 高 |
| 典型工具 | Nmap、Masscan、Burp Suite | Zeek、tcpdump、Wireshark、Logstash |
两种技术如何搭配使用
我的做法是:先用被动监听观察一周,拿到日常活跃的资产清单。然后再用主动扫描去补漏,特别是那些长期没人访问但依然在运行的老系统。这样既能保证准确性,又能减少被发现的概率。
举个例子。之前在金融行业做DSPM项目,客户要求不能影响生产业务。我先在汇聚交换机上配置了SPAN端口,用Zeek收集了72小时的流量,发现了300多个数据库IP。再用Nmap对这些IP做轻量扫描——只扫端口,不扫版本——结果又发现了20多个之前没出现的数据库实例。这些实例大部分是开发测试环境,平时没人用,但数据是真实的客户信息,风险极高。
避坑指南:我曾经在一家公司只做了主动扫描,就以为把所有资产都发现了。结果三个月后,一个隐藏的FTP服务器被勒索病毒加密了,所有人都很惊讶。后来复盘发现,那个FTP服务器接在单独的VLAN里,防火墙默认deny了所有入站ICMP,主动扫描根本发不过去。从那以后,我坚持“主动+被动”双层检测,缺一不可。
技术选型时的几个关键判断
你可能会问:到底哪种工具最适合我?我的经验是,没有银弹。你可以参考下面这几个判断点:
- 网络规模:超过500台设备建议先用被动发现过滤活跃资产,再针对性地主动扫描
- 安全合规要求:PCI-DSS、SOX要求必须知道所有数据存储位置,两种方法都要上
- 团队能力:被动监听需要懂协议分析,学习曲线较陡;主动扫描上手快,但参数调优容易踩坑
- 预算:主动扫描工具(如Nmap)开源免费;被动方案中Zeek也是免费的,但需要部署专门的机器来存储PCAP
一个完整的发现流程示例
假设你要对一个中大型企业做数据资产发现,下面是我经常使用的步骤:
- 准备阶段:获取网络拓扑图,确认哪些网段属于数据域(数据库、文件服务器、备份系统)
- 被动采集:在核心交换机部署Zeek,同时对接企业已有的DNS日志和NetFlow数据,连续采集48小时
- 基线分析:从采集数据中提取所有IP、端口、协议、主机名,按访问频率排序
- 主动补扫:用Nmap对“低频资产”做TCP Connect扫描,重点检查22、3306、1433、445等常见数据服务端口
- 资产标记:将识别到的资产打上标签(生产/测试/备份),并记录其存储的数据类型(如果通过协议能识别)
- 持续监控:将发现的资产信息同步到CMDB或资产管理平台,并设置定期被动监听任务
几个容易踩的坑
- 别忽略云环境:在云上,主动扫描可能被安全组直接封禁IP,甚至触发供应商的滥用举报。我建议优先用云厂商提供的API(如AWS Config、Azure Resource Graph)做被动发现
- 注意扫描速度:Nmap的默认参数在千兆网络里没问题,但在银行核心网络里可能造成丢包。我一般用 -T2 或 -T3 等级,慢慢来,稳一点
- 被动监听要选对采集点:不同交换机型号的SPAN端口配置方法不同。我曾经在一个客户那里配置了SPAN,结果因为目的端口出口带宽被占满,导致交换机CPU飙升——后来改用流采样(sFlow)才解决
好了,这一章的内容基本就是这些。主动扫描和被动监听没有谁比谁好,关键是看场景。我的建议是:先被动,再主动;先基线,后补漏。这样既能看到大部分资产,又能把那些藏在角落里“装死”的数据揪出来。