[정보 보안 개론] 시스템 보안 (모바일 보안-2)

iOS 취약점
- iOS에 애플이 인증하지 않은 앱이 설치되어 보안 사생활 유출이 발생한 사건이 있었음
- 해당 사건은 iOS 탈옥을 통해 애플의 제한을 해제한 기기에서 발생한 것으로 확인
- 이처럼 탈옥을 통해 애플의 보안 통제를 벗어난 iOS는 많은 보안 취약점에 노출될 수 있음
안드로이드 보안 체계
- 안드로이드는 리눅스 커널을 기반으로 하는 모바일 운영체제
- 구글에서 안드로이드 플랫폼을 무료 공개
- 구글은 애플과 달리 폐쇄적이지 않고 개방적인 프로그램 개발을 추구
- 이에 따른 보안 통제의 형태도 애플과 다름
- 안드로이드는 리눅스 커널을 기반으로 하며 같은 구조를 형성
- 오픈 소스인 웹 키트 응용 프로그램 프레임워크 기반의 브라우저 지원
- 자바로 작성된 소프트웨어는 Dalvik 가상 머신에서 실행한 코드로 컴파일됨
- Dalvik, Linux 기반 Android에서의 자바 어플리케이션 구동을 위한 JIT 방식의 바이트코드 컴파일 모드
- 모바일 기기를 위해 설계된 레지스터 기반의 가상 머신
- JIT(Just in Time 컴파일), 프로그램을 실행하기 전에 처음 한 번 컴파일하는 대신, 프로그램을 실행하는 시점에서 필요한 부분을 즉석으로 컴파일 하는 방식을 말함
- 안드로이드는 개방형 운영체제를 위한 보안 정책을 적용하고 있음

응용 프로그램의 권한 관리
- 안드로이드에 설치된 모든 응용 프로그램은 일반 사용자 권한으로 실행됨
- 사용자의 데이터에 접근할 때 모든 사항을 응용 프로그램 사양에 명시
- 모든 응용 프로그램은 설치 시 자신의 고유한 사용자 아이디를 할당받아 동작함
응용 프로그램의 서명
- 애플과 마찬가지로 설치되는 응용 프로그램에 대해 서명을 하고 있음
- 애플은 자신의 CA를 통해 각 응용 프로그램마다 서명하여 배포
- 안드로이드는 개발자가 서명하도록 하는 것이 애플과의 가장 큰 차이
- 안드로이드에서 전자 서명은 보안보다는 응용 프로그램에 대한 통제권을 개발자가 갖도록 하는 데 목적이 있음
샌드박스 활용
- 안드로이드 애플리케이션도 iOS처럼 샌드박스 프로세스 내부에서 실행됨
- 기본적으로 시스템과 다른 애플리케이션에 접근하는 것을 통제
- 특정 형태를 갖추어 권한을 요청하는 것도 허용
- 동일한 개인 키를 사용하는 애플리케이션은 동일한 프로세스 내에서 실행할 수 있는 등 더 자유로운 형태로 애플리케이션을 실행할 수 있기 때문에 안드로이드는 iOS에 비해 상대적으로 애플리케이션 간 통신과 데이터 전달이 자유로움
안드로이드 취약점
- 사용자가 보안 수준을 선택할 수 있다는 점에서 iOS보다 훨씬 자유로운 운영체제
- 안드로이드에는 각종 바이러스와 악성 코드가 유포되며 그에 따른 백신도 보급되고 있음
- 자유로운 개발 및 변경이 가능한 만큼운 개발 및 변경이 가능한 만큼 리눅스 운영체제와 유사한 보안 취약점을 지니고 있음
- iOS는 기본적으로 root로 동작하지만 안드로이드는 일반 계정으로 동작
- iOS의 탈옥과 비슷한 개념으로 안드로이드는 루팅(rooting)을 할 수 있음
- 안드로이드는 일반 계정으로 동작할 때 약간의 제한이 있음
- 이를 root 권한으로 바꾸면 제한을 벗어나 모바일 기기에 대한 완전한 통제권을 지닐 수 있음
iOS와 안드로이드의 보안 체계 비교

모바일 기기 보안
이동성
- 모바일 기기 보안의 가장 큰 문제는 이동성에 있음
- 공격 받을 때보다 공격에 사용될 때 문제의 소지가 더 큼
- 워드라이빙(wardriving)
- 노트북에 수신율이 좋은 안테나를 연결하고 차에 탄 채 보안이 취약한 무선 랜을 탐색하며 해킹을 시도할 수 있음
- 모바일 기기의 이동성을 이용하면 워드라이빙으로 좀 더 넓은 영역이나 쉽게 접근하기 어려운 곳의 무선 랜까지 공격할 수 있음
블루투스
- 여러 가지 장치가 작은 규격과 적은 전력으로 접근하기 때문에 높은 수준의 암호화와 인증을 구현하기 어려워 다양한 위험에 노출될 수 있음
- 블루투스와 관련된 다양한 해킹 기술은 대부분 네트워크 해킹과 개념이 유사
블루프린팅(blueprinting)
- 블루투스 공격 장치의 검색 활동을 의미
- 각 블루투스 장치에는 MAC과 유사하게 6바이트의 고유 주소가 있어서 앞의 3바이트는 제조사에 할당되고 나머지 3바이트는 블루투스 장치별로 할당됨
- 뒤의 3바이트 주소만으로는 블루투스 장치의 종류를 식별할 수 없음
- 블루투스 장치는 종류(전화 통화, 키보드 입력, 마우스 입력 등)를 식별하기 위해 서비스 발견 프로토콜(Service Discovery Protocol, SDP)을 보내고 받음
- 공격자는 이 서비스 발견 프로토콜을 통해 공격이 가능한 블루투스 장치를 검색하고 모델을 확인할 수 있음
블루스나프(bluesnarf)
- 블루투스 취약점을 이용하여 장비의 임의 파일에 접근하는 공격
- 공격자는 블루투스 장치끼리 인증 없이 간편하게 정보를 교환하도록 개발된 OPP(Obex Push Profile) 기능을 사용
- 블루투스 장치에 있는 주소록이나 달력 등의 내용을 요청하여 열람
- 취약한 장치의 파일에 접근
블루버그(bluebug)
- 블루투스 장비 간의 취약한 연결 관리를 악용한 공격
- 공격 장치와 공격 대상 장치를 연결하여 공격 대상 장치에서 임의의 동작 실행
- 블루투스 기기는 한 번 연결되면 이후에는 다시 연결하지 않아도 서로 연결됨
- 일부 블루투스 기기의 경우, 공격자가 10~15m 정도의 거리에서 블루투스 기기에 전화 걸기, 불특정 번호로 SMS 보내기, 주소록 읽기 및 쓰기 등을 실행할 수 있음