play/분석

[악성 앱] MYT Music 사칭 앱 분석 (23.01.19)

카고형 2023. 1. 19. 00:34
728x90

안드로이드 악성 코드, MYT Müzik 앱 사칭 앱 분석 유럽 국가의 은행 사용자 대상으로 악성 행위를  하는 것으로 알려진 Android Bank trojan 입니다.  해당 악성앱은 MYT Music 이라는 앱을 사칭하여 배포 되고 있는 악성코드 입니다.
 
출처
https://blog.cyble.com/2022/12/20/godfather-malware-returns-targeting-banking-users/
 
※ 정상 배포방식은 원스토어, 구글플래이 해당 사이트(어플)를 통해서만 배포합니다.
※ 대부분의 정상 앱은 일반 사용자에게 특별한 접근 출처를 알  수 없는 앱 설치 권한을 요구 하지 않습니다. 
 
 

정상 구글 플레이 스트어 앱

 
 

APK 파일 정보

app name : MYT Müzik
package : com.expressvpn.vpn
MD5 : c685ca051d3ca0cdee08f5a33a548031
SHA-1 : e2757e1edd96238202862ba5e7f926f5a3911e17
SHA-256 : 138551cd967622832f8a816ea1697a5d08ee66c379d32d8a6bd7fca9fdeaecc4
Vhash :  2850566220dbc9afd9b861d4e8f6b4fa

Virstotal 결과


Android Manifest

더보기
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.1.0" android:compileSdkVersion="23" android:compileSdkVersionCodename="6.0-2438415" package="com.expressvpn.vpn" platformBuildVersionCode="31" platformBuildVersionName="12">
    <uses-sdk android:minSdkVersion="26" android:targetSdkVersion="31"/>
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29"/>
    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    <uses-permission android:name="oppo.permission.OPPO_COMPONENT_SAFE"/>
    <uses-permission android:name="com.huawei.permission.external_app_settings.USE_COMPONENT"/>
    <uses-permission android:name="oppo.permission.OPPO_COMPONENT_SAFE"/>
    <application android:theme="@style/Theme.AppCompat.NoActionBar" android:label="@string/app_name" android:icon="@drawable/icon" android:debuggable="true" android:screenOrientation="portrait" android:configChanges="orientation" android:allowBackup="false" android:supportsRtl="true" android:extractNativeLibs="true" android:usesCleartextTraffic="true" android:roundIcon="@drawable/icon" android:appComponentFactory="androidx.core.app.CoreComponentFactory" android:requestLegacyExternalStorage="true">
        <activity android:name="com.expressvpn.vpn.kittenspreachers" android:exported="true"/>
        <activity-alias android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:name="com.expressvpn.vpn.Android" android:enabled="true" android:exported="true" android:screenOrientation="portrait" android:targetActivity="com.expressvpn.vpn.kittenspreachers" android:noHistory="true" android:roundIcon="@mipmap/ic_launcher">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity-alias>
        <activity android:name="com.expressvpn.vpn.Activitys.bureaucratizingprebelieved"/>
        <activity-alias android:label="@string/app_names" android:icon="@drawable/ic_youtube" android:name="com.expressvpn.vpn.Youtube" android:enabled="false" android:exported="true" android:screenOrientation="portrait" android:targetActivity="com.expressvpn.vpn.Activitys.bureaucratizingprebelieved" android:noHistory="true" android:roundIcon="@drawable/ic_youtube">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity-alias>
        <activity android:name="com.expressvpn.vpn.Activitys.encarpusHallie" android:exported="true">
            <meta-data android:name="android.app.lib_name" android:value=""/>
        </activity>
        <activity android:name="com.expressvpn.vpn.Activitys.punicinkitten" android:exported="false"/>
        <activity android:name="com.expressvpn.vpn.Activitys.barbasparanephric" android:exported="false"/>
        <service android:label="@string/app_name" android:name="com.expressvpn.vpn.Services.fordlessinstigations" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" android:enabled="true" android:exported="false" android:stopWithTask="true">
            <intent-filter>
                <action android:name="android.service.notification.NotificationListenerService"/>
            </intent-filter>
        </service>
        <service android:name="com.expressvpn.vpn.Services.trapperlikehairweaver" android:foregroundServiceType="mediaProjection"/>
        <receiver android:name="com.expressvpn.vpn.Receivers.cattilyoutvelvet" android:enabled="true" android:exported="false"/>
        <service android:name="com.expressvpn.vpn.anaptychiespousage"/>
        <service android:name="com.expressvpn.vpn.Services.unchalkeddodgasted"/>
        <service android:name="com.expressvpn.vpn.Services.athwartshipMcCandless"/>
        <service android:name="com.expressvpn.vpn.Services.toluidinsdithering"/>
        <service android:name="com.expressvpn.vpn.Services.hyperexcitablyintercolonized"/>
        <activity android:name="com.expressvpn.vpn.Activitys.counterpressurecriticist"/>
        <activity android:name="com.expressvpn.vpn.Activitys.phlegmsbutment"/>
        <activity android:name="com.expressvpn.vpn.Activitys.incapsulatedsurfacy" android:exported="true"/>
        <activity android:name="com.expressvpn.vpn.Activitys.nonruminatingasbestus"/>
        <activity android:name="com.expressvpn.vpn.Activitys.terminepinked"/>
        <service android:label="@string/app_name" android:name="com.viber.voip.InputService" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" android:enabled="true" android:exported="false">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService"/>
            </intent-filter>
            <meta-data android:name="android.accessibilityservice" android:resource="@xml/serviceconfig"/>
        </service>
        <activity android:theme="@style/Theme.AppCompat.NoActionBar" android:label="" android:name="com.expressvpn.vpn.Activitys.agatewaresuddenstarting" android:excludeFromRecents="true" android:launchMode="singleTask"/>
        <activity android:name="com.expressvpn.vpn.Activitys.boltholeotorhinolaryngologic"/>
        <activity android:name="com.expressvpn.vpn.Activitys.regolithsbringed"/>
        <service android:name="com.expressvpn.vpn.Network.swattedapplyingly" android:exported="false"/>
        <receiver android:name="com.expressvpn.vpn.Receivers.Machiavellisticmicrogramme" android:exported="false">
            <intent-filter android:priority="999">
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.intent.action.QUICKBOOT_POWERON"/>
                <action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
                <action android:name="android.intent.action.USER_PRESENT"/>
                <category android:name="android.intent.category.HOME"/>
            </intent-filter>
        </receiver>
        <activity android:name="com.expressvpn.vpn.Activitys.Rouxcrowbars"/>
        <activity android:theme="@style/TransparentTheme" android:name="com.viber.voip.MediaProjectionRequestActivity" android:excludeFromRecents="true"/>
        <service android:name="com.viber.voip.MainService" android:enabled="true" android:foregroundServiceType="mediaProjection"/>
        <service android:name="com.expressvpn.vpn.Services.ovoviviparousnesslongstanding"/>
        <activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name="com.google.android.gms.common.api.GoogleApiActivity" android:exported="false"/>
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
    </application>
