WIFI SSID嗅探技术科普[附脚本]
最近在朋友圈看到了一篇文章,就是科普国外的那个利用无人机飞过人群来进行中间人攻击的。主要利用的是智能手机(Android低于5.0,IOS低于8.0版本)的一个安全缺陷:在某网络环境下,如果里面出现你曾经连接过的WIFI SSID,不管这个WIFI是否真的是你以前那个,你的手机都将会自动滑行进去连接。是不是很奇葩?
本文主要讲的关于Android的这个"缺陷"的成因以及利用,分成两种不同的利用方式,因为aircrack-ng嗅探的文章,大牛们都写过了。那俺就不重复造轮子了。想看的查阅这个地址 http://92ez.com/?action=show&id=47 。
我这主要是科普,大牛随意喷:
-
第一个是一个perl脚本
-
第二个是2个Python脚本(一个scapy库,一个socket库)。
当然,还有ruby脚本的,都是嗅探SSID用的,旨在学习。
我们都知道,一般情况下,当你连接一个新wifi的时候,不管是移动设备(android/ios),还是windows/linux/macOS,都会默认自动保存你连接的wifi或者把"自动连接"的选项打上勾。比如下面这是windows7的:
这就意味着,你每次重启电脑,或者重启网卡,你的设备都会发出连接请求,而这些请求目标,就是你曾经保存过的WIFI SSID。
(百度百科:通俗说,SSID就是你给自己的无线网取的名字。)
下面模拟一下对话:
即使你WIFI是加密类型的,这个对话过程依然能嗅探到,因为它与你WIFI的加密无关。
在wifi技术里,这个有很多种方式可以截获到的,但是毕竟咱不是WIFI技术的专业人士。
下面就开始步入正题,我从我的知识层面,来给大家进行科普,在进行实验前,你务必拥有:
kali或backtrack环境、Linux环境、Python环境/perl环境(kali和bt默认带),外置无线网卡一枚。
我的测试环境:
-
kali1.1.0
-
backtrack5
-
Mercury MW150UD 外置无线网卡,京东35一个亲。
首先,我们先用tshark这个命令行版的哇下可(wireshark)来抓一下网卡来瞅一下,kali和bt都自带,Ubuntu没有的请apt-get tshark下载。kali的路径是:/usr/bin/tshark,BT的路径是:/usr/local/bin/tshark。后面perl的工具会用到。
把网卡挂载到kali上,是wlan0这个设备:
在进行之前,我们需要先把wlan0变成监听模式:
root@404:~# ifconfig wlan0 down 先关闭网卡, 不然会提示busy
root@404:~# iwconfig wlan0 mode monitor 开启监听模式
root@404:~# iwconfig wlan0 channel <i> 设置监听信道
root@404:~# ifconfig wlan0 up 开启网卡
整体如下:
然后,我们来看一下tshark的帮助命令:tshark -h
由于我们这篇文章不涉及到这些,我就不赘述了,可以百谷一下用法哈,很多的~
我们这里用到的是-i参数,后面加的是网卡名,也就是上面的wlan0 来抓取无线网络数据包:
很简单就嗅探到了WIFI SSID,但是貌似不是很实用。在这里咱没有设置任何过滤,出现一大堆数据,看起来很头疼,而且也不利于我们去分析。而且tshark这软件你运行几小时,丢失的数据会很多的。作为一个"黑客",我们追求的是极致,是简单,对不对?
那么,我们就不得不用脚本来实现了。通过上面得到的数据分析,我们需要得到的也仅仅就是:Mac地址和SSID。其他的没多大用。而且你有没有注意到,刚才咱们在运行iwconfig命令的时候,有一步iwconfig wlan0 channel <i> 设置监听信道,这就是鸡肋之处,wifi不可能只在一个信道对不对?所以,我们更得使用脚本来实现多信道自动切换来嗅探SSID。
S1:perl结合tshark多信道嗅探 脚本
亮点:多信道多线程自切换嗅探
截图:
如果出现:tshark tool not available!
则有两种可能,1是你没安装这个工具,2是没找到路径。
可以用find命令找一下:
瞅到了吧,我这是BT5的。那么你可以打开pl文件,根据你自己的修改:
把这个修改成你的路径就可以了!
脚本代码:
http://www.bksec.org/tools/hoover.zip
S2:python with scapy嗅探 脚本
这个脚本需要你Python装有scapy库,一个网络爬虫库。官网地址:
http://www.secdev.org/projects/scapy/
我下载的是2.3.1版本,BT默认是没用的,需要装一下,直接在scapy-2.3.1目录里执行:
root@404:~# python scapy.py install 安装就Ok了。
脚本代码:
#!/usr/bin/env python
from scapy.all import *
ap_list = []
def PacketHandler(pkt) :
if pkt.haslayer(Dot11) :
if pkt.type == 0 and pkt.subtype == 8 :
if pkt.addr2 not in ap_list :
ap_list.append(pkt.addr2)
print "AP MAC: %s with SSID: %s " %(pkt.addr2, pkt.info)
sniff(iface="mon0", prn = PacketHandler)
下载地址:
http://www.bksec.org/tools/getssidbyscapy.zip
S3:python with socket嗅探 脚本
这个脚本不需要依赖库,短短11行代码,实现SSID嗅探。
#!/usr/bin/env python
import socket
rawSocket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(0x0003))
rawSocket.bind(("mon0", 0x0003))
ap_list = set()
while True :
pkt = rawSocket.recvfrom(2048)[0]
if pkt[26] == "\x80" :
if pkt[36:42] not in ap_list and ord(pkt[63]) > 0:
ap_list.add(pkt[36:42])
print "SSID: %s AP MAC: %s" % (pkt[64:64 +ord(pkt[63])], pkt[36:42].encode('hex'))
下载地址:
http://www.bksec.org/tools/getssidbysocket.zip
综上三个脚本,Python会出现乱码,实测在这方面没有perl给力,因为perl用的是tshark,更贴地一点。由于鄙人大量测试,网卡已经差不多烧掉了。现在速度奇慢。本篇文章也在试验后清明节放假回来写的,原谅我放假回家时无线网坏掉了没办法测试。
转自自己的微信订阅号:蜂鼠安全 (bksecorg) 。博客左侧有二维码,扫码可以关注。
文章链接:http://mp.weixin.qq.com/s?__biz=MzA4MDU3NDU5OQ==&mid=203786701&idx=1&sn=a7e3b0cc4a16692eb4439d6676f7a418#rd
本文发于:安全大可文章转载请注明出处:http://im404.cnblogs.com
相关事宜请联系:im404@qq.com