상세 컨텐츠

본문 제목

Trojan.Android.InfoStealer 악성코드 분석 보고서

악성코드 분석 리포트

by 알약(Alyac) 2019. 3. 25. 08:30

본문


안녕하세요? 이스트시큐리티입니다.


구글 플레이스토어의 취약한 보안으로 인하여 플레이스토어를 통한 악성앱 유포가 빈번하게 발생하고 있습니다. 안드로이드를 사용하는 유저수가 많다는 것을 고려하면 매우 위험한 상황입니다. 이렇게 유포되는 악성앱의 목적은 정보 탈취, 스파이 행위, 금전 갈취 등으로 다양합니다. Trojan.Android.InfoStealer는 피해자의 스마트폰을 통한 암호화폐 탈취가 목적이며 탈취한 암호화폐를 금전으로 환전합니다. 


2017년부터 세계적으로 암호화폐 열풍이 불어 많은 사람들이 암호화폐 거래를 시작하는 계기가 되었습니다. 이와 함께 해커들은 암호화폐를 노리는 공격을 시도하거나 랜섬웨어를 유포 후 피해자의 파일을 암호화하고 암호 해제 대가로 암호화폐를 요구하고 있습니다. 해커들이 암호화페를 선호하는 이유는 추적이 어려우며 보관이 용이하고 환전이 손쉽기 때문입니다. Trojan.Android.InfoStealer는 모바일 환경에서 발견된 최초의 암호화폐 탈취 악성앱이며 구글 플레이스토어를 통해 유포 되어 그 위험성이 더 크다고 할 수 있습니다.


본 분석 보고서에서는 지난 2월에 구글 플레이스토어에서 발견된 악성앱 중 피해자의 암호화폐를 갈취하는 악성앱인 'Trojan.Android.InfoStealer' 살펴보도록 하겠습니다.



악성코드 상세 분석


이번 분석 보고서의 분석 대상인 Trojan.Android.InfoStealer는 피해자의 스마트폰에서 피해자가 거래하려는 암호화폐를 해커의 지갑으로 보내도록 유도하는 공격을 시도하며 적지 않은 암호화폐가 공격자의 지갑으로 전송 되었음을 발견하였습니다. 관련 내용을 살펴 보도록 하겠습니다.

먼저 Trojan.Android.InfoStealer의 공격 흐름을 살펴 본 후 해커의 암호화폐 지갑 조회 내역을 살펴 보며 탈취된 암호화폐를 보관하는 해커의 지갑을 살펴보겠습니다. 그리고 마지막으로 Trojan.Android.InfoStealer의 코드를 상세 분석하는 것으로 보고서를 마무리 하겠습니다.


1. 악성코드 추가

다음 그림은 Trojan.Android.InfoStealer의 공격 흐름을 보여 주고있습니다. 


[그림 1] 정상 앱에 추가된 악성 코드


해커는 악성앱을 암호화폐 지갑 프로그램인 MetaMask의 모바일 버전인 것처럼 위장하여 구글 플레이스토에 등록했습니다. MetaMask는 암호화폐 거래자들 사이에서는 인기있는 지갑 프로그램중의 하나로 구글 크롬브라우저의 확장앱으로 제공되고 있습니다. MetaMask를 사용하고 있었던 사용자들이 타겟이며 피해자들은 악성앱이 MetaMask의 모바일 버전인것으로 오인하여 설치를 하게 되는 것입니다. 악성앱 설치가 완료되면 클립보드를 감시 하게 되고 피해자가 암호화폐를 거래하기 위해 자신의 지갑주소를 클립보드에 복사하는 순간 해커의 지갑주소로 바뀌게 됩니다. 이를 인지하지 못한 피해자는 암호화폐 거래를 진행하게 되고 암호화폐는 해커의 지갑으로 전송됩니다.


2. 해커의 지갑

