项目已接近尾声,应要求进行应用评估,本人将近期评估接触到的方法和大家分享。
内网信息
漏洞说明 | 应用代码中如果存在内网信息泄漏,一旦被攻击者利用,则会对服务器安全产生威胁。 |
分析方案 | (1)首先检测源代码是否加密; (2)扫描反编译代码中以http、https开头的字符串以及IP地址 |
删除非应用需要的IP地址,包括无用的jar包
反编译防范
漏洞说明 | 如果应用没有作反编译防护,应用的关键逻辑,算法就会暴露给攻击者,造成应用被破解、盗版,给企业造成严重损失。 |
这个只需加固处理,本次使用360加固助手
花指令添加,在项目每个文件里添加
private static final char[] wJ = "0123456789abcdef".toCharArray();
public static String imsi = "204046330839890";
public static String p = "0";
public static String keyword = "电话";
public static String tranlateKeyword = "%E7%94%B5%E8%AF%9D";
java调试
漏洞说明 | 如果在AndroidManifest.xml配置文件中设置了application属性为debuggable=“true”,则应用可以被任意调试,这就为攻击者调试和破解程序提供了极大方便。 |
设置debuggable=“false”
数据备份风险
漏洞说明 | 如果设置application属性为allowBackup=“true”,则应用在系统没有root的情况下其私有数据也可以通过备份方式进行任意读取和修改,造成隐私泄露和信息被恶意篡改。 |
设置 allowBackup=“false”
调试日志函数调用
漏洞说明 | 通过logcat打印的调试信息或者错误异常信息,可以定位应用运行的流程或者关键代码,从而降低黑客破解的难度。 |
查找反编译代码中是否存在printStackTrace()、println()以及Log.v()、Log.d()、Log.i()、Log.w()、Log.e()等方法,发现该应用没有日志信息输出。
删除所有日志调试信息
Activity安全
漏洞说明 | 导出的组件可以被第三方app任意调用,导致敏感信息泄露或者恶意攻击者精心构造攻击载荷达到攻击的目的。 |
AndroidManifest.xml文件中Activity的配置信息是否设置exported=false以及该Activity是否有intent-filter
Service安全
漏洞说明 | Service存在的安全漏洞包括:权限提升,拒绝服务攻击。没有声明任何权限的应用即可在没有任何提示的情况下启动该服务,完成该服务所作操作,对系统安全性产生极大影响。 |
通过查看AndroidManifest.xml文件中Service的配置信息是否设置exported=false以及是否有intent-filter