防止web站点被中间人攻击的方式_网站防御中间人攻击

hacker|
250

HTTPS中间人攻击

前言

之前为信安系统导论展示准备的实验被之前的小组“捷足先登”了,无奈只能又找别的实验,看了各个小组的题目,发现已经涵盖了大部分常见易操作的攻击方式,很难找到一个完全独立于其他人攻击方式的新实验,毕竟攻击思路都有共通之处,常用工具也就那些。

翻论坛找到一个有关中间人攻击的实验,觉得可以作为这次的展示,遂决定以此为题。

背景知识

原理介绍

1.HTTPS和HTTP

HTTPS是在HTTP应用层基础上使用SSL(完全套接层)作为子层,SSL使用数据加密技术确保数据在网络上传输而不会被截取及窃听。

2.中间人攻击

①SSLStrip (降级攻击)的工作原理及步骤

(1) 先进行中间人攻击来拦截 HTTP 流量。

(2) 将出现的 HTTPS 链接全部替换为 HTTP,同时记下所有改变的链接。

(3) 使用 HTTP 与受害者机器连接。

(4) 同时与合法的服务器建立 HTTPS。

(5) 受害者与合法服务器之间的全部通信经过了代理转发。

(6) 其中,出现的图标被替换成为用户熟悉的“小黄锁”图标,以建立信任。

(7) 这样,中间人攻击就成功骗取了密码、账号等信息,而受害者一无所知。

总而言之,SSLStrip是一种降级攻击。

②sslsplit(解密攻击)工作原理

工具的主要原理是以中间人的身份将证书插入到客户端和服务器中间,从而截断客户端和服务器之间的数据。

之前我们大多数做的都是针对于80端口的欺骗(http),也就是说,只要是超越了80端口我们就会有点棘手:比如常用的443端口(https),比如465(smtps)和587端口,这些都是通过SSL加密进行数据传输的,简单的80端口监听肯定是什么都拿不到的。这个时候,就体现出SSL证书劫持的作用了。

总而言之,SSLSplit是一种伪造证书攻击。

3.端口转发

数据包都是有原地址和目标地址的,NAT(network address translation,网络地址转换)就是要对数据包的原地址或者目标地址(也可以修改端口的)进行修改的技术。为什么我们要修改ip地址呢?是这样的互联网中只能传送公网地址的数据包,私有地址的数据包是无法传送的。这样你想下,你每天在wifi环境下看视频浏览网站的时候你的ip是什么(私有地址,你手机、pad、电脑发出来的所有数据包原地址都是私有地址。怎么在互联网上传送)。为了能让你的数据包在能在互联网上传送,必须给你一个公网ip才行。所以当你上互联网的时候,路由器会帮你把所有的数据包的原地址转换成它的wlan口的ip地址(这个就是公网ip,一般就是ADSL拨号获取的ip)。这个转换的技术就是NAT。当你所访问的服务器给你回应数据包时,路由器会把所有数据包目标地址,由它的wlan口的ip地址,改回你内网的ip地址。这样你才能上互联网。所以你每天都在使用NAT技术。

4..数据重定向的方法

如何重定向到攻击者电脑上成为靶机和服务器的中间人,其实有很多种方式。

比如:

(1)arp攻击(伪装网关)

(2)DNS劫持(伪装服务器)

(3)wifi钓鱼(之前pxy他们组做的实验就可以利用起来)

(4)修改hosts文件(把舍友暴打一顿,然后把他的电脑里的hosts文件改掉)

(5)修改默认网关(把舍友暴打一顿,然后把他的电脑里的默认网关改成自己的ip)

攻击过程

1.sslstrip攻击

①将设备设置为转发模式,这样我们的设备就可以转发目标不是我们设备的数据包。若不这样,则目标主机会出现断网的情况,arp欺骗就成了arp断网攻击。

防范方式

我们可以看到,无论是哪种攻击手段,利用的都是局域网的中间人攻击。因此一些防范方式有:

①不随意连接公共wifi

②对于arp表中的ip和MAC地址进行静态固定

③开启一些安全软件的arp防火墙

④及时更新浏览器版本或换用其他安全性高的浏览器

一些感想

