Top

[안드로이드 플랫폼과 애플리케이션 취약점 분석 사례를 통한]
안드로이드 해킹과 보안

  • 원서명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를 사용하는 방법을 다룬다

저자/역자 소개

지은이의 말

안드로이드는 사용자뿐만 아니라 개발자와 모든 종류의 회사에게 가장 인기 있는 모바일 운영체제가 되었다. 물론, 이 때문에 안드로이드는 악의적인 적들에게도 매우 인기 있는 플랫폼이 되었다.
안드로이드는 2005년부터 일반에 공개되기 시작해 기능이 급격하게 많아지고, 더불어 매우 복잡해졌다. 현재 일반적으로 스마트폰은 사용자에 관한 매우 예민한 정보를 저장하고, 또 이메일, 텍스트 메시지, 소셜 네트워킹 서비스나 전문 네트워킹 서비스 접속에 대한 정보도 저장한다. 어떤 소프트웨어라도 마찬가지지만 기능과 복잡성의 증가는 이와 동시에 보안 위협의 증가를 불러왔다. 소프트웨어가 더 강력하고 복잡해질수록 관리하기 더 힘들어지며 나쁜 현실에 적응하기도 더 힘들어진다.
이런 점은 특히 모바일 스마트폰 소프트웨어에 적용된다. 개인정보와 예민한 정보를 잔뜩 담고 있는 모바일 스마트폰 소프트웨어는 문제를 해결하는 흥미로운 보안 문맥(security context)을 제시한다. 한편, 모바일 스마트폰의 보안 문맥은 네트워크상이나 클라우드 상의 서버들과 비교하기 쉽지 않다. 이 서버들은 이동하지 않으며 쉽게 도난당하지도 않는다. 또한, 지속적으로 서버를 모니터링할 수도 있고 빠르고 자동화된 방법으로 보안 사고에 대응할 수도 있다. 우리가 주머니나 핸드백에 들고 다니거나 택시에서 잃어버리기도 하는 스마트폰과 같은 장치와는 전혀 다른 이야기다! 안드로이드 사용자와 개발자는 모바일 보안 위협에 대해 지속적으로 인지할 수 있어야 한다고 요구한다. 이 때문에 모바일 보안과 위협 평가 전문가와 보안 엔지니어에 대한 요구가 아주 높다. 이 책은 초보 안드로이드 보안 평가 전문가의 학습 곡선을 완만하게 해주는 것을 목표로 하며, 숙련된 안드로이드 보안 전문자에게는 일반적인 안드로이드 보안 문제를 깔끔하게 해결하기 위한 도구로서의 역할을 기대한다

지은이 소개

키이스 마칸(Keith Makan)

컴퓨터 공학과 물리학을 전공했으며, 열정적인 취미를 가진 보안 연구원이다. 대부분의 자유 시간을 소스 코드를 읽는 것과 리버스 엔지니어링, 퍼지 테스트, 웹 애플리케이션 기술에 대한 공격 코드를 개발하는 데 보낸다.

IT 보안 평가 전문가로 일하며, 자신의 연구를 통해서 구글 애플리케이션 보안 명예의 전당에 여러 차례 헌액되었다. 구글 크롬의 웹킷(WebKit) XSSAuditor, 파이어폭스 NoScript 애드온에 대한 공격 코드를 개발했으며, 워드프레스 플러그인에 대한 보안 결함을 계속해서 보고하고 공격 코드를 개발하기도 했다

스콧 알렉산더바운(Scott Alexander-Bown)

금융 서비스와 소프트웨어 개발 및 모바일 앱 에이전시 경력이 있는 뛰어난 개발자다. 모바일 앱 보안에 열정을 가지고 있으며 안드로이드와 함께 살고 호흡한다.

현재 수석 개발자로서 모바일 앱 개발, 리버스 엔지니어링, 앱 보안을 전문으로 한다. 또, 앱 보안에 대해 말하는 것을 즐기며 다양한 국제 모바일 앱 개발자 컨퍼런스에서 발표해왔다.

옮긴이의 말

