고도화된 악성 앱, ‘경계’를 허물다
최근 보이스피싱과 가짜 금융감독원 앱을 결합한 대출 사기 사건이 언론 보도를 통해 알려졌다. 해외에서는 아이콘을 숨긴 채 스마트폰에 설치되어 사용자의 금융 앱과 우버 등 예약 관련 앱 사용 정보, 통화 내역, 문자 정보 등을 탈취하고 통화 내용까지 녹음하는 악성 앱이 확인되었다. 이전에는 스미싱 등 문자 메시지를 이용해 악성 앱 설치를 유도했다면, 최근에는 웹 사이트나 피싱 사이트를 이용해, 또는 앞서 언급한 것 처럼 보이스피싱과 연계하여 설치를 유도하는 방식까지 등장했다. 또 아이콘이나 바로가기를 숨겨 사용자가 앱의 설치 여부를 알 수 없도록 하는 등 공격 기법이 더욱 고도화되고 있다. 이와 관련해 악성 앱이 설치되었을 때 나타나는 증상, 그리고 이러한 앱을 확인하는 방법에 대해 알아본다.
사례 1) 전셋값 등으로 추가 대출을 고민하던 A씨. 어떻게 알았는지 유명 캐피털 회사에서 대출 안내 전화를 걸어왔다. 상담원은 A씨의 신용조회를 위해 스마트폰에 앱을 설치하라고 안내했다. 앱을 설치하고 나니 상담원의 안내대로 전화가 걸려왔는데, 발신자 정보에 유명 은행의 이름과 함께 대표번호가 표시됐다. A씨가 얼른 전화를 받아보니 선이자를 납부하면 대출이 가능하단다. 통화를 마친 A씨는 뭔가 미심쩍은 기분이 들어 112에 전화를 걸어 경찰에 문의를 해보았다. 전화기 너머 경찰이 전혀 문제없는 내용과 번호라고 말해주는 것까지 듣고 나서야 A씨는 안내 받은 내용대로 선이자에 해당하는 금액을 송금했다. 그런데 며칠 후 A씨는 캐피털 회사가 아닌 경찰의 연락을 받았다. 알고 보니 A씨가 설치했던 앱이 악성 앱으로, 이후 전화 통화한 은행도, 112 경찰도 모두 이 악성 앱이 보이스피싱 조직에 연결되도록 조작했던 것이란다.
사례 2) 출퇴근 길에 모바일 게임을 즐겨하는 30대 직장인 B씨는 최근 서비스를 개시한 게임 앱을 다운받을까 말까 고민 중이었다. 혹시나 싶어 자주 가는 커뮤니티 사이트를 살펴봤더니 그 게임의 앱 파일을 공유하는 게시물이 눈에 들어왔다. 구글 플레이에서는 유료로 제공되는 앱인데 인터넷을 통한 다운로드 시에는 무료로 사용이 가능하다는 것이 아닌가. B씨는 망설임 없이 파일을 다운받아 스마트폰에 설치했고, 바로 실행해 한참 동안 게임에 몰입했다. 그런데 며칠 후 온갖 광고 배너가 나타나기 시작했다. 광고를 표시하지 않으려면 지문이나 PIN 번호로 로그인하면 된다기에 PIN 번호를 입력했더니 또 다른 앱을 추가로 설치하란다. 그제야 ‘혹시…?’하는 의구심이 들기 시작했다.
‘모바일 악성코드’로 불리기도 하는 악성 앱은 크게 두 가지 유형으로 구분할 수 있다. 우선, 정상적인 또는 유명 앱으로 가장해 악의적인 기능을 수행하는 유형으로, 이름이나 아이콘 이미지 등을 교묘하게 위장해 사용자를 속인다. 다음으로는 게임이나 유틸리티 등 사용자가 원하는 기능을 제공하기는 하지만 광고 등 사용자가 원치 않았던 기능을 실행해 불편을 야기하는 유형이 있다. 두 가지 유형 모두 앱을 이용해 사용자에게 크고 작은 피해를 입힌다는 점에서 ‘악성 앱’으로 분류할 수 있다.
이러한 악성 앱은 써드파티(Third-Party) 앱 스토어뿐만 아니라 정상적인 앱 스토어에서도 유포되고 있다. 최근 한 조사에 따르면, 구글 플레이 스토어와 써드파티 앱 스토어에 1,000 여 개 이상의 악성 앱이 존재하는 것으로 나타났다. 국내의 경우, 한동안 구글 플레이나 검찰청을 사칭한 앱이 자주 확인됐으나, 최근에는 주요 은행이나 유명 캐피털사를 사칭하는 악성 앱이 지속적으로 늘어나고 있다. 특히, 실제 은행의 앱의 아이콘이 변경되면 악성 앱도 이에 맞춰 아이콘을 변경하는 등 고도화된 모습을 보이고 있다.
악성 앱 설치 유도 방식의 고도화
사용자가 악성 앱을 설치하도록 유도하는 방식도 더욱 다양해졌다. 대표적으로, 앞서 살펴본 첫 번째 사례와 같이 대출 업체로 가장한 보이스피싱과 연계되어 악성 앱 설치를 유도하는 방식이 있다. 이렇게 설치된 앱은 [그림 1]과 같이 유명 은행의 대출 서비스와 관련된 화면을 보여준다. 이 화면에 표시되어 있는 은행의 고객 센터 번호와 금융감독원 민원 상담전화는 실제 전화번호이다. 그러나 해당 부분을 클릭하여 전화를 걸면 공격자가 조작해둔 번호로 연결된다. 심지어 사용자가 직접 그 전화번호를 입력하여 전화를 걸더라도 강제 착신 전환 방식에 의해 공격자가 조작해둔 번호로 연결되는데, 이때 화면에는 사용자가 입력한 전화번호가 나타나기 때문에 의심하기 어렵다.
지난 5월에는 PC를 통해 인터넷을 이용하는 사용자를 노려 ‘유해사이트 차단 안내 페이지’로 위장한 웹 페이지와 QR코드를 이용해 악성 앱 설치를 유도하는 사례도 확인됐다. [그림 2]와 같이 실제와 유사한 웹 페이지를 보여주고 ‘트래픽 차단 프로그램을 설치하라’는 협박성 메시지로 사용자의 휴대전화 번호를 입력하도록 유도한다. 또 ‘모바일 전용 백신 앱’을 안내하는 것처럼 위장한 허위 메시지와 함께 QR코드를 노출해 스마트폰에 악성 앱을 설치하도록 유도한다. 이렇게 설치된 악성 앱은 사용자 몰래 스마트폰에 주요 은행과 대부 업체의 전화번호 목록을 다운로드 하는데, 사용자가 그 목록에 포함된 은행이나 업체에 전화를 걸면 강제 착신전환되어 엉뚱한 곳으로 연결된다.
악성 앱 주요 증상
다음은 주요 악성 앱이 수행하는 행위로, 이와 같은 증상이 나타난다면 악성 앱이 설치된 것이 아닌지 의심해볼 필요가 있다.
1. 소액결제를 악용한 불법 과금
지난 2013년 이후 휴대전화 소액결제의 허점을 이용한 모바일 악성코드와 이로 인한 피해가 꾸준히 발생하고 있다. 대부분의 휴대전화 사용자들이 자동이체로 통신료를 납부하기 때문에 수개월이 지나도록 피해 사실을 인지하기 어렵다. 휴대전화 기기 교체 시 일정 기간 동안 다양한 부가 서비스를 이용해야 하는 경우도 많아 소액결제 내역에 주의를 기울이지 않는 사용자들도 많다.
소액결제를 악용한 악성 앱은 주로 문자 메시지를 이용한 피싱(스미싱)이나 공유기 변조, 취약한 웹사이트를 통해유포된다. 주로 구글 크롬이나 택배 등의 아이콘으로 가장해 설치되며, 삭제되기 전까지 지속적으로 피해를 야기한다. 사용자가 관심을 갖고 통신료 청구서의 요금 변화 추이를 면밀하게 살피면 피해 사실을 인지하고 피해를 막을 수 있다. 특히 온라인 청구서를 이용하고 있을 경우, 사용자의 각별한 주의가 필요하다.
2. 문자메시지(SMS) 수신 및 발신 이상 현상
악성 앱은 공격자의 명령을 받거나 인증정보 등을 가로채기 위해 문자메시지(SMS)를 이용하는 경우가 많다. 문자 메시지에 전달된 인증정보를 가로채 공격자에게 전송하거나 특정 정보를 탈취하기도 한다. 사용자가 문자를 전송 했으나 발신함에 저장되지 않거나 상대방이 받지 못하는 경우 악성 앱 설치를 의심해볼 필요가 있다. 특히, 특정인이 보낸 문자를 지속적으로 받지 못하고 있다면 악성 앱 설치를 확인해봐야 한다. 이 밖에도 포털 사이트의 인증과 관련된 문자가 수신되는 경우에도 악성 앱을 의심해볼 수 있다.
3. 최초 실행 시 광고 노출 또는 임의로 다운로드한 앱의 설치 유도
스마트폰의 잠금 화면을 해제할 때 광고성 ‘알림 바(bar)’가 나타나거나 화면 전체에 광고가 나타나기도 하는데 어떤 앱 때문인지 알 수 없어 답답한 경우가 있다. 이 경우 악성 앱이 설치되었을 가능성이 높다. 앱을 실행하지 않았는데도 광고가 나타나거나 구글 플레이의 앱 설치로 연결되는 경우 악성 앱 설치를 의심해야 한다. 이런 유형의 앱 중에는 설치 후 일정 시점이 지난 후에 동작하는 경우도 있다. 또 패키지매니저를 통해 사용자 모르게 다운로드된 앱의 설치 요청을 할 경우 악성 앱이 설치되어 있는 것이 아닌지 의심해볼 필요가 있다.
4. 비정상적인 데이터 사용량 증가
사용자 동의 없이 설치되는 앱들은 내부의 정보를 외부로 보내거나 외부에서 다른 파일을 다운로드 받는다. 대부분의 악성 앱은 와이파이가 연결되지 않아도 악의적인 기능을 수행하기 때문에 정상 앱에 비해 데이터 소모량이 상대적으로 많을 수 밖에 없다. 특별한 이유 없이 평소에 비해 데이터 사용량이 급증했다면 악성 앱 설치를 의심할 수 있다.
5. 잦은 프로그램 충돌 발생 또는 앱 실행 불가
평소 잘 사용하던 앱이 정상적으로 실행되지 않거나 스마트폰의 잠금 화면을 해제할 때 ‘앱이 비정상 종료되었다’는 알림이 나타날 경우 악성 앱 설치를 의심해볼 수 있다. 일반적으로 악성 앱 제작자들은 다양한 환경에서 테스트를 해보지 않기 때문에 특정 스마트폰 기기에서 정상적으로 동작하지 않는 경우가 있다. 또 상당수의 악성 앱은 사용자가 스마트폰의 잠금 화면을 해제할 때 동작하기 때문에 해당 악성 앱에 문제가 있을 경우 화면 잠금 해제 시 비정상적인 앱 종료가 발생하기도 한다.
악성 앱을 확인하는 법
위와 같은 증상이 나타났을 때 보안 전문가가 아니더라도 의심스러운 앱을 확인할 수 있는 방법이 있다.
1. 각 앱의 데이터 소모량 확인하기
광고 노출과 같이 사용자에게 불편함을 초래하는 악성 앱은 광고 데이터 수신이나 앱 다운로드를 위해 많은 양의 데이터를 사용한다. 안드로이드 단말기의 경우, 환경설정 메뉴에서 단말기의 모바일 데이터 사용량과 함께 각 앱의 데이터 사용량을 확인할 수 있다. 많은 데이터를 사용하는 앱 중에서 알 수 없는 아이콘과 레이블이 보인다면 악성 앱으로 의심할만하다.
2. 배터리 사용량 확인하기
스마트폰의 정보를 외부로 유출하는 악성 앱은 스마트폰에서 발생하는 수많은 인텐트(intent)를 감시해야 한다. 환경설정 메뉴에서 앱의 배터리 사용량을 확인하여 평소 자주 사용하지 않는 앱임에도 불구하고 배터리 사용량이 높은 것으로 나타난다면 의심해볼 필요가 있다.
3. 기기관리자로 등록된 앱 확인하기
악성 앱은 사용자가 삭제할 경우를 대비해, 또는 보다 많은 스마트폰의 기능 이용 등의 이유로 스스로를 기기관리자에 등록하는 경우가 대부분이다. 따라서 스마트폰의 기기관리자로 등록된 앱 중에 평소 사용하지 않거나 알 수 없는 앱이 존재한다면 악성 앱으로 의심할 수 있다.
4. 써드파티 앱의 설치 여부 확인하기
대부분의 악성 앱은 공식 플레이 스토어가 아닌 다른 경로를 통해 설치된다. 이처럼 공식 플레이스토어가 아닌 다른 방법으로 설치된 앱을 써드파티 앱이라고 하는데, adb 명령을 통해 확인할 수 있다. ‘adb shell pm listpackages -3’ 명령을 실행했을 때 나타나는 패키지명 중에서 통신사와 단말기 제조사의 앱이 아닌 이름이 존재한다면 악성 앱으로 의심할 수 있다.
악성 앱, 설치부터 예방해야
위와 같은 방법을 통해 악성 앱의 설치 여부를 확인하고 해당 앱을 삭제하면 추가 피해는 막을 수 있다. 그러나 악성 앱의 제작 및 유포 방법이 나날이 고도화되면서 극명한 이상 증상이 나타나지 않는 한 악성 앱의 존재를 의심하기 어렵다. 특히 앞서 언급한 것처럼 정상 앱으로 가장해 설치되거나 써드파티 앱이라면 구분이 어렵고, 와이파이에 연결될 때만 동작한다면 데이터 소모량을 확인하더라도 악성 앱을 찾기 어렵다. 따라서 설치된 악성 앱을 찾아내는 것보다 설치되기 전에 예방하는 것이 훨씬 수월하고 바람직하다.
안랩은 악성 앱에 의한 피해를 방지하기 위해 V3 모바일 시큐리티(V3 Mobile Security)를 제공하고 있다. V3 모바일 시큐리티는 안드로이드 OS의 변조 여부를 확인하며, 사용자 동의 없이 개인정보에 접근해 정보를 유출하는 악성 앱을 탐지한다. 또 설치한 앱에 대한 ‘빠른검사’ 기능을 제공하며, 사용자에게 불편을 초래하는 ‘불필요한 앱(Potentially Unwanted Application, PUA)’ 및 파일 폴더에 대한 ‘정밀검사’ 기능을 제공한다. 이와 함께 ‘실시간 감시’ 기능을 통해 앱의 설치나 업데이트 시 앱의 안전성 여부를 검사해 앱 변조 등에 의한 피해를 예방한다.
이 밖의 안전한 스마트폰 이용을 위한 보안 수칙은 다음과 같다.
1. 신뢰할 수 없는 경로를 통해 배포되는 앱은 설치하지 않는다.
악성 앱은 결국 사용자가 직접 설치하는 경우가 대부분이다. 특히, 문자메시지나 채팅 앱 등을 통해 앱을 다운로드 하지 않도록 주의해야 한다.
2. 스마트폰 OS를 임의로 수정하지 않는다.
일부 사용자들은 스마트폰을 보다 자유롭게 활용하기 위해 ‘슈퍼유저 권한’을 획득하고 특정 도구를 설치한다. 슈퍼유저 권한은 사용자가 스마트폰의 제약을 벗어나는데 도움을 주지만, 악성 앱이 활개를 칠 수 있도록 도와주는 역할을 한다. 대게 su 명령 실행을 통해 슈퍼유저 권한을 획득하는데, 악성 앱이 시스템 내부에 su 명령어가 존재하는 것을 확인하고 해당 명령을 실행해 손쉽게 권한을 상승시킬 수 있다. 악성 앱이 슈퍼유저 권한을 획득하면 권한 기반으로 하는 대부분의 보안 기능이 무력화된다. 예를 들어, 슈퍼유저 권한을 획득한 악성 앱은 스마트폰의 잠금 비밀번호 영역과 같이 일반적인 앱이 접근할 수 없는 구역에 저장된 파일까지 접근 가능하며, 이로써 잠금 비밀번호를 임의로 변경하는 등의 조작이 가능해진다.
3. 앱 설치 및 업그레이드 시 요구하는 권한을 확인한다.
정상적인 앱은 설치 시 필요로 하는 권한과 그 권한에 대한 설명을 보여준다. 어떤 앱을 설치할 때 앱의 기능과 관련 없는, 예를 들어 SMS나 전화 연결 등의 과도한 권한을 요구한다면 악성 앱으로 의심할 수 있다. 일반적으로 앱이 업그레이드될 때는 기존과 동일한 권한을 사용한다. 과거 구글 플레이에 등록된 앱의 개발자 계정이 변경되어 앱을 업그레이드 하는 과정에 악성앱이 배포된 사례가 있다. 구글 플레이를 통해 설치된 앱은 기존과 동일한 권한을 사용하는 경우 사용자의 설정에 따라 자동으로 업데이트 되지만, 권한의 변경 사항이 있다면 관련 내용을 사용자에게 다시 확인 받는다. 정상적인 마켓에서 배포된 앱이 업그레이드 시 기존과 달리 과도한 권한을 요구한다면 해당 앱에 대한 사용자 평판이나 해당 제작사의 다른 앱에 대한 평판 및 설치 수 등을 확인해보는 것이 바람직하다.
4. 모바일 전용 백신 앱을 사용한다.
대부분의 모바일 백신, 또는 모바일 보안 소프트웨어는 다양한 기술을 통해 앱의 안전도를 확인한다. 또 다양한 국가의 마켓을 통해 앱을 수집하고 분석하며, 사용자의 불편 신고 등 다양한 정보를 수집해 이를 토대로 악성 앱이나 가짜 앱, 사용자의 불편을 초래하는 앱을 분류한다. 따라서 사용자가 직접 앱의 평판을 살펴보거나 악성 앱의 여부를 확인하는 것보다 쉽고 빠르게 악성 앱의 설치 여부를 알 수 있다.
- AhnLab분석팀 강동현 책임