查看原文
其他

网络服务安全

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:16004488


微信公众号:计算机与网络安全

ID:Computer-network

Web是一种网络服务,也称WWW服务。它是企业、组织或个人发布信息的重要平台和信息化的核心。随着计算机网络和Internet的发展,企业信息化、电子商务和电子政务都需要借助Web服务,Web服务已成为企业及各种组织机构发布信息的最佳渠道。然而,由于各种原因,目前的Web服务还存在一些不安定因素,风险和威胁正阻碍着企业信息化、电子商务和电子政务普及的进程。另外,从网络最终用户角度看,不论是作为企业的一员还是网民个人,在使用互联网搜索资讯信息、与朋友(网友)社交聊天或购物时,这些服务可能被不法分子利用,借助技术或诱骗等手段实施一些恶意行为,如迷惑、诈骗。本文对以Web为代表的典型互联网服务中存在的安全问题进行分析,并对这些应用服务中的安全保障措施和方法加以介绍。


一、WWW安全


(一)Web与脚本程序安全概述


1、Web程序安全


Web是一种B/S的体系结构,即浏览器(Browser)/服务器(Server)结构,这与中央模式的计算机结构类似:有许多分布式的、功能单一的“瘦”客户端(浏览器),主要完成显示数据的功能;还有一个功能强大的“胖”服务器,完成主要业务的计算处理。


Web体系主要建立在World Wide Web(WWW)、超文本标记语言(HTML)以及超文本传输协议(HTTP)的基础上。除此之外,一个功能复杂的Web站点通常还包括Web服务器、Web应用程序和数据库等组件,如图1所示。

图1  一个典型的Web应用程序体系结构的端到端组件

(1)Web应用程序


Web应用程序是运行在Web服务器上的程序,也被称为业务逻辑模块,一个Web站点的主要功能都由其Web应用程序完成,早期的静态Web应用程序只有一层,提供用于显示的页面;后来随着Web应用程序的发展,功能越来越复杂与多样化,出现了多层的概念,这种多层的体系结构扩展了原本相对简单的东西,把它变成了一个动态引擎,可以与用户实时地交互。


多层的概念对理解Web应用程序的结构来说非常重要,与图1所示的Web体系结构相比,Web应用程序自身就可以展开为三层:表示层、业务逻辑层和数据层,如图2所示。

图2  Web应用程序的多层结构(以JSP为例)

其中,表示层的功能是接收用户请求,把用户提交的数据以适当的格式传递给业务逻辑层,待业务逻辑层返回结果后,以适当的形式显示给用户。业务逻辑层根据表示层传入的数据执行相应的操作,并把执行结果返回给表示层,业务逻辑层在执行操作时,有时会关系到易失数据的存取(持久化),该功能由数据层通过操作数据库完成。


把这三者分开实现有明显的优势,如提高Web应用程序的健壮性、伸缩性、可维护性等。


从理论上,Web应用程序分为三层,但现实中,许多广为使用的技术可以把其中的一层或者几层加以合并,模糊了层次的概念,如JSP(Java Server Page),可以在一个JSP文件中实现所有的表示层、业务逻辑层和数据层的功能。尽管如此,还是希望大家能够理解其中不同部分实现不同层次的分工。毕竟,Web应用程序的多层化是一个不可避免的趋势。


可实现Web应用程序的技术很多,表1中列出了一些已经被广泛接受和使用的技术及其供应商。

表1  Web应用程序的技术及其供应商

由于Web服务器和Web应用程序的界限很模糊,因此,一般不区分,而是统一称为Web站点,从Web安全的角度来说,Web服务器和Web应用程序的脆弱性是有区别的,都需要被重点关注。


(2)Web应用程序的安全性


Web应用程序的安全性主要包括代码访问的安全性和基于角色的安全性。


一般来说,这2种安全性可以互相渗透,熟悉代码访问安全性的开发人员可以轻松使用基于角色的安全性,而熟悉基于角色安全性的开发人员也可以轻松地使用代码访问的安全性。代码访问安全性和基于角色的安全性都是通过公共语言运行库提供的一个通用结构来实现的。


代码访问安全性和基于角色的安全性使用相同的模型和结构,因此,它们共享若干基础概念,包括安全权限、类型安全、安全策略、主体、身份验证及授权。


①安全权限


公共语言运行库允许代码仅执行其有权执行的操作。运行库通过权限对象实现对托管代码的强制限制,安全权限的主要用途如下。


代码可以请求需要的权限,.NET框架安全系统确定是否允许这样的请求。一般来说,仅当代码的验证区域值得授予这些权限时,系统才会授予权限。代码接收到的权限不会多于安全性设置所允许的权限。


运行库根据某些条件来授予代码权限,这些条件包括代码标识的特征、请求的权限和代码的信任程度(由管理员设置的安全策略确定)。


代码库要求其调用方法具有特定权限,如果在代码上设置了对特定权限的请求,则使用此代码库的所有代码也都必须拥有该权限才能运行。


调用方一般可以拥有三类权限,各类权限都有特定的用途,具体如下。


代码访问权限,表示对受保护资源的访问权或执行受保护操作的能力。


标识权限,表示代码具有支持特定类型的标识凭据。


基于角色的安全权限,确定用户(或者代表用户的代理)具有特定的身份,Principal Permission是唯一一个基于角色的安全权限。


运行库在很多命名空间中都具有内置权限类,并且该库还支持设计和实现自定义权限类。


②类型安全


类型安全又称为强类型,是指不可以将原始类型强制转换成另外一个目标类型,从而对这个转换后的原始类型进行目标类型定义的操作,通常来讲,类型安全值在变量类型定义后,不能再转换到其他类型(非本类型或非本类型的子类型)。


类型安全和内存安全的关系非常密切,类型安全的代码只允许访问那些授权可以访问的内存位置,例如,不能从其他对象的私有字段读取值。在实时(JIT)编译期间,可选的验证过程检查要实时编译为本机代码的元数据和中间语言(MSIL),以验证它们是否为类型安全,如果代码具有忽略验证的权限,则跳过此检查过程。


对于托管代码来说,类型安全验证不是强制的,但类型安全在程序集隔离和安全性强制中起着至关重要的作用。如果代码是类型安全的,则公共语言运行库可以将程序集彼此间完全隔离。这种隔离有助于确保程序集之间不会产生负面影响,从而提高应用程序的可靠性。即使类型安全组件的信任级别不同,它们也可以在同一过程中安全地执行。


如果代码是不安全的,则会出现副作用。例如,运行库无法阻止非托管代码调用本机(非托管)代码和执行恶意操作。所有非类型安全的代码都必须通过传递的枚举成员跳过验证(Skip Verification)授予安全许可(Security Permission)后才能运行。


③安全策略


安全策略是一组可配置的规则,公共语言运行库在决定允许代码执行操作时遵循该策略。安全策略由管理员设置,并由运行库强制执行。运行库帮助确保代码只能访问或者调用安全策略允许的资源或者代码。


每当加载程序集,运行库就会使用安全策略决定代码的信任程度和由此授予程序集的权限。


④主体


主体代表一个用户的标识和角色以及拥有的用户操作。.NET框架中基于角色的安全性支持3种主体:一般主体、Windows主体和自定义主体。需要注意的是,一般主体独立于Windows用户和角色存在。


Windows主体表示Windows用户及其角色。Windows主体可以模拟其他用户,这意味着此类主体在表示某一用户标识的同时,可代表此用户对资源进行访问。


自定义主体可由应用程序以任何方式进行定义,这种类型可以对主体的标识和角色进行扩展。


⑤身份验证


身份验证检查用户的凭据,并根据用户的权限进行验证,找到主体标识。身份验证期间获得的信息可以直接由代码使用。也就是说,一旦找到了主体标识,就可以使用.NET框架中基于角色的安全来确定是否允许主体访问代码。


目前,身份验证机制种类繁多,其中大多数都与.NET框架中基于角色的安全一起使用。最常用的机制有Passport机制、操作系统机制和应用程序自定义机制。


⑥授权


授权用来确定是否允许主体执行请求操作过程。在身份验证之后,用主体标识和角色信息来确定可以访问的资源,授权通过的.NET框架中基于角色的安全性来实现。

2、脚本程序安全


脚本语言是介于HTML、Java、C++和Visual Basic之类的编程语言之间的语言。HTML通常用于格式化文本和链接网页。编程语言通常用于向计算机发送一系列复杂指令。脚本语言也可以用来向计算机发送指令,但它们的语法和规则没有可编译的编程语言那样严格和复杂。脚本语言主要用于格式化文本和用编程语言编写的已编译好的组件。


(1)什么是CGI


在物理上,CGI是一段程序,它运行在Server上,提供同客户端HTML页面的接口。CGI是一种共用网关接口,称之为一种机制更为合适。因此,用户可以使用前面提到的不同脚本语言来编写合适的CGI程序。将已经写好的程序放在Web服务器的计算机上运行,再将其运行结果通过Web服务器传到客户端的浏览器上。


(2)CGI安全问题


在计算机领域,尤其在Internet上,尽管大部分Web服务器所编的程序都尽可能保护自己的内容不受侵害,但是只要CGI脚本中有一点关于安全方面的失误,如口令文件、私有数据等,就能使入侵者访问计算机。遵循一些简单的规则并保持警惕能使自己的CGI脚本免受侵害,从而可以保护自己的权益。这里说的CGI安全,主要包括2个方面:一是Web服务器的安全,二是CGI语言的安全。


一般来说,CGI问题主要有以下几类。


①暴露敏感或不敏感信息。

②默认提供的某些正常服务未关闭。

③利用某些服务漏洞执行命令。

④应用程序存在远程溢出。


3、CGI的漏洞


(1)配置错误


这里说的配置错误主要是CGI程序和数据文件的权限设置不当,这可能导致CGI源代码或敏感信息泄露。另一个常犯的错误就是安装完CGI程序后没有删除安装脚本,这样攻击者就可以远程重置数据。


(2)边界条件错误


这个错误主要针对C语言编写的CGI,利用这个错误,攻击者可以发起缓冲区溢出攻击,从而全面提升权限。


(3)访问验证错误


这个问题主要是因为用于验证的条件不足以确定用户的身份而造成的,经常会导致未经授权访问,修改甚至删除没有访问权限的内容。用于确定用户身份的方法一般有2种:一是账号和密码;二是session认证。而不安全的认证方法包括userid认证、cookie认证等。


(4)来源验证错误


