안드로이드 악성 코드, 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
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와 통신하여 명령을 받고 장치에서 훔친 데이터를 보냅니다.
종료 코드
휴대전화 보안 그리고 악성 앱 제거 방법
KISA 스마트폰 안전 수칙 10계명
① 의심스러운 애플리케이션 다운로드하지 않기
② 신뢰할 수 없는 사이트 방문하지 않기
③ 발신인이 불명확하거나 의심스러운 메시지 및 메일 삭제하기
④ 비밀번호 설정 기능을 이용하고 정기적으로 비밀번호 변경하기
⑤ 블루투스 등 무선인터페이스는 사용 시에만 켜놓기
⑥ 이상 증상이 지속될 경우 악성코드 감염 여부 확인하기
⑦ 다운로드한 파일은 바이러스 유무를 검사한 후 사용하기
⑧ PC에도 백신 프로그램을 설치하고 정기적으로 바이러스 검사하기
⑨ 스마트폰 플랫폼의 구조를 임의로 변경하지 않기
⑩ 운영체제 및 백신 프로그램을 항상 최신 버전으로 업데이트하기
'play > 분석' 카테고리의 다른 글
[악성 앱] 월드컵 중계(kora442) 사칭 앱 분석 (23.01.28) (0) | 2023.01.28 |
---|---|
[악성 앱] YouTube Premium 사칭 앱 분석 (23.01.22) (0) | 2023.01.22 |
[악성 앱] 로젠 택배 사칭 앱 분석 (23.01.16) (2) | 2023.01.16 |
[악성 앱] KMI건강검진 사칭 앱 분석 (22.11.01) (0) | 2022.11.01 |
[악성 앱] 교통민원24(이파인) 사칭 앱 분석 (22.10.30) (4) | 2022.10.30 |