[2012년 Vol.25] 악성코드 분석 특집
출처 : 안철수연구소

ASEC Report에서는 2011년부터 급증하기 시작한 모바일 악성코드에 대하여 2회에 걸쳐 분석하겠다.

 

모바일 악성코드 동향

 

2009년 말 아이폰이 보급되면서 우리나라에 스마트폰 열풍이 불기 시작했다. 버스, 지하철, 도로 곳곳에서 고개를 숙인 채 무언가에 몰두하는 사람들을 흔하게 볼 수 있다. 이제 더는 버스 시간을 외울 필요도, 길을 묻기 위해 착한 인상의 소유자를 찾을 필요도 없다. 손 안에서 손가락의 움직임에 맞춰 원하는 정보들이 쏟아져 나오기 때문이다. 스마트폰으로 인해 우리의 삶은 좀더 편리해졌다. 하지만 아무리 좋은 것이라도 약점은 있는 법이다. 어떤 사람들은 그 약점을 노려 특정 이익을 취하기 위해 악성코드를 제작하고 있다. 이번 호에서는 이런 모바일 악성코드의 동향에 대해 살펴보겠다.

 

 

1. 안드로이드의 보급과 새롭게 주목받는 모바일 악성코드

 

[그림 1-48]은 2009년 이후, 국내의 모바일과 데스크톱 기기의 비율을 조사한 그래프다.

 


[그림 1-48] 국내 데스크톱 vs. 모바일 기기 비율(2009~2011)

 

2009년에는 데스크톱의 비율이 압도적으로 높았던 데에 비해 2010년 이후로 데스크톱의 수는 서서히 감소하고 모바일 기기의 수가 급격히 증가하는 것을 볼 수 있다. 이러한 추세의 원인은 다음과 같다.

 

- 데스크톱은 크기가 크고 사용자들 간에 공유할 수 있어 일정 수 이상으로 늘어나기 어려운 데 비해, 모바일 기기는 개인에 특화된 기능이 있어 사용자마다 하나 이상의 장비를 소유하게 된다.

 

모바일 관련 서비스가 증가할수록 이러한 추세는 더욱 가속화될 것이다. 그렇다면, 모바일 기기들이 이용하고 있는 OS에는 어떤 것들이 있으며, 그 이용 비율은 어떻게 되는지 알아보도록 하자.

 


[그림 1-49] 국내 모바일 OS의 비율(2009~2011)

 

[그림 1-49]는 2009년 이후의 모바일 OS 비율을 조사한 그래프다. 안드로이드∙iOS∙심비안 등 다양한 모바일 OS가 있는 것을 볼 수 있다. 국내에 스마트폰이 본격적으로 보급되기 시작한 2010년 중반에는 안드로이드와 iOS의 대결 구도였지만 그 이후로는 안드로이드의 비율이 압도적으로 증가했다. 물론 국내 대형 스마트폰 제조업체의 영향도 무시할 수는 없지만 안드로이드가 가진 개방성이 가장 큰 이유일 것이다.

         


[그림 1-50] 안드로이드 OS 로고와 모바일 기기

 

안드로이드는 리눅스 OS 위에서 동작되며 주요 소스들이 공개된 오픈 소스로 배포되고 있다. 개발 언어도 자바나 C(++) 등의 익숙한 언어로 되어 있어 개발자들의 진입이 쉽다. 공식 마켓 이외의 마켓을 지원하고 있는 점도 안드로이드 시장 활성화에 영향을 주었을 것이다. 하지만 이런 개방적인 특성은 보안의 측면에서 좋지 않은 영향을 끼친다.


우선, 검증되지 않은 프로그램의 무분별한 배포 때문에 사용자들의 안전이 보장되지 않는다. 안드로이드 마켓에는 보안상 문제가 있는 애플리케이션들이 올라와 있거나, 광고나 수익을 목적으로 하는 애드웨어들이 무료 사용을 미끼로 사용자들을 유혹하고 있다. 또한, 공식 마켓에는 애플리케이션에 문제가 있으면 사용자 기기에서 강제로 제거해주는 사후 처리 기능이 있지만, 서드파티 마켓(Third-party Market)은 사후 검증 및 사후 처리가 되지 않는 문제가 있다.

 

다음으로, 리버싱과 리패키징으로 인해 애플리케이션 제작자나 사용자들에게 피해가 갈 수 있다. 안드로이드에서 배포하는 APK 파일은 DEX와 Manifest 파일, 그리고 다수의 리소스 파일 등으로 이루어져 있는데, 시중에는 이러한 파일들을 원본 소스와 근접할 정도로 복구해주는 다양한 프로그램들이 있다. 악성코드 제작자들은 리패키징  방법을 통해 정상적인 애플리케이션으로 위장한 악성코드를 배포한다. 이 경우 비공식 마켓을 이용하는 사용자들이 보안 위협에 노출될 수 있다.


