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

智能推荐

redis6.2 使用 TLS 的部署(三种高可用模式)_redis 6.2版本启用tls认证-程序员宅基地

文章浏览阅读3.5k次。redis6.2 使用 TLS 的部署"三种高可用模式"安装redis6.2 并启用TLS加密安装创建TLS证书编写配置文件systemd管理测试连接redis 主从 配置 tls安装拷贝master 证书 到 slave编写配置文件systemd管理验证主从服务sentinel 哨兵服务创建目录、配置文件systemd管理查看sentinel 状态redis cluster 分片集群TLS安装规划目录及证书编写配置文件创建cluster 集群验证cluster 集群安装redis6.2 并启用TLS加密_redis 6.2版本启用tls认证

Sentinel-2波段合成_sentinel2 数据波段合成-程序员宅基地

文章浏览阅读378次。在上一篇博客中下载了Sentinel-2数据,他有13个波段的.jp2文件,下面选取需要使用的波段进行合成。导入了B2(蓝色)、B3(绿色)、B4(红色)、B8(近红外),直接存为TIFF会丢失坐标信息。最后将合成好的影像存为TIFF。得到下面这些.dat格式。_sentinel2 数据波段合成

【图像融合】基于错误纹理消除和显著特征检测的多模态脑图像融合神经科学前沿2023文献matlab复现-程序员宅基地

文章浏览阅读516次,点赞7次,收藏10次。多模态脑影像融合旨在将来自不同成像方式的脑影像数据进行融合,以获得更全面的信息。然而,由于不同成像方式的图像特性差异较大,直接融合会导致误差纹理和显著特征丢失等问题。本文提出了一种基于误差纹理消除和显著特征检测的多模态脑影像融合方法。该方法首先通过误差纹理消除算法去除融合图像中的误差纹理,然后通过显著特征检测算法提取融合图像中的显著特征,最后将显著特征融合到误差纹理消除后的图像中,得到最终的融合图像。实验结果表明,该方法可以有效消除误差纹理,保留显著特征,获得高质量的融合图像。引言。

python bar3d color_三维散点图colorbar matplotlib Python-程序员宅基地

文章浏览阅读1k次。我无法将颜色条添加到我的三维散点图中,它的颜色范围是根据bifurWidth的值在min和{}之间。我尝试过stackoverflow上显示的各种尝试,但都没有成功。任何帮助都将是非常感谢,因为我在这方面是一个重大的损失。在我最近的一次尝试是从下面的代码中散列出来的。在我的代码:from glob import globfrom pylab import *import numpy as npfr..._bar3d 好看的颜色

7.CSS-交集选择器、并集选择器、兄弟选择器_交集选择器和并集选择器使用方式-程序员宅基地

文章浏览阅读1.7k次。文章目录*交集选择器作用格式注意点并集选择器作用格式注意点相邻兄弟选择器作用格式注意点通用兄弟选择器作用格式注意点*交集选择器作用给所有选择器选中的标签中,相交的那部分设置属性。格式选择器1 选择器2{ 属性:值;}注意点1.选择器和选择器之间没有任何连接符号;2.选择器可以使用标签名称/id名称/class名称;3.仅了解。并集选择器作用给所有选择器选中的标签设置属性。格式选择器1,选择器2{属性:值;}注意点1.并集选择器必须使用,来连接;2.选择器可以使用_交集选择器和并集选择器使用方式

Windows CMD命令大全-程序员宅基地

文章浏览阅读79次。打开cmd快捷键 window键+RCMD命令锦集 1. gpedit.msc-----组策略  2. sndrec32-------录音机  3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。 它在 Windows NT/2000/XP 中均可使用 , 但在 Wi...

随便推点

计算机图形图像处理在教学中的应用,计算机图形图像处理案例教学法运用-程序员宅基地

文章浏览阅读534次。摘要:笔者根据计算机图形图像处理课程与中职学生学习的特点,分析了目前中职学校计算图形图像处理课程教学中存在的问题,针对如何提高中职学生对计算机图形图像处理课程的学习兴趣和解决实际问题的能力,提出了案例教学法在该课程中的具体实施办法,并对其实践进行了进一步的讨论。关键词:计算机图形图像处理;案例教学;中职当今世界电子商务发展迅速,计算机平面设计这门技术在很多领域都得到广泛应用。《Photoshop图..._图像分类在教育中的应用

python资源文件嵌入exe_pyinstaller将资源文件打包进exe中-程序员宅基地

文章浏览阅读921次。在网上看了很多博客,终于找到了符合自己智商可理解的打包资源文件方法,现引用如下https://www.cnblogs.com/darcymei/p/9397173.htmlhttps://blog.csdn.net/sinat_27382047/article/details/81304065"""终于把资源文件加载进去了,就是当exe文件移植后,它运行的时候会产生一个临时文件夹,把资源文件存储到..._pyinstaller如何将_internal添加进exe

H3C模拟器配置vlan-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏7次。Valn 11组网需求• 交换机GE_2上的VLAN 5 和VLAN 10 为Primary VLAN,其上层端口GigabitEthernet1/0/1需要允许VLAN 5 和VLAN 10 的报文携带VLAN Tag 通过。• 交换机GE_2 的下行端口GigabitEthernet1/0/2 允许Secondary VLAN 2 通过,GigabitEthernet1/0/3 允许Sec..._新华3模拟器vlan配置

img撑满全屏的方法(img非背景图)_img 铺满-程序员宅基地

文章浏览阅读4.7w次,点赞8次,收藏15次。我有一个模板,想按常规做一个div里面放置一个img图片,并且让图片铺满容器,自适应容器大小。HTML结构代码如下(在这个盒模型上,我已经放置了一些不重要的样式)。div style="height:270px;width:400px;border:2px black solid;"> a href="http://www.paipk.com">img src="..." alt="拍_img 铺满

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 5: invalid start byte_ebpf bcc unicodedecodeerror: 'utf-8' codec can't d-程序员宅基地

文章浏览阅读947次。UnicodeDecodeError: 'gbk' codec can't decode byte 0xfa in position 4669: illegal multibyte sequenceUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 5: invalid start bytewith open('进线汇总20201211.csv',encoding='utf8') as f: t = f._ebpf bcc unicodedecodeerror: 'utf-8' codec can't decode byte 0xb0 in positio

使用条件序列GAN改进NMT_improving neural machine translation with conditio-程序员宅基地

文章浏览阅读1.3k次。使用条件序列GAN改进NMT原文《Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets》课程作业,因为要导出pdf所以粘贴到CSDN了,34章是笔者翻译的部分。当一篇post吧,求别喷,有问题请留言我一定改,一定改。摘要本文提出了一种将GANs应用于NMT领域的方..._improving neural machine translation with conditional sequence generative ad