“이런 단순한 공격에 당할 사람이 있을까?”라고 의아해할 수도 있지만, 해커의 지갑을 조회해 보면 꽤나 많은 양의 암호화폐에 놀라지 않을 수 없습니다. 이를 알아보기 위해 해커의 비트코인 지갑을 조회해 보았습니다.

악성 앱에 하드코딩 되어 있는 해커의 비트코인 지갑 주소인 “17M66AG2uQ5YZLFEMKGpzbzh4F1EsFWkmA” 지갑부터 조회해 보도록 하겠습니다.  

다음 그림은 악성 앱에 하드 코딩 되어 있는 비트코인 지갑 주소를 조회한 요약본입니다.


[그림 2] 해커의 비트코인 지갑 요약 내용


다음 그림은 피해자의 지갑에서 해커의 지갑으로 전송되는 비트코인 거래내역입니다.


[그림 3] 피해자의 지갑에서 해커의 지갑으로 비트코인이 전송된 기록


해커의 비트코인 지갑 요약을 살펴보면 거래 수는 6건이고 총수신량은 대략 0.128 BTC(bitcoin) 이며 잔액은 0 BTC 입니다. 이 결과만 놓고 보면 탈취한 암호화폐가 그렇게 많지 않다고 생각 할 수도 있습니다. 그러나 전송받은 내역이 있음에도 잔액이 0이라는 것은 어딘가로 다시 재전송이 일어났다는 의미이며 아마도 해커의 다른 지갑일 확률이 클 것입니다. 암호화폐를 탈취하거나 부정한 방법으로 획득하는 해커들은 추적을 피하거나 어렵게 하기 위해 대량의 지갑을 생성하여 보유합니다.

다음 그림은 해커의 지갑에서 또 다른 지갑으로 전송하는 거래 내역입니. 위 그림의 피해자에게서 전송받은 비트코인을 옮기고 있다는 것을 알 수 있습니다.


 [그림 4] 해커의 비트코인 지갑에서 다른 지갑으로 전송하는 내역


해커의 2번째 비트코인 지갑인 “392LK4ZQD3gixWg5xJRTv1a24N3YDgCbwP” 지갑을 조회해 보겠습니다.


[그림 5] 해커의 2번째 비트코인 지갑의 요약 내용


2번째 비트코인 지갑의 요약을 살펴보면 놀랄 만큼 많은 양의 비트코인이 있음을 알 수 있습니다. 거래 수 11,621건, 총수신량은 16만 6천 비트코인이며 최종 잔액은 1천 비트코인 정도입니다. 수신량 기준으로 금액을 원화로 환산해 보면 7천138억 정도입니다. (2019년 3월 1BTC의 가격 430만원으로 계산) 그리고 최종 잔액을 살펴보면 이 지갑도 최종 지갑이 아닌 중계용 지갑임을 알 수 있습니다. 
위에서 보았듯이 해커가 탈취한 암호화폐 금액에 깜짝 놀랐을 것입니다. 해커는 이런 큰 금액의 추적을 어렵게 하기 위해 대량의 지갑을 보유하고 탈취한 암호화폐를 계속 분산시켜 나가다 적당한 시점에 환전하게 됩니다. 

3. 코드 상세 분석

탈취한 암호화폐는 상당하지만, 악성 앱은 상대적으로 간단하게 제작되어 있습니다. 해당 악성 앱의 주요 행위는 피해자의 클립보드를 감시하며 해커가 원하는 문자열이 클립보드에 존재할 경우 해커의 지갑 주소로 클립보드를 재설정하는 공격 행위가 전부이지만 피해자가 주의를 기울이지 않으면 암호화폐를 탈취당하게 됩니다. 상세 분석을 통해 악성 앱을 살펴보겠습니다.

 

3.1 Android Clipboard

