책 소개
2017년 세종도서 학술부문 선정도서
요약
금융권 앱을 모델로 가상으로 제작된 ‘인시큐어뱅크’ 앱에서 제공되는 20가지 이상의 진단 방법과 취약점 대응 방안을 제시했다. 안드로이드 보안에 관심 갖고 있던 독자라면 누구나 쉽게 실습할 수 있도록 구성했다. 취약점 항목별로 도출된 취약점을 소스 코드 레벨로 설명하고, 자동화 분석 진단 환경을 제시해 효율적으로 진단할 수 있는 방안을 제시했다. 단계별로 실습하며 익힌다면, 실무에서 진단할 안드로이드 앱 서비스의 취약점을 손쉽게 진단하고 고객에게 대응 방안을 제시할 수 있다.
이 책의 특징
■ 실무와 동일하게 구성된 가상 뱅킹 앱 23가지의 취약점 항목을 단계별로 완벽하게 실습
■ 취약점 항목 분석에 필요한 주요 도구 설명 및 완벽한 활용 방법 제시
■ 실무에 바로 적용할 수 있는 안드로이드 앱 자동화 분석 도구 활용 방법 제시
■ 안드로이드 앱 취약점과 항목별 소스 코드 레벨을 포함한 대응 방안 제시
이 책의 대상 독자
■ 모의해킹 컨설팅/실무자를 꿈꾸는 독자
■ 안드로이드 분석가를 꿈꾸는 독자
■ 안드로이드 분석에 관심이 있는 독자
■ 입문 과정을 넘어 중급 이상의 심화 과정을 원하는 독자
이 책의 구성
안드로이드 앱 취약점 분석에 관심 있거나 앞으로 모의해킹 분야에 종사하고자 하는 입문자들을 대상으로 구성했다.
1장에서는 안드로이드 취약점 분석 실습을 하기 위한 환경 구성을 다룬다. 취약점을 진단하려면 안드로이드 개발 환경이 필요하며, 주요 항목을 모두 점검할 테스트 앱도 필요하다. 이 책에서는 인시큐어뱅크라는 취약 앱을 선택했다. 실습 환경을 단계별로 잘 구성하여 실습을 완벽하게 따라 하기 바란다.
2장에서는 안드로이드 앱 진단에 많이 사용되는 도구와 기본 명령어를 다룬다. Android debug bridge, Drozer 등은 4장에서 상세 진단을 할 때 계속 사용할 예정이다. 이 장에서 설명하는 명령어의 쓰임과 결과에 익숙해져야만 진단 실습을 하는 데 어려움이 없다.
3장에서는 인시큐어뱅크에서 실습할 항목을 한 단계씩 상세하게 다룬다. 국내에서 발표한 항목과 해외에서 발표한 항목들을 잘 조합한 형태를 인시큐어뱅크에서 실습할 수 있다. 이 항목들만 이해하고 국내 금융권을 포함해 실무에서 사용되는 취약점 항목을 이해한다면 어떤 앱이라도 어렵지 않게 다룰 수 있을 것이다.
4장에서는 안드로이드 모바일 앱을 자동으로 분석할 수 있는 환경과 이를 활용하는 방법을 소개한다. 3장에서 다룬 ‘항목별 상세 분석’을 바탕으로 앱이 동적으로 어떤 행위를 하고 있는지, 정적 권한 설정이란 무엇인지, 소스 코드 내 중요한 정보들은 어떻게 저장하는지 등을 빠르게 확인할 수 있다. 수동 진단에서 놓칠 수 있는 부분은 자동 분석을 이용하면 보안 위협을 감소시킬 수 있다.
5장에서는 개발자 측면에서 사용할 수 있는 오픈소스 소프트웨어 및 개발자가 참고할 수 있는 가이드를 소개한다. 안드로이드 취약점 진단 항목에 맞는 시큐어코딩 분석 도구는 존재하지 않으며, 자바 프로그래밍의 코드 품질 및 취약점을 분석하는 플러그인 형태 도구들이 많이 있다. 실무에서는 형상 관리 시스템과 연동하여 서비스 오픈 전에 보안성 검토의 한 과정으로 진행한다. 이 책에서는 FindBugs와 PMD를 다룬다.
목차
목차
- 1장 안드로이드 취약점 분석 및 환경 소개
- 1.1 안드로이드 아키텍처 이해
- 1.1.1 리눅스 커널
- 1.1.2 라이브러리
- 1.1.3 안드로이드 런타임
- 1.1.4 안드로이드 필수 구성 요소
- 1.2 인시큐어뱅크 가상 금융 앱 소개
- 1.3 안드로이드 앱 진단 환경 구성
- 1.3.1 자바 설치 및 환경 구성
- 1.3.2 안드로이드 스튜디오 설치
- 1.3.3 가상 디바이스 소개 및 설치
- 1.3.4 ADB 환경 변수 설정
- 1.4 녹스 환경 설치 및 인시큐어뱅크 서버 구축
- 1.5 인시큐어뱅크 설치 및 코드 수정 방법
- 1.6 모바일 애플리케이션 디컴파일 방법
- BytecodeViewer를 이용한 APK 파일 분석
- 1.7 마무리하며
- 2장 취약점 진단 및 분석 도구
- 2.1 ADB(Android Debug Bridge) 살펴보기
- 2.1.1 디바이스 장치 선택
- 2.1.2 일반 기능
- 2.1.3 디버그 기능
- 2.1.4 데이터 기능
- 2.1.5 포트와 네트워킹 기능
- 2.1.6 스크립팅 기능
- 2.1.7 서버 기능
- 2.1.8 쉘 기능
- 2.2 드로저를 활용한 취약점 진단
- 2.2.1 드로저란 무엇인가?
- 2.2.2 드로저를 활용한 앱 패키지 정보 확인
- 2.2.3 드로저를 활용한 취약점 분석
- 2.2.4 모듈 관리
- 2.2.5 모듈 설치
- 2.2.6 저장소 관리
- 2.3 칼리리눅스 설치
- 2.3.1 가상 이미지 다운로드 및 설정
- 2.3.2 칼리리눅스 설치
- 2.3.3 VMware Tools 및 한글 설치
- 2.3.4 참고문헌
- 2.4 마무리하며
- 3장 취약점 항목별 상세 실습
- 3.1 브로드캐스트 리시버 결함
- 3.1.1 취약점 소개
- 3.1.2 취약점 진단 과정
- 3.1.3 취약점 대응 방안
- 3.2 취약한 인증 매커니즘
- 3.2.1 취약점 소개
- 3.2.2 취약점 진단 과정
- 3.2.3 취약점 대응 방안
- 3.2.4 참고문헌
- 3.3 로컬 암호화 이슈
- 3.4.1 취약점 소개
- 3.4.2 취약점 진단 과정
- 3.4.3 취약점 대응 방안
- 3.4.4 참고문헌
- 3.4 액티비티 컴포넌트 취약점
- 3.4.1 취약점 소개
- 3.4.2 취약점 진단 과정
- 3.4.3 취약점 대응 방안
- 3.5 루팅 탐지 및 우회
- 3.5.1 취약점 소개
- 3.5.2 취약점 진단 과정
- 3.5.3 취약점 대응 방안
- 3.6 안전하지 않은 콘텐츠 프로바이더 접근
- 3.6.1 취약점 소개
- 3.6.2 취약점 진단 과정
- 3.6.3 취약점 대응 방안
- 3.7 안전하지 않은 웹 뷰 실행
- 3.7.1 취약점 소개
- 3.7.2 취약점 진단 과정
- 3.7.3 취약점 대응 방안
- 3.7.4 참고문헌
- 3.8 취약한 암호화 실행
- 3.8.1 취약점 소개
- 3.8.2 취약점 진단 과정
- 3.8.3 취약점 대응 방안
- 3.8.4 참고문헌
- 3.9 애플리케이션 패칭
- 3.9.1 취약점 소개
- 3.8.2 취약점 진단 과정
- 3.8.3 취약점 대응 방안
- 3.8.4 참고문헌
- 3.10 메모리 내 민감한 정보 저장
- 3.10.1 취약점 소개
- 3.10.2 취약점 진단 과정
- 3.10.3 취약점 대응 방안
- 3.11 안전하지 않은 로깅 매커니즘
- 3.11.1 취약점 소개
- 3.11.2 취약점 진단 과정
- 3.11.3 취약점 대응 방안
- 3.12 안드로이드 키보드 캐시 이슈
- 3.12.1 취약점 소개
- 3.12.2 취약점 진단 과정
- 3.12.3 취약점 대응 방안
- 3.13 애플리케이션 디버깅 기능
- 3.13.1 취약점 소개
- 3.13.2 취약점 진단 과정
- 3.13.3 취약점 대응 방안
- 3.13.4 참고 문헌
- 3.14 안드로이드 복사/붙여넣기 취약점
- 3.14.1 취약점 소개
- 3.14.2 취약점 진단 과정
- 3.14.3 취약점 대응 방안
- 3.15 안드로이드 백업 취약점
- 3.15.1 취약점 소개
- 3.15.2 취약점 진단 과정
- 3.15.2 취약점 대응 방안
- 3.16 런타임 조작
- 3.16.1 취약점 소개
- 3.16.2 취약점 진단 과정
- 3.16.3 취약점 대응 방안
- 3.17 안전하지 않은 SDCard 저장소
- 3.17.1 취약점 소개
- 3.17.2 취약점 진단 과정
- 3.17.3 취약점 대응 방안
- 3.17.4 참고문헌
- 3.18 안전하지 않은 HTTP 통신
- 3.18.1 취약점 소개
- 3.18.2 취약점 진단 과정
- 3.18.3 취약점 대응 방안
- 3.18.4 참고문헌
- 3.19 인자 전달값 조작
- 3.19.1 취약점 소개
- 3.19.2 취약점 진단 과정
- 3.19.3 취약점 대응 방안
- 3.19.4 참고문헌
- 3.20 하드코딩 보안
- 3.20.1 취약점 소개
- 3.20.2 취약점 진단 과정
- 3.20.4 취약점 대응 방안
- 3.21 사용자 정보 목록화 이슈
- 3.21.1 취약점 소개
- 3.21.2 취약점 진단 과정
- 3.21.3 취약점 대응 방안
- 3.21.4 참고문헌
- 3.22 개발자 백도어
- 3.22.1 취약점 소개
- 3.22.2 취약점 진단 과정
- 3.22.3 취약점 대응 방안
- 3.23 취약한 패스워드 변경 실행
- 3.23.1 취약점 소개
- 3.23.2 취약점 진단 과정
- 3.23.3 취약점 대응 방안
- 3.23.4 마무리하며
- 4장 앱 자동 분석 시스템
- 4.1 샌드드로이드
- 4.2 QARK(Quick Android Review Kit)
- 4.2.1 QARK란 무엇인가?
- 4.2.2 QARK 설치 및 실행
- 4.2.3 QARK를 이용한 앱 분석
- 4.2.4 분석 결과 확인
- 4.3 Mobile Security Framework를 활용한 자동분석
- 4.3.1 MobSF란 무엇인가?
- 4.3.2 MobSF 설치 및 분석 환경 구축
- 4.2 앱유즈(AppUse) 테스팅 도구 활용법
- 4.4.1 앱 유즈란 무엇인가?
- 4.4.2 에뮬레이터 실행 및 앱 설치
- 4.4.3 지원 도구
- 4.4.4 앱 리버싱 도구 및 과정 설명
- 4.4.5 애플리케이션 도구
- 4.4.6 프록시 설정
- 4.5 기타 자동 분석 도구 활용
- 4.5.1 Inspeckage를 활용한 앱 분석
- 4.5.2 Androbus를 활용한 앱 분석
- 4.6 마무리하며
- 5장 모바일 앱 보안 강화
- 5.1 시큐어 코딩 개요6
- 5.2 PMD(Programming Mistake Detector) 활용
- 5.2.1 PMD란?..468
- 5.2.2 PMD 설치
- 5.2.3 인시큐어뱅크 소스 코드 PMD 활용
- 5.3 FindBugs/FindSecurityBugs
- 5.3.1 FindBugs란?
- 5.3.2 FindSecurityBugs란?
- 5.3.3 FindBugs/FindSecurityBugs 활용
- 5.4 코드 난독화 적용
- 5.4.1. 프로가드 난독화 적용 방법
- 5.4.2 프로가드 난독화 활용 방법
- 5.4.3 인시큐어 뱅크에 적용한 사례
- 5.5 마무리하며
도서 오류 신고
정오표
정오표
[p.290 : 아래에서 5행]
AndroidManifest.xm
->
AndroidManifest.xml