信息收集入门:目标IP发现、端口扫描基础、服务识别
信息收集是渗透测试的第一步,也是最重要的一步。说白了,你连目标在哪、开了什么门都不知道,后面的一切都是空谈。在IoT安全领域,这一步尤其关键——很多设备就暴露在公网上,等着你去发现。
我个人习惯把信息收集分成三个层次:先找到目标IP,再扫描开放端口,最后识别端口背后的服务。今天我们就一步步来拆解这个过程。
目标IP发现:怎么找到IoT设备?
IoT设备的IP发现,和普通主机发现没什么本质区别。但有个特点——很多IoT设备会主动广播自己的存在。比如UPnP、mDNS、LLMNR这些协议,设备上电后就会喊一嗓子:“我在这!”
常用的发现手段有几种:
- 主动扫描:用ARP ping、ICMP ping、TCP SYN ping去探测存活主机
- 被动监听:在本地网络抓包,等设备自己说话
- 利用广播协议:UPnP、mDNS、SSDP这些协议会暴露设备信息
我的经验:在项目里,我经常先用Wireshark抓5分钟广播包,看看有没有设备在“自言自语”。很多时候,摄像头、智能音箱、打印机都会主动暴露自己的IP和型号。这比盲目扫描高效得多。
举个例子,用Nmap做ARP扫描发现同网段设备:
nmap -sn 192.168.1.0/24
# -sn 表示只做ping扫描,不扫描端口
# 输出会列出所有响应ARP请求的主机IP和MAC地址
输出结果大概长这样:
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
MAC Address: 00:11:22:33:44:55 (Router Manufacturer)
Nmap scan report for 192.168.1.105
Host is up (0.0034s latency).
MAC Address: AA:BB:CC:DD:EE:FF (Camera Manufacturer)
看到MAC地址的厂商信息了吗?这就能帮你初步判断——哪个是路由器,哪个是摄像头,哪个是智能插座。
端口扫描基础:开着的门才是入口
找到IP之后,下一步就是看它开了哪些端口。端口就像房子的门——门越多,能进去的路就越多。
端口扫描的核心原理其实很简单:向目标端口发送特定类型的包,根据回应判断端口状态。常见的端口状态有三种:
| 状态 | 含义 | 典型回应 |
|---|---|---|
| open | 端口开放,有服务在监听 | SYN/ACK 回应 |
| closed | 端口关闭,没有服务 | RST 回应 |
| filtered | 被防火墙过滤,无法判断 | 无回应或ICMP不可达 |
注意:扫描不是扫描的越多越好。我曾经遇到过一台工业路由器,全端口扫描(65535个端口)直接导致设备死机。对于IoT设备,建议先扫1000个常用端口,确认设备扛得住再扩大范围。
服务识别:知道门后面是什么
端口开放只是第一步。更关键的是——这个端口上跑的是什么服务?是HTTP?SSH?还是某个厂商自定义的协议?
服务识别有两种方式:
- 端口号推测:80是HTTP,443是HTTPS,22是SSH——但这只是猜测,不准确
- 指纹识别:发送特定请求,根据回应特征判断服务类型和版本
Nmap的服务识别就是靠指纹库。它会发一些精心构造的探测包,然后和内置的指纹数据库比对。准确率相当高,但也不是100%。
核心要点:服务识别不仅仅是知道“这是HTTP”,还要知道“这是Apache 2.4.41还是Nginx 1.18.0”。不同版本有不同的已知漏洞,版本信息直接决定了后续的攻击面。
使用Nmap进行IoT设备扫描
好了,理论说完了,我们上手实操。Nmap是端口扫描的瑞士军刀,功能强大到离谱。我挑几个IoT场景下最常用的扫描方式来讲。
1. 基础TCP扫描
nmap -sT 192.168.1.105
# -sT 表示TCP全连接扫描
# 最基础、最稳定,但速度慢、容易被日志记录
2. SYN半开扫描(推荐)
nmap -sS 192.168.1.105
# -sS 表示SYN扫描,只发SYN包,不完成三次握手
# 速度快、隐蔽性好,是Nmap默认扫描方式
3. 服务版本探测
nmap -sV 192.168.1.105
# -sV 启用版本探测
# 会尝试识别每个开放端口上的服务名称和版本号
4. 综合扫描(我最常用的)
nmap -sS -sV -O --traceroute 192.168.1.105
# -sS SYN扫描
# -sV 版本探测
# -O 操作系统识别
# --traceroute 路由追踪
这条命令是我在项目里的标配。一次扫描,端口、服务、操作系统、网络路径全都有了。
5. 针对IoT设备的温和扫描
nmap -sS -sV -T2 --max-retries 1 --host-timeout 30s 192.168.1.105
# -T2 降低扫描速度,避免设备过载
# --max-retries 1 减少重试次数
# --host-timeout 30s 单个主机最多扫30秒
避坑指南:我曾经扫描一台老旧的路由器,默认的-T3速度直接把它扫挂了。从那以后,我扫描任何IoT设备都会先用-T2试试水。设备稳定了再提速。记住——搞瘫设备不是本事,拿到信息才是。
本章知识体系
下面这张图总结了信息收集的核心流程和工具关系,你可以对照着理解:
实战小贴士
最后分享几个我在项目中积累的经验:
- 先被动后主动:先抓包看看设备在说什么,再决定怎么扫。有时候设备自己就把信息暴露了。
- 扫描结果要交叉验证:Nmap说端口开放,最好再用其他工具(如telnet、nc)手动确认一下。我遇到过Nmap误报的情况。
- 记录一切:每次扫描的结果都保存下来。你永远不知道哪个细节会在后续渗透中派上用场。
- 注意法律边界:扫描不属于自己的设备前,务必获得授权。这个不用我多说吧?
信息收集是门手艺活,熟能生巧。多扫、多看、多总结,你很快就能从扫描结果里嗅出设备的“脾气”。