ARP(Address Resolution Protocol),中文解释为地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议

ARP大致工作流程如下:

    • 主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。
    • 收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
    • 地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存(重点来了,我们要利用的就是这个点!)
    • 攻击者可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。
    • 那么 我们如何利用ARP协议来进行断网攻击呢?大致思路如下:

      首先,ARP是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:

      ARP地址转换表(ARP缓存)是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。这就是所谓的APR欺骗攻击。

      ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患,这里我们是使目标主机通信失败,之后的教程会介绍重定向的方法。

      ARP攻击大致流程如下:

      第一步:假设主机A访问某网站,那么要告知某网站我的IP和MAC地址,但这是以广播的方式告知的。

      第二步,由于是广播方式告知,猥琐的B主机也知道了A的IP和Mac地址,于是猥琐的B主机把自己伪装成某网站,给A发送回复,A误以为B就是某网站,因此更新了自己本机的ARP缓存。

      第三步,两者建立连接,A不断将自己的请求发给B,可怜的某网站被挂在一遍了。如果B转发A的请求给某网站,再转发给A,那相当于A的流量都从B经过,这就是步骤4,因此可以会话劫持;如果B给A的是一个假地址,那么可怜的A永远上不了网了。

      如何进行伪造地址的详细资料在参考资料里有详细说明,读者可以自己仔细了解下原理。

      下面讲解如何在Kali下进行ARP断网攻击:

      攻击方需要与被攻击方在同一个内网,攻击者需要知道被攻击者的IP。由于本文的目的是学习研究ARP,所以这里如何获取被攻击者的IP我们不做详细介绍,有兴趣的自己找资料。我们把本机作为被攻击者,虚拟机上运行Kali作为攻击者

      先在本机访问网页,看一下是否可以顺利访问

arpspoof -i eth0 -t 192.168.106 192.168.1.1

命令行方式

接下来,我们尝试ARP欺骗,获取被攻击者的用户名和密码。

首先,我们要使用的工具还是ARPSpoof,因为我们此次攻击方式是欺骗,同时,我们还是用Eteercap去嗅探目标靶子的流量,来获取目标的重要信息。

但是,首先要开始IP转发功能,linux因为系统安全考虑,是不支持IP转发的,其配置文件写在/proc/sys/net/ipv4的ip_forward中。默认为0,接下来修改为1

此时欺骗成功,接下来我们使用ettercap嗅探。

ettercap -Tq -i eth0

最新文章

  1. juqery模板 Templates
  2. Angularjs 的 ngInfiniteScroll 的使用方法
  3. tomcat 优化实记
  4. OpenJudge/Poj 1753 Flip Game
  5. OpenJudge 2680 化验诊断 C++
  6. 包含块、层叠上下文、BFC
  7. Monkey Test
  8. Java中Overload和Override的区别
  9. 将外部准备好的sqlite导入到项目当中
  10. CodeForces Round #191 (327C) - Magic Five 等比数列求和的快速幂取模
  11. Spring定时任务quartz表达式
  12. 原生js+css实现重力模拟弹跳系统的登录页面
  13. git环境搭建以及第一个PHP程序
  14. C 语言 IO 缓存 相关
  15. http摘要认证
  16. NE76003单片机调试DS18B20 步骤
  17. LSH(Locality Sensitive Hashing)原理与实现
  18. JS定时器时间日期钟表
  19. bundle adjustment原理(1)
  20. 《Linux内核分析》第一周学习报告

热门文章

  1. python mysql 查询返回字典结构
  2. HDU1247(经典字典树)
  3. 【转】 Pro Android学习笔记(五一):ActionBar(4):标准和Tab模式
  4. C#使用Command将dataGrideView表格内数据与数据库交互
  5. mybatis 学习四 源码分析 mybatis如何执行的一条sql
  6. JQuery 1.6之后,获取属性推荐用prop
  7. 第三篇elasticsearch分布式安装
  8. JS中双击和单击事件冲突解决
  9. C++内存管理之unique_ptr
  10. 2018杭电多校第五场1002(暴力DFS【数位】,剪枝)