找一种比较有特点的攻击方式不是那么容易,实现更不容易,这过程中遇到了各种问题,一些问题网上也找不到确切的解决方法,一度卡住后想要放弃换实验,但还是做了下来。尽管还是没能完全实现,但展示出自己的问题和疑惑也未尝不可。展示的过程中主要还是展示原理和实操过程,而对于实验的准备、中途遇到的问题以及其他实验过程,则没有时间也不必要作为展示,但这一过程其实才是实验对于我们小组成员来说最重要的。

小组成员也都很努力,也都按照自己的能力分担了不同的工作,不像操作系统的小组有人完全划水...总体来说实验还是比较成功的(强行自我鼓励),希望以后再有类似的展示能做的更完善吧。

Https 协议简析及中间人攻击原理

对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DES、AES等

对称加密算法加密流程和解密流程

非对称加密算法的特点是加密密钥K1和解密密钥K2是不一样的,他们是一对可互为加解密的密钥,一个可以公开,叫公钥;一个自己保留,不能让其他人知道,叫私钥。这样就能比较好的解决信息传递的安全性,相对来说加解密速度较慢,典型的非对称加密算法有RSA、DSA等。问题是如何保证加密用的接收者的公钥,即如何安全的传递公钥。

非对称加密算法加密流程和解密流程

F(M) = D E(D)=S

F是单向散列函数:即如果已知x,很容易计算F(x),但已知F(x),却很难算出x

数字签名就是用私钥将摘要加密的结果,这样能够保证数据的完整性、防篡改、以及不可抵赖性。

摘要算法及数字签名过程

乙方把接收到的发送方的明文用单向哈希函数取得摘要值与甲方的公钥解密甲方的数字签名而得到的摘要值进行比较,如果一样说明信息完整,未受篡改,如果不一样说明受到篡改

检验数据完整性过程

在发送过程中首先将甲方的明文取摘要值,再将此摘要值用甲方的私钥加密得到甲方的签名,然后将甲的明文、数字签名和数字证书合在一起用甲方随机生成的对称密钥加密得到密文;第二步是将这一随机生成的对称密钥用乙方的公钥加密后得到数字信封;最后将密文和数字信封一起发送给乙方。

在乙方接收过程中,首先将收到数字信封用乙方的私钥解密,得到随机生成的对称密钥,第二步是解密得到的随机生成的对称密钥将密文解密,得到甲方的明文、数字签名和数字证书;第三步将甲方的明文取摘要值与甲方的数字签名用甲方的公钥解密得到的摘要进行比较,从而验证签名和检验数据的完整性。这一流程同时用到对称算法和非对称算法,是比较安全的流程

数字证书在这里起到的作用有:提供甲方的公钥,保证发送信息方的不可抵赖性。

严密的数字加解密、数字签名和验证流程

为了保证证书的一致性,国际电信联盟设计了一套专门针对证书格式的标准X.509,其核心提供了一种描述证书的格式。

X.509数字证书不仅包括用户名和密码,而且还包含了与用户有关的其他信息,通过使用证书,CA可以为证书接收者提供一种方法,使他们不仅信任证书主体的公钥,而且还信任有关证书主体的其他信息

X.509证书有有效期限、证书在期满后就会失效。期间CA可能会出于某些原因吊销证书。要吊销证书,CA保存并分发一个吊销证书的列表,即证书吊销列表CRL。网络用户可以访问CRL以确定证书的有效性

目前, X.509标准已在编排公共密钥格式方面被广泛接受,用户许多网络安全的应用程序,其中包括Ipsec, SSL, SET, S/MIME(安全多媒体Internet邮件扩展)

证书中主要域

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。其实现是在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

SSL协议位于TCP/IP协议与各种应用协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性。SSL层所处位置如下

SSL示意图

①SSL协议可用于保护正常运行与TCP之上的任何应用协议,如HTTP、FTP、SMTP或Telent的通信,最常见的是用户SSL来保护HTTP通信

②SSL协议的优点在于它是应用层协议无关的。高层的应用协议能透明的建立于SSL协议之上

③SSL协议的应用层协议之前就完成加密算法、通信密钥的协商以及服务器的认证工作。在此之后应用层协议所传送的数据都会被加密。从而保证通信的安全性。

④SSL协议使用通信双方的客户证书以及CA根证书。允许客户/服务器应用以一种不能被偷听的方式通信,在通信双方建立起了一条安全的、可信任的通信通道。

⑤该协议使用密钥对传送数据加密,许多网站都是通过这种协议从客户端接收信用卡编号等保密信息。常用于交易过程

