Top

iOS 해킹과 보안 가이드 [iOS 공격 사례와 방어 기술]

  • 원서명iOS Hacker's Handbook (ISBN 9781118204122)
  • 지은이찰리 밀러, 디오니소스 블라자키스, 디노 다이 조비, 빈센조 이오조, 스테판 에서, 랄프필립 와인만
  • 옮긴이장민경, 남기혁
  • ISBN : 9788960775787
  • 35,000원
  • 2014년 06월 27일 펴냄
  • 페이퍼백 | 516쪽 | 188*235mm
  • 시리즈 : 해킹과 보안

책 소개

요약

아이폰과 아이패드를 비롯한 iOS 기반 디바이스에 발생할 수 있는 모든 보안 위험성에 대해 설명하는 책이다. 맥 OS와 iOS 보안의 전문가인 저자들이 iOS의 내부를 파헤쳐 취약점을 확인하고, 공격을 방지하는 방법도 알려준다. 또한 운영체제의 동작과 보안 아키텍처를 다루며, 각 부분과 관련된 보안 위험을 설명한다.

이 책에서 다루는 내용

■ iOS의 내부 기능과 취약점 확인
■ 암호화, 취약점 찾기, 공격 코드 작성 관련 모든 요소
■ 주요 페이로드 확인과 iOS에서 ROP로 할 수 있는 것과 없는 것
■ 커널 구조와 IOKit 드라이버, 커널 디버깅과 취약점 공격 방법
■ 모바일 사파리에서 PDF와 파워포인트 문서를 퍼징하는 기술
■ 여러 가지 형태의 탈옥 방법
■ 이 책의 웹사이트: 소스코드와 추가 도구 제공www.wiley.com/go/ioshackershandbook

이 책의 대상 독자

이 책은 iOS 디바이스가 어떻게 동작하는지 궁금한 모든 이를 대상으로 한다. 탈옥 커뮤니티에 관여하고 싶은 사람이나 데이터를 안전하게 저장하고자 하는 애플리케이션 개발자, iOS 디바이스를 안전하게 사용하고 싶은 회사 관리자, iOS의 결점을 찾아내려는 보안 연구자 등을 꼽을 수 있다. 대다수 독자는 이 책의 전반부 내용을 쉽게 이해할 수 있을 것이다. 기초부터 시작해서 후반부로 갈수록 기본적인 내용을 이해하고 있어야 한다. 예를 들면 디버거를 어떻게 사용하고 코드를 어떻게 읽는지 등이다.

저자/역자 소개

저자 서문

아이폰이 나온 지 5년이 지난 지금은, 처음에 그것이 얼마나 혁신적이었는지 모두들 잊었을 것이다. 그 당시에는 지금 우리가 아는 스마트폰이 없었다. 전화기는 전화만 걸었고 간혹 웹브라우저가 있는 폰도 있었지만 기능이 제한적이었다. 웹페이지의 기본적인 내용만 보여주고 해상도도 매우 낮았다. 아이폰은 이 모든 것을 바꿔놓았다.

거의 전체가 화면인 데다가, 웹킷 기반의 웹브라우저가 탑재되어 있고, 통신사가 해주지 않아도 OS를 업그레이드할 수 있는 디바이스가 나타난 것이다. 게다가 사진을 저장하고, 음악을 듣고, 문자 메시지를 보내는 기능을 갖춘, 바로 사람들이 원하는 것이었다. 물론 아이폰이 완벽하지는 않았다. 최초의 아이폰은 데이터 속도가 느리고 외부에서 만든 애플리케이션을 설치할 수 없었으며 최소한의 보안만 지원했다. 하지만 스마트폰과 태블릿 혁명에 가장 큰 역할을 했다.