어떻게 이런 공격이 가능한지 이해하기 위해서는 안드로이드의 클립보드 프레임워크에 대하여 알아볼 필요가 있습니다. 안드로이드의 클립보드는 다음 그림과 같이 시스템에서 관리하며 하나의 공간으로 통합 관리됩니다. 즉, 여러 개의 앱이 동일한 클립보드 공간을 공유해서 사용 하는 것입니다. 그리고 클립보드 내용은 마지막 하나만 저장되며 이전의 클립보드 내용은 삭제됩니다. 여러 앱이 클립보드에 내용을 복사할 경우 마지막으로 클립보드에 복사한 내용만 저장되는 것입니다.


[그림 6] Android의 클립보드 프레임워크


출처 : https://developer.android.com/guide/topics/text/copy-paste


해커는 이점을 노려 피해자가 클립보드에 지갑의 주소를 넣는 순간을 포착하여 클립보드 내용을 변경하는 것입니다


3.2. Clipboad 리스너 등록

다음의 코드는 시스템의 클립보드를 감시하는 코드를 등록하는 코드입니다. 


[그림 7] 클립보드 감시를 위한 리스너 등록 코드


리스너를 등록하게 되면 클립보드의 내용이 변경될 경우 시스템에서 이를 리스너들에게 알려주며 해커가 등록한 리스너 코드가 클립보드의 변화를 인지하게 됩니다.


3.3. Clipboad 내용 변조

다음의 코드는 클립보드의 내용을 확인 후 해커가 원하는 문자열이 있을 경우 해커의 지갑 주소로 클립보드 내용을 변경하는 코드입니다.

 

[그림 8] 클립보드의 내용을 변경하는 코드


3.4. 가짜 지갑 역할 수행

암호화폐의 지갑으로 위장한 악성 앱이기에 지갑 관련 기능이 있는 것처럼 화면을 제공합니다. 

다음 그림은 가짜 지갑 기능을 제공하는 화면들입니다.

 

[그림 9] 가짜 지갑 기능


메인 화면에서 어떤 기능을 선택하더라도 결과는 항상 잘못되었다는 반응을 보입니다. 주의할 점은 기존에 존재하는 지갑의 키와 비밀번호를 입력하게 되면 해커의 서버로 전송되게 된다는 점입니다.

다음 그림은 RESTORE VAULT의 코드 내용입니다.


[그림 10] RESTORE VAULT 화면의 코드


코드를 살펴보면 피해자의 기기 정보와 입력한 지갑 주소 비밀번호를 해커의 서버로 보내는 것을 알 수 있습니다. 그리고 결과는 무언가 잘못되었으니 재시도해 보라는 팝업을 노출시키고 마무리하도록 되어 있습니다.


결론


해당 악성 앱은 암호화폐를 자주 거래하시는 분들에겐 매우 위협적이라 할 수 있습니다. 공격 코드 자체는 매우 단순하지만 암호화폐의 특성상 한번 전송이 이루어 지고 나면 다시 찾기란 불가능에 가깝기 때문입니다. 악성 앱의 유포지도 정식 구글 스토어여서 피해자들은 의심 없이 설치했을 것입니다. 


범죄자들은 암호화폐의 편리함과 더불어 추적의 어려움 보관의 용이성과 쉬운 환전 때문에 암호화폐를 적극적으로 이용하는 추세입니다. 따라서 앞으로도 유사한 형태의 공격이 이어질 것으로 예측할 수 있습니다. 


이러한 악성 앱에 감염되지 않기 위해서는 예방이 중요합니다. 앱 설치 시 주의를 기울일 필요가 있으며 출처가 불명확한 URL과 파일은 실행하지 않아야 합니다. 또한, 주변 기기의 비밀번호를 자주 변경하고 백신 애플리케이션을 설치하여 항상 최신 업데이트 버전으로 유지해야 합니다.


[그림 11] 알약M 탐지 화면

 

현재 알약M에서는 해당 악성 앱 'Trojan.Android.InfoStealer' 탐지 명으로 진단하고 있습니다.

관련글 더보기

댓글 영역