PwnAuth——一个可以揭露OAuth滥用的利器

简介: 一、简介鱼叉式网络钓鱼攻击被视为企业最大的网络威胁之一。只需要一名员工输入自己的凭证或运行一些恶意软件,整个企业都会受到威胁。因此,公司投入大量资源来防止凭证收集和有效载荷驱动的社会工程攻击。然而,对于非传统但却同样危险的社会工程——OAuth滥用却没有给予足够重视。

一、简介

鱼叉式网络钓鱼攻击被视为企业最大的网络威胁之一。只需要一名员工输入自己的凭证或运行一些恶意软件,整个企业都会受到威胁。因此,公司投入大量资源来防止凭证收集和有效载荷驱动的社会工程攻击。然而,对于非传统但却同样危险的社会工程——OAuth滥用却没有给予足够重视。在OAuth滥用攻击中,受害者授权第三方应用程序访问其帐户。一旦获得授权,应用程序不需要凭证就可以访问用户的数据,并绕过可能存在的任何双因素身份验证。

今天,我发布了PwnAuth,这是一个让组织和渗透测试人员测试其检测和响应OAuth滥用社会工程活动能力的平台。在发布该工具时,我们希望提高对这种威胁的认识,提高安全社区检测它的能力,并为防御者提供对策。

转到我们的GitHub开始使用PwnAuth

二、何为OAuth

OAuth 2.0被描述为“一种开放的协议,允许从Web、移动和桌面应用程序以简单标准的方法进行安全授权……”它已成为诸如亚马逊,Google,Facebook和微软等主要互联网公司的事实协议,使用它来方便第三方应用程序访问用户数据。访问Microsoft OneDrive轻松进行文件共享的应用程序就是一个利用OAuth的应用程序示例。

我们以访问OneDrive的应用程序为例,在OAuth授权流程中定义一些角色:

应用程序——客户端

请求访问的第三方应用程序。在本例中,访问OneDrive文件的应用程序是“客户端”。

API——资源

客户端希望访问的目标应用程序。在本例中,Microsoft OneDrive API 终端是资源。

资源拥有者

允许访问其部分帐户的人员。在本例中,就是你。

授权服务器

授权服务器提供资源所有者用来同意或拒绝的接口。服务器可以与API资源相同,或者是另一个不同的组件。在本例中,Microsoft登录门户是“授权服务器”。

范围

范围定义为第三方应用程序请求的访问类型。大多数API资源将定义应用程序可以请求的一组范围。这与Android手机应用程序在安装时请求的权限类似。在本例中,应用程序可能会请求访问OneDrive文件和用户配置文件。

OAuth 2.0提供了几种不同的授权“权限类型”,以适应用户及与之交互的不同应用程序。为了本文的目的,我们对“授权代码”权限类型感兴趣,该权限类型由实现OAuth的Web应用程序使用。以下是授权流程示例:

1.创建一个“同意”链接,以应用程序的标识和请求的作用域为参数,指示资源所有者访问授权服务器。

https://login.microsoftonline.com/auth
?response_type=code
&client_id=123456789
&redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback
&scope=mail.read+offline_access

2.资源所有者将收到授权提示,说明应用程序名称和请求的范围。资源所有者可以选择同意或拒绝此授权请求。

3.同意后,授权服务器将使用授权码重定向应用程序。

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
   
{
"access_token":"aMQe28fhjad8fasdf",
"token_type":"bearer",
"expires_in":3600,
"refresh_token":"OWWGE3YmIwOGYzYTlmM2YxNmMDFkNTVk",
"scope":"mail.read+offline_access"
}

4.然后应用程序可以使用授权码并从授权服务器请求访问令牌。访问令牌可以在设定的时间段内使用,从API资源访问用户的数据,而无需资源所有者采取任何进一步的行动。

三、滥用漫延

OAuth应用程序提供了一个理想的载体,攻击者可以通过它攻击目标并获取电子邮件、联系人和文件等机密数据。攻击者可能会创建恶意应用程序,并使用获取的访问令牌通过API资源获取受害者的帐户数据。访问令牌不需要知道用户的密码,并能绕过双因素认证。此外,删除攻击者访问权的唯一方法是显式撤销对OAuth应用程序的访问。为了获得OAuth令牌,攻击者需要通过社会工程说服受害者点击“同意链接”并同意该应用程序。由于所有受害者交互都位于合法资源提供者(例如Microsoft)拥有的网站上,因此未经训练的用户很难区分合法的OAuth应用程序和恶意应用程序。

