Still Shines.

来自身边的安全威胁—ARP欺骗攻击

Word count: 3.7k / Reading time: 14 min
2018/08/25 Share

小黑是一个电脑技术爱好者,他每天爱做的事情就是宅在家中玩电脑。小黑的隔壁住着一个女生,刚搬来不久,小黑对她很是好奇,但是一直不敢和她搭讪,就想用自己擅长电脑技术,尽可能多的去收集信息了解她(情节需要,请勿模仿)。


小黑首先想到的就是连入她家的无线网,经过之前的了解,他已经知道了女生家中的wifi名称,然后尝试了弱口令登录,随便试了几下没想到真的通过验证了。(关于无线密码破解这部分内容将在下一篇文章中讲到,这里只讲同一个局域网环境中的攻击,所以本文省略这个步骤。)小黑很高兴,省了不少步骤,心想这个女生的安全意识真的有待提高啊。

了解网络环境

接下来小黑要先了解下自己的网络环境,首先他查看了自己的ip地址,自己现在的ip地址是192.168.1.132(这里用的是ubuntu的Linux ,很多工具要自己装,在Kali上工具都是齐全的哦。)

之后就是要看一下这个局域网中有哪些设备,那就用nmap扫一下吧。

nmap -sP 192.168.1.1-254 也可以输入 nmap -sP 192.168.1.0/24

看起来设备很多,192.168.1.1是网关,也就是女生家中的无线路由器。Dell应该就是电脑设备,其他几个设备好像都是手机。上面的信息中可以确定女生此时在家,但是这么多的设备,难道她们家来客人了?不过小黑清楚地记得,女生使用的是华为手机(也就是这次的实验的目标)。那目标的ip地址就知道了是192.168.1.106。

这里先看下ARP缓存表:

刚开始ARP缓存表中没有192.168.1.106,这里ping一下之后再看ARP缓存表上就有了。
接下来,小黑就可以进行arp欺骗攻击了。


攻击原理

  在小黑的记忆中,这种攻击手段也叫做中间人攻击MITM(Man-in-the-Middle Attack),算是一种古老的方法了,但仍有很多变种的中间人攻击是有效的,能够很容易地欺骗外行并且入侵他们。MITM攻击就是攻击者扮演中间人并且实施攻击。MITM攻击它可以劫持一段会话,称为会话劫持,可以窃取密码和其他机密,即使使用了SSL加密。

  这里使用的arp欺骗也被称为arp缓存中毒,是在内网的MITM攻击。Arp投毒的实现过程非常简单,我们只需要欺骗目标机器使其确信我们的攻击主机就是它的网关,再伪装成目标机器与网关欺骗网关,这样所有的流量都会通过我们的攻击主机,我们就能截获目标机器与网关的通信数据了。网络中所有的机器都包含ARP缓存,它存储了本地网络中最近时间的MAC地址与ip地址的对应关系,我们要达成攻击目标的话就需要对这个缓存进行投毒。因为地址解析协议(arp)和arp投毒还涵盖了许多其他方面的知识,所以可以先了解下arp的原理及这种攻击如何在底层的协议中发挥作用。

进行中间人攻击

接下来小黑就开始攻击了,先从收集女生手机上浏览的图片信息开始吧:
第一步:启用IP转发:

echo 1 > / proc/sys/net/ipv4/ip_forward

第二步:使用arpspoof执行arp欺骗,毒化被欺骗者(192.168.1.106)

arpspoof -i eth0 -t 192.168.1.106 192.168.1.1

eth0是网卡的名称,我这里的是ens33,ifconfig可以查看。
将被欺骗者的流量重定向给攻击者,再由攻击者转发给网关。

第三步:使用arospoof执行arp欺骗,毒化网关(192.168.1.1)

arpspoof -i eth0 -t 192.168.1.1 192.168.1.132

使网关的数据重定向到攻击者的机器。(流量由网关到攻击者再到受攻击者)

关于第二步和第三步,可能会和具体的网络情况不同而出现偏差,请进行灵活的尝试。

第四步:执行drifnet,就可以捕获手机上浏览器访问的图片。

driftnet -i ens33


不一会儿,就接收到手机上的图片啦。看来她此时在浏览有关汽车的东西。


Ps:还可以执行dsniff命令,捕获密码。

dsniff -i ens33


此时处于监听状态,被欺骗手机上用浏览器访问ftp站点,输入用户名和密码后,攻击者主机上的dnsiff就能成功捕获。

虽然能看到图片(而且不是全部的图片都能接受到),但小黑想要的不仅仅是这些,他觉得还需要获得更多的信息。他又使用了另一个工具:Ettercap


Ettercap

  Ettercap是一个多用途的开源工具,可以用来执行嗅探、主机分析等。Ettercap可以使用GUI(图形)和CLI(命令行)模式。下面将使用Ettercap来讲几个关于中间人攻击的实例:

