iOS应用程序的请求和响应

介绍

我们都准备从监视和分析应用程序与服务器之间的通信开始。 在完成流量分析的设置之后,我们将不再等待开始。 请参阅上一篇文章,以获取有关设置Burp Suite的帮助。

关于HTTP的简介

HTTP是Internet的语言。 正如我们与人交流一样,iOS应用程序也与应用程序服务器进行交流。 一个简单的区别是,一个人只能提出问题(请求),而另一个人只能回答那些问题(请求)。 所有这些通信都必须使用共同商定的语言(HTTP)进行。 让我们直接了解我们所要求和回应的意思。

资料来源: http : //www.steves-internet-guide.com/http-basics/

上图显示了应用程序发送到服务器的HTTP请求的典型格式以及作为响应收到的响应。 响应由应用程序分析,必要的行为会在UI上向用户显示内容。

要了解有关HTTP基础知识的信息,请参阅 http://www.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_Basics.html。

移动应用程序的典型工作流程

这些天,其他所有移动应用程序都遵循如下所述的工作流程:

  • 登录前屏幕 —这些信息可能包括诸如搜索页面,关于页面,联系页面,注册页面等信息。
  • 登录屏幕 -应用程序可以向用户提供任何数量或类型的登录过程。 最常见的登录过程使用手机号码,电子邮件地址或用户ID,并将其与单点登录密码,OTP或任何其他参数结合在一起以标识用户。
  • 应用程序功能 -包括应用程序为其最终用户提供的主要功能。 它可能涉及交易,社交网络,电子商务等。
  • 注销功能 -应用程序还可以提供可选的注销或类似功能,以结束用户在移动设备上的会话。
  • 恢复功能 -此功能对于开发人员也是可选的。 它可能被标记为忘记密码或任何其他类似的名称。

识别请求和响应参数

一旦了解了目标应用程序的工作流程,我们就可以推动自己揭开应用程序工作流程背后的秘密。 “秘密”是指使功能成为可能的请求的输入和输出。 用技术术语来说,这些“秘密”被称为参数。 因此,我们有请求参数和响应参数。

典型的请求参数可能是以下之一:

  • PATH参数 :它们出现在URL本身中。 考虑下面的请求行。

GET / api / profile / users / 2 HTTP / 1.1

这里的“ 2”是PATH参数。

  • QUERY参数 :它们与请求的服务器资源的URL一起发送。 ‘?’之后的所有键 GET参数位于以“&”分隔的“ HTTP / 1.1”之前。
  • HEADER参数 :它们与其他HTTP标头一起发送。 它们可能包括cookie或任何其他自定义标题。

在上面的请求中,我们可以看到QUERY和HEADER参数。 查询参数包括“用户名”,“ user_id”等,标头参数包括“ oauth_consumer_key”,“ oauth_token”等。

  • BODY参数 :它们在请求的正文中发送。 它们根据请求参数中设置的内容类型而有所不同。

在上述要求中,“令牌”是一个JSON编码的BODY参数。

攻击者所做的只是对HTTP和参数的了解。 它们修改请求或响应参数的方式可以根据其要求更改应用程序的功能,如果存在漏洞,则可以成功。

开发测试方法

安全专业人员倾向于开发自己的测试方法。 大多数使用的方法使用以下策略:

  • GET –这是流量分析的探索阶段。 我们探索应用程序,获取请求并将它们映射到它们被用于的目的。
  • 测试 –在此,我们接受单个请求,并在其所有插入点(即参数)上对其进行测试。 我们对可疑参数进行重复分析,以找出该URL参数组合中的漏洞。
  • 攻击 –在这里,我们使用自动化工具来根据请求的可疑参数尝试一组有效负载。
  • 构建 –在某些情况下,我们可能希望通过连续使用两个或多个请求来触发行为。 同样,有时我们可能需要一些帮助来创建请求或以某种方式花费一些时间来篡改某些响应,而这需要手动完成。 在这些情况下,我们将使用以编程语言(例如Python,Ruby,Java等)编写的脚本或与Burp集成(称为Burp Extenders)的帮助。
  • BREAK –我们可能需要测试一些有效负载,并查看应用程序的行为。 因此,我们将有效负载注入到实时请求中,并观察其响应在设备上的行为。

我们可以随意组合使用这些策略,也可以根据自己的喜好开发自己的方法。

将请求/响应复制到正确的工具

Burp的工具之间的交互是如此出色,以至于使请求在工具之间流动非常简单而有效。 Burp提供的选项使我们能够非常轻松地使用这些工具,因此我们进行测试不会有太大麻烦。 让我们创建一些方案。

中继器测试

在以下情况下,需要在Repeater工具上进行测试:

  • 我们希望手动测试可疑参数,并反复找出服务器如何响应这些有效负载。
  • 我们想要测试一些请求,然后将其响应实际转发到设备

当您希望测试保留在Burp的项目中并且可以在重新打开项目时再次用于测试时,Repeater是一个非常有用的工具。

考虑此处显示的请求。

我们观察到一些我们要测试的QUERY参数,以观察服务器的响应以及接收响应之前所经过的时间。 为此,我们只需将请求发送到中继器即可,如下所示。

然后,可以如图所示在Repeater工具中操纵并播放该请求。

入侵者测试

在以下情况下,需要在入侵者工具上进行测试:

  • 需要观察服务器对响应于请求的相当大的负载列表的响应。
  • 将对枚举或蛮力进行概念验证。
  • 缺少请求限制器将受到测试。

此工具的请求或攻击不会持久存在于项目中,并且在重新启动项目时会被删除。 假设我们需要了解服务器在以下请求中对参数user_id的更改的响应。

我们会将请求发送到Intruder,根据我们的要求进行配置,然后按如下所示开始攻击。

然后我们的工作就是使用提供的过滤器来分析响应。

音序器测试

定序器用于验证参数值的随机性,并提供相同的证明。 如图所示,可以将请求发送到Sequencer。

然后,您可以手动提供令牌,也可以通过指定令牌的出现来自动生成令牌,如下所示。

除了遵守Burp的报告作为我们的投入外,我们别无其他。

注意 :故意选择测试实例具有较小的随机性。

比较器测试

顾名思义,比较器工具旨在比较(执行视觉上的“差异”)任何两个数据项。 该工具最常见的用途是:

  • 在参数上具有不同有效负载的请求中寻找响应中的细微差别。
  • 比较入侵者攻击的两种不同长度的响应。
  • 比较具有不同角色的用户的站点地图。

其他自动化测试

其余的自动化测试是使用Spider和Scanner工具执行的。

  • Spider用于爬网主机并查找无法直接访问但在某些响应/请求中提到的任何URL。
  • 扫描程序用于主动或被动扫描请求,并报告其中的任何可能漏洞。 扫描程序会根据使用的Burp版本的定义列出请求的漏洞。

结论

在本文中,我们了解了在iOS应用程序上执行流量分析时涉及的请求和响应。 现在,我们可以确定请求和响应中的参数。 接下来,我们将开始安装和使用静态分析中涉及的一些常用工具。