포스팅 내용

악성코드 분석 리포트

[악성코드 분석리포트] Trojan.Android.Downloader.KRBanker

Trojan.Android.Downloader.KRBanker 


최근 알약 안드로이드와 같은 백신앱들의 치료행위를 무력화시키는 기능을 하는 악성 앱들의 유포가 많아 지고 있습니다. 해당 악성앱들은 스미싱으로 유포되고 있으며, 주로 뱅킹앱 재설치 후 사용자의 금융정보를 탈취하는 기능을 수행합니다


이런 악성행위는 기존의 Trojan.Android.Downloader.KRBanker 악성앱들이 수행하고 있는 행위들이라 특이할 것은 없지만, 기존의 악성행위와 더불어 백신들의 치료 행위에 대한 방어 기능이 추가로 포함되어 있습니다. 


이번에 분석한 악성앱은 기존의 악성행위와 더불어 백신들의 치료 행위에 대한 방어 기능이 추가로 포함되어 있습니다. 이런 방어코드는 악성앱의 생존율을 높이기 위한 수단으로 보입니다. 이에 악성앱의 치료방해 기법을 분석 해보고 이에 대한 대응 방법을 알아보도록 하겠습니다. 


악성코드 분석


※ 치료방해 개요


스미싱 문자에 포함된 링크를 통해 내려받은 악성앱은 아래 그림과 같이 설치 됩니다. 다운로드 된 악성앱은 설치 과정에서 구글의 크롬 브라우저로 위장하여 사용자를 속이고, 설치 과정에서 기기관리자 권한을 획득하여 삭제를 어렵게 합니다.




가장 우측에 있는 그림은 실제 구동중인 악성앱의 권한정보이며, 이 악성앱 프로세스를 강제로 중지시켜도 다시 재구동 되도록 되어 있어 감염 휴대폰에서의 생존성을 높입니다. 그리고 악성앱은 사용자 화면을 실시간으로 감시 하며, 사용자 화면에 알약 메인화면이 노출 되면 강제로 홈 화면으로 이동 하도록 합니다. 


사용자가 수동으로 앱을 제거하기 위해서는 악성앱의 기기관리자 권한을 해제 하여야 합니다. 하지만 악성앱의 화면 감시 코드에서 기기관리자 화면 역시 감시 하고 있어 기기관리자 권한 설정 화면이 노출되는 즉시 홈 화면으로 이동 시킵니다


※ 코드분석


최초 발견된 치료방해 기능을 가진 악성앱은 APK Protect라는 프로텍터를 이용하여 디컴파일 방해 기법이 적용 되어 있었습니다. 


APK Protect란 APK 파일 속 Dex 파일에 문자 암호화 / 코드 난독화 / 디컴파일 방지 기능등을 추가하여 APK 파일 분석을 방해하는 패킹 프로그램으로, 해당 프로텍터를 제거하지 않은 상태로 디컴파일을 진행 하게 되면 코드를 제대로 파악 할 수 없는 상태로 디컴파일 되거나 디컴파일 자체가 되지 않을 수도 있습니다.


그림 1은 apk의 디렉토리 구조를 보여줍니다. 그림 1을 살펴 보면 asset라는 디렉토리에 p.dex 파일이 존재하는 것을 볼 수 있는데, 이는 실제 코드가 담겨있는 dex 파일로 엔트리 코드를 살펴 보면 p.dex를 로드 하여 실행 하는 코드를 확인할 수 있습니다. 




[그림 1] 숨겨진 dex


APK를 분석하기 위해 디컴파일을 실시 하면 APK Protect로 인하여 그림2와 같이 일부 클래스가 보이지 않으며, 만약 최신버전의 디컴파일러를 사용할 경우 디컴파일 자체가 되지 않습니다. 그림 2의 결과는 구 버전의 디컴파일러를 이용하여 얻은 결과 입니다. 구 버전의 디컴파일러를 사용하여도 일부 디컴파일 되지 않는 클래스가 생기기도 합니다. 



[그림 2] 디컴파일 방해


위 그림 2의 오른쪽은 APK Protect를 제거한 후 디컴파일한 결과로 차이는 Utils라는 클래스의 복구 여부라는 것을 알 수 있습니다.

그림 3은 악성앱의 매니페스트 파일 내용의 일부이며 살펴 보면 엔트리 포인트 클래스는 MyActivity라는 클래스 임을 알 수 있습니다. 



[그림 3] 엔트리 포인트 클래스


그림 4는 엔트리 포인트 코드를 보여주며 악성앱을 기기관리자로 등록 하는 서비스를 구동하는 코드로 구성 되어 있습니다. 



