2010年9月7日 星期二

[Android] 關於美國 Blackhat 和 Defcon 的幾個講題

其實說有很多講題,我也只看完兩個而已(遮臉),也剛好覺得有些東西應該隨手記一下以免忘記。




目前看完的是「This is not the droid you're looking for...」和「These aren't the permissions you're looking for...」,都是和Android有關的講題,個人認為後者那篇比較有趣,大概內容在後面會簡述。

先從「This is not the droid you're looking for...」講起好了。

這篇在討論的是 Kernel Rootikit on Android,不過內容和附上的 source code 都是跟原先 Linux 差距不大的作法,利用 System.map 內存的 sys_call_table,再將 sys_call_table 中的 sys_write、sys_read、sys_open、sys_close 替換成 Rootkit 內準備好的,這些行為其實過去的 Rootkit 也蠻常做的,像是 Sebek 也是有這個行為,然後他也順便把這個 Rootkit 從 module list 中拿出來,這個 Sebek 也可以找得到類似行為喔,以下節自 Sebek 原始碼:

static void hide_module(void){

  lock_kernel();

  __this_module.list.prev->next = __this_module.list.next;
  __this_module.list.next->prev = __this_module.list.prev;
  __this_module.list.next = LIST_POISON1;
  __this_module.list.prev = LIST_POISON2;

  unlock_kernel();

}

反正作法是一樣的,其實 code 也是一樣的,比較有趣的內容並不是這個 Rootkit 的技術細節,而是 white paper 上面寫的其他東西,像是 /dev/smd27 可以拿到 GPS 位置,還有透過 /dev/smd0 關掉 GSM 功能、打電話,然後還有幾個 sqlite3 的 database,基本上沒去聽 Talk,這是我從 paper 內看到的東西。

再來是「These aren't the permissions you're looking for...」,這篇我只有投影片,不過對這篇的興趣明顯大過上一篇! XD

一開始的介紹我就不多說了,Activity、Intent、BroadcastReceiver、Service、Permission Label、Android Sandbox 這應該都是基本的觀念,有趣的東西在後面啊!!!!!!

不過我還是要嘴砲一下,說實在的 Permission Label 這種東西雖然可以限制 Application 行為,可是一般使用者真的搞得懂這些 Application 需要哪些 Permissions 嗎?如果我說一個 Local Game 必須上網是因為要檢查更新,那麼是不是可以被允許的事情呢?

好了,嘴砲完了,繼續。

第一個有趣的事情,沒有要求任何權限的程式不需要按確認就會安裝,但是如果你想要 Reboot 是需要 "SignatureOrSystem" 這個 protectionLevel,一般而言我們不會有,但是你還是可以幹些討人厭的事情,像是一直用 Toast 在畫面上產生一些討人厭的訊息,讓使用者覺得很煩。

再者,RECEIVE_BOOT_COMPLETED 這個可以讓你開機執行的權限,實際上是不會 check 的,我在 HTC Magic with Android 1.5 也測試過了,只要 implement 一個收這個事件的 BroadcastReceiver 就可以達到開機執行。

安裝之後自動執行呢?目前沒有提供類似功能,也沒有這種 permission,可是內文有提到 trick,利用 Google Analytics 可以達成類似功能,不過這個我還沒有測試,所以我無法確認。

當你想送資訊出去,卻沒有宣告 INTERNET permission 的時候,請用 Intent 開啟 browser,利用 URL 夾 GET 送東西出去吧,裡面還提到了一些判斷螢幕是否打開的方式,利用 PowerManager!當然也可以利用 browser 下載檔案,可是 Notification 列卻沒辦法清除喔,下載的所有東西都會保持在畫面上!要刪除下載的東西也需要要求 WRITE_EXTERNAL_STORAGE permission,不過在 Android 1.5 上不需要這個 permission。

後面開始提到 READ_LOGS,因為 logcat 常常漏出一些 private 的東西,雖然說說明裡面有告訴你「These can contain slightly private information about what is happening on the device, but should never contain the user's private information.」可是 crafted 的 UI 和 Application 很可能不小心透露出很多隱私資訊。

最後提到 root 手機!

這部份我想大家看看 allenown 大大的 blog: Android Local Root Exploit 和 shakalaca 大大的 blog: 夏日 Android 小品 – 按一下 root 手機: UniversalAndroot 會比小弟在這裡亂屁有用!

有空消化完其他東西再來屁吧!

沒有留言:

張貼留言