(作者原创,欲转载请说明出处)
1.arp介绍
    arp:地址解析协议;将IP地址映射为MAC地址。

2.为什么要有arp
    平时上网我们都知道要有一个IP地址才能上网,那arp用来干嘛的呢?如果我们学习过计算机网络,就应该知道,上网需要网络协议-》TCP/IP协议(抽象上)有四层,上三层传输数据需要IP地址传输,最底一层数据传输则需要ARP解析成MAC地址进行传输。

3.简单介绍局域网中两台电脑之间数据传输
    假设:
    源主机 A ip:192.168.1.1
    目标主机 B ip:192.168.1.2
    A要向B发送数据,A如何发给B呢?
    A先通过软件编写好要发送的内容,点击发送 -》解释:此时,电脑将要发送的内容,从软件中(或者可以理解为:软件界面中的文本框中)读取数据,将数据从内存中复制到网卡缓存中,在这期间电脑软件自动将要发送到的目标主机地址(这里的目标主机地址是指IP地址)写好。
    注意:网卡发送到的目标地址是MAC地址(只能发送到MAC地址,网卡属于网络接口层,即最下层,只能接触MAC地址,并不接触IP),但现只知道IP如何知道MAC呢?
    这时就要用arp协议了,这时,网卡向整个局域网发送一个广播:谁是 192.168.1.2?把他的MAC地址告诉192.168.1.1。如果B在局域网中,收到该条广播将自己的IP 地址和广播的IP地址进行比对,如果相同则向A发送一个响应包:我的IP是192.168.1.2,我的MAC 地址是BB-BB-BB-BB-BB-BB。其他主机收到后比对IP,IP不同则忽略广播包。如果B不在局域网中,则广播后无响应,则向该局域网连接的路由器发送请求,得到路由器的MAC地址,将刚才的广播信息发给路由器,路由器再进行转发(这里已经不属于局域网的范畴了,我们不在讨论)。
    为什么要用arp转发?答:局域网由交换机组成(不考虑其他原因,这里仅是为了讲解问题),交换机中存储的MAC地址,A->B发送信息,两台主机如果在一个局域网中,且AB都互相知道对方的IP和MAC,这时,消息从网卡发出(包括地址信息)-》到交换机,交换机从MAC表中查找目标主机的MAC,查找到MAC->端口(端口指的主机网线连接到交换机上的口),将消息转发给这个端口,B网卡收到该消息比对MAC->比对ip->交给软件.(传输层的端口用来表示给那个软件(进程),这里不讨论),最终从A发出的消息被B收到。

4.arp欺骗
    假设:C 攻击者
    这里可以看出在A发送广播的时候,如果C冒充B,则可以将自己MAC告诉A,说我就是192.168.1.2,我的MAC是CC-CC-CC-CC-CC-CC(其实这个MAC地址是C的)。如何伪造这份信息呢?这就要用到内核编程了(之前我也很好奇,如果做到伪造,比如说伪造IP,冒充网关进行DNS欺骗)在我慢慢看书积累的过程中,《Linux网络编程》(第二版)宋敬彬P492,写道在linux内核中的netfilter框架(自行百度这个框架的信息吧),框架中有5个钩子点(钩子:程序在系统处理之前,先让用户程序处理一遍,这个用户程序就是钩子程序),在IP层(arp协议属于ip层)最后一个钩子点处,即数据包即将要通过网卡出去的包,这里进行伪装,发送虚假信息给A。
    这里读者可能又问了,我怎么知道A什么时候发消息给B呢?地址解析协议ARP是有一定时间的,即需要不停的发送,指出,其实每台主机都要维护一个ARP表,这个表就是缓解网络压力,刚发的IP对应的MAC我们先放到这个表中,不需要每次都要发送ARP广播,但不是一直都是固定的ARP信息,因为这里有很多情况出现,比如A关机了/换网卡了等,所有这里虽然有ARP表进行记录,但也是要经常更新滴。所以我们可以主动向A主机发送虚假的ARP信息,A就会以为B-IP对应的MAC就是B的(其实C已经欺骗了A)。A-》B发送信息,其实是发送给了B,这样就完成了ARP欺骗。

当然ARP欺骗只是打个前站,欲知后事如何且听下回分解!

笔者能力有限,如有不对,还请大牛不吝指导。邮箱:aq_ss@qq.com

