얼마 전에 flash light가 개인정보를 수집한다는 기사가 나왔다.
분석을 한번 해볼까 하는 생각에 지금과 같은 포스팅을 하게 되었다.
소스 분석 전 앱의 정보는 다음과 같다.
1. 어플리케이션 기본 정보
이름 : 플래시라이트 버전 : 5.1.5 패키지 이름 : com.devuni.flashlight 설치 SDK 버전 : 21 |
2. 시그니처 정보
CN : Nikolay Ananiev timeFrom : 090525191210 (Tue Nov 14 02:53:11 KST 1972) timeTo : 20590513191210 (Fri Jun 28 11:59:51 KST 2622) |
3. 해쉬 값
SHA256 : 60f323cbe7d1f9d75a372759f99bea39b48ab323dd6ec8bf14ea38d03989fa48 MD5 : 366ac7e04f7ec92c29462417e5fc1fbe |
4. 퍼미션 정보
1) android.permission.CAMERA - 어플리케이션에서 언제든 카메라를 사용하여 사진과 동영상을 촬영하는 것을 허용합니다. 2) android.permission.FLASHLIGHT - 어플리케이션에서 플래시를 조절하는 것을 허용합니다. 3) android.permission.WAKE_LOCK - 어플리케이션이 휴대폰이 잠자기 모드로 전환하지 않게 설정할 수 있도록 허용합니다. 4) android.permission.VIBRATE - 어플리케이션에서 진동을 조절하는 것을 허용합니다. 5) android.permission.INTERNET - 어플리케이션에서 네트워크 소켓을 추가하는 것을 허용합니다. 6) android.permission.ACCESS_NETWORK_STATE - 어플리케이션에서 모든 네트워크의 상태를 볼 수 있도록 허용합니다. 7) com.devuni.flashlight.CONTROL_LIGHT - 작동하지 않아도 자동으로 카메라 라이트를 시작/정지시키는 어플리케이션을 허용합니다. |
5. Activity
1) com.devuni.flashlight.MainActivity 2) com.devuni.flashlight.WidgetConfigure 3) com.devuni.light.LightActivity 4) com.google.android.gms.ads.AdActivity 5) com.millennialmedia.android.MMActivity |
6. Service
com.devuni.light.LightService |
7. Receiver
1) com.devuni.flashlight.receivers.PackageReceiver 2) com.devuni.flashlight.receivers.WidgetProvider 3) com.devuni.flashlight.receivers.RestrictedProfilesReceiver 4) com.devuni.flashlight.receivers.APIReceiver |
8. So 파일
arm64-v8a/libnative.so armeabi/libnative.so armeabi-v7a/libnative.so mips/libnative.so mips64/libnative.so x86/libnative.so x86_64/libnative.so |
so 파일 분석 실력은 아직 안 되므로 Pass!
9. 소스 분석 (분석 tool : jd-gui)
일단 보시는 것과 같이 난독화가 되어 있는 상태이다.
우선 인터넷 퍼미션을 사용하므로 관련 API를 호출하는 자바 클래스를 찾기로 했다.
대표적인 인터넷 관련 API는
java.net org.apache.http |
이다.
이 API를 가지고 있으면서 한번이라도 호출되는 클래스는 2개가 있었다.
파일이름 |
com.devuni.moreapps.c.java |
사용 API |
android.content.Context android.content.pm.PackageInfo android.content.pm.PackageManager android.content.pm.PackageManager.NameNotFoundException android.net.ConnectivityManager android.net.NetworkInfo android.os.Build android.os.Build.VERSION android.os.Message java.io.File java.io.FileInputStream ava.io.FileOutputStream java.io.InputStream java.io.InputStreamReader java.lang.reflect.Field java.util.ArrayList java.util.Collections java.util.Comparator java.util.Iterator java.util.Locale org.apache.http.message.BasicNameValuePair org.json.JSONObject |
분석결과 | 난독화가 제대로 되어 있다.
|
파일이름 |
com.millennialmedia.android.dt.java |
사용 API |
android.app.AlertDialog android.app.AlertDialog.Builder android.content.ComponentName android.content.Context android.content.Intent android.content.IntentFilter android.content.pm.PackageManager android.content.pm.PackageManager.NameNotFoundException android.content.res.Configuration android.content.res.Resources android.location.Location android.media.AudioManager android.net.ConnectivityManager android.net.NetworkInfo android.os.Build android.os.Build.VERSION android.os.Environment android.os.Handler android.os.Looper android.os.StatFs android.provider.Settings.System android.telephony.TelephonyManager android.text.TextUtils android.util.DisplayMetrics com.google.android.gms.ads.identifier.AdvertisingIdClient com.google.android.gms.ads.identifier.AdvertisingIdClient.Info com.google.android.gms.common.e com.google.android.gms.common.f com.google.android.gms.common.g java.io.File java.io.IOException java.net.InetAddress java.net.NetworkInterface java.net.URLEncoder java.util.Enumeration java.util.Locale java.util.Map org.apache.http.conn.util.InetAddressUtils |
분석결과 | 광고에 관한 클래스이다. 참 많은 정보를 가져간다. 얼핏 살펴보면.... 1. 마이크가 있는지 여부 2. 안드로이드 디바이스 정보 3. 네트워크 사업자 정보 4. 배터리 충전량 와 같은 정보를 가져간다. 유일하게 이 클래스를 호출하는 곳이 com.devuni.ads.MMedia.java 이다. 유일하게 쓰는 부분이 this.b.setId(dt.a()); 이 부분인데... 개인정보를 빼가는 함수 이름은 static void a(Context paramContext, Map paramMap) 이다. 따라서 정작 이 함수를 호출하는 클래스는 없었다.(난독화 되서 안보일 수도 있다.) |
|
10. 기타
얼마전에 MBC에서 Flashlight에 관련해서 뉴스에 보도된적이 있다.
이 관련된 코드로 들어가보았지만 절대 유출을 할 수 없는 코드였다. 왜냐하면? 퍼미션이 없기 때문에..
도대체 무엇을 보고 이런 기사가 나갔을까 싶다. 이 어플리케이션은 ACCESS_FINE_LOCATION 을 등록하지 않았다. 따라서 이 저 조건문은 빠져나가게 되어있다. 물론 이 광고 라이브러리를 사용한 다른 어플리케이션이 사용한다면 유출했을지 모르지만.. 이 어플리케이션은 유출할 수 가 없다.
그러므로 이 기사는 잘못된 기사이다.
'보안 > 안드로이드' 카테고리의 다른 글
안드로이드 악성앱 사용 API (0) | 2014.12.06 |
---|---|
com.devuni.flashlight v4.9.4 안드로이드 어플리케이션 분석 (0) | 2014.12.03 |
busybox, nc를 이용한 ADB로 이미지 뜨기! (1) | 2014.12.02 |
내가 설치한 앱의 정보를 보여주는 앱 (0) | 2014.12.01 |
안드로이드 앱 리스트 추출 및 앱 추출하기 (0) | 2014.12.01 |