0

高危漏洞

5

中危漏洞

0

低危漏洞

2

警告

文件名 copy9_23.apk
上传者 chicharito
文件大小 0.31209564208984MB
MD5 4fd22a07366e42ee4e03313c52b3145f
包名 iits.spyoo
Main Activity
Min SDK 9
Target SDK 9

权限列表

# 名称 说明 提示
0 android.permission.CALL_PHONE 允许应用程序在您不介入的情况下拨打电话。恶意应用程序可借此在您的话费单上产生意外通话费。请注意,此权限不允许应用程序拨打紧急呼救电话。 警告
1 android.permission.PROCESS_OUTGOING_CALLS 允许应用程序处理外拨电话或更改要拨打的号码。恶意应用程序可能会借此监视、另行转接甚至阻止外拨电话。 警告
2 android.permission.READ_SMS 允许应用程序读取您的手机或SIM卡中存储的短信。恶意应用程序可借此读取您的机密信息。 警告
3 android.permission.ACCESS_COARSE_LOCATION 访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。 注意
4 android.permission.ACCESS_FINE_LOCATION 访问精准的位置源,例如手机上的全球定位系统(如果有)。恶意应用程序可能会借此确定您所处的位置,并可能消耗额外的电池电量。 注意
5 android.permission.GET_TASKS 允许应用程序检索有关当前和最近运行的任务的信息。恶意应用程序可借此发现有关其他应用程序的保密信息。 注意
6 android.permission.MODIFY_PHONE_STATE 允许应用程序控制设备的电话功能。拥有此权限的应用程序可自行切换网络、打开和关闭无线通信等,而不会通知您。 注意
7 android.permission.READ_CONTACTS 允许应用程序读取您手机上存储的所有联系人(地址)数据。恶意应用程序可借此将您的数据发送给其他人。 注意
8 android.permission.READ_PHONE_STATE 允许应用程序访问设备的手机功能。有此权限的应用程序可确定此手机的号码和序列号,是否正在通话,以及对方的号码等。 注意
9 android.permission.RECEIVE_BOOT_COMPLETED 允许应用程序在系统完成启动后即自行启动。这样会延长手机的启动时间,而且如果应用程序一直运行,会降低手机的整体速度。 注意
10 android.permission.RECEIVE_SMS 允许应用程序接收和处理短信。恶意应用程序可借此监视您的信息,或者将信息删除而不向您显示。 注意
11 android.permission.WRITE_CONTACTS 允许应用程序修改您手机上存储的联系人(地址)数据。恶意应用程序可借此清除或修改您的联系人数据。 注意
12 android.permission.WRITE_SETTINGS 允许应用程序修改系统设置方面的数据。恶意应用程序可借此破坏您的系统配置。 注意
13 android.permission.WRITE_SMS 允许应用程序写入手机或SIM卡中存储的短信。恶意应用程序可借此删除您的信息。 注意
14 android.permission.DISABLE_KEYGUARD 允许应用程序停用键锁和任何关联的密码安全设置。例如,在手机上接听电话时停用键锁,在通话结束后重新启用键锁。 提示
15 android.permission.INTERNET 允许程序访问网络. 提示
16 android.permission.MODIFY_AUDIO_SETTINGS 允许应用程序修改整个系统的音频设置,如音量和路由。 提示
17 android.permission.VIBRATE 允许应用程序控制振动器。 提示
18 android.permission.WAKE_LOCK 允许应用程序防止手机进入休眠状态。 提示
19 android.permission.WRITE_EXTERNAL_STORAGE 允许应用程序写入SD卡。 提示

四大组件

组件名称

iits.spyoo.Program
iits.spyoo.Login
iits.spyoo.Setting
iits.spyoo.AutoRun
iits.spyoo.About
iits.spyoo.AutoAnswerScreen

iits.service.SpyooService
iits.service.ResetService
iits.service.AutoAnswerIntentService

iits.receiver.AutoRunReceiver
iits.receiver.DateTimeReceiver
iits.receiver.LoginReceiver
iits.receiver.AutoAnswerReceiver

第三方库

# 库名 介绍

静态扫描发现风险点

风险等级 风险名称

中危

