로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

iOS Application Security

 [보안담당자와 개발자를 위한 최고의 안내서]
   
지은이 데이비드 틸   |   출판사 에이콘  |   발행일 2017년 04월 20일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 30,000원27,000원 10%
마일리지 5% 1,500원
발행일 2017-04-20
ISBN 8960779709 | 9788960779709
기타정보 번역서 | 380쪽 | 일반
예상출고일 1일 (근무일기준)
배송비 무료배송
   
보안
종합지수 1p 59 위
   
이 책의 원서
  IOS Application Security: The Definitive Guide for Hackers and Developers
NO STARCH PRESS | David Thiel
 

[ 요약 ]

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


[ 이 책에서 다루는 내용 ]

■ iOS 보안 모델과 내장된 보호의 한계
■ 페이스트보드(pasteboard)와 같은 민감한 데이터가 누출되는 다양한 방식
■ 키체인(Keychain), 데이터 보호 API, CommonCrypto를 활용한 암호화 구현 방법
■ 현재 iOS 애플리케이션에서도 여전히 문제를 일으킬 수 있는 C 언어의 기존 결함
■ 사용자 데이터 수집 방법 및 잠재적인 보안 위험 완화 방법과 관련된 개인정보 보호 문제


[ 이 책의 대상 독자 ]

이 책은 보안을 다룬다. 만약, iOS 애플리케이션이 사용자 보호에 실패해(부차적으로 이 글을 읽고 있는 독자 혹은 클라이언트가 이러한 보안 취약점에 대한 패치를 요구할) 일반적인 해결 방법에 대한 가이드를 찾는 개발자 혹은 보안 전문가라면, 올바른 선택을 한 것이다.
적지만 iOS 개발에 대해 경험이 있거나 iOS 애플리케이션이 동작 방식에 대해서 어느 정도 지식이 있다면, 이 책을 최대한 활용할 수 있을 것이다. 하지만 사전 지식이 없더라도, 경험이 있는 프로그래머나 필요할 애플의 문서를 깊게 연구하는 데 두려움이 없는 침투 테스터 또한 이 책이 도움이 될 것이다. 오브젝트 C와 가장 흔하게 사용되는 API, Cocoa Touch에 대해서 정신 없이 빠르게 진행되는 가이드를 2장에서 제공하기 때문에, 만약 높은 수준의 기본기가 필요하거나 언어에 대한 기억을 되살리고 싶다면 2장에서부터 시작하자.


[이 책의 구성 ]

