꿈을꾸는 파랑새

오늘은 구글 플레이 스토어 에서 무료 VPN으로 위장해서 유포되는 악성코드-Super-Click VPN에 대해 글을 적어 보겠습니다. 일단 2021-11-19 16:53 UTC 기준으로 구글 플레이 스토어에 유포를 하고 있으며 대충 앱 설명을 보면 다음 같습니다.
Get Super-Click VPN - a secure, fast, and free VPN trusted by hundreds of thousands users, to protect your privacy while surfing the Internet. It enables you to browse access blocked websites and apps, bypass firewalls, watch videos (streaming content, movies, sports programs, many other shows ) safely and anonymously. It secures you when using a public WiFi or Hotspot.(수십만 사용자가 신뢰하는 안전하고 빠른 무료 VPN인 Super-Click VPN을 사용하여 인터넷을 서핑하는 동안 개인 정보를 보호하십시오.
이를 통해 액세스 차단된 웹 사이트 및 앱을 탐색하고, 방화벽을 우회하고, 비디오(스트리밍 콘텐츠, 영화, 스포츠 프로그램, 기타 여러 프로그램)를 안전하고 익명으로 시청할 수 있습니다. 공용 WiFi 또는 핫스팟을 사용할 때 보안을 유지합니다.)
FEATURES:
Unlimited time, Unlimited data, Unlimited bandwidth.
Absolute privacy everywhere including public Wi-Fi hotspots. Stay secure.
Fast servers for streaming content like video
High-level encryption protocols: IP & DNS masking
Simple setup, one tap connect to VPN
We do not save any user Logs.
No registration or login required
무제한 시간, 무제한 데이터, 무제한 대역폭.

Super-Click VPN 악성코드 실행

공용 Wi-Fi 핫스팟을 포함한 모든 곳에서 완벽한 개인 정보 보호. 보안을 유지하십시오.
비디오와 같은 콘텐츠 스트리밍을 위한 빠른 서버
고급 암호화 프로토콜: IP 및 DNS 마스킹
간단한 설정, 한 번의 탭으로 VPN에 연결
사용자 로그는 저장하지 않습니다.
등록이나 로그인이 필요하지 않습니다.

Super-Click VPN VPN 서버

즉 무료 VPN으로 위장하고 있으며 쉽게 이야기해서 그냥 공짜로 VPN을 이용하고 싶은 사람의 심리를 낚은 악성코드입니다. 일단 유포되는 악성코드 주소는 다음과 같습니다.

Super-Click VPN 유포

https://play.google(.)com/store/apps/details?id=com.superclick.vpnproxys
로 구글 공식 스토어를 통해서 유포되고 있고 기본적인 목적은 페이스북 계정 탈취입니다.
먼저 악성코드 해쉬값은 다음과 같습니다.
파일명:Super-Click VPN.apk
사이즈:27.4 MB
CRC32:8f0c4e86
MD5:3cb0f6b52cddf94dfeba67917f7d9fd8
SHA-1:3be6c503f695c8980cc15a256daf57125372b51d
SHA-256:05cd225fbaf876cdc6ee4097e140c13185230cf51a186a82facb6a12d415765b
SHA-512:462f784b66e4ff63847543d6c4ed8b4f3e6c1ae55dfb6f696c778ca925ed2d2922c022ca0c65031a5aad067ee34b6466d6174b16077043f32b8bdc6f58d5b288
입니다.

Super-Click VPN 악성코드 안드로이드 권한

그리고 해당 Super-Click VPN 악성코드의 안드로이드 권한은 다음과 같습니다.
android.permission.FOREGROUND_SERVICE
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.WAKE_LOCK
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.BIND_VPN_SERVICE
android.permission.BIND_JOB_SERVICE
android.intent.action.BATTERY_OKAY
android.intent.action.VIEW
android.intent.action.TIME_SET
android.intent.action.BATTERY_LOW
androidx.work.impl.background.systemalarm.UpdateProxies
android.intent.action.ACTION_POWER_DISCONNECTED
android.intent.action.TIMEZONE_CHANGED
android.net.conn.CONNECTIVITY_CHANGE
com.facebook.sdk.ACTION_CURRENT_ACCESS_TOKEN_CHANGED
android.intent.action.DEVICE_STORAGE_LOW
android.intent.action.BOOT_COMPLETED
android.intent.action.DEVICE_STORAGE_OK
android.intent.action.MAIN
android.intent.action.ACTION_POWER_CONNECTED