较常见的利用这种错误进行攻击的就是DoS,即拒绝服务攻击,如灌水机,就是没有对文章的来源进行认证,利用CGI程序,从而不间断地发文章,最后导致服务器硬盘充满而挂起。


(5)输入验证错误


这种错误导致的安全问题最多,主要是因为没有过滤特殊字符,例如,没有过滤“%20”造成畸形注册;没有过滤“../”经常造成系统文件泄露;没有过滤欧元字符经常导致网页中的敏感信息泄露;没有过滤“;”经常导致执行任意系统指令;没有过滤“|”或“\t”经常导致文本文件攻击;没有过滤“‘”和“#”经常导致SQL数据库攻击;没有过滤“<”和“>”导致的Cross-Site Scriping攻击等。


(6)意外情况处理失败


这种情况也很常见,例如,没有检查文件是否存在就直接打开设备文件导致拒绝服务;没有检查文件是否存在就打开文件提取内容进行比较而绕过验证;上下文攻击导致执行任意代码等。


(7)策略错误


这种错误主要是由编制CGI程序的程序员的决策造成的,如原始密码生成机制脆弱导致穷举密码;在Cookie中明文存放账号密码,导致敏感信息泄露;使用与CGI程序不同的扩展名存储敏感信息,导致该文件被直接下载;丢失密码模块在确认用户身份之后,直接让用户修改密码而不是把密码放到用户的注册信箱,登录时采用账号和密码加密后的密码进行认证,导致攻击者不需要知道用户的原始密码就能够登录等。


(8)习惯问题


程序员的习惯也可能导致安全问题。如使用某些文本编辑器修改CGI程序时,经常会生成“.bak”文件,如果程序员编辑完后没有删除这些备份文件,则可能导致CGI源代码泄露。另外,如果程序员总喜欢把一些敏感信息(如账号密码)放在CGI文件中的话,只要攻击者对该CGI文件有读取权限(或者利用前面介绍的一些攻击方法)就可能导致敏感信息泄露。


(二)WWW安全增强手段


WWW安全对不同的人具有不同的含义:首先,对Web站点管理人员来说,最重要的是保证网站不被黑客攻击并摧毁,或者被用作突破其本地网(LAN)的网关;其次,对 Web用户而言,更关心确保安全地通过Web进行浏览,而没有人偷听其通信;最后,对电子商务的支持者来说,意味着安全地进行商务和转账操作。


下面集中探讨在接入控制和安全通信方面为 WWW 提供安全保障的技术和机制,实现WWW安全涉及到很多方面。首先,要有一个安全策略来界定操作的正误,分析系统可能受到的威胁,以及抵挡这些威胁的对策,并制定系统所要达到的安全目标;制定了安全策略之后,就要考虑主机安全、网络安全、管理安全和法律安全这几个相关的方面。安全策略负责制定安全目标,主机安全/网络安全机制则保证达到这一目标。其次,需制定管理安全规范,以确保技术上的安全得以实现。最后,法律安全可以保证任何非法操作和恶意攻击都会受到法律制裁。


根据以上讨论,增强WWW安全需要考虑以下五点:安全策略、主机安全、网络安全、安全管理和法律保障。


1、安全策略


如前所述,安全策略规定了计算机网络与分布式系统所要达到的安全目标,没有安全策略,安全也就无从谈起。安全策略中常常可以看到以下典型说法:“所有来自互联网的对内部资源的访问必须经过安全网关的严格认证”“所有机密信息在传输前必须经过恰当的加密”。安全策略必须根据实际管理要求而不是根据技术实施的难易程度来制定。


2、主机安全


主机安全的重担包括:如何认证用户身份,如何有效控制对系统资源的访问,如何安全存储、处理系统中的数据,如何进行审计跟踪。


上述问题在计算机界已经研究了很久,此方面的特别研究领域是如何对IT系统及产品进行安全评估和认证。目前,欧洲、美国和加拿大正合作制定通用标准(CC),1997年12月正式发布了CC第二版,并将其提交给ISO作为国际标准。然而,除了一些政府投资项目之外,在商业领域对IT系统产品进行的安全评估认证实际上从未真正开始过。其中,如何将安全评估和认证扩展到网络与分布式系统的评估与认证就一直是一个悬而未决的问题,除了TCSEC中有一些关于可信网络的描述(TNI)外,这一领域几乎没有任何的实质性进展。很多支持网络功能的操作系统只是在单机状态下进行过安全评估认证,最明显的例子是TCSEC C2对Windows NT的认证,要使这一评估具有商业价值,就必须修改安全评估认证标准,使之适用于网络与分布式系统。


3、网络安全


网络安全致力于解决诸如如何有效进行接入控制,以及如何保证数据传输安全性的问题。用网络安全的术语可以明确区分安全服务和安全机制的关系:安全服务,指用于达到安全策略的系统特征;安全机制,指为达到这一特性所依赖的某种具体机制或措施。


安全服务即所需要的安全程度,而安全机制则描述如何达到这一程度。例如,开放系统互联(OSI)参考模型的安全结构列举了五类安全服务:认证服务、数据机密性服务、数据完整性服务、访问控制服务、不可否认性服务。


网络用户必须能够自主选择与其安全要求相一致的安全服务。而不同用户或应用程序之间的安全要求是不同的。OSI安全结构还列举了一些用于实现安全服务的安全机制,特殊安全机制包括加密机制、数字签名机制、访问控制机制、数据完整性机制、认证交换机制、业务流量填充机制、路由控制机制、确认机制;与此相应的通用安全机制包括可信任功能、安全标签、事件检测、安全审计跟踪、安全恢复。


从应用角度讲,还应该把访问控制服务和通信安全服务区分开来。访问控制服务:从逻辑上分离基于TCP/IP的(内部)网,并对进入社团网络或称为内联网络(Intranet)的外部访问进行必要的控制。通信安全服务:用于保护网络间的通信,根据OSI安全结构,通信安全服务包括身份认证、数据机密性、完整性和不可否认性。


4、安全管理


任何用于主机安全和网络安全的技术解决方案都必须依赖安全管理规范的支持。在安全方面,人的行为仍是最重要的因素,教育和安全管理规范可以影响人的行为。教育因素非常重要,如果人们真正了解安全规范的重要性,就会利用而非极力避免这些安全规范。安全管理规范包括界定合法/非法操作各种条款,它的正确实施可以使非法操作更为困难。


5、法律保护


主机安全和网络安全技术有可能被攻击者击破,从而使安全保护受到威胁。与此相似,安全管理规范也可能无法弥补安全技术的缺陷。在这种情况下,能否用法律来惩罚攻击者就变得非常重要。因而,法律保证是计算机网络与分布式系统安全中的重要问题。同样,可以用下面的比喻来阐述:大家对邮件传送的过程都很熟悉,把信放在信封里,以保证内容机密,而且相信邮递员尊重信件的私密性,不会私自打开信封。如果我们发现信封在邮寄过程中被打开了,就可以怀疑邮递员未能尊重信件的私密性,甚至将邮递员告上法庭。同样,在WWW安全中也有类似的法律保障问题。而对不可抵赖性服务的需求是法律保障得以实现的驱动力量。


(三)Web欺骗技术与典型实例


1、Web欺骗技术


Web欺骗技术是一种在Internet上使用的针对WWW的攻击技术。这种攻击方法会泄露某人的隐私或破坏数据的完整性,危及到使用Web浏览器的用户。


(1)Web面临的安全威胁


越来越多的用户通过WWW获取信息,进行各种交流和交易,然而,很少有人意识到当他们使用WWW的时候,有少数“不法分子”正在窥视他们的一举一动,利用这一领域人们知识的缺乏和疏忽进行一些捣乱和破坏,主要表现在以下3个方面。


①Web页面的欺诈


Web站点的广泛利用诱惑着网上的欺诈行为。这种欺诈行为是由于铺天盖地的信息,让人们无法辨认其真假。类似的例子是张贴在街头的小广告,仅凭看到的一些信息,无法辨认哪些是真,哪些是假。而Web上,这种欺诈更加容易。


用户在使用计算机时,总是根据所看到的内容做出一些关于安全性的决定。比如,在看到银行的Web页面时,会输入自己在该银行的账户和口令,而很少去想,这个Web页究竟是不是来自银行的信息。


尽管目前已有一些安全的交易软件问世,但并不是每个站点都使用它。因此,要非常的小心,对于不安全的交易,在没有确定的情况下不要贸然输入自己的银行账号和口令,以防网上的欺诈行为。


②CGI(Common Gateway Interface)欺骗


另一类威胁来自于CGI脚本。许多Web页面允许用户输入信息,进行一定程度的交互,还有一些搜索引擎允许用户查找特定信息的站点,这些一般都通过执行CGI程序来完成。黑客可能会修改CGI程序来做不该做的事。一般这些CGI程序只在Web服务器的自身区域内搜索,但通过修改它们则可能到Web服务器以外去搜索。为了防止这一点,这些CGI程序的权限必须设得很低。


CGI程序是安全漏洞的主要来源。尽管CGI协议并不是固有的不安全,在编写CGI程序时仍要和使用服务器本身一样的小心。不幸的是,有的CGI程序缺少这样的标准,但Web管理员依然对之信任,并把它安装在他们的节点上,也没有意识到这个技术安全性问题。


③错误和疏漏


Web管理员、Web设计者、页面制作人员、Web操作员以及编程人员有时会无意地犯一些错误,导致一些安全问题,很多时候,这种错误本身就是一种威胁。编程的错误可能导致系统崩溃或是损害系统的安全。


安装和维护中的错误也会引起安全的问题。比如,在Java小应用程序中,如果在安装时将Java脚本对话框(在Network Security项下)禁止使用,则用户所受到的威胁就小很多。


(2)Web攻击的行为和特点


Web欺骗是指攻击者建立一个使人相信的Web站点的复制,这个Web站点复制就像真的一样,它具有所有的页面和连接。由于攻击者控制这个Web站点的复制,被攻击对象和真的Web站点之间的所有信息流动就都被攻击者所控制。


Web攻击技术使攻击者可以创建整个Web站点的“影子复制”。用户访问影子Web会经过攻击者的机器,这样攻击者可以监视被攻击对象的所有信息,包括账号和口令以及其他的一些信息。攻击者既可以假冒成用户给服务器发送数据,也可以假冒服务器给用户发送假冒的消息。总之,攻击者可以监视和控制整个过程。


①静态地观察


