我并不是一个特别勤快的人,几天前我终于开始将我几周以来的一些想法付诸于实践,即使用Raspberry Pi Zero W制作一个可随身携带的迷你WiFi干扰器。有了它,我就可以随时随地的收集附近无线接入点及其连接客户端的相关信息,并可发送解除(deauthentication)数据包干扰WiFi(最初我只是想恶作剧),后来我意识到似乎将其用作WPA2握手包的嗅探更有意义。

[0x01] Kali image和初始无头(headless)配置

首先,你需要从此页面下载Kali Linux Rpi0w Nexmon镜像,并使用dd命令将其刻录到你将用于rpi的uSD卡上,但在解除挂载它之前,我们需要在引导时启用SSH,并配置其网络连接到我们家里的WiFi网络。请记住这只是暂时的,主要的wifi接口将用于稍后的数据包注入,而我们将能够通过蓝牙连接到主板。

如有必要,你可以在刻录镜像到micro sd的计算机上再次挂载它,然后:

  1. # this will enable ssh at boot
  2. touch /sd-mount-point/boot/ssh
  3. # let's setup wlan0
  4. nano /sd-mount-point/etc/network/interfaces

并在该文件中添加以下内容:

  1. auto lo
  2. iface lo inet loopback
  3. allow-hotplug wlan0
  4. iface wlan0 inet dhcp
  5. wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  6. iface default inet dhcp

接着,我们来配置wpa_supplicant.conf文件(即配置我们希望rpi自动连接到的WiFi网络):

  1. nano /sd-mount-point/etc/wpa_supplicant/wpa_supplicant.conf

如下:

  1. country=GB
  2. ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
  3. update_config=1
  4. network={
  5. ssid="YourWiFiName"
  6. psk="y0urw1f!p455w0rd"
  7. key_mgmt=WPA-PSK
  8. }

然后我们重启RPI,此时它应该会自动连接到你的WiFi,搜索IP地址(通过ping广播,或使用bettercap,我通常使用netmoncaplet来查看网络上发生了什么),最后使用默认的kali凭据并通过SSH连接到它:

  1. # this will allow you to login with your SSH key instead of a password
  2. ssh-copy-id -i ~/.ssh/id_rsa.pub root@pita-ip
  3. ssh root@pita-ip

第一次登录后请务必执行以下操作:

  1. # always change the default root password
  2. passwd
  3. # regenerate ssh keys
  4. ssh-keygen
  5. # set a nicer hostname
  6. hostname -b pita
  7. echo pita > /etc/hostname
  8. echo "127.0.0.1 pita" >> /etc/hosts
  9. # update the system
  10. apt update
  11. apt upgrade
  12. # install a few useful packages and setup swap
  13. apt install git dphys-swapfile
  14. # set CONF_SWAPSIZE to 1024
  15. nano /etc/dphys-swapfile
  16. systemctl enable dphys-swapfile
  17. # set the correct timezone
  18. dpkg-reconfigure tzdata
  19. # reboot to apply the effects
  20. reboot

[0x02]通过蓝牙与bt-nap连接

如果我们希望将wlan0设置为监控模式并使用Nexmon注入,那么我们就需要有另一种方式来连接我们的板子。我们可以将rpi设置为bt-nap服务器,这样我们就能够通过蓝牙或是蓝牙上的IP地址进行连接,这么做还有个好处就是,它可以同时支持在笔记本电脑和智能手机上工作。

让我们再次通过WiFi和SSH连接:

  1. ssh root@pita-ip
  2. # install a few dependencies
  3. apt install pulseaudio pulseaudio-module-zeroconf alsa-utils avahi-daemon pulseaudio-module-bluetooth
  4. git clone https://github.com/bablokb/pi-btnap.git
  5. # install btnap as a server
  6. ./pi-btnap/tools/install-btnap server

更改蓝牙配置文件/etc/systemd/system/bluetooth.target.wants/bluetooth.service中的ExecStart部分,禁用SAP插件:

  1. ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=sap