Sl工作基本流程图如下所示

SSl工作基本流程图

SSL协议既用到了非对称加密技术又用到了对称加密技术。对称加密技术虽然比公钥加密技术的速度快,可是非对称加密技术提供的更好的身份认证技术。SSL的握手协议非常有效的让客户端和服务器之间完成相互之间的身份认证。其主要过程如下:

1)客户端向服务器传输客户端的SSL协议版本号,支持的加密算法的种类,产生的随机数Key1及其他信息

2)服务器在客户端发送过来的加密算法列表中选取一种,产生随机数Key2,然后发送给客户端

3)服务器将自己的证书发送给客户端

4)客户端验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的CA是否可靠,发行者的公钥能否正确解开服务器证书的”发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配,如果合法性验证没有通过,通信将断开,如果合法性验证通过,将继续向下进行;

5)客户端随机产生一个Pre-Master-Key,然后用服务器的公钥(从证书中获得)对其加密,然后将该Pre-Master-Key发送给服务器

6)服务器接收到Pre-Master-Key,则使用协商好的算法(H)计算出真正的用户通信过程中使用的对称加密密钥Master-Key=H(C1+S1+PreMaster);

7)至此为止,服务器和客户端之间都得到Master-Key,之后的通信过程就使用Master-Key作为对称加密的密钥进行安全通信;

针对SSL的中间人攻击方式主要有两类,分别是SSL劫持攻击和SSL剥离攻击

SSL劫持攻击即SSL证书欺骗攻击,攻击者为了获得HTTPS传输的明文数据,需要先将自己接入到客户端和目标网站之间;在传输过程中伪造服务器的证书,将服务器的公钥替换成自己的公钥,这样,中间人就可以得到明文传输带Key1、Key2和Pre-Master-Key,从而窃取客户端和服务端的通信数据;

但是对于客户端来说,如果中间人伪造了证书,在校验证书过程中会提示证书错误,由用户选择继续操作还是返回,由于大多数用户的安全意识不强,会选择继续操作,此时,中间人就可以获取浏览器和服务器之间的通信数据

这种攻击方式也需要将攻击者设置为中间人,之后将HTTPS范文替换为HTTP返回给浏览器,而中间人和服务器之间仍然保持HTTPS服务器。由于HTTP是明文传输的,所以中间人可以获取客户端和服务器传输数据

什么是中间人攻击

中间人攻击

维基百科,自由的百科全书

在密码学和计算机安全领域中,中间人攻击(Man-in-the-middle attack ,缩写:MITM)是指攻击者与通讯的两端分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通话并插入新的内容。在许多情况下这是很简单的(例如,在一个未加密的Wi-Fi 无线接入点的接受范围内的中间人攻击者,可以将自己作为一个中间人插入这个网络)。

一个中间人攻击能成功的前提条件是攻击者能将自己伪装成每一个参与会话的终端,并且不被其他终端识破。中间人攻击是一个(缺乏)相互认证的攻击。大多数的加密协议都专门加入了一些特殊的认证方法以阻止中间人攻击。例如,SSL协议可以验证参与通讯的一方或双方使用的证书是否是由权威的受信任的数字证书认证机构颁发,并且能执行双向身份认证。

目录

1 需要通过一个安全的通道做额外的传输

2 攻击示例

3 防御攻击

4 中间人攻击的取证分析

5 其他的非加密的中间人攻击

6 实现

7 参见

8 参考资料

需要通过一个安全的通道做额外的传输

与连锁协议不同,所有能抵御中间人攻击的加密系统都需要通过一个安全通道来传输或交换一些额外的信息。为了满足不同安全通道的不同安全需求,许多密钥交换协议已经被研究了出来。

攻击示例

假设爱丽丝(Alice)希望与鲍伯(Bob)通信。同时,马洛里(Mallory)希望拦截窃会话以进行窃听并可能在某些时候传送给鲍伯一个虚假的消息。

首先,爱丽丝会向鲍勃索取他的公钥。如果Bob将他的公钥发送给Alice,并且此时马洛里能够拦截到这个公钥,就可以实施中间人攻击。马洛里发送给爱丽丝一个伪造的消息,声称自己是鲍伯,并且附上了马洛里自己的公钥(而不是鲍伯的)。

