导航菜单
首页 » 问答 » 正文

从一款被篡改的软件谈 Android App 的安全之路

4.数据安全

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

5. 系统安全

系统库安全

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

上面图片就是 的漏洞。

6. 一款被篡改的 apk

恶意 APP 分析:

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

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

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

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

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

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

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

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

7. APK 保护措施

APK 完整性检验

代码隐藏

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

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

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

APK 混淆就是加上代码。

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

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

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

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

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

评论(0)

二维码