通过编辑/etc/bluetooth/main.conf文件设置设备蓝牙名称,最后编辑btnap配置文件/etc/btnap.conf:

  1. MODE="server"
  2. BR_DEV="br0"
  3. BR_IP="192.168.20.99/24"
  4. BR_GW="192.168.20.1"
  5. ADD_IF="lo"
  6. REMOTE_DEV=""
  7. DEBUG=""

启动时启用所有服务并重启它们:

  1. systemctl enable bluetooth
  2. systemctl enable btnap
  3. systemctl enable dnsmasq
  4. service bluetooth restart
  5. service dnsmasq restart
  6. service btnap restart

在能够通过蓝牙连接之前,我们需要手动配对并信任我们将要使用的设备(请记住为每个你允许连接到PITA板的新设备重复此步骤)。请确保你的控制设备 (例如你的笔记本电脑)启用了蓝牙并且是可见的,然后从PITA板执行以下操作:

  1. bluetoothctl
  2. > agent on
  3. > scan on
  4. ... wait for your device to show up ...
  5. ...
  6. ... now pair with its address
  7. > pair aa:bb:cc:dd:ee:ff
  8. ... and trust it permantently ...
  9. > trust aa:bb:cc:dd:ee:ff
  10. ... wait ...
  11. > quit

现在我们来“释放”wlan0接口,将/etc/network/interfaces文件更改为:

  1. auto lo
  2. iface lo inet loopback
  3. allow-hotplug wlan0
  4. iface wlan0 inet static

禁用wpa_supplicant并重启:

  1. service wpa_supplicant disable
  2. reboot

重启后,你将能够通过蓝牙连接到主板。

现在,你应该能够在你的系统的网络管理器中看到一个新的基于DHCP的Pita网络条目(这取决于你所使用的系统,在大多数GNU/Linux发行版和Android系统上都是自动检测到的):

连接后,你应该能够看到一个新的网络接口bnep0:

你最后可以通过蓝牙ssh到你的PITA板:)

  1. echo "192.168.20.99 pita" >> /etc/hosts
  2. ssh root@pita

[0x03]wlan0和bettercap

重要

为了安装bettercap并下载caplet,rpi需要能够连接到互联网,但我们只是释放了wlan0用于注入,所以现在你要么在迷你usb端口上插入一些以太网适配器,让智能手机处于网络共享模式,要么就是在最开始板子仍连接在WiFi时执行这些步骤。

现在我们可以从电源或智能手机为我们的电路板供电,我们可以通过蓝牙上的SSH连接到它,下一步是安装bettercap,我们将直接在PITA上编译它,这可能需要一段时间但非常简单:

  1. apt install golang libpcap-dev libnetfilter-queue-dev wget build-essential
  2. # you should make this persistent in your .bashrc or .zshrc file
  3. export GOPATH=/root/gocode
  4. mkdir -p $GOPATH
  5. go get github.com/bettercap/bettercap
  6. # wait
  7. # let's install it for everyone to enjoy ^_^
  8. cd /root/gocode/src/github.com/bettercap/bettercap
  9. make
  10. make install
  11. # let's download the pita.cap caplet
  12. cd /usr/share/bettercap/caplets/
  13. wget "https://raw.githubusercontent.com/bettercap/caplets/master/pita.cap"

pita.cap caplet将负责在监控模式下启动wlan0,定期发送deauth数据包,并嗅探WPA2握手包。这是一个基本的例子,许多其他功能你可以在caplets repo中找到,通常在项目wiki中:

  1. # More info about this caplet: https://twitter.com/evilsocket/status/1021367629901115392
  2. set $ {bold}

