Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160625
  • 博文数量: 24
  • 博客积分: 245
  • 博客等级: 二等列兵
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-08 14:48
文章分类

全部博文(24)

文章存档

2013年(21)

2012年(3)

我的朋友

分类: 网络与安全

2013-01-03 17:16:40

1. LEAP(LightWeight Extensible Authentication Protocol)轻量级可扩展认证协议
    是Cisco私有认证协议,2000年底,Cisco为了解决WEP协议中存在的诸多安全漏洞,开发了一套专用的EAP(可扩展身份验证协议)协议,这套协议被称作LEAP(轻量级EAP)。一年后,针对802.1x无线局域网环境的LEAP验证协议在企业市场占领了相当大的份额,这使得第三方的无线网络产品或集成的无线网络适配器受到威胁,因为这些产品都不支持Cisco专用的ACU(Aironet客户端程序)。
    到了2004年,Cisco宣布大约占领了60%的企业无线局域网市场,而同年根据Nemertes公司的调查显示,46%的企业IT管理者表示他们正在使用LEAP协议。之所以举出了这些数字,是因为LEAP的使用范围如此巨大,但是它本身却还存在着大量的安全漏洞,而安全正是企业在部署无线局域网是最担心的事情。更令人担心的是,采用LEAP协议的企业中,很少有企业能够针对LEAP的漏洞采取补救措施。
    从理论上讲,LEAP的弱点从一开始就存在了,因为它本质上就是一个增加了Dynamic Key Rotation(动态密码交替)和Mutual Authentication(互验证)功能的增强版本的EAP-MD5。由于EAP-MD5当初并不是针对一个不受信的无线网络环境设计的,而是针对一个带有一定等级的物理安全屏障的有线网络环境设计的,因此LEAP一开始就不应该被用于无线局域网身份验证任务。
    LEAP的基础也很薄弱,它本身无法抵御离线的字典攻击。因为它只是单纯的依靠MS-CHAPv2来保护用于无线局域网身份验证的用户证书。在安全领域,MS-CHAPv2的不足是人人皆知,因为它并没有在NT hashes中使用SALT,而是采用了2字节的DES密钥,而且用户名竟然是采用明文形式发送。正因如此,离线的字典攻击或者类似的暴力破解可以采用一个超大的字典库对该系统进行有效的破解。而人们原本以为强度很高的密码,在LEAP系统上完全失去了优势,有些密码几分钟就被破解出来了
    对于LEAP的漏洞,Cisco的官方态度多年来都没有变化,即只要企业使用足够强度的密码,并且保证企业内的电脑不会试图进行离线的字典攻击或暴力破解,就可以保证网络安全。虽然从技术角度讲,这些说法也没有错误,但是很少有企业拥有有效的密码强制策略,迫使用户都采用高强度的密码:至少10个字符,包含随机的大小写,数字以及特殊字符。
    实际情况是,大部分企业的密码都没有达到Cisco建议的强度,很多企业的用户密码都能在几天内被破解,有些甚至几分钟就被破解了。而那些拥有严格的密码策略的公司,则会出现员工将密码写在便条纸上,粘在显示器边框上的情况,因为定期更换的高强度密码实在是太难记住了。目前,我们已经进入到一个计算机性能超出普通人能力的时代,尤其是在对复杂密码的记忆方面。
    因此对于企业来说,需要一个验证协议,可以保护那些强度并不太高的密码,从而方便用户记忆。但是,虽然LEAP从一开始就带有一个强大的验证协议,但是很少有企业部署该协议,认为有了LEAP就足够了。如果忽视了这一点,企业就只好靠强壮的密码策略来保护自己了。而问题的复杂性在于,传统上认为的强壮的密码,对于如今一些先进的破解工具(如ASLEAP)来说,也是不堪一击的。大部分企业对此却一无所知。
    虽然Cisco连续两年表示LEAP有足够的安全性,但是有关LEAP漏洞的理论最终还是成为了现实。这要感谢一位叫做Joshua Wright的黑客,他开发的专门针对LEAP网络的ASLEAP可以让没有黑客技术的人也能成功破解采用LEAP协议的无线局域网。有鉴于此,Cisco不得不表示,如果企业无法或者不愿意采用高强度的密码策略,那么最好不要采用LEAP。 
    对于一个普通的黑客来说,使用一台普通的电脑,只需要数分钟就可以攻破大部分采用LEAP验证方式的企业无线局域网而不会被发现。这是因为攻击的过程完全是被动的,并且采用离线方式进行。更糟糕的是,由于大部分LEAP是与RADIUS服务器结合的,用户名和密码很可能与Windows Domain Authentication相同,或者与企业的其它数据库登录密码相同。这意味着黑客不仅可以轻易的进入企业的无线网络环境,还可以根据所破解的用户名和密码直接访问企业的关键数据和应用程序。
    这种结果比不采取任何加密措施更糟糕,因为这种LEAP攻击同时破坏了网络和用户证书。如果你对此还存有侥幸心理,可以了解一下ASLEAP的主要功能(来自ASLEAP的网页): 
  ◆破解薄弱的LEAP密码  
  ◆RFMON模式下读取来自任何无线网络接口的活动信息。 
  ◆监视单独的信道,或触发频道跳转以便察看目标  
  ◆在LEAP网络中取消用户的验证,迫使用户重新进行验证。这种方法可以快速捕获LEAP密码  
  ◆只选中使用LEAP验证方式的用户。  
  ◆读取libpcap文件,或者AiroPeek NX文件 (1.X 或 2.X 文件)  
  ◆使用动态数据库表和索引,实现快速查找大型文件。将搜索时间缩短到0.0015%。  
  ◆仅将LEAP交换信息写入libpcap文件。这一功能可以截获一些存储空间较小的设备(如iPaq)的LEAP证书,然后将这个LEAP证书存放在存储空间较大的系统的libpcap文件中。
  ◆在Windows系统下由于驱动问题,某些功能受到限制。希望能尽快完善。   
    如果你认为Joshua Wright开发这套工具是不道德的行为,那么我还要告诉你,Joshua Wright一直都表示,当Cisco开发并发布了针对LEAP漏洞的解决方案,那么他将马上收回ASLEAP。事实上,并不是ASLEAP的出现才暴露了LEAP的不足,在ASLEAP发布前,只要有一定的黑客基础,都可以攻陷LEAP网络
    2004年4月,Cisco发布了EAP-FAST,接着Wright先生发布了ASLEAP。不幸的是,大部分大型企业甚至还没来得及对这一新协议进行评估,因为对于大型企业来说,进行整个企业范围的协议变更是相当麻烦的事情。所以全球企业都面临了一个严重的问题:黑客已经拥有了攻击LEAP网络的强大武器,但是却很少有企业已经迁移到更安全的EAP协议,比如PEAP。  
    从黑客的角度讲,LEAP比理论上安全性更差的WEP更容易成为黑客的攻击目标,因为你只需要攻击WEP网络十分之一的时间来攻击LEAP,就可以获得比前者多一倍的成果。具有讽刺意味的是,对一个标准的WEP无线网络进行攻击,你会发现你需要整天坐在电脑前收集上百万条数据包。虽然理论上可以在半个小时内破解WEP,但是一般来说,没有10个小时,你很难成功。  
    相反,如果使用ASLEAP攻击LEAP,则只需要数分钟就可以成功。因为你可以将某个用户踢下网络,然后监视他的重新登录的过程,然后立即进行密码破解。在最糟糕的情况下,一个黑客也能在几分钟内记录到企业无线网络的LEAP认证线程,然后回家将信息存入性能更强的台式机上,通过巨大的字典库对收集到的信息进行暴力破解。一觉醒来,电脑上就会列出一系列用户名和密码明文。实际上,由于ASLEAP可以在普通的台式机上实现每秒4500万密码匹配,因此整个破解过程根本不需要一夜的时间。
    在LEAP开始流行的时候,另一个更古老的EAP,即EAP-TLS (传输层安全)也开始快速发展。由于EAP-TLS并不依赖用户密码,因此这种协议可以很好的防止密码攻击。EAP-TLS所依赖的是服务器端和用户端的证书交换验证,以及安全密钥交换。不幸的是,这种方式需要企业在服务器端部署PKI(公钥架构),这对于不少企业来说是个麻烦。  
    最后,Funk Software与Certicom合作推出了一个新的IETF标准,称为EAP-TTLS(隧道传输层安全)。EAP-TTLS只需要验证服务上的数字证书即可,而客户端不再需要数字证书,这大大降低了该方案的部署难度。  与之类似,微软,Cisco和RSA合作,推出了一个“轻量级”的EAP-TTLS,也就是PEAP。PEAP本质上与EAP-TTLS类似,同样可以降低身份验证过程中对客户端的需求。随着技术的发展,由于Windows XP Service Pack 1中集成了PEAP客户端,因此PEAP日益成为一个主流的无线网络安全协议,而Funk的产品也可以支持PEAP了。  
     也许有人会问,为什么企业没有全部采用PEAP验证,从而避免被攻击或者避免用户证书和敏感数据的丢失。这个问题很复杂,一方面是企业对于安全方面不够了解,另一方面是Cisco的大力宣传让企业认为LEAP是足够安全的。另外,很多企业不愿意在验证服务器上安装数字证书,因为这需要他们每年向公众的CA机构缴纳300美元费用,企业也不愿意自己在企业内部安装一个PKI。不管原因如何,目前确实仍然有大量的公司的无线局域网在使用LEAP验证,而等待他们的很可能就是黑客攻击。对于不断出现的LEAP遭到攻击的情况,Cisco最终表示建议用户安装基于PKI的PEAP以及所为“免PKI”的EAP-FAST协议,而后者在安全性上的问题也并不少。
    对于企业无线局域网来说,Cisco LEAP验证方式确实是一个很大的安全威胁。一般人们对于无线局域网安全性的关注都集中在安全加密组件方面,而忽视了验证组件的安全。如果你的企业正在使用LEAP,建议将网络认证协议从LEAP迁移到PEAP, EAP-TLS, 或者EAP-TTLS。
