YAOTU INSIGHTS

Flipper Zero BadUSB 实战剖析:Delete32「32 Wants the D」System32 删除脚本的完整技术解析

Flipper Zero BadUSB 实战剖析:Delete32「32 Wants the D」System32 删除脚本的完整技术解析
Flipper Zero BadUSB 实战剖析Delete32「32 Wants the D」System32 删除脚本的完整技术解析【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper本篇文章围绕 Flipper Zero 的 BadUSB 攻击载荷「32 Wants the D」展开该载荷位于 BadUSB/UNC0V3R3D-BadUSB-Collection/Windows_Badusb/Execution/Delete32/ 目录下配套的 readme 将其概括为「打开 PowerShell、删除 System32」两条特性。读完本文你将掌握这类破坏性 BadUSB 脚本在 DuckyScript 层面如何逐步执行、其底层依赖的 takeown / icacls / del 三条 Windows 命令链为什么能摧毁系统、它与仓库中「未武装」对照版本的区别以及面对此类攻击应当采取的防御思路。注意该脚本属于高破坏性、仅用于教育与防御研究的样本任何对他人设备或未授权环境的运行都可能构成违法行为。一、脚本背景与仓库中的存放位置原始 readme 说明了该脚本的出处、用途与基本特性名称32 Wants the D这里的 D 在注释中明确写成D as in DELETE! Deletes System32.作者FalsePhilosopher目标平台Windows脚本头部注释标注tested on 10即测试于 Windows 10分类Prank恶作剧核心行为删除 System32 目录。与该 readme 同目录存放着真正的执行脚本 32_wants_the_D.txt。它的开头用REM注释完整记录了元信息REM Title:32 wants the D REM Author: FalsePhilosopher REM Target: Win, tested on 10 REM Props: Hak5, my friends and memes REM Version: 1.0 REM Category: Prank REM D as in DELETE! Deletes System32.值得注意的是本仓库还在 BadUSB/Bombs/32_wants_the_D.txt 存放了一个「未武装」的衍生版本两者核心差异我们会在第四节单独对比。这份脚本能够出现在本仓库中是因为整个集合被归档收纳于 BadUSB/UNC0V3R3D-BadUSB-Collection/README.md该 README 明确声明This project is for educational purposes only仅用于教育目的并要求使用者在运行任何脚本前先征得授权。二、DuckyScript 主体逐行拆解完整执行流程32_wants_the_D.txt全文不到 20 行全部使用DuckyScript 1.0语法这也是整个 UNC0V3R3D 集合的统一写法。以下是完整脚本及逐行语义DELAY 500 ; 脚本开始后先等待 500ms确保目标主机识别到模拟键盘设备 GUI r ; 按下 WinR打开「运行」对话框 DELAY 500 ; 等待运行框弹出 STRING cmd ; 输入 cmd CTRL-SHIFT ENTER ; 同时按下 CtrlShiftEnter以「管理员身份」启动命令提示符 DELAY 2000 ; 等待 UAC 提示出现约 2 秒 ALT y ; 按下 AltY确认 UAC 提权对话框 DELAY 1500 ; 等待管理员权限的命令行窗口就绪 STRING takeown /f * /r /a /d y icacls * /inheritance:r /grant:r administrators:(F) /t del /f /q * ENTER ; 回车执行整条命令链这条执行链的设计非常典型几乎就是 Flipper Zero 上「提权型破坏脚本」的标准模板可以拆成三个阶段阶段一打开运行框第 1–3 行GUI r是 DuckyScript 中常见的快捷键组合写法对应物理键盘的Win R。之所以通过运行框而不是开始菜单是因为运行框的输入路径最短、最稳定STRING cmd一行即可定位到命令解释器不依赖语言环境下的开始菜单布局。阶段二提权第 4–7 行CTRL-SHIFT ENTER组合键对应「以管理员身份运行」此时 Windows 会弹出UAC用户账户控制确认对话框。由于默认 UAC 设置在管理员账户下仅需确认、无需输入密码因此脚本用ALT y直接命中「是」按钮完成提权。DELAY 2000与DELAY 1500两个等待值就是为 UAC 弹窗与命令行窗口初始化预留的时间——这正是 BadUSB 脚本调试中最常见的变量延迟过短会导致按键落在错误窗口上集合 README 的排错章节也把too short delays列为第一号问题。阶段三执行破坏命令第 8–9 行最终STRING后面跟的是一整条用与串联的 Windows 命令链回车后一次性执行。这条命令链正是脚本的「杀伤核心」下一节单独解析。三、核心破坏链takeown / icacls / del 三条命令的底层原理脚本真正致命的是这条命令链takeown /f * /r /a /d y icacls * /inheritance:r /grant:r administrators:(F) /t del /f /q *它由三个 Windows 原生命令串联而成缺一不可。其设计逻辑是System32 中大量文件默认归 TrustedInstaller 所有、且 ACL 禁止管理员直接删除必须先夺取所有权、再改写 ACL、最后才执行删除。takeown /f * /r /a /d y—— 夺取所有权/f *指定目标为当前目录即 cmd 默认工作目录C:\Windows\System32下的所有文件/r递归处理所有子目录/a把文件所有权赋予本地Administrators 组而非当前用户/d y当当前用户对某个文件缺乏「列出文件夹」权限时自动回答「是」而不是逐个询问。这一步的作用是把 System32 下所有受 TrustedInstaller 保护的文件所有权批量转交给 Administrators 组为后续修改权限扫清障碍。icacls * /inheritance:r /grant:r administrators:(F) /t—— 重置 ACL/inheritance:r移除所有继承的权限条目切断父目录 ACL 的传递/grant:r administrators:(F)以替换方式r表示 replace为 Administrators 组授予完全控制Full control/t递归应用到子目录。经过这一步System32 中每个对象的 ACL 都被替换为「仅 Administrators 完全控制」删除所需的写权限就此到手。del /f /q *—— 强制删除/f强制删除只读文件/q安静模式不逐文件确认*删除当前目录下全部内容。与前面两步之间用顺序执行、忽略前命令成败而非连接意味着即使 takeown/icacls 部分失败删除命令仍会被尝试执行。整条链的执行顺序并非随意编排先解决所有权、再解决权限、最后删除这是 Windows 文件保护机制下删除受保护文件的完整绕过路径。也正因如此readme 中那句This script deletes the system 32 folder. Be careful!绝非夸大——一旦命令链完整执行Windows 将因核心系统文件缺失而无法再次启动。四、仓库内的对照样本Bombs 目录下的「未武装」版本本仓库在 BadUSB/Bombs/32_wants_the_D.txt 保留了该脚本的另一个版本。与 Delete32 目录中的「武装版」相比最关键的差异是执行破坏的那一行被REM注释掉了REM STRING takeown /f * /r /a /d y icacls * /inheritance:r /grant:r administrators:(F) /t del /f /q *也就是说这个版本完整保留了提权流程打开管理员 cmd、确认 UAC但不会真的键入删除命令——它是一份不会造成破坏的演示稿只有取消REM注释后才会变成可用的破坏脚本。该版本还额外附带了大量作者注释直接点明了它的教育属性与法律边界REM THIS WILL DELETE THINGS AND MAKE COMPUTER UNHAPPY REM Uncomment out the string below to arm the script. REM For educational/sysadmin purposes, as a reminder destruction of property IS A CRIME!这两处信息互相印证REM注释在 DuckyScript 中就是执行器会忽略该行的机制因此武装/未武装两种形态可以通过一行注释快速切换这也是安全研究者保存危险 payload 时常用的做法——默认不武装需要时再显式启用。五、脚本的部署与执行方式readme 将使用方式描述为plug and play即插即用结合集合总 README 的安装说明完整流程如下将脚本复制到 Flipper Zero克隆仓库后通过 qFlipper 桌面应用USB 连接或 Flipper 移动应用蓝牙连接进入 SD 卡的badusb目录把32_wants_the_D.txt拖入即可在 Flipper 上定位脚本在 Flipper Zero 主菜单进入BadUSB分类即可看到导入的脚本列表执行按中间按钮开始运行脚本随后将 Flipper 通过 USB 线连接到目标电脑脚本会自动模拟键盘完成上述全部按键序列。集合 README 特别强调绝大多数此类脚本应当在虚拟机上测试it is recommended to use a virtual machine for safety尤其不要在自己的日常电脑上运行不熟悉的脚本。对于本文讨论的 Delete32 这类破坏性脚本唯一安全的测试环境就是隔离的虚拟机快照或专门的实验机。六、面对此类 BadUSB 攻击的防御思路虽然本仓库定位是攻击载荷收集但理解其攻击路径恰恰是构建防御的第一步。针对32_wants_the_D这类脚本可以采取如下防御措施物理层锁屏后再离开电脑、使用带物理开关的 USB 接口、对陌生插入的 USB 设备保持警惕。BadUSB 的根源在于键盘设备不可信任何插入的 USB 都可能被识别为 HID 键盘系统层UAC将 UAC 级别调到最高并要求管理员账户提权时输入密码可以阻断CTRL-SHIFT ENTERALT y这条静默提权路径——脚本里的ALT y依赖的正是仅确认、免密码的默认 UAC 配置策略层通过组策略限制takeown、icacls、del等敏感命令的执行或为 System32 关键目录启用受控文件夹访问Controlled Folder Access阻止未授权进程修改系统目录检测层关注 Windows 事件日志中takeown/icacls对系统目录的批量操作记录以及短时间内出现的大量提权事件。从脚本的DELAY参数也可以反推检测思路整套攻击约耗时 4.5 秒50050020001500ms期间键盘设备的 VID/PID、输入速率与人类操作存在显著差异具备键盘活动审计能力的端点防护可以有效识别这类自动化输入。七、伦理、法律与免责声明这条脚本的 readme 原文包含明确的免责声明I am not responsible for any damage.作者不对任何损失负责。集合总 README 也反复强调项目仅用于教育目的使用前必须取得授权。从技术角度看删除 System32 会让目标电脑无法启动、数据无法恢复属于《刑法》意义上的破坏计算机信息系统行为即使只是恶作剧也可能造成不可挽回的财产损失。因此本文的全部技术拆解仅用于帮助安全研究人员理解 BadUSB 键盘模拟攻击的完整链路帮助防御方识别并拦截同类载荷帮助 Flipper Zero 用户在隔离的虚拟环境中学习 DuckyScript 语法。请始终遵循脚本注释中的那句黄金法则DONT BE A DICK!—— 不要对未经授权的设备运行任何破坏性脚本也不要删除本仓库中任何文件。如果只是学习 DuckyScript 的按键与延时语法建议优先研究 Windows_Badusb 目录下那些无破坏性的 ASCII、记事本演示类脚本它们的语法结构与本文剖析的脚本完全一致却不会带来任何风险。【免费下载链接】FlipperPlayground (and dump) of stuff I make or modify for the Flipper Zero项目地址: https://gitcode.com/GitHub_Trending/fl/Flipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考