책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > OS/Networking > 네트워크 보안/해킹
· ISBN : 9788960775824
· 쪽수 : 1026쪽
· 출판일 : 2014-07-09
책 소개
목차
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 네트워크 통신
____라이온 서버의 프로파일 매니저
______프로파일 매니저 설정
______설정 만들기
______디바이스 등록
__정리
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
______cs_enforcement_disable (kernel)
______cs_enforcement_disable (AMFI)
______PE_i_can_has_debugger
______vm_map_enter
______vm_map_protect
______AMFI 바이너리 트러스트 캐시
______Task_for_pid 0
______샌드박스 패치
______캐시 지우기
__깔끔한 리턴
__정리
11장 베이스밴드 공격
__GSM 기초
__OpenBTS 설정
____필요한 하드웨어
____OpenBTS 설치와 설정
______닫힌 설정과 애스테리스크 다이얼링 규칙
__스택 아래의 RTOS
____Nucleus PLUS
____ThreadX
____REX/OKL4/Iguana
____힙 구현
______Nucleus PLUS의 동적 메모리
______ThreadX의 바이트 풀
______퀄컴 모뎀 힙
__취약점 분석
____베이스밴드 펌웨어 획득과 추출
____IDA Pro에 펌웨어 이미지 로딩
____애플리케이션/베이스밴드 프로세스 인터페이스
____스택 트레이스와 베이스밴드 코어 덤프
____공격 범위
____1999년 같은 바이너리 코드 정적 분석
____명세서를 참고한 퍼징 테스트
__베이스밴드 공격하기
____로컬 스택 버퍼 오버플로우: AT+XAPP
____ultrasn0w 언락
____무선으로 공격 가능한 오버플로우
__정리
보안 전문가와 아이폰 개발자를 위한 iOS 해킹과 방어
1장 여러분이 제대로 알고 있는 사실은 아무것도 없다
___모노컬처의 신화
___iOS 보안 모델
______iOS 보안 모델의 구성요소
___자물쇠와 열쇠 함께 저장하기
___사용자 암호 = 취약한 보안
___데이터 포렌식으로 암호화 깨부수기
______외부 데이터 역시 위험한 건 마찬가지
___트래픽 하이재킹
______데이터 도난은 순식간
___아무것도 믿지 말자, 직접 작성한 애플리케이션조차도
___물리적 보안은 선택사항이다
___요약
1부 해킹
2장 iOS 해킹 기초
___탈옥 방법을 배워야 하는 이유
___탈옥의 모든 것
______개발자 툴
___최종 사용자용 탈옥
______아이폰 해킹
______DFU 모드
______테더드(Tethered) 대 언테더드(Untethered)
___장치 해킹과 코드 삽입
______커스텀 코드 제작
______바이너리 분석
______바이너리 시험해보기
______코드 데몬화
______타르 파일을 이용한 악성 코드 설치
______램 디스크를 이용한 악성 코드 설치
___연습문제
___요약
3장 파일시스템 훔치기
___디스크 전체 암호화
______솔리드 스테이트 낸드(Solid State Nand)
______디스크 암호화
______iOS 디스크 암호화의 실패 원인
___라이브 파일시스템 복사
______데이터 훔치기 페이로드
______커스텀 launchd 제작
______램 디스크 준비
______파일시스템 이미지 획득
___로우 파일시스템 복사
______로우 이미지 훔치기 페이로드
______커스텀 launchd 제작
______램 디스크 준비
______파일시스템 이미지 획득
___연습문제
___사회 공학 활용
______비활성화된 장치 이용
______초기화된 장치 이용
______맬웨어가 설치된 장치 이용
______암호 공학 애플리케이션 이용
___요약
4장 포렌식 흔적과 데이터 유출
___이미지의 위치 태그 추출
______통합 GPS 캐시
___SQLite 데이터베이스
______데이터베이스 연결
______SQLite 내장 명령어
______SQL 질의 수행
______중요한 데이터베이스 파일 목록
______주소록 연락처
______주소록 이미지
______구글 지도 데이터
______캘린더 이벤트
______통화 기록
______이메일 데이터베이스
______메모
______사진 메타데이타
______SMS 메시지
______사파리 북마크
______SMS 스포트라이트 캐시
______사파리 웹 캐시
______웹 애플리케이션 캐시
______웹킷 저장소
______음성 사서함
___데이터베이스 필드의 파편 리버스 엔지니어링
___SMS 임시 저장 메시지
___프로퍼티 리스트
______중요한 프로퍼티 리스트 파일
___그 밖의 중요한 파일
___요약
5장 암호화 깨부수기
___소게티의 데이터 보호 툴
______데이터 보호 툴 설치
______브루트포스 공격 툴 제작
______필수 파이썬 라이브러리 빌드
___암호화 키 추출
______키 추출 페이로드
______커스텀 launchd 제작
______램 디스크 준비
______커널 준비
______브루트포스 실행
___키체인 복호화
___로우 디스크 복호화
___아이튠스 백업 복호화
___스파이웨어를 이용한 암호화 깨부수기
______스파이웨어 페이로드
______spyd 데몬화
______커스텀 launchd 제작
______램 디스크 준비
______페이로드 실행
___연습문제
___요약
6장 삭제된 파일 복구
___HFS 저널 수집
___빈 공간 카빙
___복구 가능한 주요 데이터
______애플리케이션 스크린샷
______삭제된 프로퍼티 리스트
______삭제된 음성 사서함 메시지와 음성 메모
______삭제된 키보드 캐시
______사진과 기타 개인 정보
___요약
7장 런타임 조작
___바이너리 분석
______마크오 형식
______class-dump-z 사용
______심볼 테이블
___암호화된 바이너리
______오프셋 계산
______메모리 덤프
______복호화된 코드를 파일로 다시 복사
______cryptid 재설정
___쓰크립트로 런타임 조작
______쓰크립트 설치
______쓰크립트 사용
______간단한 잠금 기능 무력화
______메소드 바꿔치기
______데이터 자세히 살펴보기
______데이터 기록
______훨씬 심각한 사례
___연습문제
______스프링보드 애니메이션
______일종의 전화 도청
______스크린샷 생성
___요약
8장 런타임 라이브러리를 사용한 공격
___오브젝티브C 완전 해부
______인스턴스 변수
______메소드
______메소드 캐시
___디스어셈블링과 디버깅
______메시지 엿듣기
______기본적인 오브젝티브C 프레임워크
______오브젝티브C와 인터페이스로 연결
___악성 코드 삽입
______코드삽입 페이로드
______디버거로 코드 삽입
___동적 링커를 사용한 삽입
______영구적인 장치 감염
___요약
9장 트래픽 하이재킹하기
___APN 하이재킹
______페이로드 설치
______제거
___간단한 프록시 설정
___SSL 공격
______SSLStrip
______파로스 프록시
______브라우저 경고
___애플리케이션 수준의 SSL 검증 공격
______SSL 공격 페이로드
___파운데이션 HTTP 클래스 하이재킹
______포스트 공격 페이로드
___데이터 분석
___드리프트넷
______빌드
______실행
___연습문제
___요약
2부 방어
10장 암호화 구현
___암호 강도
______무작위 암호 생성기를 조심하자
___커먼 크립토 라이브러리
______무상태형 연산
______상태유지형 암호화
___마스터 키 암호화
___위치 기반 암호화
______암호를 결합한 위치 기반 암호화
___별도의 서버 측 키
___메모리 보호
______메모리 완전 삭제
___공개 키 암호화
___연습문제
11장 포렌식 대비책
___보안 완전 삭제
______DOD 5220.22-M 완전 삭제
______오브젝티브C
___SQLite 레코드 완전 삭제
___키보드 캐시
___숫자 입력 패드 무작위화
___애플리케이션 스크린샷
12장 런타임 보호
___변조 대응
______사용자 데이터 완전 삭제
______네트워크 접속 비활성화
______서버 보고
______로깅 활성화
______미끼와 킬 스위치
___프로세스 추적 검사
___디버거 차단
___런타임 클래스 무결성 검사
______주소 공간 검증
___인라인 함수
___디스어셈블링 복잡도 높이기
______최적화 플래그
______스트립
______뺑뺑이를 돌리자! -funroll-loops
___연습문제
13장 탈옥 탐지
___샌드박스 무결성 검사
___파일시스템 검사
______탈옥 파일 존재 여부
______/etc/fstab의 크기
______심볼릭 링크 검사
___페이지 실행 검사
14장 다음 단계
___공격자의 입장에서 생각해보자
___책에서 다루지 않은 리버스 엔지니어링 툴
___보안 vs 코드 관리
___보안을 대하는 유연한 자세
___그 밖의 훌륭한 책