서브메뉴

본문

iOS Application Security (보안담당자와 개발자를 위한 최고의 안내서)
iOS Application Security (보안담당자와 개발자를 위한 최고의 안내서)
저자 : 데이비드 틸
출판사 : 에이콘출판
출판년 : 2017
정가 : 30000, ISBN : 9788960779709

책소개


악의적인 공격자로부터 사용자를 보호하기 위해 iOS 애플리케이션의 보안상의 취약점을 제거하는 것은 개발자와 보안담당자 모두에게 중요하다. 이 책은 잘못된 코딩으로 발생할 수 있는 보안 취약점을 짚어주고, 이를 해결하는 방법을 다룬다. 또한, iOS 애플리케이션 구조와 오브젝티브 C 디자인 패턴을 빠르게 학습한 후, 잘못된 코드를 발견하고 보안상의 취약점을 바로잡는 방법과 iOS 애플리케이션의 블랙박스 테스팅 수행 방법에 대해 상세하게 알아본다.

목차


1부. IOS 기초
1장. iOS 보안 모델
__안전한 부트
__앱 샌드박스로 접근 제한하기
__데이터 보호와 디스크 전체 암호화
____암호키 계층
____키 체인 API
____데이터 보호 API
__네이티브 코드 익스플로잇 방지: ASLR, XN와 기타 방식
__탈옥 탐지
__앱 스토어 리뷰는 얼마나 효과적일까?
____WebKit에서 브릿징
____동적 패치하기
____고의적으로 취약한 코드
____내장된 인터프리터
__마치며

2장. 게으른 사람을 위한 오브젝티브 C
__핵심 iOS 프로그래밍 전문용어
__메시지 전달
__오브젝티브 C 프로그램 분해하기
____인터페이스 선언
____구현 파일의 내부
__Blocks로 콜백 명시하기
__오브젝티브 C 메모리 관리 방법
__자동 참조 카운팅
__대리자와 프로토콜
____Should 메시지
____Will 메시지
____Did 메시지
____프로토콜 선언 및 따르기
__카테고리의 위험요소
__메소드 스위즐링
__마치며

3장. iOS 애플리케이션 구조
__plist 파일 처리하기
__디바이스 디렉토리
__Bundle 디렉토리
__Data 디렉토리
____Document와 Inbox 디렉토리
____Library 디렉토리
____Saved Application State 디렉토리
____tmp 디렉토리
__Shared 디렉토리
__마치며

2부. 보안 테스팅
4장. 테스팅 플랫폼 만들기
__연습용 바퀴 떼어내기
__테스팅 디바이스
__디바이스를 사용한 테스팅 vs 시뮬레이터 사용하기
__네트워크 및 프록시 설정
____TLS 검증 우회
____stunnel로 SSL 우회하기
____디바이스의 인증서 관리
____디바이스의 프록시 설정
__Xcode와 빌드 설정
____작업을 어렵게 만드는 것들
____Clang과 정적 분석
____Address Sanitizer와 동적 분석
__Instrument를 활용한 프로그램 모니터링
____Instrument 실행하기
____Watchdog을 사용한 파일시스템 액티비티 관찰
__마치며

5장. lldb를 이용한 디버깅
__lldb의 유용한 기능
____브레이크 포인트로 작업하기
____프레임과 변수 탐색하기
____오브젝트 시각적으로 조사하기
____변수와 속성 조작하기
____브레이크 포인트 액션
__보안 분석을 위해 lldb 사용하기
____Fault 인젝션
____데이터 추적
____핵심 프레임워크 진단하기
__마치며

6장. 블랙박스 테스팅
__써드파티 앱 설치하기
____.app 디렉토리 사용하기
____.ipa 패키지 파일 사용하기
__바이너리 복호화
____디바이스에서 디버그 서버 실행하기
____암호화 세그먼트 위치 결정
____애플리케이션 메모리 덤프하기
__복호화한 바이너리 역공학
____otool로 바이너리 조사하기
____Class-dump를 사용해 클래스 정보 얻기
____Cycript를 사용해 실행 중인 프로그램의 데이터 추출하기
____Hopper로 디셈블리하기
__인증서 고정 무력화
__Cydia Substrate를 사용한 후킹
__Introspy를 사용한 후킹 자동화
__마치며

3부. Cocoa API의 보안 단점
7장. IOS 네트워킹
__iOS URL 로딩 시스템 사용하기
____전송 계층 보안을 정확하게 사용하기
____NSURLConnection을 사용한 기본 인증
____SURLConnection을 사용해서 TLS 상호 인증 구현
____리디렉트 작동 수정하기
____TLS 인증서 고정
__NSURLSession 사용하기
____NSURLSession 설정
____NSURLSession 태스크 수행
____NSURLSession TLS 우회 탐지하기
____NSURLSession을 사용한 기본 인증
____저장된 URL 크리덴셜 관리하기
__써드파티 네트워킹 API의 위험
____AFNetworking 사용의 장단점
____안전하지 않은 ASIHTTPRequest 사용
__멀티피어 연결성
__NSStream을 사용한 저수준 네트워킹
____CFStream을 사용한 더 낮은 수준의 네트워킹
__마치며

