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解析 ...
随机推荐
- ionic2 使用 cordova 打包成安卓apk
准备工作: 1.下载java sdk 配置好java 环境 2.下载android sdk 跟 android studio 并配置好环境 1.查看平台支持,添加android平台 首先命令提示符进入 ...
- Http学习之使用HttpURLConnection发送post和get请求(2)
接上节Http学习之使用HttpURLConnection发送post和get请求 本节深入学习post请求. 上 节说道,post请求的OutputStream实际上不是网络流,而是写入内存,在ge ...
- centos7搭建SVN+Apache+IF.svnadmin实现web管理SVN
阅读目录 1. 介绍 2. 软件准备 3. 建立SVN Server仓库 4. 配置安装PHP&IF.SVNadmin 5. 启动服务 1.介绍 公司最近想把Windows server平台的 ...
- jmeter 环境部署、数据库设置、分布式设置、多网卡配置等随笔
<!-- linux系统修改系统环境变量 系统语言-->[root@web-249 ~]# env|grep LANGLANG=zh_CN.UTF-8[root@web-249 ~]# ...
- How-to go parallel in R – basics + tips(转)
Today is a good day to start parallelizing your code. I’ve been using the parallel package since its ...
- Embedding R-generated Interactive HTML pages in MS PowerPoint(转)
Usually when I create slide decks these days I used markdown and slidy. However, I recently was ask ...
- 打开Eclipse弹出“No java virtual machine was found..."的解决方法
今天准备用Eclipse抓取Android应用崩溃log,打开Eclipse时发现运行不了有以下弹框 A Java Runtime Environment(JRE) or Java Developme ...
- wampServer 2.5 64位 更改"www 目录"不成功
已经指到自己新目录了,修改了 apache的httpd.conf里面的内容如下 修改: DocumentRoot "e:/phproot/" 修改: <Directory & ...
- [深圳/广州]微软SQL技术沙龙分享会(MVP)
[深圳/广州] 新一期俱乐部活动报名开始,这次是广深地区SQL Server 技术沙龙分享会(MVP),SQL Server作为一个数据平台,不管是SQL Server 2017 on Linux 还 ...
- Java线程间通信
1.由来 当需要实现有顺序的执行多个线程的时候,就需要进行线程通信来保证 2.实现线程通信的方法 wait()方法: wait()方法:挂起当前线程,并释放共享资源的锁 notify()方法: not ...