攻击者可以被动地观察整个数据流、记录浏览者所访问的页面和页面的内容。当浏览器填充某个表格的时候,输入的数据被传输到Web服务器,同时,攻击者可以将这些内容记录下来,还可以记录服务器的响应。大多数的在线商务都要填充表格,所以,攻击者很容易获得用户的口令。


即使在使用安全性连接的情况下,攻击者还是有可能取得某些重要的信息。安全连接对于攻击者来说,几乎没有什么防卫能力。


②实施破坏


攻击者可以随意地修改来往于浏览者和服务器之间的信息。例如,如果浏览者在线订货的话,攻击者可以改变产品号、数量以及接收地址。


攻击者也可以修改服务器发给浏览者的信息、插入误导性的数据欺骗浏览者或使用户不再信任这个服务器。


③攻击的简单性


也许会有人认为,攻击者伪装成整个Web站点是很困难的。事实不是这样,攻击者根本不需要存储整个Web站点的内容,因为整个的Web内容可以在线得到,攻击者只要及时取得所需的Web站点的页面就可以。


超文本链接安全完全可以帮助解决这些问题,并不需要太多的工作。


2、Web欺骗技术案例


Web欺骗技术的关键在于攻击者的Web服务器能够插在浏览者和其他的Web之间,如图3所示。

图3  攻击服务器截断正常的连接

(1)改写URL


攻击者的首要任务是改写某个页面上的所有URL,使这些链接都指向攻击者机器,而不是真正的服务器。假定攻击者的服务器在www.attacker.edu.cn上运行,那么攻击者要在页面上的所有URL前加上http://www.attacker.edu.cn。如原来的URL为http://home.netscape.com就变成http://www.attacker.edu.cn/http://home.netscape.com。


这并不是一件很困难的事,许多镜像站点和一些内部组织为了节省网络的支出和安全,常常将用户发出的URL改写为本地的一个服务器的地址,但用户往往不知道。


图4给出了当浏览者经过被改写的URL访问页面的时候发生的情况。因为这个URL以 http://www.attacker.edu.cn 开始,所有浏览者实际上是请求来自http://www.attacker.edu.cn的页面。这个URL的后半部分告诉攻击者的服务器去哪里取到真正的文档。

图4  Web欺骗攻击案例

浏览者请求一个Web页面,发生了下面的一些事情:浏览者请求来自于攻击者服务器的页面;攻击者服务器请求真正的服务器的相应页面;真正的服务器向攻击者服务器提供真正的页面;攻击者服务器重写页面;攻击者服务器向浏览者提供一个经过改写后的页面。


(2)开始攻击


为了开始攻击,攻击者必须诱惑被攻击对象连到攻击者假的Web页面上。为了做到这一点,攻击者可以使用下面的方法:攻击者可以把一个假的Web连接到一个流行的Web页面上去。如果用户支持Web的电子邮件系统,那么攻击者可以向被攻击对象发送含有一个指向假Web指针的邮件,或者干脆寄给用户一页假的Web内容,或者可以诱惑Web搜索引擎指向一个假的Web站点。


当浏览者浏览页面的时候,他实际上是向攻击者询问这个文档,攻击服务器再去真正的服务器上取回这个文档。


一旦攻击服务器从真正的服务器那里得到真正的文档后,它在这份文档的所有URL前面加上http://www.attacker.edu.cn来改写这个文档,攻击服务器向浏览者提供改写后的文档。


因为这个页面上的所有URL都指向http://www.attacker.edu.cn,如果浏览者激活这个页面上的任何链接的话,这些连接又会指向攻击者的机器。浏览者于是陷入了攻击者假的Web页面中,像进入黑洞一般,永远没有逃脱的机会,除非他已经发现被攻击的时候,浏览者的行为便逃不出攻击服务器的掌握。


①表格。如果攻击者在一个假的页面上填充一份表格,似乎被合适地处理了。其实表格也是被集成到基本的Web协议中,表格请求被编码成Web请求,而用普通的HTML回答,任何的URL都能被假冒。


当浏览者提交一份表格时,提交的数据被送到攻击服务器。攻击服务器能读到这些数据甚至能修改这些提交的数据,做一些恶意的编辑,然后才把表格提交到真正的服务器,在返回回答后,攻击服务器同样可以修改回答后再返回给浏览器。


②故意安全连接。这种攻击的可怕在于,即使客户使用安全连接进行预览也有可能被攻击。如果用户使用安全性连接访问一个假的Web页面,任何事情还是显示正常;页面会被传送,安全性连接指示器(通常为一个锁或者钥匙)也会打开。被攻击的用户的浏览器告诉用户连接是安全的,事实上,这种连接也是安全的,然而不幸的是,这种安全性的连接是连到http://www.attacker.edu.cn,而不是用户所想象的服务器。


(3)制造假象


到目前为止,所描述的攻击是很有效的,但不是完美的,因为还是有某些线索使用户发现被攻击了。然而,攻击者完全可以消除所有可能会留下的攻击线索。这种攻击证据不是很难消除的,因为浏览器很容易被控制。一个页面可以控制浏览器的行为,这通常被认为是很好的,但是当一个带有敌意的页面控制浏览器时,就可能是件很糟糕的事情了。


(4)保护方法


虽然Web欺骗是危险的而且几乎是不可察觉的,但还是可以采用下面的一些方法来进行保护。


①跟踪攻击者


为了进行攻击,攻击者的机器位置肯定要暴露出来,如果攻击被发现,是很容易找到这个位置的,可以使用网络监听或用netstat之类的工具找到攻击者所使用的服务器。但这不会有很多的帮助,因为对于一个熟练的攻击者来说,他很有可能是侵入了另一台机器,然后从这台机器开始攻击。即使发现这台机器也没有办法找到真正的攻击者,甚至他可以说是自己的机器被入侵了。


②短期解决办法


可以采用一些短期的方法来防止这种攻击:关闭浏览器的Java Script,使攻击者不能隐藏攻击的迹象;确信自己的地址行总是可见的;留意浏览器地址行上显示的URL,确信它们一定指向所想要的服务器。


这种策略可以大大减少被攻击的可能性。


目前,JavaScript、activeX和Java等都使假冒越来越方便,因此最好是在浏览器上全部关闭它们。尽管这样做会减少浏览器的功能,但还是值得的。只许在访问用户完全相信的服务器时才打开它们。


③长期的方法


可以通过改变浏览器达到一些目的。使用浏览器总是显示地址行也许会有些帮助,对于一个安全性的连接,可以改进安全性显示器。不仅是显示安全性指示器,浏览器也应当使用一种间接的方法来告诉用户连接的另一端是谁。


有3种方法限制,具体如下。


IP地址额、子网、域的限制。可以保护单个文档,也可以保护整个的目录,如果浏览器的IP不在授权的IP地址之列,它是无法与该文档进行连接的,即需要预先对允许的IP地址、子网和域进行授权。


用户名和密码。为获取对文档或目录的访问,需输入用户名和密码,这种方法也很有用。


加密。这是通过公开加密密钥技术实现的。所有传送的内容都是加密时,除接收者外无人可以读懂。


(四)电子交易安全


1、电子交易


电子交易是社会活动的主体(生产企业、商贸企业、金融机构、政府机构、事业单位、个人等)之间,通过计算机网络(特别是Internet),以电子数据流通的方式,按照一定的规则或标准进行的各种商务活动、金融活动和相关的综合服务活动。电子交易使用信息流、资金流和物资流三者融为一体,是一种新的商业运作模式。


电子交易应用与各行各业(包括政府机构和企事业单位),实现该领域中各种业务的电子化,包括电子贸易、电子转账、商品拍卖、在线资源利用、企业营销、售后服务等。电子交易使各种具有商业活动的实体(商业公司、工业企业、消费者等)双方或多方通过计算机网络,特别是通过Internet进行各种商务贸易活动。例如,销售前后的在线服务采用电子资金转账、信用卡、电子支票、电子现金多种方式支付,对货物进行发送管理和运输跟踪等。


2、电子交易组成


电子交易主要由采购者、提供商、支付结算中心、认证中心、物流中心和计算机网络组成。


①采购者(直接或间接用户):包括个人消费者或企业集团。只要通过电子交易系统购买商品(包括有形商品、无形商品和服务),即称其为电子交易系统中的采购者。


②供应商(含电子商厦):包括企业集团或政府部门。只要通过电子交易系统出售商品(包括有形商品、无形商品和服务),即称其为电子交易系统中的供应者。


③支付结算中心:包括完全在网上运作的网络银行和提供网上银行服务的传统银行,通过安全的支付网关24 h为电子交易系统中的采购者、供应者提供在线资金支付和结算、发放电子钱包、自行查询和管理账户服务。


④认证中心:是采购者、供应商和银行均信任的一些不直接从电子交易中获利的受法律保护承认的权威机构。它为用户、企业、银行发放和管理数字证书,以使网上交易的各方能够相互确认身份证交换信息的完整性。


⑤物流中心:根据供应者的送货请求,组织将无法从网上直接得到的有形商品送达采购者,并跟踪商品流向动态。


⑥计算机网络:是电子交易系统得以运行的技术基础,一般有Internet(互联网)、Intranet(企业内部网或称内部网)、Extranet(企业外部网或称外联网)和VAN(商业增值网)。


3、电子交易的安全需求


针对电子交易开展过程中可能发生的安全问题,为保证电子交易流程的安全、可靠,考虑到电子交易过程中涉及到的客户、商家、银行、认证中心等商务各方的安全需要,电子交易的安全需求可总结描述如下。


①保证网络上相关数据流的保密性。因为网上交易是交易双方的事,交易双方并不想让第三方知道他们之间进行交易的具体情况,特别是一些隐私信息,包括资金账号、客户密码、支付金额、支付期限等网络支付信息。但是由于交易是在Internet平台上进行的,使用明文在Internet上传送信息是很容易被别人窃取的,所以必须对传送的数据特别是敏感的资金数据流进行加密。


②保证网络上的相关商务数据不被随意篡改,即保证相关电子商务信息的完整性。数据在传送过程中不仅要求不被别人窃取,还要求数据在传送过程中不被篡改,能保持数据的完整,例如,一位先生在网络商城里在线订购了一套家具,本来填写的支付金额为820元人民币,最后发现被划去8 820元人民币或者被划到另外一个账号,当然会引起纠纷,让客户、企业双方均感别扭。


③保证电子交易各方身份的认定。在网上进行交易,交易双方一般互不见面,持卡人只知道商店的网址,不知道这个商店开在哪里,在网上没有方向、没有距离、也没有国界。所以,在电子交易中,参加交易的各方,包括商家、持卡人和银行必须要采取措施,如认证中心认证等认定对方的身份,正如传统商务中有工商部门颁发营业执照一样。


