编辑: 夸张的诗人 2019-11-03
Android应用安全开发 About?Me 沈?沈明星 ? 网易安全专家 网易安全专家 Company Logo 议程 基础 ? Android基础 ? Android应用客户端安全 Android应用客户端安全 ? Android应用通信安全 ? Android应用服务端安全 ? 总结 总结 Android系统市场占有率巨大

4 Andriod整体构架 OWASP?Mobile?Top?10? 与传统Web应用相比 机 存的东 隐私 ? 手机上存的东西更隐私 ? 手机直接关联运营商账号 手机直接关联运营商账号 ? 手机更容易物理丢失 ? 手机更多使用公用wifi上网 ? Android系统的开放性 Android系统的开放性 ? Android机最大的乐趣刷机(root) ? Android混乱的应用市场 Android客户端安全 从AndroidManifest.

xml说起 每个 程序中必须的 件?每个Android程序中必须的文件 ? 它位于整个项目的根目录 它位于整个项目的根目录 ? 定义应用程序及其组件的结构和元数据 C Permissions C Activities C Intents Notifications C Notifications C ContentProviders C ... AndroidManifest.xml?实例 Permission 有的权限管 机制 为每 个?利用 Linux?已有的权限管理机制,为每一个 Application?分配不同的 uid?和gid pp g 在此基础上 对l可以执行的某些 ? 在此基础上,对Application?可以执行的某些 具体操作进行权限细分和访问控制 Permission实例 滥用权限 组件间调用 大组件 ? 四大组件 C Activity y C Service Broadcast Receiver C Broadcast?Receiver C Content?Provider ? 如果配置不当,会被其他应用调用 如果配置不当,会被其他应用调用 ContentProvider 为存储和获 数据提供统 的接 ? 为存储和获取数据提供统一的接口 ? 可以在不同的应用程序之间共享数据 可以在不同的应用程序之间共享数据 ? ContentProvider提供的方法 C query:查询 C insert:插入 C update:更新 delete:删除 C delete:删除 C getType:得到数据类型 创建 据时 C onCreate:创建数据时调用的回调函数 滥用ContentProvider 滥用ContentProvider Andriod应用反编译 应 程序使 发 通过 编?Andriod?应用程序使用java开发,可通过反编 译的方式获取对应的源码 ? APK包其实就是个ZIP包,用WinRAR解开获得 classes dex classes.dex ? 使用dex2jar将程序转换成jar文件 ? 使用jad对jar文件进行反编译 反编译实例 对策 个免费的 类 件的压缩 ? ProGuard 是一个免费的 Java类文件的压缩, 优化,混肴器 新建了 个dd工程之后 个?新建了一个Android工程之后,一个 proguard.cfg文件会在工程的根目录下自动 创建 ? 文件定义了混淆器是怎样优化和混淆你的 代码 Andriod应用数据库 使的与操作系统 关的 ? Android使用开源的、与操作系统无关的SQL 数据库SQLite? 可以使用 l 查询 l 数据库中的内容 ? 可以使用sqlite3查询sqlite数据库中的内容 ? 同样可能受到SQLi攻击 对策 对 敏感数据 加密 ? 对于敏感数据要加密 ? 预防SQLi Android存储系统 卡作为 机的扩 存储设备 在 机中充 ? SD卡作为手机的扩展存储设备,在手机中充 当硬盘角色,可以让我们手机存放更多的数 当硬盘角色,可以 我们手机存放更多的数 据以及多媒体等大体积文件 ? 内部存储 RAM,就是我们常说的真正意义上 的内存 对SDCard进行读写操作 需在中声 ? 只需要在AndroidManifest.xml中声明 _ / 我们存放在 卡中数据很可能被其他恶意 ? 我们存放在SD卡中数据很可能被其他恶意 程序读取或者篡改 对RAM进行读写操作 ? 存放在RAM中数据,被root之后也可以读取 篡改 篡改 ? 国内大部分机器都root了?Android?2.2/2.3有大量可提权到root的漏洞 本地敏感信息保存实例 对策 ? Encode?vs.?Serializable?vs.?Encrypt ? 加密之后的密钥存放?? C 算法密钥都在本地 ? 对保存在客户端的敏感信息加密 对 卡上的敏感信息 定要加密 C 对于SD卡上的敏感信息一定要加密 C 加密用的密钥放到RAM中Bufferoverflow 底层 和?Android底层是Linux和C ? 如果使用native本地库,那么可能存在缓冲 区溢出 区溢出 ? 如果使用标准SDK库,那么把心放回肚子里 Android应用通信安全 Android手机信道 ? SMS ? Socket Socket ? HTTP ? Bluetooth 主要威胁 密?明文密码 ? 明文会话id 明文会话id ? 其他敏感信息 ? 手机信道更加危险 未加密的通信 加密的通信 HTTPS的证书验证 大量自签名 书?大量自签名证书 ? 系统设置,信任所有证书 ? 绝大部分应用没有验证客户端 绝大部分应用没有验证客户端 实例 中间 攻击 ? 中间人攻击 对策 使 安全的信道传输敏感信息 ? 使用安全的信道传输敏感信息 ? 重载verification函数,hardcode强制验证证 书的发行者 书的发行者 ? 对客户端同样需要验证 Android应用服务端安全 关于sessionid 唯编实际 并唯?唯一编号(IMEI,IMSI),实际上并不唯一 ? 任意程序可以读取上传 ? 不适合当做认证凭证使用 不适合当做认证凭证使用 跟常规Web?APP一样 走HTTP的应用 走HTTP的应用C burp?zap?… 走Socket的应用 Mallory Thanks! Q?&?A

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题