예전에는..아니 지금도 마찬가지지만 주요 악성코드 전파를 위해 해커들이 주로 이용하는 매체는 홈페이지와 이메일이다. 하지만 이제 악성코드 유포지로 새롭게 등장한 매체가 있으니 바로 셀 수 없이 많이 사용되는 스마트폰의 앱(Application)이다.
스마트폰에 설치되는 앱은 주로 구글 안드로이드의 앱마켓인 플레이스토어와 애플 아이폰의 앱스토어다. 이 두 앱마켓에는 앱을 개발해 올리는 수 많은 개발자들이 상주한다. 개발자들은 기업에 소속되어 기업의 앱을 개발해 플레이스토어와 앱스토어에 업로드하기도 하지만 더 많은 개발자들은 집과 같은 개인이 관리하는 개발환경에서 앱을 개발해 플레이스토어에 업로드 한다.
기업에 소속되어 기업에서 제공하는 개발환경을 이용하든 개인적으로 구축한 개발환경에서 개발하든 중요한 것은 소스코드의 보호와 개발 및 컴파일 그리고 마켓에 업로드하는 용도의 PC에 대한 보호다. 소스코드가 유출되거나 개발환경 및 업로드 환경의 PC가 해킹되면 그 피해는 고스란히 앱을 다운로드하는 이용자에게 전가된다.
그 중에서도 가장 중요한 것은 누구나 알고 있듯 ID와 비밀번호 관리다.
최근 대구지역을 떠들썩하게 만들고 있는 대구지역 버스 정보 앱의 악성코드 감염도 따지고 보면 개발자가 구글 플레이스토어의 접속계정 (즉 구글계정) 비밀번호를 탈취당해 발생한 사건이다.
이 사건은 맥아피(McAfee)에서 해당 앱을 사용하는 이용자의 스마트폰에서 최초 발견하여 분석 후 공개한 것으로서 현재는 구글과 개발자에게 전파되어 악성코드가 감염된 앱은 더 이상 다운로드 되지 않도록 조치가 되어 있다.
(원문 출처 : https://securingtomorrow.mcafee.com )
구글 플레이스토어의 앱 소개
해커는 어떤 방법인지는 알 수 없지만 해커에게 구글 계정을 탈취 당했고 해커는 탈취한 구글계정으로 개발되어 플레이스토어에 업로드 되어 있는 대구버스라는 앱을 발견했다.
해커는 구글계정을 이용해 개발자가 소스코드를 저장하고 관리하던 “비트버킷”이라는 Git 서버에도 접속할 수 있음을 알아 낸 듯 하다.
소스코드와 플레이스토어 접속이 가능하면…. 게임은 끝난 것이다.
해커는 앱에 악성코드가 포함된 플러그인을 다운로드 받도록 최소한의 수정만을 가해 플레이스토어에 새버전의 앱을 업로드 했다. 앱에 직접적으로 악성코드를 심은 것이 아니기 때문에 구글의 보안검사도 아무일 없이 통과할 수 있던 것으로 보여진다.
일단 업로드 된 버스앱을 새로 다운로드(업데이트) 한 이용자의 스마트폰은 해커가 만들어 둔 여러 악성코드 배포서버에 접속해 악성코드를 다운로드 받고 해당 악성코드를 실행한다.
감염경로는 다음과 같다.
특이점은 다운로드 된 악성코드 플러그인 중에는 네이티브 코드가 담긴 .so (shared object) 파일이 있다는 점이다. 안드로이드의 앱은 일반적으로 java로 개발되어 배포되는데 이 악성코드는 C로 작성된 .so 파일도 포함하고 있다는 점이다.
안드로이드는 오픈소스 운영체제 리눅스계열의 운영체제다. (그냥 리눅스라해도 무방하다) 그리고 리눅스 위에 달빅(Dalvik)이나 ART와 같은 Java 가상머신이 설치되고 이 가상머신 위에서 플레이스토어에서 다운로드 받은 앱(Java 기반의 안드로이드 API로 작성되고 컴파일됨)들이 실행되는 구조다. 때문에 아래 그림처럼 배포되는 apk 파일내에 네이티브(native) 코드로 작성된 .so 파일이 설치되는 것은 일반적인 상황은 아니다. 간혹 빠른 그래픽 성능이 요구되는 게임이나 동영상플레이어 혹은 특정 하드웨어와 직접 인터페이스하지 않으면 안되는 상황에서만 C언어로 작성된 코드를 컴파일해서 함께 배포하게 된다. (.o 파일 혹은 .so 파일)
그런데 일반적인 안드로이드 API로 작성해도 충분한 버스정보앱이 .so 파일을 배포한다????? 이 사실 자체만으로도 의심스러운 상황이라 할 수 있다.
구글플레이스토어의 앱 검증프로세스가 허술함을 드러내는 대목이라 하지 않을 수 없다.
일단 악성코드에 감염된 스마트폰은 C&C서버(C2서버)로 접속을 시도하고 지령을 받는다. 폰을 파괴할 수도 있고 다른 공격대상을 스캔할 수도 있으며 폰에 저장된 주소록, 이미지, 파일 등을 검색해 중요 정보를 해커들에게 전송할 수도 있다.
McAfee에서는 이 악성코드를 분석하던 중 다음과 같은 특이한 단어들이 포함된 파일을 찾아 해커들에게 전송하는 현상을 발견했다고 한다. 이 검색어는 한글로 되어 있었고 아래 표에는 영어로 번역을 해 놓은 듯 하다.
만약 국방부, 외교부, 청와대 등 주요 행정기관 및 군인들이 이 악성코드에 감염됐다면 아마도 중요한 국가 기밀이 해커들의 손에 넘어갔을 수도 있다고 여겨진다.
다시 한번 부각된 ID / Password 관리의 중요성
이번 해킹사고의 시작도 역시 ID와 비밀번호 관리의 부실이었다.
어떻게 개발자의 구글계정 비밀번호를 해커가 탈취했는지는 알 수 없다. 가정이긴 하지만 만약 개발자가 구글계정의 비밀번호와 소스가 저장되어 있던 비트버킷(Git)의 접속 비밀번호를 다르게 사용했더라면 해커가 소스를 수정해 플레이스토어에 악성코드를 다운로드 받는 앱을 업로드하지 못했을 수도 있다.
ID까지 사이트마다 다르게 관리하는 것은 매우 어렵다. 하지만 비밀번호 만큼은 충분한 복잡도와 길이로 사이트마다 다르게 사용할 것을 권한다.
직전에 재직했던 SGA솔루션즈에서 서버보안SW에 2차인증을 구현하게 해주는 AuthCastle 이라는 제품의 주요 기능 기획과 구현에 참여했던 적이 있었다. 그 당시 2차 인증, 2채널 인증 등에 대한 개념을 공부할 수 있었고 실제 고객사에 적용도 수 차례 해볼 수 있었다. (관련 포스트 : https://blogger.pe.kr/487 )
만약 구글을 사용한다면 반드시 2차 인증을 사용하길 권장한다. 구글 계정이 해커에게 노출된다면 구글의 클라우드, 포토, 지메일은 물론 스마트폰까지도 연속적으로 해킹될 수 있기 때문이다.
비밀번호 관리의 중요성은 아무리 강조해도 부족하다.