본문 바로가기
리버싱

IOS App 동적분석하기 with LLDB (Tested on ios 11.4.1)

by dladbru 2019. 6. 10.

2016년 초, IOS 분석과 관련된 글을 쓴적이 있었다.

 

https://empier.tistory.com/98?category=451796

 

IOS App 분석

국내에 IOS App분석에 대한 내용을 찾아봤으나 많지도 않았고 맥북을 이용하란의견이 많았다. 아래와 같이 해결했다. github에서 소스코드를 받아 make를 하셔도 되지만 저는 맥북이 없어 컴파일이 제대로되지 않..

empier.tistory.com

 

https://empier.tistory.com/126

 

아이폰 탈옥 , 루팅에 의해서 은행 어플을 못쓰게 된 분석가 feat.SC은행

아이폰을 작년즈음에 루팅을 했었다. 루팅을 해서 좋은점도 있고 재미난 점도 많이 있는데 모든 루팅 한사람들이 생각하는 불편한 점 1순위는 은행 앱이 차단되는 현상이 아닐까 싶다. 심지어 작년 11월달부터 우..

empier.tistory.com

 

 

테스트 환경

기기 : 아이폰 SE
기기버전 : IOS 11.4.1
익스플로잇 : UnCover 3.21
CPU칩 A11 이하 디바이스

주의사항

UnCover 탈옥 설정 화면

아이폰에서는 타 프로세스에 대한 권한을 가지고 있지않으므로
Set get-task-allow, Set CS_DEBUGGED
위 두개의 옵션을 활성화하고 탈옥해야한다. 그리고 실행되는 분석프로그램이( 예로 debugserver )
get-task-allow가 true로 서명되야한다.

LLDB를 이용한 디버깅 방법 순서

Step 1 : debugserver 다운로드(첨부파일)

Step 2 : 아이폰의 /usr/bin/ 의 경로에 넣고 퍼미션을 755로 변경. 만약 이미 debugserver가 존재한다면 이 파일을 debugserver2로 이름을 바꾼다.

Step 3 : 아이폰에 두개의 deb를 설치해야한다. (첨부파일)
python-v2.7.6-proteas-2015-11-30.deb
lldb-v3.8.0-proteas-2016-05-06.deb

Step 4 : PC에서 아이폰의 프롬프트를 두개 연 뒤, 그중 하나에서 "spawn /usr/bin/debugserver 127.0.0.1:22" 입력

Step 5: 두번째 프롬프트에서 "spawn /usr/bin/lldb" 입력하고 "process connect connect://127.0.0.1:22"

Step 6: 디버깅을 시작할 수 있다.

번외: 앱을 시작지점부터 디버깅하고 싶다면 waitfor 인자 추가하고 페이코 실행 이후 LLDB로 연결
Ex) spawn /usr/bin/debugserver 127.0.0.1:22" -waitfor payco

디버깅 시작 화면

※ IOS 11.3을 비롯한 이전버전부터 watchpoints가 안된다고하지만 사용하지도 않아도 분석에 문제가 없었음.

메모리 맵

커맨드 : image list
설명: 현재 Memory Map에 매핑된 바이너리 정보를 알 수 있다. 100개 이상의 라이버르리가 매핑되어있는데, 보통 앱의 코드는 최상위에 있다.

메모리 덤프

커맨드 : memory read --outfile /tmp/mem.txt 0x6080000fe680 0x6080000fe680+1000
설명: 지정된 부분까지 메모리 덤프

메모리 값 출력

커맨드 : x/1x 0xaddress
설명: 주소에 위치한 값 출력

메모리 값 설정

커맨드 : memory write 0xaddres 0xvalue
설명: GDB의 set *0xaddress=0xvalue
1byte가 아닌 4byte만큼 입력할때는 인자로 길이를 지정해줘야한다.
ex) memory write -s 4 0xaddres 0x12345678

레지스터 값 출력

커맨드 : reg read
설명 : GDB의 info reg
모든 레지스터를 출력해준다.

브레이크포인트

커맨드 : b* 0xaddress
설명: 브레이크 포인트, GDB와 같다.
br di 로 모든 브레이크 포인트를 비활성화 할 수 있다.

 

 

 

 

 

 

 

=========== 2024년 7월 6일 내용 수정 =============

iOS 17인 지금도 분석을 하고 있다 (rootless)

tweak 빌드, 디버깅이 가능한데 오늘 네트워크가 안좋아서그런지, 127.0.0.1은 안되는데localhost로 연결은 가능하다..

반응형

댓글