페이스북 계정 로그인

입니다. 일단 보면 백그라운드 서비스, 인터넷 연결, 액세스 네트워크 상태 (일반적으로 네트워크 연결을 모니터링, Wi-Fi 연결의 모든 측면을 관리) 위한 권한, 스마트폰을 켜진 상태로 유지, 안드로이드 스마트폰 부팅 시 실행하기, VPN 서비스에 대한 최상위 인터페이스를 사용하도록 허용 권한,JobScheduler로 백그라운드 작업 실행하기 위한 권한이 존재합니다.
DEX 파일은 2개 존재하면 해당 해쉬값은 다음과 같습니다.
Dex File Name: classes.dex
File Size:7762300 bytes
MD5:8dc4068451292fafe0b5655161f95b65
Class Size:6988
Dex File Name:classes2.dex
File Size:10126072 bytes
MD5:6a42cf3f497fc781fced7d6c0ad5553f
Class Size:9739
입니다

SMS

먼저 해당 악성코드를 실행하면 당연히 VPN으로 위장하고 있으니까 VPN 즉 국가를 선택하라는 것과 Start이라는 것이 보이면 해당 VPN 서비스 지역을 보면 한국, 일본, 이집트, 홍콩, 싱가포르, 프랑스 등 국가들이 보이는 것을 볼 수가 있으면 이제 VPN 서비스를 이용하려고 하면 페이스북에 연결하라고 합니다.
당연히 여기서 2단계 인증이라도 해 놓았으면 일단 조금이나마 보안이 강화되어서 나중에 비밀번호를 바꿀 수가 있겠지만 2단계 인증을 하지 않았으면 페이스북 계정이 악의적인 목적이 있는 사람이 페이스북 계정을 탈취당하는 경우가 발생합니다.
그리고 com.blankj.utilcode.util.IntentUtils 등에서는 SMS(문자) 관련 코드들이 있는 것을 볼 수가 있습니다.

public static android.content.Intent getSendSmsIntent(java.lang.String r2, java.lang.String r3) { /* if (r2 == 0) goto L_0x002d java.lang.StringBuilder r0 = new java.lang.StringBuilder r0.<init>() java.lang.String r1 = "smsto:" r0.append(r1) java.lang.String r2 = android.net.Uri.encode(r2) r0.append(r2) java.lang.String r2 = r0.toString() android.net.Uri r2 = android.net.Uri.parse(r2) android.content.Intent r0 = new android.content.Intent java.lang.String r1 = "android.intent.action.SENDTO" r0.<init>(r1, r2) java.lang.String r2 = "sms_body" r0.putExtra(r2, r3) r2 = 1 android.content.Intent r2 = getIntent(r0, r2) return r2 L_0x002d: java.lang.NullPointerException r2 = new java.lang.NullPointerException java.lang.String r3 = "Argument 'phoneNumber' of type String (#0 out of 2, zero-based) is marked by @androidx.annotation.NonNull but got null for it" r2.<init>(r3) throw r2 */ throw new UnsupportedOperationException("Method not decompiled: com.blankj.utilcode.util.IntentUtils.getSendSmsIntent(java.lang.String, java.lang.String):android.content.Intent"); }

전화 걸기 부분은 다음과 같습니다.