2. EAP-FAST (基于安全隧道的灵活认证,Flexible Authentication via Secure Tunneling)
    是一个由Cisco提出的协议方案,用于替代LEAP。设计该协议是为了解决LEAP实现“轻量级”时的缺点。在EAP-FAST中使用服务器证书是可选的。EAP-FAST使用一个保护访问凭证(Protected Access Credential,PAC)来建立TLS隧道,并通过该隧道对客户端证书进行验证。EAP-FAST拥有三个阶段。 阶段0是一个可选的阶段,在该阶段PAC可以是手工或者动态设置,EAP-FAST已经被标准化,在RFC-中定义。PAC典型地只需要为RADIUS服务器和客户端设置一次。 在阶段1中,客户端和AAA服务器使用PAC来建立TLS隧道。 在阶段2中,客户端证书在该加密的隧道中进行传输。当自动PAC设置开启之后,EAP-FAST拥有一个小漏洞。攻击者可以拦截该PAC并随后使用它来获得用户证书。 该漏洞可以通过手动配置PAC或者在PAC配置阶段使用服务器证书来解决。还有一个漏洞:黑客的AP可以使用同一个SSID,拒绝用户PAC并提供新的PAC。大多数恳求将会被设置来使得用户接收它。如果用户不这样做,那么用户将使用内部方法发送他的证书给黑客。而黑客将会获得明文的密码(EAP-FAST w/GTC)或者易受字典攻击的MSCHARPv2散列。值得一提的是,PAC文件的发放时基于每个用户的。这是RFC-第7.4.4节中的要求,因此如果一个新的用户从设备进入网络,他首先需要一个新的已配置的PAC文件。这是为什么很难不以非安全匿名设置模式运行EAP-FAST的原因。另一种方式是使用设备密码来替代,但这就不是在网络中对用户进行认证了。EAP-FAST可以不使用PAC文件,则为普通的TLS。
    在ASLEAP的威胁下,Cisco不得不开发了新的通过安全隧道灵活验证的EAP方式,即EAP-FAST协议,并将其提交给了IETF。根据 Cisco的市场销售宣传,EAP-FAST是一个“像PEAP一样安全,像LEAP一样方便”的协议。EAP-FAST可以像PEAP那样建立一个安全的加密通道,保护验证线程中的用户证书传递,而不需要客户端甚至服务器端具备PKI。我见到这种宣传语的第一个自然反映就是怀疑。当然,其它一些方法,比如安全密钥加密,也可以实现不需要PKI的安全密钥交换,但是还没有一种方法可以简单的实现大范围的部署。难道EAP-FAST真的可以实现这一突破么?
    EAP-FAST在普通操作模式下和PEAP类似,有两个主要阶段。第一阶段是建立一个安全的加密隧道,第二阶段是通过 MS-CHAPv2线程在验证服务器上对客户端身份进行验证。由于 MS-CHAPv2是一个相当脆弱的协议,通过字典攻击很容易被破解,因此第一阶段建立的安全加密隧道为MS-CHAPv2线程提供了一个安全的环境。与PEAP不同的是,EAP-FAST采用PAC(受保护的接入证书)来建立隧道,而PEAP则是采用服务器端的数字证书建立TLS隧道(与安全的Web服务器工作方式类似)。验证服务器的EAP-FAST Master Key会为每个用户提供一个特殊的PAC文件。而配发这个PAC的过程可以被认作是“阶段0”(也就是自动提供),或者通过其他一些方式,比如通过移动存储设备传输,通过管理员建立的共享文件夹,或者有用户限制的共享文件夹。
    如果仔细阅读Cisco提供给IETF的EAP-FAST协议草案,不难发现,EAP-FAST与Cisco的市场宣传还是有比较大的出入的。虽然从技术上说,EAP-FAST“可以”和PEAP一样安全,也“可以”和LEAP一样简单,但是Cisco的市场宣传并没有指出,用户不可能鱼与熊掌兼得。
