책 소개
요약
이 책에서는 요즘 큰 이슈가 되고 있는 안드로이드 모바일 앱 분석에 필요한 내용들을 다룬다. 안드로이드 악성코드 앱 분석을 통해 모바일 보안 위험에 대한 문제점을 살펴보며, 실무에서도 활용할 수 있는 안드로이드 앱 진단 방법을 이해하기 쉽게 설명한다. 환경구축부터 접근법, 분석 방법을 전반적으로 다루므로 입문자부터 중급자까지 쉽게 따라 하며 배울 수 있다.
이 책에서 다루는 내용
■ 안드로이드 앱 분석 환경 구축 방법
■ 안드로이드 앱 구조 분석과 각 영역 요소별 위협
■ 악성코드 앱 분석 도구 설명과 상세 분석 예제
■ 안드로이드 앱 서비스 진단 방법과 프로세스의 이해
■ 안드로이드 해킹대회 앱 문제 풀이를 통한 심화 학습
이 책의 대상 독자
■ 모바일 악성코드 분석 기술을 익히고 싶은 독자
■ 모바일 해킹/보안에 사용할 수 있는 진단 도구를 익히고 싶은 독자
■ 모바일 보안 위협에 대해 전반적으로 이해하고 싶은 독자
■ 모바일 서비스 진단을 이해하고 활용하고 싶은 독자
이 책의 구성
이 책은 안드로이드 모바일 보안 위협 분야에 관심이 있는 입문자들을 대상으로 구성했다. 큰 주제는 ‘악성코드 분석’과 ‘모바일 서비스 진단’으로 이뤄졌으며, 각 장에는 이를 분석하기 위한 절차가 포함돼 있다. 또한 직접 제작된 해킹 대회 앱 문제를 통해 재미있게 복습할 수 있는 시간을 마련했다. 각 장은 다음과 같이 구성했다.
1장, 안드로이드의 기본 개념: 안드로이드에 대한 기본 개념을 소개한다. 악성코드를 분석하는 환경을 구축하기 전에 안드로이드에 대한 전반적인 개념과 구조를 파악한다. 안드로이드 개발 책은 아니기 때문에 꼭 필요한 부분만 다뤘으며, 간단한 개념을 배워두어야 이후에 설명하는 분석 단계들을 이해하고 따라 하는 데 문제가 없다.
2장, 안드로이드 앱 진단 환경: 안드로이드 분석에 필요한 환경 구축 방법을 다룬다. 악성코드를 분석하거나, 모바일 앱 서비스를 진단하려면 안드로이드 개발 환경을 구성해야 한다. 구글에서는 안드로이드 SDK, NDK 등을 제공하며, 자바 애플리케이션 개발도구와 완벽하게 연결된 진단 환경을 제공한다. 진단을 위해 어떤 도구들이 필요한지, 도구들을 어떻게 활용할 수 있는지 상세히 다룬다.
3장, 안드로이드 앱 분석 방법: 안드로이드 악성코드 앱과 취약점을 진단할 때 갖춰야 할 분석 방법을 다룬다. 3장에서 다룬 내용은 4장, 5장, 7장 등에서 사용되므로 반드시 숙지해야 한다.
4장, 악성코드 분석: 이 책의 하이라이트 중 하나로, 악성코드를 분석하기 위해 온라인 분석 서비스 활용, 이런 분석이 어떤 것을 의미하는지, 수동으로 분석할 때 어떤 절차로 진행하는지 등을 자세히 다룬다. 다양한 접근 방법을 알아가기 때문에 이 중에서 자신에게 맞는 방법론을 찾아내길 바란다.
5장, 안드로이드 모바일 서비스 진단: 안드로이드 앱 서비스 진단 방법을 다룬다. 테스트 앱을 통해 실무에서도 활용할 수 있는 방법을 상세히 소개한다. OWASP에서 제공한 기준을 중심으로 다뤘으며, 각 진단 방법과 이에 대한 대응 방안을 제시한다.
6장, 안드로이드 진단 도구 활용: 안드로이드 앱 분석 진단 도구를 소개한다. 안드로이드 앱을 분석하는 데 활용할 수 있는 중요 도구들을 추가로 소개했다. 패킷 분석과 취약점 분석, 공개 프레임워크 진단 도구들을 다루면서 포괄적인 진단 방법을 확인할 수 있다.
7장, 안드로이드 해킹대회 앱 문제 풀이: 안드로이드 악성코드 분석과 진단을 통해 다뤘던 기술과 도구들을 활용하기 위해 복습 차원에서 안드로이드 해킹 대회 문제 풀이를 소개한다. 해킹대회에서 모바일 앱 진단 문제들이 많이 출제되고 있어 대회를 준비하는 사람들에게도 유용한 정보를 제공한다.
이 책의 특징
이 책은 요즘 이슈가 되고 있는 안드로이드 모바일 앱 분석에 필요한 내용들을 다뤘다. 악성코드 분석을 통해 안드로이드 앱의 위험성에 대해 알 수 있으며, 안드로이드 앱 진단 방법을 통해 실무에서도 활용할 수 있는 기술과 프로세스를 알 수 있다. 00% 실습 형태로 환경 구축부터 접근법, 분석 방법을 소개하므로 입문자부터 중급자까지 쉽게 따라 하며 배울 수 있다.
주의할 점
이 책의 집필 목적은 모바일 보안 위협에 대한 이해와 진단 분야에 입문하기를 원하는 독자를 위한 것이다. 이 책에서는 독자의 로컬 PC에서 테스트할 수 있는 환경까지 상세히 설명했다. 이 도구를 이용해 허락 받지 않은 서비스를 대상으로 해킹을 시도하는 행위는 불법이므로 절대 금지한다. 적법하지 않은 해킹을 시도할 때 발생하는 법적인 책임은 모두 그것을 행한 사용자에게 있다는 것을 항상 명심하기 바란다.
목차
목차
- 1장 안드로이드의 기본 개념
- 1.1 안드로이드 아키텍처
- 1.1.1 리눅스 커널
- 1.1.2 라이브러리
- 1.1.3 안드로이드 런타임
- 1.1.4 애플리케이션과 프레임워크
- 1.1.5 디바이스 파일 디렉터리 구조
- 1.2 안드로이드 필수 구성 요소
- 1.2.1 액티비티
- 1.2.2 서비스
- 1.2.3 콘텐트 프로파이더
- 1.3 안드로이드 앱의 기본 구조
- 1.4 정리
- 2장 안드로이드 앱 진단 환경
- 2.1 안드로이드 환경 구축
- 2.1.1 안드로이드 SDK설치
- 2.1.2 ADK 설치
- 2.1.3 안드로이드 개발 환경 테스트
- 2.1.4 리눅스에 안드로이드 환경 구축
- 2.2 패킷 분석 점검 환경 구축
- 2.2.1 무선 공유기(무선AP)를 이용한 정보 수집
- 2.2.2 USB 타입 지원 AP(게이트웨이 지원)를 이용한 정보 수집
- 2.2.3 애드혹 설정을 이용한 정보 수집
- 2.2.4 tcpdump 바이너리를 이용한 정보 수집
- 2.3 디바이스 플랫폼 변경
- 2.3.1 공격 코드를 통해 알아보는 루팅
- 2.3.2 테그라크 커널 이용
- 2.3.3 CF-Auto-Root 이용
- 2.4 안드로이드 진단 도구 설명
- 2.4.1 ADB 기본 명령
- 2.4.2 디바이스에서 apk 파일 보내기/가져오기
- 2.4.2.1 adb shell을 이용해 가져오기
- 2.4.2.2 탐색기를 통해 가져오기
- 2.4.3 로그캣을 이용한 분석
- 2.4.4 pm 명령을 이용한 디바이스 정보 획득
- 2.4.5 Busybox를 이용한 안드로이드 명령 확장
- 2.5 에디터를 이용한 파일 포맷 분석
- 2.6 정리
- 3장 안드로이드 앱 분석 방법
- 3.1 디컴파일을 이용한 정적 분석
- 3.2 동적 디버깅을 통한 분석
- 3.3 코드 패칭을 이용한 apk 파일 우회
- 3.4 안드로가드를 이용한 분석
- 3.4.1 Androapkinfo를 이용한 정보 확인
- 3.4.2 Androxml을 이용한 바이너리 XML 확인
- 3.4.3 Androlyze를 이용한 분석
- 3.4.4 Androdd를 이용한 apk 파일 구조 확인
- 3.4.5 Androdiff와 Androsim을 이용한 파일 비교
- 3.5 DroidBox를 이용한 자동 분석
- 3.5.1 adb 명령을 path로 설정
- 3.5.2 안드로이드 SDK Manager를 이용해 Packages 업데이트
- 3.6 Sublime 플러그인을 이용한 분석
- 3.7 APKInspector를 이용한 분석
- 3.8 dexplorer와 dexdump를 이용한 분석
- 3.9 Santoku를 활용한 모바일 앱 분석
- 3.9.1 산토쿠 진단 도구
- 3.9.2 산토쿠 실행과 설치 방법
- 3.9.3 산토쿠에서 모바일 앱 리버싱
- 3.10 정리
- 4장 악성코드 분석
- 4.1 온라인 분석 서비스 활용
- 4.1.1 Anubis를 이용한 악성 앱 분석
- 4.1.2 바이러스토탈 서비스를 이용한 악성 앱 분석
- 4.1.3 바이러스토탈 앱을 이용한 진단
- 4.1.4 andrototal을 이용한 진단
- 4.1.5 apkscan 앱을 이용한 진단
- 4.1.6 Dexter를 이용한 진단
- 4.1.7 APK Analyzer를 이용한 진단
- 4.2 악성코드 앱 수동 분석
- 4.2.1 smartbilling.apk 악성코드 분석(디바이스 정보 획득)
- 4.2.2 alayac.apk 악성코드 분석(백신 앱 변조)
- 4.2.3 miracle.apk 악성코드 분석(디바이스 정보 전송)
- 4.2.4 phone.apk 악성코드 분석(금융 앱 변조)
- 4.2.5 apk-locker를 이용한 사례
- 4.3 악성코드 위협 사용자 대응
- 4.3.1 의심스러운 URL 클릭과 다운로드 금지
- 4.3.1.1 스미싱 차단 앱 설치
- 4.3.2 모바일 백신 설치와 최신 업데이트 유지
- 4.3.3 불필요한 무선 인터페이스 사용 중지
- 4.3.4 플랫폼 구조 임의 변경 금지
- 4.3.5 삼성 녹스(SE Android 기반) 이용한 보안
- 4.3.1 의심스러운 URL 클릭과 다운로드 금지
- 4.4 정리
- 5장 안드로이드 모바일 서비스 진단
- 5.1 가상 취약점 진단 테스트 환경 구성
- 5.2 OWASP TOP 10 기준 모바일 보안 위협
- 5.3 안전하지 않은 데이터 저장
- 5.3.1 가상 애플리케이션 실습
- 5.3.2 /data/data/ 디렉터리 확인
- 5.3.3 대응 방안
- 5.4 취약한 서버 측 제어
- 5.4.1 가상 애플리케이션 실습
- 5.5 취약한 암호 사용
- 5.6 불충분한 전송 계층 보호(비암호화 통신)
- 5.6.1 SSL/TLS을 이용한 암호화
- 5.7 소스코드 내의 정보 노출
- 5.8 중요한 정보 노출
- 5.8.1 메모리 내의 중요 정보 노출
- 5.8.2 가상 애플리케이션 실습
- 5.9 로그 정보 노출
- 5.10 웹 서비스 취약점 항목 진단
- 5.11 앱 대응 방안: 소스코드 난독화
- 5.11.1 프로가드
- 5.11.2 프로가드에서 키 생성
- 5.11.3 프로가드 설정
- 5.11.4 프로가드로 생성된 파일 설명
- 5.11.5 프로가드의 결과물
- 5.12 정리
- 6장 안드로이드 진단 도구 활용
- 6.1 PacketShark: 네트워크 패킷 캡처 앱
- 6.2 Drozer 모바일 진단 프레임워크
- 6.3 ASEF - 모바일 취약점 도구
- 6.3.1 apk 파일 설치를 통한 점검
- 6.3.2 디바이스 apk 파일 점검
- 6.4 Droidsheep: 웹 세션 하이재킹 도구
- 6.5 dSploit: 네트워크 진단 도구
- 6.5.1 포트 스캔 작업
- 6.5.2 정보 획득
- 6.5.3 로그인 체크
- 6.5.4 중간자 정보 획득(MITM) 공격
- 6.6 AFLogical: 모바일 포렌식 도구
- 6.7 정리
- 7장 안드로이드 해킹대회 앱 문제 풀이
- 7.1 안드로이드 앱 문제 1
- 7.1.1 문제 제시와 의도
- 7.1.2 문제 풀이
- 7.2 안드로이드 앱 문제 2
- 7.2.1 문제 제시와 의도
- 7.2.2 문제 풀이
- 7.3 안드로이드 앱 문제 3
- 7.3.1 문제 제시와 의도
- 7.3.2 문제 풀이
- 7.4 안드로이드 앱 문제 4
- 7.5 정리