public static android.content.Intent getCallIntent(java.lang.String r3) { /* if (r3 == 0) goto L_0x0028 android.content.Intent r0 = new android.content.Intent java.lang.StringBuilder r1 = new java.lang.StringBuilder r1.<init>() java.lang.String r2 = "tel:" r1.append(r2) java.lang.String r3 = android.net.Uri.encode(r3) r1.append(r3) java.lang.String r3 = r1.toString() android.net.Uri r3 = android.net.Uri.parse(r3) java.lang.String r1 = "android.intent.action.CALL" r0.<init>(r1, r3) r3 = 1 android.content.Intent r3 = getIntent(r0, r3) return r3 L_0x0028: java.lang.NullPointerException r3 = new java.lang.NullPointerException java.lang.String r0 = "Argument 'phoneNumber' of type String (#0 out of 1, zero-based) is marked by @androidx.annotation.NonNull but got null for it" r3.<init>(r0) throw r3 */ throw new UnsupportedOperationException("Method not decompiled: com.blankj.utilcode.util.IntentUtils.getCallIntent(java.lang.String):android.content.Intent"); }

com.blankj.utilcode.util.FlashlightUtils 에서는 스마트폰 휴대폰 상태 관련 코드가 있는 것을 볼 수가 있습니다.

Phonecall

public static void setFlashlightStatus(boolean r3) { /* boolean r0 = init() if (r0 != 0) goto L_0x0007 return L_0x0007: android.hardware.Camera r0 = com.blankj.utilcode.util.FlashlightUtils.mCamera android.hardware.Camera$Parameters r0 = r0.getParameters() if (r3 == 0) goto L_0x0035 java.lang.String r3 = r0.getFlashMode() java.lang.String r1 = "torch" boolean r3 = r1.equals(r3) if (r3 != 0) goto L_0x0049 android.hardware.Camera r3 = com.blankj.utilcode.util.FlashlightUtils.mCamera // Catch:{ IOException -> 0x0030 } android.graphics.SurfaceTexture r2 = com.blankj.utilcode.util.FlashlightUtils.mSurfaceTexture // Catch:{ IOException -> 0x0030 } r3.setPreviewTexture(r2) // Catch:{ IOException -> 0x0030 } android.hardware.Camera r3 = com.blankj.utilcode.util.FlashlightUtils.mCamera // Catch:{ IOException -> 0x0030 } r3.startPreview() // Catch:{ IOException -> 0x0030 } r0.setFlashMode(r1) // Catch:{ IOException -> 0x0030 } android.hardware.Camera r3 = com.blankj.utilcode.util.FlashlightUtils.mCamera // Catch:{ IOException -> 0x0030 } r3.setParameters(r0) // Catch:{ IOException -> 0x0030 } goto L_0x0049 L_0x0030: r3 = move-exception r3.printStackTrace() goto L_0x0049 L_0x0035: java.lang.String r3 = r0.getFlashMode() java.lang.String r1 = "off" boolean r3 = r1.equals(r3) if (r3 != 0) goto L_0x0049 r0.setFlashMode(r1) android.hardware.Camera r3 = com.blankj.utilcode.util.FlashlightUtils.mCamera r3.setParameters(r0) L_0x0049: return */ throw new UnsupportedOperationException("Method not decompiled: com.blankj.utilcode.util.FlashlightUtils.setFlashlightStatus(boolean):void"); }

해당 악성코드에 포함된 인터넷 주소는 다음과 같습니다.