④保证电子交易行为发生的实时及发生内容的不可抵赖性。在网上交易中,客户与商店通过网上传送电子信息来完成交易,因此,必须为电子交易提供一种使交易双方在商务过程中都无法抵赖的手段,使电子交易能正常开展下去,比如数字签名、数字时间戳等手段。


⑤保证电子交易系统运行的稳定、可靠、快捷,做好数据备份与灾难恢复功能,并保证一定的商务处理速度。


4、保证电子商务安全的解决方法简述


针对电子交易各方的安全需求,提出采用以下7个方面的解决方法。


①电子商务业务流程中涉及各方身份的认证。如建立第三方公正的认证机构,使用X.509数字签名和数字证书实现对交易各方的认证,证实身份的合法性、真实性。


②电子商务相关数据流内容的保密性。使用相关的加密算法对电子商务数据流进行加密,以防止未被授权的非法使用者获取消息的真正含义。如采用DES私有密钥加密、RSA公开密钥加密、数字信封等保密手段。


③电子商务数据流内容的完整性。如使用数字指纹(即数字摘要)算法以确认电子商务信息(如电子合同)的完整性。


④保证对电子商务行为和内容的不可否认性。当交易双方因电子商务出现纠纷时采用某种技术手段提供足够充分的证据来迅速辨别纠纷中的是非。例如,采用数字签名、数字指纹、数字时间戳等技术并配合认证机构来实现其不可否认性。


⑤处理多方交易业务长的多边安全认证问题。这种多边安全认证的关系可以通过双重数字签名等技术来实现,如SET安全支付机制。


⑥电子交易系统中应用软件、支撑的网络平台的征程运行,保证电子交易转由应用软件的可靠运行、支撑网络平台的畅通无阻和正常运行防止网络病毒和黑客的攻击,防止商务处理的故意延缓和网络通道的故意堵塞等是实现安全电子商务的基础。例如,采用防火墙技术、用户与资源分级控制管理机制、网络通道流量监控软件、网络防病毒软件等方法。


⑦政府支持相关管理机构的建立和指定电子交易法律。建立第三方的公正管理和认证机构,并尽快完成相关电子商务的法律指定,利用法律来保证电子商务的安全运行。


二、域名服务安全


在互联网模型的应用层中,有几种应用是基于客户/服务器工作模式的。客户/服务器的工作模式又可以分为两类:一类是可以直接被用户使用的,如电子邮件等;另一类用于支持其他应用程序的工作,域名服务系统DNS(Domain Name System)就是这样一类,它用于支持电子邮件和Web访问等的应用。


(一)域名服务安全概述与增强手段


域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息。通常,网络用户通过UDP和DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需的相关信息,这是“正向域名解析”的过程。


“反向域名解析”也是一个查DNS的过程。当客户向一台服务器请求服务时,服务器方一般会根据客户的IP反向解析出该IP对应的域名。


1、DNS的安全隐患


DNS的安全隐患主要有以下几点。


①防火墙一般会限制对DNS的访问。

②DNS可能泄露内部的网络拓扑结构。

③DNS存在许多简单有效的远程缓冲溢出攻击。

④几乎所有的网站都需要DNS。

⑤DNS的本身性能问题关系到整个应用的关键。


2、DNS的安全威胁


DNS的安全威胁主要有以下几点。


①拒绝服务攻击。


②设置不当的DNS会泄露过多的网络拓扑结构。如果你的DNS服务器允许对任何人进行区域传输,那么整个网络架构中的主机名、主机IP列表、路由器名、路由器IP列表,甚至包括机器所在位置等可以被轻易窃取。


③利用被控制的DNS服务器入侵整个网络,破坏整个网络的安全完整性。当一个入侵者控制DNS服务器后,他就可以随意篡改DNS的记录信息,甚至使用这些被篡改的记录信息来达到进一步入侵整个网络的目的。例如,将现有的DNS记录中的主机信息修改成被攻击者自己控制的主机,这使所有达到原来目的地的数据分组将被重定位到入侵者手中,在国外,这种攻击方式有一个很形象的名称——DNS毒药,因为DNS带来的威胁会使整个网络系统中毒,破坏了完整性。


④利用被控制的DNS服务器,绕过防火墙等其他安全设备的控制。现在一般的网站都设置有防火墙,但是由于DNS服务的特殊性,在UNIX机器上,DNS需要的端口是UDP53和TCP53,它们都是需要有root执行权限。这样,防火墙就很难控制对这些端口的访问,入侵者可以利用DNS的诸多漏洞获取到DNS服务器的管理员权限。


如果内部网络的设置不合理,例如,DNS服务器上的管理员密码和内部主机管理员密码一致、DNS服务器和内部其他主机处于同一个网段、DNS服务器处于防火墙的可信任区域等,就相当于给入侵者提供了一个打开系统大门的捷径。


3、域名系统DNS的安全防范


域名系统DNS的安全威胁可分为两类:一类是入侵DNS服务器并篡改域名信息(域名劫持),对DNS客户机进行IP地址欺骗;另一类是对DNS服务器的流量放大攻击。


(1)对DNS系统的域名劫持攻击


前面讨论了动态域名系统DDNS的概念,由于互联网域名信息处于动态变化中,域名服务器系统要经常更新,以便让域名映射信息保持最新的状态。对访问DNS服务器的客户机的IP地址欺骗等恶意活动,称为“域名劫持”,如图5所示。

图5  DNS 服务器的映射表被黑客篡改导致的恶意攻击

设DNS服务器的域名映射表中的一条信息为“新浪网站的IP地址为211.95.77.13”,如果此映射信息中的IP地址被入侵的黑客篡改为一个恶意网站的IP地址,成为“新浪网站的IP地址是202.205.58.25”。当有一个客户机要访问新浪网站时,它从DNS服务器得到的目的IP地址为202.203.58.25,而不是新浪网站的211.95.77.13。结果客户机向此IP地址发出访问请求时,收到的却是恶意攻击或进入了不希望访问的网站。也有一些商业网站通过DNS服务器映射表的非法篡改,将自己的IP地址与点击率较高的著名网站域名绑定在一起,以此方式将大量客户机引向自己的商业网站。


要防止对DNS记录的非授权篡改,DNS的数据更新必须使用严格的安全认证技术。


(2)对DNS服务器的数据流放大攻击


对互联网上的DNS域名系统进行数据流放大攻击(DNS Amplification Attack)属于对服务器系统的泛洪攻击类型。这种攻击是利用DNS数据分组的大量变体,产生针对一个目标的大量虚假的通信流量。这种浪涌式的冲击流量可达每秒数千兆字节,造成网络拥塞,足以阻止任何人进入系统。


与老式的“smurf attacks”攻击非常相似,DNS放大攻击利用了无辜的第三方DNS服务器,诱骗它们向被攻击的DNS服务器发送虚假的数据分组来放大通信量,其目的是耗尽被攻击者的全部宽带。但是,“smurf attacks”攻击是向一个局域网内的广播地址发送数据分组以达到放大通信流量的目的,而DNS放大攻击不包括广播地址。攻击者冒充目标DNS服务器向互联网上的第三方DNS服务器发送小的和诱骗性的询问分组,分组的源IP地址是目标DNS服务器。这些第三方DNS服务器随后将向表面上提出查询的那台服务器发回大量的回复,导致通信流量的放大并最终把目标DNS服务器淹没。因为DNS主要是以无线连接的UDP数据分组为基础的,采取这种欺骗方式具有隐蔽性。


在这种放大攻击手段刚出现的时期,主要方法是对第三方DNS服务器发送60 byte左右的查询分组,然后服务器的回复分组最多可达512 byte,这可使回复流量放大8.5倍,再将这些回复分组引向被攻击的服务器。但是,这难以达到攻击者希望达到的淹没被攻击者的目的。最近,攻击者采用一些更新的技术把目前的DNS放大攻击的数据流提高了很多倍。


当前,许多DNS服务器支持EDNS技术。EDNS是DNS的一套扩大机制,通过一些选择参数能够让DNS回复超过512 byte,并且仍然使用UDP协议。攻击者只要发送一个60 byte的查询分组,就可获取一个大约4 000 byte的记录,由此把通信流量放大66倍。


要实现这种攻击,攻击者首先要找到互联网上几台实施循环查询工作的第三方DNS服务器,大多数DNS服务器都有这种设置。由于支持循环查询,攻击者可以向一台DNS服务器发送一个查询,这台DNS服务器随后把这个查询以循环的方式发送给攻击者选择的一台DNS服务器。接下来,攻击者向这些服务器发送一个DNS记录查询,这个记录是攻击者在自己的DNS服务器上控制的。由于这些服务器被设置为循环查询,这些第三方服务器就向攻击者发回这些请求,攻击者在DNS服务器上存储了一个4 000 byte的文本用于进行这种DNS放大攻击。


现在,由于攻击者已经向第三方的DNS服务器的缓存中加入了大量的记录,攻击者接下来向这些服务器发送DNS查询消息(带有启用大量回复的EDNS选项),并采取诱骗手段让那些DNS服务器认为这个查询信息是从攻击者希望攻击的那个IP地址发出来的。这些第三方DNS服务器就将这个4 000 byte的文本记录回复给被攻击者,由此产生大量的UDP数据分组将被攻击者淹没,对于某些目标的攻击甚至超过了10 GB/s的网络流量。由于发向被攻击者的响应分组是来自大量的第三方服务器,因此,较难追踪到真正的发动攻击者。


为了防御这种大规模攻击,首先要保证DNS服务器有足够的带宽,足以承受小规模的泛洪攻击,但要抵抗每秒数GB的DNS放大攻击是较困难的。另外,要保证能及时与互联网服务提供商ISP进行联系,一旦发生这种攻击,可以让ISP在上游过滤掉这种攻击包。要识别这种攻击,可以用Ethereal等网络协议分析软件工具查看包含DNS回复的数据分组(源UDP端口53),特别是要查看那些拥有大量DNS记录的端口。一些ISP可以在其整个网络上部署传感器以便检测各种类型的早期大量数据流,可以在用户发现这种攻击之前就抑制这种攻击。


最后,为了阻止黑客使用DNS服务器作为一个实施这种DNS放大攻击的代理,要加强登录系统的身份认证,保证只有授权用户可以从外网对DNS服务器执行循环查询。大多数DNS服务器拥有限制循环查询的能力,可设置为仅接受某些网络用户的查询。


