APP渗透测试-渗透-程序员宅基地

技术标签: 安全  渗透测试  

0x01.简介

在移动APP架构中,面临安全威胁的目标主要有三个,它们分别是:移动APP、数据传输和服务端。

0x02.客户端

客户端(移动APP)主要面临的威胁包括反编译、调试、篡改/重打包、输入记录、组件安全、注入和Hook、本地敏感数据泄露等。

1)反编译

对一个软件进行分析可以分为静态分析和动态分析两大部分。反编译是静态分析的一种基础手段。高级编程语言源代码经过编译变成可执行文件,反编译就是其逆过程。通过反编译和逆向,可以在没有软件源码的情况下了解其内部实现细节,进行漏洞挖掘和算法分析等。移动APP测试,常见的测试对象是Android APP和iOS APP,由于应用结构、构建工具链等差异,Android APP和iOS APP的逆向分析、反编译技术方法均不尽相同。常见的反编译工具有IDA Pro及相关Decompiler插件、Radare2 、Ghidra、JD-GUI、Smali/Baksmali、dex2jar、Hopper等等。

2)调试

调试是软硬件开发人员用于排查软件错误的一种手段,也是安全检测人员进行动态分析的一种基本方式。从调试对象来看,调试可分为硬件调试和软件调试。对于移动APP,安全检测工程师一般只需进行软件调试。软件调试又可分为源码级调试和非源码级调试。在获取不到源码的情况下,一般只能先做非源码级调试。通过调试,安全检测工程师可以动态地分析APP内部原理和行为。移动APP检测中,常见的APP调试工具有IDA Pro、GDB、LLDB、ADB、JDB和Cycript等。

3)篡改/重打包

Android和iOS应用在正式发布前需进行数字签名,在安装时系统会对APP签名进行检查,检查通过才能成功安装运行。这可在一定程度上保护APP不被篡改。但由于签名验签机制很多技术都是公开的,被研究的比较透彻,再加上不同平台的签名机制对APP限制程度各不相同,对安全性要求比较高的APP如果只依靠系统层面的签名保护进行防篡改/重打包还远远不够。渗透测试过程中,有时我们为了更好的分析APP,也需要对APP进行修改重打包,然后利用相应平台的工具进行重新签名,最后安装运行。相应的工具有:apktool、apksigner 、signapk、jarsigner和codesign等。

4)输入记录

当APP在不安全的环境中运行时,存在用户输入被记录风险。一般可能通过软硬件键盘输入设备事件或屏幕截取等方式来进行记录。根据对APP不同的安全要求,渗透测试中宜需关注这些风险。

5)组件安全

Android组件包括Activity、Broadcast Receiver、Service和Content Provider。若权限配置不当而导致组件暴露,APP就存在可能被其他应用攻击或劫持风险,进而导致认证被绕过、敏感数据被窃取等。测试过程中,一般可通过对APP进行反编译,查看AndroidManifest文件或直接扫描查找暴露的组件,分析反编译的相关组件代码,查看是否有安全漏洞并进行验证。

6)注入和Hook

注入和Hook都可对目标APP运行时行为进行修改。虽然我们常常将它们放在一起说,但其实它们的实现原理并不相同。

注入是指将一段代码或一个完整的可执行模块加载到目标程序中,而Hook是指通过劫持程序执行流程来改变程序运行行为。不同平台的APP运行框架和机制不同,这也导致它们的注入和Hook方式不同,但都会通过系统或框架提供的相关机制和接口进行操作。测试人员可根据需求寻找Hook点,编写注入或Hook模块。常用的相关工具有libinject、Xposed、Cydia、fishhook和Frida等。

7)本地敏感数据泄露

APP的本地存储数据或运行日志有可能会泄露敏感或非敏感数据。一般测试人员通过泄露的数据,可以去进一步深入理解APP内部原理。测试人员可查看APP本地数据存储(特别是会关注APP是否在公共区域存储了数据)和APP运行日志内容,结合业务场景综合分析是否存在本地敏感数据泄露风险。常用工具adb、RE、SQLite和ifile等。

0x03.数据传输

APP与服务端进行的网络数据传输过程中主要面临的威胁包括数据窃听、数据篡改和数据重放等。

1)数据窃听

若APP和服务端通信过程中未对传输的数据进行机密性保护,数据就有可能会被窃听。例如,很多APP和服务端之间在不安全的传输通道中直接使用的HTTP协议进行通信,若用户名、口令以及其他重要数据未进行加密,这些数据在网络传输中的各个节点就可能会被窃听而泄露。测试人员应根据APP业务场景确认APP的敏感数据、数据传输通道和协议,分析是否存在敏感数据泄露风险。对安全性要求比较高的APP,例如金融类APP,还要分析其加密方式(如果有)是否安全有效。常用工具有Wireshark、Burpsuite、Fiddler和Charles等。