마지막으로, 취약점이 다수에게 노출되기 쉬워 이를 이용한 악성코드가 더욱 기승을 부릴 수 있다. 실제로 취약점을 이용한 루팅 기술은 인터넷에서 쉽게 찾아볼 수 있고, 그 중 일부를 이용한 루팅 라이브러리는 공공연하게 이용되고 있다(예: exploid, asroot, rageagainstthecage).


  
[그림 1-51] 웹에 공개된 일부 Rooting Exploit 소스코드

 

루팅을 하게 되면 해당 애플리케이션은 안드로이드 기기에 대한 모든 제어 권한을 갖게 되어 사용자 몰래 정보를 빼가거나, 특정 애플리케이션에 대한 설치/삭제, 녹음, 스크린 샷, 문자 발송 등의 여러 작업이 가능하다.

 

이와 같은 보안 문제들은 실제 통계를 통해서 확인할 수 있다. [그림 1-52]의 통계는 2010년 하반기 이후의 안드로이드 악성 샘플 접수량이다.
 


[그림 1-52] 기간별 안드로이드 악성 샘플 접수량(2010~2011)

 

위 그래프를 보면 2010년엔 극히 미미하게 접수되던 악성코드들이 2011년에 접어들면서 기하급수적으로 증가하였다. 2010년과 2011년 동일 기간(8월~12월)에 접수된 샘플의 수를 비교하면 약 200배 가까이 증가했다. 이를 통해 악성코드의 증가 추세가 앞서 살펴본 통계에서의  안드로이드 이용자 급증 추세와 같다는 것을 알 수 있다. 즉, 사람들이 많이 이용하고 있는 모바일 OS를 대상으로 악성코드 제작이 이뤄지고 있는 것이다.

 

이렇게 안드로이드 악성코드가 폭발적으로 증가하는 이유는 분명하다. 불법적으로 돈을 벌려는 악성코드 제작자들이 안드로이드 플랫폼에 매력을 느끼기 때문이다. [표 1-5]를 보자.

 

 

[표 1-5] 악성코드 제작자 측면에서 본 안드로이드의 매력

 

앞으로 안드로이드 악성코드는 더욱더 증가할 것이다. 따라서 현시점에서 우리는 안드로이드를 대상으로 하는 악성코드에 대해 살펴보고 적극적으로 대응할 필요가 있다.

 

 

2. 안드로이드 악성코드의 특징 및 이슈

 

[그림 1-53]은 최근 안드로이드를 대상으로 하는 악성코드 최다 15건을 나타낸 통계이다.
 


[그림 1-53] 모바일 악성코드 최다 15건(2010~2011)

 

 

1) Android-Trojan/SmsSend

이 진단명은 사용자를 속이거나 사용자 몰래 문자를 전송하는 프로그램을 말한다. 이러한 프로그램들은 기본적으로 [그림 1-54]와 같은 퍼미션(Permission) 정보를 갖고 있다.
 


[그림 1-54] AndroidManifest.xml 정보

 

위 그림에서 나오는 퍼미션 정보는 '문자 전송 가능'과 '문자 수신 가능'이다. 일반적으로 SmsSend 프로그램들은 수신되는 문자를 확인하여, 특정 형식의 문자 전송, 수신되는 문자를 조작 또는 차단, 단순 문자 전송 기능 등을 한다.
 
  
[그림 1-55] 사용자에게 보여지는 권한 정보

 

이러한 프로그램들은 설치될 때 위와 같은 권한 메시지를 사용자에게 보여준다. 즉, 사용자의 'SMS 또는 MMS 읽기, WAP 수신', 그리고 '요금이 부과되는 서비스'에 대한 권한을 사용자가 동의하도록 요청한다. 만약, 전혀 필요한 기능이 아닌데 이러한 권한을 요청한다면 사용자는 반드시 다시 한 번 확인해야 한다.

 


[그림 1-56] 악성코드의 문자 전송 코드

  

 

2) Android-Trojan/FakeInst(유사 진단명, FakeIM, Opfake 등)

이 진단명은 임의의 애플리케이션 설치 프로그램으로 위장하여 문자 전송 등으로 수익을 도모하거나, 실제 악성코드를 설치하는 프로그램들을 말한다.
    


 [그림 1-57] FakeInst 계열의 악성코드 샘플

 

