中间人攻击的概念最早应该是在密码学中定义的,所以它并不是什么新鲜的东西,中间人攻击的原理可以用下图来表示:
密码学中举例通常就用Alice、Bob和Eve来说,我们也遵照这一习惯。本来Alice是想跟Bob通信,但没想到通信的链路被攻击者Eve有意的切断,同时Eve假装Bob跟Alice建立了通信链路,又假装Alice跟Bob建立了通信链路,而这一切Alice和Bob都全然不知,也就是对于Alice和Bob来说Eve是透明的。这样Eve就能合法的把Alice发给Bob数据存下来再重新传给Bob,反过来对Bob发给Alice的数据也是一样。你当然知道这发生了什么事。
Wi-Fi容易遭受中间人攻击的原因
从中间人攻击概念中你会发现为达到中间人攻击的目的,必须具备两个技术条件,首先就要让本来应该互相通信的双方的数据流量都从攻击者处转发或中继,我们称为流量牵引;其次,流量牵引过来了攻击者还要让通信双方对他没有任何怀疑,这里我们称为身份伪装。
在有线网络环境中,流量牵引不太容易。局域网中需要使用ARP欺骗技术,而广域网中需要使用DNS欺骗技术,容易被防护,也容易被发现。
在Wi-Fi的环境中,你会发现达到上面所谓的中间人攻击技术条件非常容易,攻击者只需要使用跟合法接入点同样的SSID(如果加密的话,还要认证/加密算法相同,并且预共享秘钥相同),然后让伪造接入点的功率大于合法接入点(相对被攻击者而言)就可以了。攻击者再以客户端的身份连接到合法接入点,在中间中转被攻击者跟合法接入点之间的流量,数据都能够被明文监听下来,或者进一步实施更高级的攻击手段。
低成本Wi-Fi中间人攻击实践
1、 OPEN的Wi-Fi
在Linux系统(双无线网卡)下使用hostapd和dhcpd软件搭建伪造接入点。攻击者首先使用无线网卡1连接到合法接入点,然后配置hostapd的SSID跟合法接入点相同,将无线网卡2开启成接入点模式。当攻击者离被攻击者较近时,被攻击者感觉到攻击者提供的接入点信号较强,就自动选择接入过来。攻击者在被攻击者和合法接入点之间进行数据转发,同时使用wireshark软件对数据进行明文转储。通过wireshark的字节查找功能,即可过滤出明文传输的用户名/密码,以及cookie。
2、 WPA2-PSK(CCMP+AES)方式的加密Wi-Fi
仍然可以在Linux系统(双无线网卡)下使用hostapd和dhcpd软件搭建伪造接入点,但Windows提供的方式更方便,即在Windows系统(单无线网卡即可)下使用netsh wlan命令搭建伪造接入点。攻击者首先连接到合法接入点,然后使用netsh wlan命令配置SSID、预共享秘钥跟合法接入点相同,开启一个虚拟无线接入点。当攻击者离被攻击者较近时,被攻击者感觉到攻击者提供的接入点信号较强,就自动选择接入过来。攻击者在被攻击者和合法接入点之间进行数据转发,仍然可以使用wireshark软件对数据进行明文转储,但Windows下还可以使用更方便的cain & abel软件,直接就能获得明文传输的用户名/密码,以及cookie列表。
3、 HTTPS的监听
在Linux系统(双无线网卡)下使用hostapd和dhcpd软件搭建伪造接入点。攻击者首先使用无线网卡1连接到合法接入点,然后配置hostapd的SSID跟合法接入点相同,如果是加密的Wi-Fi,还需要将认证/加密方式以及预共享秘钥配置成跟合法接入点相同,将无线网卡2开启成接入点模式。当攻击者离被攻击者较近时,被攻击者感觉到攻击者提供的接入点信号较强,就自动选择接入过来。攻击者在被攻击者和合法接入点之间进行数据转发,同时使用sslsniff软件对HTTPS流量进行中间人攻击,HTTPS数据被明文转储下来,可在日志中搜索到用户名/密码,以及解析出HTTP内容。
需要说明的是,HTTPS能够被轻易的中间人攻击完全是由于用户安全意识不足或者用户终端软件的安全考虑不足。因为攻击者是无法伪造出合法数字证书的,伪造的证书使用的是另外一套公钥和私钥,而且一般是自签名。安全的浏览器会提示用户对端数字证书不可信,但用户通常选择点击继续,否则就无法访问了,这个时候,对用户来说业务需求大于安全考虑。一些智能移动终端的浏览器软件,这方面的安全考虑不足,无任何安全提示的将通信继续进行下去,用户可能遭受的威胁更加严重。
安全防护的方案
由于Wi-Fi本身不具备更多地安全机制,因此在Wi-Fi上层考虑使用VPN加密的方案是Wi-Fi服务提供者应该考虑的。这样即使用户接入到伪造接入点上来,数据也能得到保护,不被窃听。
考虑到方案的成熟度和广泛适用性,L2TP Over IPSec VPN是一个不错的解决方案。因为Windows、Mac、iOS、安卓等终端产品都默认支持L2TP Over IPSec VPN客户端功能,无须额外安装客户端软件。同时L2TP Over IPSec VPN服务端功能也得到了防火墙厂商的广泛支持,Wi-Fi服务提供者能够有更多的选择。