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

홈 > IOS > IOS > 강좌
IOS

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

S zzanghacker 12 9609 5

개요

린님이 작성하신 OLLVM와 같은 솔루션에 의해 정적 분석이 어려운 앱의 경우에 동적분석이 필히 필요하다.
이에 동적분석을 해 분석을 가능한 방법을 알고, 트윅을 제작하기 위한 코드 지점을 확인하고 싶어 시도해본다.

테스트 환경

기기 : 아이폰 SE , 아이폰 8
기기 버전 : IOS 11.4.1,IOS 12.4
익스플로잇에 사용된 버전 : UnCover 3.21
CPU칩 A11 이하 디바이스만 가능할 것으로 추정

주의사항

img.pngUnCover 탈옥 설정 화면

아이폰에서는 타 프로세스에 대한 권한을 가지고 있지않으므로
Set get-task-allowSet CS_DEBUGGED
위 두개의 옵션을 활성화하고 탈옥해야한다. 그리고 실행되는 분석프로그램이( 예로 debugserver )
get-task-allow가 true로 서명되야한다. (서명은 ldid 같은 커맨드로 진행가능하다. 이는 검색해보시기를.)

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

Step 1 : debugserver 다운로드(Xcode에서 추출가능하나 필요하시면 댓글 남겨주시면 업로드하겠습니다. )

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: 디버깅을 시작할 수 있다.



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

디버깅 시작 화면

img.png

GDB처럼 분석을 할 수 있었으나 몇몇 커맨드가 익숙하지 않으실 것 같아 아래에 분석에 필요한 명령어를 적어두겠습니다. 




 

메모리 맵

커맨드 : 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 로 모든 브레이크 포인트를 비활성화 할 수 있다.

 




12 Comments
1 Coat 2019.10.19 18:03  
오 꿀정보 감사합니다
4 knock31 2019.10.19 18:23  
좋은정보 감사합니다
M LIN 2019.10.19 18:25  
크.. 정성글에 따봉 박고갑니다
S 붉은상어 2019.10.23 17:20  
good~~~~~~~!
9 단향 2019.12.24 11:06  
감사합니다
28 사딸라 2020.01.08 23:55  
이런글은 추천이죠
3 eiruty 2020.01.17 14:26  
감사합니다
1 Simson 2020.02.25 22:14  
감사합니다.
1 노잼사 2020.04.21 00:57  
파일들 업로드 가능하신가요? ㅎ
7 임중호 2020.05.24 00:43  
감사합니데이
1 quinnz 2020.08.03 18:28  
감사합니다!
4 쿨록 2020.08.09 17:09  
정말 감사합니다