목차
저자 소개
들어가며
_머리말
_책 소개
_이 책의 특징
_준비 사항
_질문
Part 01 안드로이드 운영체제 이해
_Chapter 01 객체지향 언어와 안드로이드
__1.1 객체지향 프로그램의 특징
___1.1.1 클래스와 객체
___1.1.2 캡슐화와 정보 은닉
___1.1.3 상속
__1.2 자바와 코틀린
_Chapter 02 안드로이드 앱 보안 기초 지식
__2.1 안드로이드 아키텍처 설계
___2.1.1 안드로이드 앱 설계 패턴
___2.1.2 안드로이드 앱 설계 원칙
__2.2 정보보안 기본 원칙 - 기본에 충실하기
___2.2.1 정보보안 기본 원칙
___2.2.2 접근 제어 보안 원칙
__2.3 위협 모델링
__2.4 안드로이드 운영체제 구조
___2.4.1 사용자부터 운영체제까지
___2.4.2 안드로이드 운영체제 구조
___2.4.3 안드로이드 운영체제 주요 기술
Part 02 안드로이드 정적 분석
_Chapter 03 분석 준비
__3.1 컴파일과 디컴파일
___3.1.1 컴파일
___3.1.2 디컴파일
__3.2 빌드 및 패키징
__3.3 APK
___3.3.1 개념
___3.3.2 APK 분석하기(압축 해제)
___3.3.3 APK 분석하기(디컴파일)
___3.3.4 smali 코드
___3.3.5 네이티브 코드
___3.3.6 AndroidManifest.xml
_Chapter 04 취약점 진단하기
__4.1 NDK 취약 함수 사용
___4.1.1 개요
___4.1.2 진단 방법
___4.1.3 보안 대책
__4.2 DexClassLoader
___4.2.1 개요
___4.2.2 진단 방법
___4.2.3 보안 대책
__4.3 하드코딩된 중요 정보
___4.3.1 개요
___4.3.2 진단 방법
___4.3.3 보안 대책
_Chapter 05 정적 분석 정리 및 한계
Part 03 안드로이드 동적 분석
_Chapter 06 분석 준비
__6.1 정적 분석과 동적 분석
___6.1.1 정적 분석
___6.1.2 동적 분석
__6.2 동적 분석 준비
___6.2.1 동적 분석 환경 준비
___6.2.2 안드로이드 디버그 브리지
___6.2.3 안드로이드 앱 번들 설치
_Chapter 07 단말 취약점 진단
__7.1 단말기 내 중요 정보 저장
___7.1.1 개요
___7.1.2 진단 방법
___7.1.3 보안 대책
__7.2 디버그 로그 내 중요 정보 노출
___7.2.1 개요
___7.2.2 진단 방법
___7.2.3 보안 대책
__7.3 백그라운드 화면 보호
___7.3.1 개요
___7.3.2 진단 방법
___7.3.3 보안 대책
__7.4 액티비티 강제 실행
___7.4.1 개요
___7.4.2 진단 방법
___7.4.3 보안 대책
__7.5 코드 패치와 앱 무결성 검증
___7.5.1 개요
___7.5.2 진단 방법
___7.5.3 실습하기 - 앱 코드 패치
___7.5.4 보안 대책
__7.6 메모리 내 중요 정보 평문 노출
___7.6.1 개요
___7.6.2 진단 방법
___7.6.3 보안 대책
__7.7. 클립보드 내 중요 정보 저장
___7.7.1 개요
___7.7.2 진단 방법
___7.7.3 보안 대책
_Chapter 08 인텐트 취약점 진단
__8.1 개요
___8.1.1 매니페스트 파일
___8.1.2 엑스트라
___8.1.3 자원 식별자
__8.2 브로드캐스트 리시버
___8.2.1 개요
___8.2.2 진단 방법
___8.2.3 보안 대책
__8.3 컨텐트 프로바이더
___8.3.1 개요
___8.3.2 진단 방법
___8.3.3 보안 대책
__8.4 딥링크
___8.4.1 개요
___8.4.2 진단 방법
___8.4.3 실습하기 - MBTI 앱
___8.4.4 보안 대책
_Chapter 09 통신 구간 취약점 진단
__9.1 HTTP 패킷 스니핑 & 변조
___9.1.1 개요
___9.1.2 진단 방법
___9.1.3 보안 대책
__9.2 TCP 패킷 스니핑 & 변조
___9.2.1 개요
___9.2.2 진단 방법
___9.2.3 보안 대책
Part 04 후킹과 프리다
_Chapter 10 후킹
__10.1 프로시저 링크 테이블 및 전역 참조 테이블을 이용한 후킹
__10.2 디버깅 함수를 이용한 후킹
_Chapter 11 프리다
__11.1 프리다 개요 및 설치
___11.1.1 프리다 개요
___11.1.2 진단 PC에 프리다 설치
___11.1.3 단말에 프리다 서버 설치
___11.1.4 프리다 통신 확인
__11.2 프리다 주요 기능
___11.2.1 프리다를 이용한 후킹 실습 1
___11.2.2 프리다 스크립트 실행 방식
__11.3 프리다 - 파이썬 바인딩
__11.4 프리다를 이용한 후킹 실습 2
__11.5 함수 호출 인자 변경
__11.6 프리다 스크립트 생성
__11.7 프리다 후킹 스크립트 예제
___11.7.1 클래스, 메서드 목록 나열
___11.7.2 네이티브 함수 후킹
___11.7.3 바이트코드를 문자열로 변환
___11.7.4 호출 스택 확인
__11.8 프리덤프
__11.9 프리다 트레이스
__11.10 프리다와 동적 분석
_Chapter 12 루팅 탐지 로직과 우회 기법
__12.1 su 파일 및 시스템 경로 접근 확인
__12.2 루팅 시 설치되는 바이너리 존재 여부 확인
__12.3 프리다 탐지 로직
___12.3.1 프리다 서버 파일 존재 여부 확인
___12.3.2 프리다 프로세스 실행 여부 확인
__12.4 추가 실습 앱 소개
___12.4.1 루트 비어
___12.4.2 안디터
__12.5 추가 루팅 탐지 우회 기법
___12.5.1 루팅 탐지 로직으로 분기하지 않도록 코드 패치
___12.5.2 설정된 루팅 탐지 로직을 직접 우회
___12.5.3 루팅 탐지 로직을 포함하는 함수의 반환값 후킹
___12.5.4 루팅 탐지 우회 솔루션 사용
마치며
_진단 프레임워크 소개
맺는말
_보안 취약점 진단 컨설팅을 시작하는 분들께
_취약점에서 위협으로
_라이선스