技术解读
Ghost Framework 深度解析:把 ADB 这条“合法正门”武装成后渗透通道
项目背景与痛点
Android 后渗透长期被两个极端绑架:要么植入定制 APK(AndroRAT、AhMyth 那一派),靠社会工程让目标点“安装”,一旦落地就要面对应用商店扫描、静态特征查杀、权限弹窗;要么彻底放弃,只做 OSINT 层面的资产测绘。
Ghost 走的是第三条路——它压根不投递任何东西。目标设备只要曾经打开过 USB 调试并授权过 ADB,adbd 守护进程就会一直监听在 5555 端口(或经由 USB 转发)。这是一条系统自带、明文的、权限等价于 shell 用户的远程执行通道。Ghost 做的事情,本质上就是把这门“开发者留下的正门”工程化:自己实现 ADB 协议、封装会话、编排模块,让渗透测试人员能在一条命令里完成设备枚举、命令执行、文件搬运和多媒体采集。
它解决的核心痛点不是“如何攻破”,而是**“在已经获得调试授权的前提下,如何用最短路径、最低痕迹把活干完”**。这个定位非常克制,也非常聪明。
核心技术揭秘
Ghost 是纯 Python 实现,模块体系明显借鉴了 Metasploit/Hatsploit 的思路:控制台负责解析命令,exploit 类模块建立连接,generic 类模块执行具体动作。真正让它区别于“一堆 subprocess 调用 adb 的脚本”的,是它自己实现了 ADB wire protocol。
ADB 的报文结构是固定 24 字节头:command、arg0、arg1、data_length、data_checksum、magic,全部小端;magic 是 command 按位取反,checksum 是负载字节的累加和。Ghost 的核心 ADB 封装类负责握手、收发、校验这一层,然后按服务名分流:host:devices 拿设备列表,host:transport:<serial> 选中目标,随后切入 shell:、exec: 或 sync: 这类设备侧服务。exec: 相比 shell: 的好处是能拿到独立的 stdout/stderr 与退出码,模块做错误判定时更可靠;sync: 则是一套独立的子协议(SEND/RECV/STAT/LIST/DATA/DONE),上传文件时先 STAT 探测 mtime 与 mode,再分块推流,这是它能稳定搬运大文件而不是靠 cat 拼字符串的原因。
认证环节它没有另起炉灶,而是复用本机 ~/.android/adbkey——也就是说,只有当你这台机器此前已经对该设备点过“允许调试”,Ghost 才能接上。这一点决定了它的能力边界,也决定了它的隐蔽性。
数据流的末端值得注意:所有 generic 模块最终都落在 shell 用户(uid 2000)的权限上下文里,调用的是设备自带的 screencap、screenrecord、pm、content、dumpsys 这些工具。Ghost 本身不提供任何提权或内存操作能力,它只是把这些系统工具的输出做了结构化包装。
功能亮点与差异
对比同类项目,Ghost 的差异点集中在三处:
一是零负载。 AhMyth、AndroRAT 这类工具的核心资产是那个 APK,投递成功与否决定成败,特征是静态可查的。Ghost 没有可投递物,流量走的是标准 ADB 协议,从流量侧看与正常的 Android Studio 调试几乎没有形态差异。
二是模块注册式的扩展成本极低。 新增一个能力基本等于“写一个类 + 拼一条 shell 命令 + 解析输出”,目录扫描即注册,不需要改动框架主干。这让它更像一个可用于二次开发的基座,而非成品武器。
三是把协议层做成了可复用资产。 一旦有了自己的 ADB 客户端,批量设备管理、网络段 5555 端口探测、设备农场巡检这些“非攻击性”需求也能直接复用,这是纯脚本方案给不了的。
应用场景与落地建议
最贴合的场景是红队的内网横向:拿到一台开发机或 CI 主机后,扫描 5555 端口,用已有的 adbkey 接管测试机、车机、智能电视、开发板。这类设备常年开着调试口,且往往没人清理授权记录。
其次是授权范围内的企业资产盘点与取证:设备农场里几十台机器,批量抓设备信息、截图、拉日志,比手工点 Android Studio 高效得多。
落地时有几个坑必须踩明白:ADB 授权是按主机密钥绑定的,换机器就得重新点授权;设备重启后网络 ADB 常常回到只监听 USB 的状态;ADB 流量本身不加密,任何中间设备都能看到明文命令与文件内容;shell 用户的权限天花板决定了它读不到 /data/data 下的私有数据,也别指望 content query 能查短信。合规上,没有书面授权就不要碰任何 5555 端口——它和“扫描一个 HTTP 服务”在法律定性上不是一回事。
综合评价
优点: 工程上足够克制,没有为了炫技堆砌无谓的抽象;纯 Python、代码量可控,读一遍就能改;模块化设计让二次开发的门槛低到令人愉快;把 ADB 协议吃透这件事本身,就比市面上大多数“调 subprocess”的同类工具有价值。
缺点: 能力上限被“必须已授权”这条硬约束锁死,现实攻击面远比宣传语暗示的窄;框架层的错误处理与并发支持偏粗糙,批量操作时容易卡在单会话上;文档单薄,很多模块的实际行为得读源码才知道;维护节奏依赖作者个人精力,长期可用性存在不确定性。
一句话总结:Ghost 不是后门,也不假装自己是后门。它是一个把 ADB 这扇合法正门打磨得更顺手的工具箱——用对了场景,它是红队手里性价比极高的一把钥匙;用错了场景,它连门都进不去。
评论