近期关于企业通过软件监控员工上网行为的话题持续发酵,只能说牛马的打工日子真的毫无隐私。而对于我们这些Linux运维工程师来说,可能对这背后的网络嗅探、流量分析等基础网络技术更加感兴趣。今天我们以学习为目的,在封闭的实验环境中,拆解ARP欺骗与流量抓包的核心操作,去理解这类网络分析技术的底层逻辑。首先重点说明:我本次所有操作均在自建的封闭测试网络中完成,目标ip192.168.100.32、网关ip192.168.100.254均为实验用虚拟地址,无任何真实隐私数据,核心目的是掌握dsniff、arpspoof、tcpdump等网络工具的使用。问了下度娘关于ARP欺骗的底层逻辑:ARP(地址解析协议)的作用是将IP地址转换为MAC地址,而ARP欺骗的核心是伪造ARP响应包,让目标主机误以为我们的机器是网关,同时让网关误以为我们的机器是目标主机,从而实现“中间人”流量劫持。这也是很多网络监控工具的基础原理之一。话不多说,直接开干,先安装ARP欺骗工具dsniff工具集(包含arpspoof),这是Linux下常用的网络嗅探工具:然后开启流量转发,这是个关键步骤,如果不开启,目标主机的流量被我拦截后无法转发到网关,导致目标主机断网,那就没得下一步了:echo 1 > /proc/sys/net/ipv4/ip_forward
它的作用是修改内核参数,临时开启IPv4转发功能(重启后失效,如需永久生效需修改/etc/sysctl.conf),这里是试验环境没所谓了。还要开启网卡的混杂模式,这是为了让网卡能接收所有经过它的网络数据包,而不是只接收目标MAC地址匹配自己的包),这是很多网络工具(比如这里用到的arpspoof、抓包工具tcpdump)能工作的前提。ip link set enp1s0 promisc on
然后分别欺骗目标主机和网关,让两者的流量都经过我们的机器,且后台静默运行(不输出日志),注意替换实际的网卡名:# 让目标机器192.168.100.32以为我们是网关192.168.100.254arpspoof -i enp1s0 -t 192.168.100.32 192.168.100.254 >/dev/null 2>&1 &# 同时让网关192.168.100.254以为我们是目标主机192.168.100.32arpspoof -i enp1s0 -t 192.168.100.254 192.168.100.32 >/dev/null 2>&1 &
- -i enp1s0:指定网卡(根据自己的实验环境替换,如eth0、ens33);
- >/dev/null 2>&1 &:将标准输出、错误输出重定向到空,后台运行。
登录目标主机192.168.100.32,执行arp -a查看ARP缓存表:如果网关192.168.100.254对应的MAC地址是我们所操作的这台机器的MAC,说明成了。开始抓取目标主机100.32的指定流量,这里以抓取目标主机443端口(HTTPS)流量为例,使用tcpdump工具:tcpdump -i enp1s0 host 192.168.100.32 and tcp port 443 -nn
正常的话,会刷刷的看到非常多的数据在跑,这里就不截图了。简单说明:- host 192.168.100.32:只抓取目标主机的流量;
- tcp port 443:只抓取TCP 443端口(HTTPS)的流量;
- -nn:不解析IP和端口对应的域名、服务名,显示原始数值,提高抓包效率。
在我的实验中,抓取到的流量中出现了142.251.x.x、222.218.x.x、183.60.x.x、113.96.x.x等IP段——这些是微信的公网IP段,说明目标主机100.32正在访问微信相关服务,这也验证了流量抓取的有效性,这是我自己的实验环境,并无侵犯隐私的行为。实验完成后,务必关闭ARP欺骗进程(通过ps -ef | grep arpspoof找到进程号,再kill -9 进程号),并关闭IP转发(echo 0 > /proc/sys/net/ipv4/ip_forward),恢复试验前的状态。同时再次强制,本次实验仅用于技术学习,严禁将ARP欺骗、流量嗅探技术用于未经授权的网络监控、数据窃取等违规违法场景。作为Linux运维工程师,掌握ARP欺骗与流量分析技术,不仅能理解网络监控工具的原理,更能用于网络故障排查(如定位ARP攻击源)、安全加固(如配置ARP静态绑定)。网络技术本身无善恶,运维工程师需坚守合规底线,不然被请去喝茶你就完蛋了!