http://play.google(.)com/store/apps/details?id=com.facebook.orca 
http://schemas.android(.)com/apk/res/android
http://schemas.applovin(.)com/android/1.0
https://.facebook(.)com
https://a.applovin(.)com/
https://a.applvn(.)com/
https://adc3-launch-staging.adcolony(.)com/v4/launch
https://adc3-launch.adcolony(.)com/v4/launch
https://assets.applovin(.)com/gdpr/flow_v1/gdpr-flow-1.html
https(:)//blank
https://d.applovin(.)com/
https://d.applvn(.)com/
https://facebook(.)com
https://facebook(.0com/device?user_code=%1$s&qr=1
https://graph-video(.)%s
https://graph(.)%s
https://ms.applovin(.)com/
https://ms.applvn(.)com/
https://pagead2.googlesyndication(.)com/pagead/gen_204?id=gmob-apps
https://plus.google(.)com/
https://prod-a.applovin(.)com
https://rt.applovin(.)com/4.0/pix
https://rt.applvn(.)com/4.0/pix
https://ms.applovin(.)com/ https://ms.applvn(.)com/
https://rt.applovin(.)com/ https://rt.applvn(.)com/
https://support.google(.)com/dfp_premium/answer/7160685#push
https://vid.applovin(.)com/
https://pdn.applovin(.)com
https://img.applovin(.)com/
https://d.applovin(.)com
https://assets.applovin(.)com/
\https://cdnjs.cloudflare(.)com
http://vid.applovin(.)com
http://pdn.applovin(.)com
http://img.applovin(.)com
http://d.applovin(.)com
http://assets.applovin(.)com
http://cdnjs.cloudflare(.)com/
https://wd.adcolony(.)com/logs
https://www.example(.)com
https://www.facebook(.)com/adnw_logging/
https://www.googleapis(.)com/auth/appstate
https://www.googleapis(.)com/auth/datastoremobile
https://www.googleapis(.)com/auth/drive
https://www.googleapis(.)com/auth/drive.appdata
https://www.googleapis(.)com/auth/drive.apps
https://www.googleapis(.)com/auth/drive.file
https://www.googleapis(.)com/auth/fitness.activity.read
https://www.googleapis(.)com/auth/fitness.activity.write
https://www.googleapis(.)com/auth/fitness.blood_glucose.read
https://www.googleapis(.)com/auth/fitness.blood_glucose.write
https://www.googleapis(.)com/auth/fitness.blood_pressure.read
https://www.googleapis(.)com/auth/fitness.blood_pressure.write
https://www.googleapis(.)com/auth/fitness.body.read
https://www.googleapis(.)com/auth/fitness.body.write
https://www.googleapis(.)com/auth/fitness.body_temperature.read
https://www.googleapis(.)com/auth/fitness.body_temperature.write
https://www.googleapis(.)com/auth/fitness.location.read
https://www.googleapis(.)com/auth/fitness.location.write
https://www.googleapis(.)com/auth/fitness.nutrition.read
https://www.googleapis(.)com/auth/fitness.nutrition.write
https://www.googleapis(.)com/auth/fitness.oxygen_saturation.read
https://www.googleapis(.)com/auth/fitness.oxygen_saturation.write
https://www.googleapis(.)com/auth/fitness.reproductive_health.read
https://www.googleapis(.)com/auth/fitness.reproductive_health.write
https://www.googleapis(.)com/auth/games
https://www.googleapis(.)com/auth/games.firstparty
https://www.googleapis(.)com/auth/games_lite
https://www.googleapis(.)com/auth/plus.login
https://www.googleapis(.)com/auth/plus.me

기본적으로 해당 악성코드를 실행하면 2021-11-19 16:53 UTC 기준으로 바이러스 토탈에서 탐지를 하는 보안 업체(백신앱)은 다음과 같습니다.
Avast-Mobile:Android:Evo-gen [Trj]
Kaspersky:UDS:Trojan.AndroidOS.Piom.almp
McAfee-GW-Edition:Artemis!Trojan

스마트폰 손전등 상태 확인

C2:kcoffni(.)xyz
입니다. 일단은 많은 보안 업체들이 탐지하지 않고 있으면 나름 보안 업체에 신고했지만, 탐지를 하는 쪽과 아직 탐지를 하지 않은 쪽이 있습니다. 일단 VPN은 지난 글에서도 적었지만, 가능하면 인지도가 있는 VPN 업체를 사용하면 개인정보는 털리게 돼 있습니다.
그냥 VPN을 사용하고 싶은 경우에는 NordVPN,ExpressVPN,CyberGhost VPN,Surfshark VPN(서프샤크 VPN)를 이용을 하시는 것을 추천을 드립니다.
어차피 VPN을 사용할 것이면 개인정보 유출 같은 걱정 없는 VPN을 사용해야지 괜히 돈 아낀다고 이상한 VPN을 사용하면 개인정보는 전 세계인들과 함께 하는 정보가 될 것입니다. 물론 공용 와이파이 접속을 할 때 VPN을 사용하지 않으면 이런 행동 역시 개인정보가 털리는 위험한 행동입니다. 이상 간단하게 분석을 해 보았습니다.

그리드형

공유하기

facebook twitter kakaoTalk kakaostory naver band