事实上,为了让EAP-FAST达到与PEAP相同的安全级别,它必须采用在“阶段0”采用“服务器端验证的Diffie-Hellman模式”,即需要服务器端的数字证书。如果看过本系列的前几篇文章,你就会知道,对于服务器端数字证书的需求是很多用户放弃PEAP的主要原因。虽然Cisco表示采用PAC方式并不需要服务器端的数字证书,但是近乎手动实现的PAC文件配发,其中的不确定因素更多。另一方面,虽然EAP-FAST PAC参考机制可以通过安全的方式自动提供密钥 ,但它仅限于维护PAC,并不能解决首次的PAC文件发布问题。
    为了要实现如LEAP般的简单,EAP-FAST必须在“阶段0”采用匿名的Diffie-Hellman模式。而匿名的Diffie-Hellman密钥交换意味着用户并不知道交换的另一端到底是谁。在这种情况下,黑客可以假装成阶段0的接入点和验证服务器,然后等待对此毫不怀疑的用户进行阶段0的连接,接收用户以明文发送的用户名和经过哈希计算的密码。由于服务器是伪造的,因此服务器必定无法响应,此时阶段令0会被用户放弃。不过这时候黑客已经获取了足够多的MS-CHAPv2线程的信息了,他只需要使用ASLEAP进行离线的字典攻击即可。由于大多数用户的密码不够强壮,因此很快黑客就可以获取到用户的证书并成功进入企业无线局域网。
    根据EAP-FAST IETF草案的说明,一旦出现这种情况,用户应该立即更换密码。但是EAP-FAST客户端对此并没有明确的提示,也没有自动警告用户和管理员,或是强制进行密码修改。虽然这种比较便利的EAP-FAST方式在自动配发PAC是会出现漏洞,但是起码有两个因素使得他比LEAP要更安全一些。
   ◆首先,PAC文件的发布只会执行一次,用来建立服务器和客户端的PAC。之后建立的EAP-FAST线程都会绕过“阶段0”。而LEAP则是每次都要面临风险。每次用户在与radius服务器进行无线局域网接入验证时,都会出现类似的风险。
   ◆其次,就在在阶段0的匿名Diffie-Hellman模式下,黑客如果要攻击必须采用主动方式,这就会暴露黑客的行为。而LEAP的攻击要相对隐蔽。
    虽然与LEAP相比进步很大,但是EAP-FAST的安全性仍然不如EAP-TLS, EAP-TTLS,或PEAP。不过EAP-FAST的验证线程速度较快,因为它采用的是对称加密,而不是EAP-TLS, EAP-TTLS,或PEAP所采用的非对称加密,但是这这种速度优势并没有什么实际意义。我曾经使用一款266 MHz PDA进行PEAP验证测试,这是能采用EAP验证协议的最低端配置,但是我并没有感觉PEAP验证速度有任何延迟。我觉得,如果用户使用笔记本进行PEAP验证,与EAP-FAST验证相比,速度可能仅仅会延迟几个毫秒。我所关心的另一个问题是部署的速度,在这方面EAP-FAST依然处于劣势。
    根据宣传,EAP-FAST是“像LEAP一样简单”的,但是事实上并非如此。根据Cisco自己的EAP-FAST开发指南 ,用户不应该完全依赖PAC文件自动配发,因为这会给黑客的主动型攻击提供机会。
