简介
arp-scan是一个命令行工具,使用ARP协议来发现和 本地网络上的指纹 IP 主机。它可在 GPLv3 许可证下用于 Linux、BSD、macOS 和 Solaris。
arp-scan 是一个用于 IPv4 主机发现和指纹识别的命令行工具。它向指定主机发送 ARP 请求并显示收到的响应。 arp-scan 允许您:
- 使用可配置的输出带宽或数据包速率将 ARP 数据包发送到任意数量的目标主机,从而实现大地址范围的高效扫描。
- 灵活构造出站ARP报文。 arp-scan 可以控制 ARP 数据包中的所有字段、以太网帧标头中的字段以及 ARP 数据包后的任何填充数据。
- 解码并显示任何返回的数据包。 arp-scan 将解码并显示任何收到的 ARP 数据包并使用 MAC 地址查找供应商。
- 使用指纹 IP 主机 arp-fingerprint 工具。
Arp-scan:局域网内的快速网络发现工具
Arp-scan 是一个专门用于通过地址解析协议(ARP)扫描局域网(LAN)中活动设备的工具。它通过将物理(MAC)地址映射到逻辑(IP)地址,能够识别那些常规网络扫描工具无法发现的设备。
ARP 是一种简单的协议,通常用于 IPv4 网络中,将网络设备的 IP 地址与其硬件地址(MAC 地址)进行映射。每个 ARP 消息都包含请求或响应操作,消息头包括发送方和接收方主机的地址。在局域网环境中,ARP 消息无法路由,这意味着 ARP 扫描仅能在本地子网中工作。
Arp-scan 的优势
Arp-scan 的主要优点是能够快速识别局域网内的所有活动设备,包括那些防火墙可能隐藏的设备。即使设备使用了防火墙,隐藏了 Ping 响应,它仍然无法逃避 ARP 扫描。这使得 Arp-scan 成为渗透测试和网络资产发现的有效工具。
ARP 扫描通过发送 ARP 请求,要求局域网内的每个设备响应,从而揭示子网内的所有活动设备,无论设备是否受到防火墙保护。这种方法通常比 Ping 扫描更为迅速有效,因为设备无法通过防火墙来屏蔽 ARP 请求。
Arp-scan 在渗透测试中的应用
在渗透测试过程中,网络扫描是一个关键步骤。常见的网络扫描工具如 masscan 和 nmap 虽然广泛应用,但 Arp-scan 则专注于使用第 2 层(即以太网)协议对网络进行扫描。它能够快速识别局域网中的所有活跃主机,发现潜在的安全漏洞。
由于 ARP 是一个不可路由的协议,Arp-scan 仅适用于本地子网。在进行子网外的扫描时,其他扫描工具如 Ping 扫描或 nmap 的网络发现功能更为适用。
安装
arp-scan可以通过源代码进行安装
arp-scan 使用 GNU automake 和 autoconf 工具。建议从github上克隆源码时挂代理。不然可能会出现克隆失败等错误。
#获取最新的源代码。
git clone https://github.com/royhills/arp-scan.git
#进入源码目录。
cd arp-scan
#生成配置文件(如果您没有 autoreconf 您可以下载 tarball)。
autoreconf --install
#为您的系统创建 makefile(请参阅下面的配置选项)。
./configure
#构建项目。
make
#验证一切是否按预期工作。(可选)
make check
#安装(您需要 root 权限或使用 sudo/doas 来完成此部分)。
make install
kali linux默认已经安装好arp-scan工具了。也可以输入以下命令进行安装
sudo apt install arp-scan
使用
arp-fingerprint
使用 ARP 对系统进行指纹识别
1.-h:显示此用法消息
arp-fingerprint -h
2.-v:显示详细进度消息
针对目标 IP 地址 192.168.174.145 执行指纹识别,并在执行过程中显示详细的进度消息。
arp-fingerprint -v 192.168.174.145
3.-o <option-string>:将将指定的选项传递给 arp-scan
指定网卡接口为 eth0,对目标 IP 地址 192.168.174.145 执行指纹识别。-I eth0 是传递给 arp-scan 的参数。
arp-fingerprint -o "-I eth0" 192.168.174.145
4.-l 参数:扫描本地网络中所有目标
扫描并指纹识别本地网络中的所有活动设备。
arp-fingerprint -l
arp-scan
向目标主机发送 ARP 请求并显示响应
常规选项
1.--help 或 -h
显示此使用消息并退出。
arp-scan -h
2.--verbose 或 -v
显示详细进度信息。可使用一次以上以增加详细程度。最大=3。
arp-scan -v -localnet
3.--version 或 -V
显示程序版本详细信息并退出。
显示版本、许可证详细信息、libpcap 版本,以及是否包含 POSIX.1e 功能支持。
arp-scan -V
4.--interface= 或 -I
使用网络接口 <s>。如果未指定此选项,arp-scan 将在系统接口列表中搜索编号最小、已配置的接口(不包括环回)。指定的接口必须支持 ARP。
默认情况下, arp-scan 将使用第一个可用的网络接口。这可以通过以下方式更改 --interface ( -I) 选项。
arp-scan --localnet -I eth0
主机选择
5.--file= 或 -f
从指定文件读取主机名或地址
每行一个名称或地址模式。使用“-”作为标准输入。
arp-scan --file=hostlist.txt
6.--localnet 或 -l
扫描本地网络。
使用网络接口 IP 地址和网络掩码生成目标主机地址列表。该列表将包括网络和广播地址,因此,接口地址 10.0.0.1 和网络掩码 255.255.255.0 将生成 256 个目标主机,范围从 10.0.0.0 到 10.0.0.255(含)。如果使用此选项,则无法指定 --file选项或在命令行上指定任何目标主机。接口规范取自 arp-scan 将使用的接口,可以使用 --interface 选项进行更改。
这将扫描由接口 IP 地址和网络掩码定义的网络内的所有 IPv4 地址(包括网络和广播地址)。
arp-scan --localnet
指定目标 IP 地址
您可以指定目标 IP 地址而不是使用 --localnet。支持以下目标规范:
单个 IP 地址,例如 192.168.1.1 或主机名。使用 --numeric ( -n) 阻止目标主机名的 DNS 解析的选项。
arp-scan -n 192.168.174.2
CIDR 格式的网络,例如 192.168.1.0/24 (包括网络和广播地址)。
arp-scan 192.168.174.0/24
ip:网关 格式,例如 192.168.1.0:255.255.255.0 (包括网络和广播地址)。
arp-scan 192.168.174.0:255.255.255.0
包含范围在 <start>- <end> 格式,例如 192.168.1.3-192.168.1.27
arp-scan 192.168.174.100-192.168.174.150
可以通过两种方式指定目标
作为命令行参数,例如 arp-scan 192.168.1.1 192.168.1.2 192.168.1.3 或者 arp-scan 192.168.1.0/24
arp-scan 192.168.174.128 192.168.174.139
使用 --file ( -f) 选项从指定文件中读取。每行一个目标规范。使用 - 用于标准输入。例如 echo 192.168.1.0/24 | arp-scan -f -
MAC/供应商映射文件
7.--ouifile= 或 -O
使用 IEEE 注册供应商映射文件。
默认为当前目录中的 ieee-oui.txt。如果未找到,则使用 /usr/share/arp-scan/ieee-oui.txt。
arp-scan --ouifile=ieee-oui.txt -l
8.--macfile= 或 -m
使用自定义供应商映射文件。
默认为当前目录中的 mac-vendor.txt。如果未找到,则使用 /etc/arp-scan/mac-vendor.txt。
arp-scan --macfile=mac-vendor.txt -l
输出格式控制
9.--quiet 或 -q
显示每个响应主机的最小输出。
仅显示 IP 地址和 MAC 地址。由于未使用供应商映射文件,因此内存使用量减少约 5MB。如果指定了 --quiet,则只有 ${ip} 和 ${mac} 字段可用于 --format 选项。
arp-scan --quiet -l
10.--plain 或 -x
省略页眉和页脚
--plain 选项省略页眉和页脚,只为每个响应主机显示一行。
arp-scan 192.168.174.145 --plain
11.--ignoredups 或 -g
不显示重复的数据包。
默认情况下,重复的数据包用“(DUP: n)”标记,其中 n 是此主机响应的次数。
arp-scan --ignoredups -l
12.--rtt 或 -D
计算并显示数据包往返时间。
时间以毫秒和微秒的小数显示。使 ${rtt} 字段可用于 --format。
arp-scan --rtt -l
13.--format 或 -F
自定义输出格式
这 --format ( -F) 选项允许指定灵活的自定义格式选项。
arp-scan --localnet --format='${IP}\t${MAC}\t${Vendor}'
主机列表随机化
14.--random 或 -R
随机化目标主机列表。
arp-scan --random -l
15.--randomseed=
为伪随机数生成器提供种子。
如果您想要可重现的 --random 顺序,则很有用。
arp-scan --random --randomseed=42 -l
输出计时和重试
16.--retry= 或 -r
将每个主机的总尝试次数设置为,默认值为 2。
arp-scan --retry=3 -l
17.--backoff= 或 -b
将退避系数设置为,默认=1.50。每次通过时将超时乘以 。
arp-scan --backoff=2 -l
18.--timeout= 或 -t
将每个主机的初始超时设置为 <i> 毫秒,默认值为 500。
此超时适用于发送到每个主机的第一个数据包。后续超时将乘以使用 --backoff 设置的退避因子。
arp-scan --timeout=800 -l
19.--interval= 或 -i
将最小数据包间隔设置为。
这通过限制数据包速率来控制传出带宽使用情况。如果您想要使用给定的带宽,则更易于改用 --bandwidth 选项。间隔以毫秒为单位,如果附加了“u”,则以微秒为单位。
arp-scan --interval=10 -l
20.--bandwidth= 或 -B
将出站带宽设置为 ,默认值为 256000。
值以比特/秒为单位。附加 K 表示千比特,附加 M 表示兆比特(十进制倍数)。您不能同时指定 --interval 和 --bandwidth。
arp-scan --bandwidth=512K -l
DNS 解析
21.--numeric 或 -N
目标必须是 IP 地址,而不是主机名。
可以减少大型目标列表的启动时间。
arp-scan --numeric 192.168.174.145
22.--resolve 或 -d
将响应地址解析为主机名。
默认输出格式将显示主机名而不是 IPv4 地址。此选项使${name} 字段可用于 --format 选项。
输出 ARP 数据包
23.--arpsha= 或 -u
设置 ARP 源以太网地址。
设置 48 位 ar$sha 字段,但不更改帧头中的硬件地址,请参阅 --srcaddr了解如何更改该地址。默认值为传出接口的以太网地址。
下面运行的arp-scan 路由器只有在地址中的地址时才会响应 ar$spa 该字段是接口所连接的IP网络范围内的信息,包括网络地址和广播地址。
arp-scan --interface=eth0 --arpspa=192.168.174.145 192.168.174.254
24.--arptha= 或 -w
设置 ARP 目标以太网地址。
设置 48 位 ar$tha 字段。默认值为零,因为此字段不用于 ARP 请求数据包。
arp-scan --arptha=00:11:22:33:44:66 -l
25.--arphrd= 或 -H
设置 ARP 硬件类型,默认值为 1。
设置 16 位 ar$hrd 字段。默认值为 1(ARPHRD_ETHER)。许多操作系统也响应6 (ARPHRD_IEEE802)
arp-scan --arphrd=6 -l
26.--arppro= 或 -p
设置 ARP 协议类型,默认值 = 0x0800。
设置 16 位 ar$pro 字段。大多数操作系统仅响应 0x0800 (IPv4)。
arp-scan --arppro=0x0800 -l
27.--arphln= 或 -a
设置硬件地址长度,默认值 = 6。
设置 8 位 ar$hln 字段。ar$sha 和 ar$tha 字段的长度不会因该选项而改变;它只会改变 ar$hln 字段。
arp-scan --arphln=6 -l
28.--arppln= 或 -P
设置协议地址长度,默认值 = 4。
设置 8 位 ar$pln 字段。ar$spa和 ar$tpa 字段的长度不会因该选项而改变;它只会改变 ar$pln 字段。
arp-scan --arppln=4 -l
29.--arpop=<i> 或 -o <i>
指定 ARP 操作,默认值为 1。
设置 16 位 ar$op 字段。大多数操作系统仅响应值 1 (ARPOP_REQUEST)。
arp-scan --arpop=1 -l
30.--arpspa= 或 -s
设置源 IPv4 地址。
该地址应为点分四组格式,或字符串“dest”,它将源地址设置为目标主机地址。默认值为传出
接口地址。设置 32 位 ar$spa 字段。某些操作系统仅在源地址位于接收接口的网络内时才响应。将 ar$spa 设置为目标 IP 地址可能会导致某些操作系统报告地址冲突。
arp-scan --arpspa=192.168.174.134 -l
输出以太网报头
31.--srcaddr= 或 -S
设置源以太网 MAC 地址。
默认为接口 MAC 地址。这将设置以太网报头中的地址。它不会更改 ARP 数据包中的地址:使用 --arpsha 更改该地址。
arp-scan --srcaddr=00:11:22:33:44:55 -l
32.--destaddr= 或 -T
检测混杂模式接口
将数据包发送到以太网 MAC 地址,这将在以太网帧头中设置 48 位目标地址。默认广播地址为 ff:ff:ff:ff:ff:ff。如果 ARP 请求发送到其 MAC 地址或正在监听的多播地址,大多数操作系统也会做出响应。
指定 --destaddr=01:00:01:02:03:04 将以太网目标地址设置为未分配的多播地址。
arp-scan --localnet --destaddr=01:00:01:02:03:04
33.--prototype= 或 -y
设置以太网协议类型,默认为 0x0806。
这将设置以太网报头中的协议类型字段。
arp-scan --prototype=0x0806 -l
34.--llc 或 -L
对 802.2 网络使用 RFC 1042 LLC/SNAP 封装。
arp-scan 将解码并显示 Ethernet-II 和 IEEE 802.2 格式的 ARP 响应,而不管是否使用此选项。
arp-scan --llc -l
35.--vlan= 或 -Q
使用 VLAN id <i> 的 802.1Q 标记。
id 应在 0 到 4095 的范围内。arp-scan 将解码并显示 802.1Q 格式的 ARP 响应,而不管是否使用此选项。
arp-scan --vlan=100 -l
其他选项
36.--limit= 或 -M
在指定数量的主机响应后退出。
如果响应主机的数量小于限制,arp-scan 将以状态 1 退出。可以在脚本中使用,以检查响应的主机是否更少,而无需解析输出。
arp-scan -M 5 192.168.1.0/24
37.--pcapsavefile= 或 -W
将收到的数据包写入 pcap 保存文件。
ARP 响应将写入指定文件,并进行解码和显示。
arp-scan --pcapsavefile=scan_results.pcap 192.168.1.0/24
38.--snap= 或 -n
将 pcap snap 长度设置为 <i>。默认值为 64。
指定帧捕获长度,包括以太网标头。默认值通常就足够了。
arp-scan --snap=128 -l
39.--retry-send= 或 -Y
设置发送尝试次数,默认值为 20。
arp-scan --retry-send=10 -l
40.--retry-send-interval= 或 -E
设置发送尝试之间的间隔。
如果附加了“u”,则间隔以毫秒或微秒为单位。默认值为 5。
arp-scan -E 1000 192.168.1.0/24
41.--padding= 或 -A
指定数据包数据后的填充。
将填充数据设置为十六进制值。此数据将附加到 ARP 数据包末尾的数据后。大多数(如果不是全部)操作系统将忽略任何填充。默认为无填充,但发送系统上的以太网驱动程序可能会将数据包填充到最小以太网帧长度。
arp-scan --localnet --padding=aaaaaaaaaaaa
get-iab
从 IEEE 网站获取以太网 IAB 文件,(在 Debian 和基于 Debian 的系统上,数据从 ieee-data 包中获取)并以 arp-scan 使用的格式保存。
1.-h
显示此使用消息。
get-iab -h
2.-f FILE
指定输出 IAB 文件。默认值=ieee-iab.txt
get-iab -f ieee-iab.txt
3.-u URL
指定从中获取 IAB 数据的 URL。默认值=file://var/lib/ieee-data/iab.txt
这个命令会从指定的 URL http://example.com/iab.txt 下载 IAB 数据。
get-iab -u http://example.com/iab.txt
4.-v
提供详细的进度消息。
get-iab -v
get-oui
从 ieee-data 包中获取 arp-scan OUI 文件
1. -f <FILE> 或 --file=<FILE>
指定输出的 OUI 文件路径。默认文件名为 ieee-oui.txt。
这个命令会将 OUI 数据下载并保存到 custom-oui.txt 文件中。
get-oui -f custom-oui.txt
2. -u <URL> 或 --url=<URL>
指定从哪个 URL 获取 OUI 数据。默认 URL 为 file://var/lib/ieee-data/oui.txt。
这个命令会从指定的 URL http://example.com/oui.txt 下载 OUI 数据。
get-oui -u http://example.com/oui.txt
3. -h 或 --help
显示帮助信息。
这个命令会显示 get-oui 的帮助信息,包括所有可用的选项和使用方法。
get-oui -h
4. -v 或 --verbose
显示详细的进度信息。
这个命令会在下载过程中显示详细的进度信息,帮助你了解当前下载的状态。
get-oui -v
总结
Arp-scan 是每个 IT 和网络安全专业人员必须掌握的工具。它提供了一种非常高效的方式来发现本地局域网中的所有活动设备,并且在防火墙和隐藏设备的情况下仍然能够发挥作用。对于网络安全人员和道德黑客而言,了解 ARP 协议的工作原理以及如何使用 Arp-scan 执行扫描,是确保网络安全的基础。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。