IOS Local Data Storage IOS Application이 동작하다가 Local Data Storage에 민감한 데이터가 저장될 수 있는 공간들의 종류를 살펴보고 그 공간을 objection tool을 사용해 점검하는 방법을 살펴본다. Keychain "ios keychain dump" 명령어를 사용해 Keychain에 저장된 데이터를 확인할 수 있다. 예시코드는 아래와 같다. Binary Cookie "ios cookies get --json" 명령어를 사용해 Binary Cookie에 저장된 데이터를 확인할 수 있다. 실제 내 앱에서는 Binary Cookie에 데이터를 넣는 실습은 진행해보지 못했다. Binary Cookie에 데이터가 저장되면 아래와 같이 출력되는 것을 확인할 수 있다..
objection은 FRIDA를 기반으로 동작하는 Mobile Application Runtime Analyze Tool 이다. Android와 IOS에서 모두 사용가능하지만 명령어의 차이가 존재한다. 해당 포스팅에서는 IOS에 대해서만 다루도록 한다. 추후 Android를 다시 공부하게 된다면 반드시 다시 공부해보고 싶을만큼 강력한 Tool이다. https://github.com/sensepost/objection sensepost/objection 📱 objection - runtime mobile exploration. Contribute to sensepost/objection development by creating an account on GitHub. github.com objection ..
lldb를 사용해 IOS의 Application 동적 디버깅을 진행하는 방법에는 두가지가 있다. 1) macOS의 xcode를 사용해 원격으로 디버깅을 진행하는 방법 2) lldb-10 tweak을 설치해 로컬에서 진행하는 방법 (별다른 Source를 추가하지 않고 그냥 검색을 하면 나온다.) 나는 후자를 선택해서 진행했으며 로컬연결은 OpenSSH를 설치해 터미널상에서 진행했다. IOS Version : IOS 12.4.8 IOS Device : IPhone 6 Jailbreak : Yes (unc0ver) lldb-10 을 사용해 Process를 Attach하는 방법 1. ps -ef 를 사용해 Attach하고 싶은 Proccess의 PID를 찾는다. (당연히 App을 실행한 이후에) 2. lldb-..
frida-tools 에 기본적으로 포함되어 있어서 frida만 설치하면 사용이 가능하다. frida-trace [option] target target : Default는 PID를 사용한다. -f 옵션을 통해서 패키지명을 사용할 수 있다. -n 옵션을 통해서 프로세스명으로 사용할 수 있다. option : -i "*Jail*" 을 통해서 함수명을 검색할 수 있다. -m "-[* *Jail*]" 을 통해서 Objective-C 의 클래스/메서드 검색할 수 있다. 더 자세한 내용은 -h을 통해서 확인할 수 있지만 ios에서 이정도면 충분히 활용이 가능하다. 이렇게 시간의 흐름에 따라 필터링된 API들이 호출된다. -f 옵션으로 호출하면 App이 시작하면서 tracing이 된다. 그러나 App 실행 중간부터..
IOS에서 Application에서 탈옥을 탐지하기 위해서 사용하는 코드의 예시들을 살펴보겠다. 크게 2가지로 나눌 수 있다. 1. 탈옥시 생기는 경로가 존재하는지 확인해 탐지하는 방법. 2. 탈옥시 생기는 Root 권한으로만 접근할 수 있는 곳에 접근해 탐지하는 방법. 이외에 추가적인 방법이 존재하긴한다. 밑에서 소개하도록 한다. 1. 탈옥시 생기는 경로의 존재여부 검사. (여러 앱을 분석하면서 검사하는 경로를 추가할 예정이다.) (fileExistsAtPath: 함수를 통해서 경로의 존재여부를 판단한다.) (NSArray에 경로들을 쭈욱 넣고 아래와 같은 루틴으로 일치하는게 존재하는지확인한다.) 이와 같이 fopen 함수를 통해서도 판단할 수 있다. (최신) - *표시한게 현재 내 환경에서 탐지된 경..
IPA의 Binary Patch를 통해서 ARM Assembly로 구성된 코드 자체를 수정해 내가 의도한 실행흐름으로 바꾸게 된다. Binary Patch를 하게되면 무결성 검증에 걸리기 때문에 무결성 검증이 기본적으로 우회가 되어있어야 한다. ( 무결성 검증 이전의 동작에 대해서는 Binary Patch를 통해서 수행이 가능하다. ) Binary Patch를 수행하는 과정을 살펴보자. 사용한 앱은 DVIA에서 제공하는 앱이며, Runtime Manipulation Login Method1에 대해서 진행했다. 1. IPA 추출(Decrypt)후 Binary File을 IDA에 올린다. IPA 파일를 CrackerXI를 통해서 Decrypt한 후 추출한다. 왼쪽에 정상적으로 복호화된 API를 확인할 수 있..