목 차
아이폰 탈옥
탈옥은 Apple이 iOS 운영 체제에 부과한 소프트웨어 제한을 제거하는 과정으로, 사용자가 장치에 대한 루트 액세스 권한을 얻고 공식 App Store를 통해 사용할 수 없는 앱 및 조정을 설치할 수 있습니다.
탈옥은 일반적으로 iOS 운영 체제의 보안 취약점을 악용하여 보안 조치를 우회하여 사용자가 일반적으로 제한되는 시스템 파일 및 설정에 액세스할 수 있도록 합니다. 장치가 탈옥되면 사용자는 타사 소스에서 앱을 설치하고, 장치의 모양과 기능을 사용자 지정하고, 사전 설치된 앱 및 Apple에서 부과한 기타 제한 사항을 제거할 수 있습니다.
탈옥은 더 넓은 범위의 앱에 대한 액세스 및 조정, 개인 취향에 맞게 장치를 사용자 정의하는 기능, 탈옥되지 않은 장치에서는 불가능한 고급 작업을 수행하는 기능과 같은 여러 가지 이점을 제공할 수 있습니다.
그러나 탈옥은 잠재적으로 악성 앱이 장치에 설치되도록 허용하고 운영 체제의 보안 및 안정성을 손상시킬 수 있으므로 보안 위험을 초래할 수도 있습니다. 탈옥은 또한 기기의 보증을 무효화하여 Apple 또는 공인 서비스 제공업체로부터 지원을 받기 어렵게 만들 수 있습니다.
탈옥은 관련된 위험을 이해하고 iOS 운영 체제를 잘 이해하는 숙련된 사용자만 시도해야 한다는 점에 유의하는 것이 중요합니다. 또한 탈옥은 모든 관할권에서 합법적이지 않을 수 있으므로 사용자는 기기 탈옥을 시도하기 전에 법을 위반하지 않는지 확인해야 합니다.
탈옥 탐지 코드
func isJailbroken() -> Bool {
// 시뮬레이터인 인지 확인
#if targetEnvironment(simulator)
return false
#else
// 탈옥된 장치에서 일반적으로 발견되는 파일이나 디렉토리 확인
let fileManager = FileManager.default
let jailbreakFilePaths = ["/Applications/Cydia.app",
"/Library/MobileSubstrate/MobileSubstrate.dylib",
"/bin/bash",
"/usr/sbin/sshd",
"/etc/apt",
"/usr/bin/ssh",
"/private/var/lib/apt"]
for path in jailbreakFilePaths {
if fileManager.fileExists(atPath: path) {
return true
}
}
// 탈옥된 환경에서만 접근 가능한 cydia 접근 시도
let cydiaUrlScheme = URL(string: "cydia://package/com.example.package")
if UIApplication.shared.canOpenURL(cydiaUrlScheme!) {
return true
}
// 테스트 파일을 개인 디렉토리에 쓴 다음 즉시 삭제하려고 시도
let path = "/private/" + UUID().uuidString
do {
try "test".write(toFile: path, atomically: true, encoding: .utf8)
try fileManager.removeItem(atPath: path)
return true
} catch {
return false
}
// 쓰기 전용 디렉토리에서 읽기 모드에서 파일을 열 수 있는지 확인
var file = fopen("/bin/bash", "r")
if file != nil {
fclose(file)
return true
}
return false
#endif
}
소스코드 순서대로 아래의 4가지 경우를 확인하여 탈옥되었는지 확인
1) 탈옥된 장치에서 일반적으로 발견되는 파일이나 디렉토리 확인
2) 탈옥된 환경에서만 접근 가능한 cydia URL 접근 시도
3) 테스트 파일을 개인 디렉토리에 쓴 다음 즉시 삭제하려고 시도
4) 쓰기 전용 디렉토리에서 읽기 모드에서 파일을 열 수 있는지 확인
2023.05.15 - [보안/모바일 취약점 점검] - [Android, iOS] OS변조(루팅/탈옥), 무결성 검증, 디버깅 탐지 프로젝트 파일
'모바일 취약점 점검 > iOS' 카테고리의 다른 글
[iOS] 아이폰 탈옥 & 복구 (checkra1n) (0) | 2023.06.18 |
---|---|
[iOS] 안티 디버깅(Anti-Debugging) 코드 (0) | 2023.05.15 |
[iOS] 무결성(앱 위변조) 검증 코드 (0) | 2023.05.15 |