用于检测 ARP 投毒攻击的安全工具
+-------------+ +---------------+ +------------+
| ARP 数据包 | ARP 回复 | MAC-ARP 头部 | 一致性 | 欺骗 |
| 嗅探器 | ------------> | 一致性检查器 | --------------> | 检测器 |
| | 数据包 | | ARP 数据包 | |
+-------------+ +---------------+ +------------+
| /
不一致 被欺骗的
ARP 数据包 ARP 数据包
| /
V /
+--------------+ /
| | /
| 通知器 | <----------
| |
+--------------+
ARP 数据包嗅探器
它嗅探所有 ARP 数据包并丢弃
MAC-ARP 头部一致性检查器
它匹配
如果以上任意一项不匹配,则会发出通知。
欺骗检测器
它基于 TCP/IP 协议栈的基本特性工作。
主机的网络接口卡将接受发送到其 MAC 地址、广播地址和已订阅多播地址的数据包,并将这些数据包传递给 IP 层。
IP 层只接受目的地为其 IP 地址的 IP 数据包,其余的数据包将被静默丢弃。
如果接受的数据包是 TCP 数据包,则将其传递给 TCP 层。如果收到一个 TCP SYN 数据包,则主机将通过发送
TCP SYN/ACK 数据包(如果目标端口开放)或 TCP RST 数据包(如果端口关闭)来响应。
因此可能存在两种类型的数据包:
对于每一个一致的 ARP 数据包,我们将构造一个 TCP SYN 数据包,其目标 MAC 和 IP 地址与 ARP 数据包所宣告的一致,并带上一个随机的 TCP 目标端口,源 MAC 和 IP 地址则为运行工具的主机的地址。
如果 在时间限制内收到了 RST(端口关闭)或 ACK(端口监听),则该主机(发送 ARP 数据包的主机)是合法的。
否则 在时间限制内未收到任何响应,则该主机不合法,并会发出通知。
通知器
当检测到 ARP 欺骗时,它提供桌面通知。

npm
[sudo] npm install arp-validator -g
源码安装
git clone https://github.com/rnehra01/arp-validator.git
cd arp-validator
npm install
使用 bin/ 目录下的二进制文件来运行
[sudo] arp-validator [操作] [选项]
操作选项:
start 以守护进程方式启动 arp-validator
选项:
--interface, -i
工具工作的网络接口
arp-validator start -i eth0 或 --interface=eth0
--hostdb, -d
将有效主机信息存储到外部文件(绝对路径)
arp-validator start -d host_file 或 --hostdb=host_file
--log, -l
将日志记录到外部文件(绝对路径)
arp-validator start -l log_file 或 --log=log_file
stop 停止 arp-validator 守护进程
status 查看 arp-validator 守护进程的状态
全局选项:
--help, -h
显示本脚本的帮助信息
'arp-validator -h' 或 'arp-validator --help'
--version
显示版本信息
arp-validator --version
Vivek Ramachandran 和 Sukumar Nandi,“检测 ARP 欺骗:一种主动技术”