2007년 첫 아이폰이 나온 이후로 여러 애플 디바이스가 출시됐으며 모두 iOS에 기반을 뒀다. 물론 최초의 아이폰을 비롯한 디바이스들이 출시될 당시만 해도 운영체제를 iOS라고 부르지는 않았다. 애플은 최초의 아이폰의 운영체제에 대해 데스크탑과 같은 OS X이라고 불렀고 2008년에 나온 두 번째 아이폰 출시 때에는 iPhone OS라고 했다. 당시에는 시스코(Cisco)가 라우터 운영체제를 IOS라고 부르고 있었기 때문에 iOS라는 이름을 쓸 수가 없었다. 얼마간의 돈이 오고간 뒤, 애플은 2010부터 운영체제를 iOS라 부르기 시작했다.

아이폰 다음의 iOS 디바이스는 아이팟터치다. 이것은 기본적으로 아이폰과 같지만 전화를 하거나 문자 메시지를 보내는 장치가 없다. 그 외에 2세대 애플 티비와 아이패드도 있다. 이들 디바이스는 새 버전이 나올 때마다 더 빠르고 매끈한 외양에 더 많은 기능을 보유하고 있다.

애플 디바이스들은 겉보기에는 아름답지만, 그 내부가 어떻게 동작하는지는 거의 알려져 있지 않았다. 특히 수백만 명의 사람들이 자신의 개인정보를 넣어 다니는 디바이스의 보안은 어떤 수준일까? iOS 디바이스의 보안에 대한 정보는 보안 학회, 탈옥 커뮤니티, 개인 연구자의 기록 등 여기저기에 흩어져있었다. 이 책에서는 iOS의 내부에 대한 지식을 한데 모으고자 한다. 이러한 정보에 모두가 접근할 수 있을 때, 개인과 회사가 디바이스 사용으로 인해 감수해야 할 위험을 사전에 인지하고 그것을 어떻게 완화할지 알 수 있을 것이다. 그리고 디바이스를 더욱 안전하게 만들고 안전하게 사용하는 데도 도움이 될 것이다.

저자 소개

찰리 밀러(Charlie Miller)

Accuvant 연구소의 수석 연구원이다. 밀러 박사는 국가안보국(NSA)에서 5년 동안 국제 네트워크 취약점 공격 분석가로 활동했다. 최초로 아이폰과 G1 안드로이드 폰에서 공개된 원격 취약점 공격을 찾아냈다. 지난 4년간 연속으로 CanSecWest Pwn2Own 해킹대회에서 수상했다. 텍스트 메시지를 이용해서 아이폰을 공격했으며, iOS에 악성코드를 집어넣을 수 있는 코드 서명의 문제를 찾아냈다. 이 문제를 알리고 나서 iOS 개발자 프로그램에서 쫓겨나기도 했다. 두 권의 정보 보안 책을 썼으며 노트르담 대학에서 박사 학위를 받았다.

디오니소스 블라자키스(Dionysus Blazakis)

취약점 공격 완화를 전문으로 하는 프로그래머이자 보안 연구가다. 여러 보안 학회에서 취약점 공격 완화, 완화 우회, 취약점을 찾는 새로운 방법에 관해 발표했다. 찰리 밀러와 함께 작업한 iOS 공격코드로 Pwn2Own 2011에서 아이폰 취약점 공격상을 받았다. JIT 컴파일러를 통해 데이터 실행 보호를 우회한 기술을 발표해서 2010 Pwnie의 가장 혁신적인 연구상을 받았다.

디노 다이 조비(Dino Dai Zovi)

Trail of Bits의 창립자이자 CTO이다. red teaming, 침투 테스트, 소프트웨어 보안, 정보 보안 관리, 사이버보안 연구개발 등 정보 보안 분야에서 십 년 넘게 일했다. 메모리 오염 취약점 공격 기술, 802.11 무선 클라이언트 공격, 인텔 VT-x 가상화 루트킷에 관한 연구에 대해 DEFCON, Black Hat, CanSecWest 등 여러 정보보안 학회에서 발표했다. 또한 『The Mac Hacker’s Handbook』(Wiley, 2009)와 『The Art of Software Security Testing』(Addison-Wesley, 2006)의 공동 저자다. 정보 보안과 맥 분야에서 CanSecWest 2007의 첫 Pwn2Own 경진대회에서 우승한 것으로 가장 잘 알려져있다.

