V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GeekHub
hyln9
V2EX  ›  Android

搞了一个基于 dirtycow 的 Android 的 root 工具

  •  1
     
  •   hyln9 · 2017-01-21 05:18:34 +08:00 · 12163 次点击
    这是一个创建于 1348 天前的主题,其中的信息可能已经有所发展或是发生改变。
    打个广告,这个带 SELinux 的 bypass ,大家可以帮忙测试一下吗?非常感谢~
    地址: https://github.com/hyln9/VIKIROOT
    63 条回复    2017-06-22 10:20:45 +08:00
    sxd
        1
    sxd   2017-01-21 08:47:12 +08:00   ❤️ 2
    我没救了 第一眼就断句错误
    KNOX
        2
    KNOX   2017-01-21 08:48:49 +08:00   ❤️ 1
    @sxd 搞了个基是吧
    imn1
        3
    imn1   2017-01-21 09:03:27 +08:00   ❤️ 1
    @KNOX
    不对,是——
    干 dirtycow 的 Android 的 root 工具
    2333
    leafleave
        4
    leafleave   2017-01-21 09:08:40 +08:00 via Android   ❤️ 1
    支持支持
    Phant0m
        5
    Phant0m   2017-01-21 09:37:09 +08:00 via iPhone   ❤️ 1
    搞了一个基
    ragnaroks
        6
    ragnaroks   2017-01-21 09:48:12 +08:00   ❤️ 1
    搞了一个基+1,而且脑海中自然浮现 van...
    postlive
        7
    postlive   2017-01-21 09:53:12 +08:00 via Android   ❤️ 1
    楼主 有编译好的吗 我测试一下
    [email protected] 谢谢了
    hyln9
        8
    hyln9   2017-01-21 10:07:51 +08:00
    @postlive github 的 release 里面有编译好的版本。
    这个 build 需要在原生的 aarch64 的 debian 下面,确实麻烦了一点。
    hyln9
        9
    hyln9   2017-01-21 10:14:57 +08:00
    @sxd 555
    FindHao
        10
    FindHao   2017-01-21 10:19:15 +08:00   ❤️ 1
    https://github.com/timwr/CVE-2016-5195/issues/9
    追这个 issue 追了好久,不知道后续如何。看下你的思路。
    hyln9
        11
    hyln9   2017-01-21 10:39:19 +08:00
    @FindHao
    那个并不是完整的 root 方案,最后应该还是没有解决 SELinux 的问题。
    我采用了 vDSO 注入 init 进程一个后门(就是那个 payload.s )的手段,绕开了 SELinux 并直接获得 root shell ,没有动文件系统,也就是说原理是完全不同的。
    librae
        12
    librae   2017-01-21 11:14:14 +08:00
    没救的 +1
    @sxd
    tewilove
        13
    tewilove   2017-01-21 11:24:13 +08:00 via iPhone
    用户态 bypass 个毛线的 selinux 啊,运气好碰到能让你动的机器而已
    hyln9
        14
    hyln9   2017-01-21 11:38:31 +08:00
    @tewilove 我注入了 init 进程,可以 disable selinux ,不然 SuperSU 也就不复存在了。也许"bypass"这个词有歧义,但是在与此相关的项目中均使用这个含义,我也就随了。
    postlive
        15
    postlive   2017-01-21 12:00:53 +08:00 via Android
    @hyln9 感谢大神 晚上回家再测试
    langmoe
        16
    langmoe   2017-01-21 12:08:54 +08:00
    厉害了,码一个
    postlive
        17
    postlive   2017-01-21 16:10:50 +08:00
    小白请教 win10 下用的 adb nc
    是在 / data / local / tmp 下直接运行 ./dirtycows 手机 IP 1234

    是这样吗
    bdbai
        18
    bdbai   2017-01-21 17:29:40 +08:00 via iPhone
    感谢楼主,我在天猫魔盒的 云 OS 上跑起来了。只是 reverse shell 要怎么用?
    hyln9
        19
    hyln9   2017-01-21 17:49:56 +08:00
    @postlive 直接 ./exploit port 不用 nc ,我内置了终端,当然也可以./exploit ip port 指定 nc 的地址。不过你最好是 Android 6.0.1 因为别的版本我可能还需要补充一些数据。中间有一步“ wake up ”是指从休眠状态唤醒一下你的手机屏幕,一般这样会触发漏洞。
    postlive
        20
    postlive   2017-01-21 17:50:57 +08:00 via Android
    @hyln9 感谢 晚上回家测试
    hyln9
        21
    hyln9   2017-01-21 17:55:11 +08:00
    @bdbai 你已经得到 shell 了吗?就是提示“ enjoy ”。如果是的话,那就是 root shell ,还具有 init 的 context ,然后你想干嘛干嘛咯,比如 remount 分区成 rw 然后手动安装 SuperSU 。不过这些功能还没有去实现自动化。
    bdbai
        22
    bdbai   2017-01-21 18:07:28 +08:00 via iPhone
    @hyln9 在 "Waiting for reverse connect shell" 阶段然后要怎么做?
    我试着用 telnet 连 localhost:8080 (之前指定了 8080 )然后这里出现 "enjoy",但两边不管输入什么都只会同时回显。姿势不对?
    hyln9
        23
    hyln9   2017-01-21 18:55:43 +08:00
    @bdbai 有两种可能
    1 、 Waiting for reverse connect shell 的时候你需要让手机做休眠唤醒的操作。
    2 、你的系统已经打了 2016-11-06 的补丁。
    hyln9
        24
    hyln9   2017-01-21 18:57:56 +08:00
    @bdbai
    还有一种可能性,就是 /data/local/tmp/.x 没有删掉。
    另外不要用 telnet 去连接,要等漏洞触发的自动连接。
    Lentin
        25
    Lentin   2017-01-21 19:15:36 +08:00
    nexus 5 运行不能……没有编译 arm 的版本?
    1|[email protected]:/ $ /data/local/tmp/exploit 1234
    /system/bin/sh: /data/local/tmp/exploit: not executable: 64-bit ELF file
    Lentin
        26
    Lentin   2017-01-21 19:21:14 +08:00
    Lentin
        27
    Lentin   2017-01-21 19:25:43 +08:00
    好吧没看到 for 64-bit
    kamen
        28
    kamen   2017-01-21 20:15:15 +08:00 via Android
    dirtycow-capable 的具体条件是啥?
    bdbai
        29
    bdbai   2017-01-21 20:17:51 +08:00
    @hyln9 休眠唤醒了几次,似乎没有用。我记得去年年底系统更新了一次,有可能修复了 dirtycow 。
    app13
        30
    app13   2017-01-21 20:22:32 +08:00
    不知道影不影响三棒的 knox...
    woyaojizhu8
        31
    woyaojizhu8   2017-01-21 21:11:05 +08:00
    请问可否与 phh 的 superuser 集成?
    tyeken8
        32
    tyeken8   2017-01-21 22:00:53 +08:00
    Xperia X Performance
    Android 6.0.1
    Security Patch Sept. 1 2016
    Kernel version 3.18.20-perf-g776b104-02162-g4156bdb #1 SMP PREEMPT Fri Oct 7 19:01:11 2016 aarch64

    [email protected]:/data/local/tmp $ ./exploit 12345

    >>> Reverse shell target: 127.0.0.1:12345

    >>> Exploit process starts.

    >>> Inject: patch 1/2

    >>> Inject: patch 2/2

    >>> Please wake up you phone now.

    >>> Waiting for reverse connect shell.

    然后就卡住了
    请问可能的原因是什么,有什么解决方法?
    (记得我之前用另外的 exploit 成功拿到了 root shell ,但是没有 bypass selinux
    woyaojizhu8
        33
    woyaojizhu8   2017-01-21 22:13:46 +08:00
    在三星 note5 上试了下,运行之后手机无反应,看来是已经修复这个漏洞了
    woyaojizhu8
        34
    woyaojizhu8   2017-01-21 22:14:52 +08:00
    @tyeken8 我也是卡在这里了,这使我以为这个漏洞已经失效了
    postlive
        35
    postlive   2017-01-21 22:57:07 +08:00
    Internal error: insufficient place for payload.

    提示这个 什么原因
    woyaojizhu8
        36
    woyaojizhu8   2017-01-21 23:05:10 +08:00
    @hyln9 我的华为手机也是卡在 Waiting for reverse connect shell ,它的安卓补丁版本是 9 月的,应该还没修复这个漏洞;多次熄屏再唤醒也无效,这会是什么原因 ?
    tyeken8
        37
    tyeken8   2017-01-21 23:20:27 +08:00
    @postlive 重启手机试试
    postlive
        38
    postlive   2017-01-21 23:57:32 +08:00
    在 ADB 下执行 ./dirtycows 1234 之后就卡在 >>> Waiting for reverse connect shell. 这不动 超过 5 分钟没反应 屏幕设置的是长亮 没有锁屏

    重新打开一个 Telnet 连接 手机 IP 1234 之后 就出现>>> Enjoy! 然后按什么都是没反应 没提示的状态

    hyln9
        39
    hyln9   2017-01-22 03:47:06 +08:00
    @postlive
    ” Internal error: insufficient place for payload. “是因为没有成功触发所以没有清除掉后门,目前我还没有处理这个情况,你只好重启来解决这个问题了。
    另外,特别需要的那一步不是使手机保持唤醒,而是要有唤醒的动作,也即从休眠状态到唤醒的一下。
    我正在研究 Android 的源码寻找别的触发机会。
    hyln9
        40
    hyln9   2017-01-22 03:55:12 +08:00
    @postlive 还有就是 /data/local/tmp/.x 必须删除(这是隐藏文件要 ls -A 看得到)
    hyln9
        41
    hyln9   2017-01-22 03:57:19 +08:00
    @tyeken8 请问你多次熄屏再唤醒了吗?
    hyln9
        42
    hyln9   2017-01-22 05:02:34 +08:00
    @tyeken8
    首先你可以尝试一下我发现的新的触发手段:打开系统自带的闹钟 /时钟 APP
    其次请检查 /data/local/tmp/.x 是否存在,有则删之(注意是个隐藏文件),保证在“ Waiting for reverse connect shell.”时那个文件是不存在的。
    最后由于我现在忽略的注入后的检查,因此有可能并没有注入成功,这个就比较悲剧了,我打算加上 log ,方便大家调试。
    我测试过的两台手机全是国产的,分别是乐 max2 和中兴 blade a2 。
    hyln9
        43
    hyln9   2017-01-22 05:04:38 +08:00
    @woyaojizhu8 这是由于漏洞没有触发或者根本没有注入成功,对于前者,我上面有一些补充,对于后者,我之后会加入日志方便调试。
    hyln9
        44
    hyln9   2017-01-22 06:14:03 +08:00   ❤️ 1
    @woyaojizhu8 @tyeken8 @postlive @bdbai
    十分抱歉,刚刚 v0.1.1 修复了一个 bug 有可能会导致你们的问题出现。
    SuperFashi
        45
    SuperFashi   2017-01-22 10:55:52 +08:00
    果然不行了,看了眼内核版本是 Dec 19 的。
    tyeken8
        46
    tyeken8   2017-01-22 15:11:13 +08:00
    @hyln9 Sry, still no luck.

    另外那个大括号笑死了((
    makendk
        47
    makendk   2017-01-22 15:58:06 +08:00
    不行啊,卡到 >>> Waiting for reverse connect shell. 这里没反应
    严格按照你说的步骤操作的,几种触发方式都试过了, V0.1.1 版本
    bdbai
        48
    bdbai   2017-01-22 16:02:21 +08:00 via Android   ❤️ 1
    @hyln9 又试了一下,休眠唤醒多次并没有成功,电视盒子上也没有自带闹钟应用 :(
    总之很感谢你,请收下铜币。
    hyln9
        49
    hyln9   2017-01-22 21:09:34 +08:00
    @kamen 2016-11-06 安全补丁之前
    hyln9
        50
    hyln9   2017-01-22 21:15:11 +08:00
    @bdbai
    @tyeken8
    @makendk

    我赶紧补足了一些 debug 功能,如果可以的话,请下载 dbg 版本,将运行之后生成的“ vdso_orig.so ”和“ vdso_patched.so ”发送至我的邮箱: hyln9$live.cn ($换成 @),谢谢!

    其中不包含任何个人信息,只包含 kernel 的一部分纯代码的 dump 。
    hyln9
        51
    hyln9   2017-01-22 21:17:04 +08:00
    @bdbai
    @tyeken8
    @makendk

    另外明早要坐火车,可能会无法及时回复。
    kamen
        52
    kamen   2017-01-22 21:56:51 +08:00 via Android
    @hyln9 谢谢
    makendk
        53
    makendk   2017-01-22 22:37:08 +08:00
    生成的 vdso_orig.sovdso_patched.so 在哪
    /data/local/tmp/目录下看不到 DBG 版本的
    hyln9
        54
    hyln9   2017-01-22 22:43:34 +08:00
    @makendk github 上我在 v0.1.1 里面加了一个 dbg 版本。
    makendk
        55
    makendk   2017-01-22 22:45:14 +08:00
    就是 dbg 版的 看不到.so 文件
    tyeken8
        56
    tyeken8   2017-01-22 23:17:54 +08:00
    @hyln9
    $ diff <(hexdump -C vdso_orig.so) <(hexdump -C vdso_patched.so)

    52c52
    < 00000330 1f 00 00 71 04 18 41 7a 81 02 00 54 e2 03 1e aa |...q..Az...T....|
    ---
    > 00000330 f0 03 1e aa ea 02 00 94 81 02 00 54 e2 03 1e aa |...........T....|
    171a172,190
    > 00000ed0 00 00 00 00 00 00 00 00 00 00 00 00 e0 07 bf a9 |................|
    > 00000ee0 c8 15 80 d2 01 00 00 d4 a0 06 00 35 88 15 80 d2 |...........5....|
    > 00000ef0 01 00 00 d4 1f 04 00 71 21 06 00 54 00 00 80 52 |.......q!..T...R|
    > 00000f00 a1 06 00 10 02 18 80 52 03 38 80 52 08 07 80 d2 |.......R.8.R....|
    > 00000f10 01 00 00 d4 1f 04 40 b1 28 05 00 54 20 02 80 d2 |[email protected](..T ...|
    > 00000f20 01 00 80 d2 02 00 80 d2 03 00 80 d2 04 00 80 d2 |................|
    > 00000f30 88 1b 80 d2 01 00 00 d4 20 04 00 35 40 00 80 d2 |........ [email protected]|
    > 00000f40 21 00 80 d2 02 00 80 d2 c8 18 80 d2 01 00 00 d4 |!...............|
    > 00000f50 e3 03 00 aa a1 04 00 10 02 02 80 d2 68 19 80 d2 |............h...|
    > 00000f60 01 00 00 d4 60 02 00 35 e0 03 03 aa 02 00 80 d2 |....`..5........|
    > 00000f70 01 00 80 d2 08 03 80 d2 01 00 00 d4 21 00 80 d2 |............!...|
    > 00000f80 08 03 80 d2 01 00 00 d4 41 00 80 d2 08 03 80 d2 |........A.......|
    > 00000f90 01 00 00 d4 e0 02 00 10 02 00 80 d2 e0 03 00 f9 |................|
    > 00000fa0 e2 07 00 f9 e1 03 00 91 a8 1b 80 d2 01 00 00 d4 |................|
    > 00000fb0 00 00 80 d2 a8 0b 80 d2 01 00 00 d4 e0 07 c1 a8 |................|
    > 00000fc0 f1 03 1e aa fe 03 10 aa 1f 00 00 71 04 18 41 7a |...........q..Az|
    > 00000fd0 20 02 1f d6 2f 64 61 74 61 2f 6c 6f 63 61 6c 2f | .../data/local/|
    > 00000fe0 74 6d 70 2f 2e 78 00 00 02 00 04 d2 7f 00 00 01 |tmp/.x..........|
    > 00000ff0 2f 73 79 73 74 65 6d 2f 62 69 6e 2f 73 68 00 00 |/system/bin/sh..|

    (完整 dump 已发到邮箱)
    bdbai
        57
    bdbai   2017-01-23 13:30:03 +08:00
    @hyln9 抱歉回复晚了。邮件已发,请查收。
    makendk
        58
    makendk   2017-01-24 15:35:18 +08:00
    dump 发到邮箱了
    zke1e
        59
    zke1e   2017-01-24 15:54:33 +08:00
    很厉害啊,我也是做 android 安全的,一起交流下。
    Damn
        60
    Damn   2017-01-25 04:11:58 +08:00
    Huawei VNS-DL00
    Android 6.0
    Linux localhost 3.10.90-g6a1c5f3 #1 SMP PREEMPT Tue Sep 13 07:02:46 CST 2016 aarch64

    [email protected]:/data/local/tmp/exploit 12345

    >>> Reverse shell target: 127.0.0.1:12345

    >>> Exploit process starts.

    >>> Inject: patch 1/2

    >>> Inject: patch 2/2

    >>> Please wake up you phone now.

    >>> Waiting for reverse connect shell.
    postlive
        61
    postlive   2017-01-26 10:47:32 +08:00 via Android
    楼主怎么不高新了???
    lq875502530
        62
    lq875502530   2017-04-14 17:34:36 +08:00
    怎么用啊我完全不懂
    mayl8822
        63
    mayl8822   2017-06-22 10:20:45 +08:00
    楼主在哪个平台上编译的啊, 我用 ndk 编译出现这个
    ./payload.s: Error: unaligned opcodes detected in executable segment
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3682 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:02 · PVG 12:02 · LAX 21:02 · JFK 00:02
    ♥ Do have faith in what you're doing.