App安全检测实践基础:客户端程序安全(一)

2021-01-06
340

系列文章

APP安全测试基础:实践起点

注明:影响范围  Android所有版本

安装包签名

1、描述

每个Android应用程序想要安装运行,必须经过签名.所以开发者在发布安装包时,必须对安装包进行签名。签名信息中包含的组织信息,将便于用户识别安装包的真伪。部分手机杀毒软件也是基于签名信息进行查杀的,因此一个完整详细的签名信息,有助于提高用户分辨真伪安装包。

2、过程

使用签名工具或者jeb查看签名和证书信息,查看签名是否符合以下标准格式。CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)。

jarsigner -verify -verbose -certs xxx.apk

检测发现如下信息——不符合规定要求。

3、建议

将安装包进行签名并检测安装包签名的异常。

完善企业签名组织信息

在应用发布时使用企业签名对安装包进行签名

反编译保护

1、描述

Android应用程序是使用Java进行开发,运行于Java虚拟机(Dalvik)的应用程序.通过反编译工具可以很方便地得到Dalvik虚拟机所执行的Smali代码和Java代码.便可对Android应用程序进行分析,修改,重打包.若没有任何加固保护措施,应用程序的逻辑将完完整整地暴露给分析者.

2、过程

使用Jeb、AndroidKiller_v1.3.1等反汇编工具加载目标Apk,检测Apk是否经过混淆或者加固

经过检测发现情况如下:

代码没有经过混淆或者加固,攻击人员可以通过攻击反编译.直接在源码层次进行攻击.

 

3、建议

对客户端代码进行代码混淆

对客户端进行加壳加固处理

应用完整性校验

1、描述

由于Android系统固有的缺陷,Android应用分发渠道管理机制等问题,导致Android客户端程序很容易被反编译篡改/二次打包,经任意签名后可在各个渠道或论坛中发布,这不仅损害了开发者的知识产权,更可能威胁到用户的敏感信息及财产安全,因此对客户端自身进行完整性校验尤为必要.

2、过程

只用apktool工具解包然后在重新打包apk,检测apk能否正常使用

apktool d apk

apktool b dir -o out.apk

重签名apk

如果app没有对dex或者签名进行校验的话,可以随意修改smali代码和资源文件.比如可以修改图标.下图展示了把某证券类应用图片替换为手电筒应用.

更改之前:

 

转载时必须以链接形式注明原始出处及本声明