빈센조 이오조(Vincenzo Iozzo)

Tiqad srl사의 보안 연구가이다. Black Hat과 CanSecWest를 포함한 여러 보안 학회에서 발표했다. Pwn2Own 2010과 Pwn2Own 2011에서 블랙베리 OS와 아이폰 OS의 공격 코드를 공동 작성해서 수상한 것으로 유명하다. Black Hat과 Shakacon의 심의 위원회(review board)에 참여하고 있다. 트위터 계정은 @_snagg다.

스테판 에서(Stefan Esser)

보안 커뮤니티에서 PHP 보안 전문가로 알려져 있다. 2002년에 PHP 코어 개발자가 되기 전에는 PHP와 PHP 애플리케이션의 취약점을 연구했다. 초기에는 CVS, Samba, OpenBSD, 인터넷 익스플로러 등과 같은 소프트웨어의 취약점에 대해서 많은 의견을 내놓았다. 2003년에 그는 최초로 수정되지 않은 XBOX 하드디스크에서 XBOX 폰트 로더의 버퍼 오버플로우를 통해 리눅스를 부팅했다. 2004년에는 좀 더 안전한 PHP를 개발하기 위한 Hardened-PHP 프로젝트를 설립했는데 이는 2006년에 Suhosin PHP 보안 시스템으로 발전했다. 2007년까지 공동 창업한 독일 웹 애플리케이션 회사인 SektionEins GmbH의 연구개발을 이끌었다. 2010년까지 iOS의 보안 주제들을 연구했고 2011년에 공격 코드를 통한 탈옥을 만들었는데 이는 애플이 여러 번 업데이트 하는 동안 살아남았다.

랄프필립 와인만(Ralf-Philipp Weinmann)

룩셈브루크 대학의 박사후과정(postdoctoral) 연구자다. 암호 해독학에서부터 모바일 기기의 보안에 이르기까지 정보 보안의 다양한 분야를 연구한다. WEP 크래킹의 속도를 엄청나게 향상시키는 데 관여한 것, 애플의 FileValut 분석, 역공학, DECT의 비공개 암호 알고리즘 뚫기, 웹 브라우저(Pwn2Own)와 GSM 스택으로 스마트폰 침투하기 등으로 알려져 있다. 독일의 TU Darmstadt에서 컴퓨터과학을 공부하고 박사 학위를 받았다.

옮긴이의 말

대학 시절의 다양한 아르바이트 중에, 한번은 교내 신문사에서 일한 적이 있다. 주로 한 일은 신문 기사를 웹사이트에 올리는 것인데, 작업 내용은 간단하지만 당시 접하기 힘든 맥에 적응하느라 애를 먹던 기억이 난다. 그때는 90년대 후반, 맥과 같은 애플 제품은 출판이나 디자인 업계 등 특정 분야의 사람들만 쓰는 것으로 인식되었고 점유율은 미미했다. 대부분 윈도우 OS를 사용했고 학과 공부와 관련해서 리눅스도 많이 썼지만, 맥 사용자는 찾아보기 힘들었다. 세월이 흐르고 아이팟터치를 시작으로 애플의 제품을 접하기 시작했다. 처음에는 단지 미디어 플레이어(당시 PMP라 부르던)로 생각했는데, 앱스토어와 풀브라우저는 새로운 세계를 열어주었다. 아이폰이 우리나라에 출시되기를 손꼽아 기다려 구매하고, 결국은 맥북도 장만하게 되었다. 이것이 비단 나만의 개인적인 경험은 아닐 것이다. 특정 분야의 소수만 사용하던 애플 제품이 지금과 같이 널리 퍼지게 된 데 결정적 역할을 한 것은 바로 아이폰일 것이다. 비록 전문 보안 연구가는 아니지만 소프트웨어 분야의 일을 하는 사람으로서, 이 책을 번역하면서 아이폰의 핵심인 iOS의 내부를 살펴보고 이해하게 된 것이 매우 즐거운 경험이었다. 한때 iOS에서 한글 자판을 사용하기 위해서 탈옥을 할 수밖에 없던 적도 있었다. 마냥 경이롭게 느껴지던 탈옥의 메커니즘에 대해 알게 된 것을 이번 번역의 가장 큰 즐거움으로 꼽고 싶다. 부족한 번역이지만 독자들도 같은 즐거움을 나눌 수 있길 바란다. 장민경

