iOSSecAudit:一個iOS APP安全審計工具

原文最早發(fā)表于freebuf蹬癌,我是原作者本人,原文鏈接播演。

0×00前言

App安全審計對于安全人員是一項苦逼的工作冀瓦,但對于廠商卻非常重要,因為App屬于客戶端產(chǎn)品写烤,一旦出現(xiàn)漏洞由于更新推送需要時間翼闽、且新版本更新率等原因,導(dǎo)致其不能像服務(wù)端程序那樣很短時間內(nèi)修復(fù)洲炊,對于App的漏洞應(yīng)該盡量控制在發(fā)布之前發(fā)現(xiàn)并解決感局。

目前世面已有的漏洞掃描工具還遠沒有達到替代人工審計的地步,無法解放勞動力暂衡;然而App安全審計經(jīng)常需要安全人員在手機端和pc端來回切換操作询微,造成大量而又毫無意義的重復(fù)勞動,如果沒有積累狂巢、沒有總結(jié)就會讓這項工作變得無味撑毛,而且對審計人員的能力提升非常小。

年底唧领,我寫了個iOS App審計工具藻雌,用于輔助人工審計雌续,這個工具不是漏洞掃描器,旨在簡化或替代安全審計中的各種亂七八糟的繁瑣操作胯杭,將所有的工作合并在一個shell中進行驯杜,免去來回切換shell的過程。也算是幫忙建設(shè)移動端工具鏈了做个。

0x01工具介紹

相對于Android鸽心,iOS上的安全問題要少很多,籠統(tǒng)的可以分為本地和網(wǎng)絡(luò)兩大塊居暖,網(wǎng)絡(luò)端已有burp suite和fiddler等非常好用的工具顽频,因此這個工具主要是針對本地問題。

下面以一個簡化的安全審計步驟來介紹如何使用該工具膝但。

一般來說iOS App安全審計只需要拿到一個ipa包就夠了冲九,能拿到源碼當(dāng)然更好,這時候可能連ipa的bundleID都不知道跟束,甚至都沒簽名莺奸;還有更坑的是告訴你一個應(yīng)用的名字,讓你自己去App Store上下載(嗯冀宴,目前沒遇到要自己付費下載進行安全審計的情形)灭贷。

1.1使用環(huán)境

開發(fā)環(huán)境:Mac OS X with python2.7

測試設(shè)備:iPhone4 with iOS6 & jailbreak;

iPhone5 with iOS8& jailbreak略贮;

iPhone5s with iOS9& jailbreak甚疟;

目前沒在Linux和windows下測試過,因為我太懶了……而且我也不建議在Linux或windows下進行iOS安全研究逃延。最最最重要的是览妖,該工具的部分功能僅支持Mac OS X。

1.2安裝前的一些命令

啟動工具揽祥,命令為pythonmain.py讽膏,啟動之后如圖1。



該工具是建立在ssh連接上的拄丰,通過ssh連接執(zhí)行命令并獲取結(jié)果府树。因此首先必須連接手機設(shè)備,連接命令有兩個:usb和ssh料按。使用usb命令連接必須先使用usb線連接pc和手機奄侠,ssh命令連接只需要知道手機的IP地址就好了,不過我還是強烈建議使用usb連接载矿,網(wǎng)絡(luò)連接有的時候會很卡很卡垄潮。連接命令的使用如圖2。


使用help或help [cmd]命令可查看所有命令,以及命令介紹弯洗、使用說明甫题、使用舉例,如圖3涂召。

圖 3 help命令

如果ipa未簽名,首先使用resign命令對ipa文件進行簽名(當(dāng)然就算這個ipa是已經(jīng)簽名過的敏沉,這個命令也會對其進行重簽名)果正,如圖4。要用自己的證書進行簽名當(dāng)然得有自己的證書盟迟,這里多提一句秋泳,關(guān)于iOS的簽名機制已經(jīng)有文章講的非常透徹了,比如:http://objccn.io/issue-17-2/攒菠。

圖 4 重簽名

如果在審計的過程中需要注入一個dylib到ipa文件進行測試迫皱,可以使用命令dlinj,使用方法如圖5辖众。

圖 5 注入dylib

注入之后肯定是需要重簽名的卓起,不然是安裝不上去的,當(dāng)然凹炸,對于我這種懶人戏阅,我一定會做一個命令把注入和重簽名合并在一起,就是dlini命令啤它,如圖6奕筐。

圖 6 注入并重簽名

好的,扯了這么多变骡,終于可以安裝ipa了离赫,安裝命令是iipa,使用示例如圖7塌碌。