8장. 프로세스 간 통신
__URL 스키마와 openURL 메서드
____URL 스키마 정의하기
____URL/IPC 요청 전송 및 수신
____URL 검증과 송신자 인증
____URL 스키마 하이재킹
__유니버설 링크
__UIActivity를 사용해서 데이터 공유하기
__애플리케이션 익스텐션
____앱에 익스텐션 구현 여부 확인하기
____공유 가능한 데이터를 제한하고 검증하기
____앱이 익스텐션과 상호작용 방지하기
__실패한 IPC 조작: Pasteboard
__마치며

9장. iOS 대상 웹 앱
__UIWebViews의 사용(과 남용)
____UIWebViews로 작업하기
____UIWebViews 내에서 자바스크립트 실행하기
__자바스크립트-Cocoa 연결의 장단점
____앱과 JavaScriptCore 사이의 인터페이스
____코르도바로 자바스크립트 실행하기
__WKWebView 입문
____WKWebViews로 작업하기
____WKWebViews의 보안상 이점
__마치며

10장. 데이터 유출
__NSLog와 관련된 진실과 애플 시스템 로그
____배포 빌드에 NSLog 비활성화하기
____브레이크포인트 액션을 대신 사용한 로깅
____iOS 10에서 통합 로깅으로 전환
__페이스트보드를 통해 민감한 데이터가 유출되는 방식
____제한이 없는 시스템 페이스트보드
____Cutom-named 페이스트보드의 리스크
____페이스트보드 데이터 보호 전략
__HTTP 캐시 노출을 찾고 플러그인 하기
____캐시 관리
____캐시 데이터를 제거하기 위한 솔루션
____HTTP 로컬 스토리지와 데이터베이스에서의 데이터 유출
__키로깅과 자동 수정 데이터베이스
__사용자 환경 설정 오용
__스냅샷의 민감한 정보 처리
____스크린 정리 전략
____스크린 정리는 왜 전략적인 작업인가?
____흔한 정리 실수
____Suspension을 방지해 스냅샷 피하기
__상태 보존으로 인한 누수
__보안 상태 보존
__유출을 방지하기 위한 iCloud 기능 종료하기
__마치며

11장. C 언어에 기반한 오래된 문제들
__포맷 스트링
____전통적인 C 포맷 스트링 공격 예방하기
____오브젝티브 C에서 포맷 스트링 공격 예방하기
__버퍼 오버플로우와 스택
____strcpy 버퍼 오버플로우
____버퍼 오버플로우 예방하기
__정수 오버플로우와 힙
____malloc 정수 오버플로우
____정수 오버플로우 예방하기
__마치며

12장. 인젝션 공격
__클라이언트 측 크로스 사이트 스크립팅
____입력 값 검사
____출력값 인코딩
__SQL 인젝션
__프레디케이트 인젝션
__XML 인젝션
____XML 외부 개체를 이용한 인젝션
____다른 XML 라이브러리로 인한 문제
__마치며

4부. 데이터 보호 유지
13장. 암호화와 인증
__키체인 사용하기
____사용자 백업에 키체인 사용하기
____키체인 보호 속성
____기본적인 키체인 사용법
____키체인 래퍼
____공유 키체인
____iCloud 동기화
__데이터 보호 API
____보호수준
____DataProtectionClass 엔타이틀먼트
____보호된 데이터의 사용가능 여부 확인
__CommonCrypto를 이용한 암호화
____사용하지 말아야 할 취약한 알고리즘
____사용하지 말아야 할 취약한 초기화 벡터
____취약한 복잡도
____질 나쁜 키
__해시 연산 수행
__메시지 인증을 위한 HMAC
__CommonCrypto를 RNCryptor로 래핑
__TouchID를 이용한 로컬 인증
____지문은 얼마나 안전한가?
__마치며

14장. 모바일 개인정보 보호
__기기 고유 식별자의 위험성
____애플의 해결책
____고유 식별자를 다루는 규칙
__모바일 사파리와 추적 방지 헤더
__쿠키 수용 정책
__위치와 동작 모니터링
____위치 정보의 동작 방식
____위치 정보 저장의 위험성
____정확도 제한하기
____위치 정보 요청하기
__건강 및 동작 정보 관리하기
____HealthKit에서 데이터 읽고 쓰기
____M7 동작 프로세서
__데이터 수집 권한 요청하기
__아이비컨을 이용한 근접도 추적
____아이비컨 모니터링
____iOS 기기의 아이비컨 신호 켜기
____아이비컨의 고려사항
__개인정보 보호 정책 수립
__마치며