보안정보

전문화된 보안 관련 자료, 보안 트렌드를 엿볼 수 있는
차세대 통합보안관리 기업 이글루코퍼레이션 보안정보입니다.

안드로이드 시스템 권한을 악용한 모바일 공격

2017.08.23

13,642

서비스사업본부 해외파견팀 이권혁

 

 

1. 개요

 

 

모바일 이용자가 증가됨에 따라 이를 대상으로 하는 해킹수법이 날로 지능화, 고도화되고 있으며 사용자들의 불안감 또한 커지고 있다. 모바일 뱅킹과 모바일 오피스 등 기존에 PC에서 활용할 수 있던 서비스들이 모바일 환경에서도 가능해지면서 사용자의 위치정보, 단말기 정보, 연락처 정보 등 사용자의 개인정보를 임의로 수집하고 유출할 수 있는 보안위협 또한 높아지고 있다.

 

올해 5월  美조지아 공대 연구팀이 안드로이드 권한을 이용하여 사용자 단말을 제어할 수 있는 "Cloak-and-Dagger"공격을 발견하였다. 발견된 취약점은 안드로이드 7.1.2 버전까지의 모든 버전에서 동작이 가능하며 'SYSTEM_ALERT_WINDOW' 권한과 'BIND_ACCESSIBILITY_SERVICE' 권한을 악용하여 발생한다. 

 

안드로이드 운영체제의 취약점이나 기능적 오류를 이용하지 않고 두 가지 권한을 단독 또는 조합하여 사용하므로 Google Play Store에서 설치한 어플리케이션인 경우 사용자에게 허용하라는 메시지가 별도로 표시되지 않기 때문에 사용자에게 발각되지 않고 공격을 수행할 수 있다. 

 

이처럼 공격자가 사용자의 모바일 기기에 허용된 권한 이상의 시스템 권한을 획득하는 경우 모바일 기기에 저장된 휴대전화목록, 메시지, 통화내역기록, 카메라, 위치정보와 같은 개인정보를 백그라운드 모드로 동작하며 공격자에게 전달하기 때문에 발견하기 쉽지 않다. 따라서 이번 호에서는 이와 같이 안드로이드 기반의 모바일 환경에서 시스템 권한이 악용되어 발생할 수 있는 공격들에 대해서 알아보고자 한다.

 


 

 

 

2. 안드로이드 시스템 권한

 

안드로이드 운영체제 기반으로 제작된 어플리케이션은 모바일 기기에 어플리케이션을 다운로드 하거나 설치 시 해당 어플리케이션이 사용하는 시스템 권한을 아래와 같이 사용자에게 명시하고 있다.

 


 

 

[그림 1] 어플리케이션 설치 시 권한 요청

 

 

또한 명시하고 있는 시스템 권한들은 해당 어플리케이션을 디코드 할 경우 루트 디렉터리에 존재하는 AndroidManifest.xml 파일 상에 'uses-permission'에서도 확인할 수 있다.

 

  

 

[그림 2] AndroidManifest.xml 파일 상에 나열된 권한 목록

 

 

이렇게 어플리케이션에서 명시하고 있는 시스템 권한은 크게 Normal Permissions(정상 권한)과 Dangerous Permissions(위험한 권한)이 나뉜다. 

 

Normal Permissions은 어플리케이션이 동작하는데 있어 사용자의 개인 정보나 보안 상에 큰 위험이 없는 권한을 가리키며 Dangerous Permissions은 사용자의 연락처를 읽을 수 있는 권한 같은 모바일 기기에 저장된 사용자의 데이터나 리소스를 필요로 하는 권한을 말한다. 

 

 

권한 그룹

권한

CALENDAR

READ_CALENDAR

WRITE_CALENDAR

CAMERA

CAMERA

CONTACTS

READ_CONTACTS

WRITE_CONTACTS

GET_ACCOUNTS

LOCATION

ACCESS_FINE_LOCATION

ACCESS_COARSE_LOCATION

MICROPHONE

RECORD_AUDIO

PHONE

READ_PHONE_STATE

CALL_PHONE

READ_CALL_LOG

WRITE_CALL_LOG

ADD_VOICEMAIL

USE_SIP

PROCESS_OUTGOING_CALLS

SENSORS