</manifest>

16개의 액티비티, 11개의 서비스, 2개의 리시버 

 

Android Permission


코드 분석

  • 아이콘 은닉 on/off
  • 기본 정보 수집
    • 연락처 정보
    • 국가
    • 모델
    • sim
    • 앱리스트
  • USSD 송금 기능
  • HTML 삽입 기능
  • 수신 전화 전달 기능
  • 키 로그 
  • 화면 모니터링 제어 기능
  • 종료기능

아이콘 은닉 on/off 기능

연락처 정보 수집

기본 정보 수집

  • 아래 이미지는 기기 모델 정보, 설치된 앱 목록 등과 같은 피해자의 기기 세부 정보를 수집하고 TA의 서버에 업로드하기 위해 악성코드가 사용하는 코드 스니펫을 보여줍니다.

 

USSD 사용 하여 송금하는 코드악성코드는

  • 아래 그림과 같이 다이얼러 사용자 인터페이스를 사용하지 않고 USSD(Unstructured Supplementary Service Data) 호출을 통해 송금을 할 수 있습니다.

HTML 페이지를 삽입하는 코드

  • 악성코드 는 아래 이미지와 같이 OnAccessibilityEvent 방식으로 오버레이 창을 생성하고 TAs C&C 서버로부터 sunset_cmd 를 수신하면 HTML 피싱 페이지를 주입합니다.

피해자의 수신 전화를 전달하는 코드

  •  C&C 서버로부터 명령을 받으면 Victim의 수신 전화를 TA가 제공한 번호로 전달합니다.

키 로그 탈취

 

화면 모니터링 코드

  •  VNC 뷰어를 통해 피해자 기기의 화면을 보거나 제어하기 위해 아래와 같은 코드를 사용합니다.

 

텔레그램 채널에서 C&C URL

  • 악성 애플리케이션은 텔레그램 채널 hxxps://t[.]me/varezotukomirza에서 C&C 서버 URL을 가져옵니다. 이를 통해 TA와 통신하여 명령을 받고 장치에서 훔친 데이터를 보냅니다.

C&amp;C 서버 URL

 
 

종료 코드


 
 
휴대전화 보안 그리고 악성 앱 제거 방법



KISA  스마트폰 안전 수칙 10계명
 
① 의심스러운 애플리케이션 다운로드하지 않기
  
② 신뢰할 수 없는 사이트 방문하지 않기
  
③ 발신인이 불명확하거나 의심스러운 메시지 및 메일 삭제하기
  
④ 비밀번호 설정 기능을 이용하고 정기적으로 비밀번호 변경하기
  
⑤ 블루투스 등 무선인터페이스는 사용 시에만 켜놓기
  
⑥ 이상 증상이 지속될 경우 악성코드 감염 여부 확인하기
  
⑦ 다운로드한 파일은 바이러스 유무를 검사한 후 사용하기
  
⑧ PC에도 백신 프로그램을 설치하고 정기적으로 바이러스 검사하기
  
⑨ 스마트폰 플랫폼의 구조를 임의로 변경하지 않기
  
⑩ 운영체제 및 백신 프로그램을 항상 최신 버전으로 업데이트하기
 
 
 

728x90