在国外,很多互联网公司都已经非常重视网站DNS的安全,并将其视为保障网站系统稳定性的最重要的环节。但由于DNS的管理涉及很多专门技能,并需要网管人员根据网络安全的形势不断应付各种各样的潜在漏洞和危机。因此,很多专门从事DNS外包管理的公司应运而生。如美国亚马逊等很多电子商务网站都选择将DNS外包给专门公司进行管理。


(二)域名欺骗技术与典型实例


局域网内的网络安全是一个值得大家关注的问题,往往容易引发各种欺骗攻击,这是局域网自身的属性决定的——网络共享。这里所说的DNS欺骗是基于ARP欺骗之上的网络攻击,如果在广域网上,则比较麻烦。


1、DNS欺骗的原理


换个思路,如果客户机在进行DNS查询时,能够人为地给出我们自己的应答信息,结果会怎么样?这就是著名的DNS ID欺骗(DNS Spoofing)。


在DNS数据分组头部的ID(标识)是用来匹配响应和请求数据分组的。域名解析的整个过程如下。客户端首先以特定的标识向DNS服务器发送域名响应数据分组。这时,客户端会将收到的DNS响应数据分组的ID和自己发送的查询数据分组ID相比较,如果匹配,则表明接收到的正是自己等待的数据分组,如果不匹配则丢弃。


假如我们能够伪装DNS服务器提前向客户端发送响应数据分组,那么客户端的DNS缓存里域名所对应的IP就是我们自定义的IP了,同时客户端也就被带到了我们希望的网站。条件只有一个,就是我们发送的ID匹配的DNS响应数据分组在DNS服务器发送的响应数据分组之前到达客户端。具体的DNS欺骗原理如图6所示。

图6  DNS欺骗原理

2、DNS欺骗的实现


现在知道了DNS ID欺骗的实质,那么如何才能实现呢?这要分2种情况,具体如下。


①本地主机与DNS服务器,本地主机与客户端主机均不在同一个局域内。这种情况下实现DNS 欺骗的方法有以下几种:向客户端主机随机发送大量DNS响应数据分组,命中率很低;向DNS服务器发起拒绝服务攻击,太粗鲁;BIND漏洞,使用范围比较窄。


②本地主机至少与DNS服务器或客户端主机中的某一台处在同一个局域网内。这种情况下可以通过ARP欺骗来实现可靠而稳定的DNS ID欺骗。


首先我们进行DNS ID欺骗的基础是ARP欺骗,也就是在局域网内同时欺骗网关和客户端主机(也可能是欺骗网关和DNS服务器,或欺骗DNS服务器和客户端主机)。我们以客户端的名义向网关发送ARP响应数据分组,不过将其中源MAC地址改为我们自己主机的MAC地址;同时以网关的名义向客户端主机发送ARP响应数据分组,同样将源MAC地址改为我们自己主机的MAC地址。这样,在网关看来,客户端的MAC地址就是我们主机的MAC地址;客户端也认为网关的MAC地址为我们主机的MAC地址。由于局域网内数据分组的传送是建立在MAC地址上的,所以网关和客户端之间的数据流必须先通过本地主机。


在监视网关和客户端主机之间的数据分组时,如果发现客户端发送的DNS查询数据分组(目的端口为53),那么我们可以提前将自己构造的DNS响应数据分组发送到客户端。注意,我们必须提取由客户端发送来的DNS查询数据分组的ID信息,因为客户端是通过它来进行匹配认证的,这就是一个我们可以利用的DNS漏洞。这样,客户端会先收到我们发送的DNS响应数据分组并访问自定义的网站,虽然客户端也会收到DNS服务器的响应分组,不过已经来不及了。


如果你不幸被欺骗了,先禁用本地连接,然后启用本地连接就可以清楚DNS缓存。不过也有一些例外情况:如果IE使用代理服务器,欺骗就不能进行,因为这时客户端并不会在本地进行域名请求;如果你访问的不是网站主页,而是相关子目录的文件,这样你在自定义的网站上不会找到相关的文件,登录以失败告终。


3、域名欺骗案例


图7是域名系统DNS为电子邮件系统服务的例子。此应用中,DNS的客户/服务器程序帮助电子邮件程序查询到电子邮件接收者的IP地址。因此,电子邮件的用户只知道接收者的邮件地址,但是在互联网上传输邮件需要的是接收者的IP地址。用户代理就启动DNS客户软件,发送一个查询请求给本地的DNS服务器,将收件人的邮件域名地址映射为相应的IP地址,然后邮件程序SMTP才能将邮件进程传到下面传输层。在计算机的网络配置参数中,都要人工或自动地设置一个DNS服务器地址,作为本机上网的默认DNS服务器。

图7  域名系统DNS为邮件系统提供服务的例子

TCP/IP用IP地址唯一地标识互联网上的一台主机。但是人们使用域名比使用IP地址更方便,因此就需要DNS域名服务将域名转换为IP地址,或将IP地址转换为域名。在DNS服务器中有一个网络计算机的域名与IP地址的映射表,供客户进行查询。


由于互联网域名数量十分巨大,不可能只用一个文件来容纳互联网上所有的计算机域名和IP地址的映射关系,并且还要保持此映射表的时常更新。当前的解决方案是,将数量巨大的域名信息按区域类别划分为较小的部分,将不同的部分存储在不同的网络计算机内,构成一个层次结构的分布式系统。需要进行域名查询服务的计算机,可以向离它最近的并持有它需要信息的域名服务器联系。


域名系统DNS是一种服务于TCP/IP应用程序的分布式数据库,它提供主机域名和IP地址之间的转换,及有关电子邮件的路径选择信息。


三、电子邮件安全


随着Internet的发展,电子邮件作为一种方便、快捷的通信方式,已经从科学研究和教育行业逐渐普及到了普通用户,电子邮件传递的信息页从普通文本信息发展到包含声音、图像在内的多媒体信息,随着用户的增多和使用范围的逐渐扩大,病毒、木马等恶意程序也经常伴随电子邮件而来,保证邮件的安全性越来越重要。


(一)电子邮件安全概述


1、电子邮件安全概述


电子邮件E-mail,是一种利用计算机网络交换电子媒体信件的通信方式,是Internet上应用最广、最受欢迎、最基本的服务。


只要能够连接到互联网,拥有一个E-mail账号,就可以通过电子邮件系统,用非常低廉的价格、非常快的速度,与世界上任何一个角落的网络用户联络。这些电子邮件可以是文字、图像、声音等各种方式。与传统的邮寄信件相比,电子邮件具有使用简单、修改方便、投寄迅速、内容丰富,不受时间、地域、天气等限制的特点。此外,通过订阅一些免费邮件还能定期收到各种感兴趣的信息。电子邮件的广泛使用,使人们的交流方式得到了极大地改变,因而有人说,E-mail中“E”不仅仅代表Electronic(电子的),还代表Efficient(高效的)和Excellent(优秀的)。据统计,我国的上网用户中,有95.07%的人在使用电子邮件。


每一个申请Internet账号的用户都会有一个电子邮件地址,电子邮件地址的典型格式是xyz@abc.efg,@之前是用户名,@之后是提供电子邮件服务的服务商名称,如user@126.com。


(1)电子邮件系统的组成


E-mail服务是一个客户机/服务器模式的应用,一个电子邮件系统由两部分组成:


①客户端软件,用来处理邮件,如邮件的编写、阅读、发送、接收和管理(删除、排序等);


②服务器软件,用来传递、保存邮件。


(2)电子邮件的工作原理


电子邮件不是一种“端到端”(End to End)的服务,而是被称为“存储转发”(Store and Forword)的服务,这也是在很多系统中采用的一种数据交换技术,一封电子邮件从发送端发出,在网络传输的过程中,经过多台计算机的中转,最后到达目的计算机——收信人的电子邮件服务器,送到收信人的电子信箱。收信人可以在方便的时候上网查看,或者利用客户端软件把邮件下载到自己的计算机上慢慢阅读。


电子邮件的这种传递过程有点像普通邮政系统中常规信件的传递过程。信件发送者可以随时随地发送邮件,不要求接受者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的电子邮件服务器,存储在对方的电子邮箱中。接收者可以在方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件。


电子邮件利用服务器发送邮件、传递信息,电子邮件从一个网络传到另一网络,从一台机器传输到另一台机器,整个过程中它都是以明文的方式传输的,在电子邮件所经过的物理线路上的任一系统管理员或黑客都有可能截获和更改该邮件,甚至伪造某人的电子邮件。一些敏感信息(如商务合同、合同、账单等)很容易被人看见。通过修改电脑中的某些配置可轻易地冒用别人的电子邮件地址发送电子邮件,冒充别人从事网上活动,或把电子邮件误发给陌生人或不希望发的人,由于电子邮件是不加密的可读文件,收信人可以知道其中的内容,甚至可利用错发的信件做文章,这些情况已屡见不鲜。


因此,电子邮件的安全保密问题已越来越引起人们的关注。下面介绍电子邮件面临的漏洞和威胁。


2、电子邮件漏洞和威胁与相应的策略和保护措施


(1)电子邮件病毒


电子邮件可以携带病毒,这是由于邮件能携带Word文档或EXE可执行文件等附件,而Word文档可能携带宏病毒,EXE文件可能携带的病毒种类更多,所以,附带传送二进制数据时,传送的数据中很可能包含有病毒。事实上,由于很多用户使用MIME传送文档,电子邮件已经成为宏病毒传播的一个主要途径。在这种情况下,用户要防止病毒的感染,自身在处理电子邮件附件时需要十分小心,不要轻易打开和使用不明来意的邮件附件,系统管理员也可以在邮件系统中安装一些软件来防止病毒传播。


(2)MIME标题头中的恶意代码


MIME标题头读入内存时不检查它们的长度,可能导致邮件程序的缓冲区溢出,运行包含在附件中的任意代码。这些代码具有用户的所有能力,能执行重发邮件、改变文件,甚至格式化磁盘等破坏事件。对于这些安全问题,需要用户尽快使用软件的补丁程序,修正电子邮件程序本身存在的问题。


(3)电子邮件泄密


MIME不能解决Mail盗取问题,任何有访问邮件权限的人都能阅读邮件,这就造成了电子邮件的泄密问题。由于可匿名发信,用户不能保证来自From域的邮件地址的真实性,因此,对安全要求高的用户必须使用邮件加密和数字签名技术。实际上在Outloook Express中就可以很简单地发送带有加密和数字签名的邮件。