[그림 4] 엔트리 포인트


다음의 그림 5는 서비스의 시작 코드로 악성 행위는 없으나 p.dex를 로드 하는 코드를 볼 수 있습니다.



[그림 5] 서비스 시작 코드


p.dex하위에는 Plugin이라는 클래스가 존재하며 악성앱의 모든 행위는 이 클래스에 구현되어 있다. 다음의 그림 6은 p.dex의 디컴파일 코드를 보여주고 있습니다.



[그림 6] P.dex의 진입 코드


백신의 치료방해 기능은 그림 7과 같은 코드로 구성 되어 있습니다. 이 코드는 백신의 메인화면이 현재 사용자 휴대폰 메인화면에서 실행 중인지 여부를 살피며, 만약 백신이 실행중 이라면, 악성앱은 자신을 기기관리자에 등록 시키고 자신의 제거를 방해하기 위해 홈 화면으로 사용자를 이동시킵니다. 


[그림 7] 알약 안드로이드 제거 의심 코드


그림 7과 같이 이 악성앱은 알약 안드로이드의 탐지 후 제거 기능 실행시에만 동작하는 코드를 보여 주고 있습니다.


※ 변종의 치료 실행 방해 코드 변화


위에서 분석한 악성앱의 치료 실행 방해 코드는 비교적 간단한 편입니다. 초기버전 이후 악성앱 제작자들도 조금씩 치료 실행 방해 코드를 개선 시키고 있습니다. 다음 그림 8의 코드를 살펴보면 초기 코드와 달리 난독화가 적용 되어 있으며, 한가지 이상의 백신을 감지하고 처리 한다는 것을 알 수 있습니다.




[그림 8] 개선된 치료 실행 방해 코드


비슷한 기법을 사용하지만 코드의 구성이 다른 악성앱도 있습니다. 아래 그림 9의 악성앱은 스케줄러를 이용해 0.1초에 한번씩 휴대폰이 화면 잠금 상태인지 체크합니다.



[그림 9] 스크린락 체크 코드


만약 잠금상태가 아니라면 현재 실행중인 앱 이름을 가져와 그림 10과 같이 문자열 비교를 하며, 백신앱이 실행중 이라면 홈 버튼을 누르는 행위를 하거나 백신앱을 삭제하는 행위를 합니다.


[그림 10] 최상위 액티비티명 비교



[그림 11] 백신 삭제 기능



결론


기존의 악성앱들은 생존율을 높이기 위하여 자동화된 분석 시스템 탐지회피 혹은 디버깅 회피, 패커를 사용하여 분석을 어렵게 만드는 등의 여러 방법들을 사용하고 있었습니다. 하지만 이번에 분석한 악성앱은 백신에 대하여 매우 능동적으로 대처하고 있었으며, 이런 백신공격코드를 사용하는 악성앱들의 빈도가 점차 확대되고 있는 추세입니다. 이러한 추세에 따라 공격 코드는 점점 더 진화될 것입니다. 따라서 이런 악성앱에 대한 대응능력을 향상시키기 위해서는, 모바일 백신의 탐지능력 뿐만 아니라 자가보호 기능에 대한 연구도 활발히 이루어져야 할 것입니다. 


※ 대응방안


해당 악성앱은 백신의 치료 기능을 무력화 시킬 뿐만 아니라 사용자가 수동으로 삭제하는 것까지 어렵게 만들어 자신의 생존성을 높이고 있습니다. 이에 사용자들의 각별한 주의가 필요합니다.


알약 안드로이드에서는 이런 방식의 치료 방해 기능을 가진 악성앱들에 대응 하기 위한 추가적인 기능이 적용 되어 있으며 이 기능을 이용하여 악성앱 제거가 가능 합니다. 알약 안드로이드에서 적용한 악성앱 대응 기능은 아래와 같은 프로세스로 치료 절차가 진행 됩니다. 


알약 안드로이드에서는 아래와 같은 방식으로 백신 무력화 악성앱에 대응합니다.

[그림 12] 치료 방해 대응 기능


위 그림 12와 같이 치료실행방해 악성앱의 행위가 감지 되면 메인 UI와는 별개의 검사창을 구동 하여 검사를 진행 하며 다음 그림 13과 같이 치료를 진행하는 동시에 치료 방해 기능을 가진 악성앱 제거를 도와준다. 이를 위해 알약 안드로이드의 DB는 언제나 최신으로 유지해야 합니다.

[그림 13] 악성앱 탐지 및 치료 진행 화면



※ 관련 내용은 알약 보안동향보고서 8월호에서도 확인하실 수 있습니다. 

티스토리 방명록 작성
name password homepage