본문으로 바로가기

Keychain 이란?

- iOS 키체인은 암호화 키와 세션 토큰과 같은 데이터를 안전하게 저장할 수 있는 암호화된 데이터베이스이다.
- 키체인은 API를 통해 접속할 수 있고 SQLite 데이터베이스로 구현되어있음.
- macOS에서는 모든 애플리케이션이 원하는 만큼 키체인을 만들 수 있으며, 로그인 계정마다 키체인이 존재하지만, iOS의 키체인은 모든 앱에서 하나의 키체인만 사용할 수 있음.
- kSecAttrAccessGroup 속성의 접근 그룹 기능을 통해 동일한 개발자가 서명한 앱 간 항목에 대한 접근 공유 가능.
- 키체인에 대한 접근은 securityd 데몬에 의해 관리됨.
- 앱의 키체인 액세스 그룹, 애플리케이션 식별자 및 애플리케이션 그룹 사용 권한에 따라 관리.

 

DVIA-v2 앱을 통한 실습

로컬 시스템(iOS 설치기기) 내에 중요 정보가 평문으로 저장되는지 확인하기 위해 DVIA-v2 앱을 실행.

 

DVIA-v2 앱 설치방법은 아래의 글을 참고하길 바람.

2022.07.01 - [Mobile App 취약점 진단/iOS App 진단] - [iOS App 진단] 04강 - 진단 대상 설치

 

[iOS App 진단] 04강 - 진단 대상 설치

iOS 앱 진단을 위해 설치 파일을 요청하면, 대개 아래 3가지 방법 중에 하나의 방법으로 전달해준다. 1. 앱 스토어를 통해 설치 이미 앱 개발이 완료되어 앱스토어에 등록되어 있을 경우, 앱스토어

hagsig.tistory.com

 

메인메뉴 좌측 상단 메뉴 클릭 > Local Data Storage 클릭 > Keychain 클릭

 

평문 저장 테스트를 위한 Text 입력 > Save in Keychain 클릭 > OK 클릭

 

Keychain에 저장된 데이터를 확인하기 위해서는 Keychain-Dumper가 필요하다.

GitHub - ptoomey3/Keychain-Dumper: A tool to check which keychain items are available to an attacker once an iOS device has been jailbroken

 

GitHub - ptoomey3/Keychain-Dumper: A tool to check which keychain items are available to an attacker once an iOS device has been

A tool to check which keychain items are available to an attacker once an iOS device has been jailbroken - GitHub - ptoomey3/Keychain-Dumper: A tool to check which keychain items are available to a...

github.com

 

Keychain-Dumper 다운을 위해 위 사이트에 접속 > Code 버튼 클릭 > Download ZIP 클릭

 

다운로드한 압축파일을 3uTools Files의 / 경로에 Drag&Drop으로 집어넣는다.

 

Common tools 클릭 > Edit 클릭

 

Open SSH Tunnel 의 + 버튼 클릭 > save 클릭

 

Common tools 클릭 > Open SSH Tunnel 클릭

 

SSH client 버튼 클릭 > 예(Y) 버튼 클릭

 

반응형

 

Keychain-Dumper 설치 및 데이터 추출을 위해 아래와 같은 명령어를 입력한다.

cd /
unzip Keychain-Dumper-master.zip
cd /Keychain-Dumper-master
chmod 755 setup_on_iOS.sh
sh +x setup_on_iOS.sh
chmod 755 keychain-dumper
./keychain_dumper >> dump.txt

 

생성된 dump.txt 파일을 더블클릭하여 내용을 확인한다.

 

메모장의 찾기(Ctrl + F) 기능을 통해 입력한 텍스트가 존재하는지 검색한다.

입력한 텍스트가 평문으로 저장된 것을 확인할 수 있다.

 

Keychain-Dumper 에 입력한 텍스트가 없는 경우 

keychain_dumper 실행 시, 아래와 같이 [HINT] You should unlock your device! 이라고 뜨는 경우에는 결괏값이 제대로 출력되지 않음. 아래의 과정을 통해 암호 설정 시 입력한 텍스트가 출력됨.

 

설정 > Touch ID 및 암호 > 암호 켜기 > 암호 입력

 

※ ldid.cpp(3164): _assert(): errno=2 오류 해결 방법

아래와 같은 오류가 발생하는 경우는 Keychain-Dumper-master.zip 파일 안에 keychain_dumper 파일이 없어 발생하는 오류이다.

 

아래의 링크에 접속하여 keychain_dumper-1.1.0.zip 파일을 다운로드한다.

GitHub - ptoomey3/Keychain-Dumper at 1.1.0

 

Release V1.1.0 · ptoomey3/Keychain-Dumper

This release lets you specify multiple entitlements with the -s flag.

github.com

 

다운로드한 파일의 압축을 해제하여 나온 keychain_dumper 파일을 /Keychain-Dumper-master 폴더 안으로 옮긴다.

이후 setup_on_iOS.sh 파일 실행 시 오류가 발생하지 않을 것이다.

 

※ dyld: Symbol not found: _objc_opt_new 오류 해결 방법

아래와 같은 오류가 발생하는 경우는 다운로드한 Keychain-Dumper의 버전이 현재의 기기에 설치된 iOS 버전과 맞지 않아 발생한 오류이다.

 

아래의 사이트에 접속하여 버전이 낮은 Keychain_Dumper를 다운로드하여 실행시키면 오류가 발생하지 않을 것이다.

Releases · ptoomey3/Keychain-Dumper (github.com)

 

Releases · ptoomey3/Keychain-Dumper

A tool to check which keychain items are available to an attacker once an iOS device has been jailbroken - ptoomey3/Keychain-Dumper

github.com

 

keychain_dumper 파일이 삭제된 경우

setup_on_iOS.sh 파일 실행 후, keychain_dumper 파일이 삭제된 경우가 있다.

위 keychain_dumper 파일을 다운로드하는 방법을 참고하여 /Keychain-Dumper-master 안으로 옮긴 후 실행하면 된다.

 

데이터 평문 저장 대응방안

아래의 게시글을 참조하여 데이터가 평문으로 저장되지 않도록 한다.

2023.01.15 - [Mobile App 취약점 진단/iOS App 진단] - [iOS App 진단] 05강 - 저장소 내에 중요 정보 평문 저장(저장 위치)

 

[iOS App 진단] 05강 - 저장소 내에 중요 정보 평문 저장(저장 위치)

iOS 애플리케이션은 임시 데이터와 영구 데이터를 로컬 시스템(iOS 설치기기)에 저장할 수 있다. 데이터를 평문으로 저장하게 될 경우 계정 정보(ID/PW), 고객 정보, 서버 정보 등과 같은 중요 정보

hagsig.tistory.com