本文作者:晚风
所谓的 MITB 技术就是 man-in-the-browser
的简称,也就是浏览器中间人攻击方式。我们先来回顾一下经典的中间人攻击方式。
如上图,正常的通信是用户和服务器直接进行数据传输。而现在,攻击者通过某种方式截断了用户与服务器的直接通信,扮演起了一个代理服务器的角色,把用户与服务器的流量做了一个转发,用户以为攻击者就是真正的服务器,服务器以为攻击者就是真正的用户。从而,攻击者作为一个中间人,就可以截获到用户与服务器之间的所有通信,还可以随意篡改这些通信数据。表面上看起来数据仍然在正常的传输,实际上已经被第三方获取了。经典的中间人攻击一般会采用 ARP 欺骗或者 DNS 欺骗等手段,欺骗原本通讯的双方,但这种方式就需要把通讯流引到自己的 IP 上,容易被检测出来。
而浏览器中间人攻击的突破点是在用户自己的浏览器,在数据流入用户本机的传输层之前就已经被截获并篡改了,获取和篡改数据的整个过程发生在用户的本机,而且一般在原始数据还未被加密之前就被篡改了,无需经过攻击者的机器。因此,这种浏览器中间人攻击方式更加隐蔽,更难以被检测出来。
浏览器中间人攻击更像是我们熟知的木马攻击。一般可以通过社会工程学的方式,以诱骗目标的手段植入目标的计算机,经过一段时间的潜伏,在特定的时间激活并执行恶意操作。而浏览器中间人攻击也是如此。它通常使用脚本或 ActiveX 控件,以浏览器扩展的形式出现。当用户访问特定的网站时,它就会被激活,在浏览器接口和外部网络之间开始偷偷捕获并修改数据。通过这种方式,用户的整个交易过程看似正在像预期的那样进行,但实际上正在执行的交易可能跟预期的完全不同。相关的交易细节可能会被修改,并且一些完全不相关的交易过程可能会被偷偷启动。这一切都在用户不知情的情况下进行着。
由于传统的病毒扫描方式是基于病毒特征和行为方式,所以很难直接扫描到这种木马病毒,许多传统的防御手段都对浏览器中间人攻击束手无策。并且它能直接获取认证的数据(像静态和一次性的密码甚至是一些生物特征数据)和交易的细节。
在未来普通用户被攻击的可能性非常大。像众所周知的浏览器中间人攻击就包括 Zeus 和 Slientbanker 木马等等。
MITB 流程详解
阶段一:感染
攻击的第一阶段是感染目标计算机。方法有很多,一般采用社会工程学的方法欺骗用户,使木马的本体植入目标计算机。或者也可以使用浏览器和系统的漏洞来植入木马。
1、下载感染
一般采用社会工程学的方法,给目标发一封具有诱骗性误导性的邮件,内容可以是推荐一款好用的免费软件、工作中的一份待接收的文件,或者引导用户进入一个包含伪装好的恶意软件的钓鱼网站,诱骗用户去下载(比如看视频需要下载某某播放器等等)。这些邮件的附件中就包含了精心混淆加密免杀的恶意木马。当用户下载并打开的时候,恶意软件就已经在用户不知情的情况下植入用户的计算机了。
2、浏览器漏洞
跟第一种类似,引导用户进入一个恶意网站。只不过这里不是诱骗用户下载恶意软件了。而是利用未修补的浏览器漏洞直接在用户的计算机上静默安装恶意软件。
阶段二:交易接管
在这个阶段,当用户启动浏览器,木马就会自动被激活,偷偷监视着用户的一举一动。当用户访问银行网站并通过身份认证时,MITB攻击就开始了。木马已经接管了整个交易过程,可以随意修改收款方,随意修改转账的金额,也可以暗中收集用户的个人信息、隐私,然后发送给第三方。这一切的一切,都在用户不知情的情况下进行着。
下面是整个交易接管的流程表。
至此整个 MITB 攻击完成。所带来的危害就是用户的资金和金融机构的信誉的损失。
MITB 的演示
这里我们自己搭建一个环境模拟真实的网上银行交易过程。然后制作一个利用了 MITB 技术的扩展,模拟整个攻击过程。
第一步:网上转账环境搭建
首先是一个银行转账的界面。用户可以输入收款人的名字和转账的金额。其实就是一个GET表单,没有任何安全措施。
下面是银行的服务端页面。接受收款人和金额两个变量进行相应转账操作,为了便于大家更直观的看到效果,操作成功后会回显进行转账操作后所有用户的金额。
这里假设我自己是 Alice,我现在有 20 元钱,我的朋友 Bob 有 30 元钱,黑客 Candy 没有钱。我想要转账给我的朋友 Bob 10 元钱。Candy 是利用 MITB 技术的攻击者,想从 Alice 的账户里转账 20 元给到自己的账户。
我们来测试一下正常的交易过程。
结果符合我们的预期,没毛病。
第二步:恶意扩展的编写
这一步我们来写一个恶意扩展。这个扩展包含两个文件,扩展清单文件 manifest.json
和扩展主体文件 background.js
。具体思路是当 Alice 无意间被暗中安装了这款恶意扩展,扩展在 Alice 进行转账操作时便会拦截 Alice 的转账请求,将收款人修改为 Candy,金额修改为 20 元,从而 Bob 不会收到钱,Alice 会损失自己的钱财,而黑客 Candy 会获利 20 元。
先写一个扩展的清单文件 manifest.json
,
再来写恶意扩展的主体 background.js
至此一款非常简易的利用了 MITB 技术的恶意扩展就写完了。
第三步:测试成果
下面我们来测试一下我们的成果。
在浏览器上安装这个恶意扩展,假装被感染了。
上面是被拦截的请求,可以看到,我们先发起了第一个请求,但随后就被恶意扩展拦截并修改成了第二个请求,服务器收到的就是被修改后的请求。黑客 Candy 成功的实施了一次浏览器中间人攻击。虽然现实生活中的银行安全体系不会这么脆弱,但攻击的原理还是一样的。
注意:最后的回显这样显示只是为了更清楚得演示,当然我们也可以在扩展中拦截并修改银行服务器的响应,让用户看到他们预期的数值。
其他的利用姿势
利用浏览器中间人攻击拦截并修改通信双方的请求是一种利用方法。此外,还有一些,比如可以作为木马,在宿主的浏览器控制台里执行任意命令,读取浏览器本地存储,造成 token 泄露;也可以获取一些在线IM通讯应用的聊天记录;也可以化身为键盘记录器,记录你的各种账号密码,偷偷发送到黑客的远程服务器...危害还是非常大的。
防范措施
虽然这种攻击方式看似很难防范,但仍有一些防御措施来对付这种攻击方式。由于 MITB 的活跃时间位于用户通过认证后、执行相应的操作之前,所以现有的身份认证技术对该类攻击无效。我们只能在用户执行操作时再进行防御。以下防御措施依据效果好坏来排序。
1、反病毒软件
恶意扩展肯定是要安装在宿主机上的,所以通过反病毒软件可以检测出来。但由于扩展的修改十分方便,一点小小的改动就可以造成较大的特征差异。所以现代反病毒软件对这类的恶意扩展的效果不理想。
2、更安全的浏览器
可以使用便携版的浏览器进行交易操作。便携版浏览器一般放在U盘中,很少与外界网络接触,一般不会被恶意扩展感染。缺点是每次操作时都要使用U盘中的浏览器,较为麻烦。
3、OOB(Out-of-band)
对抗 MITB 攻击的理论上最有效的方式就是 OOB 认证方式,即带外认证。在用户的浏览器与银行的远程服务器通信时,通过除浏览器以外的渠道与用户验证浏览器上的通信结果是否正确。比如我向别人转账时,银行服务器在收到请求后不立刻执行这个请求,而是先向我发送一条短信,告诉我即将向谁转账多少钱,请求我的确认。在得到我的确认后,银行的服务器才开始执行这个转账的请求。被同时控制多条通信途径是非常罕见的,也是非常困难的,这样就保证了整个交易过程的正确性。
楼主残忍的关闭了评论