IoT 移动应用漏洞利用

导师某天又丢了一个整理好框架的 PPT,道“框架我已经帮你做好啦,你只需要实现每部分内容即可”,好吧接下去边查边做。


文章目录

  • IoT 移动应用漏洞利用
  • 前言
  • 一、简介
  • 二、获取 IoT 移动应用
    • 1.前言
    • 2.测试流程
  • 三、反编译 Android 应用
    • 1.前言
    • 2.测试流程
  • 四、基于 MobSF 框架的静态分析
    • 1.前言
    • 2.测试流程
  • 五、Android 数据存储分析
    • 1.前言
    • 2.测试流程
  • 总结

前言

对于消费级以及部分商用 loT设备来说,通常都会提供与设备配套的移动应用来实现某些操作功能。例如,在车辆管理基础设施中,可以通过移动应用向服务器提交分析数据,也可以授权移动应用启动汽车引擎。在这些情况下,数据一般都会存储在移动应用当中,这就可能导致数据被攻击者利用继而执行非法操作。在开始针对移动应用的分析之前,测试人员首先需要获得该应用,随后才可以着手对其进行静态分析或者动态分析,如果条件具备的话,还可以重新将应用打包。本部分重点关注移动应用中常见漏洞的利用,进而评估 loT 设备移动应用的安全性。


一、简介

针对移动应用的安全性测试可以分为以下4个阶段:

• 应用映射(application mapping):应用映射主要涉及应用逻辑与应用的业务功能。可以将应用映射看作是针对应用的信息搜集,搜集到的信息在下一阶段中将会用到。
• 客户端攻击(client-side attack):客户端攻击主要涉及存储在应用中的数据,以及如何从客户端对应用中存储的数据进行操作。
• 网络攻击(network attack):网络攻击则主要同网络层的安全隐患有关,例如是否采用了 SSL/TLS 协议,是否泄露了 XMPP 协议数据等。
• 服务端攻击(server attack):服务端攻击指的是在 API 测试中暴露出的 API 漏洞以及后端服务器配置错误。

常见漏洞包括:

• 硬编码的敏感信息。
• 冗余的日志信息。
• 会话管理漏洞。
• 敏感数据缓存。
• 不安全的数据存储。
• 数据泄露。
• API 通信。

这些常见漏洞固然同应用类型(本地应用或混合应用)有关,也有可能是采用了不安全的编码方式所导致。在本部分中,我们将在 Android 平台下对上面提及的大多数常见漏洞展开介绍。为简单起见,首先介绍移动应用的静态分析。而在对 loT 移动应用开展测试之前,首先需要获得该移动应用的二进制文件。


二、获取 IoT 移动应用

1.前言

对loT移动应用开展测试之前,首先需要获得该移动应用的二进制文件。在 Android 平台中,二进制文件或者程序包(package) —般称之为 Android 包或 APK 文件,而 iOS 平台中的二进制文件则称之为IPA (iOS App Store Package Archive)文件。

如果有机会从白盒测试角度对应用开展测试,那么甲方会直接将应用的原始二进制文件交给测试人员,此时测试人员也就没有必要绞尽脑汁来获取应用的二进制文件了。而如果出于研究目的从黑盒测试角度开展测试,那么就要好好想想怎样才能获取到应用的二进制文件了。

另外,对于 iOS 系统,获得开展黑盒测试所需的 IPA 文件就没那么简单了。同 Android 应用相比,iOS 应用没有类似的第三方应用商店可供选择。这是因为 iOS 应用均采用了苹果的 FairPlay DRM 算法进行加密。而如果没有解密工具,分析工作将具有一定的难度。

所以这篇文章是基于 Android 平台实现测试的。

2.测试流程

  1. 下载安卓 APK 文件
    如果需要下载 Android 应用,用户只需要选择一个第三方应用商店,例如 https://apps.evozi.com或https:// apkpure.com,然后搜索目标应用,接着下载其 APK 文件即可,如图所示是在 https://apps.evozi.com 下载 Subaru 这款应用的 APK:

三、反编译 Android 应用

1.前言

在获得了目标 IoT 应用的 APK 文件之后,就可以对其进行反编译查看文件内容了。对于 Android 应用而言,这个过程可能只需要几分钟就可以完成。
这部分将会用到 Enjarify 和 JD-GUI 两款工具对 Android 应用进行反编译。Enjarify 能够将 Dalvik 字节码转换为 Java 字节码,随后釆用 JD-GUI 对 Java 字节码开展进一步分析。JD- GUI 是一款用于分析 Java 代码的 Java 反编译器。以上两款工具均可在附带的虚拟机中找到:
Enjarify 可以从 GitHub 代码库中下载:https://github.com/google/enjarify
Enjarify 的运行需要安装 Python3
JD-GUI 也可以从 GitHub 代码库中下载:https://github.com/java-decompiler/jd-gui/releases

