可能你会好奇,为什么可以嗅探到别人上网的数据呢?今天我就带大家一起用kali linux
中的wireshark
软件(kali
默认安装,ubuntu
使用apt
安装,CentOS
使用yum
安装,其余自行至官网下载并安装)进行一次嗅探。
1.Arp
转发流量
客户端浏览网页时,会先广播一个Arp
请求询问服务器的MAC
地址,收到请求的计算机会查找自己的Arp
缓存,如果找到了,就回应请求。
打个比方,Bob
想和Alice
对话,但他们被关在了一个漆黑的屋子里,周围还有其他人。这个时候,Bob
大声问道,“Alice
在哪儿?”Alice
听到后回答Bob
,“我在这儿!”于是Bob
和Alice
碰面了。
可是如果心术不正的Jerry
想要知道Bob
和Alice
的谈话内容,他就伪装成Alice
回复Bob
的请求,Bob
误认为Jerry
是Alice
,和他开始交谈。为了不让Bob
发现自己的真实身份,他又把Bob
说的话告诉Alice
,把Alice
说的话告诉Bob
,于是他成功地嗅探到Bob
与Alice
的谈话内容
2.Arp
断网攻击与欺骗
根据1中的类比,如果Jerry
不把Bob
的话告诉Alice
,那么Bob
就处于断网状态,称为断网攻击,因为Bob
根本联系不到Jerry
。如果Jerry
把Bob
的话告诉了Alice
,那么Jerry
就像中间人一样,Bob
就被Jerry
欺骗了。根据这个原理,制作了一款工具叫Arpspoof
,安装和wireshark
一样,下面是arpspoof
的用法。
arspoof -i 网卡 -t 受害者ip 目标ip
网卡就是连入局域网的网卡,必须是同一局域网内的计算机才能攻击。
受害者ip就是你要攻击的对象,阻止它与目标ip的连接。
对于linux
,一般是禁止ip转发的,即Jerry
不能把Bob
的话告诉Alice
,如果要开启转发,执行echo 1 >/proc/sys/net/ipv4/ip_forward
,禁止把1改成0即可
假设目标ip是192.168.3.52
,网关是192.168.3.1
,我的网卡是eth0
,那么我欺骗的命令是
echo 1 >/proc/sys/net/ipv4/ip_forward
arpspoof -i eth0 -t 192.168.3.52 192.168.3.1 >/dev/null 2>&1 &
arpspoof -i eth0 -t 192.168.3.1 192.168.3.52 >/dev/null 2>&1 &
由于arpspoof
产生大量Arp
输出,这里禁用输出流和错误流并让它后台运行
3.攻击前的准备工作——侦查
使用命令ifconfig
获取自己的网卡,找到有自己ip
地址的那一段(不是127.0.0.1
,是内网的地址),第一个单词就是网卡名,一般是ethx
或wlanx
一般来说,网关就是把自己ip
最后一位改成1(ip
在上一步操作中一起获得)
用nmap
获取对方的ip
,这里需要对对方电脑较为熟悉,实在不行直接到对方电脑上去查
nmap -sV 192.168.3.*
192.168.3
是自己ip
的前三位,视实际情况而定,如果是10.xxx.xxx.xxx
,那么用
nmap -sV 10.*.*.*
可能会等待一段时间,查询结束后会显示网段中存活主机,并显示MAC
地址,有一些可以识别出网卡产商
根据提供的信息慢慢找,如果不行也可以用-O
参数来判断系统
nmap -O ip
4.开始嗅探——wireshark
的使用
如果你已经成功获取对方的ip
并且成功的进行arp
欺骗,那么就可以进行接下来的步骤了。
打开 wireshark
,kali
的位置如下图所示,可以用命令wireshark
打开
在Sniffing & Spoofing
(嗅探与欺骗)中就有wireshark
,界面大致如下
双击你的网卡名(我的是eth0
),会进入如下界面(默认直接开始嗅探,所以会出现很多包)
No.
是包的编号,Time
是从开始抓包起的时间,Source
是指发送者ip
,Destination
就是接收者ip
,Protocol
就是传输协议(例如arp
、tcp
、udp
、http
、http2
,http2
指https
),Length
是指包的长度,Info
就是一些相关的信息
点击Statistics-->Capture File Properties
(统计–>抓包属性),可以查看抓包的统计数据
但是包这么多,我怎么找到我想要看的包呢?使用Filter
例如ip.addr == 192.168.3.52
,就是保留192.168.3.52
的包,它作为发送者或接受者均可
ip.src
指发送者,ip.dst
指接受者
单独的协议名控制协议类型,如tcp
、http
使用and
和or
进行逻辑运算,运算优先级为
优先级 | 运算 | 备注 |
---|---|---|
1 | () | 小括号 |
2 | . | 从属运算 |
3 | not | 取非运算 |
4 | ==,<,>,<=,>= | 比较运算 |
5 | and,or | 逻辑运算(从左至右) |
例如ip.addr == 192.168.3.52 and tcp
就是保留192.168.3.52
建立的tcp
连接
ip.addr == 192.168.3.52 and (http or http2)
就是192.168.3.52
浏览的网页
如果你输入的Filter
语法正确,输入框会呈绿色,否则呈红色
注意,请不要用localhost
(报错)和127.0.0.1
得不到任何包,所有ip
地址都是内网通用的ip
抓到包并过滤后,中间一栏和下面一栏就是关于包的信息