(4)电子邮件炸弹


“电子邮件炸弹”指电子邮件的发件人利用某些特殊的电子邮件软件,在短时间内不断重复地将电子邮件寄给同一个收件人。由于这些特殊的电子邮件软件可以在短时间内寄出成千上万封电子邮件给同一个收件人,其情形就像是战争时利用某种战争工具对同一个地方进行大面积轰炸,因此,称为“电子邮件炸弹”。


“电子邮件炸弹”不仅会干扰电子邮件系统的正常使用,也已影响到网络主机系统的安全。一般来说,“电子邮件炸弹”的“发件人”和“收件人”这2个栏目都填写受害者的电子邮件地址,这样当电子邮件系统已满,无法容纳任何电子邮件进入时,受害者所寄出的电子邮件就会进入死循环,永无休止地返回给自己。


(5)垃圾邮件


垃圾邮件(Spam)是指接收的用户不希望看到的邮件,如某些商业广告、邮件列表、电子刊物、站点宣传等,甚至是网上谣言。这些垃圾邮件充斥信箱,不但影响正常的通信,而且还要搭上不少时间和精力。


对于垃圾邮件,虽然可以使用邮箱过滤器、收件箱助理等方法来设防,但用户都是处于被动的位置,主动权始终掌握在垃圾制造者手中。要彻底摆脱垃圾邮件的骚扰,只有找到源头,通过掐断其传播途径才能达到目的。分析信头是追踪垃圾邮件的好方法。邮件软件在显示E-mail时,是不显示信头信息的,要看信头,需要进行相应的操作。


电子邮件在网上的邮件服务器之间传递,每经过一个服务器,该服务器就会在邮件信头加上自己的标识,因此,只要分析这些标记,用户就可以知道收到的电子邮件是从哪里发出、经过哪些服务器到达自己的信箱中的,然后通过过滤信件就能够摆脱垃圾邮件的骚扰。


(二)电子邮件欺骗技术与典型实例


电子邮件欺骗是在电子邮件中改变名字,使之看起来是从某地或某人发来的行为。例如,攻击者佯称自己是系统管理员(邮件地址和系统管理员完全相同),给用户发送邮件要求用户修改口令(口令可能为指定字符串)或在貌似正常的附件中加载病毒或其他木马程序(某些单位的网络管理员有定期给用户免费发送防火墙升级程序的义务,这为黑客利用该方法提供了可乘之机),这类欺骗只要用户提高警惕,一般危害性不大。


攻击者使用电子邮件欺骗有3个目的:


(1)隐藏自己的身份;


(2)冒充别人,使用这种方法,无论谁接收到这封邮件,都会认为它就是攻击冒充的那个人发的;


(3)电子邮件欺骗被看作社会工程攻击的一种表现形式。


例如,如果攻击者想让用户发给他一份敏感文件,攻击者伪装自己的邮件地址,使用户认为这是老板的要求,用户可能会发给他这封邮件。


但是这种欺骗对使用多个电子邮件账户的人来说,是合法且有用的工具。例如,你有一个账户yourname@E-mail.net,但是你希望所有的邮件都回复到yourname@ereply.com。你可做一点小小的“欺骗”使所有从E-mail.net 邮件账户发出的电子邮件看起来好像是从你的reply.com账户发出的。如果有人回复你的电子邮件,回信将被送到yourname@reply.com。要改变电子邮件身份,到电子邮件客户软件的邮件属性栏中,或者Web页邮件账户页面上寻找“身份”一栏,通常选择“回复地址”。回复地址的默认值,就是你的电子邮件地址和你的名字,你可以任意更改为你期望的内容。


目前,SMTP极其缺乏验证能力,所以,假冒某一个邮箱进行电子邮件欺骗并非一件困难的事情,因为邮件服务器不会对发信者的身份做任何检查。如果邮件服务器允许和它的25端口连接,那么任何一个人都可以连接到这个端口发一些假冒用户的邮件,这样邮件就会很难找到跟发信者有关的真实信息,唯一能检查到的就是查看系统的log文件,找到这个信件是从哪里发出来的,但事实上很难找到伪造地址的人。


电子邮件欺骗有3种基本方法,每一种有不同难度级别,执行不同层次的隐蔽。相似的电子邮件地址使用这种类型的攻击,攻击者找到一个公司的老板或者高级管理人员的名字。有了这个名字后,攻击者注册一个看上去像高级管理人员名字的邮件地址。他只需要简单地进入Hotmail等提供免费邮件的网站,测试这个账号,然后在电子邮件的别名字段填入管理者的名字。别名字段显示在用户的邮件客户的发件人字段中。因为邮件地址似乎是正确的,所以邮件接收人很可能会回复它,这样攻击者就会得到想要的信息。


当用户收到邮件时,注意到它没有完整的电子邮件地址。这是因为攻击者把邮件客户设成只显示名字或者别的名字段。虽然通过观察邮件头,用户能看到真实的邮件地址是什么,但是很少有用户这么做。电子邮件欺骗技术可通过以下方式实现。


1、修改邮件客户


当用户收到邮件时,没有对发件人地址进行验证或者确认,如果攻击者有一个像Outlook的邮件客户端程序,他能够指定出现在发件人地址栏中的地址。


攻击者能够指定他想要的任何返回地址。因此,当用户回信时,答复回到真实的地址,而不是到被盗用了地址的人那里。


2、远程联系,登录到端口25


邮件欺骗的一个更复杂的方法是远程登录到邮件服务器的端口25,邮件服务器使用它在互联网上发送邮件。当攻击者想发送给用户信息时,他先写一个信息,然后单击发送。接下来他的邮件服务器与用户的邮件服务器联系,在端口25 发送信息,转移信息。然后用户的邮件服务器把这个信息发送给用户。


因为邮件服务器使用端口25发送信息,所以没有理由说明攻击者不会连接到25,装作是一台邮件服务器。有时攻击者使用端口扫描判断哪个服务器25端口是开放的,一次找到邮件服务器的IP地址。


越来越多的系统管理员正在意识到攻击者在使用他们的系统进行欺骗,所以更新版的邮件服务器不允许邮件转发,并且一个邮件服务器应该只发送或者接收一个指定域名或者公司的邮件。


(三)配置Microsoft Outlook


正确配置Internet电子邮件信息服务,才能使用Microsoft Outlook发送和接收邮件。配置Internet电子邮件信息服务的步骤是:启动Outlook;在工具菜单上,单击以选择电子邮件账户;在电子邮件账户对话框中,单击选择“添加新的电子邮件账户”选项,然后单击下一步;在服务器类型对话框中,单击 POP3,然后单击下一步;在电子邮件账户对话框中,按照以下指导输入所需的信息。


1、用户信息


①您的姓名:应是姓名的全称。


②电子邮件地址:ISP 将提供此信息。电子邮件地址通常采用您的姓名与 ISP 的名称相结合的形式,中间用@符号和句点分开。例如,John Doe 使用的 ISP 的名称为 MYISP.NET,该ISP可能会为其分配John D@myispnet.net这样一个电子邮件地址。


2、登录信息


①用户名:这通常是电子邮件地址中 @ 符号左边的那部分。


②密码:您可以选择您的密码。


③您可以选中让Outlook记住您的电子邮件帐户密码的复选框。


3、服务器信息


①邮件接收服务器(POP3):这是 POP3 服务器的名称,此服务器在您将邮件下载到计算机前保存这些邮件。


②邮件发送服务器(SMTP):这是发送电子邮件的服务器名称。在邮件接收服务器和邮件发送服务器框中用小写输入服务器名称。这些名称的形式可以是mail.myisp.net,也可以是IP 地址的形式,如168.192.10.1。


4、单击测试账户设置


这是Outlook 中的一种新功能。此功能调出一个对话框,分步显示对您刚输入的配置进行的测试的每一个阶段。在您单击测试账户设置时,将发生下面的过程:


①您的系统到Internet的连通性得到确认;


②您登录到SMTP服务器;


③您登录到POP3服务器;


④如果需要首先登录 POP3服务器,即会这样确定,如果需要,Outlook将自动设置“发送邮件前请先登录接收邮件服务器”;


⑤发送测试邮件,此邮件说明 Outlook对您的初始安装所做的更改。


5、单击其他设置


这样就会转到Internet电子邮件设置对话框,在此可以进一步修改完善Internet电子邮件账户。


四、网络文件服务安全


网络文件系统(NFS, Network File System),是由Sun公司研制的UNIX表示层协议(Pressentation Layer Protocol),能让使用者访问网络上别处的文件,就像在使用自己的计算机一样。NFS是基于UDP/IP的应用,其实现主要是采用远程过程调用RPC机制,RPC提供了一组与机器、操作系统以及低层传送协议无关的存取远程文件的操作。RPC采用XDR的支持。XDR是一种与机器无关的数据描述编码的协议,它以独立于任意机器体系结构的格式对网上传送的数据进行编码和解码,支持在异构系统之间数据的传送。


网络文件系统是文件系统上的一个网络抽象,允许远程客户端以与本地文件系统类似的方式,通过网络进行访问。虽然 NFS 不是第一个此类系统,但是它已经发展并演变成 UNIX系统中最强大、最广泛使用的网络文件系统。NFS 允许在多个用户之间共享公共文件系统,并利用数据集中的优势,来最小化所需的存储空间。


(一)网络文件服务安全概述与增强手段


NFS是分布式计算系统的一个组成部分,可实现在异种网络上共享和装配远程文件系统。NFS由Sun公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813),其最大的功能就是可让不同操作系统的计算机共享数据,所以也可以将它看作是一个文件服务器。NFS提供除SAMBA之外,Windows与Linux、Unix与Linux之间通信的方法。


1、NFS网络文件系统的安全隐患


任何网络服务器都会有安全问题,NFS也不例外。由于设计方面的因素,NFS服务器不可能绝对安全。一般来说,不应该将NFS服务器运行在比较敏感的系统或者只有一般防火墙的机器上,应该尽量将其置于防火墙之后。配置安全的NFS服务器,可以从限制RCP服务的访问和控制文件系统的导出权限两方面着手。


2、NFS面临的安全隐患


因为 NFS 在网络上明文传输所有信息,按照默认设置,NFS 共享把根用户改成用户nfsnobody,它是一个不具备特权的用户账号。这样,所有根用户创建的文件都会被用户nfsnobody所有,从而防止设置setuid的程序被上传到系统。如果使用no_root_squash,远程用户就能够改变共享文件系统上的任何文件,把设置了特洛伊木马的程序留给其他用户,在无意中执行。


