[논문 리뷰] icloud ...
문제
- 수사관이 iCloud 계정에 로그인할 수 있다면, 이와 연동된 다른 Apple 서비스에 접근 가능하여 수사에 유용할 수 있음
- 그러나 iCloud는 1단계 및 2단계 인증을 요구하므로, 계정 접근이 어렵고, 추가 인증을 위한 기기 확보 필요
해결
- Windows 환경의 활성/비활성 상태 시스템에서 로컬 저장소 및 물리 메모리 분석을 통해 2단계 인증을 우회할 수 있는 iCloud 인증 정보 추출 방법 소개
- 이를 반영한 iCloud 디지털포렌식 수사 절차 제안
- 가상 시나리오 구성
개념
[Windows DPAPI]
- Windows Data Protection API의 약어로, Windows에서 제공하는 암호화 서비스를 구성하는 CryptAPI의 한 종류
- 사용자 인증정보(웹사이트 비밀번호, 자동 로그인 쿠키, 크로미움 암호화 키 등)를 암호화하여 저장해두었다가 필요시 복호화하여 사용자 인증을 시도
- 활성 상태 시스템에서는 CryptProtectData 및 CryptUnprotectData API를 호출하여 사용자 인증 정보를 암호화하거나 복호화 가능
- 비활성 시스템에서는 Windows 로컬 계정 비밀번호의 SHA-1, 사용자 GUID 파일, SID 값을 이용해 DPAPI 마스터키를 획득한 후, 이를 통해 암호화된 사용자 인증 정보를 복호화
- Windows 로컬 계정 대신 Microsoft 계정을 사용한 시스템의 경우에는, 활성 상태에서는 CryptAPI를 통해 사용자 인증정보 암복호화가 가능하지만, 비활성 상태에서는 SHA-1 계산 방법이 다르며, DPAPI password의 SHA-1 값을 의미
[iCloud Inernal API]
오픈 소스로 공개되어 있음
iCloud 계정 접근 방법
1. 1단계 인증 + 2단계 인증(iCloud 계정과 연동된 기기로 랜덤 6자리 코드)
2. 1단계 인증 + 브라우저 신뢰 토큰
3. PCS 세션(사용자가 iCloud 최종 로그인에 성공할 경우, 서버로부터 PCS 세션을 발급 가능): 물리 메모리 내 웹 브라우저 프로세스에 존재하는 정보로, 로컬에는 일반적으로 저장되지 않지만, 1단계 인증 페이지에서 로그인 상태 유지 옵션을 설정한 경우, 로컬에 저장하여 사용할 수 있음. 이를 획득한 경우 iCloud 로그인 프로세스를 거치지 않고 데이터에 직접 접근이 가능
iCloud 인증 정보 추출
활성 상태 시스템과 비활성 상태 시스템을 구분하여 iCloud 인증 정보 추출 방법을 정의 + 로컬 vs. 메모리
- 활성 상태: 현장의 라이브 PC로, 관리자 권한 획득이 가능한 상황
- 비활성 상태: PC가 꺼져있는 상태로 수사관이 로컬에 대한 이미지 사본을 획득한 상황
1. 활성 + 로컬
=> 1단계 인증 정보(ID/PW), 브라우저 신뢰토큰, PCS 세션 정보 추출 가능
- 해당 인증 정보는 모두 AES-GCM으로 암호화
2. 활성 + 메모리
=> iCloud 계정 ID, 브라우저 신뢰토큰, PCS 세션 정보 추출 가능
3. 비활성 + 로컬
=> 활성 상태와 동일한 정보 추출 가능
- DPAPI 마스터키는 수동 획득 필요
4. 비활성 + 메모리
=> 활성 상태와 동일한 정보 추출 가능
- hiberfill.sys 수집을 통해 iCloud 인증 정보 추출
추출한 iCloud 인증 정보 활용
[iCloud 인증 정보]
- 계정 ID/PW
- 브라우저 신뢰토큰
- PCS 세션 정보
- X-Apple-Session-Token
오 ..