
조나단레빈
10대부터(좋은의미의)해킹을시작했고,1993년에는2400보(baud)모뎀을사용하는XT에서셀이돌아가는방식을알아내기위해노력했다.따로배울만한곳이없었기때문에감사관련매뉴얼(man)페이지를반복적으로보며독학해야했다.
그후20년동안많은변화가일어났고유닉스(UNIX)를처음시작해리눅스를사용중이며,윈도우와OSX또한사용하고있다.보안분야에서시작해수년간컨설팅과교육을해오던중,보안이내부구조를상세하게파악하는것임을깨달았다.마침내좋은사람들과함께테크놀로긱스닷컴(Technologeeks.Com)을창업했다.지금은테크놀로긱스닷컴의최고기술경영자(CTO)로근무중이다.
애플의OS관련집필은『MacOSXandiOSInternals』(O’Reilly,2012)로시작했으며,이과정속에서도파민이급격히분비하는짜릿함을느낄수있었다.이제는중독됐으며,안드로이드와관련된집필을시작할당시알게된로니페더부시(RonnieFederbush)의충고에따라처음으로자가출판을감행했다.이작업은원활하게진행됐고,『MacOSXandiOSInternals』1권을처음생각했던방식으로다시집필할수있는기회를얻을수있었다.출판사의변덕을피하고,검열을받지않으며,페이지수와예산에신경쓸필요도없었다.그결과3부작중지금여러분이읽고있는새로운『*OSInternalsVol.3』를출간할수있게됐다.
1장.인증
__패스워드파일들(*OS)
__setuid와setgid(macOS)
__PluggableAuthenticationModule(macOS)
__opendirectoryd(macOS)
__LocalAuthentication프레임워크
__AppleID
__외부계정
__참고자료
2장.감사
__설계
__감사세션
__구현
__시스템호출인터페이스
__OpenBSMAPI
__감사고려사항
__참고자료
3장.권한부여
__설계
__구현
__KAuth인증정보
__KAuth신원확인서비스(macOS)
__KAuth디버깅
__참고자료
4장.강제적접근제어프레임워크
__배경
__MACF정책
__MACF설정하기
__MACF콜아웃
__MACF시스템호출
__최종노트
__참고자료
5장.코드서명
__코드서명포맷
__코드서명요구사항
__인타이틀먼트
__코드서명적용
__코드서명API
__참고자료
__권한부여
6장.소프트웨어제한(macOS)
__권한부여
__authd
__게이트키퍼(macOS)
__libquarantine
__Quarantine.kext
__격리저장소의실제syspolicyd
__앱위치변경
__관리중인클라이언트(macOS)
__참고자료
7장.AppleMobileFileIntegrity
__AppleMobileFileIntegrity.kext
__MACF정책
__amfid
__프로비저닝프로파일
__AMFI신뢰캐시
__AMFIUserClient
__최종노트
__참고자료
8장.샌드박스
__샌드박스의진화
__앱샌드박스(macOS)
__모바일컨테이너(*OS)
__샌드박스프로파일
__사용자모드API
__mac_syscall
__Sandbox.kext
__프로파일평가
__sandboxd(macOS)
__참고자료
9장.시스템무결성보호(macOS)
__설계
__구현
__API
__참고자료
10장.개인정보보호
__투명성,동의및제어
__고유장치식별자
__차등개인정보보호(macOS12/iOS10)
__참고자료
11장.데이터보호
__볼륨레벨암호화(macOS)
__파일수준암호화(*OS)
__mobile_obliterator
__KeyBags
__AppleKeyStore.kext
__키체인
__최종참고사항
__참고자료
2부.취약점과익스플로잇작업
12장.macOS취약점
__10.1:ntpd원격루트(CVE-2014-9295)
__10.2:루트파이프권한상승(CVE-2015-1130)
__10.3:Kextd레이스(CVE-2015-3708)
__10.4:DYLD_PRINT_TO_FILE권한상승(CVE-2015-3760)
__10.5:DYLD_ROOT_PATH권한상승
__11.0:tpwn권한상승및/또는SIP무력화
__11.3“MachRace”로컬권한상승(CVE-2016-1757)
__11.4:로키하드의Trifecta(CVE-2016-1796,1797,1806)
__최종노트
__참고자료
13장.탈옥
__미신타파
__탈옥과정
__커널패치
__커널패치보호
__iOS탈옥의진화
__참고자료
14장.Evasi0n
__로더
__언테더
__커널모드익스플로잇
__애플버그수정
__참고자료
15장.Evasi0n7
__로더
__언테더
__커널모드익스플로잇
__애플버그수정
__참고자료
16장.Pangu7
__로더
__탈옥페이로드
__언테더
__커널-모드익스플로잇
__애플버그수정
__참고자료
17장.Pangu8
__로더
__사용자모드익스플로잇
__언테더
__애플버그수정
__참고자료
18장.TaiG
__로더
__언테더
__커널모드익스플로잇
__애플버그수정
__참고자료
19장.TaiG2
__코드서명우회
__언테더
__커널익스플로잇
__애플버그수정
__참고자료
20장.Pangu9
__로더
__탈옥페이로드
__커널모드익스플로잇
__코드서명우회
__언테더
__Pangu9.1
__애플버그수정
__참고자료
21장.Pangu9.3
__커널익스플로잇
__애플버그수정
22장.페가수스
__익스플로잇흐름
__커널메모리읽기및KASLR우회
__임의의커널메모리쓰기
__지속성
__애플버그수정
__참고자료
221/2장.피닉스
__정보유출
__영역다듬기
__mach_ports_register
__조립-Phoenix부활
__애플버그수정
__참고자료
23장.mach_portal
__익스플로잇흐름
__Mach포트이름urefs처리
__powerd충돌
__XNUUaF의set_dp_control_port
__보호기능비활성화
__애플버그수정
__참고자료
24장.Yalu(10.0~10.2)
__KPP우회
__익스플로잇이후의작업
__10.2:치명적인함정과재앙의레시피
__최종노트
__참고자료
25장.async_wake&QiLin툴킷(11.0~11.1.2)
__KASLR우회
__커널메모리손상
__익스플로잇이후의작업:탈옥툴킷
__참고자료
__에필로그:앞으로의예측
부록A.macOS보안성강화가이드
__반복해패치하기
__로깅및감사
__사용자수준보안
__데이터보호
__물리적보안
__애플리케이션수준보안
__서드파티/오픈소스툴사용
__네트워크보안
__편집증을가진사람들을위해
부록B.Darwin18(베타)변경사항
__강제적접근제어프레임워크(MACF)
__코드서명
__게이트키퍼(macOS)
__AMFI
__샌드박스
__프라이버시
__APFS스냅샷마운트(iOS11.3)
__하드웨어변경사항(A12와이후의프로세서)
부록C.용어사전
★이책에서다루는내용★
■인증,인가및(macOS)감사
■코드서명
■소프트웨어제한(macOS)-게이트키퍼,정책및관리를적용한클라이언트
■AppleMobileFileIntegrity
■샌드박스
■시스템무결성보호(SIP)
■개인정보및데이터보호
★추천의글★
그동안iOS보안과관련된연구자료들은다른플랫폼에비해구하기어려웠다.그러다보니관련연구에입문하기도쉽지않았다.이책은이러한미지의영역을들여다본다.먼저코드서명,샌드박스,KPP같은iOS/macOS의보안메커니즘들과AppleMobileFileIntegrity와같이공식적으로문서화되지는않았지만중요한역할을하는보안메커니즘을살펴본다.그후천천히탈옥도구들을해부한다.2013년에등장한Evasi0n(iOS6)부터2017년이안비어의async_wake(iOS11)에이르기까지탈옥이어떻게발전해왔는지분석한다.
탈옥이iOS의여러보안메커니즘을우회하기위해서는여러취약점이필요하다.하지만무조건특정단계를따라야하는것은아니며,iOS는다양한공격벡터들을갖고있기때문에다양한방법을통해탈옥할수있다.이책에서는탈옥개발자들이어떤영리한방법으로탈옥을성취하는지상세히분석한다.탈옥도구들의내부가얼마나복잡하고정교한지,어떤취약점들로커널을공격하고TrustZone의커널보호를우회하는지,그취약점들이나중에어떻게수정되는지또어떻게잘못수정되는지에대해설명한다.이책은전체적으로보안메커니즘들과그메커니즘들이어떻게우회돼왔는지에대해자세히알아봄으로써연구에필요한많은인사이트를제공한다.
이정훈(@lokihardt)
★이책의대상독자★
현재*OSInternals의3부작중일부지만,독립적인내용인동시에보안중심으로구성돼있다.따라서보안과관련된내용을원하는독자에게유용할것이다.
1부는macOS관리자와고급사용자는물론,보안연구자와보안감사인에게적합하다.내부API를문서화한부분은퍼징(fuzzing)또는(애플이승인하지않는)해당서브시스템과인터페이스하길원하는프로그래머가기본적인내용을학습할때유용할것이다.
2부는저수준분야와기술적인부분을다루기때문에나이가어린독자,심약자또는인텔및/또는ARM64어셈블리에심한거부감이있는독자에게부적합할수있다.그러나역공학을선호하며,해커지향적인독자는원하는내용을찾을수있을것이다.익스플로잇과탈옥의작동방법에대한자세한설명과디버거시퀀스를이용한단계별상세지시문그리고다수의디스어셈블리를제공한다.
★이책의구성★
1부는macOS에서시스템보안서비스를제공하거나시스템을잠그기위해애플에서사용하는보안메커니즘과기술을중점적으로다룬다.이들대부분은현재모든플랫폼에서공통적으로사용되고있다(특히,10.11).하지만OS는여전히애플이가장많이투자하는분야다.
1장에서는기본적으로macOS함수인인증을다루며시작한다.오래전부터사용해온master.passwd파일을다루지만,PAM(PluggableAuthenticationModule)과오픈디렉터리(OpenDirectory)의macOS구현그리고NIS및마이크로소프트의액티브디렉터리와같은외부도메인과의통합을중점적으로다룬다.
2장에서는사용자또는프로세스가승인하거나시도한작업을추적하고자세한로그추적을제공하는감사에대해설명한다.macOS에서의감사는솔라리스(Solaris)에서차용한기능이며,실제로는기본적으로사용하고있지만비교적알려지지는않았다.감사를통해클라이언트(일반적으로관리자또는모니터링소프트웨어)는모든시스템측면에서크거나작은사용자또는커널에대해전례없는수준의모니터링을제공한다.
3장에서는사용자또는프로세스(1장에서인증)가작업을허용또는거부하는권한부여를탐색해AAA삼위일체를완성한다.그리고(커널확장기능에대한비공식적지원으로*OS에서는실제로사용할수없지만)KAuth**로알려진커널프로그래밍인터페이스(KPI,KernelProgrammingInterface)를다룬다.
4장에서는권한부여와커널에대해자세히다루며,TrustedBSD에서차용한강제적접근통제프레임워크(MACF,MandatoryAccessControlFramework)를자세히다룬다.MACF는감사보다훨씬강력한기능을갖췄다.감사는어떠한사실이발생한이후에알림을제공하지만,MACF는실제로작업에개입해허용,거부,수정할수있다.MACF는기본적으로*OS에서모든애플보안의기반을제공해준다.유감스럽지만애플이개인KPI로간주하는KAuth를능가하는가장강력한인증메커니즘이다.
5장에서는코드서명(macOS의가장직접적인애플리케이션)에대해논의한다.MACF는애플이iOS초창기부터*OS를적용중이며,macOS에서도매우최근에적용되기시작했다.애플의OS가코드서명을사용하는유일한운영체제는아니지만,구현방식은훨씬더발전됐다.또한코드서명은애플리케이션수준보안의기초가되는인타이틀먼트와함께사용하고있다.
6장에서는macOS에서특별히사용하는기능인소프트웨어제한메커니즘에대해논의한다.macOS게이트키퍼(GateKeeper)부터macOS대상멀웨어(malware)퇴치를위해애플이10.7.5에서도입했다.게이트키퍼는authd및syspolicyd와같은다수의데몬과격리저장소(Quarantine)라는특수커널확장기능과상호운용된다.그런다음,기업환경과자녀보호(ParentalControls)에서사용하는macOS의“관리중인클라이언트확장기능(ManagedClientExtensions)”을주제로다룬다.
7장에서는AppleMobileFileIntegrity또는AMFI에대해설명한다.이름에“모바일(mobile)”이있지만,AMFI는iOS코드서명집행자로시작해macOS10.10부터사용됐으며,10.11에서는“시스템무결성보호(SystemIntegrityProtection)”로더큰역할을하고있다.iOS와macOS의구현방법을MACF정책,MIG메시지및IOUserClient의역공학을통해심층적으로탐구한다.
8장에서는애플샌드박스와애플이처음으로OS10.5에서사용하기시작한“안전벨트(SeatBelt)”라는이름의MACF의애플리케이션에대해다룬다.이후로조금단순하지만사전동의opt-in구현은매우발전해,iOS에서강력한감옥(jail)의역할을하고있다.샌드박스적용에대해macOS의“앱샌드박스(AppSandbox)”를통한기초에서부터강화된iOS구현에이르기까지설명한다.프로필,컨테이너및기타빌딩블록에대한자세한내용은macOS10.11의SIP와iOS10플랫폼프로필을논의하기위한기반을마련할것이다.
9장은macOS의SIP에대해논의한다:기초(AMFI와샌드박스)에대한설명은SIP는단지시스템차원의정책정의일뿐이다.iOS9.x에는없지만SIP가*OS에서도등장하는것은시간문제일뿐이며,iOS10의플랫폼정책은이미매우강화됐다.
10장에서는개인정보보호에대해다루는데,이는TCCd라는작고문서화되지않은데몬에의해처리된다.데몬은특정앱이어떤스토어에접근하는지정의하고,개인TCC.framework로래핑된XPCAPI를제공하는데이터베이스에상주한다.많은소프트웨어공급업체가소프트웨어를설치한장치를식별하기위해수집을시도하는고유식별자(특히,iOS의경우)에대한추가고려사항을다룬다.
11장은데이터보호에중점을두고있으며,구현방식은macOS와나머지OS에서다르다.macOS솔루션은FileVault2를통해이뤄지며,CoreStorage와함께10.7에서소개됐다.*OS솔루션은하드웨어기반키와파일당암호화함수를통해암호화를강화했다.CoreStorage는애플의새로운파일시스템인APFS의기능으로대체됐다.이책은1.4버전쯤돼서야자리잡았지만(이번역서는1.5.3기준으로했다),이전버전의CoreStorage에대한논의를제외하기로결정했다.APFS의상세한분석은2권에서다룬다.
2부는1부의애플엔지니어들이최선의계획을기반으로제작한정교한구조들이예상과다르게작동한방식에대해알아본다.각장에서는macOS에서악성코드를유발한과거의취약점또는iOS탈옥에대해알아본다.
macOS의취약점에대해,특히10.10(각부의버전에서중대한변화를갖는다)과10.11을괴롭혔던몇가지취약점을강조하고자한다.iOS취약점에따른탈옥을시간순서로보여주기로결정했다.이러한취약점과해당취약점의익스플로잇를보여주는데탈옥보다더좋은것은없다.각탈옥은iOS(와파생된운영체제)를족쇄에서해방시킬수있도록올바른방식으로여러취약점의익스플로잇을활용한정교하게만들어진모음집과같다.
어떤면에서2부는일종의작은“해커핸드북”으로생각할수있다.그러나이책에서제공하는세부수준과깊이는이전의역공학책과보안책보다훨씬자세하며전례없는수준이다.탈옥을성공시킨천재중몇명을개인적으로알았지만,그럼에도간단하게해결하고싶은충동에저항하며,연구자처럼바이너리만으로탈옥의역공학을수행했다.이과정에서저자가제작한툴을사용했으며,이책의관련웹사이트에서사용할수있다.
마지막으로,부록에는macOS보안강화가이드가포함돼있다.처음에는그다지좋지않을것이라생각했지만,세바스티안볼프(SebastienVolpe)의질문을통해생각이바뀌었다.macOS의다양한보안기능에대해자세히설명하고취약점을소개한,이책의‘비공식요약본’이라생각한다.
★옮긴이의말★
오늘날모바일운영체제시장은iOS와안드로이드가시장을양분하고있다.개인적으로안드로이드보다iOS운영체제에서모바일애플리케이션분석을선호하지만,iOS보안과관련된정보를수집하는작업은마치백사장에서바늘을찾는것과같다.이러한상황에서iOS와macOS의궁금증을해소해줄단비와도같은책이등장했다.최근iOS11의탈옥툴인‘LiberiOS’의제작자이자온/오프라인으로iOS및macOS에관련된양질의정보를제공해주던조나단레빈이애플의운영체제에대한심도있는내용과기법을담아책을출간한것이다.
iOS가안드로이드보다안전한운영체제라는평을받게된배경에는애플의강력한하드웨어와소프트웨어의통제가있다.이책의전반부에서는애플의보안메커니즘에대해상세한분석을제공한다.macOS와iOS는운영체제에서많은부분을공유하며,최근등장한watchOS도iOS에서파생됐기때문에이책을통해애플의운영체제에적용된보안메커니즘을파악할수있을것이다.
이책의후반부에서는애플의견고한보안강화조치를무력화시키고루트권한을획득하는가장극적인해킹인‘탈옥’을다룬다.탈옥에관심을가졌던독자라면익숙한Evasi0n,TaiG,Pangu의탈옥툴과최근구글프로젝트제로의이안비어가공개한탈옥방법까지다양한iOS의취약점과익스플로잇의상세한분석결과를볼수있다.
책을읽다보면저자의전문성과철학을느낄수있을것이다.저자는iOS와macOS운영체제의심층분석을주제로3부작출간을계획중이며,이책은시리즈중,마지막인3권에해당한다.이책은난이도가높지만,상당한분량을할당해내용을자세하게다루고있다.이책을읽고나면최신트렌드를어렵지않게파악할수있으며,더나아가훌륭한보안연구가로성장할수있을것이다.