从一款被篡改的软件谈 钱柜娱乐开户 App 的安全之路

转载 2017年12月18日 00:00:00

作者简介

龚沛华
WiFi 万能钥匙信息安全部,钱柜娱乐开户 安全研究员,主要从事 钱柜娱乐开户 app的逆向分析与安全保护。

我来自 WiFi万能钥匙,主要负责安卓立项和保护这块的工作。本文要分享的有七大块:

  1. 钱柜娱乐开户 平台安全现状

  2. 钱柜娱乐开户 安全模型

  3. 程序安全

  4. 数据安全

  5. 系统安全

  6. 一款被篡改的 APK

  7. APK 保护措施

1. 钱柜娱乐开户 平台安全现状

左上角这张图是安卓端的恶意程序新增量和感染量。

右下角这张图是恶意程序类型的分布也占了很大的比例。

这些情况对一般用户都是比较敏感的行为,在安卓这块恶意程序的出现,也是应该引起我们一些注意。

移动终端特性:

  • 攻击入口广

    • 浏览器、恶意 app、网络劫持、usb

  • 碎片化

    • 安卓手机厂商多、安卓系统碎片化

  • 用户隐私

    • 通话、短信、应用数据

安卓出现这么多恶意程序,是由于移动终端的特性决定的。

攻击入口比较广,比如安卓上的一些浏览器,一些恶意 APP,网络接口和 USB。浏览器很多时候在用户不知道的情况下可能会点击一些恶意网站的链接,打开以后可能会有一些浏览器的漏洞,导致恶意下载一些 APP,后台可能会有一些静态的 ROOT 这些行为。另外网络劫持也是比较常见的,往往这些劫持的 APP 下载下来都是充满着各种恶意行为。

另外像碎片化,这个在国内更加的普遍,因为在国内安卓厂商比较多,并且系统也是各个厂商定制的比较多,各种各样的厂商不同的入口会导致不同的问题。

还有就是安卓系统,现在8.0版本出来可能稍微好一点。之前安卓系统漏洞是比较多的,像用户的隐私,如通话、短信和应用数据,只要申请一些权限就可以获取这些数据。

2. 钱柜娱乐开户 安全模型

  • Linux内核安全特性

    • 保留对应版本 Linux 内核的常规安全特性

    • 基于 UID、GID 隔离的访问控制

    • 单用户系统,钱柜娱乐开户 使用UID、GID 区分不同的 App

  • 沙盒

    • 每一个 App 在/data/data 下拥有一个私有目录

    • 每一个 App 或服务对应单独的 UID,系统级 UID 从1000开始,第三方 App 从10000开始,以此进行 UID 级的资源隔离

  • 权限

    • App 需要权限来访问各种系统资源

    • App 可以通过 钱柜娱乐开户Manifest.xml 来申请权限

    • 权限分级

    • 由用户在安装时决定是否允许该权限

    • 4.3之后可以动态管理

  • IPC 进程间访问控制

    • IPC 用于不同进程之间的数据通信

    • IPC 在上层有多种体现方式

  • Intent/Messenger/AIDL

  • APK完整性

    • Apk签名

  • SELinux

    • 内核级的强制访问控制

    • 4.3开始引入 钱柜娱乐开户

    • 保护系统关键资源

其实安卓做了一些安全的东西,上图左边是安卓的安全架构,第一个是 Applications,第二层是 钱柜娱乐开户 framework,代码签名,系统签名等等,还有多用户访问控制,加密,权限保护等等,但是这些机制并不是完全的够用。

像 Linux 的安全特性,是常规在 Linux 进行修改变化过来的,所以跟我们常见的 PC 上的 Linux 不一样。比如它是基于 UID 和 GID 的访问控制,另外在 APP 端是单独的控制,每个 APP 安装上去都会给你分配一个 UID。这个是安全上的一个沙盒,系统级的 UID 都是从1000开始,第三方 APP 是从10000开始的,以此进行UID级别上的资源隔离。此外,每一个 APP 在系统的/data/data下拥有一个私有的目录,在这些目录下面的隐私数据其他的 APP 也是可以获取到的。