[그림 1-57]은 FakeInst 계열의 악성코드 샘플을 실행한 화면이다. 왼쪽 그림은 특정 애플리케이션을 다운로드할 때 동의할 것인지를 사용자에게 묻고 있다. 이때 설치되는 프로그램은 악성코드 변형에 따라 다르다. 이 샘플에서는 'Go Launcher iPhone Theme' 애플리케이션(오른쪽)을 설치한다. 가운데 그림은 'Rules'라는 버튼을 누를 때 나타나는 프로그램 설명이다. 내용을 보면, 설치를 위해서 과금이 이뤄지는 3개의 문자를 전송해야 한다고 나와 있으며, 자신들은 아무런 책임도 지지 않는다고 명시하고 있다.

  


[그림 1-58] FakeIM 계열의 악성코드 샘플

 

[그림 1-58]은 FakeIM 계열의 악성코드 샘플을 실행한 화면이다. 핵심은 오른쪽 화면의 메시지 창인데, 콘텐츠를 다운로드하기 위해서 1899번으로 SMS 하나를 보내는데, 대략 80루블 정도의 금액이 결제된다는 내용을 담고 있다.

 


[그림 1-59] Opfake 계열의 악성코드 샘플

 

[그림 1-59]는 Opfake 계열의 악성코드 샘플을 실행한 화면이다. 이 악성코드는 왼쪽의 그림과 같이 Opera 웹 브라우저로 위장하여 설치된다. 악성코드를 실행하면 오른쪽 화면의 메시지 창에 나오는 약관과 같이 유료 결제 SMS가 발송된다.

 

위에서 살펴본 세 가지 사례와 같이 FakeInst, FakeIM, Opfake 등과 같은 악성코드는 사용자를 속여서 설치되며, 설치 중 또는 최초 실행 시 과금 SMS를 발송하는 형태가 많다.

 

 

3) Android-Spyware/Geimini

이 진단명은 정상 애플리케이션의 리패키징을 통해 사용자를 속여서 설치되고, 백그라운드 서비스로 개인정보를 탈취해가는 스파이웨어 악성코드 종류를 말한다.

 

'Monkey Jump 2' 애플리케이션을 리패키징하여 배포되었던 악성코드를 사례로 들어 설명하면 다음과 같다.

     


 [그림 1-60] Geimini 계열의 악성코드가 수정하는 권한 비교

 

[그림 1-60]은 정상 애플리케이션과 악성코드의 권한 정보를 비교한 그림이다. 왼쪽은 정상 애플리케이션의 실행 권한으로, 게임의 실행과 관련된 최소한의 권한만을 가지고 있다. 그에 반해 오른쪽의 리패키징된 애플리케이션은 개인정보에 대한 접근 권한, SMS 발송 권한, 위치 정보, SD 카드 권한, 전화기 정보, 시스템 접근 권한 등 많은 권한을 가지고 있다.

 


[그림 1-61] AndroidManifest.xml 정보를 통해 살펴본 악성코드

 

[그림 1-61]는 Geimini 악성코드의 AndroidManifest 정보이다. 'C'라는 서비스와 함께, 다수의 사용자 권한이 있는 것을 볼 수 있다.
 


[그림 1-62] 사용자의 주소록 정보를 추출해내는 서비스 코드

 

[그림 1-62]는 'C' 서비스에서의 a() 메소드의 구현 내용인데 사용자의 주소록을 얻어와 문자열을 조합하는 것을 확인할 수 있다. 이외의 다른 코드에서도 사용자의 위치 정보, 모바일 기기 정보 등을 추출한다.
 

 


4) Android-Exploit/Rootor

이 진단명은 애플리케이션 실행 시 취약점을 이용하여 시스템 권한을 취득하는 악성코드 종류를 말한다.

 

원래 루팅은 PC 환경에서의 해킹 기법이다. 해커가 특정 시스템에서의 루트 권한을 획득하기 위해 취약점 또는 프로그램 버그를 이용하던 데에서 유래됐다. PC 환경에서는 시스템에 대한 불법 침입을 위해서 이용되는 기법이기 때문에 법에 어긋나는 행위이나, 안드로이드 환경에서는 일부 인정되고 있다. 

 

일반적으로 안드로이드에서 루팅은 아래와 같은 목적으로 이용되고 있다.

 - 제한된 자원의 활용을 위해
 - 더 최적화된 환경을 구축하기 위해(Custom Rom 등)
 - 성능을 더 높이기 위해
 - 기본 안드로이드의 기능을 확장하기 위해(작업 관리, 메모리 관리 등)
 - 운영체제 하위 단으로 접근하기 위해(데이터 복구, SD 카드 관리, 전화-메시지 필터링 등)
 - 기본적으로 지원되지 않는 마켓을 이용하기 위해

 

