本文目录导读:

- 核心原则
- 方法一:基于 ARP 协议(最快,推荐用于同网段)
- 方法二:基于 ICMP 协议(Ping 扫描,适用跨网段)
- 方法三:基于 TCP 协议(端口探测,最可靠但最慢)
- 方法四:被动发现(监听流量)
- 特殊场景与技巧
- 总结推荐(根据场景)
- 注意事项
内网存活主机快速发现是内网渗透测试或运维管理中的基础步骤,方法主要分为主动扫描和被动监听两大类,以下是一些常用且高效的技巧和工具:
核心原则
- 速度优先:优先使用无状态扫描(如
masscan)或 ARP 协议(二层网络)。 - 隐蔽性:如果是为了渗透测试,建议使用 ICMP 或 SYN 扫描,避免未授权的全连接扫描(易被日志记录)。
- 协议选择:ARP 最快(仅限同一网段),ICMP 次之,TCP/UDP 端口探测最慢但更可靠。
基于 ARP 协议(最快,推荐用于同网段)
ARP 是二层广播协议,只要主机在线,无论是否开放端口或防火墙拦截,都会响应,这是同网段内最强、最快的方法。
- 工具与命令:
arp-scan(Linux):专门用于快速扫描局域网。# 扫描整个 /24 网段,几秒内出结果 sudo arp-scan --localnet # 或指定网段 sudo arp-scan 192.168.1.0/24
fping(Linux/Windows):对 ARP 协议支持好,速度极快。fping -g 192.168.1.0/24 -a -q # -a: 只显示存活主机, -q: 安静模式
Netdiscover(Linux):实时 ARP 嗅探或扫描。sudo netdiscover -r 192.168.1.0/24
- Windows (Powershell):利用
ARP表间接发现(主动发送 ARP 请求后查表)。# 先 ping 整个网段(可写脚本循环),然后查看 ARP 表 1..254 | % {"192.168.1.$_"} | ForEach-Object {Test-Connection $_ -Count 1 -Quiet} arp -a nbtscan:对于 Windows 主机(NetBIOS),可以发现主机名和 MAC。nbtscan 192.168.1.0/24
基于 ICMP 协议(Ping 扫描,适用跨网段)
用于跨网段或三层设备,注意:防火墙可能屏蔽 ICMP。
- 工具与命令:
fping:依然是首选,速度比系统自带的ping快很多。fping -a -g 10.0.0.1 10.0.0.254 2>/dev/null
nmap -sn:Ping 扫描(发送 ICMP echo、TCP SYN 到 80/443 等)。nmap -sn 192.168.1.0/24 # -sn: 只做 Ping 扫描,不扫描端口
masscan:无状态扫描,速度极快(适用于大内网)。# 使用 ICMP Ping 扫描 masscan 10.0.0.0/24 --icmp -p 0
hping3:更灵活,可发送定制 ICMP 包。hping3 -1 192.168.1.1-254 --rand-source
基于 TCP 协议(端口探测,最可靠但最慢)
当 ARP 和 ICMP 都被限制时(例如主机只开放了特定端口),可以扫描常见端口。
- 核心逻辑:发送 SYN 包,如果收到 SYN/ACK 则主机存活。
- 工具与命令:
nmap -T4 -sS -p 80,443,22,445,3389:SYN 半开扫描,速度快且相对隐蔽。nmap -T4 -sS -p 80,443,22,445,3389 192.168.1.0/24
masscan:极速端口扫描。# 扫描 445 端口来判断 Windows 主机 masscan 192.168.1.0/24 -p445 --rate=10000
tcping:专门测试 TCP 端口连通性(如 445,3389)。# 批量扫描 445 端口 for i in {1..254}; do echo 192.168.1.$i; done | xargs -P 50 -I {} sh -c 'tcping {} 445 -c 1 -t 1 >/dev/null 2>&1 && echo {} alive'
被动发现(监听流量)
最隐蔽,不发送任何数据包,通过监听网络流量来发现主机。
- 工具:
tcpdump/wireshark:抓取 ARP 广播、DHCP 请求、NetBIOS 名称请求等。sudo tcpdump -i eth0 -nn -c 1000 arp or port 67 or port 137
Responder:常用于内网渗透,可被动监听并收集主机名、IP、用户等信息。Netstat -n:在本地查看当前建立的连接,可以发现正在通信的远程主机 IP。
特殊场景与技巧
- 扫描多网段:使用
nmap -sn 192.168.1.0/24 10.0.0.0/24或masscan大范围。 - 绕过防火墙:
- ICMP 被禁,改用 TCP SYN 扫描(如端口 80、443、445)。
- 使用
-Pn参数(nmap),跳过 Ping 检测,直接进行端口扫描(慢但有效)。
- 识别操作系统:
nmap -O或p0f(被动识别)。 - 批量执行脚本:
- Linux (Bash):
for i in {1..254}; do ping -c 1 -W 1 192.168.1.$i | grep -q "64 bytes" && echo "192.168.1.$i alive"; done - Windows (Powershell):
$subnet = "192.168.1" 1..254 | ForEach-Object { $ip = "$subnet.$_"; if(Test-Connection $ip -Count 1 -Quiet){ Write-Host "$ip alive" } }
- Linux (Bash):
总结推荐(根据场景)
| 场景 | 推荐方案 | 命令 |
|---|---|---|
| 同网段快速探测 | ARP 扫描 | arp-scan --localnet 或 fping -g |
| 跨网段/大内网 | ICMP + TCP 结合 | nmap -sn 目标网段 (先快速发现) |
| 渗透测试(隐蔽) | SYN 半开扫描 + 被动监听 | nmap -sS -p 80,443,445 目标网段 |
| 绕过 ICMP 屏蔽 | TCP 端口扫描 (445) | masscan 目标网段 -p445 --rate=10000 |
| Windows 环境 | nbtscan (NetBIOS) + arp -a |
nbtscan 192.168.1.0/24 |
注意事项
- 授权:未经授权的内网扫描可能违反单位安全政策或法律(《网络安全法》)。
- 流量影响:
masscan如果速率设置过高(如--rate=100000),可能造成网络拥塞或设备卡顿,建议从1000逐步调高。 - 日志记录:防火墙、IDS/IPS 设备通常会记录端口扫描行为。
- 虚拟机/容器:如果内网有大量 VMware、Docker 虚拟网卡,可能会扫描出多余的“虚拟主机”IP(但 MAC 地址通常属于虚拟化厂商)。
建议先走ARP(同网段)或ICMP(跨网段),若不行再试 TCP 端口探测。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。