의미없는 블로그
[iOS] nogada (frida 탈옥 우회/Keychain Dumper) 본문
iPhoneSE(1st gen) / iOS 13.1.3 / A9 / 지겨와
[탈옥]
Checkra1n
https://saltlee.tistory.com/236
[Openssh]
ssh 사용하기 위해서 https://apt.binger.com/ 추가
Openssh 설치
3utools 에서 Open SSH Tunnel
putty 127.0.0.1 / 22 (root / alpine)
[Frida]
Cydia 에서 http://build.Frida.re/ 추가
Frida 검색해서 설치했다
https://github.com/frida/frida/releases/tag/12.8.0
여기서 frida-server-12.8.0-ios-arm64 다운로드
scp 로 넣어야 겠다... (3utools 로 넣어도 되는데 이상하게 체크레인으로 탈옥하면 루트 경로가 안나옴..)
scp frida-server-12.8.0-ios-arm64 root@127.0.0.1:/tmp 하면
/private/var/tmp/ 하위에 들어감
frida-server 로 이름 바꿔주고 /usr/sbin 하위로 옮겨줌
chmod 777 /usr/sbin/frida-server
frida-server --version > 12.8.0
frida-server & 하고
로컬에도 12.8.0 버전 깔아줘야 하는데
anaconda 에 frida 12.8.0 깔아 놓은게 있어서 그걸로 해보기로 함..
pip install frida==12.8.0
pip install frida-tool==4.0.0 이렇게 했나? 기억이 안남
conda env list
conda activate frida
conda 창에서 frida-ps -Ua 하면 잘 된다
스폰도 잘 되네 (스폰은 -f 패키지명 으로)
[탈옥우회]
1)
frida -U -l class.js -p [pid] > result.txt 해서 클래스 추출했는데
jailbreak 관련된 클래스가 안보여서 다른 방법으로..
2)
frida -U -l trace_ios.js -f [패키지명] 해서 실시간으로 사용하는 클래스 트레이싱 할 수 있다
여기서 jailbreak 관련 클래스랑 메소드 확인
3)
만약에 1)번에서 jailbreak 관련 클래스 확인 가능했으면
이 스크립트로 해당 클래스 내 메소드들 확인하면 된다
4)
그 담에 클래스랑 메소드 가지고 후킹해서 리턴값 조작하면 됨
frida -U -l hook_ios.js -f [패키지명]
5)
근데 사실 히어로님이 만든 후킹 스크립트로 걍 하면 됨ㅋ
frida -U -l jailbreak_ios.js -f [패키지명]
여기까지 후킹 스크립트는 탈옥 관련 클래스랑 메소드 찾아서 후킹하는 방식인데
어떤 핵고수가 탈옥 탐지를 그냥 변수로 짜놨쥬 그래서 후킹이 안됐쥬
이게 탈옥 관련 클래스(extension)랑 메소드(func)
이렇게 되어있으면 후킹할 수 있쥬
이건 isJailBroken이 변수로 되어 있쥬
다른데서 if문으로 탈옥 여부 판단하고 있다
무튼 이렇게 짜놓으면 후킹이 안됨
6)
그래서 이럴땐 기드라로 base offset 찾아서 따라가는 그거? 해야된다는데
[Filza]
Cydia 에 http://tigisoftware.com/cydia/ 추가하고 filza 설치
/var/containers/Bundle/Application 에서 해당 폴더 zip 으로 압축
로컬에서 scp root@127.0.0.1:/var/containers/Bundle/Application/xxx.zip ./ 해서 로컬로 가져옴
확장자 ipa 로 바꿔주면 된다고 함
/var/containers/Bundle/Application/$uuid/앱.app/Info.plist
/private/var/mobile/Containers/Data/Application/$uuid 하위..
ex) /private/var/mobile/Containers/Data/Application/$uuid/Documents/userInfo.plist
ex) /private/var/mobile/Containers/Data/Application/$uuid/Library/Preferences/*.plist
빼올땐 scp root@127.0.0.1:/private/var/mobile/Containers/Data/Application/$uuid/Documents/userInfo.plist ./
Info.plist 에 application permissions 설정 해놓는다
근데 이 항목 없자나..
원래는 지나친 권한 사용하는거 없는지, 앱에서 반드시 필요한 권한인지 등 확인하는건데
일단 mobSF 돌려보겠음
imazing 설치해서 ipa 추출할 수 있다는데
앱관리 - 라이브러리 - 라이브러리 다운로드하고 - 오른쪽 마우스 - IPA 내보내기
[Keychain Dumper]
https://github.com/ptoomey3/Keychain-Dumper
여기서 zip 다운받아서 폰에 넣어야됨
/ 밑에서 unzip 해서 setup_on_iOS.sh 파일 755 권한 준담에 돌려
아니면 /private/var/Keychains/keychain-2.db 파일 빼서 SQLite 같은걸로 열어바바
인프런에 Runtime Manipulation 얘는 프리다로 후킹해서 기능 우회 하는거고.. 꼭 루팅 아니어도..
기드라로 분석해서 하는 방법도 있고
그.. Info.plist 에 CFBundleURLSchemes 얘가 스키마 나타내는건데 (mobSF 로 돌려도 뽑아줌)
사파리에서 스키마:// 하면 실행 가능
AppDelegate.swift 파일에서 스키마 수신해서 처리하기 때문에
어떻게 구성되어 있는지 보려면 기드라에서 appdelegate 로 검색하라는데
WMPAppDelegate 클래스가 있긴 한데 이거랑은 다른건가?
로그에 중요정보 볼 때..
'# 나 > nnobile (AOS, iOS)' 카테고리의 다른 글
[Android] frida(15.1.14) 설치해서 메모리 덤프 (0) | 2023.12.06 |
---|---|
[Android] 갤노트9 루팅 (2) | 2023.10.05 |
[iOS] Frida Spawn 할 때 Timeout 에러 (0) | 2022.09.08 |
[iOS] 체크레인 탈옥쓰 (0) | 2022.08.30 |
[iOS] Frida for pre-A12 devices 없는디요? / 탈옥 가능 버전 (0) | 2022.07.18 |