상세 컨텐츠

본문 제목

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

악성코드 분석 리포트

by 알약(Alyac) 2017. 8. 30. 11:01

본문

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


지난 7월경 Google Play Store 에 바탕화면 이미지를 제공하는 앱으로 위장하여 화면 잠금 기능을 수행하는 악성앱이 업로드 되었고, 약 5,000회에서 10,000회 사이 가량의 다운로드가 이루어졌습니다. 


악성앱이 실행되면 다양한 바탕화면 이미지를 제공해주는 정상 앱을 보여줍니다. 하지만 기기 재부팅 시 화면 잠금 행위를 수행하는 리시버가 실행이 되고, 이용자에게 기기에 저장된 사진 및 연락처 등의 유출된 자료를 삭제하는 대가로 50달러 혹은 0.05 비트코인에 해당되는 금전을 지불하도록 유도하는 화면을 띄웁니다. 


이번 보고서에서는 'Trojan.Android.SLocker' 악성앱을 상세 분석하고자 합니다.


악성코드 상세 분석


본 악성 앱은 Google Play에서 등록되어 5,000회에서 10,000회 사이의 다운로드가 되어 사용자에게 설치된 앱으로 Wallpaper 앱임에도 불구하고 아래 [그림 1]과 같이 앱에 불필요한 관련 없는 많은 권한을 요구합니다. 


[그림 1] 악성 앱이 요구하는 권한


- 네트워크 사용 권한 (INTERNET)

- 외부 저장소 읽기 권한 (READ_EXTERNAL_STORAGE)

- 외부 저장소 쓰기 권한 (WRITE_EXTERNAL_STORAGE)

- 배경화면 제어 권한 (SET_WALLPAPER)

- 계정 목록의 엑세스 권한 (GET_ACCOUNTS)

- Wi-Fi 네트워크 상태 정보 엑세스 권한 (ACCESS_WIFI_STATE)

- Wi-Fi 네트워크 상태 변경 권한 (CHANGE_WIFI_STATE)

- GPS 관련 권한 (ACCESS_FINE_LOCATION)

- GPS 관련 권한 (ACCESS_COARSE_LOCATION)

- SMS 읽기 권한 (READ_SMS)

- 전원 관련 권한 (WAKE_LOCK)

- 앱 팝업 관련 권한 (SYSTEM_ALERT_WINDOW)

- 폰 상태 정보 읽기 권한 (READ_PHONE_STATE)

- 부팅 완료 시, 브로드캐스트를 받을 수 있게 하는 권한 (RECEIVE_BOOT_COMPLETED)

- 네트워크 상태 정보 엑세스 권한 (ACCESS_NETWORK_STATE)


분석 대상 악성 앱의 최초 엔트리포인트 코드는 SplashActivity이며, 이는 아래 [그림 2]처럼 메니페스트를 통하여 확인할 수 있습니다.

 

[그림 2] 메니페스트 (엔트리포인트 클래스 위치)


실제로 앱을 실행시켜보면, 아래 [그림 3]과 같이 일반적인 바탕화면 변경을 위한 Wallpaper 정보를 제공하는 앱으로 실행되는 것을 확인할 수 있습니다.

   

[그림 3] 실행 화면


하지만, 내부에서는 아래 [그림 4], [그림 5]와 같은 흐름으로 x.ld.Ld 클래스를 로드하게 되는데 이 클래스를 활용하여 다운 받은 dex를 DexClassLoader로 메모리상에 올리는 것을 확인할 수 있습니다. 


분석 하는 시점에서는 해당 dex를 다운로드 받는 행위를 하지 않아 2차 dex에 대한 분석은 불가능 하였습니다.

 

[그림 4] 2차 dex 실행을 위한 x.ld.Ld 클래스 Process 생성 흐름


[그림 5] 2차 Dex ClassLoader 코드


또한, 이 악성 앱은 기기가 부팅될 때 자동으로 리시버가 동작하도록 메니페스트에 설정한 것을 아래 [그림6]에서 확인할 수 있습니다.

 

[그림 6] 메니페스트 (부팅 완료 시, 자동 실행을 위한 리시버 설정)


AdActivity에서는 WebView를 이용하여 다음과 같이 Assets 폴더에 존재하는 index.html를 띄우도록 하는데 해당 소스코드는 아래 [그림 7]과 같습니다.


[그림 7] WebView를 이용한 Ransomware 페이지 화면 로딩 코드


file:///android_asset/index.html에 포함된 내용은 아래 [그림 8]과 같으며, PROCCEED를 누르면 다음과 같이 개인 데이터에 대한 항목이 나오도록 하며 PAY 버튼을 누르면 72시간 안에 비트코인을 지불하라는 메시지를 확인할 수 있습니다.

     

[그림 8] 비트코인을 지불하라는 메시지의 html 구성 화면


해당 앱은 WebView에서 JavaScript를 활용하여 악성행위를 수행하며, 사용자의 개인정보를 엑세스하여 금전적인 요구를 합니다. 아래 [그림 9]는 안드로이드의 JavascriptInterface를 이용하여 WebView상에서의 JavaScript를 활용하는 코드입니다.

 

[그림 9] JavascriptInterface를 이용한 WebView 상의 악성행위 코드


해당 랜섬웨어로 인해 사용자가 신용 카드 번호를 입력하고 PAY를 클릭하게 되면, 해당 URL로 정보를 전송합니다. 아래  [그림 10]은 받은 신용카드 정보를 해당 URL로 전송하는 코드입니다.

 

[그림 10] 신용카드 정보를 URL에 전송하는 코드



결론


‘Trojan.Android.SLocker’ 악성앱은 분석 시점에서 2차 Dex가 다운로드되지 않았지만, 정상적으로 다운로드가 이루어졌을 경우 정보 유출 등의 추가적인 피해가 발생할 가능성이 존재합니다.


앞으로도 구글 플레이와 같은 정식 안드로이드 마켓에 정상앱으로 위장한 악성앱을 추가적으로 업로드할 가능성이 높기에 주의가 필요합니다.


이러한 공격을 예방하기 위해서는 신뢰할 수 있는 안드로이드 백신을 설치하여 최신 버전으로 업데이트 및 주기적으로 검사 하는 보안 습관을 가져야 합니다. 또한 사진, 영상 등과 같은 자료들은 주기적으로 다른 외장 매체에 백업을 하여 만일에 대비할 필요가 있습니다.








관련글 더보기

댓글 영역