ARP欺骗分析
(作者原创,欲转载请说明出处)
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欺骗分析的更多相关文章
- arp协议分析&python编程实现arp欺骗抓图片
arp协议分析&python编程实现arp欺骗抓图片 序 学校tcp/ip协议分析课程老师布置的任务,要求分析一种网络协议并且研究安全问题并编程实现,于是我选择了研究arp协议,并且利用pyt ...
- Arp欺骗和DNS投毒的实验性分析
1.中间人攻击之Arp欺骗/毒化 本文涉及网络安全攻击知识,随时可能被永久删除.请Star我的GitHub仓库 实现原理: 这种攻击手段也叫做中间人攻击MITM(Man-in-the-Middle) ...
- ARP欺骗病毒,网页“篡改”,注入iframe代码!
---------------权威资料看这里--------------- 清华大学信息网络工程研究中心-中国教育和科研计算机网应急响应组<ARP 欺骗网页劫持攻击分析>PDF文件,直接I ...
- 防止ARP欺骗的方法!!!
防止ARP欺骗的方法!!! 根据鄙人上网经常掉线,怀疑可能是某人使用网络剪刀手,网络执行官,局域网终结者等工具.经过搜索有关资料,有了一点点防范经验,借以参考~! 一 首先我们来了解下这类攻击工具的原 ...
- 中间人攻击之arp欺骗 科普ARP欺骗
中间人攻击之arp欺骗 科普ARP欺骗 A <-> B A中有个ARP Table,每次发包都会在此Table中查找,若找不到,发APR Request包询问.此时若hacker冒充B的M ...
- ARP欺骗攻击
一.ARP攻击概述 ARP攻击主要是存在于局域网中,通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机 ...
- ARP协议分析(Wireshark)
一.说明 1.1 背景说明 以前学网络用的谢希仁的<计算机网络原理>,一是网开始学不太懂网络二是ARP协议是没有数据包格式的(如果没记错应该是没有).学完只记得老师说:ARP很简单的,就是 ...
- 【转】如何判断ARP欺骗?该怎么防护?
因为在进行通信的时候,数据是通过MAC地址与IP地址的对应关系来进行转发的.若其中MAC地址与IP地址对应的关系出错,就会导致数据错误转发,影响正常通信.通过某种手段,来更改MAC与IP地址的对应关系 ...
- ARP欺骗与MITM(中间人攻击)实例
ARP协议(address resolution protocol):地址解析协议 一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址,所以用ARP解析 ...
随机推荐
- ListView的使用(二)长按弹出上下文菜单
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView ...
- 通过demo学python
链接 Github项目地址 软件安装包(pycharm.注册码.解析器等) Python 一切皆对象 Python 编码规范 The Python Standard Library The Pytho ...
- 利用 os.walk() 遍历目录
os.walk: walk(top, topdown=True, onerror=None, followlinks=False) 参数: top 要遍历的目录地址 topdown 为真,则优先遍历t ...
- Docker化tomcat 并且使用maven热部署
今天没事干 就把自己的tomcat docker化并且使用maven实现热部署 特别记录一下~ 1.首先进行centos7的安装 就不在记录了 注意的是最好使用centos7 因为docker 依赖 ...
- SpringBoot学习helloworld
这几天开始学习springBoot记录一下(Hello World) pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...
- JavaScript 循环性能比较
有一句话叫做 没有什么事是一个循环解决不了的,如果真有,那就再来一个循环. 循环的种类有很多 正向for循环,逆向for循环,while循环,for-in循环(理论上性能最差),for-each循环, ...
- c++ thread
Either pthread_join(3) or pthread_detach() should be called for each thread,that an application crea ...
- Android界面(1) 使用TextView实现跑马灯效果
方法一:(只能实现单个TextView的跑马灯效果)在TextView添加以下控件 android:singleLine="true"只能单行,超出的文字显示为"...& ...
- rabbitmq 死信邮箱配置(dead-letter)
DLX,Dead-Letter-Exchange(死信邮箱)利用DLX,当消息在一个队列中变成死信后,它能被重新publish到另一个Exchange,这个Exchange就是DLX.消息变成死信一向 ...
- mysql主键约束和唯一性约束
主键约束和唯一性约束都是索引,它们的区别是: 主键字段可以确保唯一性,但主键字段不能为NULL. 唯一性约束可以确保唯一性,但唯一性约束的字段可以为NULL 唯一性约束对含有NULL的记录不起作用,即 ...