【iOS】越獄檢測
前段時間公司讓做了個對越獄裝置的檢測和攔截,下面是綜合自己的開發和網上一些帖子的總結,總體來說做起來還是比較簡單的,但是有一個大坑一定要注意!!
一、什麼是越獄
越獄:是指標對iPhone作業系統(即iOS系統)限制使用者儲存讀寫許可權的破解操作。經過越獄的iPhone擁有對系統底層的讀寫許可權,能夠讓iPhone手機免費使用破解後的App Store軟體的程式(相當於盜版)
更詳細點說,越獄是指利用iOS系統的某些漏洞,通過指令取得到iOS的root許可權,然後改變一些程式使得裝置的功能得到加強,突破封閉式環境。
二、越獄優缺點
越獄的好處
1.系統許可權很高,可以自己優化系統,可以修改系統檔案,可以安裝更多擁有高系統許可權的軟體,實現更多高階功能!例如:與其他裝置藍芽傳送檔案、簡訊回執、來電歸屬地、檔案管理、瀏覽器下載外掛、flash外掛、內容管理等等。
2.可以安裝破解後的軟體。
3.可以更換主題、圖示、簡訊鈴聲等等,打造個性的手機。
4.可以藉助第三方檔案管理軟體靈活的管理系統或者其他檔案,比如把iPhone當行動硬碟(u盤)越獄的害處
對使用者
1.費電,越獄後系統會常住一些程式保持越獄的狀態。視系統級軟體(deb格式)安裝的數量,越獄後耗電速度約提升10% ~20%。
2.可能會造成系統不穩定,擁有很高系統許可權的同時,也伴隨著系統崩潰的危險,這個道理大家能理解吧?你可以修改它,但是你不能保證永遠正確的修改它。所以系統級的軟體寧缺毋濫,不瞭解用途的情況下不要亂安裝。
3.在新的手機韌體版本出來的時候,不能及時的進行更新。每個新版本的韌體,都會修復上一個版本的越獄漏洞,使越獄失效。因此如果需要保持越獄後的功能,要等到新的越獄程式釋出,才能升級相應的手機韌體版本。
4.越獄過程中滋生小BUG,但是不是很影響使用.對公司,隨著iOS系統的逐步完善,越獄機對應用層的攻擊也越來越難,譬如:iOS7相比之前系統版本,升級了沙盒機制,封鎖了幾乎全部應用沙盒可以共享資料的入口。即使在越獄情況下,限制也非常多,大大增加了應用層攻擊難度。但是:
使用者越獄後,還是可以通過下載一些外掛,
譬如:xCon(n00neimp0rtant and Lunatik聯合開發)、NZT、tsPretector等,
來篡改裝置資訊,從而來刷一些商家或公司活動福利,或者利用一些漏洞故弄一些異常來投訴。
三、越獄的檢測
對於越獄的判斷,想要做到完全檢測是非常難的,因為一是蘋果在一直修補已知漏洞,所以越獄攻擊程式也一直在更改,二是使用者可能安裝了越獄檢測繞過軟體(xCon)。
所以我們只要做到在多重越獄檢測的基礎上,儘可能的提高越獄裝置的判定率就行了,常見的檢測方法如下:
1. 使用NSFileManager,判斷裝置上是否安裝了常用越獄工具。(容易被hook掉)
2. 使用stat系列函式檢測常用越獄工具。(也可能被hook掉)
3. 那就需要檢測下stat是否出自系統庫。
4. 檢測連結動態庫(不建議,appStore稽核可能不過)
5. 最後還可以通過檢測程式執行的環境變數。
四、檢測方法
- 使用NSFileManager,判斷裝置上是否安裝了常用越獄工具。
//判斷工具安裝路徑 本期先做成BOOL開關方法
- (BOOL)checkPath
{
BOOL jailBroken = NO;
NSString * cydiaPath = @"/Applications/Cydia.app";
NSString * aptPath = @"/private/var/lib/apt";
if ([[NSFileManager defaultManager] fileExistsAtPath:cydiaPath]) {
jailBroken = YES;
}
if ([[NSFileManager defaultManager] fileExistsAtPath:aptPath]) {
jailBroken = YES;
}
return jailBroken;
}
·
上述路徑也可替換為以下常見越獄工具路徑:
/Library/MobileSubstrate/MobileSubstrate.dylib
/Applications/Cydia.app /var/lib/cydia/
/var/cache/apt /var/lib/apt /etc/apt
/bin/bash /bin/sh
/usr/sbin/sshd /usr/libexec/ssh-keysign /etc/ssh/sshd_config
- 使用stat系列函式檢測常用越獄工具
//防hook NSFileManager的方法 使用stat系列函式檢測Cydia等工具,路徑同上
- (BOOL)checkCydia
{
struct stat stat_info;
if (0 == stat("/Applications/Cydia.app", &stat_info)) {
NSLog(@"Device is jailbroken");
return YES;
}
return NO;
}
- 檢測stat是否出自系統庫
int ret;
Dl_info dylib_info;
int (*func_stat)(const char *,struct stat *) = stat;
if ((ret = dladdr(func_stat, &dylib_info))) {
if (strcmp(dylib_info.dli_fname,"/usr/lib/system/libsystem_kernel.dylib") != 0) {
jailbroken = YES;
}
}
檢測連結動態庫,檢測是否被連結了異常動態庫,但動態庫相關Api屬於私有Api,呼叫的話appStore稽核會不通過,所以不列舉。
檢測程式執行的環境變數
//檢測當前程式執行的環境變數,防止通過DYLD_INSERT_LIBRARIES注入連結異常動態庫,來更改相關工具名稱
- (BOOL)checkEnv
{
char *env = getenv("DYLD_INSERT_LIBRARIES");
NSLog(@"%s", env);
if (env) {
return YES;
}
return NO;
}
五、深坑請注意!!
千萬不要通過判斷是否可以開啟 cydia:// 為首的URL Schema 來判斷是否越獄,因為你會發現很多App居然註冊了這個URL Type !!
相關文章
- 檢測iOS客戶端是否越獄iOS客戶端
- iOS安全攻防越獄檢測的攻與防iOS
- iOS10可以越獄嗎 iOS10完全越獄影片iOS
- iOS10已經越獄?ios10越獄最新訊息iOS
- 閒聊iOS越獄與前景 iOS越獄還是你的菜嗎?iOS
- 新版太極越獄工具支援iOS8.1.2完美越獄iOS
- iOS10可以越獄嗎 蘋果iOS10完全越獄影片介紹iOS蘋果
- iOS逆向(10)-越獄!越獄!遠端連線登入手機iOS
- iOS 10將幹掉越獄 淺析蘋果的越獄歷程iOS蘋果
- iOS完全不用越獄了!iOS
- iOS10-10.3.3一鍵越獄教程 iOS10-10.3.3怎麼越獄iOS
- iOS9.2-iOS9.3.3採用全新越獄方式:重啟手機後越獄失效iOS
- iOS 9.3完美越獄存在Bug 越獄前需要了解這些風險iOS
- iOS 8.3完美越獄或成空 新版本再次封堵越獄漏洞iOS
- iOS 越獄後碰到的問題iOS
- iOS非越獄逆向--程式碼注入iOS
- iOS 12全版本越獄工具釋出,越獄的生存空間仍然存在iOS
- iOS 12.4成功越獄 - 越獄開發者秀iPhone SE執行Cydia畫面iOSiPhone
- 希臘越獄團隊正式宣佈放棄iOS9.3.X完美越獄iOS
- iOS9.3.1/9.3.2不越獄怎麼裝主題 蘋果iOS不越獄裝主題教程iOS蘋果
- iOS——越獄與免證書除錯iOS除錯
- iOS9.3.X完美越獄無望 希臘越獄團隊正式宣佈放棄iOS
- 教你動手做一個iOS越獄appiOSAPP
- iOS 7最新越獄的那些趣事兒 附Evasi0n越獄教程及下載地址iOS
- iOS9.2-iOS9.3.3完美越獄教程圖文詳解iOS
- iOS 8.1.3-iOS8.4完美越獄詳細圖文教程iOS
- 越獄APP清理APP
- 十、iOS逆向之《越獄砸殼/ipa脫殼》iOS
- iOS 9.3.4正式釋出 封堵盤古越獄漏洞iOS
- iOS 9.2.1越獄已被證實為造假:開發者道歉iOS
- iOS 10尚未公開發布即被成功越獄iOS
- 第二屆iOS越獄大會正式命名WWJCiOS
- iOS10完美越獄有望 千萬別升iOS10.2iOS
- 盤古iOS9.2-iOS9.3.3越獄工具:完美,也不完美iOS
- Evasi0n:四天越獄近700萬臺iOS裝置 成史上最受歡迎越獄工具iOS
- 變味的越獄:揭祕中國iPhone越獄產業利益鏈iPhone產業
- 非越獄下 iOS程式碼注入&HOOK微信登入iOSHook
- iOS 12.1.2再曝新漏洞,越獄或將重生?iOS