文章目录
计算机网络安全
第一章 绪论
1.1 计算机网络概述
传统电信网络和有线电视网络,计算机网络融合,即三网合一
计算机网络的定义:由通信信道连接的主机和网络设备的集合。
计算机网络组成:由若干节点和连接这些节点的链路组成
英特网是全球最大的,最开放的互联网,它采用了TCP/IP协议作为通信的规则,前身是美国的ARPANET.
为进行网络中的数据交换而建立的规则、标准即称为网络协议。
网络协议三要素:语法、语义、同步
对于非常复杂的计算机协议,通常采用分层结构。
在计算机网络中,将计算机网络的各层及其协议的集合,称为网络的体系结构。
著名的两个体系结构:OSI 和 TCP/IP
在体系结构的框架下,网络协议可定义为:为网络中互相通信的对等实体间进行数据交换而建立的规则、标准和约定;
实体:任何可以发送或接收信息的硬件和软件进程(就相当于一个特定的软件模块,位于不同子系统的同一层次内交互的实体,称为对等实体)
1.2计算机网络安全分析
因特网容易被攻击的特性:
1)分组交换
2)认证与可追踪行
3)尽力而为的服务策略
4)匿名与隐私
5)对全球网络基础实施的依赖
6)无尺度网络
7)互联网的级联特性
8)中间盒子
计算机网络安全:计算机网络中硬件资源和信息资源的安全性
网络是否安全主要通过安全属性来评估;
早期一种主流观点认为,安全属性主要包括:机密性(confidentiality or security)、完整性(Intergrity)、可用性(Availability),CIA;
1)机密性
2)完整性:
系统完整性:系统不被非授权地使用
数据完整性:信息保持完整、真是或未受损状态
3)可用性:资源只能由合法的当事人使用
4)不可否认性:通信过程中,对于自己所发送或者接受的消息不能否认
不可否认性的保护措施:数字签名,可信第三方认证技术
5)可靠性:系统可以在一个相对长的时间内持续工作而不被中断
6)可信性:含义不同一(主流观点认为:可信性包含可靠性、可用性、安全性)
著名网络安全专家总结网络空间安全为:
在信息通信技术的**硬件、代码、数据、应用 ** 4个层面
围绕着信息的获取、传输、处理、利用 4个核心功能
确保网络空间的
机密性、可鉴别性(包括完整性、真实性、不可抵赖性)、可用性(可靠性、稳定性、可维护性、可生存性)、可控性 4个核心安全属性
网络攻击:
根据发起攻击的来源:外部攻击、内部攻击、行为滥用
从攻击对象和被攻击对象的影响:主动攻击、被动攻击
主动攻击:伪装、重放、修改报文、拒绝服务
被动攻击:监听传输的报文内容、通信流量分析
网络安全通信模型:
第二章 密码学基础知识
2.1 密码学基本概念
密码技术:密码技术通过对信息的变换或编码,将机密的敏感信息变换成攻击者难以读懂的乱码型信息。
**密码系统:**也称为密码体制,用数学符号描述为:S = {M, C, K, E, D}
M:明文空间,即需要隐藏的信息
C:密文空间,密文是被加密后的明文
K:密钥或密钥空间,密钥是指控制加密算法和解密算法得以实现的关键信息,可分为加密密钥和解密密钥,两者可相同也可不同;
密码算法:明文和密文之间的变换法则,E是加密算法,D是解密算法。解密算法是加密算法的逆运算,且其对应关系是唯一的。
密码学组成:
密码编码学:对信息进行编码实现信息隐藏的一门学科;
密码分析学(俗称密码破译):指的是分析人员在不知道解密细节的条件下对密文分析
密码系统的设计要求:
①系统即使达不到理论上不可破译,也应该是实际上不可破译的(也就是说,从截获的密文或某些已知的明文和密文对,要决定密钥或任意明文在计算上是不可行的);
②加密算法和解密算法适用于所有密钥空间的元素;
③系统便于实现和使用方便;
④系统的保密性不依赖于对加密体制或算法的保密,而依赖于密钥的保密(著名的Kerckhoff原则,现代密码学的一个基本原则)。
密码系统的保护策略:基于算法保密的安全策略,基于密钥的保护的安全策略
2.2 古典密码体制
古典密码系统中广泛使用的两种运算:
代换密码
将明文中字母由另一个或另一组字母替换。
单表代换密码
只使用一个密文字母表,并且用密文字母表中的一个字母来代换明文字母表中的一个字母。具有代表性的密码是凯撒密码(Julius Caesar)。
例子:
明文:ATTACK AT DAWN
密文:XCCXQJ XC MXBF
根据密文字母表,一一映射为密文字母。
凯撒密码:
原理:明文中的字母在密文中用该字母循环右移k 位后所对应的字母替换,其中 k 就是密钥。
例如,令 k = 3
明文:ATTACK AT DAWN
密文:DWWDFN DW GDZQ
多表代换密码
一个字母可以使用不同字母代替,其优点是容易将字母的自然频度隐蔽或均匀化。
维吉尼亚密码:一种典型的多表代替密码
置换(换位)密码
将明文中的元素重新排列。
2.3 现代密码系统概述
根据密钥数量和工作原理,现代密钥系统可以划分为:对称密钥系统、公开密钥系统
对称密钥系统
特点:加密密钥和解密密钥一样,如凯撒密码、维吉尼亚密码
对明文信息加密主要采用2种方式:序列密码和分组密码:
1.序列密码(或流密码)
原理:
1)以明文的比特为加密单位,用某一个伪随机序列作为加密密钥,与明文进行异或运算,获得密文序列;
2)在接收端,用相同的随机序列与密文进行异或运算便可恢复明文序列。(异或运算:相同得0,相异得1)
序列密码算法的安全强度完全取决于伪随机序列的好坏
优点:
1)错误扩散小(一个码元出错不影响其它码元);
2)速度快、实时性好;
3)安全程度高。
**缺点:**密钥需要同步
2.分组密码
原理:
1)在密钥的控制下一次变换一个明文分组;
2)将明文序列以固定长度进行分组,每一组明文用相同的密钥和加密函数进行运算。
最典型分组密码是DES数据加密标准,它是单钥密码体制的最成功的例子。
公开密钥系统
双钥密码体制(奠定了公钥密码系统的基础),每个用户都有一对密钥:
1)一个是公钥(PK),可以像电话号码一样进行注册公布;另一个是私钥(SK),由用户自己秘密保存;
2)两个密钥之间存在某种算法联系,但由一个密钥无法或很难推导出另一个密钥。
又称为公钥密码体制或非对称密码体制。
1.安全性
整个系统的安全性在于:从对方的公钥PK和密文中要推出明文或私钥SK在计算上是不可行的。
2.特点
将加密和解密能力分开
1)多个用户加密的消息只能由一个用户解读:保密通信;
2)只由一个用户加密消息而使多个用户可以解读:数字签名认证。
2.4 典型公开密钥
1.RSA公开密钥密码系统
RSA体制基于“大数分解和素数检测”这一著名数论难题:
1)将两个大素数相乘十分容易,但将该乘积分解为两个大素数因子却极端困难;
2)素数检测就是判定一个给定的正整数是否为素数。
2.RSA密钥产生过程
知识基础:
1)欧拉函数φ(n)是小于等于n的正整数中与n互质的数的数目。
举例来看:
- φ(1)=1**,唯一和1互质的数就是1本身;**
- φ(8)=4,因为1,3,5,7均和8互质。
如果p是质数,φ§=p-1.
如果p,q都是质数,φ(pq)=(p-1)(q-1).
2)欧几里德算法又称辗转相除法,用于计算两个整数a, b的最大公约数。
其计算原理依赖于下面的定理:gcd (a, b**) =** gcd (b, a mod b)
RSA密钥产生过程如下
①生成两个大素数 p 和 q;
②计算这两个素数的乘积 n= p * q;
③计算小于n并且与n互质的整数的个数,即欧拉函数 φ(n) = (p - 1) *(q - 1);
④随机选择一个加密密钥e,使e满足1< e < φ(n),并且e和φ(n)互质;
⑤利用欧几里德扩展算法计算e的逆元d,以满足: e * d mod φ(n)= 1
⑥公钥PK={e, n};对应的私钥SK={d}
根据密钥产生过程,举例来看:
①选择素数**😗* p=17,q=11
②计算 n = pq =1711=187
③计算 φ(n)=(p–1)(q-1)=1610=160
④选择 e**:gcd(e,160)=1;选择** e**=7**
⑤确定 d:d*****e mod φ(n)=1 , 因为 23 * 7 mod 160 = 1,所以d选择23
⑥公钥 PK={7,187}————{e,n}
⑦私钥 SK={23}————{d}
再举个例子:
①选择素数**😗* p=47,q=71
②计算 n = pq =4771=3337
③计算 φ(n)=(p–1)(q-1)=4670=3220
④选择 e**:gcd(e,3220)=1;选择** e**=79**
⑤确定 d:d*****e mod φ(n)=1 , 因为( ),所以d选择( )
⑥公钥 PK={70,3337}————{e,n}
⑦私钥 SK={1019}————{d}
3.RSA加解密操作(见书P64)
4.RSA安全性与不足
随着计算机处理能力不断提升,解决一个大数分解问题所需要的时间越来越少。
所以对n值的要求越来越高,目前普遍认为,为了确保安全,n的值应该取到1024位,最好能够到达2048位。
缺陷:
加密操作和解密操作都涉及到复杂的指数运算,处理速度很慢;
与典型的对称密钥系统DES相比,即使是在最理想的情况下,RSA也要比DES慢上100倍。
第三章 认证与数字签名
3.1 散列(哈希)函数
散列函数也称“哈希函数”或“杂凑函数”:应用于长度任意的数据块时将产生固定长度的输出。
h = H(M)
h 称为散列函数的结果,称为散列值、散列码、报文摘要(Message Digest)或消息摘要,对于特定的散列函数H,h 的长度是固定的;
H代表散列函数;
M代表任意长度的数据;
散列函数的安全性需求:
一个函数如果是抗强碰撞的,那么一定也是抗弱碰撞的。
3.2 消息认证
消息认证:通信双方对各自接收的消息进行验证,确定消息的一些属性是否真实的过程。
消息属性:发送/接收方的身份,内容的完整性,消息的顺序等
1.报文源认证
1)首先可以采用公开密钥密码系统来实现对报文源的认证
发送方用私钥SK对消息加密,接受方用发送方的公钥PK解密;
如果解密成功,说明消息是A发送的(因为只有A拥有PK对应的私钥SK)
2)也可以采用对称密钥系统的扩展来实现
双方拥有同一个密钥,对其他人保密;
明文加密、解密都通过这个密钥完成;
攻击者可以截获消息,将消息保存在随后的时间发送给B,因此无法保证消息的发送方是A;
解决办法:通过标识号标识用户身份,将标识号ID与消息M拼接,再去加密。
以上两种方法均不能应对重放攻击。
2.报文宿的认证
报文宿的认证是对报文接收方的身份进行认证,具体来看,它指的是消息的接受方在收到消息以后判断报文是否是发给自己的。
认证方式同报文源认证一样
1)公开密钥密码系统:用对方的公钥加密
2)对称密码密钥系统:共享密钥,将对方身份标识号与K一起加密
3.报文内容认证
即接受方接收到报文,验证报文在传输过程中的完整性没有受到破坏,也称为“完整性检测”。
1)利用哈希函数验证消息的完整性(对称密钥)
M代表消息 h=H(M) A,B共享密钥K
1)A使用加密函数E,将M与散列值h1拼接,发送
2)B用解密函数D提取消息,利用哈希函数获取哈希值h2
如果h1=h2,则消息没有篡改。
保障机密性和完整性,但不能保证不可依赖性。
2)哈希函数+报文宿认证(公开密钥密码系统)
M代表消息 h=H(M) 私钥SK,公钥PK
1)A利用B的公钥PK加密,
2)B利用私钥解密,再对照哈希值
同样只能保证机密性和完整性
3)哈希函数+报文源认证
M代表消息 h=H(M) 私钥SK,公钥PK
1)A利用自己私钥SK加密
2)B利用A的公钥解密,再对照哈希值
这样只能保证不可否认性,不能保证机密性
3.3 数字签名
前面的方法可以保证消息不被第三方攻击,但是不能处理通信双方自己的产生的攻击。
假如A和B用哈希函数+共享密钥的方法,那么问题来了:
1)B可以伪造一条消息并称该消息来自A,因为B只需自己产生一条消息,再用共享密钥对消息的散列码加密附加在消息后即可
2)A可以否认曾经发送过某条消息,因为B可以用共享密钥伪造消息,所以无法证明A发送过
1.基本概念
签名是证明当事者的身份和数据真实性的一种信息;
以计算机文件为基础的现代事务处理(电子商务、电子政务、电子金融)中,需要采用电子形式的签名进行用户身份认证,即数字签名(Digital Signature) ;
一个完善的数字签名要保证:
1)签名不能伪造
2)签名不可抵赖
3)签名不可改变(文件签名后是不可改变的,这保证了签名的真实性、可靠性)
4)签名容易验证(任何第三方都可以准确、有效仲裁)
5)签名不可重复使用
2.过程
数字签名体制包括2个过程:施加签名,验证签名
施加签名:
假设施加签名的算法为SIG,A的私钥是SK,被签名的数据为m,产生的签名的信息为s;
SIG(SK,m) = s;
验证签名:
验证签名的算法为VER,A的公钥是PK,被签名的数据为m,产生的签名的信息为s;
如果能通过A的公钥还原出m,或者其他标识m的信息,则可推断m源于用户A
这样,利用公开密钥密码系统进行数字签名,由于私钥为签名者所有,因此其他人难以伪造,签名者也无法否认自己的签名。
同样,由于公钥完全公开,任何人都能验证签名者的签名。
为了防止在数字签名后,被签名的数据遭到修改,需要为签名算法怎加一项限制条件,m′≠ m时,有:SIG(m ′ ,K) ≠ SIG(m,K),即S ≠S ′
3. 加密解密(见书P93)
4.总结
数字签名保证不可抵赖性,基本方法是用自己特有的(只有自己知道)私钥进行加密,这样就能保证独一无二,相当于验证消息的发送方。
数字签名无法保证机密性,因为公钥完全公开,所有用户都可以通过签名回复签名的消息。
如果要①认证消息的发送方 ②确保消息的机密性 就必须:
1)发送方用自己的私钥对消息进行签名
2)再使用接受方的公钥对数字签名进行加密
相当于A先签名后加密;B先解密后验证
3.4 身份认证
用来描述认证用户是否有权操作系统;
对信息系统进行安全防护,常常需要识别与检查用户的身份,即身份认证;
身份认证的本质:认证方提供标识自己身份的信息,然后信息系统对所提供的信息进行验证。
身份认证涉及两个方面内容:识别和验证
1)识别:识别是指要系统需要确定被认证方是谁,即必须对系统中的每个合法用户都有识别能力。
要保证识别的有效性,必须保证任意两个不同的用户都不能具有相同的识别符。
2)验证:验证是指在访问者声称自己的身份后(向系统输入它的识别符),系统还必须对它所声称的身份进行验证,以防假冒。
即口令认证、信物认证、地址认证、用户特征验证4种
补充:第五种 密码学认证
即主要基于密码技术的用户认证协议进行用户身份的认证
要能抵抗口令猜测、地址假冒、中间人攻击、重放攻击等
常用的密码学认证协议有一次性口令认证、基于共享密钥的认证、基于公钥证书的认证(CA第四章介绍)、零知识证明和标识认证等
一次性口令指的是,口令是动态变化的,同一时间同一事件下,这一次输入的口令是有效的。
第四章 PKI与数字证书
用户的公钥是公开的,如果公钥的真实性和完整性受到网络攻击的威胁,则基于公钥的各种应用的安全性受到危害。
例如下个攻击过程:
1)攻击者将公钥PK发送给A,并谎称这是B的公钥
2)如果B信以为真,那么之后在需要采用公钥加密的方法传输信息时,将使用PK
3)那么攻击者就可以结果B发给A的消息,用PK对应的私钥解密,就完成了一次攻击。
分析:
这属于公钥伪造的问题,根本在于用户难以验证公钥的隶属关系的真实性;
因此必须由可信第三方将公钥和用户的身份信息绑定在一起,并进行数字签名,这就是数字证书的概念。
解决措施:
1)为了确保数字证书的真实性,数字证书必须由一个所有用户都相信的机构颁发,由其验证和担保;
2)同时为了防止他人伪造或者篡改数字证书,这个权威机构还必须在数字证书上签名,以保证证书的真是性和完整性。
这个所谓的权威机构我们就叫作数字证书认证中心(Certificate Authority, CA,简称认证中心);
有了证书以后,涉及证书的申请、发布、查询、撤销等一系列管理任务,需要一套完整的软硬件系统、协议、管理机制来完成这些任务,由此产生了公钥基础设施(PKI)。
4.1 密钥管理
采用基于密钥保护的安全策略,就需要管理大量的密钥,密钥管理包括密钥的产生、存储、分发、组织、使用、停用、更换、销毁等一系列问题,涉及每个密钥的从产生到销毁的整个生命周期。
这里主要介绍公开密钥体制中的分发问题:
1)选择一个密钥后以物理的方式传送给B。
2)第三方选择密钥后以物理的方式传送给A和B。
3)如果A和B先前或者最近使用过一个密钥,则一方可以将新密钥用旧密钥加密后发送给另一方。
4)如果A和B到第三方C(密钥分配中心,KDC)有加密连接,C可以通过该加密连接将密钥传送给A和B。
1)、2)种是人工交付,在现代计算机网络以及分布式应用是不现实的
3)可用于连接加密,或者端到端加密,但是如果攻击者成果获得一个密钥,将导致随后的密钥泄露
4)是目前被广泛使用的方式,但需要一个密钥分配中心,KDC,且每个用户都需要和密钥分发中心共享唯一密钥。
4.2 数字证书
数字证书时一个可信任的权威机构签署信息的集合,如公钥证书(Public Key Certificate, PKC)、PGP证书、SET证书等。
这里只介绍公钥证书,数字证书类比为用户在网络上的身份证;
一般包含持证主题身份信息,公钥信息,CA信息以及附加信息,再加上CA私钥对上述信息的签名;目前最广泛的证书格式是国际电信联盟的X.509标准中定义的格式;
4.3 PKI
通俗而言,PKI就是一个标准的公钥数字证书管理平台
1.PKI系统构成:
1)签证机构(CA)
CA是所有注册用户所依赖的权威机构,包括签发、管理和撤销证书;
为确保证书的真实性和完整性,CA需要再给用户签发证书时加上自己的签名;而为了方便用户对证书的验证,CA也给自己颁发证书;
对于大范围的应用,建立一个管理全世界所有的PKI是不现实的,因此需要采用分级管理(例如一个全国性行业,国家->省份->地区->企业->……);层次模型:
假如验证C1证书的真伪,就用签发证书的CA的公钥验证;
而CA的公钥保存在对这份证书签名的C2内,故需要下载C2证书;
以此类推,一直验证到根CA(签发者),根CA也成为“信任锚”;
怎样解决不同CA之间的信任关系?
两种方式
1)权威证书列表
即把多个CA证书机构内受信用的,含有公钥信息的证书都安装到验证证书的应用中(典型应用:Web浏览器);
验证过程:
a.假设网站已经向证书颁发机构CA申请了自己的证书(颁发机构用自己私钥签名的网站信息和对应公钥的记录);
b.用户想使用安全的https协议访问这个网站,那么浏览器就会要求网站提供其数字证书(CA颁发的);
c:如果浏览器中安装了机构CA的根证书,则可以用其公钥来验证证书的真伪;
认证成功则访问;验证失败,浏览器认为是假冒该网站的攻击者。
问题:
a.浏览器用户自动信任预安装的所有证书,即使这些受信任的CA没有一个是“不称职的”(例如:CA没有认真核实被其认证的服务器),就存在安全隐患;
b.如果用户在浏览器中不小心安装了一个“坏的”CA证书,则改CA签发的所有证书都不可信,这严重威胁用户的信息安全(例如:“坏的”CA进行中间人攻击).
2)双向交叉认证
即将无关的CA连接在一起,建立起信任的关系,彼此可以进行安全认证。
对于内部不采用层次结构的组织以及组织之间,森林模型
实现交叉认证方式有:
1)各PKI的CA之间互相签发证书,从而在局部建立起信任关系
2)用户控制交叉认证,即让用户自己决定信任那个CA或者拒绝哪个CA,通过用户的操作将CA连接起来,实现不同CA域的互联、互信任和互操作;
3)由桥接CA控制交叉认证,桥接CA是一个第三方CA;
问题:只适用于CA 数量较少的情况,但当CA数量较大时,大量CA 两两进行交叉认证就会形成复杂的网状结构,且证书策略经过多次映射之后会使证书用途大大受限
桥接CA方式可以避免两两交叉认证的弊端,但桥接CA的运营方是个难题,他的可信程度直接决定了互信关系的可靠程度;
解决办法:一种基于区块链的CA证书互信共享机制
2)注册机构(RA)
RA负责受理用户申请证书的机构,它是用户和CA之间的接口;
RA对用户资格进行审查,然后决定批准还是拒绝证书申请,再向CA提出证书请求
3)证书发布系统
证书产生以后,由证书发布系统以一定的方式进行存储和发布,以便于使用。
CA采用“证书目录”的方式集中和管理证书;
证书目录通常存储了用户的相关信息,例如:电话号码,邮箱地址等;
大多数PKI的证书目录遵循的标准是X.500(前文提到证书格式是X.509),简化后的是LDAP协议(轻量级目录存取协议);
4)PKI策略
PKI策略指的是一个组织建立和定义的公钥管理方面的指导方针、处理方法和原则;
2.证书签发和撤销流程
1)证书签发
在线申请、离线申请(也就是线下直接到证书机构);
2)证书撤销
使用期长短由CA的PKI政策决定;
3.证书透明性(CT)
隐患:PKI体系中,用户无条件信任由可信第三方CA签发的证书,但是如果CA服务器被攻击或者CA在签发证书时候没有对申请者进行严格的尽职调查,就会出现严重的安全问题;
为了解决盲目信任CA 签发的证书所存在的潜在风险,Google于2013年3月提出了数字证书透明性(Certificate Transparency, CT)技术,用于提升服务器证书的可信性,从而提高使用证书的系统的安全性。
理解数字透明性?
提供一个开放透明的监控和审计系统,要求CA向该系统记录所有的证书的签发行为,从而让任何CA和域名所有者确定证书是否被恶意签发或被恶意使用,保护用户使用加密协议(https);
第五章 无线网络安全
5.1 无线局域网
1.概述
(1)前景知识
无线局域网(Wireless Local Area Network,WLAN),应用无线通信技术将局域范围内的计算机,移动终端等互联起来,构成可以互相通信和实现资源共享的网络系统。
无线局域网两种组网模式:无固定基站的WLAN、有固定基站的WLAN;
无线局域网的主流标准是IEEE推出的802.11系列标准;其中定义了媒体访问控制层(MAC层)和物理层;
物理层定义了工作在2.4Ghz的ISM频段的两种扩频方式和一种红外线传输模式;数据传输率设计为2Mb/s
补充:1999年IEEE发布的两个版本
802.11a:定义了一个在5GHz 的ISM频段上的数据传输率可达54Mb/s的物理层;
802.11b:定义了一个在2.4GHz 的ISM频段上但数据传输率可达11Mb/s的物理层;
2.4GHz的ISM频段为世界上绝大多数国家通用,因此802.11b最为广泛应用;
(苹果公司把自己开发的802.11标准命名为AirPort)
2000年以后,发布了更多802.11标准,802.11c,d,e,f,g……
(2)有固定基站的无线局域网络组成部分:
1)站(STAtion,STA)
无线局域网的基本组成单元,一般指使用无线局域网的终端设备;
2)接入点(Acess Point,AP)
AP类似于移动通信的基站;
作用:完成STA接入分布式系统,同时还负责将WALN接入互联网络;
3)无限介质(Wireless Medium,WM)
无限介质是传输媒介,用于STA与AP之间的传输通信,主要是无线电波;
无线介质在WLAN中由物理层定义;
4)分布式系统(Distributed System,DS)
无线局域网中的物理层覆盖范围决定了一个接入点的通信距离,BBS(基本服务集)含AP以及相应的STA,多个BBS通过网络构建连接形成网络。
(3)STP连接AP连接过程
三个阶段:扫描,认证,关联
(4)带来的安全问题及解决措施
原因:频段的开放性和无线空间的开放性
a.信道干扰
采用的频段是公开的,攻击者很容易发射同频段的噪声信号实现信道干扰;
b.窃听或嗅探
同普通用户一样,攻击者也可以收到信号,如果不进行加密,攻击者也可以还原出数据,,甚至可以通过ARP欺骗修改数据;
c.伪造AP
攻击者可以为造成AP,并在信号强度上超过合法AP发射的信号,伪造的AP将与该AP信号范围内的终端建立联系,进而截获篡改终端的数据。
d.重放攻击
攻击者首先通过嗅探攻击获得网络内某一终端发送的数据,然后延迟一段实践再重发该数据已实施重放攻击
采取措施:认证、完整性检测和加密 保障机密性,完整性和真实性。
2. WEP安全协议
有线保密等效协议(Wired Equivalent Privacy, WEP)是IEEE 802.11b中定义的第一个用于保护无线局域网通信安全的协议,目的是防止非法用户窃听或侵入无线网络。
WEB协议使用流密码算法;
802.11b支持开放系统认证和共享密钥验证两种验证方式;
1)开放系统认证
即无认证,STA向AP发送“authentication”报文,而AP同样回复“authentication”,并将status code字段置0,允许STA接入,然后就可以进行通信和转发数据;
(这就是我们日常生活中Wi-Fi不设密码的情况。你随便输入一个密码,都可以连接,但如果密码不正确,会显示为“受限制”。)
2)共享密钥验证
类似于连接有密码的WiFi;
问题:单向认证,即只能AP向STA认证。如果黑客伪装成AP,则STA易受假冒AP的攻击;
例如:
1)攻击者侦听附近无线WIFI网络热点不断广播的Beacon数据包获取AP热点名、信号强度信息;
2)攻击者开一个同名同认证的伪热点,并且在信号功率上大于被仿冒的热点;
3)这样客户端就和伪造的AP建立数据连接,攻击者就可以窃听用户口令、通信数据等隐私信息,甚至修改内容传播木马、设置后门;
认证成功后,实际的数据传输过程中,通信数据是加密的。
5.2 移动网络安全
2G,3G,4G,5G安全
移动网络采用严格的分层结构,一般包括核心网(Core Network, CN)、接入网(Access Network, AN)和用户设备(User Equipment, UE)三部分
第六章 IP及路由安全
6.1 IPv4协议及安全分析
IPv4的数据报格式
安全性分析:
IPv4协议没有认证机制:
无认证,没有消息源认证:源地址假冒
无加密,没有完整性认证:篡改
IPv4没有加密机制:
无机密性:监听应用数据
泄露拓扑等信息:网络侦察
IPv4无带宽控制:
DDoS攻击(数据风暴消耗网络带宽、系统资源,从而导致拒绝服务攻击)
6.2 IPsec
为了解决IPv4存在的安全问题,所推出的确保IP通信安全的机制,成为IPsec(IP security)。
IPsec为IPv6制定的(必选),也支持IPv4(可选)
IPsec提供三种功能:认证,加密及密钥管理
注:IPsec书写,不能写成IPSec
IPsec涉及内容:
(1)IPsec安全体系:包括一般概念、安全需求、定义和规定IPsec技术的机制。
(2)封装安全载荷协议(Encapsulating Security Payload,ESP),包括包格式、使用ESP为包加密、认证相关的一般规定。
(3)认证报头(Authentication Header,AH)协议,包括包格式、与使用AH认证包的一般规定;
(4)加密算法(Encryption Algorithm),包括一系列阐述如何在ESP中使用各种加密算法的文档;
(5)认证算法(Authentication Alogorithm),包括一系列阐述如何在AH中使用的各种认证算法和ESP认证选项的文档。
(6)密钥管理(key Managnmenet),描述密钥管理方案的文档,主要涉及IKE(Internet Key Exchange),描述密钥管理的方案;
(7)解释域(Domain Of Interpretation,DOI),为使用IKE进行协商安全联合(Security Association,SA)的协议同一分配标识符
IPsec标准内容之间的关系:
IPsec标准内容:
IPsec通过允许系统选择所需的安全协议(AH协议或ESP协议),决定服务所使用的加密或认证算法,提供任何服务需要的密钥来提供IP级的安全服务。
RFC4301中列出的安全服务包括:访问控制、无连接完整性、数据源认证、拒绝重放包(部分顺序完整性格式)、保密性(加密)以及限制流量保密性
6.2.1 IPsec安全策略
IPsec操作的基础是应用于每一个从源端到目的端传输的IP包上的安全策略,主要由两个交互的数据库,安全关联数据库(Security Association Database, SAD)和安全策略数据库(Security Policy Database, SPD)来确定。
1)安全关联(Security Association, SA),SA是发送端和接收端之间的单向逻辑连接,为发送端和接收端之间传输的数据流提供安全服务。
如果对同一个数据流同时使用AH和ESP服务,则针对每一种协议都会构建一个独立的SA;
SA对:双向安全数据交换;
同时支持AH、ESP且双向:需两对SA;
2)安全策略(Security Policy, SP):指定对IP数据包提供何种保护,并以何种方式实施保护
主要根据源IP、目的IP、入数据还是出数据等来标识
用户设定自己的安全策略的粒度,不仅可以控制IP地址,还可以传输层协议,TCP/UDP端口号。
**安全策略数据库存储所有的SP;**SPD中的每一条包括;本地IP,远程IP,下一层协议,名称,本地或远程端口;
当要将IP数据包发送出去时,或者接收到IP包时,首先要查找到SPD来决定如何进行处理:丢弃、通过、保护;
外向IP包处理过程:(出数据?)
内向IP包处理过程:(入数据?)
6.2.2 IPsec运行模式
两种运行模式:传输模式和隧道模式
AH协议和ESP协议都支持这两种协议;因此有4种组合。
1.传输模式
传输模式为上层协议提供保护,因此保护的对象是IP包的载荷,如TCP,UDP等传输层协议,或者ICMP报文,甚至是AH或ESP协议报文(在嵌套情况下)。
主机在IPv4上运行AH或ESP时,其载荷是接在IP报文首部后面的数据;
而对于IPv6而言,其载荷是接在IP报文首部后面的数据和任何存在的IPv6扩展首部;
也就是,IPsec在原始IP数据包的传输层数据前面增加AH或ESP或者两者同时增加
传输模式 | |
---|---|
AH | 认证IP载荷和IP首部的选中部分 |
ESP | IP载荷,但不包括IP首部 |
2.隧道模式
与传输模式不同,隧道模式保护整个IP包。
在把AH或ESP域添加到整个IP包中后,整个包加上安全域被作为带有新外部IP首部的新“外部”IP包的载荷。
也就是,整个IP包在传输时,途径的路由器不能检查内部的IP首部,因为原始的包封装在新的IP包中,而新的包有完全不同的源地址和目的地址,所以增强了安全性。
3.传输模式和隧道模式比较
6.2.3 AH协议
AH有两种运行模式:传输模式和隧道模式
1.传输模式
AH插入到IP首部(包括IP选项字段)之后,传输层或其他IPsec协议之前,例如:
如图所示,AH认证的区域是整个IP包(可变字段除外),包括IP首部,因此如果源IP地址或者目的IP地址发生修改就会被检测出来;也就是说在传输过程中经过NAT转换,会造成目的地址完整性验证失败,因此AH和NAT不兼容
2.隧道模式
AH首部插入到原IP首部之前,再增加一个新的IP首部,例如:
隧道模式下,AH认证的也是整个IP包;
隧道模式下,AH可以单独使用,也可以和和ESP协议一起使用;
IPsec使用序列号域来实现抗重放攻击:
序列号初始值为0,每发送一个包就递增1,发送方不允许循环计数,当达到限定值后,就终止现在在用的SA,用新的密钥重新协商生成新的SA。
6.2.4 ESP协议
ESP协议功能:除了提供IP包的数据完整性、数据来源认证和抗重放攻击服务,还提供数据包加密和数据流加密服务。
1.传输模式
传输模式,ESP保护的是IP载荷;
ESP插入到IP首部(包括IP选项字段)之后,任何被IP协议所封装的协议之前。
分析:
1)与AH不同,如上图b所示,IP首部不在认证区域之内;
因此,NAT网关或安全网关可以修改IP首部中的源、目的地址来确保双方通信不受影响,ESP不存在像AH那样与NAT不兼容的问题
2)如果通信的任何一方具有私有地址或在安全网关后面,仍可以用ESP来保护安全;
3)缺点:如果攻击者,修改IP首部,并且保证其校验和计算正确,则接收端就不能检测出攻击者所做的修改。
2.隧道模式
隧道模式对整个IP包进行认证和加密,因此可以提供数据流加密服务,而传输模式由于IP包首部不被加密,因此无法提供数据流加密服务。但是,隧道模式由于增加了一个新IP首部,降低了链路的带宽利用率。
传输模式适合于保护支持ESP协议的主机之间的通信连接;
隧道模式则在包含防火墙或其它用于保护可信内网不受外网攻击的安全网关的配置中比较有效。
6.2.5 网络密钥交换(Cookie机制交换)
Cookie交换(Cookie exchange)要求各方在初始消息中发送一个伪随机数Cookie,并要求对方确认。
①Cookie必须依赖于特定的通信方,从而防止攻击者得到一个正在使用真正的IP地址和UDP端口的Cookie时,也无法用该Cookie向目标主机发送大量的来自随机选取的IP地址和端口号的请求来浪费目标主机的资源
②除了发起实体以外的任何实体都不可能产生被它承认的Cookie。这就意味着发起实体在产生和验证Cookie时,要使用本地的秘密信息,而且根据任何特定的Cookie都不可能推断出该秘密信息
③Cookie的产生和验证必须尽可能地快速完成,从而阻止企图通过占用处理器资源的阻塞攻击
一种产生Cookie的方法是对以下信息进行HASH运算后,取前64位:
源IP地址 + 目的IP地址 + UDP源端口 + UDP目的端口 +随机数 + 当前日期 + 当前时间
6.3.6 IPsec的应用
IPsec在IP层对所有流量进行加密和/或认证,因此能够保护各种基于IP的应用:
- 终端用户通过互联网实现安全的远程访问;
- 分支机构通过互联网构建一个安全的虚拟专用网络;
- 与合作者建立企业间联网和企业内联网接入;
IPsec应用于上述场景的实质就是构建基于IPsec的虚拟专用网(Virtual Private Network, VPN)。
1.VPN
VPN是一种提供在公共网络上建立专用数据通道的技术;
1)它是虚拟的,即节点间实际上并不存在一个端到端的物理链路,而是在互联网上建立一个相对封闭、逻辑上的专用网络;
2)它是私用的,强调私用性和安全性
6.3 IPv6协议及安全分析
6.3.1 IPv6协议格式
如果IPv6报文中出现了类型为50和51的扩展首部,则表示用了AH协议和ESP协议保护;
从IPv4向IPv6过渡采用逐步演进的方法,IETF推荐的过渡方案主要有:
1)双协议栈(dual stack)
让网络节点同时装有IPv4和IPv6协议栈;
2)隧道(tunneling)
将IPv6数据报作为数据封装在IPv4数据报里;
3)网络地址转换
将IPv4地址和IPv6地址分别看作内部地址和全局地址;
6.3.2 IPv6安全性分析
安全问题:
1)IPv4向IPv6过渡技术的安全风险
对于双协议栈:黑客可以利用这两种协议存在的安全弱点和漏洞进行协调攻击,或者利用两种协议版本中安全设备的协调不足来逃避检测;
2)无状态地址自动配置的安全风险
a.邻**居发现协议NDP实现了IPv6节点无状态地址自动配置和节点的即插即用,**但也带来了问题:
- 恶意主机可以假冒合法路由器发送伪造的RA报文;
- 在RA报文中修改默认路由器为高优先级;
- 从而IPv6节点在自己的默认路由器列表中选择默认恶意主机为默认网关,从而达到中间人攻击目的
b.重复地址检测机制
- IPv6在无状态配置链路或者全局单播地址时候,需要发送NS报文进行DAD检测;
- 恶意主机可以针对NS请求报文发送假冒的NA响应报文,让其检测失败,从而停止地址的自动配置。
3)IPv6中PKI管理系统的安全风险
IPv6网络用户数量庞大,因此证书的注册、更新操作很频繁,所以如何保持高访问量的快速响应以及安全管理的复杂性存在巨大挑战
4)IPv6编址机制的隐患
6.4 路由安全
1)协议设计上的问题,即协议机制上的不完善(如认证机制、防环路机制、路由度量机制等)导致的安全问题
2)协议实现上的问题,即许多协议规范中的协议行为在实际网络环境中并没有实现或做的不够完善而导致的安全问题
3)管理配置产生的安全问题,很多网络管理员在配置路由协议器时,没有或错误地配置相应的加密和认证机制,带来了很多安全风险
6.4.1 RIP协议及其安全分析
1.RIP
内部网关协议、基于距离向量的路由选择协议(16跳不可达)
三个版本:RIPv1,RIPv2,RIPv2ng
1)和哪些路由器交换信息?
仅和相邻路由器交换信息。
2)交换什么信息?
当前本路由器所知道的全部信息,即自己的路由表。
3)在什么时候交换信息?
按固定的时间间隔交换路由信息。
2.安全性分析
RIPv1:不支持认证,使用不可靠的UDP协议传输;
RIPv2:增加认证字段选项但明文认证的安全性还是较弱;
(安全)RIPng:充分利用了IPsec的安全机制,包括AH认证、ESP加密以及伪报头校验;
解决措施:
①将路由器的某些接口配置为被动接口,配置为被动接口后,该接口停止向它所在的网络广播路由更新报文,但是允许它接收来自其他路由器的更新报文;
②配置路由器的访问控制列表,只允许某些源IP 地址的路由更新报文进入列表
6.4.2 OSPF协议及其安全分析
1.OSPF
分布式链路状态协议
1)和哪些路由器交换信息?
向本自治系统中所有路由器发送信息,通常洪泛法
2)交换什么信息?
与本路由器相邻的所有路由器的链路状态,只是路由器所知部分信息表
3)在什么时候交换信息?
当链路状态发生变化时,路由器向所有路由器发送此信息;定期同步链路状态
OSPF依靠各路由器频繁交换链路状态消息,所以所有路由器都能建立一个链路状态数据库(LDB),也就是全网的拓扑结构。
OSPF不用UDP而是直接用IP数据报传送(其IP数据报首部的协议字段值为89)其报文
2.安全性分析
OSPF协议可以对接口、区域、虚链路进行认证
定义了三种认证方式:
1)空认证(NULL,即不认证,类型为0),默认认证方式
2)简单口令认证(类型为1)
3)MD5加密身份认证(类型为2)
二个与认证有关的字段:
1)认证类型(AuType, 16位)
2)认证数据(Authentication, 64位)
OSPF攻击方式:
1)最大年龄(Max Age attack)攻击
2)序列号加1(Sequence++)攻击
3)最大序列号攻击
4)重放攻击
5)篡改攻击
6.4.3 BGP协议及其安全性分析
1.BGP
应用于AS之间的边界路由协议;运行边界网关协议的路由器一般都是网络上的骨干路由器;
运行BGP协议的路由器相互之间需要建立TCP连接以交换路由信息,这种连接称为BGP会话(Session)
2.安全分析
缺乏一个安全可信的路由认证机制,即BGP 无法对所传播的路由信息的安全性进行验证。
每个自治系统向外通告自己所拥有的CIDR地址块,并且协议无条件信任对等系统的路由通告,这将就导致一个自治系统向外通告不属于自己的前缀时,也会被BGP用户认为合法,从而接受和传播,导致路由攻击的发生
由于BGP协议使用TCP作为其传输协议,因此同样会面临很多因为使用TCP而导致的安全问题,如SYN Flood攻击、序列号预测等
第七章 传输层安全问题
网络体系结构中,传输层的任务是为应用进程提供端到端的数据传输服务。
保护数据传输的方法:
差别:在于自身应用范围以及在TCP/IP协议栈中不同位置。
1)在网络层采取措施:IPsec协议,对于终端用户和应用是透明的,具有过滤功能(只对选中需要保护的流量进行保护)
2)在传输层的TCP之上:安全套接字层(Secure Sockets Layer,SSL);将SSL标准化后推出了传输层安全(Transport Layer Security,TSL).
3)应用层
7.1 传输层安全
7.1.1 端口和套接字
端口:标识主机上的网络服务;
套接字(socket):一个二元组(IP地址,端口号),一堆套接字即可标识一条TCP连接(本地IP地址,本地端口号,远程IP地址,远程端口号)
7.1.2 UDP协议和TCP协议安全性
UDP
UDP无连接协议,提供不可靠的端到端服务;
UDP协议可用于风暴型DDoS,即风暴型拒绝服务攻击;
原理:攻击者利用控制的僵尸网络中的大量主机向攻击目标(主机或网络设备)发送大量的 UDP数据包,使其忙于处理和回应 UDP 报文,导致目标设备不能提供正常服务或者直接死机,严重的会造成全网瘫痪。
TCP
TCP协议面向连接,提供可靠、有序的端到端数据传输服务。
攻击方式:
1)网络扫描
攻击者利用TCP连接建立过程进行端口扫描,从而获得目标主机上的网络服务,进一步发起针对性的攻击。
2)拒绝服务攻击(Dos)攻击
由于一台主机或服务器所允许建立的TCP连接是有限的,因此攻击者常用TCP全连接或者半连接,对目标发起拒绝服务攻击。
3)TCP会话劫持攻击
由于TCP协议没有对数据报进行加密和认证措施,因此攻击者可以监听TCP报文内容,也可以伪造TCP报文,实施TCP报文攻击。
7.2 SSL
由于Web应用协议主要通过传输层的TCP协议来传输其协议报文,而TCP协议不支持加密和认证,因此并不能保证Web应用传输上的安全.
所以,网景公司(Netscape)于1994年开发了安全套接字(Security Socket Layer, SSL)协议。
1.SSL体系结构
SSL利用TCP协议为上层应用提供端到端的安全传输服务,包括认证和加密。
SSL分成两个子层:
(上3)SSL握手协议,SSL密码变更规格协议,SSL告警协议;
(下)SSL记录协议
有了SSL后,应用层数据不再直接传递给传输层,而是直接传递给SSL层,由SSL层对应用层收到的数据进行加密,并增加自己的SSL首部。
SSL协议关系:
握手协议协商机密算法和MAC算法以及加密密钥;
密码变更规格协议变更连接密码上使用的密码机制;
记录协议对交换的数据进行加密和签名;
告警协议定义数据传输过程中出现的问题。
SSL定义了两个概念:SSL会话和SSL连接
- 连接:一种提供合适服务类型的通道;
- 会话:客户端与服务器之间的一种关联(主要是避免为每次建立连接而进行的复杂密码的协商传输过程)。
客户端和服务器完成双方的身份鉴别并确定安全信息交换的使用的算法后,执行SSL记录协议;
记录协议提供两种安全服务:
- 保密性:传统加密共享密钥加密SSL载荷实现保密性;
- 完整性:MAC共享密钥对SSL载荷进行消息完整性验证。
第八章 DNS安全
8.1域名系统(Domain Name System,DNS):
1)域名解析协议
2)应用层路由
DNS把用户的访问指向离用户最近的那个CDN服务器节点,负载均衡
3)DNS作为信任的基础
接受方的邮件服务器在接收邮件之前,会验证邮件的发送方服务器是否可以发送某域名的邮件;
它首先向邮件发送方的域名服务器发送SPF(Sender Policy Framework)查询请求,从而确定发件人的IP地址是否在SPF记录里面。
防伪造邮件
4)DNS作为公钥基础设施(PKI)
防止CA在未经网站所有者授权的前提下签发非法的证书
8.2域名解析过程
以浏览网站为例说明域名解析过程,以www.example.com 为例:
- 浏览器会向“解析器”(resolver)发送一个查询,解析器会在本地缓存查询,如果存在直接响应浏览器。如果缓存中没有,则解析器会执行完整的 DNS 解析过程。
- 解析器将向其中13个根服务器中的一个根服务器发送一个查询,询问该域名的 IP 地址,此时,根服务器将返回一个列出了 “.com”的所有名称服务器的列表。
- 将同一查询发送到引荐响应中收到的其中一个 TLD 的名称服务器,因此同样会得到一个引荐响应。解析器将向其中一个“.com”名称服务器发送对“www.example.com”的查询,询问该域名的 IP 地址,“.com” 名称服务器将返回一个列出“example.com”的所有名称服务器的列表。
- 此解析过程将一直继续,直到将查询发送到符合以下条件之一的域名服务器;或者域名服务器能够发布权威性声明,表示所查询的域名不存在。示例中,解析器将向其中一个“example.com”的名称服务器发送对“www.example.com”的查询,该名称服务器可能知道与“www.example.com”相关的 IP 地址,并返回这些地址。
补充:递归和迭代查询
8.3 DNS面临的威胁
互联网的早期协议,DNS从设计之初就建立在互信模型的基础上,安全性较弱。
8.3.1 协议脆弱性
缺乏认证机制,大部分通信使用UDP,容易受劫持和欺骗。
1 . 域名欺骗
域名系统(包括 DNS 服务器和解析器)接收或使用来自未授权主机的不正确信息。
1)事务ID欺骗
针对DNS数据报首部的事务ID欺骗。
事务ID:客户端用来判断响应与查询数据报是否匹配的依据。
原理:伪造DNS服务器提前向客户端发送伪造响应报文,只要伪造响应的报文比真实的提前到达即可完成欺骗。
问题1:怎么获取事务ID?
网络监听和序列号猜测
- 网络监听:DNS数据报没有加密,监听客户的网络流量即可,通常使用ARP欺骗(但是攻击者必须要处于同一网络下)。
- 序列号猜测:事务ID为2个字节,从0~65535,猜测难度大大降低。
问题2:怎么延缓真实报文到达?
发的Dos攻击,延缓正确应答报文返回
2)缓存投毒(DNA欺骗)
恶意攻击者改变DNS响应并把解析结果指向自己可控的主机。
2. 网络通信攻击
DDoS攻击(分布式拒绝攻击)、恶意网址重定向和中间人(man-in-the-middle, MITM)攻击
1)Dos攻击(Denial of Service,拒绝服务)
针对DNS客户端:攻击者发送否定回答显示域名不存在
对于域名服务器:则是以域名服务器为目标
在反射式攻击中,攻击者利用域名服务器为反射点,用DNS应答对目标进行洪泛攻击;(攻击者发送大量的DNS查询请求;DNS响应报文采用UDP传输可达到512字节,超过512字节采用TCP传输,增加了DDos攻击成功的概率)。
2)恶意网址重定向和中间人(man-in-the-middle, MITM)攻击
攻击者伪造成客户端所信任的实体对通信过程进行分析和篡改。
将客户端请求重定向到假冒的网站和请求不符的目的地址,从而窃取信息。
劫持3种方法:
1)请求转发:用户DNS请求直接被重定向到其他的服务器
2)请求复制:用户DNS请求被网络中间设备复制,一份去往原来目的地,一份去劫持者的解析服务器
3)直接应答:用户请求同样被转发,但解析服务器没有查询直接返回一个响应
3.操作系统脆弱性
DNS最初涉及只考虑物理设备故障,没有考虑人为配置所带来的隐患。
1)域名配置攻击
无意攻击:由于误配置造成
有意攻击:针对DNS协议配置的随意性弱点实施攻击(例:通配符条目混淆)
2)域名注册攻击
域名劫持:对域名注册管理公司的注册域名记录非法改变使之只想其他的Web站点。
类似域名注册:利用用户习惯性错误拼写,字母相似性、替换后缀等来注册银行相似的域名,从而欺骗客户
3)信息泄露
DNS系统运行至少需要两台DNS服务器:一台主服务和一台容错的辅助服务器
DNS服务器之间通过拷贝数据库文件来进行同步,这一过程称之为"区域传送";传送过程中可能发生信息泄露
第九章 Web应用安全
9.1 Web体系结构的脆弱性分析
客户端通过http/https协议向服务器程序发出请求->
服务器程序向客户端程序返回客户所要的万维网文档->
在一个客户端程序主窗口显示出的万维网文档成为页面(page)->
页面一般用超文本标记语言HTML语言描述;
1.Web客户端的脆弱性
Web客户端,即浏览器;
浏览器的安全性影响到客户端主机的安全,利用浏览器漏洞渗透目标主机已经成为主流的攻击方式。
例如:IE浏览器暴出大量的漏洞;
2. Web服务器的脆弱性
Web应用程序在Web服务器上运行,Web服务器的安全直接影响到服务器主机和Web应用程序的安全。
例如:IIS服务器,Tomcat服务器均被暴露出很多严重的漏洞。
3. Web应用程序的脆弱性
Web应用程序;
从接收HTTP/HTTPS请求,经过应用的各种处理,最后产生HTTP响应发生给浏览器。这个过程可以理解为“向外脚本输出”。
Web应用向外部输出脚本及其安全隐患:
输出HTML:导致跨站脚本攻击,也称“HTML注入”或“Javascript注入”;
输出HTTP消息头:可能导致HTTP头注入攻击
调用访问数据库的SQL语句:可能导致SQL注入攻击
调用Shell命令:可能导致操作系统(OS)命令注入攻击。
输出邮件头和正文:可能导致邮件头注入攻击
4.HTTP协议的脆弱性
HTTP协议是一种简单的,无状态的应用层协议;
它利用TCP协议作为传输协议,可运行在任何未使用的端口上(一般是80);
“无状态”:协议本身没有会话状态,不会保留任何会话信息。**即如果你请求一个资源得到响应,再请求另一个资源,服务器会认为这两次请求是完全独立的。
脆弱性:
协议基于ASCII码(而非二进制编码机制),因此攻击者就可以了解HTTP协议中传输的所有明文信息;
协议大多数运行在众所周知的80端口,容易被攻击者利用渗透到内网中;
5.Cookie的欺骗性
HTTP协议的无状态虽然使得它简单高效,但如果一个Web客户连续获取一个需要访问认证的Web服务器上的信息时,可能需要反复认证;
所以为了避免这样的一个繁琐,就设计了Cookie(原意为小甜饼)机制。
Cookie是指网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的一些数据(通常经过编码);
Cookie一般由服务器生成,发送给客户端(一般是浏览器),浏览器会将Cookie值存储在本地,下次请求同一网站就发送该Cookie给服务器。
典型应用:
判定注册用户是否登录网站;
购物车之类的应用,在同一家网站的不同页面选择商品;
Cookie可以保持登录信息,下次访问同一网站,用户会发现不必输入用户名和密码就可以登录(除非用户删除)。
Cookie在生成时就会被指定给一个expires,这就是Cookie的生存周期;有些页面将Cookie的生存周期设置为0或者负值,这样在关闭页面时,浏览器立即清除Cookie,有效保护了用户隐私。
Cookie因为不同浏览器,用户,计算机而不同
6. 数据库的安全脆弱性
网站后台数据库保存大量应用数据,因此常常成为攻击者的目标。
主动攻击:直接攻击Web服务器,如SQL注入攻击;
被动攻击:攻击者不直接攻击服务器,而是给用户设下陷阱,利用调入陷阱的用户来攻击Web应用程序:
1)单纯的被动攻击。用户在浏览攻击者建立的恶意网站时,感染上恶意软件。
2)恶意的利用正规网站进行被动攻击。攻击者先入侵正规网站(如通过SQL注入攻击、跨站脚本攻击、非法获得网站管理员密码)
3)跨站被动攻击。此类攻击恶意利用已经在正规网站登陆的用户账号来实施攻击:跨站请求伪造(CSRF),跨站脚本攻击(XSS),和http消息头注入
9.2 SQL注入攻击及防范
SQL注入攻击以网站数据库为目标,利用Web应用程序对特殊字符串过滤不完全的缺陷,通过精心构造的SQL命令插入到Web表单递交到查询字符串中,欺骗服务器恶意执行的SQL命令,从而达到非法访问、篡改数据库内容,绕过认证,运行程序,浏览、编辑文件。
如何探测SQL注入漏洞?
通过页面错误信息的回显,然后根据字符型、整型探测
特殊情况:过滤敏感字符,解决方式:大小写混用,UNICODE法(如+号为 %2B,空格为%20),ASCII码法
防护SQL注入攻击:
- 过滤单引号等特殊符号,即对用户的输入进行检查;
- 在构造动态SQL语句时,一定要是有类安全(type-safe)的参数编码机制。
- 禁止将敏感性数据以明文存放在数据库中
- 遵循最小特权原则,只给访问数据库的Web应用所需的最低权限。
- 尽量不要使用动态拼装的SQL,可以使用参数化的SQL或者使用存储过程进行数据查询存取。
- 应用的异常信息应该给出尽可能少的提示
9.3 跨站脚本攻击
跨站脚本攻击(Cross Site Scripting,XSS )原理:
指攻击者利用Web程序对用户输入过滤不足的缺陷,把恶意代码(包括HTML代码和客户端脚本)注入到其它用户浏览器现实的页面上执行,从而窃取用户信息、伪造用户身份进行恶意行为的一种攻击方式。
XSS三种形式:
-
反射型跨站脚本攻击
Web客户端使用Script脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经过HTML实体编码,客户端代码便能够注入到动态页面中。
这种攻击模式,Web程序不会存储恶意脚本,它将未经验证的数据通过请求发送给客户端,攻击者就可以构造恶意的URL链接和表单并诱骗用户访问,最终达到欺骗。
-
存储式跨站脚本攻击
储存式脚本攻击,如果Web程序运行存储用户数据,并且存储的的输入数据没有经过正确的过滤,就要可能发生这类攻击。
在这种情况下,攻击者并不需要利用一个恶意链接,只要用户访问了储存式跨站脚本网页,那么恶意数据就显示为网站的一部分执行。
-
DOM式跨站脚本攻击
DOM型并不按照“数据是否存储在服务端”划分的,它是反射型的一种特例。
防范:
同样是由于未对用户输入的数据作合格性检测,导致可以恶意写入Script语句;
验证应该在服务端进行,浏览器端检查很容易绕过。
9.4 Cookie欺骗
由于Cookie信息保存在用户端,因此用户可以对Cookie信息进行修改;
攻击者也可以轻易实现Cookie信息欺骗,绕过验证过程,不需要输入密码就可以登录。
一般情况下,网站会话管理机制仅将会话ID保存至Cookie,而将数据本身保存在Web服务器上。
除了Cookie欺骗,攻击者可以通过监听Cookie来实现会话劫持。
9.5 CSRF攻击及防范
跨站请求伪造(Cross Site Request Forgrey)
指的是攻击者假冒受信任用户向第三方网站发送恶意请求;
与XSS区别:XSS利用的是网站内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站;
防御:
为什么能够成功?
1)form元素的action属性能够指定任意域名的URL,使得恶意网站也能向攻击目标发送请求;
2)浏览器会将保存在Cookie中的会话ID自动发送给目标网站,即使是恶意网站发起的,也会以正常认证状态被发送。
除了使用Cookie机制的会受到CSRF攻击,使用HTTP认证、SSL客户端认证、手机的移动ID认证的网站也存在CSRF漏洞;
防范:
1)嵌入机密信息(令牌)
在访问需要防范CSRF的页面,提供第三方无法知晓的机密信息(令牌,token);
可以在表当中增加一个隐藏域,token值由服务端生成,表单提交后token的值通过post请求与参数一同带到服务端,并在服务端进行校验。
2)再次认证
执行操作前让用户再次进行认证,以确认请求是否由用户自愿发起的。
3)检查Referer
也就是检查页面请求是否来自于同一个网站,检查Referer的值是检查http请求的来源地址
9.6 Http消息头注入攻击及防范
HTTP消息头注入是在重定向或生成Cookie时,基于外部参数生成http响应头时所产生的安全问题。
防御:
1)不将外部传入参数作为HTTP响应消息头输出
2)由专门的API来进行重定向或生成Cookie,并严格检验生成消息头的参数中的换行符;
9.7 HTTPS
1. 基本原理
超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是一种将HTTP和SSL(或TLS)结合来实现Web浏览器和服务器之间的安全通信协议。
HTTP协议输入的数据都是未加密的,也就是明文;还存在不能有效抵御假冒服务器的问题。
使用HTTPS,下述通信内容被加密:请求的文件的URL,文件的内容,浏览器表单内容,Cookie,HTTP标题;
连接建立:
1)作为HTTP用户的代理程序(也是TLS的用户)首先向服务器指定端口发起TCP连接请求;
2)建立连接后,向服务器发送TLSClientHello,开始TLS握手过程。
3)握手完成后,所有http协议数据又要以TLS应用数据的形式通过TLS记录协议加密传输
连接关闭:
可以在http报文中填上“connection:close”来指示关闭一条连接;
关闭一条HTTPS连接要求关闭TLS与其对应的对端实体之间的连接;TLS层面,关闭一条连接最好的方式就是两端都用TLS告警协议发出一个“close_notify”告警,一个TLS实体就会关闭。
9.8 Web应用防火墙
**Web应用防火墙(Web Application Firewall, WAF)**是一种专门保护Web应用免受本章前面介绍的各种Web应用攻击的安全防护系统。
WAF主要提供对Web应用层数据的解析,对不同的编码方式做强制多重转换还原为可分析的明文,对转换后的消息进行深度分析。
主要的分析方法主要有两类:
1)基于规则的分析方法
对每一个会话都要经过一系列的安全检查
2)异常检测方法
通过一段时间的用户访问,记录用户的访问模式和习惯;
如果用户突破这个模式,WAF就会预警或阻断;
了储存式跨站脚本网页,那么恶意数据就显示为网站的一部分执行。
-
DOM式跨站脚本攻击
DOM型并不按照“数据是否存储在服务端”划分的,它是反射型的一种特例。
防范:
同样是由于未对用户输入的数据作合格性检测,导致可以恶意写入Script语句;
验证应该在服务端进行,浏览器端检查很容易绕过。
9.4 Cookie欺骗
由于Cookie信息保存在用户端,因此用户可以对Cookie信息进行修改;
攻击者也可以轻易实现Cookie信息欺骗,绕过验证过程,不需要输入密码就可以登录。
一般情况下,网站会话管理机制仅将会话ID保存至Cookie,而将数据本身保存在Web服务器上。
除了Cookie欺骗,攻击者可以通过监听Cookie来实现会话劫持。
9.5 CSRF攻击及防范
跨站请求伪造(Cross Site Request Forgrey)
指的是攻击者假冒受信任用户向第三方网站发送恶意请求;
与XSS区别:XSS利用的是网站内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站;
[外链图片转存中…(img-TQB2ge0t-1623030337225)]
防御:
为什么能够成功?
1)form元素的action属性能够指定任意域名的URL,使得恶意网站也能向攻击目标发送请求;
2)浏览器会将保存在Cookie中的会话ID自动发送给目标网站,即使是恶意网站发起的,也会以正常认证状态被发送。
除了使用Cookie机制的会受到CSRF攻击,使用HTTP认证、SSL客户端认证、手机的移动ID认证的网站也存在CSRF漏洞;
防范:
1)嵌入机密信息(令牌)
在访问需要防范CSRF的页面,提供第三方无法知晓的机密信息(令牌,token);
可以在表当中增加一个隐藏域,token值由服务端生成,表单提交后token的值通过post请求与参数一同带到服务端,并在服务端进行校验。
2)再次认证
执行操作前让用户再次进行认证,以确认请求是否由用户自愿发起的。
3)检查Referer
也就是检查页面请求是否来自于同一个网站,检查Referer的值是检查http请求的来源地址
9.6 Http消息头注入攻击及防范
HTTP消息头注入是在重定向或生成Cookie时,基于外部参数生成http响应头时所产生的安全问题。
防御:
1)不将外部传入参数作为HTTP响应消息头输出
2)由专门的API来进行重定向或生成Cookie,并严格检验生成消息头的参数中的换行符;
9.7 HTTPS
1. 基本原理
超文本传输安全协议(Hypertext Transfer Protocol Secure,HTTPS)是一种将HTTP和SSL(或TLS)结合来实现Web浏览器和服务器之间的安全通信协议。
HTTP协议输入的数据都是未加密的,也就是明文;还存在不能有效抵御假冒服务器的问题。
使用HTTPS,下述通信内容被加密:请求的文件的URL,文件的内容,浏览器表单内容,Cookie,HTTP标题;
连接建立:
1)作为HTTP用户的代理程序(也是TLS的用户)首先向服务器指定端口发起TCP连接请求;
2)建立连接后,向服务器发送TLSClientHello,开始TLS握手过程。
3)握手完成后,所有http协议数据又要以TLS应用数据的形式通过TLS记录协议加密传输
连接关闭:
可以在http报文中填上“connection:close”来指示关闭一条连接;
关闭一条HTTPS连接要求关闭TLS与其对应的对端实体之间的连接;TLS层面,关闭一条连接最好的方式就是两端都用TLS告警协议发出一个“close_notify”告警,一个TLS实体就会关闭。
9.8 Web应用防火墙
Web应用防火墙(Web Application Firewall, WAF)是一种专门保护Web应用免受本章前面介绍的各种Web应用攻击的安全防护系统。
WAF主要提供对Web应用层数据的解析,对不同的编码方式做强制多重转换还原为可分析的明文,对转换后的消息进行深度分析。
主要的分析方法主要有两类:
1)基于规则的分析方法
对每一个会话都要经过一系列的安全检查
2)异常检测方法
通过一段时间的用户访问,记录用户的访问模式和习惯;
如果用户突破这个模式,WAF就会预警或阻断;