介绍
⚠️ 警告:仅可在自己拥有授权的内网环境测试,未经授权扫描他人网络属于违法行为!
arp-scan 是Kali默认预装的ARP扫描工具,利用ARP协议(二层)探测局域网内存活主机,发送ARP请求包,收到应答就记录IP+MAC+厂商信息。
优点
- 属于二层扫描,不受主机防火墙禁ping影响(ping是ICMP三层,很多主机拦截ping,但ARP在同网段无法拦截)
- 扫描速度快,精准获取MAC地址与硬件厂商
局限
- 只能扫描同一广播域(同一子网),ARP不能跨路由器转发,无法扫描外网/跨网段主机
- 只支持IPv4
原理
ARP(地址解析协议),根据IP查询MAC地址。arp-scan批量发送ARP Request,存活主机返回ARP Reply。
基础命令
# 查看版本
arp-scan -V
# 帮助文档
arp-scan --help
# man手册
man arp-scan
必须root权限运行(需要读写网卡二层数据包),所以前面加sudo或切换root。
常用参数
| 参数 | 全称 | 作用 |
|---|---|---|
-l |
--localnet |
扫描本机网卡所在整个子网(最常用) |
-I |
--interface |
指定网卡,如 -I eth0 / -I wlan0 |
-q |
--quiet |
安静模式:只输出IP+MAC,去掉厂商、头部尾部信息 |
-x |
--plain |
纯文本输出,去掉页眉页脚,方便导入csv |
-t |
--timeout |
超时时间,单位ms,默认500 |
-c |
--retry |
重试次数 |
-R |
--random |
随机顺序扫描IP |
-s |
--arpspa |
修改ARP包源IP(伪造源IP) |
--srcaddr |
修改以太网源MAC(伪造源MAC) |
常用命令
1. 一键扫描本机所在局域网(最常用)
sudo arp-scan -l
输出字段:IP地址 MAC地址 硬件厂商
192.168.1.1 aa:bb:cc:dd:ee:ff TP-Link Technologies Co.,Ltd.
2. 指定网卡扫描(多网卡环境必备)
# eth0有线网卡
sudo arp-scan -I eth0 -l
# wlan0无线网卡
sudo arp-scan -I wlan0 192.168.1.0/24
3. 指定网段扫描(CIDR格式)
sudo arp-scan 192.168.1.0/24
4. 扫描单个IP,探测主机是否在线
sudo arp-scan 192.168.1.100
5. 扫描一段连续IP范围
sudo arp-scan 192.168.1.10-192.168.1.30
6. 安静模式,只输出IP+MAC,过滤多余信息
sudo arp-scan -l -q
7. 调整超时和重试(丢包严重场景)
sudo arp-scan -l -t 1000 -c 3
-t 1000:超时1000毫秒-c 3:每个IP重试3次
输出结果解读
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9 with 256 hosts
192.168.1.1 00:50:56:c0:00:08 VMware, Inc.
192.168.1.10 00:11:22:33:44:55 Intel Corp.
3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan: 256 hosts scanned ... 3 responded
解释:
Interface:使用的网卡- 每行:
IPMAC厂商 responded:一共多少台设备返回ARP应答(存活主机)
MAC前3字节OUI用来识别厂商;部分小众设备、虚拟机MAC无法识别厂商,会显示
(Unknown)。
高级用法(数据包伪造)
多用于内网渗透测试,请勿非法使用
# 伪造源MAC地址
sudo arp-scan --srcaddr=00:11:22:33:44:55 192.168.1.0/24
# 伪造ARP源IP
sudo arp-scan -s 192.168.1.200 192.168.1.100
常见问题
1. 报错:Operation not permitted
没有root权限,加sudo。
2. 扫描不出设备
- 网卡选错(虚拟机Kali看网卡:
ip a) - 虚拟机模式:要改成桥接模式,NAT模式只能扫虚拟机网段,扫不到宿主机内网
- 网卡未启用
配套工具 arp-fingerprint
arp-scan包自带arp-fingerprint,根据ARP应答报文做操作系统指纹识别:
sudo arp-fingerprint 192.168.1.1
用来判断目标是Windows / Linux / 路由器等。