圖 7安裝ipa

當(dāng)然渊胸,對于我這種懶人,我一定會做一個命令把注入誊爹、重簽名和安裝合并在一起蹬刷,就是dlinji命令,如圖8频丘。

圖 8注入簽名安裝

1.3獲取應(yīng)用信息

安裝好ipa之后办成,開始獲取應(yīng)用的一些信息,比如bundleID之類的搂漠,命令la可以列舉所有第三方應(yīng)用迂卢,如圖9,從這里應(yīng)該能看出自己手機上哪個是剛安裝的應(yīng)用吧,如果真看不出來而克,那就安裝前后都用la命令對比下吧靶壮。

圖 9 列舉第三方應(yīng)用

確定了bundleID,就好比打槍有了靶子员萍,又好比打飛機有了飛機……誒腾降,扯遠了……然后咱就可以分析應(yīng)用的binary文件,如圖10碎绎;獲取應(yīng)用的詳細信息了螃壤,如圖11。

圖 10粉筆binary
圖 11獲取應(yīng)用詳細信息

說明:ab命令后面沒有跟bundleID筋帖,是因為工具對bundleID做了緩存,如果某個命令需要bundleID但卻沒有輸入日麸,則會使用上一次使用的bundleID。

1.4真正的審計

一般來說墩划,我建議首先進行網(wǎng)絡(luò)端的各種安全測試,不管是中間人也好嗡综,重放攻擊,xss蛤高,爆接口,驗證碼接口短信轟炸啥的都好戴陡,等網(wǎng)絡(luò)端的所有測試完成之后塞绿,這個應(yīng)用的大部分功能都已經(jīng)使用過一遍恤批,肯定會在本地應(yīng)用目錄生成一堆的文件,這時候再做本地的安全測試比較科學(xué)喜庞。

比如延都,我可以使用las列舉該應(yīng)用的所有存儲文件路徑,如圖12晰房,目前僅發(fā)現(xiàn)db、sqlite3与境、plist文件摔刁。

圖 12 列舉所有存儲文件

再比如,我設(shè)置了一個密碼扁位,我想看看應(yīng)用有沒有在本地明文存儲這個密碼趁俊,可以使用gs命令對該應(yīng)用所有存儲文件進行特征字符搜索寺擂,如圖13搜索特征串字符“DTSDKName”泼掠。

圖 13搜索特征字符串

圖12發(fā)現(xiàn)了很多的文件,我想查看某個plist文件的內(nèi)容挡逼,或者是在所有plist文件中搜索特征字符串腻豌,如圖14吝梅、15虱疏。

圖 14查看plist文件內(nèi)容
圖 15 plist中搜索特征字符串

對于db文件做瞪,可以完成類似sqlite3的所有功能右冻,如查看db文件內(nèi)容纱扭、列舉db文件所有表名牍帚、查看單個表的內(nèi)容履羞、搜索特征字符串等; 對于keychain爱榔,一樣也有增刪改查的功能糙及,可以dump keychain所有條目,對單個條目進行編輯等唇聘,限于篇幅柱搜,這里就不截圖了聪蘸,各位看官自己試試就好。

對于設(shè)備可以證書管理控乾,有安裝證書娜遵、列舉所有證書如圖16设拟、刪除證書如圖17、導(dǎo)入證書如圖18镶骗,導(dǎo)出證書如圖如圖19等躲雅。

圖 16 列舉證書

圖 17刪除證書

圖 18導(dǎo)入證書

圖 19導(dǎo)出證書

當(dāng)然啦相寇,對于某些有怪癖的選手……哦钮科,對不起绵脯,是對于某些有特殊愛好的安全從業(yè)人員休里,我還提供了打包下載整個應(yīng)用目錄赃承、打包下載應(yīng)用所有存儲文件的功能瞧剖,如圖20、21做粤。

圖 20打包下載應(yīng)用

圖 21打包下載所有存儲文件

當(dāng)然怕品,對于我這種懶人巾遭,我一定會……誒恢总,這話好耳熟……我做了一個超級貼心的功能睬愤,就是懶人模式,做一些簡單配置砂豌,就可以一個命令把上面幾乎所有的命令搞定了……如圖22光督、23(在使用該功能之前结借,請先對globals.py的lazy mode區(qū)域進行配置)。

圖 22配置

圖 23懶人模式

1.5其他貼心功能

比如動態(tài)監(jiān)視pasteboard,如圖24柳畔。

圖 24監(jiān)視paste board

