1. ARP协议(address resolution protocol):地址解析协议

    一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析协议将IP地址解析成MAC地址。ARP协议的基本功能就是通过目标设备的IP地址,来查询目标设备的mac地址。

    在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系。ARP缓存表的生命周期是有时限的(一般不超过20分钟)。

  2. MITM攻击实例:

    网络拓扑:

    网络环境:

  • 无线路由器一台

    型号:Fast FW300R

IP:192.168.1.1

MAC地址:00:5A:39:1A:BB:BE

  • 被攻击主机PC 1

    系统版本:Windows 10 Enterprise

    IP:192.168.1.106

    MAC地址:00:5A:39:1A:BB:BE

  • 中间人(攻击者)主机PC 0

    系统版本:Kali Linux 2.0

IP:192.168.1.113

MAC地址:00:0C:29:03:85:DC

由于实验条件有限,故中间人主机PC 0在虚拟机内运行。但实际效果与真实测试相同。

攻击测试:

使用Kali Linux中的嗅探工具ettercap-NG对目标主机进行ARP欺骗,并截获明文密码。

首先打开终端,输入ettercap -G 启动ettercap (ettercap要求使用root权限,使用sudo或者切换到root用户运行)的图形界面模式,如图:

打开ettercap-NG 的图形界面之后点击"sniff",选择"unified sniffing"然后根据自己的要求选择要抓包的网卡。

使用NMAP工具查看局域网内所有主机:

根据返回数据可知,我的网关无线路由器的IP地址为192.168.1.1,MAC地址为:00:5A:39:1A:BB:BE,根据MAC地址,分析出 深圳Fast科技公司出产。

此外有几台苹果的设备,是室友的几部苹果手机,此外还有一部Vivo手机,BBK步步高电子产品出产,还有一台小米科技出产的小米手机。此外,还有一台名为 Hon Hai Precision 的设备,经查原来其名为鸿海精密集团,富士康是旗下的公司,应该就是我的网卡生产商了。 还有一个提示信息为"Host is up"的主机即为本次测试的中间人(攻击者)的主机。

筛选后,得到信息如下:

主机名

IP地址

MAC地址

Fast路由器(网关)

192.168.1.1

00:5A:39:1A:BB:BE

被攻击主机PC 1

192.168.1.106

C0:CB:38:6C:5A:B3

中间人(黑客)主机PC 2

192.168.1.113

00:0C:29:03:85:DC

返回ettercap,然后单击Hosts选项,选择Scan for host,待扫描完成之后再选择Scan for host,然后选择Host list,此时可以看到ettercap-NG已经扫描的主机列表,如图所示:

然后就可以选择要攻击的目标了, 选择192.168.1.106的IP地址,点击Add to Target 1(添加到目标1),然后选择网关的IP地址192.168.1.1,点击Add to Target 2(添加到目标2),可以看到ettercap提示成功加入目标,如图所示:

然后明确攻击方式,这里采用ARP欺骗的方式,告诉主机192.168.1.106我(192.168.1.113)才是网关(192.168.1.1),使得 192.168.1.106的主机把所有数据流量全部发给我,然后抓包截获密码。

明确攻击方式之后,我们选择"mitm"—"arp poisoning"— "Sniff remote connections" — "确定"

这时可以看看目标主机的arp地址表,如图所示,ARP缓存毒化成功。

攻击之前:

点击确定攻击之后:

此时发现ARP缓存表已经毒化成功!

然后在攻击主机中选择"Start" —  "Start sniffing" 开始监听。

此时使用Wireshark抓包工具可以发现,被攻击主机的所有流量都是通过攻击者的主机发送出去的,即被攻击主机误认为192.168.1.113是它的网关。

此时便可以实现很多功能。例如抓包获取密码,Cookies欺骗,DNS欺骗,恶意程序替换等等,如通过driftnet过滤嗅探图片:

  • ARP攻击防范:

1、双向绑定:

一般来说,在小规模网络中,比较推荐使用双向绑定,也就是在路由器和终端上都进行IP-MAC绑定的措施,它可以对ARP欺骗的两边,伪造网关 和截获数据,都具有约束的作用。这是从ARP欺骗原理上进行的防范措施,也是最普遍应用的办法。它对付最普通的ARP欺骗是有效的。

2、ARP防火墙:

在一些杀毒软件中加入了ARP防火墙的功能,它是通过在终端电脑上对网关进行绑定,保证不受网络中假网关的影响,从而保护自身数据不被窃取的措施。ARP防火墙使用范围很广,但也会有问题,如,它不能保证绑定的网关一定是正确的。如果一个网络中已经发生了ARP欺骗,有人在伪造网关,那么,ARP防火墙上来就会绑定这个错误的网关,这是具有极大风险的。

3、VLAN和交换机端口绑定:

通过划分VLAN和交换机端口绑定来防范ARP,也是常用的防范方法。做法是细致地划分VLAN,减小广播域的范围,使ARP在小范围内起作 用,而不至于发生大面积影响。同时,一些网管交换机具有MAC地址学习的功能,学习完成后,再关闭这个功能,就可以把对应的MAC和端口进行绑定,避免了病毒利用ARP攻击篡改自身地址。也就是说,把ARP攻击中被截获数据的风险解除了。

