⚠️ 重要声明
中间人攻击(MITM)是严重违反法律法规和道德规范的网络攻击行为,会对他人隐私、财产安全及网络安全造成极大危害。本文所述内容仅为网络安全研究中的防御性演示,旨在帮助读者了解攻击原理并采取有效防护措施,请勿用于非法用途。
一、中间人攻击的核心原理
中间人攻击(MITM)到底是什么?简单来说,就是攻击者在通信双方(比如你的电脑和路由器,或者你的电脑和服务器)之间,悄悄拦截、甚至篡改数据,让你浑然不觉,还以为自己在和对方直接对话。从技术角度看,它的核心逻辑就是利用了网络协议设计里的一些可乘之机——比如ARP协议的"无验证机制",还有DNS协议的"缓存投毒"这类漏洞。攻击者通过伪装成合法节点,就能轻松获取或篡改通信内容。听起来很抽象?下面我们看看具体的实现方式。
二、常见攻击方式及在CentOS中的实现
1. ARP欺骗(ARP Poisoning)
ARP协议,说白了就是把IP地址翻译成MAC地址的,但它有个致命缺陷:不会验证ARP响应的真实性。攻击者可以伪造一个ARP响应,假装自己是网关或者其他主机,然后把通信流量引到自己这里来。那在CentOS系统里怎么做呢?
步骤1:确认目标与网关IP
先用ip addr查一下本机IP(比如192.168.1.100),再用ip route show看默认网关(比如192.168.1.1)。
步骤2:启用IP转发
执行echo 1 > /proc/sys/net/ipv4/ip_forward,这步很关键,不然流量到你这里就断了。
步骤3:发送伪造ARP响应
这里要用到arpspoof工具(你得先装个dsniff包,命令是yum install dsniff)。向靶机发送一个伪造的ARP响应,假装你是网关;同时也向网关发一个,假装你是靶机。具体命令如下:
arpspoof -i ens33 -t 192.168.1.100 192.168.1.1# 向靶机(192.168.1.100)发送伪造ARP,声称自己是网关
arpspoof -i ens33 -t 192.168.1.1 192.168.1.100# 向网关(192.168.1.1)发送伪造ARP,声称自己是靶机
这样一来,靶机和网关之间的所有流量都会经过你的本机,相当于你成了中间人。
2. DNS欺骗(DNS Spoofing)
DNS协议负责把域名翻译成IP。攻击者可以伪造一条DNS响应,把谷歌、百度或你家的银&行网站解析到自己的恶意IP上,这样你输入网址后,就被领到假网站里去了。在CentOS里,通常需要结合Ettercap这个工具来操作。
步骤1:安装Ettercap
执行yum install ettercap就行。
步骤2:配置DNS欺骗规则
编辑/etc/ettercap/etter.dns这个配置文件,加一条规则,比如:
example.com A 192.168.1.100# 将example.com解析为攻击机的IP
步骤3:启动Ettercap进行DNS欺骗
一条命令搞定:
ettercap -T -q -M arp:remote /192.168.1.100/ /192.168.1.1/ -P dns_spoof
这里的-P dns_spoof就是启用DNS欺骗模块,/192.168.1.100/是目标靶机,/192.168.1.1/是网关。当靶机去访问example.com时,就会被导向你设好的IP地址,流量就这么被劫持了。
3. 结合工具的综合攻击(以Ettercap为例)
Ettercap确实是个好东西,功能很全,ARP欺骗、DNS欺骗、流量嗅探、数据篡改,它都能干。在CentOS里的使用流程大概是这样:
步骤1:安装Ettercap
还是yum install ettercap,如果你想要图形界面,可以装ettercap-graphical。
步骤2:选择网卡与启动嗅探
用ettercap -i ens33指定网卡,然后在主界面选择"Sniff"→"Unified sniffing",启动统一嗅探。
步骤3:配置欺骗目标
先选"Hosts"→"Scan for hosts"扫描局域网里的机器,再在"Hosts"→"Hosts list"里把靶机(比如192.168.1.100)设为目标1,网关(192.168.1.1)设为目标2。
步骤4:启动ARP欺骗
选"Mitm"→"ARP poisoning"→"Sniff remote connections",这时靶机和网关的流量就会流经你的本机。
步骤5:启用插件(可选)
Ettercap支持很多插件,比如dns_spoof(DNS欺骗)、urlsnarf(URL嗅探)、driftnet(图片嗅探)。你在"Plugins"→"Manage plugins"里加载它们就可以。比如加载urlsnarf,能嗅探到靶机访问的所有URL:
urlsnarf -i ens33
如果想偷看图片,就用driftnet -i ens33。
三、防御建议(关键)
说了这么多攻击方式,目的还是为了让大家知道怎么防。下面是一些切实可行的措施:
- 静态ARP绑定:在靶机上执行
arp -s 网关IP 网关MAC,把网关的MAC地址写死,这样ARP欺骗就基本失效了。 - DNSSEC启用:简单说就是对DNS响应加个数字签名,防止别人篡改你的解析结果。
- ARP防火墙:用
arptables这个工具,可以像防火墙一样过滤掉那些非法的ARP报文。 - 加密通信:这算是最根本的解决方法。只要用HTTPS、SSH这类加密协议,即使流量被拦截了,攻击者也看不到里面是什么。
- 定期监控:用
tcpdump、Wireshark这些工具盯着网络流量,一旦发现异常的大量ARP响应或奇怪的DNS请求,就要引起警惕了。
总之,别把安全寄托于底层协议的信誉。可以从静态绑定、加密通信、启用防火墙以及定期监控这几方面入手,形成一套组合拳。