물론 위와 같이 사용자에 의해 양성적으로 이용될 수 있지만, 악성코드에 의해서 악용될 경우 큰 보안 위협이 될 수 있다. 예를 들어 사용자의 적절한 동의나 인지 없이 특정 프로그램을 설치하거나, 카메라 영상∙통화∙SMS에 접근하거나, 유료 통화나 SMS를 전송하는 등의 행위를 할 수 있다. 때문에 대부분의 안티바이러스 업체들은 루팅 기능이 있는 애플리케이션들에 대해서 악성코드로 진단하는 방향으로 가고 있다.

 

아래는 안철수연구소에 접수되었던 루팅 프로그램들의 사례이다. 루팅을 수행하는 모듈은 대부분 라이브러리 형태로 외부에서 불러 쓰고 있는데, 이런 파일들은 /assets/ 폴더의 하위에서 확인할 수 있다.

 

 
[그림 1-63] 다양한 형태의 루팅 프로그램 구조

 

 

 

5) Android-Trojan/LightDD

이 진단명은 성인 애플리케이션으로 위장하여 백그라운드에서 사용자 스마트폰 정보를 유출하는 악성코드를 말한다.

 

애플리케이션의 이름은 Hot Girls, Sexy Girls, Sexy Legs, Beauty Breasts 등 다양한 변종이 있다. 주로 중국에서 제작되어 비공식 마켓을 통해서 설치된다. [그림 1-64]와 같은 아이콘(또는 유사한)을 사용하는 애플리케이션을 설치할 때 각별한 주의가 필요하다.

          


[그림 1-64] LightDD 애플리케이션의 아이콘

 

 

 

6) Android-Dropper/Anserver

이 진단명은 정상 애플리케이션을 리패키징하여 다른 악성코드(Android-Trojan/Anserver)를 설치하는 형태의 악성코드를 말한다.

 


[그림 1-65] Anserver 애플리케이션의 구조

 

[그림 1-65]와 같이 /assets/ 폴더에 'anservera.db'의 이름으로 악성 애플리케이션을 설치한다. 이 애플리케이션이 설치되면 사용자의 스마트폰 정보를 유출하거나, 다른 악성코드의 다운로드 및 설치 등의 악성 행위를 수행한다.
 


[그림 1-66] anservera.db 애플리케이션의 설치 화면

 

매우 다양한 형태의 변종이 있으며, 사용자가 아이콘이나 애플리케이션의 이름으로 악성 여부를 식별하기는 어려우므로 각별한 주의가 필요하다.

 

 

7) Android-Trojan/Gdream

이 진단명은 게임, 만화(화보)를 리패키징하여 악성코드를 추가시킨 형태의 악성코드 종류이다. 일반적으로 GoldDream이라는 이름으로 잘 알려져 있다.

 

휴대전화 정보, 위치 정보, 문자/전화 송수신 정보 등을 유출하는 등의 악의적인 행위를 한다. 그리고 네트워크에 접속하여 새로운 명령(다른 악성코드 다운로드, 문자 발송)을 받아 실행한다. 주로 중국에서 제작되어 비공식 마켓을 통해서 설치된다.

 

Android-Trojan/Gdream 애플리케이션은 공통적으로 [그림 1-67]과 같이 zjReceiver 이름의 리시버를 등록한다.
 


 [그림 1-67] 다양한 이벤트를 받기 위한 리시버 등록

 

 

또한 애플리케이션 설치 시 [그림 1-68]과 같이 일반적인 게임, 만화(화보)에서는 볼 수 없는 과도한 권한을 요구한다.
 


[그림 1-68] Gdream 애플리케이션의 권한 요청 명세

     

 


[그림 1-69] Gdream 애플리케이션의 아이콘

 

 

 

8) Android-Spyware/BgService (Android-Spyware/Pjapps)

이 진단명은 정상 애플리케이션을 리패키징해서 악성코드를 삽입한 형태의 악성코드 종류를 말한다.

 

백도어 설치, 문자 모니터링, 유료 문자 전송, 웹 사이트 방문 기록 및 북마크 수집, 스마트폰 정보 수집 등의 악의적인 행위를 한다.

애플리케이션 설치 시 [그림 1-70]과 같이 원래 애플리케이션에서 제공되는 기능과 관련 없는 과도한 권한을 요구한다.
 
 