检测到当前标志被设置成true或没设置,这会导致adb调试备份允许恶意攻击者复制应用程序数据,造成数据泄露。

中危

检测到debug模式被打开。如果该项被打开,app存在被恶意程序调试的风险,可能导致泄露敏感信息等问题,建议关闭debug模式。

中危

该app需要移除大部分日志打印代码。
经扫描该包仍存在大量打日志代码,共发现58处打日志代码.(此处扫描的日志打印代码,是指调用android.util.Log.* 打印的.)
详情如下:

位置: classes.dex
iits.code.dao.GPS_DAO;->getAlls(Landroid/content/Context;)Ljava/util/ArrayList;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getSMSReceiverLast(Landroid/content/ContentResolver;)Liits/code/dto/SMS_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_DAO;->deleteAlls(Landroid/content/Context;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.SQLiteConnection;->openToWrite()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->insert(Landroid/content/Context; Liits/code/dto/URL_DTO;)J==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->createTable(Landroid/content/Context;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Account_DAO;->deleteAlls(Landroid/content/Context;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->createTable(Landroid/content/Context;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->update(Landroid/content/Context; Liits/code/dto/SMS_DTO;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->getAlls(Landroid/content/Context;)Ljava/util/ArrayList;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_DAO;->createTable(Landroid/content/Context;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getSMSSentCount(Landroid/content/ContentResolver;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Account_DAO;->createTable(Landroid/content/Context;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.SQLiteConnection;->createTable(Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.SQLiteConnection;->deleteDataBase()V==>android.util.Log;->d(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->delete(Landroid/content/Context; J)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->deleteAlls(Landroid/content/Context;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->deleteAlls(Landroid/content/Context;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.SQLiteConnection;->createDataBase()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->createTable(Landroid/content/Context;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->getLastGPS(Landroid/content/Context;)Liits/code/dto/GPS_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->get(Landroid/content/Context; J)Liits/code/dto/GPS_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_History_DAO;->delete(Landroid/content/ContentResolver; J)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_DAO;->get(Landroid/content/Context; J)Liits/code/dto/Call_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_History_DAO;->getCount(Landroid/content/ContentResolver;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getSMSReceiverCount(Landroid/content/ContentResolver;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->delete(Landroid/content/Context; J)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.SQLiteConnection;->deleteDataBase()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getSMSOutBoxLast(Landroid/content/ContentResolver;)Liits/code/dto/SMS_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.spyoo.AutoRun;->onCreate(Landroid/os/Bundle;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->deleteAlls(Landroid/content/Context;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getCount(Landroid/content/ContentResolver;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Account_DAO;->update(Landroid/content/Context; Liits/code/dto/Account_DTO;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_History_DAO;->getAlls(Landroid/content/ContentResolver;)Ljava/util/ArrayList;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Setting_DAO;->get(Landroid/content/Context;)Liits/code/dto/Setting_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->delete(Landroid/content/Context; J)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->update(Landroid/content/Context; Liits/code/dto/GPS_DTO;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getSMSSentLast(Landroid/content/ContentResolver;)Liits/code/dto/SMS_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_History_DAO;->delete(Landroid/content/ContentResolver; Ljava/lang/String;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.mamager.FileManager;->WriteLog(I Ljava/lang/String; Ljava/lang/String;)V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_History_DAO;->getURLLast(Landroid/content/ContentResolver;)Liits/code/dto/URL_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->get(Landroid/content/Context; J)Liits/code/dto/URL_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_History_DAO;->getCount(Landroid/content/ContentResolver;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->insert(Landroid/content/Context; Liits/code/dto/SMS_DTO;)J==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.common.HTTPWeb;->sendGetMethod(Ljava/lang/String;)Lorg/apache/http/HttpResponse;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Account_DAO;->get(Landroid/content/Context;)Liits/code/dto/Account_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_DAO;->update(Landroid/content/Context; Liits/code/dto/Call_DTO;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getAlls(Landroid/content/ContentResolver;)Ljava/util/ArrayList;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->getThreadCount(Landroid/content/ContentResolver;)I==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.GPS_DAO;->insert(Landroid/content/Context; Liits/code/dto/GPS_DTO;)J==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_History_DAO;->getAlls(Landroid/content/ContentResolver;)Ljava/util/ArrayList;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.URL_DAO;->update(Landroid/content/Context; Liits/code/dto/URL_DTO;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Account_DAO;->insert(Landroid/content/Context; Liits/code/dto/Account_DTO;)J==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_History_DAO;->delete(Landroid/content/ContentResolver; J)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.Call_History_DAO;->deleteCallLast(Landroid/content/ContentResolver; Ljava/lang/String;)Z==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->get(Landroid/content/Context; J)Liits/code/dto/SMS_DTO;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.dao.SMS_DAO;->getAlls(Landroid/content/Context;)Ljava/util/ArrayList;==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I
iits.code.SQLiteConnection;->openToRead()V==>android.util.Log;->e(Ljava/lang/String; Ljava/lang/String;)I

中危

检测到2条敏感明文信息,建议移除。

位置: classes.dex
'http://www.copy9.com' used in: Liits/receiver/AutoRunReceiver;->onReceive(Landroid/content/Context; Landroid/content/Intent;)V
'http://www.copy9.com' used in: Liits/receiver/LoginReceiver;->onReceive(Landroid/content/Context; Landroid/content/Intent;)V

中危

检测到1处app通用签名漏洞。
路径:META-INF\CERT.RSA

通用签名存在以下风险:
(1)如果攻击者的应用包名与目标应用相同,又使用了相同的密钥对应用进行签名,攻击者的应用就可以替换掉目标应用(2)另外目标应用的自定义权限android:protectionlevel为“signature”或者“signatureOrSystem”时,保护就形同虚设(3)如果设备使用的是第三方ROM,而第三方ROM的系统也是用AOSP默认的签名,那么使用如果使用系统级签名文件签名过的应用,权限就得到了提升对于普通开发者如果自己的签名证书泄露也可能发生(1)、(2)条所提到的风险

参考资料:
http://docs.anysdk.com/AndroidSign
http://blog.csdn.net/jiangwei0910410003/article/details/50402000?spm=a313e.7916648.0.0.Nbaf0K
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html?spm=a313e.7916648.0.0.Nbaf0K
http://jaq.alibaba.com/community/art/show?articleid=457

警告

检测到8个导出的组件接收其他app的消息,这些组件会被其他app引用并导致dos攻击。

activity iits.spyoo.Program
service iits.service.SpyooService
service iits.service.ResetService
service iits.service.AutoAnswerIntentService
receiver iits.receiver.AutoRunReceiver
receiver iits.receiver.DateTimeReceiver
receiver iits.receiver.LoginReceiver
receiver iits.receiver.AutoAnswerReceiver

建议:
(1)最小化组件暴露。对不会参与跨应用调用的组件建议显示添加android:exported="false"属性。
(2)设置组件访问权限。对provider设置权限,同时将权限的protectionLevel设置为"signature"或"signatureOrSystem"。
(3)组件传输数据验证。对组件之间,特别是跨应用的组件之间的数据传入与返回做验证和增加异常处理,防止恶意调试数据传入,更要防止敏感数据返回。

参考案例:
http://www.wooyun.org/bugs/wooyun-2010-0169746
http://www.wooyun.org/bugs/wooyun-2010-0104965

参考资料:
http://jaq.alibaba.com/blog.htm?spm=0.0.0.0.Wz4OeC&id=55
《Android安全技术解密与防范》

警告

检测到3个导出的隐式Service组件。
service iits.service.SpyooService
service iits.service.ResetService
service iits.service.AutoAnswerIntentService

建议:为了确保应用的安全性,启动Service时,请始终使用显式Intent,且不要为服务声明Intent过滤器。使用隐式Intent启动服务存在安全隐患,因为您无法确定哪些服务将响应Intent,且用户无法看到哪些服务已启动。从Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用 bindService(),系统会抛出异常。

参考资料:
https://developer.android.com/guide/components/intents-filters.html#Types


动态扫描发现风险点

风险等级 风险名称

服务端分析

风险等级 风险名称

警告

检测到?处XSS漏洞。
开发中...

警告

检测到?处XSS跨站漏洞。
开发中...

应用证书