Kali Linux 教程:主机存活探测工具-arp-scan

介绍

⚠️ 警告:仅可在自己拥有授权的内网环境测试,未经授权扫描他人网络属于违法行为!

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:使用的网卡
  • 每行:IP MAC 厂商
  • 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 / 路由器等。