2)数据篡改

若APP和服务端通信过程中未对传输的数据进行完整性保护,数据就有可能会被篡改,使APP更易被结合其他安全漏洞发起攻击。不同的业务场景下,数据篡改带来的风险高低也不同。测试人员可尝试对截取到的数据进行篡改后发送,观察和分析APP或服务端是否可识别出数据被篡改并作出合理反应。对安全性要求比较高的APP,比如金融类APP,还要分析其防篡改方式(如果有)是否安全有效。常用工具有Wireshark、Burpsuite、Fiddler和Charles等。

3)数据重放

重放攻击是指将之前窃听到的数据原封不动地重新发送给接收方。这种攻击通常用于身份认证、交易等过程。例如,对HTTP协议,测试人员可重复发送截取到的请求报文,并观察和分析服务端的反应。常用工具有Wireshark、Burpsuite、Fiddler和Charles等。

0x04.服务端

服务端主要面临的威胁包括不安全的中间件、认证与会话管理、访问控制、注入、应用层拒绝服务、密码算法和密钥管理等。

1)不安全的中间件

服务器为提供完整的服务所使用的各个中间件,由于未及时更新或未启用安全的配置可能引发安全漏洞,导致服务器存在遭受攻击的风险,如IIS文件名解析漏洞、Weblogic反序列化漏洞、SMB远程命令执行漏洞等,攻击者可通过这些漏洞获取服务器敏感信息、执行恶意命令,甚至获取服务器管理员权限。

2)认证与会话管理

服务器提供的身份认证和会话管理机制存在安全漏洞,如系统关键组件或应用使用弱口令,对于高安全级别的系统未采用双因子认证方式,无防止认证口令或验证码暴力破解攻击的机制,未对SessionID的生成、过期和销毁进行安全配置等,攻击者可利用这些漏洞在非授权的情况下登录系统并执行恶意操作。

3)访问控制

开发者未对用户登录系统后的操作进行进一步的访问权限控制,服务端对从客户端收到的对数据进行增、删、改、查询等操作的请求未进行鉴权处理,导致攻击者可执行超出自身账户权限的操作。

4)注入

应用运行时可能需要调用一些向前端写入内容、查询数据或执行系统命令的函数,如果用户能控制这些函数的输入,而开发者未对输入的内容进行严格的过滤,攻击者可以在前端提交恶意构造的输入,进行XSS注入、SQL注入、命令注入等攻击,从而导致服务器重要数据泄露或执行恶意命令。

5)应用层拒绝服务

服务器未对应用的最大连接数或发起请求的IP和频率进行限制,攻击者通过并发大量的请求或构造畸形的数据包,如CC攻击、Slowloris攻击,造成系统资源耗尽,导致服务器拒绝服务。

6)密码算法和密钥管理

应用使用已被证明为不安全的密码算法对重要数据的传输和存储进行加解密,如使用MD5算法对用户口令进行存储,使用DES算法对数据进行加密传输,可能导致攻击者获取密文后短时间内恢复出明文信息;应用使用不安全的方式进行密钥管理,如将系统使用的密钥明文编码在应用代码中或在服务器配置文件中明文存储,将导致攻击者轻易获取数据加解密密钥,进而得到加密数据的明文信息。

0x05.APP渗透测试流程

假设测试人员仅被授权对APP和相关服务端进行渗透。通常包含5个较为重要的环节,分别是:信息收集、网站/服务端渗透、APP功能分析、第三方SDK分析、账号安全和业务安全分析。

信息收集

为达成对服务端的攻击,首先应对服务端进行“定位”。对服务端定位的常用方法有反编译APP、抓包分析、APP相关信息搜索、信息汇总分析等,具体如下:

1)反编译APP

这个过程可能会涉及到对APP进行脱壳等。反编译后,在反编译代码和资源文件中,利用字符串搜索和过滤,搜集所有链接等信息。除HTTP/HTTPS链接外,还应关注是否有FTP、登录凭证(比如邮箱账号,有些APP会发Crash信息等到邮箱)等信息。字符串搜索和过滤可以通过写脚本,或在自动化工具中对扫描规则进行配置等方式来完成。

2)抓包分析

一般移动APP和服务端通信使用HTTP(S),可使用抓包工具对传输数据进行抓包分析。抓包过程中我们可以手动点击APP中各功能菜单,或利用工具触发APP各种功能,通过抓包工具过滤或定制系统等方式尽量排除非受测APP的网络通信数据干扰(有些URL可能是第三方SDK官方地址,非授权渗透测试目标,应予以过滤)。

3)APP相关信息搜索

(1)应通过互联网广泛搜索APP相关信息,若能找到其官网,应将其相关的官网、论坛的链接都搜集整理出来,若授权许可,亦可将其纳入到渗透的目标范围内。

