How to cheat jb detector and detect cheating

這個月的cocoaheads講了一個比較冷僻的題目,這個題目如果平常沒有在做jb防範應該是不會注意到的。我也是剛好前陣子有這個需求,才去找了一下資料,看了一下stackoverflow,發現大部分都是檢查檔案架構,還有url schema呼叫看看有沒有cydia。然後發現xCon這個tweak,看了幾篇文章後,才有後面這一連串檢查,這一串其實是個冤冤相報何時了的概念。

會寫這一篇的出發點,是在第二頁,列出一些app沒有做保護時會洩漏的資訊還有常常使用的攻擊手法。因為我平常都用這些方法在分析競業app,才會想要找一下防範方法。

在第二頁稍微寫的工具還有他們會造成的什麼影響,我故意沒有細講,我想如果想踏入iOS security研究的人,第二頁那邊的工具可以去玩玩看,留給有興趣的人去發掘,算是個出發點,然後有什麼心得可以加我好友一起來討論XD。想直接看答案的人可參考我之前寫的一篇 iOS app security




reference有這幾篇:
IOS Application Security Part 24 – Jailbreak Detection and EvasionxCon
xCon-Issues
iOS安全攻防(二十):越狱检测的攻与防


影片也出來了,這幾個月都在比快的



問題

在QA的時候田單單有問:我寫的那個check method如果被hook了,那不就白保護了。
我當時的回答是可以寫成block,讓他檢查不只做一次。回家的路上想想這樣還是不夠完整,
其實還可以再做三階段的加強:
  • 第一個是寫成inline block,或者是寫成c的function 宣告,這個目的是為了防止class dump,讓他看不到method name,也就不知道要怎麼hook
  • 第二個是把method name變得很長很長,我在sample裡面是取叫isJailBreakCheck,反正objC的method name都是在比長的,寫成isJailBreakCheckIfYouWantToProtectYourApp_ImSwiftSeniorEngineer也是可以,hook的時候打錯一個字就hook不到了,連我自己也覺得這蠻北爛的。
  • 第三個是回傳的比對值千萬不要用boolean,一定要用object,先定義好兩個object代表有jb跟沒有jb,最簡單的作法是用string。複雜一點的話可以再加一些加密解密的檢查。
在看這些文章的時候常常會想這些寫security的人是不是神經病,哪來這麼多攻擊跟偵測方法可以一層層的疊上去,然後文章看多了自己似乎也變得疑心病很重。真是沒事不要做security。

其他收穫

在晚上活動一開始的時候,主持人(David)有讓大家分成幾組自我介紹。每次去聚會都會看到很多熟面孔,但每次也都會一些第一次來的人。在我那組自我介紹的時候,有兩個是學生或剛畢業的新鮮人,其中一個說是老師介紹他來的,所以我們問他

「你老師有來過喔?」
「對啊」

眾人大驚。

從來都不知道有學校老師來過,這實在有點可惜。
沒有辦法促進產學交流,這更可惜。
我跟幾個朋友在聚會結束之後都會去吃宵夜聊天,如果有新朋友想加入的,不要害怕,伸出友誼之手就對了,我們可以告訴你很多工程師升級經驗談。

像這個月是一群人在國父紀念館旁邊的公園看OOBEsuperbil玩ingress打變電箱。



張貼留言