【ARP攻击】为什么你不应该随便连接陌生WIFI?(上)

发布于 2024-06-26  600 次阅读


使用的软件:

  1. ArpSpoof
  2. WireShark
  3. SSLStrip

前言

本篇文章以科普性质为主,并不会详细阐述上述工具的具体使用方法,如有兴趣网上已有诸多资料。

ARP攻击常见于内网渗透、近源社工渗透过程中,通过向目标主机发送虚假的ARP应答报文,将攻击机伪造成网关,从而进行流量、密码窃听、断网攻击和数据包篡改等操作。当然,这种攻击也可能隐藏在日常生活中,比如黑客通过弱口令WIFI接入内网,从而对内网其他设备进行ARP攻击窃取信息,或者通过WIFI Pineapple等工具,建立一个钓鱼WIFI诱导目标主动连接所谓的“免费WIFI”。WIFI Pineapple我们会放在“为什么你不应该随便连接陌生WIFI?(下)”中进行讲解。本篇文章主要带你了解APR攻击所能造成的实质危害。

正好手边有一台树莓派4B,之前都是用Kali来测试的,顺带浅试一下在Raspberry Pi OS中安装工具达到攻击的效果。

文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!


1.ARP协议

地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址IP地址)来找寻数据链路层地址MAC地址)的网络传输协议

在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如下表所示。

主机名称IP地址MAC地址
A192.168.0.1000-AA-00-62-D2-02
B192.168.0.1100-BB-00-62-C2-02
C192.168.0.1200-CC-00-62-C2-02
D192.168.0.1300-DD-00-62-C2-02
E192.168.0.1400-EE-00-62-C2-02
.........

当主机A需要与主机B进行数据交互时,主机A会现在自己本地的ARP缓存表中查找是否存在B的MAC地址和IP地址,如果不存在则会向网络内发送ARP请求帧,当主机B确认自己为主机A请求的对象时,返回自己的IP地址和MAC地址,主机A获取B的地址从而与之进行数据交互,并将B的IP和MAC存入ARP缓存中。

MAC地址决定了以太帧的下一跳哪个设备接收,而IP地址决定了数据包的起点和终点。

我们可以看到在WireShark中,如下图所示,192.168.2.24即本次演示的目标靶机192.168.2.139则是本次演示的树莓派攻击机。靶机向网络内请求192.168.2.139的地址,192.168.2.139即攻击机的地址响应并返回了自己的MAC地址。

此处对整个过程做了简化处理,如需详细了解可跳转至wiki页面https://en.wikipedia.org/wiki/Address_Resolution_Protocol

2.ARP欺骗

ARP欺骗(英语:ARP spoofing),又称ARP毒化ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术。

我们在上文中提到,当主机A像网络内广播询问主机B的MAC地址时,主机B发现询问的正是自己的IP时才会返回自己的MAC应答。需要注意的是,域网内的主机可以主动向目标发送ARP应答报文,并且其他主机也会无条件相信这个应答报文并将它传输的MAC写入自己的ARP缓存中,并在下次访问目标机时使用该信息。域网内主机向其他主机发送伪造的ARP应答报文欺骗目标机将错误的MAC写入缓存表,就构成了ARP欺骗。

如果我们将靶机的ARP缓存表中的路由网关IP对应的MAC地址,更改为攻击机的MAC地址,那么在下一帧的以太帧就会指向我们的攻击机,从而让靶机流量通过攻击机,以达到窃听的目的。

我们可以使用arpspoof工具来指定攻击目标和需要伪造的目标,此处我伪造的对象是192.168.2.1网关地址

在wireshark中可以观察到,当我开启arpspoof时,攻击机会向目标机发送ARP应答报文,将我们刚刚设定的伪造的目标的MAC地址伪造成我们攻击机的MAC地址。

此时我们可以在靶机上使用arp -a指令,观察ARP缓存表的变化(上为攻击前,下为攻击后

可以看到在靶机眼里,192.168.2.1的MAC地址已经变成了攻击机的MAC地址

此时在攻击机开启中开启转发,让流量通往网关,如果不开启转发,流量无法通往网关,造成断网攻击(也可以是将MAC伪装成空造成断网攻击)。

此时可以简单的理解为靶机将攻击机当做网关,流量从攻击机通过,此时我们通过靶机打开某些网站进行登录操作室,可以在攻击机上打开wireshark进行监听

例如此处我打开某系统的登录页面,进行登录操作

点击登录后,观察WireShark的抓包结果

我们可以在此处HTTP的一个POST请求出看到我们刚刚登录提交的“username”用户名和“password”密码

当然,此处仅限于HTTP、FTP、Telnet明文传输协议,当使用HTTPS、SFTP加密传输协议时,传输内容将会被进行加密处理

再例如此处是使用FTP登录我的树莓派主机,同样也会被监听到明文传输的用户名和密码、文件等

当在使用以上明文传输协议传输明文敏感信息时,需要警惕当前网络环境是否存在潜在的隐患

3.DNS欺骗

由于和前面一段是分开来写的,换了一下网络环境

靶机IP:192.168.71.70

攻击机IP:192.168.71.71

刚刚我们通过一个简单的ARP欺骗将靶机的流量通过攻击机转发,从而进行流量监听篡改。当然攻击机也可以篡改DNS或者直接通过ARP欺骗伪造DNS主机,将DNS主机地址转向本机,这就是DNS欺骗

什么是DNS?

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

简而言之,DNS就是一个能将域名解析成IP地址的服务器,通过想DNS发送域名信息,DNS会返回目标域名的IP地址,然后建立连接。

我们可以通过DNS欺骗,此时目标访问www.baidu.com,会先向我们伪造的DNS主机发送解析请求,我们就可以将请求解析的www.baidu.com,解析为我们想要的ip地址

比如此处我可以将www.baidu.com解析为攻击机的IP地址192.168.71.71

那么通过这个操作,可以在攻击机上启一个Web服务,让靶机在访问www.baidu.com的时候访问到的是我们攻击者的网站

如果攻击者网站模仿靶机想要访问的目标网站,就可以在靶机未察觉的情况下窃取密码、Cookie等信息。

例如此处伪造一个www.baidu.com,当靶机访问www.baidu.com时会访问到我们搭建的这个“伪百度”

可以在伪造的网站中植入键盘监听或者在提交按钮处绑定恶意代码回传提交的账密等信息,从而窃取目标信息。