[안드로이드 플랫폼과 애플리케이션 취약점 분석 사례를 통한]
안드로이드 해킹과 보안
- 원서명Android Security Cookbook (ISBN 9781782167167)
- 지은이키이스 마칸(Keith Makan), 스콧 알렉산더바운(Scott Alexander-Bown)
- 옮긴이이승원, 박준용, 강동현, 박시준, 주설우, 이신엽, 조정근
- ISBN : 9788960777385
- 35,000원
- 2015년 07월 24일 펴냄
- 페이퍼백 | 400쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 해킹과 보안
책 소개
요약
이 책에서는 안드로이드 운영체계의 각 버전과 앱의 일반적인 취약점을 찾아내고 처리하는 안드로이드의 보안 메커니즘 속으로 안내하는 실용적인 예제를 다룬다. 이 책을 통해 안드로이드 개발도구와 프레임워크를 설정하고, 안드로이드 앱을 비롯한 기기분석을 통해 발견한 일반적인 취약점을 공격하는 방법을 알 수 있으며, 안드로이드 보안 평가 프레임워크인 드로저(drozer)를 이용해 사용자 정의 취약점 평가 도구를 개발하는 방법도 배운다. 또한 일반적인 애플리케이션 레벨 공격에 대한 분석, 열거를 통해 공격코드를 작성하는 방법을 실용적인 예제를 통해 잘 보여준다. 기본적인 개발 도구부터 자바 레이어, 네이티브 레이어까지 안드로이드 애플리케이션 보안을 포괄적으로 다루기 때문에 안드로이드 보안을 접하는 독자에게 좋은 안내서가 될 것이다.
이 책에서 다루는 내용
안드로이드 개발 도구와 프레임워크 설정
안드로이드 애플리케이션과 기기 분석과 애플리케이션과 안드로이드 운영체제의 일반적인 취약점 공격
안드로이드 보안 평가 프레임워크인 드로저(drozer)를 이용한 사용자 정의 취약점 평가 도구 개발
일반적인 애플리케이션 레벨 공격에 대한 분석, 열거, 공격 코드 작성
안드로이드 애플리케이션 보안 취약점 리버스 엔지니어링
최신 보안 강화 기술을 이용한 안드로이드 애플리케이션 방어
보안 애플리케이션 네트워킹, SSL/TLS
이 책의 대상 독자
몇몇 장은 안드로이드 애플리케이션을 공격하는 것을 다루며 나머지는 애플리케이션을 강화하는 것에 초점을 맞추고 있다. 이 책은 공격자와 방어자, 동전의 양면을 모두 다루는 것을 목표로 한다.
보안 연구자, 분석가, 모의 침투 테스트 전문가는 안드로이드 앱을 공격하는 방법의 세부사항을 즐길 것이다. 보안에 대해 더 알고 싶은 애플리케이션 개발자는 공격으로부터 애플리케이션을 보호하는 방법에 대한 실용적인 조언을 얻을 수 있을 것이다.
이 책의 구성
1장. '안드로이드 개발 도구'에서는 개발자가 안드로이드 플랫폼에서 안드로이드 애플리케이션과 네이티브 레벨 구성요소를 다루는 데 사용하는 도구를 설정하고 실행하는 것을 소개한다. 이 장은 또한 안드로이드를 처음 접하는 사람이나 일반적인 개발 환경과 도구를 설정하는 방법을 알고 싶어하는 사람에게는 유용한 개론이 될 것이다.
2장. '애플리케이션 보안'에서는 애플리케이션을 보호하기 위해 안드로이드 운영체제가 제공하는 구성요소를 소개한다. 이 장은 애플리케이션과 애플리케이션이 운영체제와 주고받는 상호작용을 보호하기 위해 사용되는 보안 관련 도구와 서비스를 직접 조사하고 사용해본다.
3장. '안드로이드 보안 평가 도구'에서는 애플리케이션이 사용자에게 노출하는 기술적인 위협을 측정하는 안드로이드 보안 전문가가 사용하는 잘 알려지거나 새롭고, 혹은 앞으로 기대되는 보안 도구와 프레임워크에 대해 소개한다. 여기에서는 나머지 장에서 사용할 해킹과 리버스 엔지니어링 도구를 설정하고 실행하고 확장하는 방법을 배울 수 있다.
4장. 애플리케이션 공격'에서는 안드로이드 애플리케이션을 대상으로 한 상황별 공격 기술을 다룬다. 이 장은 모든 안드로이드 애플리케이션 구성요소 타입을 다루며 소스 코드와 애플리케이션 간 문맥 모두에서 보안 위협을 조사하는 방법을 상세히 설명한다. 또한 3장에서 소개한 도구를 좀 더 능숙하게 다루는 방법을 소개한다.
5장. '애플리케이션 보호'에서는 4장과 정반대의 내용이다. 애플리케이션의 결함에 대해서만 이야기하는 것 대신, 이 장에서는 애플리케이션을 수정하는 것에 대해 다룬다. 4장에서 상세하게 설명한 공격 중 일부로부터 애플리케이션을 보호하기 위해 개발자가 사용할 수 있는 유용한 기술에 대해 체험할 수 있다.
6장. '애플리케이션 리버스 엔지니어링'에서는 애플리케이션을 속속들이 분석하는 방법을 습득할 수 있으며 안드로이드 리버스 엔지니어가 애플리케이션을 조사하고 분석하기 위해 사용하는 기술도 배울 수 있다. Dex 파일 포맷에 대해 매우 상세하게 배울 수 있으며, 또한 Dex 바이트코드를 리버스 엔지니어가 쉽게 이해할 수 있는 유용한 표현 방법으로 해석하는 방법도 배운다. 또한 리버스 엔지니어가 애플리케이션과 네이티브 구성 요소가 안드로이드 운영체제에서 실행되고 있는 동안 동적으로 분석할 수 있는 근사한 방법에 대해서도 다룬다.
7장. '보안 네트워킹'에서는 개발자가 네트워크 통신이 발생하는 동한 데이터를 보호하기 위해 따라야 하는 실용적인 방법을 배울 수 있다. 이 방법을 통해 SSL 통신에 좀 더 강력한 유효성 검증을 추가할 수 있게 된다.
8장. '네이티브 공격과 분석'에서는 안드로이드 플랫폼의 네이티브 문맥과 관련한 보안 평가와 테스트 방법을 다룬다. 안드로이드 시스템에서 폰의 루트 권한을 획득하고 권한을 상승시킬 수 있는 보안 결함을 찾는 방법을 배울 수 있으며, 메모리 손상과 경쟁 상태 공격을 포함한 네이티브 서비스를 대상으로 하는 로우 레벨 공격을 배울 수 있다.
9장. '암호화와 기기 관리 정책 개발'에서는 암호화를 올바르게 사용하는 방법과 애플리케이션 내부의 데이터를 안전하게 유지하는 일반적인 안티 패턴(anti-pattern) 중 일부를 피할 수 있는 방법을 다룬다. 이 장은 애플리케이션의 보안을 빠르고 안전하게 향상시키는 강건하고 시간을 절약할 수 있는 써드파티 라이브러리를 추천한다. 끝으로 기업 보안 정책을 다루고 강화하기 위한 안드로이드 기기 관리 A PI를 사용하는 방법을 다룬다
목차
목차
- 1장. 안드로이드 개발 도구
- __소개
- __ADT 설치
- __JDK 설치
- __API 소스 업데이트
- __또 다른 ADT 설치 방법
- __NDK 설치
- __안드로이드 에뮬레이팅
- __AVD 생성
- __AVD와 상호 작용하는 ADB 사용
- __AVD와 파일 송수신
- __ADB를 통해 AVD에 애플리케이션 설치
- 2장. 애플리케이션 보안
- __소개
- __애플리케이션 인증서와 서명 검사
- __안드로이드 애플리케이션 서명
- __애플리케이션 서명 확인
- __AndroidManifest.xml 파일 검사
- __ADB를 통한 액티비티 매니저와의 상호작용
- __ADB를 이용한 애플리케이션 리소스 추출
- 3장. 안드로이드 보안 평가 도구
- __소개
- __산토쿠의 설치와 설정
- __드로저 설정
- __드로저 세션 실행
- __설치된 패키지 열거
- __액티비티 열거
- __컨텐트 프로바이더 열거
- __서비스 열거
- __브로드캐스트 리시버 열거
- __애플리케이션 공격 지점 결정
- __액티비티 실행
- __드로저 모듈 작성: 기기 열거 모듈
- __애플리케이션 인증서 열거자 작성
- 4장. 애플리케이션 공격
- __소개
- __로그켓을 통한 정보 노출
- __네트워크 트래픽 검사
- __액티비티 매니저를 통한 수동 인텐트 스니핑
- __서비스 공격
- __브로드캐스트 리시버 공격
- __취약한 컨텐트 프로바이더 목록
- __취약한 컨텐트 프로바이더로부터 데이터 추출
- __컨텐트 프로바이더에 데이터 삽입
- __SQL 인젝션에 취약한 컨텐트 프로바이더 목록
- __디버깅 가능 애플리케이션에 대한 공격
- __애플리케이션에서의 중간자 공격
- 5장. 애플리케이션 보호
- __소개
- __애플리케이션 컴포넌트 보안
- __사용자 권한을 사용한 컴포넌트 보호
- __컨텐트 프로바이더 경로 보호
- __SQL 인젝션 공격에 대한 방어
- __애플리케이션 서명 검증(위조 방지)
- __설치 프로그램, 에뮬레이터, 디버그 플래그 감지를 통한
- __애플리케이션 변조 보호
- __ProGuard를 사용한 로그 메시지 제거
- __DexGuard를 사용한 고급 코드 난독화
- 6장. 애플리케이션 리버스 엔지니어링
- __소개
- __자바를 DEX로 컴파일
- __DEX 파일 디컴파일
- __달빅 바이트코드 인터프리팅
- __DEX를 자바로 디컴파일
- __애플리케이션의 네이티브 라이브러리 디컴파일
- __GDB 서버를 이용한 안드로이드 프로세스 디버깅
- 7장. 보안 네트워킹
- __소개
- __자가 서명된 SSL 인증서의 유효성 검증
- __OnionKit 라이브러리의 StrongTrustManger 사용
- __SSL 핀잉
- 8장. 네이티브 공격과 분석
- __소개
- __파일 권한 검사
- __네이티브 실행 파일 크로스 컴파일
- __경쟁 상태 취약점 공격
- __스택 메모리 손상 공격
- __자동화 네이티브 안드로이드 퍼징
- 9장. 암호화와 기기 관리 정책 개발
- __소개
- __암호화 라이브러리 사용
- __대칭 암호 키 생성
- __SharedPreferences 데이터 보안
- __암호 기반의 암호화
- __SQLCipher를 사용한 데이터베이스 암호화
- __안드로이드 KeyStore 프로바이더
도서 오류 신고
정오표
정오표
[p.140]
run external.cert.info -p com.google.android.gsf
->
run ex.cert.info -p com.google.android.gsf
2016-1-21
p159
https://github.com/mwrlabs/drozeragent
→
https://github.com/mwrlabs/drozer-agent
2016-1-25
p159
p159에서 언급한 jdiesel을 내려 받은 후 MessageHandler.java에서 오류가 난 다면
압축 파일에 포함된 Message.java 파일을 아래 폴더에 저장 해주세요.
jdiesel-master\src\com\mwr\jdiesel\api\Protobuf\Message.java
[p.162 : 아래에서 4행]