注意:由于阶段0的PAC配发是通过MS-CHAPv2验证进行防护的,而MS-CHAPv2很容易遭受字典攻击,因此我们建议您在首次部署EAP-FAST时尽量少用自动发布功能。在大范围部署EAP-FAST后,应该采用手动配发PAC方式,以确保PAC的最佳安全性。
    根据这些信息,我们可以发现,EAP-FAST的部署并非一帆风顺。用户最终还是会回到手动配发PAC文件的地步,以确保整个系统的安全性。而合法用户也必须要承担维护网络安全的责任,因为谁都不愿意看到多个用户使用一个相同的PAC登录。
    读过了Cisco文档中的手动PAC配发章节,对于安全的部署EAP-FAST的工作量,我们就更吃惊了。根据我多年来部署EAP-TLS和PEAP的经验,我可以肯定的告诉大家,安全的部署EAP-FAST,通过手动方式实现PAC配发,绝对是部署安全验证项目中的一件最重的体力活。而在部署PEAP的过程中,如果已经从CA机构获取了数字证书,那么整个过程会相当简单。
如果企业不乐意每年花300美元从CA机构获取数字证书,还可以自己建立一个CA或者通过活动目录生成一个自签名的数字证书。如果企业采用的是Windows NT域,或者是非Windows用户,并不支持自动部署根证书,那么PEAP服务器的“.cer”公共证书文件也可以通过企业内部网页发送到每个客户端,再由客户端手动添加到CTL(证书信任列表)中。对于最后一种方法,我们也完全没有必要担心“.cer”文件会被黑客利用,因为这个文件中仅包含了1024bit的公钥内容,根据这些内容,几乎没有可能成功破解。
    对于大范围部署EAP-FAST和配发PAC,你必须建立和管理成百上千个独立的用户私钥。不要指望可以通过企业内部网络和活动目录实现这些用户私钥的自动配发,因为每个PAC都是不同的,必须手动输入到每个用户的笔记本中的Cisco ACU(Aironet Client Utility)中才可以生效。我想你也会理解为什么我一看到Cisco的EAP-FAST宣传语“像LEAP一样简单”就会发笑,因为EAP-FAST的部署甚至比在一个受控环境中部署EAP-TLS还要麻烦。
    由于EAP-FAST不支持较老的Cisco Wi-Fi设备,因此用户需要使用近年来推出的Cisco Wi-Fi产品。Cisco EAP-FAST还需要用户使用基于Cisco ACS (Access Control Server)的昂贵的验证平台,这种平台的灵活性和易用性都不如微软的RADIUS server IAS (Internet Authentication Service)。以上观点都是来自那些管理过这两种平台的IT人员。另外,Cisco的客户端还不支持“机器登录”,这种方式可以在用户还没有登录Windows时就对该系统进行身份验证。对于企业来说,有这种功能是相当重要的,因为它可以使登录脚本以及组策略更好的工作。Cisco的网站上也建议用户,如果需要使用机器登录功能,可以选择使用Microsoft Wireless Client。
    那么,在没有PKI的环境下,Cisco的EAP-FAST验证协议真的如其所说是一种优秀的密钥交换协议吗?我想大家的答案肯定都是否定的。读过了这篇文章或者Cisco的EAP-FAST开发手册,也许大家都会有这样一个疑问:为了在验证服务器上避免使用数字证书,为了不在企业内部安装PKI Certificate Authority或者不希望每年花300美元获取CA机构的数字证书,而采用Cisco EAP-FAST,是否真的值得呢?如果你指望通过Cisco EAP-FAST来降低工作的难度,那你就大错特错了,因为如果你要实现PEAP那样的安全性,就绝不会像Cisco宣传的那样“像LEAP一样简单”。 在我看来,最佳的解决方案就是使用PEAP验证。




阅读(6391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~