3、NFS服务器安全策略


①使用TCP_Wrappers


portmap和rpc.nfsd结合起来,使NFS服务器上的文件即使没有任何权限也能容易得到。可以使用访问控制保障网络安全,在使用NFS时最好结合TCP_Wrappers来限制使用范围。


②注意配置文件语法错误


NFS服务器通过/etc/exports文件决定要导出哪些文件系统,以及把这些目录导出到哪些主机上。编辑这个文件的时候要特别小心,不要添加额外的空格。


例如:/etc/exports文件的行和会使主机bob.example.com 能够共享/tmp/nfs/目录


/tmp/nfs/ bob.example.com(rw)——第三个斜线后面有个空格


但是/etc/exports 文件中行的情况却不同。它共享同一目录,让主机bob.example.com拥有只读权限,却给全局以读写权限。这全是由主机后面的一个空格造成的


/tmp/nfs/bob.example.com(rw)——第三个斜线后面没有空格   


使用showmount命令来校验哪些目录被共享,从而检查NFS共享配置是一个好习惯。showmount格式为showmount -e


③使用iptables防火墙


因为NFS在网络上明文传输所有信息,所以,让NFS服务器在防火墙后、在一个分段的安全网络上运行就很重要。无论何时,在不安全的网络上传递NFS信息都有被截取的危险。从这个角度讲,谨慎制定网络计划有助于防御重要的安全破坏。限制RCP服务访问的办法一般是使用防火墙,除了TCP-Wrapper之外,还有ipchians和iptalbes的防火墙。缺省的状态下, portmap使用111端口,而NFS使用2049端口,可以通过iptables来限制对该端口的访问


iptables -t filter -A INPUT -p udp -d 127.0.0.1 --dport 111 -j DROP

iptables -t filter -A INPUT -p udp -d 127.0.0.1 --dport 2049 -j DROP

iptables -t filter -A INPUT -p udp -s trusted_client -d this_server_ip --dport \2049 -j

ACCEPTiptables -t filter -A INPUT -p udp -s not_trusted_client -d this_server_ip -dport \2049 -j DROP


④把开放目录限制为只读权限


可以在/etc/exports文件中设定权限选项ro,通常需要把NFS服务器对客户开放的任何目录或文件系统设置为只读访问


/app devpc.nitec.com(ro)


这样,devpc.nitec.com网络中的客户只能对/app目录进行只读访问。


⑤禁止对某些目录的访问


当开放一个完整的文件系统或者一个目录时,缺省情况下它的子目录会自动开放访问权限。如果希望限制对其子目录的访问,可以使用noaccess访问选项,例如希望开放/pub目录权限但是禁止访问/pub/staff-only子目录


/pub Weblab-??.nitec.com (ro)

/pub/staff-only Weblab-??.nitec.com (noaccess)

其中,“??”代表任意字符。


⑥Root Squashing访问问题


按照默认设置,root用户的用户ID和组群ID都是0。root权限压缩(Root Squashing)把用户ID0和组群ID0映射为匿名的用户和组群ID,这样,客户上的根用户就不会在NFS服务器上具备根特权。如果这个选项被选,root用户就不会被映射为匿名用户,客户上的root用户就会对导出的目录拥有根特权。选择这个选项会大大降低系统的安全性。除非绝对必要,请不要选择它。为了明确执行该规则,可以修改文件/etc/exports


/www www1.nitec.com(rw, root_squash)


如果客户端的UID0(root)用户想要访问(读、写、删除)一个NFS文件系统,服务器端会用UID代替服务器的nobody账户。这样,客户端的root用户不能修改和访问服务器端root用户才能访问和修改的文件。


⑦使用nosuid和noexec选项


SUID(Set User ID)或SGID(Set Group ID)程序可以让普通用户以超过自己权限的形式执行。很多SUID/SGID可执行程序是必需的,比如上面提到的passwd。SUID/SGID程序会被一些恶意的本地用户利用,获取本不应有的权限。运行以下命令可以找到所有具有这一属性的程序


#find /\( -perm -4000 -o -perm -2000 \)


使用者必须查看这一列表,尽量减少所有者是root或在root组中却拥有SUID/SGID属性的文件,删除或对其属性进行更改。使用nosuid选项禁止set-UID程序在 NFS服务器上运行,可以修改文件/etc/exports加入一行


/www www1.nitec.com(rw, root_squash, nosuid)


上面的例子说明/www目录在www1.nitec.com上可以登录;www1.nitec.com的用户可以读取/www中的文件和目录,但是不能运行set- UID程序。


/www www1.nitec.com(rw, root_squash, noexec)


上面的例子说明/www目录在www1.nitec.com上可以登录,www1.nitec.com的用户可以读取/www中的文件和目录,但是禁止所登录文件系统中文件的执行。


NFS是非常重要的网络协议,许多企业通过NFS协议共享硬盘和其他设备。把能登录NFS目录设置为只读访问、提高portmap服务的安全性、squashing root访问、使用on set-UID和non executable文件设置可以提高NFS服务器的安全。


(二)网络文件系统典型配置实例


网络文件系统能够实现文件的共享,在不同的系统间使用,它的通信协议设计与主机及操作系统无关。当用户想使用远程文件时,只要用“mount”命令就可把远程文件系统挂接在自己的文件系统下,使远程文件与本地计算机上的文件一样。例如,在计算机A上,要把计算机B上的/usr/man挂接到A的/usr/man,只需执行命令mount B:/usr/man/usr/man即可。


用户不但可以mount(挂接)目录,而且可以挂接一个文件。在挂接之后用户只能对文件做读取(或者写入)的操作,而不能在远程计算机上把此文件或目录移动或删除,但是如果挂接/usr/man后,则不能再挂接/usr/man底下的目录,否则会发生错误。


NFS就是一种促使Servers(服务器)上的文件能被其他计算机挂接而达到资源共享的网络文件系统,使用这些文件的计算机称为Client(客户机),一个客户机可以从服务器上挂接一个文件或者一个层次的目录。然而,事实上,任何一台计算机都可以是NFS服务器或NFS客户机,甚至同时为NFS服务器和NFS客户机。NFS服务器所共享出去的文件或目录都记录在/etc/exports文件中,当启动NFS服务器时,脚本/etc/rc.d/rc会自动启动exports程序,搜索/etc/exports这个文件是否存在,并且赋予正确的权限给所有共享出去的文件或目录。


需要注意的是,只有服务器所共享出去的文件或目录,NFS客户机才能够挂接。同样,当启动客户机时,系统会自动去挂接所有服务器共享的目录或文件,而挂接到的所有路径都会记录在/etc/fstab下。


当客户机挂接一个目录或文件时,并不是说复制服务器上的这个目录或文件到本地的计算机上,而是在使用时从服务器上读取文件到本地的内存中,因此,可以用cd进入这个挂接到的目录,就如同进入本地的目录一样。


NFS在嵌入式开发当中的应用如下。


在嵌入式Linux系统中,编译的环境和运行的环境不一样,所以,需要交叉编译工具,一般是在PC上面运行交叉编译工具编译好程序,然后再烧写到目标板的Flash上,对于应用程序,需要频繁的调试,如果每次都需要烧写,那一定是一件很烦的事情。如果使用NFS文件系统,就不再需要上传和下载,直接可以看到并运行编译好的应用程序。比如,使用一台Linux主机来开发应用程序,目标板是一块运行嵌入式Linux操作系统的实验平台,都已接入局域网,IP分别是A和B。那么,修改Linux主机上的/etc/exports文件,添加一行(假设把我们交叉编译的文件cp到/opt下):/opt(rw)保存并退出,然后重新启动nfs服务以使更改生效。


$/etc/rc.d/init.d/nfsrestart


在实验平台的Linux里输入命令#mount–onolock–tnfs A:/opt/tmp


把Linux主机上的/opt目录,安装到目标板上的/tmp目录下。在Linux主机上交叉编译的程序就可以直接在实验平台上运行,主机上的任何程序错误的纠正、更改都可以立即反映到实验平台里面而不需反复进行费时的下载。


把NFS作为根文件系统挂载。


根文件系统相对内核和Boot Loader来说是比较大的,而且一般认为最有创造性的工作也是在这一部分完成的。很多Linux的应用都是包含在根文件系统里的,包括为人所熟知的QT。对这样大的文件系统,如果采用编译—下载—运行的方式来开发,那付出的精力将会是巨大的。通过 NFS,可以把文件系统先挂载到一个目录 rootimage 里,然后用 chroot 命令来把rootimage更改成根文件系统。这样的确可行,但可以采用更为直接的办法,只要重新配置内核(实验平台以经配好),就可以直接使内核通过NFS挂载目标根文件系统,而不需要采用挂载——切换的方式进行。


1、设置共享目录


设置共享目录的配置文件exports,指定共享目录及其权限。


#gedit/etc/exports


在该文件中添加


/root/fox/rootfs*(rw,sync,no_root_squash)


/root/fox/rootfs表示将要共享的的目录,它可以作为开发板的根文件系统通过nfs挂接;其中,*表示所有的客户机都可以挂接此目录;rw表示挂接此目录的客户机对该目录有读写的权力;sync——数据同步写入内存和硬盘。


no_root_squash——参数用来要求服务器允许远程系统以它自己的root特权存取该目录。即,如果用户是root,那么他就对这个共享目录有root的权限。很明显,该参数授予了目标系统很大的权利。安全性是首先要考虑的,可以采取一定的保护机制。


如果使用默认的root_squash,target board自己的根文件系统可能有很多无法写入,所以,运行会受到极大的限制。在安全性有所保障的前提下,推荐使用 no_root_squash参数。


2、启动NFS服务


可以通过命令行和图形界面2种方式启动NFS服务,建立NFS服务的目的是通过网络对外提供目录共享服务,但默认安装的Fedora系统开启了防火墙,这会导致NFS服务无法正常使用。因此,先关闭防火墙,在命令行输入“lokkit”命令,打开防火期设置界面,选择其中(*)Disabled,然后选择“OK”退出,这样就永久地关闭了防火墙。下面是启动 NFS服务的方法和步骤。


通过命令启动和停止nfs服务


在命令行下运行#/etc/init.d/nfs start


这将启动nfs服务,可以输入#mount-t nfs localhost:/root/fox/rootfs/mnt/命令检验nfs该服务是否启动。


如果没有出现错误信息,则可以浏览到/mnt目录中的内容和/root/fox/rootfs是一致的。