爱丽丝收到公钥后相信这个公钥是鲍伯的,于是爱丽丝将她的消息用马洛里的公钥(爱丽丝以为是鲍伯的)加密,并将加密后的消息回给鲍伯。马洛里再次截获爱丽丝回给鲍伯的消息,并使用马洛里自己的私钥对消息进行解密,如果马洛里愿意,她也可以对消息进行修改,然后马洛里使用鲍伯原先发给爱丽丝的公钥对消息再次加密。当鲍伯收到新加密后的消息时,他会相信这是从爱丽丝那里发来的消息。

1.爱丽丝发送给鲍伯一条消息,却被马洛里截获:爱丽丝“嗨,鲍勃,我是爱丽丝。给我你的公钥” -- 马洛里 鲍勃

2.马洛里将这条截获的消息转送给鲍伯;此时鲍伯并无法分辨这条消息是否从真的爱丽丝那里发来的:爱丽丝 马洛里“嗨,鲍勃,我是爱丽丝。给我你的公钥” -- 鲍伯

3.鲍伯回应爱丽丝的消息,并附上了他的公钥:爱丽丝 马洛里-- [鲍伯的公钥]-- 鲍伯

4.马洛里用自己的密钥替换了消息中鲍伯的密钥,并将消息转发给爱丽丝,声称这是鲍伯的公钥:爱丽丝-- [马洛里的公钥]-- 马洛里 鲍勃

5.爱丽丝用她以为是鲍伯的公钥加密了她的消息,以为只有鲍伯才能读到它:爱丽丝“我们在公共汽车站见面!”--[使用马洛里的公钥加密] -- 马洛里 鲍勃

6.然而,由于这个消息实际上是用马洛里的密钥加密的,所以马洛里可以解密它,阅读它,并在愿意的时候修改它。他使用鲍伯的密钥重新加密,并将重新加密后的消息转发给鲍伯:爱丽丝 马洛里“在家等我!”--[使用鲍伯的公钥加密] -- 鲍伯

7.鲍勃认为,这条消息是经由安全的传输通道从爱丽丝那里传来的。

这个例子显示了爱丽丝和鲍伯需要某种方法来确定他们是真正拿到了属于对方的公钥,而不是拿到来自攻击者的公钥。否则,这类攻击一般都是可行的,在原理上,可以针对任何使用公钥——密钥技术的通讯消息发起攻击。幸运的是,有各种不同的技术可以帮助抵御MITM攻击。

防御攻击

许多抵御中间人攻击的技术基于以下认证技术:

公钥基础建设

在PKI方案中,主要防御中间人攻击的方案就是PKI的相互认证的机制。使用这样的机制并由应用程序验证用户,用户设备验证应用程序。但在某些流氓应用的情况下,这不是很有用,所以需要注意对流氓软件应与正规软件进行区分。

更强力的相互认证,例如:

密钥(通常是高信息熵的密钥,从而更安全),或密码(通常是低的信息熵的密钥,从而降低安全性)

延迟测试,例如使用复杂加密哈希函数进行计算以造成数十秒的延迟;如果双方通常情况下都要花费20秒来计算,并且整个通讯花费了60秒计算才到达对方,这就能表明存在第三方中间人。

第二(安全的)通道的校验

一次性密码本可以对中间人攻击免疫,这是在对一次密码本的安全性和信任上创建的。公钥体系的完整性通常必须以某种方式得到保障,但不需要进行保密。密码和共享密钥有额外的保密需求。公钥可以由证书颁发机构验证,这些公钥通过安全的渠道(例如,随Web浏览器或操作系统安装)分发。公共密钥也可以经由Web在线信任进行在线验证,可以通过安全的途径分发公钥(例如,通过面对面的途径分发公钥)。

查看密钥交换协议以了解不同类别的使用不同密钥形式或密码以抵御中间人攻击的协议。

中间人攻击的取证分析

从被怀疑是中间人攻击的链接中捕捉网络数据包并进行分析可以确定是否存在中间人攻击。在进行网络分析并对可疑的SSL中间人攻击进行取证时,重要的分析证据包括:

远程服务器的IP地址

DNS域名解析服务器

X.509证书服务器

证书是自签名证书吗?

证书是由信任的颁发机构颁发的吗?

证书是否已被吊销?

证书最近被更改过吗?

在互联网上的其他的客户端是否也得到了相同的证书?

其他的非加密的中间人攻击