虽然可能不是此类活动的首例,但在2016年总统选举期间OAuth滥用首先引起了媒体的关注。FireEye在M-TRENDS 2017 report中介绍了APT28滥用OAuth,获取美国政客的电子邮件。从那以后,FireEye已经看到这种技术已经蔓延到寻求在Gmail中传播的商品蠕虫。

四、PwnAuth

PwnAuth是我写的一个Web应用程序框架,它使企业更容易测试其检测和响应OAuth滥用活动的能力。Web应用程序为渗透测试人员提供了一个易于使用的UI,管理恶意OAuth应用程序、存储收集的OAuth令牌以及与API资源进行交互。通过创建其他模块,应用程序用户界面和框架可以很容易地扩展到其他API资源。虽然任何允许OAuth应用程序的云环境都可以成为目标,但是PwnAuth目前使用一个模块来支持恶意Office 365应用程序,捕获OAuth令牌并使用捕获的令牌与Microsoft Graph API进行交互。Office 365模块本身可以进一步扩展,但目前提供以下功能:

· 阅读邮件

· 搜索用户的邮箱

· 读取用户的联系人

· 下载消息和附件

· 搜索OneDrive并下载文件

· 代表用户发送消息

界面设计很直观和友好。使用PwnAuth的第一步是创建一个Microsoft应用程序。这些信息必须输入到PwnAuth(图1)。

PwnAuth一个可以揭露OAuth滥用的利器

图1:将一个Microsoft App导入PwnAuth

配置完成后,可以使用生成的“授权URL”对潜在受害者进行钓鱼。点击后,PwnAuth将捕获受害者OAuth令牌供以后使用。图2显示的是一个受害者的列表。

PwnAuth一个可以揭露OAuth滥用的利器

图2:在PwnAuth中列出受害用户

一旦PwnAuth捕获了受害者的OAuth令牌,就可以开始访问他们的数据。例如,使用PwnAuth向受害者的邮箱查询包含字符串“password”的所有消息(图3)。

PwnAuth一个可以揭露OAuth滥用的利器

图3:搜索受害者的邮箱

有关使用的更多信息,请参阅GitHub wiki 。

五、缓解措施

FireEye的技术包括基于网络的签名以检测潜在的恶意OAuth许可URL。攻击者倾向于将某些范围包含在可检测到并标记的恶意应用程序中。社会工程培训的机构可以将OAuth滥用情况添加到其现有计划中,以更好地向用户介绍此攻击向量。此外,企业可以采取措施来限制恶意OAuth应用程序的潜在影响并提高其检测功能。依据API资源,企业可用的选项差异很大,但通常包括:

· 限制第三方应用程序可以请求的API范围。

· 在企业中禁用第三方应用具有Cloud App Security的组织可以利用“应用程序权限”功能查询和阻止第三方应用程序。。

· 为应用程序实施白名单或黑名单。

· 对所有同意的应用程序查询企业的用户。

· 记录所有用户同意事件并报告可疑活动。

Office 365特别为管理员提供了一些选项:

· 拥有Cloud App Security的企业可以利用“应用程序权限”功能查询和阻止第三方应用程序。

· 管理员可以阻止对第三方应用程序的访问。

· 管理员可以采取行动,如果他们认为恶意应用程序被授予访问帐户的权限。

· 统一审计日志记录用户何时同意第三方应用程序;但是,特定范围和应用程序信息未记录在日志中。

我创建了一组脚本来帮助管理员在云环境中搜索恶意OAuth应用程序。目前有一个脚本可以调查Office 365占用者并计划添加其他云环境。

六、总结

OAuth滥用攻击是一种危险且非传统的网络钓鱼技术,攻击者可利用此技术获取企业的机密数据。随着人们将更多服务迁移到云中,企业应小心锁定第三方应用程序的访问权限,并确保其监控和检测策略涵盖应用程序许可授予。企业和安全专业人员可以使用PwnAuth来测试他们检测和响应这种新型攻击的能力。

