FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA OS X Keychain Forensic Artifacts Breaking the OS X & icloud Keychain n0fate n0fate@n0fate.com forensic.n0fate.com
목차 1. 서론 2. OS X 키체인분석 3. 아이클라우드키체인분석 4. 결론 forensicinsight.org Page 2
서론 - Mac OS X 소개 - OS X Keychain 소개 forensicinsight.org Page 3
Mac OS X 애플에서개발한유닉스기반의운영체제 2001 년 Mac OS X 10.0 Cheetah 로시작 XNU(XNU is Not Unix) Kernel 커널 : Darwin Kernel 컴포넌트 : BSD + Mach 애플의포터블디바이스도 OS X의구조를가지는 ios 를사용 OS X : imac, Mac Pro, Mac Mini, Macbook Pro (Retina) / Air ios : iphone, ipad, Apple Watch, Apple TV(1세대이후 ) https://en.wikipedia.org/wiki/os_x#/media/file:unix_timeline.en.svg forensicinsight.org Page 4
Windows & Mac OS X 윈도와맥아티팩트연구현황 종류 Windows Mac OS X 시스템로그 O( 이벤트로그 ) O( 시스템로그 ) 웹브라우저 O O 연락처 O O 이메일 O O 디스크암호화 O O......... 패스워드등기밀정보 O(or ) 오늘주제 패스워드관리방식비교운영체제 Windows Mac OS X 패스워드보관방식 각애플리케이션에서별도의알고리즘이용 ( 일부윈도의 DPAPI 이용 ) 키체인시스템이용 ( 일부별도의알고리즘이용 ) forensicinsight.org Page 5
OS X Keychain : Password Management System Mac OS 8.6에서공개된패스워드관리시스템 사용자생성, 애플리케이션생성기밀정보를통합관리하기위한인터페이스 ü 개발자가별도의기밀암호화를위한알고리즘을개발할필요가없음. 애플리케이션개발자는 Keychain API를통해손쉽게정보를저장 / 요청할수있음 키체인시스템은사용자기밀정보를암호화하여데이터베이스에저장함 사용자 / 애플리케이션의기밀정보를통합관리하기위한시스템 계정 / 패스워드 : 메일, 연락처, 일정, 애플리케이션, 원격접근, 암호화디스크, WiFi, 인터넷계정 인증토큰 : Facebook, Google, Twtter, Linked-in, 애플리케이션 개인키 / 공개키쌍, 인증서 카드정보 보안노트 forensicinsight.org Page 6
OS X Keychain : How to operate 정보저장 ( 암호화 ) 키체인서비스인터페이스 정보입력 ( 평문 ) forensicinsight.org Page 7
OS X Keychain : Timeline 2011 2013 2015 2009 2012 2014 Keychain Analysis with Mac OS X Memory Forensics. 2012 Mac OS X OS X Keychain icloud Keychain Breaking the keychain from digital forensic perspective. Codegate 2013 System Keychain Analysis. Sep. 2014 icloud Keychain Forensics. 2015 forensicinsight.org Page 8
키체인종류 ( 매버릭스이전 ) 키체인 이름설명경로 사용자키체인 시스템키체인 인증서키체인 사용자단위의사용자가생성한기밀정보를저장저장정보 : 사용하는애플리케이션의패스워드, 이메일계정, 사파리 / 크롬에서저장한계정정보, 신용카드정보, SSH/VPN 등보안프로토콜의인증정보, 보안노트등 시스템운영에필요한기밀정보를저장저장정보 : 공개키암호화에필요한개인키 / 공개키셋, WiFi SSID/ 패스워드정보등 디지털서명에필요한인증서를저장저장정보 : HTTPS 프로토콜의검증을위한인증서등루트, CA 인증서 ~/Library/Keychains/login.keyc hain /Library/Keychains/System.keyc hain /System/Library/Keychains/Syst em**certificate.keychain OS X Keychain 사용자가필요시새로운키체인을생성 / 삭제도가능 레코드의임의추가 / 삭제도가능 사용자들이키체인을기밀정보보관소용도로사용하기도함. forensicinsight.org Page 9
키체인종류 ( 매버릭스이후 ) 키체인 이름설명경로 사용자키체인 시스템키체인 인증서키체인 아이클라우드키체인 사용자단위의사용자가생성한기밀정보를저장저장정보 : 사용하는애플리케이션의패스워드, 이메일계정, 사파리 / 크롬에서저장한계정정보, 신용카드정보, SSH/VPN 등보안프로토콜의인증정보, 보안노트등 시스템운영에필요한기밀정보를저장저장정보 : 공개키암호화에필요한개인키 / 공개키셋, 로컬에서생성한 WiFi SSID/ 패스워드정보저장 디지털서명에필요한인증서를저장저장정보 : HTTPS 프로토콜의검증을위한인증서등루트, CA 인증서 아이클라우드를통해특정정보를공유할수있도록새로운데이터베이스를구성저장정보 : 이메일계정, 웹브라우저에서저장한기밀정보, 신용카드정보, 아이클라우드로동기화되는모든 WiFi SSID/ 패스워드정보가저장 ~/Library/Keychains/login.keyc hain /Library/Keychains/System.keyc hain /System/Library/Keychains/Syst em**certificate.keychain ~/Library/Keychains/[UUID]/ke ychain-2.db 아이클라우드키체인 ios 장비의키체인분석이불가능상황에서유용한아티팩트로활용가능 기존키체인과다른암 / 복호화구조로추가분석이필요 forensicinsight.org Page 10
OS X 키체인분석 - 키체인의구조설명 - 키체인분석방법 forensicinsight.org Page 11
OS X 키체인분석 2012 년키체인분석화이트페이퍼공개및발표 Kyeongsik Lee, Hyungjoon Koo. Keychain Analysis with Mac OS X Memory Forensics. 2012. Kyeongsik Lee. Breaking the Keychain from digital forensic perspective. Codegate 2013. 구조 Apple Database File Format ü SQLite 보다조금더단순한구조를가지고있음. 사용자패스워드를마스터키생성인자로활용 키추출방법 메모리에서추출 (System Keychain, User Keychain) 마스터키저장파일에서추출 (System Keychain) forensicinsight.org Page 12
OS X 키체인분석 ( 복호화과정 ) Security Daemon Master Key Decryption Record Key Decryption Encrypted Blob Decryption DB Key Record Key Record Key Record Key Encrypted Blob Encrypted Blob Keychain Database forensicinsight.org Page 13
OS X 키체인분석 마스터키추출방법 파일추출 ( 시스템키체인키만추출가능 ) System Keychain Analysis. http://forensic.n0fate.com/2014/09/system-keychain-analysis/ Command : sudo xxd ps /private/var/db/system.key tr \n, \0 메모리추출 ( 시스템 / 사용자키체인키추출가능 ) volafox: decrypting the keychain file using volafox. ü http://forensic.n0fate.com/2012/09/volafox-decrypting-the-keychain-file-using-volafox/ Command : volafox i [MEMIMG] o keychaindump forensicinsight.org Page 14
OS X 키체인분석 키체인데이터베이스분석 chainbreaker (http://forensic.n0fate.com/tools/chainbreaker) forensicinsight.org Page 15
아이클라우드키체인 forensicinsight.org Page 16
아이클라우드키체인 2013 년 6 월 OS X Mavericks(10.9) 공개 현재는 Yosemite (10.10, 2014 년 6 월발표 ) 이최신운영체제 올해 6 월에 El Capitan( 엘케피탄 ) 발표 ( 현재베타테스트 ) Mavericks 이후의변화 (ios와의통합시작 ) App Nap (Mavericks) 전원관리관련기능으로분석할내용은없음 Compressed Virtual Memory (Mavericks) 메모리압축, volafox에서분석가능 icloud Keychain (Mavericks) Continuity (Yosemite) Forensic Insight를통해발표 icloud Drive (Yosemite) Sans Euro DF Summit 2013에서아이클라우드정보수집관련발표 forensicinsight.org Page 17
기존키체인운영 이메일등록 forensicinsight.org Page 18
아이클라우드키체인 클라우드 정보전달 이메일등록 forensicinsight.org Page 19
아이클라우드키체인 애플장비간의연동성을높이기위한기능 패스워드관리시스템인키체인 (Keychain) 의정보공유기능 forensicinsight.org Page 20
아이클라우드키체인분석 아이클라우드키체인 ~/Library/Keychains/[UUID]/ 에저장함. ü [UUID] : 각 OS X 장비의고유ID를말하며, Mac에서는 IOPlatformUUID로불림 ü # ioreg lw0 grep PlatformUUID 분석을위해 2 개의파일이필요함 ü user.kb : Keybag. 아이클라우드키체인의데이터암호화에사용되는클래스키 (Class Key) 저장 ü keychain-2.db : icloud Keychain DB. SQLite 포맷으로사용자데이터를암호화하여보관 icloud Keychain DB 를클래스키로암호화하는방법은 ios 와유사 forensicinsight.org Page 21
아이클라우드키체인분석 복호화과정 icloud Keychain Keybag 데이터관리 암호화된데이터수신 클래스키수신및데이터복호화 secd 데이터암 / 복호화요청 (IOConnectCallMethod API) AppleKeyStore Passcode Key 암 / 복호화정보전달 Kernel Memory Device Key com.apple.lakitu 아이클라우드키체인동기화 icloud forensicinsight.org Page 22
아이클라우드키체인분석 키백 (Keybag) 분석 키백관리프로세스 : secd 아이클라우드키체인관리, 클라우드동기화지원프로세스 키백 / 아이클라우드데이터베이스해석수행 키백 / 아이클라우드컨텐츠의암 / 복호화기능은키백데몬을호출 키백데몬 : AppleKeyStore.kext 디바이스키 (Device Key), 패스코드키 (Passcode Key) 를생성 ü 디바이스키생성 : IOPlatformUUID를인자로사용 ü 패스코드키생성 : 디바이스키, User Password 필요, 특허 (System and method for content protection based on a combination of a user pin and a device specific identifier, Apple. Inc, US20110252243) 을약간변형 전달받은데이터를해당클래스키로암 / 복호화 forensicinsight.org Page 23
아이클라우드키체인분석 키백 (Keybag) 분석 Device Key Generation Passcode Key Generation forensicinsight.org Page 24
아이클라우드키체인분석 키백 (Keybag) 분석 ios의키백과동일한구조 Big-Endian, TLV(Type-Length-Value) 구조 시스템키백, 버전 4 키백헤더 : Passcode Key 생성과 Device Key 검증에사용 클래스키 키체인레코드및파일암호화에사용되는키 ü 파일암호화키 : 클래스번호 1~5, OS X에서사용되지않음 ü 키체인암호화키 : 클래스번호 6~12, 키체인암호화에사용 WRAP 설정에따라복호화방법이다름 ü WRAP이 1이면 Device Key 로 AES with CBC 복호화. ü WRAP이 3이면, Passcode Key로 AESUnwrap(RFC3394) 후, Device Key로 AES with CBC 복호화 forensicinsight.org Page 25
아이클라우드키체인분석 키백 (Keybag) 분석 Class Key Class Key Class Key Keybag Platform UUID if wrap == 1b keybag header Encrypted Class Key 1 AppleKeyStore.kext Device Key AES with CBC Wrapped Class Key 2... Wrapped Class Key C User Password Passcode Key AESUnwrap (RFC3394) if wrap == 11b forensicinsight.org Page 26
아이클라우드키체인분석 키체인데이터베이스분석 SQLite3 파일포맷 Journal Mode : Write-Ahead Logging (WAL) ü Portable Device 일수록 WAL 를먼저분석하는것이좋음 데이터관리 테이블 : genp, inet, keys, cert 모든컬럼의데이터가암호화되어있음 ü 분석결과 data 필드만분석하면모든정보를획득할수있음 복호화된데이터는 ASN.1 DER(Distinguished Encoding Rules) 포맷을가짐 forensicinsight.org Page 27
아이클라우드키체인분석 키체인데이터베이스복호화 Class Keys if class == 7 Class Key 7 data version (4) AESUnwrap (RFC3394) class (4) wrappedkey Len (4) Unwrapped Key wrappedkey (n) Encrypted Data (n) AES-GCM auth tag (16) Decrypted Data (ASN.1 DER) forensicinsight.org Page 28
아이클라우드키체인분석 키체인데이터베이스분석 주요컬럼 (FourCharCode) 정보 컬럼 cdat mdat desc 설명 Creation Date. 해당레코드의생성시간을말한다. 사용자가처음으로애플리케이션로그인을수행하거나, 특정 SSID 에최초연결된시간정보를가진다. 유닉스타임 (Unix Time) 값을가진다. Modification Date. 해당레코드의최종수정시간을말한다. 기등록된계정의패스워드가변경되는경우이시간이변경된다. 유닉스타임 (Unix Time) 값을가진다. Description. 해당레코드에대한부가적인설명을기록한다. Wi-Fi 정보일경우 `Airport network password` 라는값이기록된다. labl Label. 말그래도표식이며, 파일이삭제된경우에는해당필드를제거한다. acct Account. 계정이름을저장한다. data Data. 패스워드와같이사용자가숨기고자하는정보를저장한다. srvr Server. 해당기밀정보가사용되는서버주소를저장한다. sync tomb Sync. 해당레코드를아이클라우드키체인으로동기화할지를 Flag 로설정한다. 사용자가등록하는계정정보는기본으로동기화가활성화되어있다. Tomb. 해당데이터를더이상사용하지않는지를 Flag 로표시한다. Flag 가활성화 (1) 되어있으면, 해당정보를더이상사용하지않는것으로간주한다. forensicinsight.org Page 29
아이클라우드키체인분석 아이클라우드키체인분석도구 ichainbreaker 언어 : Python 2.7 인자 ü 키체인디렉터리경로 ü 사용자패스워드 ü 복호화된정보를저장할 SQLite DB 파일이름 (Optional) Chainbreaker 와통합될예정 forensicinsight.org Page 30
아이클라우드키체인분석 키체인데이터베이스분석 ( 시간정보 ) Unix-Time, GMT-0로설정 cdat : 사용자가최초정보를생성한시점 ( 신규 WiFi AP에접속했을경우 ) mdat : 레코드에모든정보가기록된시점, 정보수정시점 클라우드 이메일등록 A 디바이스에서새로운레코드를등록한경우 B 의시간정보설정은? A 와동일하게설정됨. 즉, 시간정보도함께공유함. forensicinsight.org Page 31
아이클라우드키체인분석 키체인데이터베이스분석 ( 삭제정보 ) 예 ) WiFi 정보 A 장치에등록하여동기화된상태에서 A 의 WiFi 정보를삭제하는경우 클라우드 WiFi 정보삭제 A B 삭제한디바이스 (A) 키체인접근 (Keychain Access) : 나타나지않음 데이터베이스분석 : data, labl, desc 필드정보만제거하고 tomb 필드를 1 로설정함 ü 최종수정시간이삭제한시간으로변경 ( 정보삭제시점, 해당 AP 최초접근시간확인가능 ) 연동된다른디바이스 (B) 도동일함. forensicinsight.org Page 32
아이클라우드키체인분석 키체인데이터베이스분석 ( 삭제정보 ) - 다중디바이스접속 예 ) A,B 두장치에각각 Wi-Fi 를접속정보를등록하고, A 장치만초기화한경우 A 장치는초기화되어복구불가 클라우드 2. 초기화 A 1. 인증 1. 인증 B B 에는그정보를유지함 B 의아이클라우드키체인에서는제거된상태로표현 (tomb flag => 1) B 의시스템키체인에는정보를유지 forensicinsight.org Page 33
결론 사용자기밀정보를담고있는저장소로필히분석이필요함. 웹브라우저로접속한사이트의계정정보확보 키체인정보외숨기고싶은정보를보안노트형태로보관함. SSH, VPN, Cloud 기능을제공하는소프트웨어의대부분이키체인을활용함 아이클라우드키체인분석 사용자가접속한무선네트워크정보수집에효과적 ü 최초접속시간, 최종패스워드변경시간확인가능 ios 장비를분석하지않더라도 ios에저장한기밀정보확인가능 ü 이메일, 신용카드, 웹사이트 Form, 무선 AP 정보등 메모리에서키를추출하는방법연구필요 forensicinsight.org Page 34
Question and Answer forensicinsight.org Page 35