針對只給一個應(yīng)用名薪韩,自己去AppStore下載的這種大坑情形捌锭,我們強勢推出了dump ipa观谦、dump binary的功能宛逗,如圖25、26雷激。

圖 25 dump ipa

圖 26 dump binary

還有啥了屎暇,讓我想想……

嗯根悼,對了,為了不讓大伙用小手去手機上點開一個應(yīng)用剩彬,還可以用命令遠程啟動一個app矿卑,如圖27。

圖 27遠程啟動應(yīng)用

dumpbinary之后轻黑,多半這個binary是fat頭氓鄙,你還可以用nonfat命令處理一哈业舍。

還有好多功能舷暮,比如端口映射、遠程調(diào)試應(yīng)用向臀、文件上傳下載诸狭、class dump君纫、weak class dump蓄髓、獲取應(yīng)用pid舒帮、獲取panic log啥的,有點多肢执,我實在不想寫了译红,因為我太懶了侦厚,各位看官自己去折騰吧……

0×02最重要的事情

現(xiàn)在來說最重要的事情,這個項目已經(jīng)開源了诗宣,開源地址:https://github.com/alibaba/iOSSecAudit

如果各位小伙伴在使用的時候發(fā)現(xiàn)bug怎么辦想诅?

1.自己改改得了(強烈建議

2.直接在github項目提issue(不推薦)

3.聯(lián)系我的gmail郵箱侧蘸,地址在圖1里面(不推薦)

4.微博艾特我:@ylxz幽林曉筑(推薦粉我鹉梨,但不推薦提bug)

5.艾特我:@Junejuly(推薦粉我存皂,但不推薦提bug)

0×03寫在最后

其實還有很多功能想做,但時間不太夠(這是借口骤菠,其實還是太懶了)疤孕,各位有想到啥好用的功能可以fork之后自己加上去祭阀,或者通過0×02章節(jié)的聯(lián)系方式找我?guī)兔酉式洌矣锌諘由先ィú贿^肯定沒空的)抹凳。

我也知道某些代碼寫的很蠢赢底,不過我就是懶的改,咬我啊粹庞。

你可能會吐槽這些命令太傻X嘁扼,也真是太特么難記了趁啸,這一點我承認哈……所有命令都定義在globals.py文件里面,你可以進去改旅掂,想改成啥就改成啥访娶,就這了崖疤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劫哼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子眯亦,更是在濱河造成了極大的恐慌般码,老刑警劉巖板祝,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡温技,警方通過查閱死者的電腦和手機舵鳞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門琢蛤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來博其,“玉大人,你說我怎么就攤上這事背伴》逅瑁” “怎么了携兵?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵徐紧,是天一觀的道長。 經(jīng)常有香客問我拂檩,道長嘲碧,這世上最難降的妖魔是什么呀潭? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任至非,我火速辦了婚禮荒椭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狸棍。我一直安慰自己,他們只是感情好塌鸯,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布丙猬。 她就那樣靜靜地躺著费韭,像睡著了一般星持。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揪垄,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天福侈,我揣著相機與錄音卢未,去河邊找鬼辽社。 笑死,一個胖子當(dāng)著我的面吹牛戳葵,可吹牛的內(nèi)容都是我干的汉匙。 我是一名探鬼主播噩翠,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼伤锚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猛们?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤绿店,失蹤者是張志新(化名)和其女友劉穎惯吕,沒想到半個月后怕午,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郁惜,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了虎韵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片包蓝。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡测萎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出份乒,到底是詐尸還是另有隱情腕唧,我是刑警寧澤枣接,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布月腋,位于F島的核電站,受9級特大地震影響片拍,放射性物質(zhì)發(fā)生泄漏妓肢。R本人自食惡果不足惜碉钠,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一喊废、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧工闺,春花似錦瓣蛀、人聲如沸惋增。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诊县。三九已至措左,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胸嘁,已是汗流浹背性宏。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工毫胜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荐吉。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓口渔,卻偏偏與公主長得像缺脉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子业踢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,870評論 25 707
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,778評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理深员,服務(wù)發(fā)現(xiàn),斷路器遮糖,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 深夜的思念 跟隨深夜的節(jié)拍 輕輕輕輕思念你 窗外的白 總會令人興奮不已 白天矜持的你 深夜固執(zhí)的我 就這樣翻來覆去...
    紫翼惠瑄閱讀 315評論 0 1
  • 武立舅舅受邀過來北京請兒子武白和他的團隊吃飯欲账。我如此幸運的也被邀請參加芭概。 2017.9.30下午3點左右赛不,坐在武白...
    云光帥哥閱讀 463評論 0 0