一个著名的非加密中间人攻击的例子是贝尔金无线路由器2003年的某一个版本所造成的。它会周期性地接管通过它的HTTP连接,阻止数据包到达目的地。并将它自己对请求的回应作为应答返回。而它发送的回应,则是在用户原本应该显示网页的地方,显示一个关于其他贝尔金产品的广告。在遭到了解技术详情的用户的强烈抗议后,这个功能被贝尔金从路由器后续版本的固件中删除。[1]

另一个典型的非加密中间人攻击的例子是“图灵色情农场”。布赖恩·华纳说,这是垃圾邮件发送者用来绕过验证码的“可以想象的攻击”。垃圾邮件发送者设置了一个色情网站,而访问这个色情网站需要用户解决一些验证问题。这些验证问题实际上是其他网站的验证问题。这样就可以达到绕开网站验证发送垃圾邮件的目的。[2]然而,Jeff Atwood指出,这次袭击仅仅是理论上的——没有任何证据指出垃圾邮件发送者曾经在2006年创建了图灵色情农场。[3]然而,2007年10月有新闻报道称,垃圾邮件发送者确实创建了一个Windows游戏,当用户键入从雅虎收到的注册邮箱验证码后,程序将奖励用户色情图片。[4]这将允许垃圾邮件发送者创建临时的免费电子邮件帐户以发送垃圾邮件。

实现

dsniff - 一个实现SSH和SSL中间人攻击的工具

Cain and Abel - Windows图形界面的工具,它可以执行中间人攻击,嗅探和ARP投毒

Ettercap - 一个基于局域网的中间人攻击工具

Karma - 一个使用802.11 Evil Twin以执行MITM攻击的工具

AirJack -一个演示802.11 MITM攻击的工具

SSLStrip一个基于SSL的MITM攻击的工具。

SSLSniff一个基于SSL的MITM攻击的工具。原本是利用一个在Internet Explorer上缺陷实现的。

Intercepter-NG -- 一个有ARP投毒攻击能力的Windows网络密码嗅探器。可以进行包括SSLStrip在内的

基于SSL的MITM攻击。

Mallory - 一个透明的TCP和UDP MiTMing代理。扩展到MITM SSL,SSH和许多其他协议。

wsniff - 一个802.11HTTP / HTTPS的基于MITM攻击的工具

安装在自动取款机银行卡插槽上的附加读卡器和安装在键盘上的附加密码记录器。

参见

浏览器中间人攻击 -一种网页浏览器中间人攻击

Boy-in-the-browser - 一个简单的Web浏览器中间人攻击

Aspidistra transmitter -英国二战“入侵”行动中使用的无线电发射器,早期的中间人攻击。

计算机安全 - 安全的计算机系统的设计。

安全性分析 - 在不完全知道加密方法的情况下破解加密后的信息。

数字签名 -一个加密文字的真实性担保,通常是一个只有笔者预计将能够执行计算的结果。

联锁协议 -一个特定的协议,在密钥可能已经失密的情况下,规避可能发生的中间人攻击。

密钥管理 - 如何管理密钥,包括生成,交换和存储密钥。

密钥协商协议 - 又称密钥交换协议,一个协商如何创建适合双方通信的密钥的协议。

相互认证 -如何沟通各方的信心创建在彼此的身份。

密码认证密钥协议 -创建使用密码钥匙的协议。

量子密码 - 量子力学的使用提供安全加密(老方法,而依靠单向函数)。

安全通道 - 一种在通信中防截获和防篡改的方式。

欺骗攻击

HTTP严格传输安全

参考资料

1. ^ Leyden, John. Help! my Belkin router is spamming me. The Register. 2003-11-07.

2. ^ Petmail Documentation: Steal People's Time To Solve CAPTCHA Challenges. [2008-05-19].

3. ^ CAPTCHA Effectiveness. 2006-10-25.

4. ^ PC stripper helps spam to spread. BBC News. 2007-10-30.

取自“中间人攻击oldid=40088488”

本页面最后修订于2016年5月13日 (星期五) 03:04。

本站的全部文字在知识共享 署名-相同方式共享 3.0协议之条款下提供,附加条款亦可能应用(请参阅使用条款)。

Wikipedia®和维基百科标志是维基媒体基金会的注册商标;维基™是维基媒体基金会的商标。

维基媒体基金会是在美国佛罗里达州登记的501(c)(3)免税、非营利、慈善机构。

0条大神的评论

发表评论