显示标签为“hack”的博文。显示所有博文
显示标签为“hack”的博文。显示所有博文

2016年7月13日星期三

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

钻了个debuggable的漏洞,取得了system用户,转而为如何升为root而操心。

Android 5.1.1, Linux 3.10.49
发现了一个原装的系统应用,居然可以被调试,反正出现在Android Studio的可调式进程清单里,看来是DEBUG版本就那样稀里糊涂的烧到主板里了。 先查查看用户身份:
pm dump com.example.app
里面能够看到用户身份是"system"。 本来一个run-as就可以转换成这个身份了的,
run-as com.example.app
但是报错说没有这个package,原因不明。好几个可以调试的app里,有的能够run-as,有的不行。
那就转向jdb的路子:
$ 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:
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:
[从这里下载](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。
id命令的结果:
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

2016年7月12日星期二

hacking android-- got "system" user, then how to get root?

the result of command "id":

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


continue study...

Any help will be appreciate.

2016年6月20日星期一

试了一个获取Android系统权限的工具Kingroot,运气不错,取得root了。

看起来做得很精致干净,谢谢!试验的机子是一款没有名气的牌子。2016/07/14补:后来发现有个更干净更管用的工具,名字多了个o,叫KingoRoot。

kingroot 这个公司看来搜罗了很多Android的漏洞,挨个试着破解,运气好的时候,就不用启动就成功了。也有人运气背的,不停的崩溃重启动。这东西谁能保证呢。
安装:显然不能从Google 的Play store里来,只能手动到那个网站下载app,我是下载手机版的,然后adb install ......apk。
然后运行KingRoot里的Root Auth功能,需要联网,它似乎会查询代码库,然后自动的进展,过几分钟,他说好了。
这好了的证据,一个是,我发现这个app无法像一般app那样拖拽到垃圾箱卸载了,app信息里的卸载按钮压根不存在。
然后我adb shell进去一看,/system/xbin/su新生成了!执行su一下就会有Kingroot画面弹出来问允不允许,就和SuperSU那个差不多。
然后随便干什么都行了,只是有一点, /system目录依然是mount成只读的,所以大概需要重新mount一下,我还没试,想来和以往的经验没什么不同。不管怎样,至少id成了0了,/data/data下可以乱搞了,各种不顺眼的process都可以kill了。
追加,试了,可以把/system搞成可写的了。方法google一下到处都有,摘要:
#   mount -o rw,remount /system



2016/06/28:
这个工具毕竟是特殊工具,用时要做好遇难的思想准备。KingRoot有Windows版(通过ADB连接手机进行破解),我在虚拟机里用了(感谢VirtualBox可以安装一个为了ADB的USB扩展: http://forum.xda-developers.com/showthread.php?t=570452),
KingRoot最终报错,但实际上/system/xbin/*su* 已经生成了,其实已经被root了,但是一执行就会爆“no ...ui ...”之类错误,这是手动把KingRoot的apk安装上去(不用执行)就可以了,他就会和su配成对来弹出一个对话框确认来自adb的root请求。
进一步发现,这个工具很可能受到腾讯安全公司的资助,因为它内部包含了Tencent的ADB Server和一个QQ关联的东西,通过工具看到这个ADB Server会往腾讯安全公司发数据。可能存在后门。
手机版的就没确认又无后门。

总之,用这个工具,要在虚拟机里用,并且手机要禁止网络,成功之后在把KingRoot的su换成标准的SuperSU之类的(可笑的是,这东西也不是开源的)。
2016/07/14补:后来发现有个更干净更管用的工具,名字多了个o,叫KingoRoot。这个工具没在Windows上安装什么乱七八糟的(安装时不要同意赞助软件就行了),运行时我观察了,没有起额外的进程,出了自带的adb。也顺利的root成功了,而且手机上安装的东西没有别的功能,只是管理root同意名单,叫做SuperUser,可能是基于一个开源的SuperUser改的。