BODY_SENSORS

SMS

SEND_SMS

RECEIVE_SMS

READ_SMS

RECEIVE_WAP_PUSH

RECEIVE_MMS

STORAGE

READ_EXTERNAL_STORAGE

WRITE_EXTERNAL_STORAG

  

[표 1] Dangerous Permissions 목록

 

 

대다수의 악성 어플리케이션에서 포함하고 있는 기능인 연락처목록확인, 통화내역확인, 핸드폰 잠김 상태에서 카메라 작동, 위치 추적 등과 같은 공격을 수행하기 위해서는 이러한 시스템 권한인 Dangerous Permissions이 필요로 하게 된다.

 

 

Dangerous Permissions을 악용하여 제작된 어플리케이션 중에는 전 세계적으로 인기를 끌었던 모바일 게임인 “Pokémon Go”를 사칭하여 제작된 악성 어플리케이션이 존재한다. 정상적인 어플리케이션에서는 시스템 권한을 다음과 같이 사용자에게 명시하고 있다.

 


 

[그림 3] 정상 어플리케이션에서 명시하고 있는 시스템 권한

 

 

악성 어플리케이션은 정상적인 어플리케이션에서 사용하고 있는 위치, 카메라, 사진 등과 같은 시스템 권한뿐만 아니라 SMS 문자 읽기, 오디오 녹음, 통화기록 쓰기 등 정상 어플리케이션에서 제공하는 서비스와 무관한 다수의 시스템 권한을 요구하고 있다. 해당 악성 어플리케이션을 설치하여 실행한 사용자는 모바일 기기에 저장된 개인정보가 공격자에게 전송되는 피해가 발생하였다.

 


 

[그림 4] 악성 어플리케이션에서 명시하고 있는 시스템 권한

 

 

또한 은행 스마트뱅킹 어플리케이션으로 위장한 악성 어플리케이션으로 인하여 피해가 발생하기도 하였다. 해당 악성 어플리케이션은 모바일 기기를 타겟으로 제작된 랜섬웨어(Ransomware)으로 어플리케이션을 설치할 때 다른 앱 위에 그리기나 시작할 때 자동으로 시작과 같은 스마트뱅킹 어플리케이션에서 사용하지 않은 권한들을 요구하게 된다. 사용자가 해당 어플리케이션을 실행하면 모바일 화면에 금전을 요구하는 사진을 발생시켜 다른 화면으로 전환이나 기능을 정상적으로 동작하지 못하게 한다.

 


 

[그림 5] 은행 스마트뱅킹 어플리케이션으로 위장한 랜섬웨어 공격

 

 

위와 같이 시스템 권한을 악용한 악성 어플리케이션들은 어도비 플래시 플레이어나 구글 플레이 스토어 등  사용자에게 자주 사용되거나 인기 있는 어플리케이션으로 사칭되어 유포되고 있다.

 

 


 

[그림 6] 정상 어플리케이션으로 위장되어 유포되는 악성 어플리케이션

 

 

3. 시스템 권한 악용한 공격 시나리오

 

 

공격자가 모바일 어플리케이션을 통해 개인정보유출이나 랜섬웨어 설치와 같은 공격을 수행하기 위해서는 기본적으로 악성 어플리케이션이 설치되고, 실행해야만 한다. 그렇다면 악성 어플리케이션은 설치된 후에 주로 어떤 시스템 권한을 공격에 활용할까? 공격에 사용될 수 있는 시스템 권한의 종류에 대해서 설명해보고자 한다.

 

 

1) 모바일 기기에 저장된 연락처, 문자 송·수신 내역과 같은 개인정보 유출

 

 

안드로이드 어플리케이션을 실행한 뒤 모바일 기기에 저장된 연락처, 문자 내역, 내부저장공간에 파일들을 열람하거나 확인하기 위해서는 다음과 같은 권한들이 요청하게 된다.

 

 

권한 그룹

권한

설명

PHONE

READ_PHONE_STATE

장치의 전화 번호네트워크 정보진행중인 통화의 상태 읽어오기

READ_CALL_LOG

사용자의 통화 기록 읽기

WRITE_CALL_LOG

사용자의 통화 기록 쓰기

SMS

SEND_SMS

SMS 메시지 전송 권한

