前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >案例分析:利用OAuth实施钓鱼

案例分析:利用OAuth实施钓鱼

作者头像
FB客服
发布2018-02-09 15:06:01
2K0
发布2018-02-09 15:06:01
举报
文章被收录于专栏:FreeBuf

OAuth百科

OAUTH(Open Authorization)协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。

OAuth授权有如下几个阶段,如图:

第一步:申请授权

在这一步,网站向IDP发起授权请求。比如说你想要从Office365获取用户的某些权限,那么你需要生成一个带有你想要请求的权限的链接,而权限则需要通过SCOPES这个参数来传递。

钓鱼邮件伪装成Spotify官方,发起授权申请,这个类似网络钓鱼。

用户点击链接后,跳转到LIVE进行授权许可(当然,你保持一定的警惕的话,应该不会上当)。

第二步:获取授权

当用户点击链接后会跳转到IDP(Microsoft, Google等)的授权接口,如果你还没登录,网站会要求你先登录,如果已登录,页面中会有个选择按钮让你选,YES或者NO,这个选择是将权限授予应用的最后一道屏障。

上图就是用户未登录,网站要求用户登录的情况。

上图为已登录的情况下,网站向用户发出询问,是否要给应用授权。

第三步:获取权限

如果用户在上一步中点击了YES,IDP就会生成AuthCode给应用。

应用会将自己的ApplicationID、secret、用户的AuthCode一并发送给授权服务器,如果这三个参数确认无误,服务器就会返回一个accessToken给应用,然后应用带着这个accessToken就能获取资源服务器上用户的资源(SCOPES中申请的权限)。

上图为你已允许授权的应用。

其实,整个攻击大致可以分为以下几个步骤:

1、创建一个应用Sappo 2、利用该应用创建一个申请授权的链接(SCOPE) 3、用户给应用Sappo授权后,获取AuthCode 4、利用AuthCode获取accessToken 5、使用accessToken以API请求的方式获取所有资源

下面就是详细的步骤了。

一、创建一个应用

我们将在Microsoft平台上创建一个名为”Sappo”的应用,通过该应用来盗取Office365和Windows Live用户的数据。

首先,我们登录Outlook账号,访问apps.dev.microsoft.com,创建一个新的应用,然后我们会获取到该应用的Application ID和Secret,同时我们也需要设定一个end–point来回收后面服务器返回的AuthCode和accessToken,这个end-point需要我们可控,并且一直监听所有的请求。

上图为创建的”Sappo”应用

Sappo这个框架的作用就是利用授权accessToken来获取用户的数据。为了更直观的演示整个过程,接下来在Sappo上创建一个app,用来作为end-point,我们将这个app命名为”MS PRO O365 AntiSpam”,目的是模仿AntiSpam Pro免费版,这样用户在查看的时候,才不会产生怀疑。

二、创建一个申请授权的链接(SCOPE)

为了获取权限,用户会被url重定向至Microsoft,该url要包含如下格式数据:

GET https://login.microsoftonline.com/common/oauth2/authorize/common/oauth2/authorize?scope=[scope_list]&response_type=[code]&client_id=[client_id]&redirect_uri=[redirect_uri]

通过client_id来指明是哪个应用申请授权,通过scope来指明申请的是哪些权限,通过redirect_uri来指明返回的AuthCode要送到哪里去。

上图为应用被允许申请的Windows Live权限,其中有一些允许通过API来读写邮件,但实际上真正操作的时候是会被禁止的。

上图为Windows Live中更多的允许应用和OneDrive、OneNote进行交互的授权。

上图为Office365中允许API进行邮件读写删除的授权

一旦设置好链接,就可以通过邮件进行发送了。我们选择使用Microsoft的邮箱账号来进行邮件的发送,并且将邮件的内容伪装成像来自AntiSpam Pro一样。我们在上面建立的app中已经集成了这样的功能,这里还需要选定一个攻击对象,如下图。

最后发出去的邮件是下面这样子的。

用户收到这封邮件后,如果他点击了链接,用户就会被重定向到授权页面。

就像上面你看到的,这是一个web钓鱼,并不要求用户输入用户名和密码,而且页面是在Microsoft的域名下,是来自https的请求,并且证书也是绿标的。

三、获取accessToken

当用户点击YES授权后,AuthCode会被传送到先前设定的Redirect‐URI,接下来应用就可以通过如下的格式去申请获取accessToken:

POST common / oauth2 / HTTP / 1.1 token Host: https://login.microsoftonline.com Content‐Type: application/x‐www‐form‐urlencoded grant_type=[ authorization_code ]&code=[ authCode ] &client_id=[ client_id ]&client_secret=[ secret ] &redirect_uri=[ redirect_uri ]

client_id为应用的Application ID,secret为当前应用的secret,如果AuthCode验证通过了,则accessToken会被发给已经设定的redirect_uri。

如上图,accessToken是以JWT (JSON Web token)的格式返回的,是一串经过URL编码后再BASE64编码的字符串,其中包含3部分:Header、Payload、Signature。经过解码后的数据如下图所示:

scp中规定了我们的应用已经申请的权限。

每次向IDP发起API请求资源时都要附带上accessToken的原始数据,格式如下:

Https://login.microsoftonline.com/common/oauth2/authorize GET HTTP / 1.1 Host: login.microsoftonline.com Authorization: Bearer [ access_token ]

四、使用API获取用户在IDP的数据

在用户点击了授权之后,我们在sappo上搭建的应用能够自动实现获取authCode并转化为access_token,这时候我们只要操作一下界面就能以API的形式向IDP申请获取数据。

以Office365为例,在这例中,我们拥有足够的权限来操作邮件服务。

如上图,我们可以查看用户的邮件,当然我们也能以用户的身份对外发送邮件。

如果你要撤销此类授权怎么办?这就需要你到Office 365的配置中,找到相关应用,点击取消授权,就可以成功撤销授权了。

接下来我们再以Windows Live为例,和之前的Office 365 步骤差不多,唯一不同的是,这里需要把申请的权限换成Windows Live设定的。

同样地,用户点击了YES后,就会给我们的应用授权,在我们获取到accessToken之后,就能以API的方式去请求用户的数据了。我们还需要注意的就是,虽然Windows Live的权限申请中有包含email,但是目前是不可以访问的。

虽然邮件不能访问,但是我们可以去看看用户存储在OneDrive上的数据,只要点击上面的”OneDrive storage”, app就会向资源服务器自动发起请求,我们就能进到该用户的OneDrive中了,然后你就可以进行一系列操作,就像使用自己的账户一样。

同样的如果你要撤销此类授权,需要到”应用和服务”选项中,找到这个应用,然后点击取消授权。点击进入这个应用后,你就能看到这个应用已经申请的权限

其实,这个案例颠覆了我们队网络钓鱼的传统观念,我们之前会说钓鱼网站会通过让用户填入账号密码,然后盗取你的数据,但这个例子就是一个很好的佐证。我想,就算是专业的安全人士也不一定能在第一时间识别出来。所以,我们在给应用授权的时候,一定要十分小心。万事都要从安全性出发,没有了安全性,估计也没有人敢用你的产品和服务吧?

当然,如何对应用进行限制,也是值得我们进行深入研究的。

*参考来源:youtube,elladodelmal,FB小编latiaojun编译,转载请注明来自FreeBuf.COM。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档