ARP欺骗分析的更多相关文章

  1. arp协议分析&python编程实现arp欺骗抓图片

    arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...

  2. Arp欺骗和DNS投毒的实验性分析

    1.中间人攻击之Arp欺骗/毒化 本文涉及网络安全攻击知识,随时可能被永久删除.请Star我的GitHub仓库 实现原理: 这种攻击手段也叫做中间人攻击MITM(Man-in-the-Middle) ...

  3. ARP欺骗病毒,网页“篡改”,注入iframe代码!

    ---------------权威资料看这里--------------- 清华大学信息网络工程研究中心-中国教育和科研计算机网应急响应组<ARP 欺骗网页劫持攻击分析>PDF文件,直接I ...

  4. 防止ARP欺骗的方法!!!

    防止ARP欺骗的方法!!! 根据鄙人上网经常掉线,怀疑可能是某人使用网络剪刀手,网络执行官,局域网终结者等工具.经过搜索有关资料,有了一点点防范经验,借以参考~! 一 首先我们来了解下这类攻击工具的原 ...

  5. 中间人攻击之arp欺骗 科普ARP欺骗

    中间人攻击之arp欺骗 科普ARP欺骗 A <-> B A中有个ARP Table,每次发包都会在此Table中查找,若找不到,发APR Request包询问.此时若hacker冒充B的M ...

  6. ARP欺骗攻击

    一.ARP攻击概述 ARP攻击主要是存在于局域网中,通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机 ...

  7. ARP协议分析(Wireshark)

    一.说明 1.1 背景说明 以前学网络用的谢希仁的<计算机网络原理>,一是网开始学不太懂网络二是ARP协议是没有数据包格式的(如果没记错应该是没有).学完只记得老师说:ARP很简单的,就是 ...

  8. 【转】如何判断ARP欺骗?该怎么防护?

    因为在进行通信的时候,数据是通过MAC地址与IP地址的对应关系来进行转发的.若其中MAC地址与IP地址对应的关系出错,就会导致数据错误转发,影响正常通信.通过某种手段,来更改MAC与IP地址的对应关系 ...

  9. ARP欺骗与MITM(中间人攻击)实例

    ARP协议(address resolution protocol):地址解析协议 一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析 ...

随机推荐

  1. 关于JS的页面跳转

    "window.location.href"."location.href"是本页面跳转 "parent.location.href"是上一 ...

  2. .net实现多重继承问题(virtual)

    C#中是没有类的多重继承这个概念.要使用多重继承必须要通过接口Interface来完成, 一.接口类 interface  getTable{      DataTable Getdatatable( ...

  3. 011一对一 唯一外键关联映射_单向(one-to-one)

    ²  两个对象之间是一对一的关系,如Person-IdCard(人—身份证号) ²  有两种策略可以实现一对一的关联映射 主键关联:即让两个对象具有相同的主键值,以表明它们之间的一一对应的关系:数据库 ...

  4. 开涛spring3(5.4) - Spring表达式语言 之 5.4在Bean定义中使用EL

    5.4.1  xml风格的配置 SpEL支持在Bean定义时注入,默认使用“#{SpEL表达式}”表示,其中“#root”根对象默认可以认为是 ApplicationContext,只有Applica ...

  5. 开涛spring3(3.1) - DI的配置使用

    3.1.1  依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现 ...

  6. List在执行remove方法不能删除指定的对象

    我们根据List中的源码分析, remove方法的原理: public boolean remove(Object o){      if(o ==null) {           for(inti ...

  7. 如何在不使用系统函数的情况下实现PHP中数组系统函数的功能

    PHP中为我们提供了各种各样的系统函数来实现我们需要的各种功能,那么,在不使用系统函数的情况下我们要怎样来实现这些功能呢?以下就是几种系统函数的实现方式. 首先,我们来定义一个数组: $arr= ar ...

  8. 一个可以控制提示框显示为top,bottom,left,right的小方法

    html代码 <!doctype html><html><head><meta charset="utf-8"><title& ...

  9. 写JS自执行函数时要注意的

    JS是非强类型语言,且IDE也不够智能,所以经常会在语句结束时漏写了分号,一般情况下这是不影响运行的, 但如果后面跟上的是一段自执行的函数,就会报出 "..... is not functi ...

  10. Vue的报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'

    Vue的报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>' ...