■asroot2 その1
819
これのown*.cを書き換えるのはどうだろ。
http://code.google.com/p/flashrec/source/browse/#svn/trunk/android-root
825
>>819
asrootもasroot2も、Android1.5時代の脆弱性で、すでに修正されてるっぽい
asroot2に関してはHTC Hero用のを落としてきたからわからんけど
831
>>825
ソースからコンパイルしないとダメだよ (特にカーネル部分は)。
ソースのダウンロードはここから。
svn checkout http://flashrec.googlecode.com/svn/trunk/ flashrec
RageAgainstTheCageは権限迂回でroot取ってるだけだからカーネル空間へは入れないはず。
これがダメなら誰も試していない別の脆弱性を探すしかないかも。
836
>>831
ソース読んで確認した。このパッチあてられてないからasroot2は動くはず。
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ad3960243e55320d74195fb85c975e0a8cc4466c
839
>>836 の件、カーネルバージョンに合わせた構造体のメンバの調整が必要なので、
include/linux/pipe_fs_i.h と突合せ (wait.hとlist.hとspinlock_types.hとspinlock_types_up.hにも依存)したけども、
2620と構造変わってないっぽい。
841
asroot2をIS01のカーネルヘッダを使ってコンパイルしてみたけど、
$ ./asroot2_is01 /system/bin/sh
[+] Using newer pipe_inode_info layout
Opening: /proc/2656/fd/3
ってなって止まったまま 何が悪いんだろ?
842
>>840
C言語とバイナリの知識が必要になるね。
>>841
レース・コンディションが起きるまで待つ必要がある。けど、あまり長くかかるなら、うまくいってないかも。
845
>>842
3分くらい放置してみたけどダメだった
846
>>845
うーむ…ちょっと調べてみる。
847
誰か同じようにテストしてくれると助かる
848
>>845-846
exploit理解。
NULL付近にデータ突っ込んで、NULL参照されたときにそれが読み出されるようになってる。
何故突っ込めるかは理解してないけど、クラッシュしてないからそこの問題じゃないはず。
credsの構造体が異なるっぽい。own2.cのincludeのところに
#include <linux/cred.h>
を追加してcreds-> を current->cred-> に置き換えると良い予感がするが、
ちゃんと読んでないのでダメかも。
849
>>848
get_rootまるまる置き換える必要あるか。こんな感じで。
int get_root(struct pipe_inode_info *pipe, struct pipe_buffer *buf)
{
current->cred->uid = current->cred->euid = 0;
current->cred->gid = current->cred->egid = 0;
got_root = 1;
return -ENOSYS;
}
850
>>848
attribute指定がNULLに配置するためのカギっぽい
x86ならmmap()とか使ったりする必要があるけどARMならこれでいいっぽい
構造体の件を試したいけど、時間がない…
■asroot2 その2
982
昔調査したasroot2について、再度調査してみた。
前は使えないと判断されたけど、再度試したところHTC Hero用のasroot2がIS01でも使えることが判明した。
ログはこちら。
http://codepad.org/Mj1UlYex
987
>>982
Pipeのアレ、前にカーネル逆アセして確認したけど対策されて無さそうだったので
動かないという報告が不思議だった。
これってカーネル空間で任意のコード実行だから、module_disable無効化できると思う。
01.00.10でも動くといいね。
988
>>987
insmod+ -f
989
>>988
言葉足らずでした。
goroh_kun氏の見つけた穴が塞がれるとinit.rcでmodule_disableが有効化されて
insmodが出来なくなる。
その場合に備えて別の方法があれば良いなと。
カーネル空間のメモリ書き換えが出来れば良いので、これが代替策として使えるかと。
990
NULLにデータをマップする必要があるので、別の方法でrootに権限昇格して、mmap_min_addrを0にする必要がある。
あと、何回かやらないと成功しない。
991
どうやら誤報っぽいです。
au公式のカーネルに戻したら、HTC Heroのasroot2が動かなくなりました。
カーネルを逆アセンブルして調査する必要がありそうです。
993
>>991 の件ですが、調査した結果、原因が分かりました。
pipe関連のexploitは、/proc/<pid>/fd以下にあるパイプへのリンクを参照します。
アクセスする際、proc_fd_access_allowed()で権限があるかどうかチェックされます。
チェックにはptrace_may_access()が使用されていて、これがLSMに引っかかり、アクセスができません。
別のアプローチがあるかもしれませんが、それについては調査中です。
しかし、arege_master氏のinsmod+があるので、これ以上の調査は不要かもしれません。
18
前スレ989さん
insmod+は-fでmodules_disabledをバイパスします。
goroh_kunさんが一番でしたので、後続である私にできることをと考え、
プランBとして掘削を継続してました。本当は、skype対応のアップデート
ぐらいまで引っ張りたかったのですけども。
そんな訳で、少なくともskype対応までには私の穴も塞がれそうですので、
プランCの準備もしないとならないかな。
現状、先人のハッカーさん方へ礼儀を欠いた状態でして、Acknowledgements
も含めたソースを後日公開します。
しかし、穴塞ぎの対応がこうも早いとは…掘削作業も共同してやる必要が
あるかもしれません。
NVさんとは密談したいかもw
21
>>18
どこかでチャットでもやりますか?
最終更新:2010年12月17日 22:16