이미 소장하고 있다면 판매해 보세요.
|
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 코드 관리 ___보안을 대하는 유연한 자세 ___그 밖의 훌륭한 책 |
|
데이터 유출은 더 이상 특별한 일도 아니다. 정보화 시대가 도래하면서 데이터 유출은 매우 매력적인 직업이 됐다. 피싱 공격이든 대규모 데이터 유출이 됐든 범죄자들은 사이버 범죄에서 공격의 위험을 충분히 감수할 수 있는 막대한 이익을 얻고 있다. 사이버 범죄가 특별한 일도 아니라고 말한 건 현실을 비꼬기보다는 경각심을 갖자는 의미다. 여러분 회사의 애플리케이션이 공격에 취약할 확률은 매우 높다. 갖가지 범죄를 저지르는 해커는 대부분의 프로그래머가 알지 못하는 방식으로 애플리케이션을 리버스 엔지니어링, 조작, 추적하는 툴을 사용한다. 심지어 다수의 암호화 구현이 취약하며 뛰어난 해커는 암호화와 그 밖의 보안 계층에 침투할 수 있다. 잘못 구현된 보안 계층은 애플리케이션 개발자에게 잘못된 보안 의식을 가지게 할 뿐 실질적으로는 아무런 역할도 하지 못한다.
해커가 어떤 장치에 자신이 알고 있는 일련의 보안 취약점을 적용한다고 생각해보자. 이 장치는 항상 공개 네트워크에 연결돼있고 주머니에 들어갈 정도로 작은 크기며 사람들은 이 장치를 아무 생각 없이 술을 마시다가 술집의 바에 놓고 나오기도 한다. 아이폰의 등장으로 인해 회사 전용 애플리케이션과 이런 애플리케이션이 보호하는 데이터는 단순한 형태의 도난에 매우 취약해졌다. 소매치기, 몇 분이면 수행할 수 있는 파일 복사, 스파이웨어나 루트킷 같은 악성 코드의 삽입 등의 공격이 손쉽게 이뤄지며, 이 모든 범죄는 피해자가 술을 한 잔 더 마시는 사이에도 충분히 일어날 수 있다. 모바일 플랫폼의 소프트웨어는 어떤 식으로든 쉽게 빼낼 수 있으며 범죄자는 자신만의 작업 공간에서 빼낸 데이터를 마음껏 공격할 수 있다. 장치 소유자가 모르는 사이에 수행할 수 있는 공격도 있으며 경우에 따라서는 장치에 물리적으로 접근하지 않고 수행할 수 있는 공격도 있다. 『보안 전문가와 아이폰 개발자를 위한 iOS 해킹과 방어』는 개발자 여러분이 개발한 애플리케이션이 단순한 공격에 취약할 수밖에 없는 이유를 설명하고 더 이상 뻔한 실수를 저지르지 않도록 돕는 차원에서 블랙햇(악의적인 해커 - 옮긴이)이 데이터를 빼내거나 애플리케이션을 변조할 때 사용하는 다양한 공격 기술을 설명한 책이다. 여기서 공격이란 장치에서 데이터를 빼내는 것만 의미하는 건 아니며 경우에 따라서 훨씬 더 사악한 범죄를 의미하기도 한다. 이 책에서는 신용카드 결제 애플리케이션이 어떻게 해킹될 수 있는지 살펴본다. 결제 애플리케이션을 해킹한 범죄자는 장치에 저장된 신용카드 번호를 빼낼 수 있을 뿐만 아니라 애플리케이션을 변조해서 자신이 지불하지도 않은 어마어마한 양의 신용카드 결제 금액을 판매자의 계좌에서 바로 환불받을 수도 있다. 이 밖에도 모바일 애플리케이션이 데이터와 사용자에게 심각한 위험을 초래하게 하는 다양한 공격 사례를 살펴본다. 독자 여러분은 공격에 사용되는 기술과 다양한 예제를 배우며 좀더 안전한 코드를 작성해서 애플리케이션을 취약점을 보완하는 방법도 살펴보게 된다.---저자 서문 중에서 스마트 라이프와 스마트 워크, 그리고 이를 가능케 한 스마트폰과 태블릿은 이제 거스를 수 없는 시대의 흐름으로 자리잡았다. 이와 동시에 모바일 악성 코드의 수도 급증했으며 스마트 기기는 매우 매력적인 해킹 대상으로 급부상했다. 하지만 iOS 개발자는 종종 '기사에 나오는 모바일 악성 코드는 거의 대부분 안드로이드용이다.', '애플의 앱 스토어는 철저한 리뷰 절차를 거치니 괜찮다.' 등의 말로 보안 이슈를 넘어가려 한다. 사실 뭔가 불안하지만 애플의 리뷰를 통과했으니 안전할 거라고 믿으면서 말이다. 하지만 수도 없이 제출되는 앱과 업데이트를 모두 철저히 리뷰하는 일은 불가능에 가깝다. 물론, 리뷰를 한다는 사실 때문에 악성 기능이 포함된 앱을 제출하지 못하는 경우도 있을 테니 리뷰가 보안 측면에 기여하는 부분이 전혀 없다고 할 수는 없다. 문제는 개발자들이 리뷰를 통과했으니 보안성도 인정받았다고 오해한다는 사실이다. 중요 개인정보나 기업 데이터를 다루는 앱의 개발자라면 스스로 안전한 앱을 개발해야 한다. 개발을 대신해 주는 사람이 없듯이 보안을 대신 구축해주는 사람도 없다. iOS는 보안 자체가 우수한 데다가 나는 애플의 데이터 보호 클래스를 사용해서 데이터를 보호하기 때문에 문제 없다고 생각할 수도 있다. 물론 iOS의 보안성은 상당히 높고 애플은 우수한 보안 SDK를 제공한다. 하지만 완벽한 체계는 어디에도 없으며 애플의 보안 체계 역시 언제나 무너져왔다. 책의 전반부에서는 iOS와 iOS SDK의 보안성을 철저히 해부하고 무너뜨린다. 책을 읽다 보면 애플의 보호 클래스를 사용했으니 자신의 앱은 안전하다고 믿는 개발자의 환상은 깨질 수밖에 없다. 운영체제의 보안이 무너지면 개발자가 할 수 있는 일은 없다고 단념할지도 모르겠다. 하지만 책의 후반부에서는 개발자가 취할 수 있는 조치를 설명한다. iOS의 보안이 무너진 상황에서도 앱의 데이터를 보호할 수 있는 방법은 분명히 존재한다. 그리고 이는 개인정보나 기업 정보를 다루는 앱을 개발하는 개발자라면 반드시 구현해야 할 보안 기능이며, 모의 침투 테스터라면 반드시 확인해야 할 내용이다. 당연한 얘기지만 보안 사고는 터지기 전에 방지하는 편이 좋기 때문이다. 모바일 보안의 중요성은 계속 커지고 있다. 미래를 대비하는 개발자, 특히 금융/쇼핑 앱이나 기업용 앱을 개발하는 개발자라면 이 책을 읽고 보안 개발자로서의 역량을 한 단계 높여보자! ---옮긴이의 말 중에서 |
|
오브젝티브C의 기초가 탄탄한 개발자라면 반드시 읽어야 할 필독서! 이제까지 개발한 모든 애플리케이션이 여러 형태의 공격에 취약할 가능성이 매우 높다. 악의적인 해커는 대부분의 프로그래머가 알지 못하는 리버스 엔지니어링, 포렌식, 추적, 변조 툴을 사용하기 때문이다.
책에서는 다양한 종류의 iOS 공격을 다루면서 해커가 실제로 사용하는 툴과 기술을 설명한다. 여러분의 애플리케이션을 보호할 수 있는 베스트 프랙티스도 배운다. 지피지기면 백전불태라는 말처럼 책을 읽고 나면 공격자 입장에서 이해하고 전략을 세우는 일이 얼마나 중요한지 알게 된다. ★ 이 책에서 다루는 내용 ★ ■ 실제 애플리케이션에 존재하는 취약점과 이를 미연에 방지하는 기술 ■ 코드 삽입을 이용한 맬웨어 감염 기술 ■ iOS 키체인과 데이터 보호의 암호화를 깨는 기술 ■ 디버거와 커스텀 코드 삽입을 이용한 오브젝티브C 런타임 환경 변조 기술 ■ SSL 세션 하이재킹과 트래픽 도청 방지 기술 ■ 파일 완전 삭제 방법과 애플리케이션에서 포렌식 흔적을 최소화하는 기술 ■ 디버깅 탐지 방법, 실행 중 클래스의 무결성을 검증하는 기술, 코드 추적을 어렵게 하는 기술 ★ 이 책의 대상 독자 ★ 이 책의 주요 대상 독자는 애플리케이션을 안전하게 설계하고자 하는 iOS 개발자다. 정부나 금융 애플리케이션은 물론이고 개발자가 보호하고자 하는 데이터나 기능이 있는 애플리케이션은 모두 보안 애플리케이션에 해당한다. 책의 내용을 이해하려면 iOS용 오브젝티브C 코딩에 상당히 익숙해야 한다. C와 어셈블리 언어까지 잘 알고 있다면 더욱 좋겠지만 의무 사항은 아니다. 책의 주요 대상이 iOS긴 하지만 맥 OS X 데스크탑에 바로 적용할 수 있는 내용도 많다. iOS와 OS X 모두 오브젝티브C 환경을 지원하며 공통적인 툴도 많기 때문이다. 그러므로 기업용 데스크탑 애플리케이션의 취약점을 분석할 때도 책의 내용을 유용하게 활용할 수 있다. ★ 이 책의 구성 ★ 『보안 전문가와 아이폰 개발자를 위한 iOS 해킹과 방어』는 크게 두 부분으로 나뉜다. 전반부에서는 iOS와 iOS 애플리케이션의 다양한 취약점과 이를 이용한 해킹을 논한다. 후반부에서는 애플리케이션을 좀 더 안전하게 보호할 수 있는 기술을 다룬다. 1장에서는 모바일 보안의 핵심적인 문제를 설명하고 개발자가 보안을 고려할 때 주로 저지르는 일반적인 착각과 실수를 다룬다. 2장에서는 탈옥을 포함한 여러 가지의 iOS 장치 장악 기술을 소개한다. 커스텀 코드를 작성한 후 유명한 탈옥 기술과 커스텀 램 디스크를 사용해서 iOS 장치에 코드를 삽입하는 방법을 배운다. 3장에서는 어떻게 iOS 장치의 파일시스템을 몇 분 만에 빼낼 수 있는지와 왜 개발자가 제조사의 디스크 암호화에만 의존해서는 안 되는지를 중점적으로 살펴본다. 장치 소유자 몰래 잠시 장치를 손에 넣을 수 있는 일반적인 사회 공학 기술도 배운다. 4장에서는 운영체제가 남기는 포렌식 데이터와 이 데이터로부터 얻을 수 있는 갖가지 정보를 다룬다. 5장에서는 iOS의 키체인 암호화와 데이터 보호 암호화를 무력화하는 방법과 이 두 가지 보호 기법의 근본적인 문제를 살펴본다. 6장에서는 HFS 저널을 이용해서 삭제된 파일을 복구하는 방법과 파일을 복구할 수 없도록 안전하게 삭제하는 방법을 배운다. 7장에서는 런타임 환경을 모니터링 및 조작할 수 있는 툴을 소개하고 블랙햇 해커가 iOS 애플리케이션의 객체, 변수, 메소드를 어떻게 조작해서 다양한 보안 계층을 우회할 수 있는지 알아본다. 8장에서는 애플리케이션 디스어셈블링과 디버깅, 악성 코드 삽입, 여러 가지 로우레벨 공격 기술에 유용한 툴과 접근 방법을 소개한다. 9장에서는 SSL 세션을 하이재킹할 수 있는 툴을 설명하고 이런 공격으로부터 애플리케이션을 보호할 수 있는 방법을 살펴본다. 10장에서는 보안에 관한 내용을 좀 더 자세히 다루고 애플리케이션 데이터를 보호할 수 있는 제대로된 암호화 기술의 구현을 배운다. 11장에서는 애플리케이션이 최소한의 흔적만 남기도록 설계함으로써 포렌식 데이터의 유출을 미연에 방지하는 방법을 설명한다. 12장에서는 애플리케이션 공격에 필요한 복잡도를 증가시킬 수 있는 다양한 베스트 프랙티스를 다룬다. 13장에서는 애플리케이션이 몇 가지 유명한 탈옥 툴을 이용해서 탈옥한 장치에서 실행 중인지 확인할 때 사용할 수 있는 기술을 알아본다. 14장에서는 책의 내용을 정리하면서 적의 입장에서 이해하고 전략을 세우는 게 얼마나 중요한지 설명한다. |