1부, ‘iOS 기초’에서는 iOS의 배경지식에 대해 탐구하고, iOS 보안 역사와 기본적인 애플리케이션 구조에 대해서 배울 것이다.
1장, ‘iOS 보안 모델’에서는 플랫폼의 기본적인 보안 방어 개념과 플랫폼에서 제공하거나 제공할 수 없는 기능에 대한 내용을 간략하게 iOS 보안 모델로 진단한다.
2장, ‘게으른 사람들을 위한 오브젝티브 C’에서는 다른 프로그래밍 언어와 다른 점에 대해 설명하고, 용어와 관련된 개요와 디자인 패턴에 대해서 알아본다. 경험이 많은 오브젝티브 C 프로그래머에게는 새로운 정보가 없겠지만, 초심자와 iOS를 사용해본 경험이 적은 사용자에게는 유용할 것이다.
3장, ‘iOS 애플리케이션 구조’에서는 iOS 애플리케이션이 어떻게 구성돼 있는지 개요를 소개하고, 번들(bundle) 작업의 진행 과정과 민감한 정보가 유출될 수 있는 로컬 저장소 메커니즘을 살펴본다.
2부, ‘보안 테스팅’에서는 개발은 물론 침투 테스트를 수행할 때 사용할 보안 테스팅 환경을 구축하는 방법에 대해 알아본다. 사용 가능한 보안 메커니즘의 대부분을 사용하기 위해서 Xcode 프로젝트를 설정하기 위한 몇 가지 팁을 공유한다.
4장, ‘테스팅 플랫폼 만들기’에서는 테스트를 시작하기 위해 필요한 도구 정보와 iOS 애플리케이션 테스트와 감사를 도와줄 설정에 대해 알아본다. 이 장에서는 시뮬레이터의 사용 방법, 프록시 설정, TLS 검증 우회, 애플리케이션 작동 방식을 살펴본다.
5장, ‘lldb를 이용한 디버깅’에서는 애플리케이션 작동 방식을 모니터하고 lldb와 다른 Xcode의 내장된 도구를 사용하기 편하게 설정한다. 코드에서 조금 더 복잡한 문제를 분석하는 것을 도와줄 뿐만이 아니라, 오류 주입공격(fault injection)과 같은 작업을 하기 위한 테스트 장비 설정도 알아본다.
6장, ‘블랙박스 테스팅’에서는 소스 코드를 구할 수 없는 애플리케이션을 성공적으로 분석하기 위해 필요한 도구와 기법에 대해서 자세히 알아본다. 기본적인 역공학(reverse engineering), 바이너리 조작, 프로그램의 복제, 원격의 lldb 인스턴스를 사용한 디바이스의 디버깅을 살펴본다.
3부, ‘Cocoa API의 보안 단점’에서는 Cocoa Touch API에서 마주치는 뜻밖의 보안 위험에 대해서 알아본다.
7장, ‘iOS 네트워킹’에서는 네트워킹 방법과 인증 정보, 인증서 고정, TLS 접속 처리 과정에서의 실수를 포함한 iOS에서 전송계층(Transport Layer) 보안 작업에 대해 설명한다.
8장, ‘프로세스 간 통신’에서는 URL 스키마URL shceme와 새로운 유니버설 링크(Universal Link) 메커니즘을 포함한 프로세스 간 커뮤니케이션을 다룬다.
9장, ‘iOS 대상 웹 앱’에서는 웹 뷰 혹은 코르도바(Cordova)와 같은 자바스크립트/Cocoa 연결을 사용하는 iOS 네이티브 앱을 사용해서 웹 애플리케이션이 통합되는 방법을 살펴본다.
10장, ‘데이터 유출’에서는 민감한 데이터가 의도치 않게 로컬 저장소, 다른 애플리케이션, 네트워크를 통해 유출되는 다양한 방식에 대해 논의한다.
11장, ‘C 언어에 기반한 오래된 문제들’에서는 스택과 힙 조작과 포맷 스트링 취약점, 메모리 해지 후 사용(use-after-free), 오브젝티브 C에서 변형된 형태로 나타난 이전의 취약점 등 iOS 애플리케이션에서 남아 있는 C 취약점을 알아본다.
12장, ‘인젝션 공격’에서는 SQL 인젝션, 크로스 사이트 스크립팅, XML 인젝션, 조건명제(predicate) 인젝션과 같은 iOS 애플리케이션과 관련된 공격을 설명한다.
4부, ‘데이터 보호 유지’에서는 개인정보와 암호화와 관련된 이슈를 살펴본다.
13장, ‘암호화와 인증’에서는 적절하게 키체인(Keychain)을 사용하는 방법, 데이터 보호 API, 다른 CommonCrypto 프레임워크에 의해 제공되는 기본적인 암호화 방법을 포함한 암호화 베스트 프랙티스(best practice)를 살펴본다.
14장, ‘모바일 개인정보 보호’에서는 마지막으로 필요한 데이터보다 더 많은 데이터를 수집할 경우 애플리케이션 제작자와 사용자에게 나쁜 영향을 끼치는 경우에 대해 논의한다.


[ 지은이의 말]

iOS의 보안 모델, 탈옥, 기본 OS에서 코드 실행 취약점 발견하기, 기타 보안과 관련된 특징과 관련된 무수히 많은 글들이 작성돼왔다. 대부분 포렌식(forensic) 관점에서 범죄 조사의 일부인 물리적인 디바이스 혹은 백업으로부터 데이터를 추출하는 방법에 대해 다뤄왔다. 이러한 정보는 유용하지만, iOS 연구 주제에서 커다란 갭인 애플리케이션을 다루는 것을 목표로 한다.
실제로 iOS를 위한 보안 애플리케이션을 작성하거나 iOS 애플리케이션의 보안 진단을 수행하는 방법에 대해서 대중은 큰 관심을 보이지 않는다. 결과적으로 iOS 애플리케이션의 성가신 보안 취약점은 민감한 데이터의 유출과 인증 메커니즘 우회방법과 사용자의 프라이버시의 오용(의도적인 것과 우연한 것을 모두 포함하는)을 야기했다. 사람들은 iOS 애플리케이션을 더욱 중요한 업무를 처리하기 위해 사용하고 있고, 다수의 민감한 정보를 보유하고 있음에도 신뢰를 보내고 있기 때문에, 이러한 기대에 부흥하기 위해 iOS 애플리케이션 보안은 성숙해져야 한다.
이 책의 목표는 가능한 iOS 애플리케이션 보안 개발의 기본적인 작업에 대해서 자세하게 다루는 것이다. 물론, iOS는 급격하게 움직이는 목표물로, 추후의 API 변화에도 적용 가능하고 조사할 수 있는 도구를 제작하기 위해 여러 차례 시도해왔다.
iOS는 버전별로 다른 취약점을 보유하고 있다. 애플은 특정 디바이스에 대해 ‘수명종료(end-of-lifed)’ 기간을 책정했고, 개발자가 특정 디바이스(예를 들면 아이패드1)에서 애플리케이션이 여전히 작동하기를 원할 수 있기 때문에, 이 책에서는 iOS 버전 5.x와 9.0(내가 책을 작성하는 시점에서 가장 최신 버전이다)에서 존재하는 취약점을 다루고, 해당되는 경우 각 버전에서 취약점과 취약점을 제거하는 방법에 대해서 논의하려고 한다.

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 기기의 아이비컨 신호 켜기
____아이비컨의 고려사항
__개인정보 보호 정책 수립
__마치며