·中间人攻击,捕获图片。
·DNS劫持。
·替换HTML代码。
·使用sslstrip突破ssl加密,捕获密码。
·对目标之间进行ARP欺骗,捕获明文密码。
·进行cookie劫持,登录被欺骗者的腾讯微博。

中间人攻击,捕获图片

(1)执行ettercap命令,进行arp欺骗。
在攻击者的主机上执行如下命令

ettercap -T -M arp /(目标ip)// /(网关ip)// -q -i eth0

如果目标ip和网关ip不填写,则是全部监听。
-T: 使用文本模式启动;
-M: 使用中间人攻击,后面指定arp的攻击方式及两个目标;
-q: 安静模式(不回显);
-i: 指定监听的网络接口。

(2)执行driftnet命令,捕获图片。

driftnet -i eth0

在被欺骗者的手机上用浏览器访问新闻页面。此时,攻击者的主机上就会捕获到新闻页面上包含的图片。

DNS劫持

ettercap提供了很多有用的插件,在ettercao图形界面下(ettercap -G),依次选择“Plugins”->“Manage the plugins”,然后双击启动插件,插件启动后,插件名前会显示”*“号。

(1)编辑dns_spoof插件的配置文件
在kali linux下,ettercap的配置文件和脚本文件存放在/usr/share/ettercap/或/etc/ettercap/目录下。
编辑dns_spoof 插件的配置文件/etc/ettercap/etter.dns,在etter.dns文件中添加一条A记录,”*“号就是把任何域名转向192.168.1.136(本机ip),也可以填写特定的域名,比如www.baidu.com。这会造成被欺骗者输入任何域名都会转向攻击者定义的ip,这里是转到攻击机的ip。

(2)我们在我的的攻击机上(192.168.1.136)构建一个简单的页面
在/var/www/html/ 目录中编辑index.html

再启动web服务:

/etc/init.d/apache2 start

浏览器访问192.168.1.136,显示如下:一个简单的hello

(3)执行ettercap命令,进行DNS劫持。这次的目标是192.168.1.107,就是我的宿主机(windows),192.168.1.1还是网关。

ettercap -Tq -i eth0 -P dns_spoof -M arp:remote /192.168.1.107// //192.168.1.1/


(4)被欺骗者(192.168.1.107)访问百度首页。

域名已经被劫持了,有的浏览器也可能出现服务器拒绝连接。

替换HTML代码

ettercap 还有很强大的过滤脚本功能,通过使用过滤脚本,可以对捕获的数据包做修改(替换网页内容、替换下载内容、在网页中插入代码等),然后发给被欺骗主机。
(1)编辑文件replace.filter
新建一个过滤脚本文本replace.filter,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13