(2)寻找该APP的历史版本,因为若该APP当前版本的安全加固措施做得比较到位,对其进行逆向分析较为复杂,但在某个时间节点前的历史版本可能是未加固的。

(3)可能会有其他意想不到的发现。

4)信息汇总分析

通过对收集到的信息综合筛选分析,形成一个信息集,包括但不限于URL、IP、使用的第三方SDK(下面展开说)等信息。

网站/服务端渗透

这一阶段,与传统的Web渗透过程相同,测试人员通过各种嗅探工具对信息集中的URL、IP进行嗅探和漏扫,以期发现可能存在的漏洞等,并通过发现的漏洞(不管0day还是nday),尝试获取服务器的权限。因本章节重点是介绍如何结合APP做服务端渗透,所以这部分不详细展开。

APP功能分析

在信息收集阶段,测试人员已基本对APP功能有了一些了解,在这一环节,测试人员应实际试用APP,除了试用一些上传下载、聊天、留言等常用功能外,同时还应关注其相对冷门的功能,因为功能越冷门,开发人员对其的关注就越少,相应的服务端服务存在安全问题的可能性就越大。

第三方SDK做分析

在信息收集环节中我们提到若无授权,测试人员不能随便对第三方SDK官网开展渗透测试,那为何还要对第三方SDK开展分析呢?原因是很多第三方SDK客户端和服务端是配套搭建的,有些部署在SDK官方服务端,有些则部署在SDK使用方(也就是APP官方服务端)。许多SDK官方会对其进行详细的说明,包括功能、部署方式、API等等。对于服务端SDK,测试人员可以将其下载下来(若无法探测到服务端版本号,可根据收集到的APP业务上线日期进行推测,并结合经验和已搜集到的信息,从下载的SDK挑选重要的SDK),对其进行历史漏洞搜索(该工作也可在信息收集环节开展)、扫描和分析,也许会发现一些有用的漏洞(0day最好,nday也要试一试,万一没补呢?)。

账号安全和业务安全

这一环节在APP功能分析过程中也可能会涉及,其与渗透获取服务器shell权限可能没太大关系,但其从攻击者的角度来看却非常关键,因为大部分攻击者获取服务器shell权限的目的就是为了获取APP用户的数据或资料,当然也有单纯为了搞破坏和黑客炫技的情况存在。

在这一环节,测试人员要详细分析APP的账号机制和业务逻辑,随着APP官方与黑产对抗的加深,APP的业务逻辑和身份认证机制可能会做的很复杂。同时如果APP是使用用户数量大时间、上线时间比较久,存在账户安全问题(爆破、信息泄露、越权、绑定/换绑逻辑等等)的可能性相对要低很多;同理,越是成熟的业务,存在安全问题的概率就会越低,所以测试人员可以重点关注被测APP中可能存在的冷门或新上线业务。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Arvin_FH/article/details/132454061

智能推荐

开源项目,毕业设计_本科毕业设计拿别人的开源代码修改-程序员宅基地

文章浏览阅读1.5w次,点赞35次,收藏385次。自己在网上找的开源项目,比较好分享给大家热门开源项目(包含小四轴、智能手环、光立方、智能车、防丢器等项目)号外!号外!(搞四轴,有这套就足够了!)科研级别的小四轴STM32F4芯片支持WIFI且android手机控制自适应控制就是牛掰!该飞机面向有科研和强烈学习意向的小伙伴们使用,如果只是想玩的话你肯定不会喜欢这套四轴的,主要设计思想是提供一个高性能的控制和姿态算法验证平台,因此..._本科毕业设计拿别人的开源代码修改

Java快速开发框架_若依——Ruoyi添加自己的业务模块_ruoyi java17-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏26次。QQ 1274510382Wechat JNZ_aming商业联盟 QQ群538250800技术搞事 QQ群599020441解决方案 QQ群152889761加入我们 QQ群649347320共享学习 QQ群674240731纪年科技aming网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。叮叮叮:产品已上线 —>关注 官方-微信公众号——济南纪年信息科技有限公司民生项目:商城加盟/娱乐交友/创业商圈/外包兼职开发-项目发布/安全项目:态势感.._ruoyi java17

CISCO 交换机配置 Web浏览器的方式-程序员宅基地

文章浏览阅读9k次,点赞2次,收藏3次。 当利用Console口为交换机设置好IP地址信息并启用HTTP服务后,即可通过支持JAVA的Web浏览器访问交换机,并可通过Web通过浏览器修 改交换机的各种参数并对交换机进行管理。事实上,通过Web界面,可以对交换机的许多重要参数进行修改和设置,并可实时查看交换机的运行状态。不过在利用 Web浏览器访问交换机之前,应当确认已经做好以下准备工作:·在用于管理的计算机中安装T..._思科交换机2960s有web配置吗

