局域网 ARP 欺骗原理详解
ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式, 那么什么是 ARP 地址解析协议: 首先我们要知道, 一台电脑主机要把以太网数据帧发送到同一局域网的另外一台主机, 它的底层是通过 48bit 的 Mac 地址来确定目的接口的, 但是我们在应用层是使用 IP 地址来访问目标主机的, 所以 ARP 的作用就是当一台主机访问一个目标 IP 地址的时候, 它为该主机返回目标 IP 主机的 Mac 地址, 并且这个过程是自动完成的, 应用层的程序是不用关心这件事的.
在讲 ARP 欺骗之前我们先来了解一下正常情况下一台主机是如何通过路由器上网的:
如上图, 我们以 A 主机 ping 8.8.8.8 为例:
- 主机 A 上执行
ping 8.8.8.8
- 主机 A 准备根据默认路由将数据包发送给
192.168.0.1
, 但是最开始的时候主机 A 不知道192.168.0.1
的 Mac 地址, 所以主机 A 广播一条 ARP Request, 询问192.168.0.1
的 Mac 地址是什么 - 路由器收到该 ARP 请求, 发现自己是
192.168.0.1
于是向主机 A 回复一条 ARP Reply, 告诉主机 A192.168.0.1
的 Mac 地址是 xxxGW. - 主机 A 收到该 ARP Reply, 并使用该 Reply 中的 MAC 地址封一个 ICMP Request 包, 然后将包发出去
- 路由器收到该 ICMP 包, 发现目标 IP 是公网 IP, 便将该包放送到公网, 公网返回 ICMP Reply 给路由器
- 路由器准备将 ICMP Reply 发送给
192.168.0.100
, 但是同第2步, 路由器最开始的时候也不知道192.168.0.100
的 Mac 地址是多少, 所以路由器会广播一条 ARP Request, 询问192.168.0.100
的 Mac 地址是什么 - 主机 A 收到 ARP Request, 发现自己是
192.168.0.100
, 于是向路由器回复 ARP Reply, 告诉路由器192.168.0.100
的 Mac 地址是 xxxA. - 路由器收到 ARP Reply, 并使用该 Reply 中的 MAC 地址将第5步收到 ICMP Reply 包重新封包, 并发送出去
- 主机 A 收到 ICMP Reply
至此, 正常的上网流程结束. 然后对照上面的流程回答下面两个问题:
- 如果主机 B 无脑的向主机 A 发送 ARP Reply, 告诉 A
192.168.0.1
的 MAC 是 xxxB, 会发生什么? - 如果主机 B 无脑的向路由器 GW 发送 ARP Reply, 告诉 GW
192.168.0.100
的 MAC 是 xxxB, 会发生什么?
答案如下图:
如果主机 B 做了上面说的两件事的话, 那么主机 A 访问网络的所有数据都会先经过主机 B, 并且回来的数据也都会经过 B, 至此, 整个 ARP 欺骗完成.
至于实际操作, 在自己的机器上安装一个 arpspoof
工具便可以, Ubuntu 下可以直接使用如下命令安装:
apt install dsniff
安装好之后先打开 IP 转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
然后使用 arpspoof
命令进行欺骗, 命令使用方法如下:
arpspoof -i <网卡名> -t <欺骗的目标> <我是谁>
比如上面我举得例子, 分别开两个终端:
终端1, 欺骗主机 A 我是网关
arpspoof -i eth0 -t 192.168.0.100 192.168.0.1
终端2, 欺骗网关我是主机 A
arpspoof -i eth0 -t 192.168.0.1 192.168.0.100
欺骗成功之后可以通过抓包工具查看主机 A 所有的流量, 这里不再多说.
局域网 ARP 欺骗原理详解的更多相关文章
- 【转】VLAN原理详解
1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.V ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- LVS原理详解(3种工作模式及8种调度算法)
2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong 发布日期: ...
- 交换机工作原理、MAC地址表、路由器工作原理详解
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- VLAN原理详解[转载] 网桥--交换机---路由器
来自:http://blog.csdn.net/phunxm/article/details/9498829 一.什么是桥接 桥接工作在OSI网络参考模型的第二层数据链路层,是一种以 ...
- NFS原理详解
NFS原理详解 摘自:http://atong.blog.51cto.com/2393905/1343950 2013-12-23 12:17:31 标签:linux NFS nfs原理详解 nfs搭 ...
- I2C 基础原理详解
今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...
- Zigbee组网原理详解
Zigbee组网原理详解 来源:互联网 作者:佚名2015年08月13日 15:57 [导读] 组建一个完整的zigbee网状网络包括两个步骤:网络初始化.节点加入网络.其中节点加入网络又包括两个 ...
- 块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解
CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inli ...
随机推荐
- MVVM 和 VUE三要素:响应式、模板引擎、渲染
MVVM 和 VUE三要素:响应式.模板引擎.渲染:https://blog.csdn.net/weixin_37644989/article/details/94409430
- C++练习 | 文件流应用(1)
#include <iostream> #include <cmath> #include <cstring> #include <string> #i ...
- 错误:编码GBK的不可映射字符解决办法
今天在cmd测试java代码的时候遇到了一个错误 解决办法: 输入javac -encoding utf-8 文件名.java 原因: 由于JDK是国际版的,我们在用javac编译时,编译程序首 ...
- gunicorn 介绍与性能分析
阅读此文前建议先阅读 我的博客 gunicorn 是一个 python wsgi http server,只支持在 unix 系统上运行 安装 gunicorn 其实是 python 的一个包,安装方 ...
- C语言经典100例(51-100)
[程序51] 题目:学习使用按位与 & . 分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 #include "stdio.h" ...
- Redis从入门到高可用,分布式实践
redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
- CentOS下安装DockerCE
title: CentOS下安装DockerCE comments: false date: 2019-09-04 09:47:58 description: 在CentOS下安装社区版Docker ...
- 使用Mybatis Generator自动生成代码
MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器.它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码.它将内省数据库 ...
- elastic 查询
1.match 查询 GET /_index/_search { "query": { "match": { " } } } 1.match 多条件查 ...
- Ubuntu中用bitbake core-image-minimal时,出错:from bb import data
问题描述: 在准备ARM交叉编译环境时,执行完命令: DISTRO=fsl-imx-x11 MACHINE=imx6qsabresd source fsl-setup-release.sh -b bu ...