if (ip.proto == TCP && tcp.dst == 80){
if (search(DATA.data,"Accept-Encoding")){
replace("Accept-Encoding","Accept-Rubbish!");
#note:replacement string is same length as original string
msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80){
replace("<head>","<head><script type="text/javascript">alert('HTTP数据包内容被替换');</script>");
replace("<HEAD>","<HEAD><script type="text/javascript">alert('HTTP数据包内容被替换');</script>");
msg("成功替换HTTP数据包内容!\n");
}

注意:根据语法规则 if 和 “(” 之间一定要有空格。
该脚本可以替换HTML代码中的,在网页上弹出提示框。
(2)编译文件replace.filter
要使用这个脚本,还需要使用ettercap自带的编译工具把这个脚本编译成ettercap可以识别的二进制文件,使用如下命令编译,replace.ef就是已经编译完成的过滤脚本。

etterfilter eplace.filter -o replace.ef


(3)发动攻击
执行如下命令:

ettercap -T -q -i eth0 -F replace.ef -M arp:remote //192.168.1.107/ //192.168.1.1/


该脚本执行成功后,被欺骗者网页会弹出提示框。

使用sslstrip突破ssl加密

原理如下:
(1)攻击者先进行ARP欺骗,使得攻击者能捕获被欺骗者的网络流量。
(2)攻击者利用被欺骗者对浏览器地址栏中https与http忽略,将所有的https连接都替换为http连接。
(3)同时,攻击者与服务器建立正常的https连接。
(4)由于http通信是明文传输,攻击者能够轻易捕获密码。
第一步:开启内核转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

开启内核转发功能保证攻击过程中被攻击者不断网。
第二步:执行iptables命令

把80端口的流量转发到sslstrip监听的10000端口上。

iptables -t nat -A PREROUTING -p tcp –destination-port 80 -j REDIRECT –to-port 10000

第三步:启动sslstrip

sslstrip -l 10000

第四步:新开一个终端,执行ettercap命令,进行arp欺骗

ettercap -T -q -M arp:remote //192.168.1.107/ //192.168.1.1/

第五步:捕获密码
被欺骗者登录163邮箱时,https被降为http,此时ettercap捕获就能捕获到密码。
但是现在的浏览器都能察觉异常,足够引起用户的怀疑了。

对目标之间进行ARP欺骗

第一步:启动ettercap
打开终端,输入 ettercap –G
依次选择“sniff”->“unified sniffing”根据自己的要求选择抓包的网络接口。

第二步:扫描主机
选择“Hosts”->“Scan for hosts”
扫描完成后选择“Scan for hosts”,然后选择“Hosts list”查看扫描到的主机列表

第三步:选择攻击目标
选择192.168.0.107,单机“Add to Target 1”,然后选择192.168.1.1,单机“Add to Target 2”

第四步:明确攻击方式
依次选择“Mitm”->“ARP poisoning”->“Sniff remote connections”->“确定”。
告诉被欺骗者A(192.168.1.107)攻击者(192.168.1.136)是网关(192.168.1.1),使得被欺骗者A把所有数据流量全部发送给攻击者,然后抓包捕获密码。ettercap可以自动完成这些步骤,只要选好目标主机即可。
在被欺骗者(192.168.1.107)的终端模拟器中执行arp命令,这时可以看arp地址表,网关(192.168.1.1)MAC是攻击机的,arp毒化成功。

第五步:开始监听
依次选择“Start”->“Start sniffing”开始监听。
第六步:被欺骗者用浏览器访问http://rpmfusion.org/,输入用户名密码
第七步:攻击者主机,ettercap成功捕获了用户名和密码

进行cookie劫持登录被欺骗者的腾讯微博。

使用ettercap抓取被欺骗者的cookie从而实现cookie劫持,并登陆被欺骗者的腾讯微博。
第一步:构建工具
使用Firefox浏览器、Scripish或GreaseMonkey、Original Cookie Injector,构建一个可以在网页中嵌入Cookie的工具。
(1)先安装GreaseMonkey或者Scripish,然后重启浏览器。
Scripish下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/scriptish/
GreaseMonkey下载地址:https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/
(2)再安装Original Cookie Injector,然后重启浏览器。
Original Cookie Injector地址:http://userscripts-mirror.org/scripts/show/119798,单击右上角的“Install”安装。
第二步:扫描主机
在ettercap图形界面,依次选择“Hosts”->“Scan for hosts”,扫描完成后再选择“Hosts list”,查看扫描到的主机列表。
第三步:选择攻击目标
选择192.168.0.107,单机“Add to Target 1”,然后选择192.168.1.1,单机“Add to Target 2”
第四步:明确攻击方式
依次选择“Mitm”->“ARP poisoning”->“Sniff remote connections”->“确定”。
告诉被欺骗者A(192.168.1.107)攻击者(192.168.1.136)是网关(192.168.1.1),使得被欺骗者A把所有数据流量全部发送给攻击者,然后抓包捕获密码。ettercap可以自动完成这些步骤,只要选好目标主机即可。
第五步:开始监听
依次选择“Start”->“Start sniffing”开始监听。
第六步:在被欺骗着的主机上用浏览器访问腾讯微博http://t.qq.com,输入用户名和密码
第七步:查看被欺骗者的网链接
“View”->”connections”,查看被欺骗者的网络链接。

第八步:查看捕获数据包的详细信息,获得cookie
双击某个链接,查看捕获数据包的详细信息。把cookie:后面的字段复制下来。

第九步:登陆腾讯微博
在攻击者主机,访问微博登录页面,按”ALT+C”,弹出对话框,把cookie值粘贴进去,单击ok然后f5刷新页面,就能登录了。

  以上几个实验在现在的浏览器上不一定能取得良好的效果了,但是新的变种攻击还是层出不穷,作为最接近身边的安全威胁(攻击者也可能远程操控局域网中的一台电脑),我们再一定程度上还是需要警惕的。


arp欺骗攻击的防范

那么我们在现实生活中怎么防止受到这类攻击呢?
(1)在客户端使用arp命令绑定网关的IP/MAC(如arp -s 192.68.1.1 00-e0-eb-81-81-85)
(2)在交换机上做端口域MAC地址的静态绑定。
(3)在路由器上做IP/MAC地址的静态绑定。
(4)使用arp服务器定时广播网段内所有主机的正确IP/MAC映射表。
(5)及时升级客户端的操作系统和应用程序补丁。
(6)升级杀毒软件及病毒库。


CATALOG
  1. 1. 了解网络环境
  2. 2. 攻击原理
  3. 3. 进行中间人攻击
  4. 4. Ettercap
    1. 4.1. 中间人攻击,捕获图片
    2. 4.2. DNS劫持
    3. 4.3. 替换HTML代码
    4. 4.4. 使用sslstrip突破ssl加密
    5. 4.5. 对目标之间进行ARP欺骗
    6. 4.6. 进行cookie劫持登录被欺骗者的腾讯微博。
  5. 5. arp欺骗攻击的防范