국내에 아이폰이 출시된 초창기 시절, 한때 탈옥이 유행했는데, 보안에 취약하다는 이유 하나만으로 수많은 장점(?)을 포기하고 순정품 그대로 쓴 기억이 있다. 지금은 예전보다는 보안 기능이 크게 향상됐는데, 그 사이 내부적으로 어떤 일들이 있었고, 어떤 기술이 사용됐는지, 한번 그 속을 들여다보고 싶었던 차에, 이 책을 번역할 기회를 얻게 됐다. 이 책에서는 지금 출시된 최신형 아이폰을 공격하는 데 필요한 직접적인 방법을 알려주지는 않는다. 시스템 내부에 대한 사전 지식과 전문 용어가 많이 등장하지만, 어디까지나 상세한 설명을 위한 것이지, 시스템 전문가나 보안 관련 종사자만을 대상으로 하는 것은 아니고, 오히려 일반 사용자에게 특히 유용할 것이다. 여기서 소개하는 iOS 기반 기기에 대한 공격과 방어의 사례를 살펴봄으로써, 최신형 제품에 여전히 존재하는 보안의 허점을 해결하는데 필요한 내공을 쌓는 데 큰 도움이 될 것이다. 남기혁

옮긴이 소개

장민경

고려대학교 컴퓨터학과에서 학부와 석사과정을 마쳤고, 삼성전자와 LG전자에서 모바일 플랫폼/애플리케이션 관련 연구원으로 일했다. 여러 회사와 일을 거치면서 소프트웨어 개발자와 아이 엄마라는 두 가지 일을 동시에 해나가려 노력 중이다.

남기혁

고려대 컴퓨터학과에서 학부와 석사 과정을 마친 후 한국전자통신연구원에서 선임 연구원으로 재직하던 중 네트워크 제어 및 검증 솔루션 회사인 ㈜프리스티를 창업했다. 관심 분야는 SDN을 비롯한 네트워크 제어 및 가상화, 시스템 검증 기술이다. 에이콘 출판사에서 출간한 『Early Adopter Curl』(2002), 『GWT 구글 웹 툴킷』(2008), 『코코아 터치 프로그래밍』(2010), 『해킹 초보를 위한 USB 공격과 방어』(2011), 『HTML5 비디오』(2012), 『자바 7의 새로운 기능』(2014)을 번역했다.

목차

