본문 바로가기

해킹-보안

IOS 앱 추출 및 바이너리 복호화

반응형

ி IOS 앱 경로

 
* iOS 내장앱 / 외장앱 위치
내장앱 : 초기 설치 앱 경로 (/Applications)
외장앱 : App Store 등 외부 설치 앱 경로
  • iOS 7 이하 - /var/mobile/Applications/앱_암호화_이름
  • iOS 8 이상 - /var/containers/Bundle/Application/앱_암호화_이름/앱이름.app
  • iOS 8 이상 - /var/mobile/Containers/Data/Application/앱_암호화_이름/



ி IOS SSH 접근

 
iphone ssh 로그인 - root/alpine
> iPhone root#: cd /var/containers/Bundle/Application/
> ls * | grep -i [앱 이름] -B 3
> tar cvf [압축할 tar 파일명] [앱 ID]
> scp root@[단말기IP]:/var/containers/Bundle/Application/[압축된 tar 파일명] .


ி Cydia 패키지 설치

 
> frida
> iOS Toolchain 혹은 darwin Toolchain
> 3utools > Toolbox > 3utools 실행 후 iTunes 대신 install drive 설치
frida-ps -U 실행 시 "Waiting for USB device to appear" 오류가 발생하는 경우
드라이버 설치가 안된 것임


ி IOS 바이너리 파일 디코딩

 
ssh 접속 시 단말기 IP가 아닌 localhost 로 접근 가능하도록 설정,
vs에서 frida Workbench 검색 > Details > iproxy github에서 다운

PS C:\Users\libimobiledevice.1.2.1-r1122-win-x64> ./iproxy.exe 22 22
// flexdecrypt github에서 flexdecrypt.deb 파일 다운 후 단말기 내 /var/root 밑으로 이동
> scp -P 22 ./flexdecrypt.deb root@localhost:/var/root/


ி 앱 복호화

iPhone:~ root# cd /var/root
iPhone:~ root# dpkg -i flexdecrypt.deb
iPhone:~ root# flexdecrypt
iPhone:~ root# find /var/containers/Bundle/Application/ -iname appname*
iPhone:~ root# flexdecrypt /var/containers/Bundle/Application/756D6C85-30C5-41C3-B2A1-A093FA0E34F3/appname.app/appname
※ 앱 바이너리 이름은 상위 디렉터리 .app 의 이름과 동일함

// 복호화 여부 확인
> otool -l <app binary path> | grep cryptid
- cryptid가 0이면 정상적으로 복호화 된 것임

// 바이너리 파일 추출
> 복호화된 바이너리 파일을 tmp로 이동
> scp -P 22 root@localhost:/tmp/appname .















반응형