权限这块其实现在对安卓来说是可以做到管理的,可以更好的进行一些控制。以前系统安装的时候直接申请所有权限,要么全部给,要么全部不给。

另外安卓上的一些签名,这在我们平时工作中也会遇到很多挑战或者威胁,因为安卓它本来 APP 是有相应的签名的,但是很容易被绕过,因为现在市场上有很多二次打包的 APP,有一定的加护,可以进行系统校验。我们平时也会遇到这样的问题,即使做了校验,还可以通过系统进行反射绕过的。

3.程序安全



程序安全比较常规的像防止反编译,篡改,代码注入等等。

反编译本来原代码里面是没有这块的,在代码里面加入一些获取插件的代码,往往这些攻击是注重自我的保护,下载这些插件以后过了几秒钟就删掉了,然后在五秒之内会启动自己的插件和服务。

加密算法是比较关键的地方,我们在分析 APP 的时候分析加密算法是比较脆弱的,java 层加密算法其实是没有什么用处的,我们建议在 SO 里面进行加密算法。

另外就是 HTTP 和 HTTPS 这块了,裸奔的 HTTP 是不安全,HTTPS 加密信道安全性依赖于对证书的认证。

4.数据安全

  • 敏感数据

    • 本地数据库

    • Shared_prefs

    • 网络数据传输

    • Sdcard

    • Log

    • ……

APP 上比较常见的本地数据库、Shared_prefs、网络传输。网络传输是比较关键的地方,往往我们在做 APP 的测试的时候对网络和传输这块看的比较多一点,因为网络传输比较容易被劫持。另外像 SD 卡、日志等等。

5. 系统安全

  • 系统环境安全

    • 界面劫持

    • 组件暴露

    • 键盘记录

  • 系统库安全

    • WebView 不合理导出

    • targetSdkVersion<= 16、addJavascriptInterface

    • 运行 js 代码调用本地代码

系统安全比如界面劫持,这个对于金融类的 APP 可能会比较多一点,它会直接弹出一个跟你界面一样的界面,诱导你输入帐号、密码等等。

上面图片就是 WebView 的漏洞。

6. 一款被篡改的 apk

  • 工作原理

  • 篡改程序入口

  • 初始化支付

  • 下载病毒母体

  • 准备提权

  • 下载篡改系统工具包

  • 其它恶意行为

恶意 APP 分析

上面例子就是恶意的被篡改的 APP 大概的运行过程。

首先是打包一个 APP,在运行中会下载恶意的母体,并且有一些短信拦截和提权等等恶意操作。我们通过反编译能够看到是把这个 APP 的初始化函数加入了一段自己的初始化的代码,然后我们在这个 APP 的一个注册文件里面可以看到上面图中加入的内容,就是如果发生了这样的信号,就可以把自己的相应组件给隐藏起来。

另外还可以看到在代码里面直接写入了支付的代码,并且进行了初始化,这个一旦成功了就可以直接进行支付了。

这只是其一,下面还会从服务器端下载一个恶意的病毒母体,从代码上可看出攻击者有一定的安全意识,他把自己的服务器等等在代码里面都加密了。我们可以通过网络抓包可以看到相应的服务器地址,并且都是加密的。

下载一段 eql,是一个压缩包并且是可执行文件,打开后并不是一个图片,而一个加密的文件,我们对它进行解密可以看到也是一个压缩文件,进一步解密后是 ELF 的文件。