ARP欺骗与MITM(中间人攻击)实例的更多相关文章

  1. 利用ARP欺骗进行MITM(中间人攻击)

    ARP欺骗主要骑着信息收集得作用,比如可以利用欺骗获取对方流量,从流量分析你认为重要得信息 0X01  了解ARP Arp协议 ARP(Address Resolution Protocol,地址解析 ...

  2. 关于ARP欺骗与MITM(中间人攻击)的一些笔记( 二 )

    一直没有折腾啥东西,直到最近kali Linux发布,才回想起应该更新博客了….. 再次说明,这些技术并不是本人原创的,而是以前记录在Evernote的旧内容(排版不是很好,请谅解),本文是继关于AR ...

  3. 记录利用ettercap进行简单的arp欺骗和mitm攻击过程

    方法均来自网络,本人只是记录一下自己操作的过程,大神请无视之- 攻击主机平台:kali-linux        被攻击主机:安卓手机192.168.1.107    (在同一局域网内) 1.利用et ...

  4. 渗透实战(周三):Ettercap·ARP毒化&MITM中间人攻击

    今天,我们来讲解如何对小型Wi-Fi局域网发动网络攻击

  5. ARP欺骗与中间人攻击

    前言: 上一篇WPA/WAP2wifi 密码破解笔记说到如何探测附近开放的AP并且破解进入,那么进入别人据局域网我们能干些什么呢?换句话说如果别人进入了我们内部网络,会有什么影响?本文简要介绍了ARP ...

  6. 中间人攻击——ARP欺骗的原理、实战及防御

    ​ 1.1 什么是网关 首先来简单解释一下什么是网关,网关工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同网络之间的连接,简单地说,网关就好比是一个房间通向另一个房间的一扇门. 1.2 A ...

  7. 中间人攻击(MITM)姿势总结

    相关学习资料 http://www.cnblogs.com/LittleHann/p/3733469.html http://www.cnblogs.com/LittleHann/p/3738141. ...

  8. 中间人攻击之ettercap嗅探

    中间人攻击: 中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在网络连接中的 ...

  9. arpspoof dnsspoof中间人攻击

    最近搞了一个监听神器,尽管使用了网卡混杂模式,不过监听到的几乎全是本地流量, 为了获取更多有用的数据,搞一下中间人攻击,最基本的就是arpspoof + IP转发,这样就可以获得局域网内任何人的上网流 ...

随机推荐

  1. ​游戏设计思考:对COK的理解和思考

    转自:http://www.gameres.com/804983.html 一.前言 发此文的起因是最近加入了一个游戏研究群,受到大家对游戏研究热情的感染,也想将自己对游戏的理解和感悟发出来和大家一起 ...

  2. 使用docker搭建redis主从模式

    前期准备: 本地Linux版本:CentOS Linux release 7.5.1804 (Core)Docker版本:Docker version 1.13.1, build dded712/1. ...

  3. scala使用hbase新api

    import org.apache.hadoop.hbase.{HTableDescriptor,HColumnDescriptor,HBaseConfiguration,TableName} imp ...

  4. 用tmux工具给linux命令行分栏

    介绍 有时候我们需要在命令行里同时开多个程序,但是每个程序都会占用命令行,这时候可以用tmux,给命令行界面分栏. 基本概念 tmux是分多层的 会话>窗口(我下文称作:页)>面板(或者叫 ...

  5. C#语言经典例题

    两个例题分别用了两种不同的写入方式 一个是有Console.Write(); 一个没有,两种都可以 标准体重 男士体重 = 身高 - 100 +-3 kg cm 女士体重 = 身高 - 110 +-3 ...

  6. DateTimepicker中的星期问题

    开发机:win10 64+VS2013 客户机:win7 32bit 在项目中使用DateTimepicker,需要将时间获取到,然后转换为string,然后再转换为DateTime类型.开发机器上测 ...

  7. php删除字符串最后一位

    一.前言 从数据库中select()读取一对多的信息时,经常需要将取出的数组用某个特定的字符分割,然后拼接成字符串. 常见的语法格式: foreach ($arr as $key => $val ...

  8. HTMLTestRunner不生成报告

    使用HTMLTestRunner想生成测试报告,尝试了很多次了,就是无法生成,在百度搜索发现是快捷键问题 工具:Pycharm Ctrl+Shift+F10运行不会生成脚本 Alt+Shift+F10 ...

  9. QT_QSlider的总结

    当鼠标选中QSlider 上时,通过点击的数值为setpageStep():通过左右方向键按钮移动的数值为setsingleStep(). 鼠标滚轮上面两者都不行,不知道是什么原因! 应用: http ...

  10. 20165205 2017-2018-2 《Java程序设计》 第二周学习总结

    20165205 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 学习第二章知识(标识符,关键字,数据类型,输入.输出数据和数组) 学习第三章知识(运算符,基 ...