解析针对知名密码存储软件LastPass的钓鱼攻击

最近作者发现了一个针对LastPass的钓鱼攻击,其允许攻击者窃取一个LastPass用户的邮箱、密码甚至二次验证的验证码,这就使得攻击者可以完全获取到用户存储在LastPass上的密码和文档。

这个对LastPass的钓鱼攻击被命名为“LostPass”,其利用代码可以在 Github上面找到。

LostPass之所以能成功攻击。是因为LastPass在浏览器内显示的信息都可以被攻击者所伪造。而用户是无法找出伪造的LostPass消息和真正的有什么不同,因为它们本来就没有区别——它们拥有“像素级相似”的通知和登录界面。

像素级钓鱼

几个月前,LastPass 在我的浏览器中推送了一个消息,表示我的会话已经过期需要重新登录。而我在过去的几小时内都没有使用LastPass也没有做过任何能导致账号登出的操作。当我点击消息通知时,我发现了一些东西:它显示到了浏览器窗口内。

解析针对知名密码存储软件LastPass的钓鱼攻击

任何恶意网站都可以发出这样的通知。因为 LastPass 让用户习惯浏览器窗口内弹出的通知,这使得用户对此毫无防范——LastPass 登录界面和二次验证窗口都是显示在浏览器内的。

解析针对知名密码存储软件LastPass的钓鱼攻击

解析针对知名密码存储软件LastPass的钓鱼攻击

由于LastPass 有一个可以远程访问的 API,这时一种攻击思路就出现在了我的脑海中。

攻击

下面是 LostPass 的攻击步骤。

访问恶意网站

让目标用户访问看起来正规的恶意网站或者一个存在 XSS 漏洞的正规网站,让他访问到我们部署的 lostpass.js。不同于别的钓鱼攻击,用户不会对正规网站产生太大警惕,也许他们访问的就是一段搞笑的视频或图片在或者其他有趣的东西。

检测LastPass并推送通知

如果用户安装有 LastPass 则推送登录过期的通知并注销用户的 LastPass。LastPass 存在一个注销账户的 CSRF 漏洞,利用这个漏洞任何网站任何用户都可以注销 LastPass。这样在用户看来他们的会话真的是过期需要重新登录了。

解析针对知名密码存储软件LastPass的钓鱼攻击

  向用户展示登录界面

一旦用户点击了伪造的通知,就将会跳转到一个攻击者控制的伪造的登录界面。下图是Chrome中显示的登录界面:

解析针对知名密码存储软件LastPass的钓鱼攻击

注意域名"chrome-extension.pw"。这与 Chrome 真实的扩展协议 "chrome-extension"非常相似。这里有一个关于这个问题的 讨论。

获取用户凭证

用户随后会输入自己的密码,而这些密码会发送到攻击者的服务器上。随后攻击者的服务器会通过调用 LastPass 的 API 验证接收到的凭证是否正确。如果 API 提示需要进行二次验证,那么会在推送通知用户。

如果用户输入的用户名和密码不正确,那么会被定位回到恶意网站,但这回 LossPass 的通知会提示“密码无效”。

如果需要进行二次验证,会定位到如下页面:

解析针对知名密码存储软件LastPass的钓鱼攻击

  下载用户数据

一旦攻击者确认了正确的用户名和密码(还有二次验证的口令),会通过 LastPass 的 API 从服务器上下载受害者所有的信息。同样攻击者也可以通过紧急联络功能安装一个后门,禁用二次验证功能,将攻击者的服务器加入“信任设备”中,或其他任何他们想做的事情。

启示

LossPass 的攻击步骤是完全镜像 LastPass 正常步骤的。下面说明为什么攻击会如此有效:

1. 很多人对于钓鱼的反应是“培训好用户意识”,因为是他们自己犯错被钓鱼的。但在这里不是很有用,因为 LostPass 和 LastPass 仅有细微的很能察觉的区别;

2. LassPass 的登录过程非常复杂也比较混乱。有时它会要求用户从浏览器进行登录,有时又会要求用户从弹出的窗口登录;

3. 很容易定位到 LastPass 通知和登录页面的 HTML 和 CSS 文件;

4. 因为也会对二次验证进行钓鱼,所以二次验证也没有任何帮助。

具体代码请读者自己到Github上面查看吧。


本文转自d1net(转载)