[关闭]
@1qaz 2017-05-30T14:22:59.000000Z 字数 2182 阅读 1157

The Password Reset MitM Attack

password


Nethanel Gelernter,College of Management Academic Studies, Israel, SP'17

概述:

password reset MitM(PRMitM)攻击利用了注册和密码重置两个过程的相似性,在应用层进行中间人攻击。用户在访问攻击者页面时,攻击者向一个网站发起密码重置请求,并把每个challange都转发给用户。攻击考虑了使用SMS或者语音电话给用户发送密码重置信息等情况。作者发现了Google等存在密码重置的问题,并提出了改进措施。

威胁模型和PRMitM的攻击过程

1
威胁模型:
类似于XSS、CSRF,需要用户访问攻击者控制的网站。为了能够重置用户在其他网站的密码,攻击者需要得到用户名、邮箱地址、手机号等信息,这些可以通过诱使用户在攻击者的网站上注册,提供相关的账户信息。攻击者同时发起一个密码重置请求,用户会收到CAPTCHA、安全问题、短信验证码或者语音电话,这些其实是密码重置的网站发送的,如果用户将其泄漏给攻击者的网站,就导致密码被攻击者重置。

攻击者可以提供免费的服务,如文件下载,让用户注册,或者使用一次性的手机验证码来登陆,用户愿意在这个网站上提供自己的账户信息,这是攻击前提。这个攻击和钓鱼很像,都是让用户自己输入账户信息,但这个攻击的是密码重置过程,而不是用户本身。
cmp
实验一共有536位参与者,是作者学校的学生。

为了验证这个攻击前提,138位参与者中只有6位表示不会在不认识的网站上注册或者提供手机号来获得免费服务。

在密码重置的过程中,有4中常见的challenge,从易到难:
1. CAPTCHA: 这个只是为了防止接口被自动化利用,不过为了进行大规模的PRMitM,攻击者需要将CAPTCHA转发给用户去识别
2. 安全问题:一些私人的问题来认证用户身份,攻击者也可以将安全问题转发给用户去解决
3. 发给手机的验证码:通过短信或者语音,存在一些认证的细节可以被利用
4. 发给邮箱的重置链接:PRMitM不能获取用户邮箱的内容,因此不能攻击这种找回方式。邮箱服务本身如何重置密码
top

mail
Yandex,mail.com,gmx.com,reddif.com允许只回答一个安全问题和一个CAPTCHA就找回密码

对用户填写安全问题的正确性进行了实验:
52个志愿者,在网站上注册,填写邮箱,回答“母亲的maiden name是什么”,有76.9%的人提供了正确的安全问题答案。

对SMS的攻击

短信验证码的几个问题:
1. 消息清晰度:短信最多160个字符,安全的验证码需要表达3个信息:发送的网站,验证码的用途(重置密码),警告用户不要泄漏验证码。
2. 短信发送方的身份:SMS spoofing可以伪造来源号码,但是用户通常不能从号码来区分短信来自哪个网站,从实验结果来看短信的内容比号码重要
3. token有效期:如果攻击者获得了短信的验证码,他可能更希望在用户睡觉的时候重置密码
4. 语言兼容性:网站发送的短信可能不支持多种语言,用户不能理解短信中的文字,只识别出了认证码

Survey:
5
没有一个网站警告用户不要泄漏短信验证码
Google和Yahoo针对俄语用户的短信里没有提到短信的发送方网站

语言兼容度:
Full:支持所有测试的语言
Good: 支持所有主流语言
Partial:部分主流语言
English only

Evaluation:
使用了Facebook的短信和作者增加了警告信息的短信(detailed SMS)分别对两组用户(42+46)进行测试,可以攻击的90%Fackbook短信和79%的detailed SMS
问卷调查表明很多用户并没有阅读短信内容,只找了验证码,有些人从手机的通知栏读;另外还有用户认为这个是login with Facebook

对语音电话的攻击

Phone call相比于短信的不同:语音可以携带更多的信息,需要用户更多的注意力,需要兼容更多的语言,可以和用户交互

语音存在的问题:
Linkedin的语音中没有提到Linkedin。Google的某些语言中也存在这个问题,也没有提到这个是用作密码重置的

Hello! Thank you for using our phone verification.
Your code is XXXXXX. Again, your code is
XXXXXX. Good bye.

实验方法和之前针对SMS的攻击相同,39位志愿者使用英语,29位使用有问题的其他语系,只有英语的7位阻止了攻击
6

移动APP的问题

重置密码的code可以通过app发送 (?),只发现了Telegram支持通过app重置密码
7

8
不指明发送方身份,不解释code用途,不警告泄漏
9

防范

  1. 好的安全问题:和用户在网站上的活动有关的问题,这样攻击者就不能转发。Google就采用了这种策略,询问联系人,使用的服务等
  2. Link-via-SMS:将重置密码的链接通过短信发送。用户较少会复制链接
  3. Phone Call:发送方,code的用途,警告
  4. 通知:密码修改成功后需要再次通知用户

Guideline:
1. 重置的消息要包括发送方,code的用途,警告
2. 兼容语言
3. 密码重置后通过短信和邮件同时通知用户
4. 重置链接的有效期在15分钟内
5. 禁止不安全的的重置方式
6. 在发送重置消息前需要更多的细节,不是只需要手机号

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注