VIKIROOT
这是针对64位Android 6.0.1 Marshmallow(可能也适用于7.0?)的CVE-2016-5195 PoC,同时也是一个通用且稳定的临时root工具。它不需要SUID可执行文件或任何文件系统更改。
功能特性
- SELinux绕过(详见下文)。
- 纯内存操作:不修改文件系统,也不需要特殊可执行文件。
- 稳定性:不影响设备的稳定性。
- 可扩展性:易于添加新的内核和/或新设备。
- 可逆性:root shell结束后后门会自动清除,使用后无需重启。
注意
我所说的“SELinux绕过”是指即使SELinux处于强制模式,payload也将在init域中运行,但仍需对sepolicy打补丁才能使init域不受限制。通常这意味着需要修改后的boot镜像。
前提条件
- 艾萨克·阿西莫夫的《我,机器人》。
- 支持“dirtycow”漏洞的设备。
- 打了补丁的sepolicy。
构建
预编译的二进制文件可在发布页面获取。否则,只需将NDK独立工具链添加到PATH中,然后运行make即可。
使用
你可以通过adb shell运行它(将其放置于/data/local/tmp),然后在内置终端或远程终端服务器(如nc)中获得root shell。具体细节请在不带任何参数的情况下运行它。
故障排除
- 首先请仔细阅读上述“注意”部分。
- “有效载荷空间不足”或“未知的内核”:需要重启。
- “等待反向连接shell”:请唤醒你的设备,打开时钟/闹钟应用或切换蓝牙开关以触发后门。
- 仍然没有成功:请运行“dbg”版本,并将生成的文件通过电子邮件发送给我。这些文件仅包含部分内核的dump,不包含任何个人信息。
致谢
- scumjr 提供了vDSO修补方法。
- Tzul 帮助我调试了sepolicy问题。
- RenaKunisaki 使其能够在bionic上工作。
待办事项
- 丰富内核数据库,增加对x86等架构的支持。
- 在Android 7 Nougat上进行测试(欢迎帮助!)。