‘안드로이드’라는 OS가 세상으로 나온 지도 벌써 10년이다. 강산이 바뀌는 동안 안드로이드는 스마트폰이라는 이름으로 우리의 삶 속에 들어왔고, 모바일 OS 시장점유율의 과반수 이상을 차지하고 있다. 최근에는 웨어러블 디바이스도 등장하면서 우리의 삶과 더 가까워지고 있다. 우리가 이런 스마트 디바이스에 의존한다는 것은 많은 데이터를 디바이스에 입력해서비스를 받는 것을 의미한다. 입력되는 데이터는 연락처, SMS, 통화목록, 공인인증서, 사진, 위치정보, 생체정보(웨어러블 디바이스를 통해 수집되는) 등 매우 다양하고 하나같이 민감한 정보들이다. 그러나 만약 안드로이드의 보안이 취약하다면 여러분의 정보는 공격자들의 좋은 먹이가 될 수 있다. 여러분이 관심을 가질 만한 부분은 안드로이드가 어떻게 민감한 정보를 보호하는지에 대한 내용일 것이다. 그리고 안드로이드 개발자들이 고민해야 할 부분은 내가 개발하는 애플리케이션을 어떻게 공격자로부터 안전하게 보호할 수 있는가에 대한 것이다.
이 책은 안드로이드 보안에 관심이 있는 사람들과 애플리케이션 개발자에게 혜안을 제시한다. 또한 안드로이드 운영체계의 각 버전과 애플리케이션의 일반적인 취약점을 찾아내고 처리하는 안드로이드의 보안 메커니즘 속으로 안내하는 실용적인 예제들을 다룬다. 이 책을 통해 안드로이드 개발 도구와 프레임워크를 설정하고, 안드로이드 앱을 비롯한 기기 분석을 통해 발견한 일반적인 취약점을 공격하는 방법을 알 수 있으며, 안드로이드 보안 평가 프레임워크인 드로저를 이용해 사용자 정의 취약점평가 도구를 개발할 수도 있을 것이다.
또한 이 책은 일반적인 애플리케이션 레벨 공격에 대한 분석, 열거를 통해 공격코드를 작성하는 방법을 실용적인 예제와 함께 잘 보여주고 있다. 기본적인 개발 도구부터 자바 레이어, 네이티브(Native) 레이어까지 안드로이드 애플리케이션 보안을 포괄적으로 다루기 때문에 안드로이드 보안을 접하는 독자에게 좋은 안내서가 될 것이다.
안드로이드는 계속 변화하고 있다. 계속 업데이트가 진행되는 만큼 지금까지는 없던 취약점 역시 생길 수 있다. 어쩌면 이 책을 번역하고 있는 지금도 아직 발견되지 않은 취약점이 있을지 모른다. 이 책을 통해 여러분이 안드로이드 보안에 더 관심을 가지고 기술적으로 견고해진다면, 분명 안드로이드는 안전한 방향으로 발전할 것이라 생각한다. 여러분의 건승을 빈다.

옮긴이 소개

이승원

안랩(AhnLab) 분석팀에서 악성코드 분석가로 오랫동안 근무했다. PC와 안드로이드 악성코드 분석에 풍부한 경험을 가지고 있으며, 다양한 분석 자동화 시스템 개발 프로젝트를 수행하였다. 독서, 메모, 달리기, 등산을 좋아하고, 인류의 삶을 바꿔나가는 IT기술 홍수 속에서 보안의 역할에 대해 관심이 많다.

박준용

서울대학교를 졸업 후 기계번역과 음성인식 소프트웨어를 개발했으며 2004년 안랩에 합류한 후에는 백신 엔진과 보안 제품, 악성코드 분석에 다양하게 참여했다. 언젠가는 프로그래밍 엔지니어와 보안 엔지니어 사이의 보이지 않는 벽을 허물 수 있다는 꿈을 갖고 있으며, 최근에는 안드로이드와 데이터 시각화에 관심이 있다.

강동현

안랩에서 악성코드 및 스파이웨어 분석을 오랫동안 담당했다. 2012년 모바일 악성코드 분석을 시작하면서 악성코드 분석 자동화 시스템 및 업무 프로세스 자동화에 관심을 갖게 되었다.

박시준

2005년부터 안랩 분석팀에서 PC 및 모바일 악성코드를 분석하고 관련 시스템을 만들고 있다. 새로운 IT 기술과 서비스에 관심이 많고 사람은 사람답게, 기계는 기계답게 하기 위한 자동화를 좋아하며, 맛집 탐방을 즐긴다.

주설우

안랩 분석팀에서 악성코드 분석과 진단 알고리즘, 자동화 분석시스템 등을 연구 개발하며 강산이 변하도록 악성코드 분석가로 일하고 있다. 삼남매를 둔 다둥이 아빠로 여행과 캠핑, 텃밭 가꾸기를 즐기며 자연 친화적인 IT인의 삶을 살고 있다.

이신엽

수원대학교 컴퓨터학과를 졸업하였으며, 현재 안랩 분석팀에서 악성코드 분석가로 근무하고 있다. 모바일 악성코드와 코드 난독화/패킹이 주요 관심 분야다. 항상 노력하는 사람을 동경하며, 안전한 모바일 환경 만들기를 목표로 한다.

조정근

경북대학교 컴퓨터공학과를 졸업한 후 안랩 분석팀에서 모바일 악성코드 분석을 하고 있다. 최근 모바일 및 IoT 분야의 보안에 관심을 가지고 있다. 안드로이드 플랫폼의 구조와 동작방식을 연구하고 있으며, 증가하는 보안 위협에 효율적으로 대응하기 위한 시스템과 프로세스 개발을 목표로 하고 있다.

목차

목차
  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[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행]