此外还会下载另一个工具包,也是经过加密的,通过解密里面包含了四个文件,第一个是可以篡改系统的脚本,第二个是需要把这个 APP 写入系统目录,第三个是一个 SU 的可执行文件,第四个是命令监控与执行的文件,可以监听 SD 上的文件,然后去执行写入这个文件的所有命令,图中可以看出它执行过程中会做哪些操作,如把系统比如360、QQ安全管家等等都会关掉,做一个篡改,一个系统的目录和其他的恶意行为,比如删除系统文件,篡改系统工具包等等。

图中就是篡改了系统下面的一个文件,这个文件其实是在系统里面执行的文件,他篡改了这个文件后,每次用户重启手机的时候,就会执行他这个恶意行为代码,可以从服务器下载非常多的 APP 文件,在用户后台进行安装,还会定制各种服务,让用户手机进行扣费。

这个例子就是在我们 APP 没有进行很好保护的情况下,会产生很多被篡改,导致用户损失。

7. APK 保护措施

  • APK 加壳与混淆

    • 加大代码分析难度

    • 代码加密、隐藏、反调试、反逆向分析等

    • APK 加壳

    • APK 混淆

  • APK 完整性检验

    • 变量名混淆、字符串加密、垃圾指令、指令替换、native 扰乱控制流

    • 反调试:ptrace、/proc/self/status、……

    • 反内存 dump

    • 反一键脱壳器

    • 验证证书、校验文件 hash 值等

    • 静态完整性

    • 动态完整性

    • 混淆

  • 代码隐藏

    • llvm

    • 代码段加密

    • 自定义 so 格式

    • 伪造无效字段信息

    • 非法指令

    • Manifest 文件修改、资源加密、……

    • DEX 文件加壳,整体保护、类抽取

    • 防反编译工具,修改文件头、修改 debug 字段数据指针、……

    • SO 保护

通过上面的例子,我们需要对我们 APP 进行更好的保护。

APP 的保护主要从两个方面入手,一个是加壳,另一个是混淆

加壳比如代码加密、隐藏、反调试、反逆向分析等等。

APK 混淆就是加上代码。

APK 的校验有静态完整性,像验证证书、校验文件的 Hash 值等。还有动态完整性,像反调试 ptrace 等、反内存 dump、反一键脱壳器。现在网络上面有很多一键脱壳的神器,所以一般的加护并不能很好的保护,还是需要进行反一键脱壳的措施。

像保护方式不管是反调试还是验证证书等,更多还是希望在 SO 里面做,这样相对来说安全性会相对高一点,同时还要对 SO 进行相应的保护,这样可以达到更好的保护效果。

还有混淆,像变量名的混淆、字符串的加密、通过垃圾指令、通过指令替换、native 来干扰扰乱控制流。

代码隐藏主要是通过修改 Manifest 文件、资源加密、DEX 文件的加壳、整体保护、类抽取等等。

其实我们应该更多的对 SO 进行保护,比如像 LLVM、对代码段的加密、自定义 SO 格式,这个可能比较好一点,因为常规的 SO 格式,攻击者会知道,通过自定义的 SO 格式在分析难度上会更加大一点。加入一些在调试的时候导致调试工具自动崩溃的反调试的工具。还可以加入一些非法指令来达到一些保护的目的。

更多相关文章阅读

运维版《成都》,听哭了多少人...

同样会 Python,他的工资比你高一倍

阿里万亿交易量级下的秒级监控

IT 运维的救赎——顺丰运维的理想践行


学好 Python、拿高薪、竟是如此简单

快加入高维学院直通车成为认证运维开发工程师

只需要5天!

在5天内集中向你传授面向 DevOps 的运维开发工程师所需要掌握的所有精华。


更有含金量的是,学习结束你还将拥有一张【运维开发工程师认证证书】


这份含金量超高的证书:

如能被推荐进入上述大厂,您的培训费将被退回一半!!

更多企业直通车,正在路上。

也欢迎企业和我们联系:

刘琳,微信/电话:13910952502

参与报名及课程详情、请点击阅读原文链接

  • 本文已收录于以下专栏:

【钱柜娱乐开户安全】之防止apk被篡改后重编译。

现状:很多apk会被黑客反编译成smali文件,然后修改或植入恶意代码后重新编译成apk发布到市场。 解决要点: 1,代码混淆。(此法容易被攻破) 2,apk运行时进行签名验证和crc校验码验证。(此...
  • lchli1314
  • lchli1314
  • 2015年07月14日 00:02
  • 1370

那些年我们一起用过的Hybrid App

Hybrid App现状分析Web App毫无疑问Web App就是成本最低,最快速地解决方案了。尤其是近两年非常流行的响应式设计,Web App市场提供了非常好的实践场地。最近典型的Web App最...
  • xiangzhihong8
  • xiangzhihong8
  • 2016年11月19日 23:25
  • 1922

我的App开发之路:从零开始到上线赚钱

我的App开发之路:从零开始到上线赚钱 背景介绍 本人从第一次写代码赚钱开始,到现在已经12年了,使用过多种操作系统、编程语言。 现在作为一名个人开发者,开发一些小应用。 本文就应用软件开发做个简单...
  • chengxulaoyuan
  • chengxulaoyuan
  • 2015年01月16日 10:57
  • 598

阿里“老司机”带你从技术到架构,体验BAT大厂的开发设计流程-APP架构演进实践与优化之路

这次给大家带来等课程是由阿里“老司机”带你从技术点到架构,体验BAT大厂的开发设计流程,掌握在开发不同阶段的架构技术方案选型,从而更高效的进行开发,拥有高逼格的商业项目经验! 这套课程让阿里大牛带你...
  • sinat_40731586
  • sinat_40731586
  • 2017年10月26日 11:17
  • 246

8种方法突破iGuard网页防篡改软件保护

前段时间在搞一个受到网页防篡改保护的网站,之前不知道有这东西,后来在植入web后门的时候,老是被删掉,郁闷...     困扰了整整一天后,在翻看C盘时,发现根目录下一个奇怪的文件夹"Tercel"...
  • cnbird2008
  • cnbird2008
  • 2013年08月23日 11:39
  • 3897

APP接口设计安全问题

用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做
  • gebitan505
  • gebitan505
  • 2014年09月10日 10:39
  • 59047

iOS安全–浅谈关于iOS加固的几种方法

关于IOS安全这方面呢,能做的安全保护确实要比钱柜娱乐开户平台下面能做的少很多。 只要你的手机没越狱,基本上来说是比较安全的,当然如果你的手机越狱了,可能也会相应的产生一些安全方面的问题。就比...
  • donwei8
  • donwei8
  • 2016年07月11日 16:27
  • 1602

软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-2

2. 寻找优秀的程序员       2006年9月6日,星期三 优秀的程序员都在哪里 这是你第一次公开招募雇员。如同大多数人一样,你会发布广告,可能也会浏览一些大型的网上论坛,然后你就收到...
  • tiewen
  • tiewen
  • 2013年01月18日 10:38
  • 574

app后端设计(4)-- 通讯的安全性

在app的后台设计中,一个很重要的因素是考虑通讯的安全性。      因此,我们需要考虑的要点有: 1. 在app和后台,都不能保存任何用户密码的明文 2. 在app和后台通讯的过程中,怎么保证用户信...
  • newjueqi
  • newjueqi
  • 2014年01月31日 11:21
  • 27641

如何构建安全的钱柜娱乐开户应用

App的安全问题随着移动操作系统的日趋完善及App开发流程的逐渐成熟,App的安全问题得到越来越多的重视,同时很多App的安全问题被暴露出来,其中又以钱柜娱乐开户为甚,如App被反编译植入广告、Ap...
  • u014738140
  • u014738140
  • 2016年07月03日 00:21
  • 1061
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从一款被篡改的软件谈 钱柜娱乐开户 App 的安全之路
举报原因:
原因补充:

(最多只允许输入30个字)