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/tsharkBT的路径是:/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

posted @ 2015-04-17 11:44  安全大可  阅读(322)  评论(1编辑  收藏  举报
真正的安全感源自于自身的实力
回顶部