如何防止浏览器中间人攻击?

7

我一直在研究中间人攻击,其中有些事情让我感到担忧。

WIKI中:

使用强身份验证工具只会在客户和银行之间产生了一个错误的信任级别,即交易是安全的。

在对抗MitB攻击中最有效的方法之一是通过带外(OOB)交易验证过程。这通过在浏览器之外的通道上将主机(银行)接收到的交易细节验证给用户(客户)来克服MitB木马。

所以我理解的是,唯一真正安全的方法是非浏览器确认方法。(比如电话或其他外部工具)

电子邮件是否算作带外交易?或者MitB可以发送虚假电子邮件吗?

有没有仅凭代码就可以防止MitB攻击的方法?

编辑:我之所以问这个问题,是因为我们当地的银行系统采用了一种物理密钥生成系统,您必须按下一个按钮以获得一个数字,然后将该数字输入到交易表单中的字段中。

我不知道这是否安全,因为它看起来像是MitB攻击只是让一切看起来都是安全和正确的,但实际上发生的是提交时表单数据已被更改,并且现在正在转移到其他银行账户。因此,它会访问此密钥生成器号码。


物理密钥生成器可以证明你拥有这个密钥生成器,但它无法证明你就是你自己(而不是其他人从你那里窃取了密钥生成器),也不能证明你知道你的浏览器在做什么。 - ChrisW
5个回答

2

电子邮件算作OOB交易吗?

鉴于像Gmail这样的网络邮件服务的普及,我会说不算。即使攻击目标没有使用Web邮件,控制目标浏览器的攻击者也可以发送虚假电子邮件,就像您所建议的那样。


1
这是我对浏览器中的人的看法。浏览器中的人就像:
  1. 受害者站起来离开他的电脑,背对着电脑,因此无法触摸键盘,移动鼠标甚至看到屏幕。
  2. 黑客坐在受害者的电脑后面。
  3. 如果受害者想要使用他的电脑,他必须请求黑客代为操作。如果他想看到任何结果,他必须请求黑客读取显示器上的数据。
  4. 黑客尽力说服用户他正在按照他的要求进行操作,并重复他所说的话。但也会毫不留情地从中获利!

Man In The Browser

作为一个简单的案例:
1. 受害者可能会要求黑客填写一个交易表单数据,如“向妈妈转账500美元”。 2. 黑客可以在发送之前篡改表单数据,将“向杰克转账10000美元”输入。 3. 系统可能会显示“我已向杰克转账10000美元”,但黑客说500美元已经转到了杰克的账户。(篡改结果HTML) 4. 受害者要求查看他的账户余额,以确保转账完成。 5. 黑客可以说账户余额是正确的(例如,通过删除余额表的最后一行并更改HTML中的余额金额来实现)。
至于电子邮件:
1. 你正在等待一封电子邮件,并询问黑客是否有银行的确认邮件。 2. 由于你无法看到监视器,黑客说你有这封邮件。(从技术上讲,他可以轻松生成一封假邮件)。(即使你坐在另一台干净的计算机前,也可能再次向你发送一封假邮件)
图像生成不能防止攻击。
  1. 你问黑客,我的银行应该显示一个图片,上面必须显示转账信息,你看到了吗,它说了什么。
  2. 黑客回答:是的,我能看到,它说“你正在向妈妈转账500美元”(这个图片可以轻松地通过JavaScript创建,或者黑客可以将图片URL指向一个服务器,该服务器使用适当的数据生成动态图片来欺骗用户)。

在浏览器中的恶意软件改变网站流程的情况下,非常危险。在这种情况下,即使是OTP或kegen系统也无法防止攻击。例如:

  1. 你向黑客询问要查看余额
  2. 黑客转到转账页面,填写转账表单将10000美元转账给杰克(但你完全不知道他在做什么,你只是等待),他来到一个要求输入密钥的页面。这就是你必须给他的密钥。
  3. 现在,黑客说:好吧,银行让我告诉你,如果你想查看余额,你必须输入密钥。
  4. 你想,好吧,为了查看余额需要一个密钥似乎有些奇怪,但无论如何让我们给他那个密钥,我相信这家伙!!
  5. 黑客切换回转账表单并使用密钥进行转账。

因此,正如您所看到的,浏览器中间人攻击没有服务器端解决方案,您可以:

  1. 使用带外解决方案向用户发送关键信息。(就像您拿起手机,虽然您的背部仍面向计算机,但敏感信息被发送到您信任的设备上,您可以查看关键信息)
  2. 使用硬化浏览器确保没有人可以更改其行为。(坐回电脑前 :) )

在MITB可以实现的范围内,有很多好的样例可以参考: http://www.tidos-group.com/blog/2010/12/09/man-in-the-browser-the-power-of-javascript-at-the-example-of-carberp/


1

该维基百科文章的主题(并被引用)的文章中,"攻击方法"的第一步骤如下:

  1. 特洛伊木马感染计算机的软件,无论是操作系统还是应用程序。

因此,回答您的问题是“不”,一旦操作系统被感染,恶意软件理论上至少可以拦截您的电子邮件。

顺便说一句,一些客户端平台(例如甚至是移动电话,更不用说专用的销售点终端)比其他平台更不容易感染。


1

我想你可以将交易信息的关键部分作为二次或三次交易验证步骤的一部分。也就是说,如果我认为我告诉了银行账号#12345,但由于数据被篡改而听到了#54321,那么二次验证将无法通过加密检查。银行还可以回显一些更难以更改的内容,例如包含相关信息的图像。

这些讨论的问题在于它总是会变得更加复杂。电子邮件不是有效的带外步骤,因为我必须想象我有一个rootkit……如果我阻止了它,我必须想象我的操作系统实际上是在恶意虚拟机中运行的客户操作系统……如果我阻止了它,我想我必须想象它是矩阵,我不能信任任何东西来保护我的可用信用额度为200美元的签证卡。 :)


1

一般来说,如果您的计算机被感染了,那么无论如何都会存在漏洞。

物理令牌或“离线”令牌旨在解决“身份”问题,并使银行更有信心登录的人是他们所说的人。这些机制通常涉及使用“一次性代码”技术,以便即使有人记录与银行的对话,令牌也无法重复使用。但是,如果恶意软件正在实时拦截,则可以在您成功登录后恶意控制帐户,但通常银行要求每次尝试执行诸如转移资金等操作时都需要一个新的“代码”。因此,恶意软件必须等待您合法地执行此操作,然后修改请求。但是,大多数恶意软件不是实时的,并将数据发送到第三方进行收集和后续使用。使用这些“一次性令牌”技术将成功防御登录数据的后处理,因为记录的数据不能稍后用于登录。

回答您的问题,没有办法仅通过代码来防御这种情况。您所做的任何事情都可能被恶意软件专门绕过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接