오늘은 안드로이드 몸캠 피싱 안드로이드 악성코드인 동영상에 대해 글을 적어 보겠습니다. 몸캠 피싱이라는 것에 대해 알아보고 시작을 하겠습니다. 몸캠 피싱은 일단 남녀노소 누구나 당할 수가 있습니다. 몸캠 이라는것은 영어로는 sextortion로 부르고 있으며 피해자로부터 성적 호기심 등을 이용해서 몰래 녹화, 녹음을 통해서 금전 및 가상화페등을 요구하는 범죄입니다. 보통 몸캠 하자고 유혹하여 해킹 어플을 설치하게 하거나 해킹 링크로의 접속을 유도하고 상대방에게 노출 사진을 찍게 하게 하고 이것을 스마트폰에 저장된 연락처에 퍼뜨리겠다는 협박을 통해 돈을 뜯어내는 사기 방법입니다.
스마트폰 일단 랜덤 채팅앱을 설치돼 있으며 갑자기 모르는 여자로부터 묻지도 따지지도 않고 스카이프, 라인, 카카오톡 등 영상통화가 가능하고 PC와 스마트폰 간에 연동할 수 있는 앱으로 대화를 이어나가자고 하면 몸캠 피싱일 가능성이 거의 99.9%에 가깝고 기본적인 레퍼토리는 영상통화 서비스를 이용해서 서로 자위하는 모습을 보여주자고 그러거나 그냥 만나자고 해놓고 만나기 전에 영상통화하고 만나자고 하는 방법을 사용하고 있으며 영상통화를 하면 노출하는 여자의 모습이 나오며 무조건 영상통화에 얼굴도 나와 달라고 요구를 하며 물론 상대 쪽은 전부 다 편집한 영상이고 영상통화를 하다가 영상의 행동이 반복되는 것처럼 느껴질 수 있고 이런저런 목적으로 이제 apk 파일을 보내고 해당 APK 파일을 설치를 실행하면 악성앱이 실행을 하게 되고 악성앱이 실행이 되면 연락처, GPS, 전화권한을 획득해서 악성앱에 삽입이 돼 있는 C&C 서버에 전송하게 돼 있습니다.
예를 들어서 연락처에 접근할 필요가 없는 앱에서 연락처 권한을 요구하면 의심해 보아야 합니다. 그냥 APK 앱을 보낼 수도 있고 zip 파일에 숨겨서 보내는 악성코드 제작자 있습니다. 해당 어플을 설치를 하면 개인정보를 C&C에 전송해서 개인정보를 탈취하는 방식을 사용하고 있습니다. 먼저 해당 악성코드의 해쉬값을 보겠습니다. 해쉬값은 다음과 같습니다.
파일명: 동영상.apk
CRC32: 6578831a
MD5: dd93d67f8f22f1b947bb8e84ee342149
SHA-1: c07228eacad185682a6cc1caa7ed940c4b3716a6 SHA-256:ce9e9c7e45d8abee3dce73c1cf7389b9eeafbf0d8eb32aaf10c5cb4c7301745f 입니다. 그리고 다음은 해당 악성코드 안드로이드 권한입니다.
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19"/>
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.GET_TASKS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_LOGS"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.BATTERY_STATS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
해당 악성코드 권한을 보면 기본적으로 인터넷 연결, 스마트폰 화면 켜진 채 유지, 스마트폰 연락처 읽기, 문자 읽기, 통화 삭제 및 기록을 위한 기록, 안드로이드 위치 권한, 외장 메모리(micro SD, 마이크로 SD), 스마트폰 카메라 권한, 스마트폰 상태 바 올리기, 상태바 내리기 등에 접근을 하는 것을 볼 수가 있습니다.
앱 이름: 동영상
패키지 이름: com.call.call2
입니다.
해당 악성코드 작동하는 활동을 하는 다음과 같습니다.
com.call.call2.activity.MainActivity3
com.call.call2.activity.MainActivity2
com.call.call2.activity.DialogActivity
com.yanzhenjie.permission.bridge.BridgeActivity
com.fanjun.keeplive.activity.OnePixelActivity
com.google.android.gms.common.api.GoogleApiActivity
입니다.
receivers는 다음과 같습니다.
com.call.call2.receiver.BootStartReceiver
com.fanjun.keeplive.receiver.NotificationClickReceive
서비스는 다음과 같습니다.
com.call.call2.PhoneWindow
com.call.call2.service.AudioRecordService
com.call.call2.service.CameraService
com.call.call2.service.LocationService
com.call.call2.service.MainProService
com.call.call2.service.MyMusicService
com.call.call2.service.StartMyService
com.call.call2.service.UPloadAlbumService
com.fanjun.keeplive.service.HideForegroundService
com.fanjun.keeplive.service.JobHandlerService
com.fanjun.keeplive.service.LocalService
com.fanjun.keeplive.service.RemoteService
com.yanzhenjie.permission.bridge.BridgeService
입니다.
먼저 카메라 접근 권한은 다음과 같습니다.com.call.call2.service.CameraService 에 있으면 다음과 같은 코드가 있습니다.
private void autoTakePic(SurfaceTexture paramSurfaceTexture) {
if (this.isRunning)
return;
this.isRunning = true;
Camera camera = getFacingFrontCamera();
this.mCamera = camera;
if (camera == null) {
Timber.e("camera device is null", new Object[0]);
this.isRunning = false;
return;
}
try {
camera.setPreviewTexture(paramSurfaceTexture);
this.mCamera.startPreview();
Thread.sleep(500L);
takePicture();
return;
} catch (Exception exception) {
exception.printStackTrace();
this.isRunning = false;
releaseCamera();
return;
}
}
private void autoTakePic(SurfaceHolder paramSurfaceHolder) {
if (this.isRunning)
return;
this.isRunning = true;
Camera camera = getFacingFrontCamera();
this.mCamera = camera;
if (camera == null) {
Timber.e("camera device is null", new Object[0]);
this.isRunning = false;
return;
}
try {
camera.setPreviewDisplay(paramSurfaceHolder);
this.mCamera.startPreview();
Thread.sleep(500L);
takePicture();
return;
} catch (Exception exception) {
exception.printStackTrace();
this.isRunning = false;
releaseCamera();
return;
}
}
입니다. 그리고 감염된 스마트폰의 전화번호를 수집하기 위한 코드는 com.call.call2.utils.SystemUtils 에 존재합니다.
public static String getPhoneNumber(Context paramContext) {
String str = ((TelephonyManager)paramContext.getSystemService("phone")).getLine1Number();
null = str;
if (!TextUtils.isEmpty(str)) {
if (!str.startsWith("+86")) {
null = str;
return str.startsWith("+82") ? str.substring(3) : null;
}
} else {
return null;
}
return str.substring(3);
}
public static long getRamFree() {
return getRamInfo()[1];
}
private static long[] getRamInfo() {
long l1;
long l3 = -1L;
Exception exception2 = null;
String str = null;
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader("/proc/meminfo"), 8192);
} catch (IOException iOException) {
l1 = -1L;
} finally {
try {
exception1.close();
} catch (Exception exception) {
exception.printStackTrace();
}
}
long l5 = l3;
long l4 = l1;
SYNTHETIC_LOCAL_VARIABLE_10.close();
long l2 = l3;
return new long[] { l1, l2 };
}
그리고 혹시나 했는데 未知 구글 번역기 돌려서 보니 알 수 없는 뜻이라고 하는 중국어가 눈에 들어 왔습니다.
그리고 if (!str.startsWith("+86")) 보면 국가번호로 추정되는 것을 보면 중화인민공화국(중국)의 국가 코드가 보이는 것을 확인할 수가 있습니다.
그리고 androidx.core.telephony.TelephonyManagerCompat 등에서는 스마트폰의 IMEI 정보를 가져가는 것을 확인할 수가 있습니다.
public static String getImei(TelephonyManager paramTelephonyManager) {
if (Build.VERSION.SDK_INT >= 26)
return Api26Impl.getImei(paramTelephonyManager);
if (Build.VERSION.SDK_INT >= 22) {
int i = getSubscriptionId(paramTelephonyManager);
if (i != Integer.MAX_VALUE && i != -1) {
i = SubscriptionManagerCompat.getSlotIndex(i);
if (Build.VERSION.SDK_INT >= 23)
return Api23Impl.getDeviceId(paramTelephonyManager, i);
try {
if (sGetDeviceIdMethod == null) {
Method method = TelephonyManager.class.getDeclaredMethod("getDeviceId", new Class[] { int.class });
sGetDeviceIdMethod = method;
method.setAccessible(true);
}
return (String)sGetDeviceIdMethod.invoke(paramTelephonyManager, new Object[] { Integer.valueOf(i) });
} catch (NoSuchMethodException|IllegalAccessException|InvocationTargetException noSuchMethodException) {
return null;
}
}
}
return noSuchMethodException.getDeviceId();
}
그리고 해당 악성코드에 포함된 URL 주소는 다음과 같습니다.
hxxps://www.googleapis(.)com/auth/fitness.reproductive_health.write
hxxp://156.234.25(.)93:7788
hxxp://localhost/
hxxps://www.googleapis(.)com/auth/fitness.location.write
hxxps://www.googleapis(.)com/auth/games
hxxps://www.googleapis(.)com/auth/fitness.nutrition.write
hxxps://www.googleapis(.)com/auth/drive.file
vnd(.)android.cursor.item/name
hxxps://www.googleapis(.)com/auth/plus.me
hxxps://www.googleapis(.)com/auth/drive
hxxps://www.googleapis(.)com/auth/fitness.body_temperature.write
hxxps://plus.google(.)com/
hxxps://www.googleapis(.)com/auth/fitness.activity.read
hxxps://www.googleapis(.)com/auth/fitness.location.read
hxxps://www.googleapis(.)com/auth/fitness.body_temperature.read
hxxps://www.googleapis(.)com/auth/fitness.activity.write
hxxps://www.googleapis(.)com/auth/fitness.nutrition.read
hxxps://www.googleapis(.)com/auth/fitness.blood_pressure.read
hxxps://www.googleapis(.)com/auth/fitness.body.read
hxxps://www.googleapis(.)com/auth/plus.login
hxxps://android.bugly.qq(.)com/rqd/async
hxxps://www.googleapis(.)com/auth/games_lite
hxxps://www.googleapis(.)com/auth/datastoremobile
hxxps://astat.bugly(.)qcloud.com/rqd/async
hxxps://www.googleapis(.)com/auth/appstate
hxxp://schemas.android(.)com/apk/res-auto
hxxps://www.googleapis(.)com/auth/fitness.blood_glucose.write
hxxps://www.googleapis(.)com/auth/fitness.body.write
hxxps://www.googleapis(.)com/auth/fitness.oxygen_saturation.write
hxxps://www.googleapis(.)com/auth/drive.appdata
hxxps://www.googleapis(.)com/auth/games.firstparty
hxxps://www.googleapis(.)com/auth/fitness.reproductive_health.read
hxxps://www.googleapis(.)com/auth/fitness.blood_pressure.write
hxxps://www.googleapis(.)com/auth/drive.apps
hxxp://schemas.android(.)com/apk/res/android
hxxps://astat.bugly.cros.wr.pvp(.)net/:8180/rqd/async
hxxps://www.googleapis(.)com/auth/fitness.blood_glucose.read
hxxps://www.googleapis(.)com/auth/fitness.oxygen_saturation.read
그리고 인증서를 보면 다음과 같은 정보를 확인할 수가 있습니다.
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
93:6e:ac:be:07:f2:01:df
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=US, ST=California, L=Mountain View, O=Android, OU=Android, CN=Android/emailAddress=android@android.com
Validity
Not Before: Feb 29 01:33:46 2008 GMT
Not After : Jul 17 01:33:46 2035 GMT
Subject: C=US, ST=California, L=Mountain View, O=Android, OU=Android, CN=Android/emailAddress=android@android.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
2021-06-15 04:53:15 UTC 기준 바이러스토탈에서 탐지하는 백신 앱들은 다음과 같습니다.
AegisLab:Trojan.AndroidOS.Wroba.C!c
AhnLab-V3:Trojan/Android.Kaishi.1020239
Alibaba:TrojanBanker:Android/Wroba.82424231
Antiy-AVL:Trojan/Generic.ASMalwAD.1E
Avast-Mobile:APK:RepSandbox [Trj]
Avira (no cloud):ANDROID/Wroba.FJPG.Gen
BitDefenderFalx:Android.Riskware.Agent.JCA
CAT-QuickHeal:Android.Wroba.A39dd
Cynet:Malicious (score: 99)
DrWeb:Android.Spy.717.origin
ESET-NOD32:A Variant Of Android/Spy.Banker.AQK
Ikarus:Trojan.AndroidOS.Banker
K7GW:Spyware ( 0056a5821 )
Kaspersky:HEUR:Trojan-Banker.AndroidOS.Wroba.aw
MAX:Malware (ai Score=99)
McAfee:Artemis!DD93D67F8F22
McAfee-GW-Edition:Artemis
Microsoft:Trojan:Script/Wacatac.B!ml
Symantec:Trojan.Gen.2
Symantec Mobile Insight:AppRisk:Generisk
Trustlook:Android.PUA.DebugKey
입니다. 이런 안드로이드 스마트폰 사용자는 기본적으로 공식 스토어를 이용을 하는 것이 안전하면 그리고 외부 앱 즉 인터넷에서 다운로드 하는 앱들은 다운로드 해서 설치하는 것은 위험하면 그리고 공신력 있는 백신앱을 다운로드 및 설치해서 사용하는 것이 안전하게 스마트폰을 사용하는 방법입니다. 오늘은 간단하게 몸캠 피싱 안드로이드 앱인 동영상에 대해서 적어 보았습니다.
'소프트웨어 팁 > 보안 및 분석' 카테고리의 다른 글
안드로이드 랜섬웨어-VaimRansom.apk (6) | 2021.06.26 |
---|---|
몸캠 피싱 악성코드-동영상(2021.06.20) (8) | 2021.06.25 |
Windows 10(윈도우 10) KB5003690 누적 업데이트 (2) | 2021.06.23 |
모질라 파이어폭스 89.0.1 보안 업데이트 (6) | 2021.06.18 |
윈도우 10 Xbox Game Pass 앱 문제 한 업데이트 KB5004476 (0) | 2021.06.15 |
윈도우 10 KB5003637 보안 업데이트 (0) | 2021.06.11 |
VPN을 사용을 하면 익명성이 보장 받아 볼수 있을까? (8) | 2021.06.07 |
몸캠 추정 안드로이드 악성코드-동영상.apk(2021.06.04) (4) | 2021.06.04 |