우리는 수많은 앱을 사용하여 편리한 생활을 즐기고 있다. 하지만 이토록 편리한 앱의 이면에는 언제나 보안 위협이 존재한다. 내가 사용하고 있는 안드로이드 앱의 보안 위협을 자세히 알고 싶은가? 『안드로이드 모의해킹 입문』에서 안내하는 보안 취약점 진단 방법을 따라해보자. 진단에 그치지 않고 대응 방안까지 차근차근 살피다보면 어느새 보안 진단가로 한 발짝 내딛은 자신을 만날 수 있다.
Contents
저자 소개
들어가며
_머리말
_책 소개
_이 책의 특징
_준비 사항
_질문
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 루팅 탐지 우회 솔루션 사용
마치며
_진단 프레임워크 소개
맺는말
_보안 취약점 진단 컨설팅을 시작하는 분들께
_취약점에서 위협으로
_라이선스
Author
박도현
현재 정보보안 컨설턴트로 활동하며, 다양한 기업과 개인을 대상으로 보안 컨설팅을 제공하고 있다. 지난 5년 간의 근무 경험을 통해 모바일 앱 취약점 진단과 보안 강화에 필요한 실무 지식을 쌓아왔다. 정보보안 분야에 처음 발을 들인 이들이 겪는 어려움을 직접 경험하고, 같은 고민을 나누기 위해 지식을 글로 정리하고 있다.
현재 정보보안 컨설턴트로 활동하며, 다양한 기업과 개인을 대상으로 보안 컨설팅을 제공하고 있다. 지난 5년 간의 근무 경험을 통해 모바일 앱 취약점 진단과 보안 강화에 필요한 실무 지식을 쌓아왔다. 정보보안 분야에 처음 발을 들인 이들이 겪는 어려움을 직접 경험하고, 같은 고민을 나누기 위해 지식을 글로 정리하고 있다.