[그림 1-70] BgService 애플리케이션의 권한 요청 명세

      


[그림 1-71] BgService 애플리케이션의 아이콘

 

 

 

9) Android-Trojan/Boxer

이 진단명은 임의의 애플리케이션 설치 프로그램으로 위장하고 실제로는 유료 문자를 발송하는 악성 애플리케이션을 말한다. 러시아에서 제작되어 유포되었다.

 

애플리케이션 설치 시 [그림 1-72]와 같은 권한을 요청하며 문자를 발송하는 권한이 포함되어 있다.
 


[그림 1-72] Boxer 애플리케이션의 권한 요청 명세

 

실행하려는 애플리케이션의 기능과 실제로 요청하는 권한의 차이를 잘 고려해서 과도하거나 위험한 권한을 요청하는 애플리케이션은 되도록 설치하지 않는 것이 좋다.

 

    


[그림 1-73] Boxer 애플리케이션의 아이콘

 

 

 

10) Android-Spyware/Adrd

이 진단명은 정상적인 유틸리티를 리패키징하여 다양한 악의적인 기능을 수행하는 애플리케이션을 말한다. 주요 기능으로는 스마트폰 정보 유출, 북마크 유출, 문자/전화 정보 유출, 유료 문자 발송, 다른 악성코드 설치 등이 있다. 다양한 형태의 변종이 있기 때문에 사용자가 악성코드를 알아보기 쉽지 않다. 중국에서 제작되었으며 비공식 마켓을 이용하여 전파된다.

  


[그림 1-74] Adrd 애플리케이션의 실행 화면

 

애플리케이션 설치 시 [그림 1-75]와 같이 원래 애플리케이션이 필요한 것 이상으로 과도한 권한을 요청한다.
 


[그림 1-75] Adrd 애플리케이션의 권한 요청 명세

 


[그림 1-76] Adrd 애플리케이션의 아이콘

 

 

 

11) Android-Spyware/Kmin

이 진단명은 월 페이퍼 변경 애플리케이션으로 위장하여 백그라운드로 다양한 악성 기능을 수행하는 애플리케이션을 말한다. 애플리케이션 이름은 KMHome이며 주요 기능으로는 문자/전화 감시, 유료 문자 발송, 스마트폰 정보 유출, 주소록 유출 등이 있다.

애플리케이션 설치 시 [그림 1-77]과 같이 월 페이퍼 변경에 필요한 것 이상으로 과도한 권한을 요청한다.
 


[그림 1-77] Kmin 애플리케이션의 권한 요청 명세

 


[그림 1-78] Kmin 애플리케이션의 아이콘

 

 

 

3. 마무리

 

지금까지 안드로이드 악성코드의 증가 추세와 이유, 대표적인 안드로이드 샘플의 형태와 특징에 대해서 간단히 살펴보았다. 현재까지는 대부분의 악성코드가 중국과 러시아에서 제작/유포되었기 때문에 국내 피해 사례는 거의 없다. 그러나 안드로이드 스마트폰의 폭발적인 성장과 악성코드 제작자들의 선호도를 봤을 때 국내에서도 피해가 발생하지 않는다는 보장은 할 수 없다.

 

이러한 스마트폰 악성코드에 현명하게 대처하기 위해서는 스스로 보안 의식을 가지고 스마트폰을 사용하는 것이 가장 중요하다. 악성코드들이 대부분 그럴듯한 게임, 유틸리티로 위장하고 있기 때문에 설치 전 반드시 애플리케이션의 허용 권한, 출처, 제조 업체, 사용자 리뷰 등을 꼼꼼하게 확인해야 한다.@

안철수연구소 |

이 정보에 대한 저작권은 (주)안철수연구소에 있으며 무단 사용 및 도용을 금합니다.

단, 개인이 비상업적인 목적으로 일부 내용을 사용하는 것은 허용하고 있으나, 이 경우 반드시 출처가 안철수연구소 임을 밝혀야 합니다.

기업이 이 정보를 사용할 때에는 반드시 안철수연구소의 허가를 받아야 하며, 허가 없이 정보를 이용할 경우 저작권 침해로 간주되어 법적인 제재를 받을 수 있습니다.

자세한 내용은 컨텐츠 이용약관을 참고하시기 바랍니다.

정보 이용 문의 : contents@ahnlab.com

☆이 포스트가 유용하셨다면 구독하세요~!

Enter your email address:

Delivered by FeedBurner

☆이 포스트가 유용하셨다면 아래 추천 버튼을 눌러주세요~!

블로그 이미지

Mighty

댓글을 달아 주세요