android_security

Android Security

1.Android基础知识


Android系统架构主要分为:应用层(java)、框架层(java)、库文件(C)&Android运行时(运行java代码的虚拟机)和Linux kernel。

Android四大组件:

Activity:窗口界面。Activity之间通过Intent进行通信。android应用的每一个Activity都必须在AndroidManifest.xml配置文件中声明。

Service:运行于后台,一般不需要与用户交互。一般为其他组件提供后台服务或监控其他组件的运行。有两种工作状态,一种是启动状态,主要用于执行后台计算;另一种是绑定状态,主要用于其他组件和service的交互。配置文件中需要声明全部service。

Content Provider:存放和获取数据并使这些数据可以被所有应用程序访问。应用程序间共享数据的唯一方法。

Broadcast Receiver:为了便于进行系统级别的消息推送。本质是一种全局的监听器,可以实现系统中不同组件之间的通信。发送广播用Intent,接收广播用广播接收器BroadcastReceiver。静态注册&动态注册。

Android安全机制:

安全沙箱:

Android每个应用程序都拥有唯一的UID和GID,每个应用是隔离的(文件/进程)。

数据目录:/data/data/。

两个应用程序共享文件方法:

(1)两个应用使用同样的证书签名,并在样式清单中使用相同shareUserId,可以互相访问彼此的数据目录。

(2)利用content provider,设置权限提供数据。

权限控制:

Normal级:申请后即可使用。

Dangerous级:在安装时由用户确认才可用。

Signature级:必须相同签名才能用。

Signatureorsystem:必须系统用户才可用。

APK反编译

APK实际为Zip压缩包,unzip后可以获得dex文件。dex文件是DalvikVM executes的简称,是执行文件。我们可以获得:AndroidManifest.xml文件(全局配置文件)、Classes.dex(Dalvik字节码)、资源文件和lib文件夹下的库文件.so文件由C/C++编写和签名文件。

APK反编译IDE:APK改之理。so反编译工具:IDA。

想一想:怎么不输入MD5值,获得权限。

2.Android应用攻击面分析


四大组件攻击面分析

  • 组件含有权限代理攻击:

造成应用功能泄露、拒绝服务等问题。

  • 组件暴露:

exported属性为true,表示对外暴露。

  • 组件配置失当:

造成的被劫持问题。

Intent攻击面分析:

数据通信的桥梁,app2app。

  • 可能携带敏感数据,IMEI,key,phone number。

  • 内容为空,拒绝服务。

  • 隐式Intent被劫持

  • Pending Intent 感觉是A通过B发送信息给C。A交给B将来要发送的包,给如果A不存在了,B依然可以发送信息。“双无”Intent是无component,无action。try catch结构

Webview攻击面分析:

简单小型类似浏览器的组件。

  • 远程代码执行。
  • File域控制不严。
  • 信息泄露。
  • Url外部可控。

物理攻击:

  • 拆解设备:接口、调试端口、可拆卸的Flash
  • USB:
  • ADB:4.2.2之前ADB shell不需要认证,之后需要手动点击认证。

邻接攻击:

  • GPS欺骗
  • 基带
  • 蓝牙
  • Wi-Fi:wpa算法、中间人攻击。
  • NFC:数据传输、移动支付。

3.Android应用测试思路


APK改后缀名后UnZip。

AndroidManifest.xml提取出来。

分析程序包

权限、组件、协议实现、Manifest和逆向代码。

寻找攻击面

导出的组件、监听的端口、IPC、网络协议、密码学实现和Web

监控应用行为

附加调试、敏感函数调用、日志输出、文件系统和网络流量。

模糊测试

组件和文件格式。

Drozer

Android的安全测试框架。

功能:

  • 查询已安装的包信息。
  • 确定APP的受攻击面
  • 查询组件信息
  • 启动组件
  • 从Content Provider中获取信息
  • 检查Content Provider的脆弱性
  • 编写自定义模块
0%