ERROR - file: tracker_proto.c, line: 48, server: 127.0.0.1:22122, response status 2 != 0-程序员宅基地

文章浏览阅读2.5w次,点赞2次,收藏6次。报错信息: [2018-09-09 20:33:12] ERROR - file: tracker_proto.c, line: 48, server: 127.0.0.1:22122, response status 2 != 0 [2018-09-09 20:33:12] ERROR - file: tracker_proto.c, line: 48, server: 127.0.0.1:..._error - file: tracker_proto.c, line: 48, server: 172.17.0.1:22122, response

使用matplotlib显示图片(《深度学习入门:基于Python的理论与实现》实践笔记)_matplotlib展示图片-程序员宅基地

文章浏览阅读3.9k次。使用matplotlib显示图片(《深度学习入门:基于Python的理论与实现》实践笔记)一、安装matplotlib库二、导入matplotlib.pyplot库和matplotlib.image库里的imread函数三、实例:显示图片一、安装matplotlib库在命令行使用下面的命令即可:pip install matplotlib二、导入matplotlib.pyplot库和matplotlib.image库里的imread函数在程序开头使用:import matplotlib.pyp_matplotlib展示图片

Subversion实践案例——客户现场模式的分布式开发_开发去客户现场的案例-程序员宅基地

文章浏览阅读1.2k次。基本信息 用户单位:某应用软件研发企业 用户规模:100人以上 组织过程水平:中等 CMMI评审等级:无 Subversion使用时间:1年 客户需求 由于公司每次向新客户提交软件的时候都需要派出一个小规模的团队到客户现场进行一段时间的软件定制和维护。此外,老客户系统的重大升级和功能扩展也需要一个小团队在客户现场进行一段时间的开发。因此,异地开发的配置管理就是一_开发去客户现场的案例

随便推点

(基于matlab自写代码)语音信号的短时分析,计算平均能量,短时过零数_matlab求语音信号短时过零率的函数-程序员宅基地

文章浏览阅读3.2k次。一定时宽的语音信号,其能量的大小随时间有明显的变化。清音段能量比浊音段小得多。短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上。可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,故对一短时语音段计算其短时平均能量及短时平均过零数,就可以区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。这在语音识别中有重要意义。自己编写的matlab代码,对一段语音,取帧长为240个点,计算其平均能_matlab求语音信号短时过零率的函数

Ubuntu服务器创建新用户及解决新用户登录Access denied问题

默认情况下,在Ubuntu上,sudo组的成员被授予sudo访问权限。如果您希望新创建的用户具有管理权限,需要将将用户添加到sudo组。命令将向你询问一系列的问题。密码是必需的,其他字段都是可选的。最后,输入Y确认信息是否正确。执行完上述步骤后需要重启ssh服务,否则新创建的用户连接服务器时会出现。

项目组织战略管理及组织结构_项目组织的具体形态的是战略管理层-程序员宅基地

文章浏览阅读1.7k次。组织战略是组织实施各级项目管理,包括项目组合管理、项目集管理和项目管理的基础。只有从组织战略的高度来思考,思考各个层次项目管理在组织中的位置,才能够理解各级项目管理在组织战略实施中的作用。同时战略管理也为项目管理提供了具体的目标和依据,各级项目管理都需要与组织的战略保持一致。..._项目组织的具体形态的是战略管理层

图像质量评价及色彩处理_图像颜色质量评价-程序员宅基地

文章浏览阅读1k次。目录基本统计量色彩空间变换亮度变换函数白平衡图像过曝的评价指标多视影像因曝光条件不一而导致色彩差异,人眼可以快速区分影像质量,如何利用图像信息辅助算法判断影像优劣。基本统计量灰度均值方差梯度均值方差梯度幅值直方图图像熵p·log(p)色彩空间变换RGB转单通道灰度图像 mean = 225.7 stddev = 47.5mean = 158.5 stddev = 33.2转灰度梯度域gradMean = -0.0008297 / -0.000157461gr_图像颜色质量评价

MATLAB运用规则,利用辛普森规则进行数值积分-程序员宅基地

文章浏览阅读1.4k次。Simpson's rule for numerical integrationZ = SIMPS(Y) computes an approximation of the integral of Y via the Simpson's method (with unit spacing). To compute the integral for spacing different from one..._matlab利用幸普生计算积分

【AI之路】使用huggingface_hub优雅解决huggingface大模型下载问题-程序员宅基地

文章浏览阅读1.2w次,点赞28次,收藏61次。Hugging face 资源很不错,可是国内下载速度很慢,动则GB的大模型,下载很容易超时,经常下载不成功。很是影响玩AI的信心。经过多次测试,终于搞定了下载,即使超时也可以继续下载。真正实现下载无忧!究竟如何实现?且看本文分解。_huggingface_hub