2.测试流程

  1. 准备 Enjarify
    ① 从 GitHub 上下载 enjarify-master zip,解压,解压后文件夹内容如图:

    ② 接着将 enjarify-master 文件夹路径加入环境变量:

    ③ 注意:需要转换的 APK 文件和 enjarify-master 文件夹在同一路径下,打开 cmd ,进入到 enjarify-master 文件夹中,使用图片上的命令即可转换成功,转换后的 jar 文件会保存到 enjarify-master 文件夹中:
  2. 准备 JD-GUI
    ① 从 GitHub 上下载 JD-GUI zip,解压,解压后文件夹内容如图:

    ② 双击 jd-gui.exe,打开后将 enjarify 运行产生的 jar 文件拖进 jd-gui 窗口内即可:

    ③ 经 JD-GUI 处理后,Java 类就转换成了便于读取和理解的形式,方便了进一步的分析。以图为例,由于 rawQuery 方法的作用是将数据保存到 SQLite 数据库,因此可以在代码中使用 rawQuery 方法,进而检测 SQL 注入攻击。其他搜索时经常用到的关键字还包括 keys、execSQL 以及 password 等。

四、基于 MobSF 框架的静态分析

1.前言

在获得了 Android 平台下应用的二进制文件后,我们可以采用自动化方法对其开展进一步的分析。此时会用到移动安全测试框架(MobSF), MobSF 是一款可以用于分析 Android 和 iOS 应用的开源工具,该工具采用 Python 语言开发。MobSF 提供了很多自动化分析功能,尤其适用于 Android 应用。

由于 MobSF 会持续进行更新,所以也可以通过链接 https://github.com/MobSF/Mobile-Security-Framework-MobSF 下载最新版本。同时还需要安装在 MobSF 文档中列岀的依赖库。
在开始分析之前,请确保已经获得了目标应用的 APK 文件和已解密的 iOS IPA 文件。MobSF 不会自动对 iOS 应用进行解密。
此处测试用例依然采用 Android 平台。

2.测试流程

  1. 准备 MobSF
    ① 从 GitHub 上下载 MobSF zip,解压,解压后文件夹内容如图:

    ② 打开 cmd,进入 MobSF 文件夹路径下,输入命令 python manage.py runserver 运行

    此时浏览器会出现 MobSF 的 Web 界面,地址为 127.0.0.1:8000

  2. 静态分析(这部分我没尝试成功,中途 APK 文件出错了,还在找解决办法,先贴一下书上的图)
    ① 将目标应用的 APK 文件拖到 MobSF 的 Web 界面中,此时 MobSF 会自动对应用反编译并分析其中内容。界面中列出了 Android 的核心组件(ACTIVITIES‘SERVICES‘RECEIVERS和PROVIDERS)以及相关的元数据:

    ② 当向下滚动页面时,MobSF 会显示所分析应用的权限、Android API 的用法、,以及很多其他有用的静态分析特性。此部分重点关注的、可能也是最有用的内容是代码分析(Code Analysis)部分。 如图所示,MobSF 已经将不安全的编码实践和存在潜在漏洞的代码片段标记了出来:

    ③ 其中一个使用和查找起来最方便的项是 Files may contain hardcoded sensitive infor mation like usernames, passwords, keys etc,即可能包含有硬编码敏感信息(如用户名、口 令、密钥等)的文件。如图是 MobSF 的一个标记示例,MobSF 标记出了应用中可能包含硬编码数据的 Java 类:

    在移动应用中,常常会找到硬编码的OAuth属性值client_secret和云服务提供商 API账户的认证信息。


五、Android 数据存储分析

1.前言

针对 Android 的数据存储开展运行时测试可以采用多种方法。而且,无论是免费的还是商业版工具都可以自动浏览常见数据存储位置,并且还可以调整浏览时的数据存储位置。在手工分析中,我们主要对以下应用运行时常见的存储位置予以重点关注:

/data/data/<package_name>/
/data/data/<package_name>/databases
/data/data/<package_name>/shared_prefs
/data/data<package_name>/files/<dbfilename>.realm
/data/data/<package name>/app_webview/
/sdcard/Android/data/<package_name>

需要准备:
已获得 root 权限的 Android 设备(启用 USB 调试模式)或已获得 root 权限的 Android 仿真器。
Android debug bridge (ADB):可以在配套的虚拟机中找到 ADB,也可以通过 URL 链接 https://www.androiddevtools.cn/ 手工安装。
安装参考链接:https://www.cnblogs.com/nebie/p/9145627.html

另:我安装最新的 Android R、Android 10、Android 9都出错了,按照大佬方法https://blog.csdn.net/yongchengphy/article/details/80458639 安装了 Android 5.1.1 才成功。(3 月 9 日尝试了 Android 7 版本也能启动,但未发现下文所述存在数据明文存储的问题)

2.测试流程

  1. 启动安卓模拟器后,打开 cmd,输入如图命令,确保分析主机已同 Android 测试设备或仿真器建立了连接:
  2. 连接 Android 测试设备的 Console 口,并使用以下 adb 命令切换到 root 用户模式:
  3. 回到安卓模拟器,打开拨号界面,随意输入一个电话号码并存储:
  4. 然后输入命令 cd com.android.dialer 进入拨号 app 的文件夹,再 cd databases 进入拨号 app 的数据库,最后 cat dialer.db,发现了明文存储的用户名和手机号:



总结

本次用来测试的安卓模拟器版本有点老了,如果是新版本可能会有不一样的情况。(3月10更新,使用了7.0版本的Android模拟器没发现明文存储这个问题,可能被修复了)


IoT 移动应用漏洞利用相关推荐

  1. 安全学习概览——恶意软件分析、web渗透、漏洞利用和挖掘、内网渗透、IoT安全分析、区块链、黑灰产对抗...

    1 基础知识 1.1 网络 熟悉常见网络协议: https://www.ietf.org/standards/rfcs/ 1.2 操作系统 1.3 编程 2 恶意软件分析 2.1 分类 2.1.1 木 ...

  2. 基于BLE的IoT智能灯泡的安全漏洞利用

    前言 目前物联网和智能设备已经日益普及,并且当我们谈论物联网时,首先想到的往往是智能家居.智能家居通常涉及各种设备,包括智能冰箱.智能灯泡.电源适配器.水壶.烤面包机.蛋盘,等等. 在这篇文章中,我们 ...

  3. Botnet趋势漏洞利用状况分析

    执行摘要 在过去的一年中,世界遭受了新冠疫情的袭击,生产生活受到了极大的影响.但在网络世界中,僵 尸网络作为多年来的主要威胁形式之一,并未受到疫情的影响,反而更加活.今年,绿盟科技和国家 互联网 应急 ...

  4. 2022CTF培训(十一)IOT 相关 CVE 漏洞分析

    附件下载链接 D-Link DIR-823G 固件全系统仿真 2022CTF培训(十)IOT 相关 CVE 漏洞分析 是采用 qemu-user 对个别程序进行仿真,而对于完整的仿真需要使用 qemu ...

  5. 网安大事件丨Fortinet对Apache Log4j漏洞利用的全面复盘与防御

    起底Apache Log4j漏洞: 如何出现.如何被利用与如何防御 受影响平台: 任何使用Log4j2漏洞版本的应用程序和服务 受影响用户: 任何使用Log4j的具备该漏洞版本的组织 影响: 远程攻击 ...

  6. 行走的漏洞利用机器人:僵尸网络病毒携71个EXP占领高地

    前言 僵尸网络 Botnet 是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而在控制者和被感染主机之间所形成的一个可一对多控制的网络. 攻击者通过各种途径传播僵尸程序感染互联 ...

  7. 物联网僵尸网络Gafgyt家族与物联网设备后门漏洞利用

    一.病毒介绍 Gafgyt(又称BASHLITE,Qbot,Lizkebab,LizardStresser)是一款基于IRC协议的物联网僵尸网络程序,主要用于发起DDoS攻击.它可以利用内置的用户名. ...

  8. CORS漏洞利用检测和利用方式

    CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,不同于古老的jsonp只能get请求. 检测方式: 1.curl访 ...

  9. 流行漏洞利用工具包瞄准Flash、Java和IE

    Digital Shadows研究了"In the Business of Exploitation"中22个漏洞利用工具包,发现共有76个被瞄准的漏洞.最常被利用的软件应该不会太 ...

最新文章

  1. CF 1029E Tree with Small Distances
  2. 为什么蚂蚁永远不会堵车?
  3. datetime 取分钟_如何仅从DateTime获取小时和分钟
  4. 【数据结构】八大数据结构分类
  5. 《研磨设计模式》chap25 访问者模式Visitor(3)联合组合模式+总结
  6. Python代码实现飞机大战(经典)
  7. SAP UI5 requireBusyDialog
  8. 封装js千分位加逗号和删除逗号
  9. Breadth-first Search(广度优先搜索)专题1
  10. iOS AutoLayout使用技巧
  11. 《零基础》MySQL UPDATE 更新(十四)
  12. sql跟踪 oracle,oracle SQL语句跟踪详解
  13. css使两个盒子并列_前端学习CSS
  14. 常用Java编程软件有哪些
  15. workstation服务重启后自动停止,需要手动启动,解决方案
  16. linux查看文件夹大小命令
  17. java对字符串集合按字符串长度排序
  18. 计算机网络故障提出问题,列控系统及其计算机网络的故障诊断与故障容错研究...
  19. 物联网卡的6个应用案例全面解析
  20. Win32gui 无效窗口句柄

热门文章

  1. 1.什么是WebDAV
  2. 【C语言】计算调和函数前100项
  3. cvpr 注意力机制_计算机视觉中的注意力机制总结
  4. Swagger 3 的基本使用
  5. Codeforces Round #839 (Div. 3) (D,E)
  6. 看完这些自动化测试面试题,字节直接给我发offer
  7. 【BZOJ2687】交与并
  8. Intel ,SST,AMD,MXIC系列NOR FLASH芯片比较
  9. android 方法拦截器,Android的OkHttp包中的HTTP拦截器Interceptor用法示例
  10. WINDOWS系统的正确安装-硬盘格式如何选择