RECEIVE_SMS

SMS 메시지를 수신할 수 있는 권한

READ_SMS

SMS 메시지 기록 읽기

STORAGE

READ_EXTERNAL_STORAGE

외부저장소에서 읽을 수 있도록 허용하는 권한

WRITE_EXTERNAL_STORAG

외부저장소를 사용할 수 있도록 허용하는 권한

 

 

[표 2] 연락처, 문자 내역, 내부저장공간 확인 시 필요한 권한

 

 

이러한 시스템 권한들은 모바일 게임이나 메신저, 소셜네트워크 서비스 등 다양한 어플리케이션에서 서비스 제공을 위해 사용하고 있는 시스템 권한이다. 

 

 


 

[그림 7] 어플리케이션 사용하고 있는 시스템 권한

 

 

하지만 해당 시스템 권한들을 악용한 악성 어플리케이션에서는 다음과 같은 순서를 통해 개인정보가 공격자에게 전송이 될 수 있다. 현재까지도 이러한 악성 어플리케이션은 블랙마켓이나 검증되지 않은 홈페이지를 통해 사용자에게 다운로드와 설치를 유도하고 있다.

 

 

 

[그림 8] 시스템 권한을 악용한 공격 흐름도

 

 

2) 백그라운드 모드로 카메라 동작, 오디오 녹음, 사용자 위치정보 유출

 

 

사용자가 어플리케이션을 종료하더라도 카메라, 오디오 녹음, 위치 추적 등의 정보를 백그라운드 모드로 공격자에게 전송할 수 있다. 해당 정보들을 공격자에게 전송하기 위해서는 다음과 같은 시스템 권한들이 필요하다.

 

 

권한 그룹

권한

설명

CAMERA

CAMERA

 카메라장치를 사용할 수 있는 권한

MICROPHONE

RECORD_AUDIO

 오디오장치를 이용하여 녹음할 수 있는 권한

LOCATION

ACCESS_FINE_LOCATION

 정확한 위치에 액세스 할 수 있도록 허용

ACCESS_COARSE_LOCATION

 대략적인 위치에 액세스 할 수 있도록 허용

  

[표 3] 카메라 동작, 오디오 녹음, 위치정보 확인 시 필요한 권한

 

카메라 동작과 오디오 녹음, 위치정보 확인을 위한 시스템 권한은 모바일 내비게이션, 카메라 어플리케이션 등 사용자 생활에 편의를 제공하기 위해 해당 권한들을 사용하고 있다. 

 

  

 

[그림 9] 어플리케이션에서 사용하고 있는 위치, 카메라 시스템 권한

 

 

악성 어플리케이션에서 이러한 권한들이 악용되는 경우 대부분 사용자가 인지할 수 없도록 백그라운드 모드로 실행되어 아래와 같은 방법으로 공격이 발생한다. 과거 논란이 되었던 Hacking Team에서 제작된 어플리케이션도 이와 같은 권한들을 이용하여 사용자들의 위치 정보나 불법 도청과 같은 공격을 수행하기도 하였다.

 


 

 

[그림-10] 백그라운드 모드로 시스템 권한을 악용한 공격 흐름도

 

 

3) 모바일 기기를 대상으로 랜섬웨어 공격 

 

 

최근에는 모바일 기기에 저장된 개인정보를 탈취하는 공격뿐만 아니라 모바일 기기를 대상으로 랜섬웨어 공격이 증가하고 있다. 모바일 기기를 대상으로 이루어지고 있는 랜섬웨어 공격은 Dangerous Permissions에 포함되어 있지 않은 ‘SYSTEM_ALERT_WINDOW’ 라는 특별 권한을 사용한다.

 

‘SYSTEM_ALERT_WINDOW’ 특별 권한을 가진 어플리케이션이 실행될 경우 다른 어플리케이션의 상단에 위치하게 되며 대표적으로 이 권한을 사용하고 있는 어플리케이션은 facebook 친구들과 쪽지를 주고받을 수 있는 ‘Messenger’ 라는 어플리케이션이 존재한다. 

 


 

 [그림 11] SYSTEM_ALERT_WINDOW 권한이 포함된 어플리케이션

 

 

