邪恶改装2:用单片机实现一次简单的wifi密码欺骗

0×00 前言

         前段时间用TPYBoard v202 做了一个简单的WIFI干扰攻击器(ps :没有看过的小伙伴,可以看一下:http://www.freebuf.com/column/136985.html ),最近几天,一直在想,如何用单片机实现一次较完整的wifi攻击。于是结合钓鱼考虑是否能利用单片机成功拿到wifi的登陆密码。

0×01 攻击构思

        第一步,利用tpyboard v202将wifi干扰;

        第二步,将v202的ssid和信道改为与受干扰wifi相同的SSID及信道;

        第三步,制作钓鱼页面;

        第四步,受干扰用户极有可能去连接虚假的WIFI,当用户连接后,无论用户访问哪个网络都会跳出伪装的钓鱼页面,从而诱导其写入密码。

        第五步,当密码写入后,v202后尝试验证密码的正确性,如果正确将停止干扰,并将密码通过tpyboard存入TF卡,否则继续干扰。

0x02 搭建开发环境

         1、首先你的需要TPYB oard v202和TPYBoard V102(用于接收密码信息)开发板各一块,tpyboard V102自带TF卡,而且用python编程,相对来说操作较简单,且能支持存储。

         2、网上下载了一个使用esp8266 制作Deauth无线攻击的 开源固件,是arduino开发的。 github下载地址:https://github.com/PakchoiFood/TPYBoard-v202-v102-EvilPlans 里面包含了arduino IDE(arduino-1.8.2-windows.exe )、固件源码(esp8266_wifi.rar )、TPYBoard v102的源码(TPYBoard v102.rar)和串口调试工具(XCOM V2.0.rar )。另外,还需要esp8266开发包(Arduino15-2.rar )可以从下面链接:http://pan.baidu.com/s/1pLnwz7l 下载。

3、下载完毕后,解压

esp8266_wifi.rar的固件是在上一篇【邪恶改装:TPYBoard制作廉价WIFI干扰器】的实验基础上做了修改,使用串口和TPYBoard v102进行连接,将获取到的WIFI密码传递给v102,v102接收到正确的密码后,进行TF卡的存储,同时也记录下攻击日志。

        4、双击arduino-1.8.2-windows.exe 安装arduino IDE。(如果你已经安装过arduino IDE,这步可以省略)。

        5、安装完毕后,打开arduino,菜单找到 文件—》首选项,点击红色区域进入SDK目录。我的路径是:C:\Users\Sen\AppData\Local\Arduino15。

        6、解压Arduino15-2.rar,将里面的全部内容直接覆盖C:\Users\Sen\AppData\Local\Arduino15下的文件。

0x03编译烧写固件及程序代码

        1、如果你对V102及V202的使用方法不熟悉,可以参考TPYBoard 官方docs网站http://docs.tpyboard.com/zh/latest/tpyboard/tutorial/

TPYBoard v102 源代码(main.py)

import pyb
from pyb import UART
 
u4=UART(4,115200)
mkdir_='/sd/log.txt' #需先插入TF卡 新建log.txt 
pyb.LED(2).on()
while True:
    if(u4.any()>0):# 判断串口是否有数据
        _mag=''
        pyb.LED(3).toggle()
        f=open(mkdir_,'a')
        _data=u4.readline()#读取一行数据
        _dataMsg=_data.decode('utf-8')#将字节数据转码成utf-8 编码的字符串
        print('_dataMsg:',_dataMsg)
        #解析数据
        _index_h=_dataMsg.find('tpyboardpwd')
        _index_e=_dataMsg.find('*')
        if _index_h>-1 and _index_e>-1 and (_index_e-_index_h)>11:
            _dataMsg=_dataMsg.replace('tpyboardpwd','').replace('*','')
            print('GetPwd:',_dataMsg)
            _mag=_mag+'---------------attack log------------\r\n'
            _mag=_mag+'SSID:'+_dataMsg.split('+')[0]+'--'+'PWD:'+_dataMsg.split('+')[1]
            print('-------------------------\r\n')
            pyb.LED(4).toggle()
        if _mag!='':
            f.write(_mag)#将获取到的SSID和PWD 保存在日志文件中
        f.close()

        2、TPYBoard v202的使用

        (1)解压esp8266_wifi.rar,arduino IDE菜单栏 文件-》打开esp8266_wifi源码包下的esp8266_deauther\esp8266_deauther.ino

(2)TPYBoard v202 使用micro USB数据线接入电脑。查看安装的usb转串的端口。打开电脑的设备管理器(这里是COM44)。

        (3)工具-》端口,选择COM44(根据自己的实际端口号选择)

        (4)菜单栏下面的绿色图标菜单区,选择上传,开始编译,烧写固件

        (5)查看最下方的日志区域

等待编译完成,出现上图信息(状态:变为“上传”)时,按住FLASH的同时,按一下RST按键松开,让TPYBoard v202复位一下,继续按着FLASH,出现下面的信息时就可以松开FLASH按键了。

0x04硬件的连接

        代码和程序都完成了,接下来需要将TPYBoard v102和TPYBoard v202 的串口连接起来。 连接示意图:

连接实物图:

0x05 测试效果

1、 用自己家的WIFI做测试,先用手机接入WIFI(Tend_01CB30)。

2、解压XCOM V2.0.rar(或者使用其它的串口工具),解压双击运行XCOM V2.0.exe 串口助手。打开串口选择V202所在串口(我的是COM44), 波特率改为115200 ,其余默认,打开串口,就可以看到v202打印的信息了。

ps:刚才v202烧写完固件后会马上自启动,所以这里先复位一下v202,按一下RST,这样我们就可以看到从开始到最后的整个过程了

        3、大家可以看到,v202启动会搜索到了很多附近的WIFI,然后它就判断出那一个信号最强,我这里刚好是我家的最强,于是v202开始攻击[Tend_01CB30] 这个WIFI,同时也会建立一个开放的[Tend_01CB30]热点。攻击时,v202上的小蓝灯会常亮。

        4、此时手机已经连接不到原有路由器的[Tend_01CB30]的WIFI。这时,如果换成完全不知情的别人,极有可能会去手机设置里面看,怎么连接不上网络了?

        5、此时,他只能连接到我们伪装的WIFI上来。

        6、当其成功连接到伪装的WIFI后,只要打开浏览器,输入任何网址,都会自动跳转到虚假网络密码确认页面。

        7、测试输入12345678点击确认,串口调试助手中可以看到获取到的WIFI密码,然后停止攻击,小蓝灯会熄灭。

        8、同时,v202会自己先去尝试连接,来验证密码的准确性,如果连接成功的话,会自动将密码传送给v102 进行保存;如果连接失败,v202会继续进行干扰攻击。

        9、查看一下TF卡中的log.txt文件,是否记录了刚才破解的密码。

0×06 扩展

        本实验做的有点粗,可以再做精细一点,比如V202完全由V102来供电(将V102的5V、GND与V202的VIN、GND连接),这样就是一整套设备,只需要加个电源供电就可以长期放在一边,静等密码了。呵呵。

【免责声明】

        以上方法,仅做学术研究,请不要在非合法情况下实施攻击,这种行为将会被视作非法活动。由本软件所造成的任何不良后果,作者将不承担任何责任,请各位谨慎使用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

窥探Nginx内部实现:如何为性能和规模进行设计

NGINX在网络性能方面处于领先地位,这一切都是由于软件的设计方式。尽管许多Web服务器和应用程序服务器使用简单的线程或基于进程的架构,但NGINX具有复杂的事...

21250
来自专栏IT大咖说

运维老鸟阐述:沪江从DNS到httpdns的演进

摘要 HttpDNS服务是一款可以有效解决域名劫持的方案,并且已在各家大厂广泛应用,现已成为一款相当成熟的产品,本次分享主要围绕沪江由DNS到HTTPDNS演进...

51480
来自专栏听雨堂

用AutoHotKey建立自己的便签本

     如果要我选一个我最常用的windows程序,那一定是notepad了,事实上,我把它的快捷方法放到快速启动栏以便随时打开它。顺手记录各种东西:网址,关...

23980
来自专栏IT技术精选文摘

LVS集群的体系结构

1.引言 在过去的十几年中,Internet从几个研究机构相连为信息共享的网络发展成为拥有大量应用和服务的全球性网络,它正成为人们生活中不可缺少的 一部分。虽...

27180
来自专栏FreeBuf

手机没Root?你照样可以渗透路由器

和Metasploit差不多,RouterSploit是一个强大的漏洞利用框架,用于快速识别和利用路由器中的普通漏洞,它还有个亮点,就是可以在绝大多数安卓设备上...

55640
来自专栏Java进阶

zookeeper的选举机制

457140
来自专栏FreeBuf

利用Python实现DGA域名检测

前段时间爆发的利用永恒之蓝进行勒索及xshell等事件,各大厂家都站在不同的角度分析了相应的事件及程序,对于对逆向不了解看着的确很吃力。上段时间看到宫总及袁哥都...

70560
来自专栏阮一峰的网络日志

编译器的工作过程

源码要运行,必须先转成二进制的机器码。这是编译器的任务。 比如,下面这段源码(假定文件名叫做test.c)。 #include <stdio.h> int m...

32760
来自专栏知识分享

ESP8266 wifi钓鱼

https://www.cnblogs.com/xiaowuyi/p/6980072.html

1K30
来自专栏coding

django2.0入门教程第一节启动开发模式下的服务器

17220

扫码关注云+社区

领取腾讯云代金券