wifi渗透初探
前言
最近新买的linux监听网卡到了,借此学习一下wifi相关技术及原理。本文章主要以WPA / WPA2 加密的设备做演示。
基础知识
普通无线加密及破解的分类: 1、wep加密:一种老旧的加密方式,十分容易被攻击,已被大多设备舍弃 2、WPA/WPA2 加密:当下wifi设备主流的加密模式,相对比较安全,一般采用抓取握手包进行本地字典攻击的方式进行破解,或利用钓鱼手段,对于开启QSS快速连接功能的路由器也可采用pin码穷举来加入无线网络
wifi****四次握手:
1、首先AP发起四次握手,AP发送一条包含ANonce(随机值)的消息到客户端。 2、客户端利用它来生成PTK。这个过程中客户端先自行生成PMK=Hash(ESSID+PSK+4096),然后用PMK在生成PTK = PRF (PMK + ANonce + SNonce + Mac (AA)+ Mac (SA))。最后将Mic=Hash(PTK+ANonce+SNonce+MAC1+MAC2)的值以及生成的随机值SNonce一同发送给AP。 3、AP利用客户端发来的SNonce,自己也生成一个Mic,并去校验生成的Mic和客户端发来的Mic是否相等,相等的话即代表PSK(密码)正确。然后将自己生成的Mic和GTK(临时组密钥)发送给客户端。 4、客户端确认AP发来的Mic并缓存GTK的广播组密钥
密码破解原理:
了解了wifi握手过程我们可以发现,在一系列设备交互中,唯一不可知的只有PSK,也就是我们wifi连接时需要的密码。知道了这个特点便可以抓取握手包利用字典暴力破解PSK,这就是握手包破解密码的基本原理。 下面使用kali来破解wifi密码
实战
首先插入linux网卡(一定要带有监听模式的),在命令窗口查看网卡接入情况,这里的wlan0便是我的外接网卡了 确认网卡装配无误,开启网卡监听模式
airmon-ng start wlan0
再用ifconfig查看网卡情况,wlan0变成了wlan0mon就说明开启成功 探测周边wifi,这里的Test便是我们的目标wifi
airodump-ng wlan0mon
记下当前信道为6,以及BSSID 选中该wifi进行监听
airodump-ng –bssid 42:EC:99:EE:E5:26 -c 6 -w Test wlan0mon
可以看到当前一个用户已经接入wifi设备,但握手包是在用户连接wifi认证时才能捕获到,如果用户已经连接正在使用是无法捕获到的,所以我们需要等待一个恰好要连接的用户,当然,在长时间等不到用户来连接的时候,我们可以打开另一个终端对已接入设备进行Deauth 攻击,迫使其掉线重新进行认证。 保留上面的监听窗口,重新打开一个命令窗口对正在连接使用的用户进行Deauth 攻击
aireplay-ng -0 10 -a 42:EC:99:EE:E5:26 -c 1E:76:F6:57:E1:93 wlan0mon
在攻击过程中,该用户会不断掉线并重新认证,直到窗口出现下图的WPA handshake字样,我们就成功捕获了握手包 接下来查看当前目录,找到wifi名字对应的cap文件,这就是我们抓到的包 对握手包进行本地解密需要一个强大的字典,这里我用字母和符号随机生成了一个字典进行爆破,爆破成功后密码会显示到命令行,实战中可以说只要字典够强,机器性能够强,理论上是可以100%破解成功的,但现实并不是那么理想,个人PC的性能跑一个包罗万象的字典可能要到猴年马月,所以还是需要一定运气。
aircrack-ng -w 字典路径 cap包路径
PIN码穷举:
如果是开启QSS快速连接功能的路由器也可以对目标尝试pin码穷举,PIN码共为8位,按4 3 1 分段,总共穷举有11000种组合。通过爆破获取到PIN码并已知Bssid就可以得到wifi密码。
reaver -i wlan0mon -b 70:85:c4:6B:71:8F -vv
这个过程会很慢,因为中途会出现PIN死的情况,但最终一定可以得到Wifi的PIN码和密码,相对于抓握手包进行爆破的不确定性,这种方法省力得多,而且PIN码一般没人去刻意更改,如果用户将wifi密码更改的话,还是可以通过一条指令用PIN码来获得Wifi密码
reaver -i wlan0mon -b MAC地址 -p PIN码
图片窃取
在拿到wifi密码后并连接后成功加入局域网,我们就可以利用ARP欺骗来窃取用户图片 首先我们利用nmap来扫描局域网存活主机
namp -sP 192.168.5.0/24
扫描后发现除了我们还有两台主机,其中ip为192.168.5.12的是一台安卓设备,我们将这台设备作为攻击目标 在对受害者实施ARP欺骗将自己的设备作为网关后,如果攻击者将自己的网卡开启流量转发,将截获的数据包传递到真正的网关,就可让受害主机不断网,同时我们也可以监听到受害者主机的数据流量的内容。 Vim编辑/etc/svsctl.conf文件,去掉net.ipv4.ip_forward=1的注释即可开启端口转发 首先开启ARP欺骗
arpspoof -i wlan0 -t 192.168.5.1 192.168.5.12
打开另一个终端执行driftnet -i wlan0 -a -d /testpic,它就会自动把手机浏览的图片保存到/testpic下 此时我们用手机浏览一篇关于疫情的帖子,命令窗口立即捕获了图片 下面是此时手机正在浏览的页面,百度搜索了疫情,浏览页面中出现了图片 此时查看kali捕获到对应请求图片,与访问的图片一致
密码截获
如果说我们拿到同一wifi下设备访问的图片只是隐私泄露,但如果账号密码被截获就是真正的损失了 这里我们选择win11主机为受害者,模拟在网站登录,这里我也发现https的站点一般情况下似乎捕获不到账号密码信息,看了其他大佬的文章也是用http网站进行测试,这里就借用别人文章中的http站点进行演示 Kali攻击机一个窗口对其进行arp欺骗,另一个窗口利用ettercap工具捕获账号密码 Win11机器在http站点登录后,回到kali看到账号密码已被捕获(此处密码为md5加密,部分站点的密码是明文) 将md5撞库后得到账号密码,如果md5复杂撞库得不到原始密码,也可以用bp抓登陆包替换密码的md5值进行登录
其他
在加入局域网成功进行arp欺骗后还有很多其他的操作可以实现,例如替换数据,替换浏览器访问页面、钓鱼等
总结
虽然当今各种安全协议完善,但还是无法避免有心之人利用,在使用wifi设备时应注意信息安全。根据上述实验内容来看,可做如下几点防护:
- 不随意连接陌生Wifi
- 个人Wifi密码采用字母大小写、数字、符号混合的形式
- 没有需求的话尽量关闭路由器的wps功能
- 在管理页面发现陌生设备及时封杀并修改密码
- Wifi万能钥匙一类软件会共享出自己wifi的密码,尽量不要使用
- 一般家用环境下可以开启ap隔离防止局域网内的攻击