用BETTERCAP和RASPBERRY PI ZERO W制作迷你WiFi干扰器的更多相关文章

  1. 邪恶改装:TPYBoard制作廉价WIFI干扰器

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 0X01 引言 想不想搞个WIFI干扰器?网上搜集了一下资料,发现用esp8266可以实现简单的干扰功能,包括断网. ...

  2. 使用 ESP8266 制作 WiFi 干扰器 - 无需密码即可使用任何 WiFi

    嘿,朋友,我是 Kedar,你有没有想阻止所有的 WiFi信号?或者只是想从 WiFi 踢某人或邻居 WiFi .那么,本玩法是你等待结束的时刻了.这是为你提供的.仅需 $8 的 DIY Wifi 干 ...

  3. 树莓派Raspberry Pi zero w无线联网实测

    第一次学习树莓派,使用的是Raspberry Pi zero w的型号. 刚开始,就只有一块板子!!!这要怎么开发啊 经过网上查阅资料,发现可以通过WiFi连接PC端实现开发测试 准备材料:一根USB ...

  4. Raspberry Pi 上使用WN725N连接WIFI

    系统版本 lee@Lee-RPi ~ $ uname -ar Linux Lee-RPi + # PREEMPT Thu Dec :: GMT armv6l GNU/Linux 这个版本的系统,已经集 ...

  5. Raspberry Pi 安装配置 Home Assistant

    家庭助理(Home Assistant)是一款基于 Python 的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制.跟踪和控制家里的所有设备, 并自动化控制,能完美的运行在树 ...

  6. 电脑连接树莓派Pi Zero W

    作者:陈拓 chentuo@ms.xab.ac.cn 2018.05.16/2018.06.09 0.  概述 本位介绍两种电脑连接树莓派Pi Zero W的方法: 电脑通过USB以太网连接树莓派Ze ...

  7. (0)开始 Raspberry Pi 项目前需要知道的 10 件事

    https://www.digikey.cn/zh/articles/techzone/2017/feb/10-things-to-know-before-starting-a-raspberry-p ...

  8. 用树莓派Raspberry Pi和Micro:bit做一个自拍器

    在这个项目中,我们将使用Python来构建一个由Micro:bit触发树莓派Raspberry Pi和相机模块的自拍器.这是开始使用硬件和简单文本编程的好方法. 我们将学习: 如何设置Raspberr ...

  9. 树莓派(Raspberry Pi):完美的家用服务器

    出处:http://linux.cn/thread/11884/1/1/ 树莓派(Raspberry Pi):完美的家用服务器 自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和 ...

随机推荐

  1. python 结束练习

    1.文件操作有哪些模式?请简述各模式的作用 r 只读模式 r+ 读写 rb w 只写模式 w+ 写读 wb x 只写模式 x+ 写读 xb a 追加模式 a+ 写读 ab 2.s = '**hello ...

  2. DBUtile

    DBUtils是Python的一个用于实现数据库连接池的模块. 模式: - 每个线程创建一个连接,关闭(默认不关闭),线程终止时,才关闭连接. - 创建共享连接池 应用:只要写原生SQL,用户数据框连 ...

  3. NYOJ 201 作业题

    作业题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过 ...

  4. 【hdoj_1398】SquareCoins(母函数)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1398 此题采用母函数的知识求解,套用母函数模板即可: http://blog.csdn.net/ten_s ...

  5. Javascript备忘录-枚举一个对象的所有属

    for...in 循环 var obj = { age: 18, fname: "Rand ", lname: "McKinnon" }; function s ...

  6. Python3 文件读写r,w,a

    # Author;Tsukasa ''' f = open('yesterday','w') #文件句柄...注意open分为‘r’读模式,‘w’写模式(d会先创建文件或者覆盖文件),‘a’为追加模式 ...

  7. 使用CSS让元素尺寸缩小时保持宽高比例一致

    CSS中有一个属性padding对元素宽度存在依存关系.如果一个元素的 padding属性以百分比形式表示,padding 的大小是以该元素自身宽度为参照的. 若想要元素尺寸变化时,宽高比例不变,可以 ...

  8. Flask实战第60天:帖子分页技术实现

    编辑manage.py,添加测试帖子 @manager.command def create_test_post(): for x in range(1, 100): title = '标题{}'.f ...

  9. RabbitMQ (十五) 镜像集群 + HAProxy1.7.8 负载均衡

    RabbitMQ 默认的集群模式,也就是普通模式,最大的问题就在于存储队列完整数据的节点一旦宕机, 如果是非持久化队列,则消息丢失;如果是持久化队列+持久化消息,则必须等该节点恢复. 所以后来 Rab ...

  10. Xamarin Android项目提示SDK版本太老

    Xamarin Android项目提示SDK版本太老 错误信息:The installed Android SDK is too old.Version 24.3.4 or newer is requ ...