본문 바로가기
AhnLab 보안in

안랩에서 알려주는 앱과 악성코드 선별 방법

by 보안세상 2020. 4. 15.

2012.04.03

 

안녕하세요. 안랩인입니다. 최근 안드로이드 운영체제가 탑재된 최신형 스마트폰을 구입한 K씨. 그는 스마트폰을 받자마자 평소 취미로 즐기는 기타연주 관련 앱을 검색했습니다. 구글 안드로이드 마켓에서 ‘Guitar’를 키워드로 검색해 무료 앱을 바로 다운로드했습니다. K씨는 실제 기타 못지않은 소리에 감탄하며 온종일 스마트폰을 붙잡고 있었습니다. 그런데 갑자기 K씨의 스마트폰이 루팅(rooting)되고, 스마트폰 기기 정보와 개인정보가 외부로 유출되었습니다. 그의 스마트폰이 악성코드에 감염된 것입니다. K씨는 구글 안드로이드 마켓에서 앱을 선택했고, 설치된 앱 또한 정상적으로 동작하는데, 대체 왜 K씨의 스마트폰은 악성코드에 감염된 것일까요?
원인은 K씨가 다운로드한 앱에 있습니다. 악성코드 제작자들은 변별하기 힘들 만큼 감쪽같이 위장한 악성 앱을 마켓에 등록해 사용자들을 유혹합니다.
이 글에서는 스마트폰을 안전하고 편리하게 사용하기 위해, 점차 교묘해지는 악성 앱에 속지 않는 방법을 소개합니다.

안드로이드 악성코드는 어떻게 만들어지는가?

악성코드 제작자는 리패키징(repackaging) 기법을 이용하여 인기 있는 앱에 악성코드를 삽입하고 앱의 이름을 변경한 후 다시 안드로이드 마켓에 등록합니다.

[그림 1] 정상/악성 앱


[그림 1]의 오른쪽 그림이 악성 앱이다. 겉모습만 봐서는 왼쪽의 정상 앱과 구분하기 쉽지 않습니다. 저작권(Copyright)과 버튼이 있다는 점만 다를 뿐입니다. 또한, 악성 앱을 실행하더라도 정상 앱과 다름없이 앱의 기능이 잘 실행되기 때문에 유심히 살펴보지 않는다면 이 둘을 구분할 수 없습니다.

이와 같이 리패키징 기법을 이용한 안드로이드 악성코드는 2011년 처음 발견된 이후 계속 증가하고 있으며, 구글 안드로이드 마켓, 서드파티 마켓, 블랙 마켓, P2P 등의 다양한 경로를 통해 배포되고 있습니다.

1) 리패키징이란?

대부분의 프로그래밍 언어들은 컴파일(compile) 과정을 거쳐 사람이 알 수 있는 소스 코드(source code)에서 기계가 인식할 수 있는 바이너리(binary) 파일로 변경됩니다. 안드로이드에서는 여기에 프로그램을 묶어주는 패키징(packaging)과 코드 사인(code sign) 작업이 추가된다. 그림으로 살펴보면 [그림 2]와 같습니다.

[그림 2] 안드로이드 앱 제작 과정

리패키징이란 앱의 제작 과정을 거꾸로 하여 앱의 최초 형태인 소스 코드로 변환한 후 소스 코드를 수정하거나 다른 코드를 삽입하고 앱을 다시 제작하는 일련의 과정을 말합니다.

[그림 3] 안드로이드 앱 리패키징 과정


[그림 3]과 같이 APK 파일의 압축을 해제하여 나온 바이너리 형태의 파일을 디컴파일(decompile)하면 소스 코드로 변환됩니다. 결과물로 나온 소스 코드를 해커나 개발자가 수정하여 다시 컴파일과 패키징 작업을 거치면 APK 파일이 생성됩니다. 마지막으로 개발자 인증서로 코드 사인 과정만 거치면 실행 가능한 앱이 완성되는데, 개발자 인증서는 압축 파일 형식으로 되어 있는 APK 파일을 압축 해제하는 언패킹(unpacking) 과정에서 추출할 수 없으므로 새로운 인증서로 코드 사인을 해야만 합니다. <Ahn>

* 더 자세한 내용은 안랩홈페이지를 참고하세요.