상세 컨텐츠

본문 제목

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

악성코드 분석 리포트

by 알약(Alyac) 2019. 4. 29. 15:50

본문


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


작년에 크롬, 페이스북 등의 인기 앱으로 위장하여 유포되었던 xLoader가 올해 새로운 버전으로 다시 유포되고 있습니다. 이전 버전과의 차이점은 이전 버전은 유포를 위해 DNS Spoofing을 이용하고 크롬 등의 인기 앱으로 위장하였다면 이번 버전에서는 스미싱을 통한 방법으로 유포 방법이 변경되었으며 보안 앱과 성인 앱 등으로 위장했다는 점입니다. 그리고 한국 안드로이드 사용자를 대상으로 하는 버전도 별도로 준비하여 유포하고 있습니다.


[그림 1] 유포 개요도


본 분석 보고서에서는 한국 안드로이드 사용자를 대상으로 하는 “Trojan.Android.Agent”를 상세 분석하고자 합니다.


악성코드 상세 분석


Trojan.Android.Agent가 설치되면 피해자의 정보를 수집하여 C2로 보낸 후 공격자의 제어 명령에 따라 동작하게 됩니다. C2의 주소는 공격자의 트위터를 통해 구하며 현재는 공격자의 트위터 계정이 정지된 상태입니다. 상세 분석을 통하여 Trojan.Android.Agent를 살펴보도록 하겠습니다.


1. 설치

[그림 2] 악성앱 설치, 아이콘, 실행 화면


악성 앱의 설치는 공격자의 문자 메시지로부터 시작됩니다. 공격자는 피해자에게 흥미를 유발할 수 있는 문자를 보내어 피해자를 유인하는데 한국 안드로이드 사용자를 타겟으로 하는 공격에서는 음란 사이트로 위장한 유포 사이트 링크를 전송하였습니다. 이를 클릭한 피해자는 음란 사이트를 방문한 것으로 착각하게 되며 공격자의 사이트에서 악성 앱의 설치를 요구하게 되면 순순히(?) 악성 앱을 설치하게 됩니다. 그림2를 살펴보면 악성 앱은 음란물을 서비스하는 앱으로 위장한 것을 알 수 있습니다.


악성 앱 설치 후 실행하게 되면 블랭크 액티비티가 활성화되며 백 버튼이나 홈화면 키는 악성 앱이 무시하게 되어 동작 하지 않는 것처럼 보이지만 백그라운드에서는 열심히 피해자의 정보를 탈취하는 행위를 수행하고 있게 됩니다. 블랭크 액티비티가 생성되는 이유는 공격자의 트위터 계정이 정지되어 URL을 받아 올 수 없기 때문입니다.


2. 코드 복구

Trojan.Android.Agent를 분석하기 위해 살펴보면 다음 그림과 같이 클래스 구조가 무척 간단하게 되어 있다는 것을 발견하게 됩니다.


[그림 3] 코드 복구 전 


그러나 실제 공격 코드는 숨겨져 있으며 다음 그림과 같이 asset 폴더에 존재하는 파일이 실제 공격 코드를 담고 있는 덱스 파일입니다. 


[그림 4] 숨겨진 덱스 파일


악성앱 실행 시 이 코드가 복구되며 동적으로 클래스를 로딩하여 사용하기에 매니페스트에도 이 추가 코드의 존재가 기술되어 있지 않습니다.


[그림 5] 덱스 복구 코드


복구는 간단하게 수행됩니다. asset/bin 파일은 GZip으로 압축되어 있어 이를 해제 후 Base64로 디코딩 과정을 거치면 덱스 파일로 복구됩니다.


[그림 6] 복구된 덱스의 클래스 일부


악성 앱은 복구된 코드를 동적으로 로딩하여 공격을 수행합니다. 

3. 초기화 코드

동적으로 로딩된 클래스는 다른 스파이웨어와 같이 많은 부분을 감시하는 코드로 이루어져 있습니다. 그러나 코드를 숨기기 위해 이런 부분들이 매니페스트에서 빠져 있으며 동적으로 로딩되어 클래스 초기화 시에 동적으로 등록하여 사용하게 됩니다. 다음은 동적으로 리시버를 등록하는 코드의 일부입니다.


[그림 7] 감시대상 리시버 등록 코드

 

리시버 등록 코드를 보면 SMS부터 스크린까지 많은 부분을 감시한다는 것을 알 수 있습니다. 


다음은 주요 초기화 코드의 일부입니다.


[그림 8] 초기화 작업 코드


위 그림을 살펴보면 다양한 초기화 작업을 진행하는 것을 알 수 있으며 주요 내용은 통화 녹취를 위한 리스너 등록, 명령어 셋 초기화, 피해자 계정 정보 수집 및 공격자 메일로 전송 그리고 피해자가 마주하게 될 메인 액티비티 초기화 코드입니다. 다음 그림은 피해자 계정 정보를 수집하는 코드로 특이점은 게임 계정도 수집한다는 점입니다.


[그림 9] 계정 정보 수집 코드의 일부


4. 명령어 셋

2에서 살펴본 초기화 코드에서는 공격자의 명령어 셋을 초기화하는 함수를 호출하는 코드가 존재합니다.  다음 그림은 공격 명령어 셋입니다. 다양한 정보를 탈취하기 위한 명령어들이 있습니다.


[그림 10] 명령어 셋


위 명령어 셋 중에서 주요 명령어 몇 가지만 살펴보도록 하겠습니다.


- sendSms : SMS 전송


[그림 11] SMS 전송 코드


- gcont : 연락처 탈취


[그림 12] 연락처 수집 코드


- lock : 화면 잠금


[그림 13] 화면 잠금 코드


- bc : 연락처에 존재하는 연락처로 SMS 전송


[그림 14] 연락처에 존재하는 사람들에게 메시지 전송


- getnpki : 인증서 탈취


[그림 15] 인증서 탈취 코드


5. 특징적인 코드

Trojan.Android.Agent 악성 앱이 가지고 있는 특징을 살펴보겠습니다. 


다음 그림은 트위터를 통해 C2 서버의 주소를 획득하는 코드의 일부입니다. 공격자는 C2 주소가 필요할 때 트위터에 접속하여 C2 서버의 주소를 획득하도록 제작하였습니다. 이렇게 주소를 온라인에서 획득할 경우 C2의 주소가 변경되어도 악성 앱에 C2 주소의 업데이트 적용이 수월하게 됩니다.


[그림 16] 트위터를 통한 C2 서버 주소 획득 코드


다음 그림은 한국어 안내 메시지로 하드 코딩되어 있습니다. 악성 앱은 다국어 지원을 위해 다양한 로케일을 지원하도록 제작되어 있는데 하드코딩 되어 있는 언어가 무려 26개에 이릅니다. 


[그림 17] 한국어 안내 메시지

결론


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


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


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


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

 

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

관련글 더보기

댓글 영역