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. ACCESS常用数字类型的说明和取值范围

    下面是ACCESS常用数字类型的说明和取值范围列表明供参考 数字类型                 范围 Byte(字节)            介于 0 到 255 之间的整型数. Integer ...

  2. java运行原理剖析

    java是一种编译型语言,我们开发好的代码是不能够直接运行的,需要我们程序员进行编译之后,将字节点文件载入jvm虚拟之后,才可以运行操作 其原理是 java源代码-------编译-------> ...

  3. hue中使用oozie的workflow执行mr

    workflow创建任务 进入hue–Workflows–编辑器–workflow–创建 拖一个mapreduce作业(在页面靠近顶端有一排选项图标)到页面中间虚线框中 Jar路径必须是hdfs中ja ...

  4. CNN卷积层:ReLU函数

    卷积层的非线性部分 一.ReLU定义 ReLU:全称 Rectified Linear Units)激活函数 定义 def relu(x): return x if x >0 else 0 #S ...

  5. C# 将本地文件远程拷贝到其他电脑(转)

    string newpath = System.IO.Path.GetFullPath(@"////10.144.26.252//d$//quyuan//图片" +"// ...

  6. Mysql 中获取刚插入的自增长id的值

    insert into user (username,password) VALUES ('); //获取刚插入的自增长id的值 select last_insert_id(); 在MySQL中,使用 ...

  7. linux命令之vi文本编辑器

    vi filename :打开或新建文件,并将光标置于第一行首 按i,开始输入(insert) d删除整行 u   撤销上一步的操作Ctrl+r 恢复上一步被撤销的操作 ESC退出输入 按ESC键 跳 ...

  8. Mysql存储过程(六)——存储过程中使用临时表

    Mysql 不支持数组.但有时候需要组合几张表的数据,在存储过程中,经过比较复杂的运算获取结果直接输出给调用方,比如符合条件的几张表的某些字段的组合计算. Mysql 临时表可以解决这个问题. 临时表 ...

  9. kafka 消息系统

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  10. 为DOM节点添加或者删除class

    项目中如果应用了常用的javascript类库,多数情况下,这些已经封装好的类库,都会封装一个类似于addClass和removeClass的方法,以便于我们对DOM节点的class进行操作. 以jQ ...