执行ios命令_MEDUZA:一款针对iOS应用程序的通用SSL解绑工具
MEDUZA
MEDUZA是一款針對iOS應(yīng)用程序的通用SSL解綁工具,該工具基于Frida開發(fā),可以當作SSLKillSwitch工具的替代品。本來我是想自己開發(fā)自己用的,而且原本并不打算開源出來。我個人不太喜歡開源,但棱角總會被磨平的…
工具運行機制
該工具的運行機制非常簡單,當你首次運行一款應(yīng)用程序并且沒有開啟網(wǎng)絡(luò)嗅探的時候,也就是正常使用一款A(yù)pp的時候,MEDUZA會在后臺靜默執(zhí)行,并收集App用于連接后臺服務(wù)器時所使用的證書信息。接下來,MEDUZA會生成一個Frida腳本,并偽造(相當于解綁操作)一份收集到的證書。那么當你第二次運行這款應(yīng)用程序時,我們就可以使用生成的腳本并配合中間人代理(Mitmproxy)來捕捉應(yīng)用程序流量了。
工具限制
MEDUZA只能解綁那些使用iOS系統(tǒng)SSL庫的應(yīng)用程序,像Instagram(Instagram使用了OpenSSL)這樣的應(yīng)用程序并沒有使用iOS系統(tǒng)SSL庫,而是使用某些第三方自定義的SSL實現(xiàn)棧,那MEDUZA可就沒辦法了。
除此之外,MEDUZA跟SSLKillSwitch相比,使用了完全不同的功能實現(xiàn)方式。因此理論上來說,MEDUZA應(yīng)該可以跟SSLKillSwitch等類似的工具結(jié)合起來一起使用,不過我還沒有進行過測試。
工具要求
適用于macOS Majave及更新版本,也許MEDUZA能在Windows和Linux平臺上運行,不過我也沒有進行過測試。
一臺已越獄的iOS設(shè)備,MEDUZA已在iPhone SE 2016(iOS 13.3)和iPhone 6s(iOS 14.0)上進行過測試,理論上來說MEDUZA也可以在其他iOS設(shè)備上運行。
需要在macOS和iOS設(shè)備上安裝最新版本的Frida。
在macOS上安裝好Mitmproxy。
macOS和iOS設(shè)備需要使用USB數(shù)據(jù)線連接起來,并且連接到同一個WiFi網(wǎng)絡(luò)。
在macOS上安裝好Python3以及cryptography庫,安裝命令如下:
工具下載
廣大研究人員可以使用下列命令將該項目源碼克隆至本地:
git clone https://github.com/kov4l3nko/MEDUZA.git如何嗅探HTTP(s)流量
該操作分兩步,首先我們需要獲取到目標應(yīng)用程序綁定的所有證書,然后生成一個腳本來偽造這些證書,即解綁操作。需要注意的是,這一步必須在一開始就執(zhí)行。接下來,你就可以使用生成的腳本來嗅探網(wǎng)絡(luò)流量了。第一步操作的命令步驟如下:
1、在macOS上打開終端窗口,然后運行MEDUZA來枚舉出iOS設(shè)備上安裝/運行的應(yīng)用程序:
$ python3 meduza.py -l命令的輸出結(jié)果如下:
MEDUZA iOS SSL unpinning toolby Dima Kovalenko (@kov4l3nko)============================================================[*] Waiting for an iOS device connected to USB...[*] A list of installed applications:+ Uber (com.ubercab.UberClient) is running, pid=40663- Home (com.apple.Home)- Files (com.apple.DocumentsApp)- Podcasts (com.apple.podcasts)- Contacts (com.apple.MobileAddressBook)- Music (com.apple.Music)- Photos (com.apple.mobileslideshow)- TV (com.apple.tv)+ App Store (com.apple.AppStore) is running, pid=40627- Clock (com.apple.mobiletimer)+ Settings (com.apple.Preferences) is running, pid=40619- TikTok (com.zhiliaoapp.musically)- Watch (com.apple.Bridge)- FaceTime (com.apple.facetime)- Maps (com.apple.Maps)- Voice Memos (com.apple.VoiceMemos)<...etc you see remaining apps here...>2、確保iOS設(shè)備的WiFi設(shè)置是干凈的,比如說,沒有配置代理或指定自定義路由器IP等等。在第一步,我們不用嘗試嗅探網(wǎng)絡(luò)流量,因此WiFi網(wǎng)絡(luò)連接應(yīng)該跟往常一樣。
3、選擇目標應(yīng)用程序,比如說Uber,然后使用下列命令運行MEDUZA:
$ python3 meduza.py -s of id> <path/to/the/frida/script.js>目標應(yīng)用程序為Uber:
$ python3 meduza.py -s com.ubercab.UberClient ./unpinUber.js這里的-s參數(shù)表明重新生成Uber客戶端,如果你想要跟一個正在運行的App連接而不需要重新生成客戶端的話,可以使用-a參數(shù)來代替-s。
運行結(jié)果如下:
MEDUZA iOS SSL unpinning toolby Dima Kovalenko (@kov4l3nko)============================================================[*] Waiting for an iOS device connected to USB...[*] Spawning com.ubercab.UberClient...[*] Attaching to com.ubercab.UberClient...[*] Reading JS payload meduza.js...[*] Injecting JS payload to the process...[*] SecCertificateCreateWithBytes(...) hooked![*] Resuming the application...[*] Press ENTER to complete (you can do it anytime)...[*] Got another certificate, its raw SHA256 hash: 99b05557bafde776f0afc15bbf6733585b8a03606cbf757158fb96324e01310acrashlytics.comreports.crashlytics.comfirebase-settings.crashlytics.comapps-ios.crashlytics.comandroid-sdk.crashlytics.comapi.crashlytics.comsettings-api.crashlytics.comdownload.crashlytics.comdistribution-uploads.crashlytics.comcm-us-east-1.crashlytics.comwww.crashlytics.comtry.crashlytics.comkits.crashlytics.comcm.crashlytics.comapps.crashlytics.comcm-ap-southeast.crashlytics.comsettings.crashlytics.come.crashlytics.com[*] Got another certificate, its raw SHA256 hash: 954a9f7dd9f03784bdc5ca9183484a5bfc278ca9ba9f42b3a82f96cffddf277b[*] Got another certificate, its raw SHA256 hash: 649a4665273e60b353fe9b4db1807d9669f82cb0ee85bd1e562e7c2f33fdec3a*.cfe.uber.comcfe.uber.comcn-dca1.cfe.uber.com[*] Got another certificate, its raw SHA256 hash: eae72eb454bf6c3977ebd289e970b2f5282949190093d0d26f98d0f0d6a9cf17<...etc you can see many messages about certificates it ok...>4、在App上執(zhí)行正常操作,比如說登錄賬號,然后點一些按鈕,或者注銷登錄之類的,也就是像正常用戶一樣操作。每當App使用證書來跟服務(wù)器進行通信連接時,MEDUZA都將捕捉到證書。
5、在App上完成正常操作之后,在終端窗口按下回車鍵。MEDUZA將生成一個腳本,比如說./unpinUber.js。
第一步操作完成之后,第二步就是使用腳本了:
1、在macOS終端窗口中運行下列命令來查看macOS的IP地址:
ifconfig | grep "inet "2、在macOS上運行Mitmproxy;
3、在你的iOS設(shè)備上,設(shè)置macOS的IP地址以及Mitmproxy端口(默認為8080),以作WiFi連接的代理;
4、運行目標程序?qū)?yīng)的生成腳本,然后在macOS終端運行下列命令來解綁Uber應(yīng)用程序證書:
$ frida -U -f com.ubercab.UberClient --no-pause -l ./unpinUber.js如何防止應(yīng)用程序被MEDUZA攻擊?
使用第三方SSL實現(xiàn),比如說使用OpenSSL之類的來代替iOS系統(tǒng)SSL庫;
你可以為你的App添加一些反Frida保護機制,因為MEDUZA基于Frida實現(xiàn),如果Frida無法運行,那么MEDUZA也就無法運行了。
工具運行截圖
項目地址
MEDUZA:https://github.com/kov4l3nko/MEDUZA
精彩推薦
總結(jié)
以上是生活随笔為你收集整理的执行ios命令_MEDUZA:一款针对iOS应用程序的通用SSL解绑工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 风靡朋友圈的HTML5游戏去哪了
- 下一篇: [云炬创业基础笔记] 第四章测试1