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의 결점을 찾아내려는 보안 연구자 등을 꼽을 수 있다. 대다수 독자는 이 책의 전반부 내용을 쉽게 이해할 수 있을 것이다. 기초부터 시작해서 후반부로 갈수록 기본적인 내용을 이해하고 있어야 한다. 예를 들면 디버거를 어떻게 사용하고 코드를 어떻게 읽는지 등이다.
목차
목차
- 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 네트워크 통신
- 라이온 서버의 프로파일 매니저
- 프로파일 매니저 설정
- 설정 만들기
- 디바이스 등록
- 정리
- iOS 설정 관리
- 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)
- 정리
- ARM 기초
- 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 언락
- 무선으로 공격 가능한 오버플로우
- 정리