使用#/etc/init.d/nfs stop命令可以停止nfs服务。


3、通过NFS启动系统


当NFS服务设置好并启动后,就可以把NFS作为根文件系统来启动开发板了。通过使用NFS作为根文件系统,开发板的“硬盘”可以变得很大,因为您使用的是主机的硬盘,这是使用Linux作为开发经常使用的方法。设置开发板为SDBOOT启动,注意需要进入菜单模式,连接好电源、串口线、网线;打开串口终端,输入以下命令(不需要加引号)


console=tty SAC0

root=/dev/nfs

nfsroot=192.168.1.111:

nfsroot=192.168.1.111:/root/fox/rootfs

/root/fox/rootfs

ip=192.168.1.70:192.168.1.111:192.168.1.111:255.255.255.0:mini6410.arm9.net:eth0:off


各参数的含义如下。


nfsroot是开发主机的IP地址,如果使用了虚拟机,该地址是虚拟机中Fedora9的IP地址,总之,它是直接提供NFS服务的Linux系统IP地址。“ip=”后面:第一项(192.168.1.70)是目标板的临时IP(注意不要和局域网内其他IP冲突);第二项(192.168.1.111)是开发主机的IP;第三项(192.168.1.111)是目标板上网关(GW)的设置;第四项(255.255.255.0)是子网掩码;第五项是开发主机的名字(一般无关紧要,可随便填写),eth0是网卡设备的名称。


五、其他常用互联网典型应用服务安全


前面介绍了 Web 诈骗技术与典型的案例,主要是针对一般性网页的服务器攻击、URL地址篡改。下面对网民最常用的搜索页面、聊天工具软件页面的安全性问题展开论述,对其中出现的网络安全问题在技术防范和用户操作规避上加以介绍。此外,因为搜索引擎和即时聊天工具的安全问题大多牵扯到欺诈交易、套取账户、盗取网银、盗取虚拟财产等,不再单纯是技术问题,因此,虽然和前面的交易安全问题有相似之处,但这里介绍的应用服务安全更多是站在消费者用户角度。所描述的安全问题并不依赖技术的复杂,而大多利用社会工程学的原理,就是利用网民容易大意、疏忽的心理特征,从而对网民造成信息失窃、资金被盗等负面影响或损失。所以,在防范上,需要互联网应用服务提供商、专业安全软件提供商和用户三方共同努力,合力避免上述安全问题。


(一)搜索引擎服务安全


搜索引擎指自动从互联网搜集信息,经过一定整理以后,提供给用户进行查询的系统。搜索引擎一般使用爬虫(Spider)程序从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。全文搜索引擎是目前广泛应用的主流搜索引擎,国外代表搜索是 Google,国内则有百度搜索、360好搜等。


根据搜索结果来源的不同,全文搜索引擎可分为两类,一类拥有自己的检索程序(Indexer),俗称“爬虫”(Spider)程序或“机器人”(Robot)程序,能自建网页数据库,搜索结果直接从自身的数据库中调用,上面提到的Google、百度、360好搜就属于此类;另一类则是租用其他搜索引擎的数据库,并按自定的格式排列搜索结果,如Lycos搜索引擎以及360综合搜索。


搜索引擎是网民最常使用的互联网应用服务之一,搜索引擎服务存在的安全问题主要有以下几个方面。


1、利用搜索引擎优化(SEO, Search Engine Optimization)嵌入黑词黑链,篡改被访问网页


搜索引擎是对海量网页的导航,因此按照一定规律进行页面排序无可厚非,但如果把“假冒伪劣”的网页或非法广告的页面排在前面,则可能遭遇到搜索引擎安全隐患。常见的“假冒伪劣”网页如“黑词”、“黑链”。“黑词”是淫秽辱骂、不法言论等词语的俗称,“黑链”是违法分子制造的假冒网址网站,以诱骗网民。


黑词黑链是最为典型的网站篡改形式。通过在正常网站,特别是政府、高校等在搜索引擎中权重较高的网站中,嵌入黑词黑链,可以大大增加相关网站在搜索引擎中的排名和展现概率。而这些被嵌入的内容之所以被称为黑词黑链,一方面是因为黑词黑链大多指向钓鱼网站;另一方面是因为这些内容隐藏在网站源码中,正常浏览网页的用户看不到这些内容。


2、搜索引擎误收录“泛域名解析”


泛域名解析是一种网站篡改方式。黑客并非是去篡改某一个特定的网站,而是去篡改域名提供商的域名解析结果,也就是入侵和篡改DNS服务器的解析结果。黑客通过添加类似于“*.abc.com”这样的泛域名解析结果到指定IP的方法,达到截取流量或进行恶意攻击的目的。比如,当你在地址栏输入“sina.com”的时候,访问的是新浪官网;但如果你不小心输入错误,输入“s.sina.com”时,这个本来并不存在的域名就有可能被篡改过的DNS服务器解析到一个钓鱼网站上。在实际使用过程中,黑客一般是通过制造垃圾二级域名并被搜索引擎收录的方法,获取搜索引擎流量。


3、搜索引擎内链接遭劫持


这是一种比较特殊的篡改方式。黑客入侵某个网站后,会在网页中加入判断代码,如果用户的访问请求是来自搜索引擎,用户在点开这个网站时,就会被自动跳转到一个黑客指定的网站;而如果用户的访问请求不是来自搜索引擎,如用户在地址栏中直接输入这个网站的网址,则用户可以正常打开这个网站,不会被跳转。


4、问题的解决


上述搜索引擎遇到的问题,不单纯是技术问题。一方面是不法分子利用漏洞等对网站服务器进行攻击所致,另一方面是搜索引擎自身排序、解析跳转的安全检测机制存在不完善而导致。因此,此类搜索应用服务的安全问题不是单个应用服务商或网民自身能够解决的,需要各方的努力:


①浏览器软件厂商或搜索引擎服务提供商自身对恶意网址、被篡改网址的智能、准确识别可以降低用户误点击率;


②网站内网页的安全、网站的安全扫描需加强,必要时使用专业安全厂商的安全服务;


③网站代码的安全检测需加强;


④网民在使用搜索引擎时一定要谨慎,注意网址是否正常,最好使用专业安全防护软件、带有欺诈恶意网址识别的安全浏览器等。


(二)即时通信工具安全


即时通信(IM, Instant Message)是指能够即时发送和接收互联网消息等的业务。自1998年以色列的3个年轻人在互联网上推出全球首款即时通信软件——ICQ之后,即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。目前,在我国使用比较广泛的即时通信工具软件有PC端的QQ、旺旺、飞信、飞鸽,以及在移动客户端使用的微信、米聊,以及国外的Line、Whats App、MSN等。


即时通信工具是使用最为广泛的互联网应用服务之一,即时通信服务存在的安全问题主要有以下几个方面。


1、即时通信工具被利用为恶意软件传输通道


以计算机病毒、木马等为代表的各类恶意软件始终是最困扰个人用户安全的问题,而不法分子正是利用QQ等大众普遍使用的即时通信工具软件对所传输文件的安全性控制较松的机制,使用户或主动或被动地将有害程序传输给对方,从而影响、危害用户的计算机网络安全和个人账户里的资金安全,甚至借助QQ通信录里的人际关系实施欺诈、骗钱骗物。例如,盗号木马是QQ用户遭遇最为常见的恶意程序,也是QQ上传输的比较常见的恶意软件类型。


2、即时通信工具被利用为欺诈信息传播扩散源头


随着智能手机的逐渐普及,在PC+手机端的情况,即时通信软件的安全威胁不容乐观。根据北京市公安局网安总队猎网平台接收的受害者举报数据,社交工具已经成为了网络诈骗信息传播最主要的途径。


在即时通信工具软件上传播的不良信息、诈骗信息中,钓鱼欺诈网址和虚假兼职信息是2个主要的分类。


钓鱼欺诈网址是指不法分子伪装、仿冒正规网站进行的钓鱼网站诈骗。通过最近热门的关键词在QQ群、空间论坛等即时通信工具、社交工具软件进行推广,通过低价、折扣等方式来吸引用户下单购买。


虚假兼职信息是即时通信工具软件传播的另一主要欺诈信息。虚假兼职作为一种诈骗手法,顾名思义,是指骗子利用QQ、QQ群、邮箱等渠道发布虚假兼职广告,诱骗受害者上当。


虚假兼职诈骗的形式很多,最常见的是保证金欺诈和刷信誉欺诈。保证金欺诈是以工作“涉密”为由,要求兼职者先交保证金后再上岗,从而骗取兼职者上交的保证金。刷信誉欺诈则是以帮助店家刷高信誉值为由,要求兼职者在指定网店购物,并承诺退回本金和一定比例的佣金作为回报。而骗子让兼职者购买的商品往往是电话充值卡或游戏点卡,并以检验交易是否成功为由,向兼职者索要充值卡的卡号和密码。一旦兼职者将卡密码发给骗子,骗子便会将充值卡立即充值用掉。


3、即时通信工具面临的其他安全问题


由于即时通信软件工具在网民中使用的高覆盖率,因此,利用系统漏洞或者即时通信工具本身漏洞而实施的恶意攻击行为时有发生。例如,利用即时通信软件启动时的系统信息,恶意软件可以自启动一个套取用户账户信息的透明窗口,从而堂而皇之地骗取即时通信工具的登录信息。图8给出一个实际案例,图8中QQ登录窗口之上覆盖了一个恶意程序,该恶意程序是采用透明窗体,在QQ启动之后自启动,并强行或诱导获得用户鼠标输入光标,从而让用户主动把个人QQ账户密码信息输入到“骗子”的“伪装窗口”里。此外,还有直接仿冒即时通信工具软件的Web网站,也可以达到盗取用户即时通信软件账户信息的目的,如图9所示的QQ空间仿冒网址,如果没有被浏览器拦截提醒为“钓鱼网址”,部分网民极有可能上当受骗。

图8  恶意程序在QQ启动时覆盖套取用户账户信息的透明窗口

图9  钓鱼网站仿冒QQ空间对用户施行欺诈

4、问题的解决


和搜索引擎安全问题的解决相似,以 QQ、微信、旺旺、飞信、米聊等为代表的即时通信工具软件的安全问题也需要应用服务提供商、安全软件厂商、浏览器软件厂商、用户自身等各方提高安全意识,采取网址鉴别、诈骗信息关键词筛选、及时、多场景的安全警示提醒,才能最大程度避免即时通信用户遭受网络欺诈,以及其他不安全因素的影响。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存