특수 권한을 악용하여 랜섬웨어 공격을 수행하는 방법으로 모바일 화면에 비트코인 결제를 유도하는 이미지나 경고 문구를 출력시켜 다른 어플리케이션을 실행하더라도 SYSTEM_ALERT_WINDOW 권한으로 인해 모든 어플리케이션 상단 위에 위치하게 되어 어떠한 기능들을 사용할 수 없도록 방해하게 된다. 또한 시스템 관리자 권한에 추가되어 사용자가 강제로 어플리케이션을 삭제할 수 없도록 방해하게 한다.

 

 

4. 대응방안

 

지금까지 안드로이드 어플리케이션에서 사용하는 시스템 권한을 악용하는 공격에 대해 살펴보았다. 앞서 설명한 시나리오와 같이 악성 어플리케이션은 정상적인 어플리케이션이 사용하는 시스템 권한을 악용하여 사용하고 있다. 그렇기 때문에 사용자들은 어플리케이션을 설치하고 실행할 때 다음과 같은 방법을 활용하여 악성 어플리케이션으로 인한 피해를 사전에 예방해야 할 것이다. 

 

 

1) 출처가 명확하지 않은 어플리케이션 다운로드 및 설치 금지

 

 

이메일이나 SMS 문자에 삽입된 링크를 클릭할 경우, 외부사이트에서 악성 어플리케이션을 다운로드하거나 설치될 수 있다. 그렇기 때문에 신원이 확인되지 않은 사용자가 전송한 이메일이나 문자에 삽입된 링크 클릭을 금지하고 첨부된 파일을 다운로드 하지 않도록 해야 한다.

 


 

[그림 12] 피싱 문자를 통한 외부사이트 접속 유도

 


2) 모바일 보안 설정 유지

 

 

안드로이드 모바일 기기에서 제공하는 보안 옵션 중에는 출처를 알 수 없는 어플리케이션 설치 여부를 확인하는 기능이 존재한다. 또한 디바이스 관리자 목록에 접근하여 불필요한 관리자 리스트가 있는지 확인해야 한다.

 


 

[그림 13] 안드로이드 모바일 보안 옵션 확인

 

 

3) 어플리케이션 설치 시 과도한 권한 요구 확인

 

어플리케이션을 설치할 때 어플리케이션에서 제공하는 기능보다 과도한 권한이 부여되는지 확인할 필요가 있다. 불필요하게 과도한 권한이 요구되는 어플리케이션을 설치 할 경우, 앞서 설명한 시스템 권한을 악용한 공격 방법처럼 디바이스에 저장되어 있는 연락처나 문자 송수신 내역, 통화내역 확인 등의 사용자 개인정보가 외부로 유출될 수 있다.

 

 

4) 사용하지 않은 시스템 권한 변경

 

 

사용자의 실수 또는 신뢰되지 않은 경로를 통해 어플리케이션을 설치하였거나 어플리케이션이 과도하게 권한을 요구하는 경우에는 해당 어플리케이션을 제거해야 한다. 하지만 안드로이드 6.0 마시멜로우 버전 이상부터는 해당 어플리케이션에서 제공하는 권한을 제어할 수 있도록 변경되었다. 그러나 이러한 방법으로 권한을 변경하였을 경우에는 해당 어플리케이션에서 제공하는 서비스가 작동하지 않을 수 있으므로, 권한을 제어할 때는 확인 후 변경해야 한다. 

  

 

[그림 14] 어플리케이션에서 사용하는 시스템 권한 변경

 

 

5. 참고자료

 

[1] Android Developers : https://developer.android.com/guide/topics/security/permissions.html

[2] All Android Phones Vulnerable to Extremely Dangerous Full Device Takeover Attack : http://thehackernews.com/2017/05/android-hacking-technique.html

[3] Cloak & Dagger : http://cloak-and-dagger.org/

[4] System Permissions : http://lectroid.tistory.com/4

[5] DroidJack, 백도어가 포함된 포켓몬 GO 안드로이드 앱 발견 : http://blog.alyac.co.kr/711

[6] ‘어도비 플래시 플레이어’ 사칭한 랜섬웨어 기승 : http://www.hani.co.kr/arti/economy/it/700154.html

[7] 안드로이드(운영체제) : https://namu.wiki/w/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C(%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C)

 

  

 ​