目录
相关文章
|
3月前
|
安全 API 开发者
惊!Python开发者必看:OAuth与JWT授权机制的惊天秘密😱
【8月更文挑战第4天】在现代软件开发中,尤其在Web和移动应用领域,用户认证与授权至关重要。对Python开发者来说,OAuth与JWT是两大利器,能显著提高应用的安全性并优化用户体验。OAuth通过“授权而非认证”的理念,安全地让用户授予第三方应用访问权限;JWT则是一种自包含的令牌格式,确保信息的安全传输。二者结合使用,可以构建坚固的认证体系。掌握这些核心技术,让您的应用更安全、更高效。
38 1
|
2月前
|
监控 安全 网络安全
解锁Micronaut安全秘籍:一剑封喉,让你的微服务无懈可击,抵御黑客侵袭的终极防护罩!
【9月更文挑战第10天】Micronaut作为高性能、轻量级的云原生Java框架,在微服务开发中备受青睐。本文详细探讨了Micronaut的安全特性,包括认证与授权、通讯加密、服务注册与发现、防火墙与反向代理及日志与监控等,通过示例代码展示了如何配置JWT验证,确保服务间安全通信,增强系统可靠性,并及时发现潜在安全问题。
55 5
|
6月前
|
存储 安全 搜索推荐
解析商业电子邮件泄露:深度剖析攻击的含义
商业电子邮件泄露(BEC)攻击是精心策划的网络诈骗,通过假冒高管或供应商诱导受害者转账。例子包括谷歌和脸书被骗走1.21亿美元,丰田子公司损失3700万美元。BEC不仅导致财务损失,还损害企业声誉,影响员工信任和士气。防止措施至关重要,因为一旦中招,可能面临法律和经济双重打击。
76 1
|
6月前
|
机器学习/深度学习 人工智能 安全
【亮剑】无密码身份验证的概念,它通过生物识别、安全令牌等替代技术验证身份,旨在提高安全性和用户体验。
【4月更文挑战第30天】本文探讨了无密码身份验证的概念,它通过生物识别、安全令牌等替代技术验证身份,旨在提高安全性和用户体验。无密码验证简化登录、增强安全性,但也面临实施成本、技术兼容性和用户适应性的挑战。随着技术发展,无密码验证有望成为更广泛的安全认证方式,但实施时需综合考虑多种因素。
111 0
|
存储 安全 JavaScript
实战漏洞挖掘-csrf+存储selfxss漏洞组合拳
前一阵子在疯狂学习,看了很多文章,也学习到了不少,所以也尝试着去挖一挖洞,把学习到的思路引入到实际中。在挖某网站的时候,发现了一枚CSRF+存储型selfxss的漏洞组合拳成功打到cookie。
198 0
|
存储 安全 数据安全/隐私保护
常识二Oauth2.0介绍及安全防范
oAuth是Open Authorization的简写 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
355 0
常识二Oauth2.0介绍及安全防范
|
API 数据安全/隐私保护
图文+代码讲解带你攻克OAuth 2.0授权流程的三座大山(上)
图文+代码讲解带你攻克OAuth 2.0授权流程的三座大山
128 0
图文+代码讲解带你攻克OAuth 2.0授权流程的三座大山(上)
|
前端开发 JavaScript
图文+代码讲解带你攻克OAuth 2.0授权流程的三座大山(下)
图文+代码讲解带你攻克OAuth 2.0授权流程的三座大山
141 0
图文+代码讲解带你攻克OAuth 2.0授权流程的三座大山(下)
|
安全 网络安全 数据安全/隐私保护
iOS开发如何避免安全隐患
现在很多iOS的app没有做任何的安全防范措施,导致存在很多安全隐患和事故,今天我们就聊聊iOS开发人员平时怎么做才更安全。
|
存储 安全 Android开发
安卓应用安全指南 5.5.3 处理隐私数据 高级话题
5.5.3 处理隐私数据 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 5.3.3.1 隐私政策的背景和上下文 对于智能手机应用获取用户数据,并向外传输该数据的情况,需要准备并显示应用隐私策略,来通知用户一些详细信息,例如收集的数据类型,以及数据被处理的方式。
1251 0
下一篇
无影云桌面