데이비드 틸(David Thiel)
20년 가까이 컴퓨터 과학 분야에서 일해왔다. 저서인 『Mobile Application Security』(McGraw-Hill, 2010)로 iOS 애플리케이션 보안 분야의 시작을 도왔으며, 꾸준히 연구 결과를 블랙 햇(Black hat)과 데프콘(DEF CON) 등의 보안 컨퍼런스에서 발표해왔다. 다년간 iSEC 파트너즈의 보안 컨설턴트로 활동했으며, 지금은 Internet.org의 Connectivity 연구소에서 일하고 있다.


★ 옮긴이의 말 ★

iOS는 안드로이드와 더불어 모바일 운영체제 생태계를 양분하고 있다. 애플리케이션 진단 시 안드로이드와 iOS 기반의 앱을 동시에 진단해야 하지만, 상대적으로 정보를 얻기 쉬운 안드로이드와는 달리 iOS 보안과 관련된 정보를 얻기 어렵다. iOS 보안과 관련된 서적을 찾던 도중, 저자 데이비드 틸(David Thiel)이 iOS 앱 보안 점검을 위한 블랙박스 테스팅 방법과 근본적인 취약점을 해결하기 위한 시큐어 코딩 내용을 담은 본 책을 발견해 번역을 진행하였다.
이 책은 블랙박스 기반의 테스팅 기법과 시큐어코딩, iOS 보안체계 전반을 다루고 있기 때문에, 기업보안 담당자와 개발자, 취약점 분석평가자 모두의 요구를 충족할 수 있을 것이다. 원서는 출판 시점의 버전인 iOS 9을 다루고 있지만, 본 번역서에서는 저자와 이메일을 연락을 주고받으며 iOS 10의 업데이트에 따른 수정사항까지 반영했다. iOS의 기초부터 블랙박스 테스팅, 시큐어코딩까지 iOS 보안과 관련된 폭넓은 주제를 깊이 있게 다루는 이 책은 iOS 보안과 관련 실무담당자에게 훌륭한 안내서가 될 것이다.


★ 옮긴이 소개 ★

이진호
성균관대학교 컴퓨터교육과를 졸업한 후 기업은행, 금융결제원을 거쳐 현재 금융보안원에서 일하고 있다. 6년간 국내 금융기관을 대상으로 모의해킹 업무를 수행 중이다. 보안 이외에도 다른 사람을 가르치고 지식을 전달하는 일에 관심이 많다. 보안 관련 지식을 나누고자 번역을 시작했다. 에이콘출판사에서 출간한 『파이썬 모의 해킹과 침투 테스팅』(2015)을 번역했다.

이상식
성균관대학교 컴퓨터공학과를 졸업한 후 롯데캐피탈에서 전산개발 및 보안담당 업무를 수행했고, 금융결제원을 거쳐 금융보안원에서 취약점 분석 평가와 모의해킹 업무를 수행 중이다. 업무의 특성상 다양한 금융전산 시스템을 경험하였으며, 금융보안 분야에 관심이 많다.
등록된 서평이 없습니다.
리버싱 입문...
조성문
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
리버스 엔지니어링. 2: 디버거 편...
이호동
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
베일프레임워크를 활용한 내부 모의해킹 침투...
승진엽, 류진영, 조정원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
유니티 5.x 게임 개발의 시작
존 도란 저
27,000원
(10%↓+5%)
 
데이터 시각화 원리
조르즈 카몽이스 저
31,500원
(10%↓+5%)
 
가상 환경 구축으로 알아보는 고급 모의 해킹
케빈 카드웰 저
36,000원
(10%↓+5%)
 
유니티 게임 개발을 위한 절차적 콘텐트 생성
라이언 왓킨스 저
27,000원
(10%↓+5%)
 
Security in Computing
찰스 플리거, 샤리 로렌스 플리거, 조나단 매굴리스 저
45,000원
(10%↓+5%)
 
이메일주소수집거부