목차
  • 1장 iOS 보안의 기초
    • iOS 하드웨어/디바이스 타입
    • 앱스토어 보안
    • 보안 위협
    • iOS 보안 구조
      • 공격 범위 축소
      • iOS 기능 축소
      • 권한 분리
      • 코드 서명
      • 데이터 실행 보호(DEP)
      • 주소 영역 무작위 배치(ASLR)
      • 샌드박싱
    • iOS 공격 기법의 역사
      • Libtiff
      • SMS로 장난치기
      • Ikee 웜
      • Storm8
    • SpyPhone
    • Pwn2Own 2010
    • Jailbreakme.com 2(‘Star’)
    • Jailbreakme.com 3(‘Saffron’)
    • 정리

  • 2장 기업 환경의 iOS
    • iOS 설정 관리
      • 모바일 설정 프로파일
      • 아이폰 설정 유틸리티
        • 설정 프로파일 생성
        • 설정 프로파일 설치
        • 프로파일 업데이트
        • 프로파일 삭제
        • 프로파일 프로비저닝
    • MDM
      • MDM 네트워크 통신
      • 라이온 서버의 프로파일 매니저
        • 프로파일 매니저 설정
        • 설정 만들기
        • 디바이스 등록
    • 정리

  • 3장 암호화
    • 데이터 보호
      • 데이터 보호 API
    • 데이터 보호 기능 공격 방법
      • 사용자 암호 공격
    • 아이폰 데이터 보호 도구
      • 도구 설치를 위한 준비 작업
      • 램디스크 빌드
      • 램디스크 부팅
      • 네 자리 암호에 대한 무작위 공격
      • 키체인 덤프
      • 데이터 파티션 덤프
      • 데이터 파티션 복호화
    • 정리

  • 4장 코드 서명과 메모리 보호
    • 접근 제어
      • AMFI 훅
      • AMFI와 exev
    • 프로비저닝 동작 과정
      • 프로비저닝 프로파일
      • 프로비저닝 파일 검증
    • 애플리케이션 서명 과정
    • Entitlement
    • 코드 서명 동작 과정
      • 서명 정보 수집과 검증
      • 프로세스에 대해 코드 서명을 검증하는 과정
      • 서명된 페이지가 변경되지 않게 iOS에서 보장하는 방법
    • 동적 코드 서명
      • 모바일 사파리가 특별한 이유
      • 커널에서 JIT를 처리하는 과정
      • 모바일 사파리에서 공격
    • 코드 서명 무력화
      • iOS 셸코드 교체
      • iOS에서 메터프리터 사용
      • 앱스토어 승인받기
    • 정리

  • 5장 샌드박싱
    • 샌드박스 기본 구조
    • 앱을 샌드박스에 적용
    • 샌드박스 구현 세부 사항
      • 유저 영역 라이브러리 구현 세부 사항
      • 커널로 들어가기
      • TrustedBSD 정책 구현
      • 유저 영역에서 설정하는 과정
      • 정책 적용
      • 프로파일 바이트코드
    • 샌드박스가 앱 스토어와 플랫폼 애플리케이션에 미치는 영향
    • 정리

  • 6장 퍼징
    • 퍼징의 동작 방식
    • 퍼징 방법
      • 변이 기반(단순) 퍼징
      • 생성 기반(똑똑한) 퍼징
      • 테스트 케이스 제출과 모니터링
    • 사파리 퍼징
      • 인터페이스 선택
      • 테스트 케이스 작성
      • 애플리케이션 테스트와 모니터링
    • PDF 퍼징
    • 퀵 룩 퍼징
    • 시뮬레이터로 퍼징
    • 모바일 사파리 퍼징
      • 인터페이스 선택
      • 테스트 케이스 만들기
      • 모바일 사파리 퍼징과 모니터링
    • PPT 퍼징
    • SMS 퍼징
      • SMS의 기초
      • PDU 모드
      • PDUspy 사용
      • 사용자 데이터 헤더 정보 이용
      • 연속적인 메시지 조작
      • UDH 데이터의 다른 타입 이용
      • 설리로 생성 기반 퍼징
      • iOS에 SMS 삽입
      • SMS 모니터링
      • SMS 버그
    • 정리

  • 7장 취약점 공격
    • 공격 코드 버그의 종류
      • 객체 생애 취약점
    • iOS 시스템 할당기 이해
      • 영역
      • 할당
      • 할당 해제
    • iOS 할당기 길들이기
      • 도구
      • Alloc/Dealloc의 기초
        • 연산 취약점 공격
        • 객체 생애 관련 취약점 공격
    • TCMalloc의 이해
      • 라지 객체의 할당과 해제
      • 스몰 객체 할당
      • 스몰 객체 해제
    • TCMalloc 길들이기
      • 힙 배치를 예측 가능하게 만들기
      • 힙 조작 코드를 디버깅하기 위한 도구
      • TCMalloc으로 연산 취약점 공격: 힙 풍수
      • TCMalloc으로 객체 생애 취약점 공격
    • ASLR의 저항
    • 사례 연구: Pwn2Own 2010
    • 테스트 하부 구조
    • 정리

  • 8장 ROP
    • ARM 기초
      • iOS 호출 규약
      • 시스템 콜 호출 규약
    • ROP 입문
      • ROP와 힙 버그
      • 수동으로 ROP 페이로드 만들기
      • ROP 페이로드 작성 자동화
    • iOS에서 ROP로 할 수 있는 일
      • ROP 페이로드 테스트
    • iOS의 ROP 셸코드 예제
      • 파일 내용 빼내기 페이로드
      • 두 개의 공격 코드를 연결하기 위한 ROP 사용(JailBreakMe v3)
    • 정리

  • 9장 커널 디버깅과 취약점 공격
    • 커널 구조
    • 커널 디버깅
    • 커널 익스텐션과 IOKit 드라이버
      • IOKit 드라이버 객체 트리 재구성하기
      • 커널 익스텐션에서 취약점 찾기
      • IOKit 드라이버의 취약점 찾기
        • 디바이스 속성을 통해 공격
        • 외부 트랩과 함수를 통한 공격
    • 커널 취약점 공격
      • 임의의 메모리 덮어쓰기
        • 커널에 취약점 패치
        • 덮어쓸 대상 선택
        • 시스템 콜 테이블 찾기
        • 공격 코드 만들기
      • 초기화되지 않은 커널 변수
      • 커널 스택 버퍼 오버플로우
      • 커널 힙 버퍼 오버플로우
        • 커널 힙 구역 할당기
        • 커널 힙 풍수
        • 커널 힙의 상태 알아내기
        • 커널 힙 버퍼 오버플로우 공격
    • 정리

  • 10장 탈옥
    • 탈옥을 하는 이유
    • 탈옥의 유형
      • 탈옥의 지속성
        • 불완전 탈옥
        • 완전 탈옥
      • 공격 코드 유형
        • 부트롬 레벨
        • iBoot 레벨
        • 사용자 영역 레벨
    • 탈옥 프로세스의 이해
      • 부트롬 공격
      • 램디스크 부팅
      • 파일 시스템 탈옥
      • 언테더링 공격 코드 설치
      • AFC2 서비스 설치
      • 기본 유틸리티 설치
      • 애플리케이션 숨기기
      • 번들 설치
      • 설치 후 프로세스
    • 커널 페이로드와 패치 실행
      • 커널 상태 되돌리기
      • 권한 상승
      • 커널 패치
        • security.mac.proc_enforce
        • csenforcementdisable (kernel)
        • csenforcementdisable (AMFI)
        • PEicanhasdebugger
        • vmmapenter
        • vmmapprotect
        • AMFI 바이너리 트러스트 캐시
        • Taskforpid 0
        • 샌드박스 패치
        • 캐시 지우기
    • 깔끔한 리턴
    • 정리

  • 11장 베이스밴드 공격
    • GSM 기초
    • OpenBTS 설정
      • 필요한 하드웨어
      • OpenBTS 설치와 설정
        • 닫힌 설정과 애스테리스크 다이얼링 규칙
    • 스택 아래의 RTOS
      • Nucleus PLUS
      • ThreadX
      • REX/OKL4/Iguana
      • 힙 구현
        • Nucleus PLUS의 동적 메모리
        • ThreadX의 바이트 풀
        • 퀄컴 모뎀 힙
    • 취약점 분석
      • 베이스밴드 펌웨어 획득과 추출
      • IDA Pro에 펌웨어 이미지 로딩
      • 애플리케이션/베이스밴드 프로세스 인터페이스
      • 스택 트레이스와 베이스밴드 코어 덤프
      • 공격 범위
      • 1999년 같은 바이너리 코드 정적 분석
      • 명세서를 참고한 퍼징 테스트
    • 베이스밴드 공격하기
      • 로컬 스택 버퍼 오버플로우: AT+XAPP
      • ultrasn0w 언락
      • 무선으로 공격 가능한 오버플로우
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안