Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

의미없는 블로그

[iOS] nogada (frida 탈옥 우회/Keychain Dumper) 본문

# 나/nnobile (AOS, iOS)

[iOS] nogada (frida 탈옥 우회/Keychain Dumper)

SaltLee 2023. 2. 21. 09:47

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 관련된 클래스가 안보여서 다른 방법으로..

class.js
0.00MB

2)

frida -U -l trace_ios.js -f [패키지명] 해서 실시간으로 사용하는 클래스 트레이싱 할 수 있다

여기서 jailbreak 관련 클래스랑 메소드 확인

trace_ios.js
0.00MB

3)

만약에 1)번에서 jailbreak 관련 클래스 확인 가능했으면

이 스크립트로 해당 클래스 내 메소드들 확인하면 된다

method.js
0.00MB

4) 

그 담에 클래스랑 메소드 가지고 후킹해서 리턴값 조작하면 됨

frida -U -l hook_ios.js -f [패키지명]

hook_ios.js
0.00MB

5) 

근데 사실 히어로님이 만든 후킹 스크립트로 걍 하면 됨ㅋ

frida -U -l jailbreak_ios.js -f [패키지명]

jailbreak_ios.js
0.01MB

 

여기까지 후킹 스크립트는 탈옥 관련 클래스랑 메소드 찾아서 후킹하는 방식인데

어떤 핵고수가 탈옥 탐지를 그냥 변수로 짜놨쥬 그래서 후킹이 안됐쥬

 

이게 탈옥 관련 클래스(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 클래스가 있긴 한데 이거랑은 다른건가?

 

로그에 중요정보 볼 때..

 

Comments