satvikgosai/sysnc

GitHub: satvikgosai/sysnc

一款基于 Termux 的 bash 脚本,利用 CVE-2024-31317 Zygote 注入漏洞在 Android 上快速建立系统级 netcat Shell。

Stars: 10 | Forks: 1

# sysnc — 系统级 Shell Netcat 命令发送器 一个封装了 netcat 的小型 bash 脚本,旨在简化远程命令执行和交互式 shell 访问。它还可以通过利用 [zygote injection (CVE-2024-31317)][cve] 在 Android 上设置系统级 (UID 1000) shell。主要为在 Android 设备的 Termux 中运行而设计。 ## 功能特性 - **交互模式** — 自动设置带有彩色提示符的持久 netcat 连接。 - **命令执行** — 向服务器发送单条命令(或完整 pipeline)并关闭连接。 - **Pipe 支持** — 通过 stdin 流式传输脚本并在远程执行。 - **服务器设置** — 一键通过 zygote 注入设置 Android 系统 shell,支持可选的 `rish`/Shizuku 自动化。 - **可配置** — 主机、端口和 UID 均可通过 flag 或环境变量覆盖。 ## 前置条件 - Android 上的 **Termux**([F-Droid 上的 Termux][termux])。 - **netcat-openbsd**(`pkg install netcat-openbsd`)— 安装程序会自动处理此项。 - 对于 `-s/--setup` 流程: - 配置了 `rish` 的 [Shizuku][shizuku],**或者** 一个可用的 `adb shell` 连接,以便手动粘贴这四条设置命令。 - 安全补丁级别仍包含 CVE-2024-31317 的 Android 设备(大多数 2024 年 6 月之前的版本)。 ## 安装说明 ### 快速安装(推荐) ``` curl -fsSL https://raw.githubusercontent.com/satvikgosai/sysnc/main/install.sh | bash ``` ### 手动安装 1. 克隆仓库: git clone https://github.com/satvikgosai/sysnc.git cd sysnc 2. 安装依赖: pkg update -y pkg install -y netcat-openbsd 3. 安装脚本: install -m 755 sysnc "$PREFIX/bin/sysnc" *(如果您不在 Termux 环境中,请将 `sysnc` 复制到 `$PATH` 中的任意目录,并执行 `chmod +x` 赋予执行权限。)* ### 验证 ``` sysnc --version sysnc --help ``` ### 卸载 ``` # 通过 installer curl -fsSL https://raw.githubusercontent.com/satvikgosai/sysnc/main/install.sh | bash -s -- --uninstall # 或者手动 rm "$PREFIX/bin/sysnc" ``` ## 用法 ``` sysnc # Interactive mode sysnc -c "ls -la" # Send a single command sysnc -s # Setup system-shell netcat server (default UID 1000) sysnc -s --uid 1000 # Setup with an explicit UID sysnc -k # Kill the running server sysnc --host 10.0.0.5 --port 4444 -c "id" cat script.sh | sysnc # Pipe a script and close sysnc -h # Help sysnc -v # Version ``` ### 命令行选项 | 选项 | 描述 | | --- | --- | | `-c, --command CMD...` | 向服务器发送命令并关闭连接 | | `-s, --setup` | 通过 Android zygote 注入设置 netcat 服务器 | | `--uid UID` | 用于设置的 UID(必须 **≥ 1000**,默认为 `1000`) | | `-k, --kill` | 终止正在运行的 netcat 服务器 | | `--host HOST` | 服务器主机(默认为 `localhost`) | | `--port PORT` | 服务器端口(默认为 `1234`) | | `-v, --version` | 显示版本号 | | `-h, --help` | 显示帮助信息 | | *(无参数)* | 交互式连接到服务器 | ## 配置 可以通过两种方式覆盖默认值: **环境变量**(适用于 shell/profile 配置): ``` export NC_HOST=10.0.0.5 export NC_PORT=4444 export NC_UID=1000 sysnc -c "id" ``` **CLI flag**(优先级高于环境变量): ``` sysnc --host 10.0.0.5 --port 4444 -c "id" ``` | 变量 | Flag | 默认值 | | --- | --- | --- | | `NC_HOST` | `--host` | `localhost` | | `NC_PORT` | `--port` | `1234` | | `NC_UID` | `--uid` | `1000` | ## Android zygote 注入设置 `-s` 选项利用 [CVE-2024-31317][cve] 以系统 UID 的进程身份启动 netcat 监听器。流程如下: 1. 尽最大努力尝试终止任何之前监听在 `$NC_PORT` 上的服务器。 2. `am force-stop com.android.settings` — 停止“设置”应用。 3. 写入一个精心构造的 `hidden_api_blacklist_exemptions` 值,其中包含一个 zygote-fork argv,用于在配置的端口上派生并启动 `toybox nc -L /system/bin/sh -l`。 4. `am start -a android.settings.SETTINGS` — 重启“设置”应用,该操作会 fork 恶意的 zygote 并继承系统 UID。 5. 暂停两秒钟,让派生过程稳定下来。 6. `settings delete global hidden_api_blacklist_exemptions` — 清理痕迹,使设备不再处于不一致的 hidden-API 状态。 如果 `rish` 不可用,`sysnc -s` 会打印出所有四条命令,以便您手动将它们粘贴到 `adb shell` 中。 ## 故障排除 **`Error: Failed to connect to localhost:1234`** 服务器未运行、已被终止,或者绑定到了其他主机/端口。请运行 `sysnc -s` 进行设置,或使用 `--host`/`--port` 进行覆盖。 **`Error: rish (Shizuku) is not installed or not in PATH`** 请安装 [Shizuku][shizuku] 并配置 `rish`,或者将 `sysnc -s` 打印的四条命令粘贴到 `adb shell` 中。 **`Error: UID must be a number >= 1000`** Android 禁止 zygote-fork 到低于 1000 的 UID。使用 `1000` 可获得系统 shell,或使用 ≥ 10000 的应用 UID 获得沙盒 shell。1001–9999 范围内的 UID 是保留的系统身份(如 radio、bluetooth 等)— 脚本接受这些值,但它们通常不是您想要的。 **交互式 shell 看起来很简陋 / 没有颜色** 远程 shell 需要支持 ANSI 转义序列(`TERM=xterm-256color`)。一些精简版的 `sh` 构建可能无法识别 `PS1` 替换 — 请通过 `sysnc`(交互模式)连接,并在会话开启后运行 `bash`(如果远程可用 `bash` 的话)。 **`nc: invalid option` 或意外的 flag 错误** sysnc 依赖于 OpenBSD-netcat 语义(`-N`, `-w`)。在 macOS 上,自带的 `nc` 有所不同 — 请从 Homebrew 安装 `netcat` 或使用 Termux。在 Termux 中,请使用 `pkg install netcat-openbsd`。 ## 安全性 这是一个进攻性安全(offensive-security)工具。有关披露策略和预期用途,请参阅 [SECURITY.md](SECURITY.md)。 ## 许可证 [MIT](LICENSE)。 ## 免责声明 此工具仅供教育和授权的安全测试目的使用。作者对任何滥用行为不承担责任。用户在对任何非自有设备运行这些命令之前,必须获得明确的许可。 ## 参考 - [Exploiting Android Zygote Injection (CVE-2024-31317)][cve] - [Shizuku][shizuku] - [zygote-injection-toolkit (Python)](https://github.com/Anonymous941/zygote-injection-toolkit)
标签:Android, Bash, DSL, Go语言工具, Shell控制, Termux, 应用安全