区块链安全基础二
四.数字签名与认证技术
消息摘要算法:
消息摘要是保证明文无法篡改、完整性的一种算法,消息摘要不是加密明文,也不是加密算法
- 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。
- 消息摘要看起来是“随机的”。
- 一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同
- 消息摘要函数是无陷门的单向函数,即只能进行正向的消息摘要而无法从摘要中恢复出任何的消息
- 好的摘要算法,没有人能从中找到“碰撞”,虽然“碰撞”是肯定存在的。
Hash函数:
Hash函数特点:
(令h表示哈希函数,h满足以下条件)
输入可以是任意长度的消息或文件M;
输出长度是固定的;
给定h和M,计算h(M)是容易的;
给定h的描述,找两个不同的消息M1和M2,使得h(M1)=h(M2)在计算上是不可行的。
Hash函数的安全性:在现有的计算资源下,找到一个碰撞是不可能的。
Hash函数在网络安全应用中,不仅能用于保护消息或文件的完整性,而且也能用作密码信息的安全存储。
主要Hash算法有MD2、MD4、MD5、SHA。
其中,MD5能产生128比特长度的哈希值,它的使用广泛,常用于网络中文件的完整性检查。而SHA在美国政府中使用,作为安全哈希标准,SHA产生的哈希值比MD5长,有160比特。
数字签名:
数字签名(Digital Signature)是手写签名的电子模拟,是通过电子信息计算处理,产生的一段特殊字符串消息,该消息具有与手写签名一样的特点,是可信的、不可伪造的、不可重用的、不可抵赖的以及不可修改的。
数字签名至少应满足以下三个条件:
n 签名者事后不能否认自己的签名;
n 接收者能验证签名,而任何其他人都不能伪造签名;
n当双方就签名的真伪发生争执时,第三方能解决双方之间发生的争执。
分类:
(1)直接方式的数字签名
直接方式的数字签名只有通信双方参与,并假定接收一方知道发方的公钥。数字签名的形成方式可以用发方的私钥加密信息。
直接方式的数字签名有一公共弱点,即方案的有效性取决于发方密钥的安全性。
(2)具有仲裁方式的数字签名
发方A对发往收方B的信息签名后,将信息及其签名先发给仲裁者C,C对信息及其签名验证完成后,再连同一个表示已通过验证的指令一起发往收方B。此时由于C的存在,A无法对自己发出的信息予以否认
特点&组成:
一个数字签名方案一般由签名算法和验证算法组成。签名算法的密钥是秘密的,只有签名人掌握;而验证算法则是公开的,以便他人验证。
签名与加密很相似,一般是签名者利用秘密密钥(私钥)对需签名的数据进行加密,验证方利用签名者的公开密钥(公钥)对签名数据做解密运算。签名与加密的不同之处在于,加密的目的是保护信息不被非授权用户访问,而签名的目的是让消息接收者确信信息的发送者是谁,信息是否被他人篡改。
数字签名基本流程:
(熟悉的Alice和Bob又出现了)
假设Alice需要签名发送一份电子合同文件给Bob。Alice的签名步骤如下:
第一步,Alice使用Hash函数将电子合同文件生成一个消息摘要。
第二步,Alice使用自己的私钥,把消息摘要加密,形成一个数字签名。
第三步,Alice把电子合同文件和数字签名一同发送给Bob。
Bob收到Alice发送的电子合同文件及数字签名后,要验证电子合同文件是Alice所认可的,验证步骤如下:
第一步,Bob使用与Alice相同的Hash算法,计算出所收到电子合同文件的消息摘要。
第二步,Bob使用Alice的公钥,解密来自Alice的加密消息摘要,恢复出Alice原来的消息摘要。
第三步,Bob比较自己产生的消息摘要和恢复出来的消息摘要之间的异同。若两个消息摘要相同,则表明电子合同文件来自Alice。如果两个消息摘要的比较结果不一致,则表明电子合同文件已被篡改。
数字证书(数字标识):
提供了一种在网络上身份验证的方式,是用来标志和证明网络通信双方身份的数字信息文件,与司机驾照或日常生活中的身份证相似。
由权威公正的第三方机构即CA中心签发。
以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性,从而保障网络应用的安全性。
采用公钥密码体制,即利用一对互相匹配的密钥进行加密、解密。通过数字的手段保证加密过程是一个不可逆过程,即只有用私钥才能解密。
使用:当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密
数字证书能够确认以下两点:
①保证信息是由签名者自己签名发送的,签名者不能否认或难以否认。
②保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。
认证及认证模型:
认证(Authentication)是指核实真实身份的过程,是防止主动攻击的重要技术之一。计算机只能识别用户的数字身份,所有对用户的授权也是针对用户数字身份的授权。
认证的用途
主要用途有三方面:
(1)验证网络资源访问者的身份,给网络系统访问授权提供支持服务。
(2)验证网络信息的发送者和接收者的真实性,防止假冒。
(3)验证网络信息的完整性,防止篡改、重放或延迟。
认证信息类型
常用的鉴别信息主要有四种:
(1)所知道的秘密,如用户口令、PIN (Personal Identification Number)。
(2)所拥有的实物,一般是不可伪造的设备,如智能卡、磁卡等。
(3)生物特征信息,如指纹、声音、视网膜等。
(4)上下文信息,就是认证实体所处的环境信息、地理位置、时间等,例如IP地址等。
认证方法分类
单向认证是指在网络服务认证过程中,服务方对客户方进行单方面的鉴别,而客户方不需要识别服务方的身份(账号密码)。
认证过程:
第一步,客户方向服务器发出访问请求;
第二步,服务器要求客户方输入ID;
第三步,客户方向服务器输入ID;
第四步,服务器要求客户方输入密码;
第五步,客户方向服务器输入密码;
第六步,服务器验证ID和密码,如果匹配则允许客户进入系统访问。
认证过程:
一到六步与单向的过程相同
第七步,客户提示服务器输入密码;
第八步,服务器按客户要求输入密码;
第九步,客户验证服务器。
三方来实现。
第三方不仅负责维护认证信息,而且还负责验证双方的身份。每个用户都把自己的ID和密码发送给可信第三方,由第三方负责认证过程。此方法兼顾了安全性和密码存储的简单易行性。
认证实现技术:
静态密码: 用户的密码是由用户自己设定的(就是我们平时那个密码)
智能卡(IC卡):一种内置集成电路的芯片,芯片中存有与用户身份相关的数据
短信密码:手机短信形式请求包含6位随机数的动态密码(安全、普及、易收费和维护)
动态口令牌:生成动态密码的终端
USB KEY:软硬件相结合、一次一密的强双因子认证模式
数字签名:数字签名又称电子加密,可以区分真实数据与伪造、被篡改过的数据
生物识别技术:通过可测量的身体或行为等生物特征进行身份认证的一种技术
(身体特征包括:指纹、掌型、视网膜、虹膜、人体气味、脸型、手的血管和DNA等;)
(行为特征包括:签名、语音、行走步态等)
双因素身份认证:两种认证方法结合
身份的零知识证明:能够不传输这些信息身份进行认证的方法
(ps: 目前部分学者将视网膜识别、虹膜识别和指纹识别等归为高级生物识别技术;将掌型识别、脸型识别、语音识别和签名识别等归为次级生物识别技术;将血管纹理识别、人体气味识别、DNA识别等归为“深奥的”生物识别技术)
Kerberos技术
Kerberos的基本原理是利用对称密码技术,使用可信的第三方(刚刚的第三个方法)来认证服务器的用户身份,并在用户和服务器之间建立安全信道。(就是基于对称密码技术在网络上实施认证的一种服务协议,它允许一台工作站通过交换加密消息在非安全网络上与另一台工作站相互证明身份,一旦试图登录上网的用户身份得到验证,Kerberos协议就会给这两台工作站提供密钥,并通过使用密钥和加密算法为用户间的通信加密以进行安全的通信)
Kerberos系统涉及到
四个基本实体:
- Kerberos客户机:用户用来访问服务器的设备。
- AS(Authentication Server):为用户分发TGT(Ticket Granting Ticket)的服务器。用户使用TGT(Ticket Granting Ticket)向TGS(Ticket Granting Server)证明自己的身份。
- TGS(Ticket Granting Server):为用户分发到最终目的票据的服务器,用户使用这个票据向自己要求提供服务的服务器证明自己的身份。
- 应用服务器(Application Server):为用户提供特定服务。
设计基本思路:
①使用一个(或一组)独立的认证服务器(AS—Authentication Server),来为网络中的客户提供 身份认证服务;
②**认证服务器 (AS)**,用户口令由 AS 保存在数据库中;
③AS 与每个服务器共享一个唯一的保密密钥(已被安全分发)
设计目标:
①安全性:能够有效防止攻击者假扮成另一个合法的授权用户。
②可靠性:分布式服务器体系结构,提供相互备份。
③对用户透明性
④可伸缩:能够支持大数量的客户和服务器。
在实际使用中,会遇到如下问题:
①用户希望输入口令的次数最少。
②口令以明文传送会被窃听。
对于这样的问题,Kerberos的解决办法是:
①票据重用(ticket reusable)。
②引入票据许可服务器(TGS - ticket-granting server)。用于向用户分发服务器的访问票据;认证服务器 AS 并不直接向客户发放访问应用服务器的票据,而是由 TGS 服务器来向客户发放。
票据:
在Kerberos系统中,票据(Ticket)是用于安全传递用户身份所需要的信息的集合。它不仅包含该用户的身份,而且还包含其他一些相关的信息。一般来说,它主要包括客户方Principal、目的服务方Principal、客户方IP地址、时间戳(分发该Ticket的时间)、Ticket的生存期以及会话密钥等内容。通常将AS和TGS统称为KDC(Key Distribution Center)。
工作流程:
- 第一步,Kerberos客户向认证服务器AS申请票据TGT。
- 第二步,(AS在认证数据库检查、确认Kerberos客户,并产生一个会话密钥,同时使用Kerberos客户的秘密密钥对会话密钥进行加密,然后)生成一个票据TGT,AS生成TGT后,把TGT发送给Kerberos客户
- 第三步,(Kerberos客户收到AS 发来的TGT后,使用自己的秘密密钥进行)解密,得到会话密钥,然后利用解密的信息重新构造认证请求单,向TGS发送请求,申请访问应用服务器AP所需要的票据(Ticket)。
- 第四步, TGS使用其秘密密钥对TGT进行解密,同时使用TGT中的会话密钥对Kerberos客户的请求认证单信息进行解密,并将解密后的认证单信息与TGT中的信息进行比较。然后,TGS生成新的会话密钥以供Kerberos客户和应用服务器使用,并利用各自的秘密密钥加密会话密钥。最后,生成一个票据,它由Kerberos客户实体名、地址、时间戳、限制时间、会话密钥组成。TGS生成TGT完毕后,把TGT发送给Kerberos客户。
- 第五步,Kerberos客户收到TGS的响应后,将获得与应用服务器共享的会话密钥。与此同时,Kerberos客户生成一个新的用于访问应用服务器的认证单,并用与应用服务器共享的会话密钥加密,然后与TGS发送来的票据一并传送到应用服务器。
- 第六步,应用服务器确认请求。
优缺点:
主要优点是利用相对便宜的技术提供了较好的保护水平
缺点主要体现在以下3个方面:
① 需要具有很高利用率的可信在线认证服务器(至少在物理上是安全的);
②重放检测依赖于时间戳,这意味着需要同步和安全的时钟;
③ 如果认证过程中的密钥受到威胁,那么传输在使用该密钥进行认证的任何会话过程中的所有被保护的数据都将受到威胁。
五.PKI 技术
基本概念和作用:
所谓PKI(Pubic Key Infrastructure)即公钥基础设施,支持公钥的管理,并提供保密性、完整性、真实性以及可追究性安全服务的具有普适性的安全基础设施
- 可提供安全服务
- 支持公钥的管理
- 利用公钥和其他加密技术的结合。
主要研究内容及主要服务
- 其在计算机和网络环境中得到了广泛应用:如可信计算机的本机认证、网上证券、网上保险;网上办公、网上税务、网上工商、网上海关、网上医院等。
主要研究内容:
PKI提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书。通过数字证书,PKI很好的证明了公钥属于谁。
技术的研究对象包括:数字证书,颁发数字证书的证书认证中心(CA),持有证书的证书持有者和使用证书服务的证书用户等
主要安全服务:
1.认证——向一个实体确认另一个实体确实是他自己。
2.完整性—— 向一个实体确保数据没有被有意或无意的修改。
3.机密性——向一个实体确保除了接收者,无人能读懂数据的关键部分。
4.不可否认性——通过数字签名机制来提供该服务的。
pkl的基本结构
PKI体系结构一般由认证机构和各种终端实体组成
(pkl体系建立首先应该关注用户使用证书及相关服务的全面性和便利性)
建立和设计一个PKI体系必须保证
相关服务功能的实现
• 用户身份的可信认证
• 制定完整的证书管理政策
• 建立高可信度的认证CA中心
• 用户实体属性的管理
• 用户身份的隐私保护
• 证书作废列表处理
• 认证机构CA为用户提供证书库及CRL服务的管理
组成
- Pkl策略
- 软硬件系统
- 证书机构ca
- 注册机构ca
- 证书发布系统
- pkl应用
pkl与数字证书
数字证书是PKI最基本的元素,也是承载PKI安全服务的最重要的载体。 在PKI体系中,用户就是通过使用数字证书来保障信息的传输的保密性、发送信息的不
可否认性、交易者身份的确定性等安全特性。 数字证书是PKI的核心元素,由权威的、可信认的、公证的第三方机构CA所签发
数字证书的补充
用户证书具有下列形式:
正在载入… CA《A》=CA{V,SN,AI,CA,UCA,A,UA,Ap,TA}
这里:
V——证书版本号。
SN一—证书序列号。
AI——用于对证书进行签名的算法的标识符。
UCA——CA可选的惟一标识符。
UA——用户A可选的唯一标识符。
数字证书/密钥的生命周期
主要三个阶段:
- 证书初始化注册阶段
- 颁发投入工作阶段
- 撤消阶段
认证过程
- 证书拆封
用于验证发行者ca的公钥能否正确解开客户实体——证书中的“发行者的数字签名”【即证明该证书是否为可信任的第三方ca机构所签发】
2. 序列号验证
检查实体证书中的签名实体序列号是否与签发者证书的序列号一致,从而验证证书真伪。
3. 有效期验证
检查用户证书使用的日期是否合法,有无过期。
4.撤销列表查询
pkl互联
pkl互通性必须建立在网络互通的基础上
PKI在全球互通可以有两种实现途径:
● 各PKI体系的根CA交叉认证。(一般实现方式)
● 建立一个全球性的统一根CA,为各PKI体系的根证书颁发证书。(实现较困难)
交叉互联
双子树结构
pkl应用实例
虚拟专用网络(VPN)
定义
架构VPN的基础:基于pkl技术的IPSec协议
是一种架构在公用通信基础设 施上的专用数据通信网络,利用网络层安全协议(尤其是IPSec)和建立在PKI上 的加密与签名技术来获得私有性。
口令
用来防止未授权的个人直接访问敏感数据
防火墙
用来防止公司以外的未授权个人访问公司内部信息
基于PKI技术的IPSec协议现在已经成为架构VPN 的基础,它可以为路由器之 间、防火墙之间或者路由器和防火墙之间提供经过加密和认证的通信。虽然它的 实现会复杂一些,但其安全性比其他协议都完善得多。由于IPSec是IP层上的协 议,因此很容易在全世界范围内形成一种规范,具有非常好的通用性,而且IPSec本身就支持面向未来的协议——IPv6。
安全电子邮件—— PKI 与S/MIME
利用数字证书和私钥,用户可以对他所发的邮件进行数字签名,这样就可以获得认证、完整性和不可否认性,如果证书是由其所属公司或某一可信第三方颁发的,收到邮件的人就可以信任该邮件的来源,无论他是否认识发邮件的人;另一方面,在政策和法律允许的情况下,用加密的方法就可以保障信息的保密性。
目前发展很快的安全电子邮件协议是S/MIME ,是允许发送加密和有签名邮件的协议。主要依赖技术是pkl。
Web安全——PKI 与 SSL
无论是IE还是其他浏览器,都支持SSL协议(The Secure Sockets Layer)。这是一个在传输层和应用层之间的安全通信层,在两个实体进行通信之前,先要建立SSL连接,以此实现对应用层透明的安全通信。利用PKI技术,服务器和客户端都对对方的证书进行验证,同时客户端生成会话密钥和选择消息摘要算法,利用服务器端的公钥加密会话密钥,传送给服务器,这样SSL协议就允许在浏览器和服务器之间进行加密通信。SSL利用数字证书保证通信安全,服务器端和浏览器端分别由可信的第三方颁发数字证书,这样在交易时,双方可以通过数字证书确认对方的身份。需要注意的是,SSL协议本身并不能提供对不可否认性的支持,这部分的工作必须由数字证书完成。
结合SSL协议和数字证书,PKI技术可以保证Web 交易多方面的安全需求,使Web上的交易和面对面的交易一样安全。
第六章 网络攻击与防御技术
6.1 攻击技术
6.1.1 计算机病毒(或称恶意代码)
•计算机病毒是一种恶意软件,可以通过感染计算机系统并在其中复制自身来破坏计算机系统、窃取信息或进行其他恶意活动。
•计算机病毒通常通过网络、移动存储设备或恶意软件等途径传播,并且可能造成广泛的破坏和损失。
计算机病毒根据其传播方式、破坏方式和功能等不同特点,可以分为以下几类主要的分类:
- 文件感染型病毒:病毒会感染可执行文件、程序或脚本文件,一旦这些文件运行,病毒就会开始感染系统中的其他文件
- 引导型病毒: 感染计算机的引导扇区后,在计算机启动时加载自身到内存中,使得计算机在启动时被感染
- 宏病毒:这种病毒主要利用应用程序中的宏功能,感染文档和模板文件,并在用户打开这些文件时执行恶意代码。
- 逻辑炸弹(Logic bombs):逻辑炸弹是一种预设条件触发的恶意代码,可能在特定条件满足时触发破坏性行为。
- 蠕虫(Worm):蠕虫是一种自我复制并通过网络传播的病毒,可以迅速在网络中传播并感染大量系统。
- 特洛伊木马(Trojan horse):特洛伊木马是一种伪装成正常或有用程序,但实际上含有恶意代码的病毒,常常用于窃取信息、监视用户活动等恶意行为。
- Rootkit:Rootkit是植入系统内核或应用程序中的一种恶意软件,目的是隐藏自身活动,绕过系统安全控制。
- 勒索软件(Ransomware):勒索软件是一种加密文件然后勒索用户赎金的恶意软件,对用户和组织造成巨大损失。
(遇到了再查解释。。)
计算机病毒发展趋势:
AI和机器学习:恶意软件作者开始利用人工智能和机器学习技术来创建更具破坏性和隐匿性的病毒。这些病毒可能能够自我学习和适应防御系统的智能对抗。
指向性攻击:针对特定目标的高度定制化攻击越来越常见,这种攻击可能采用高级持续性威胁(Advanced Persistent Threat,APT)的形式,目的是窃取高价值信息或进行网络间谍活动。
IoT和移动设备攻击:随着物联网设备和移动设备的普及,计算机病毒也开始针对这些设备进行攻击,利用它们的弱点来入侵和控制目标系统。
加密货币挖矿病毒:近年来,加密货币挖矿病毒成为较为普遍的一种类型,这种病毒会利用感染的计算机资源来挖掘加密货币,占用系统性能和资源。
社交工程和钓鱼攻击:计算机病毒作者通过社交工程手段,如伪装成合法的电子邮件或网站,诱导用户点击链接或下载附件,从而传播恶意软件。
网络攻击一般采用三种技术手段,
- 一是利用计算机病毒(或称恶意代码);
- 二是利用系统或者程序中的漏洞,或者协议漏洞;
- 三是利用社会工程学。
6.1.2 漏洞的基本概念
•漏洞(Vulnerability)是指计算机系统或软件中存在的未被发现或未被修复的安全弱点,可以被黑客或恶意用户利用来进行攻击或入侵。漏洞可能导致系统崩溃、数据泄露、远程执行命令等安全问题,对系统和用户的信息安全构成威胁。许多安全漏洞是程序错误导致的,此时可叫做安全缺陷(Security bug),但并不是所有的安全隐患都是程序安全缺陷导致的。
系统漏洞
系统漏洞中目前最常见的是Web漏洞,它通常是指网络系统程序上的漏洞,可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞,常见的Web漏洞有Sql注入、XSS漏洞、上传漏洞等,具体分类如下:
•1. XSS(Cross-Site Scripting)跨站脚本,因为缩写和CSS重叠,所以只能叫XSS。跨站脚本是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种。
•2. SQL注入就是指Web应用程序对用户输入数据的合法性没有判断,前端传入后端的参数是攻击者可控的,并且参数代入数据库查询,攻击者可以通过在不同的SQL语句来实现对数据库的任意操作。
•3. CSRF(Cross-Site Request Forgery)为跨站请求伪造,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF通过伪装成受信任用户请求受信任的网站。CSRF难以防范,危险性比XSS更高。
•4. SSRF(Server-Side Request Forgery)为服务器端请求伪造,是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统。
•5. 文件上传漏洞是在上传文件时,如果服务器代码未对客户端上传的文件进行严格的验证和过滤,很容易造成可以上传任意文件的情况,包括上传脚本文件(asp、aspx、php、jsp等格式的文件)。非法用户可以利用上传的恶意脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又被成为WebShell,也可将WebShell脚本称为一种网页后门,WebShell脚本具有非常强大的功能,比如查看服务器目录、服务器中的文件,执行系统命令等。
•6. 命令执行应用程序有时需要调用一些执行系统命令的函数,如在PHP中,使用system、exec、shell_exec、passthru、popen、proc_popen等函数可以执行系统命令。当黑客能控制这些函数中的参数时,就可以将恶意的系统命令拼接到正常命令中,从而造成命令执行攻击,这就是命令执行漏洞。
•7. 逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。其中越权访问又分为水平越权和垂直越权。
6.1.3 社会工程学
社会工程学(攻击)是指在信息安全方面操纵人的心理,使其采取行动或泄露机密信息。有别于社会科学中的社会工程,这是种以收集信息、欺诈或入侵系统为目的的信任骗局,已发展出各种技术手段,并可能用于犯罪。
各类型的网络犯罪和信息安全威胁,都会用社会工程学学的技巧,尤其是在目标式攻击中使用的频率愈来愈高。网络罪犯以往只会用世界杯足球赛或情人节等标题耸动的全球事件或新闻来引诱用户,现在有其他的犯罪手法往往也搭配使用社会工程学学技巧。
•钓鱼攻击:是一种企图从电子通信中,伪装成信誉卓著的法人媒体以获得用户名、密码和信用卡信息等敏感个人资料的犯罪诈骗过程。大多数的钓鱼攻击都是伪装成银行、学校、软件公司或政府安全机构等可信服务提供者,例如FBI。
•诱饵计划:在此类型的社会工程学阴谋中,攻击者利用了人们对于例如最新电影或者热门MV的超高关注,从而对这些人进行信息挖掘。这在例如Bit torrent等P2P分享网络中很常见。
•垃圾邮件:以电子邮件包装着恶意木马程序的电子邮件入侵受害者电脑,例如主旨为美国总统大选结果的电子邮件附件却包含恶意木马程序。
•电脑蠕虫:不需附在别的程序内,用户不介入操作的情况下也能自我复制或执行。
•恶意软件。
6.2 信息收集
6.2.1 扫描技术
扫描的目的
主要有三个:
- 查看目标网络中哪些主机是存活的
- 查看存活的主机运行了哪些服务
- 查看主机提供的服务有无漏洞
扫描的主要分类:
IP扫描又叫Ping扫描,主要是通过使用系统自带工具Ping完成的
(基于ICMP协议,其主要思想就是构造一个ICMP包,发送给目的主机,从目的主机生成的响应来进行判断目标主机是否存活)
Nmap
Nmap是一个网络连接端口扫描软件,用来扫描目标网络主机的网络连接端口。确定哪些服务正在哪些端口上运行,从此推断运行在目标主机上的操作系统类型。它能很容易并相对较快的对目标地址空间进行ICMP Ping扫描。
Nmap的官方网址为https://nmap.org/
端口扫描可以分为TCP扫描和UDP扫描
1. TCP端口扫描即三次握手
1.第一次握手:客户端向服务器发送报文段1,其中的 SYN 标志位 (前文已经介绍过各种标志位的作用)的值为 1,表示这是一个用于请求发起连接的报文段,其中的序号字段 (Sequence Number,图中简写为seq)被设置为初始序号x (Initial Sequence Number,ISN),TCP 连接双方均可随机选择初始序号。发送完报文段1之后,客户端进入 SYN-SENT 状态,等待服务器的确认。
2.第二次握手:服务器在收到客户端的连接请求后,向客户端发送报文段2作为应答,其中 ACK 标志位设置为 1,表示对客户端做出应答,其确认序号字段 (Acknowledgment Number,图中简写为小写 ack) 生效,该字段值为 x + 1,也就是从客户端收到的报文段的序号加一,代表服务器期望下次收到客户端的数据的序号。此外,报文段2的 SYN 标志位也设置为1,代表这同时也是一个用于发起连接的报文段,序号 seq 设置为服务器初始序号y。发送完报文段2后,服务器进入 SYN-RECEIVED 状态。
3.第三次握手:客户端在收到报文段2后,向服务器发送报文段3,其 ACK 标志位为1,代表对服务器做出应答,确认序号字段 ack 为 y + 1,序号字段 seq 为 x + 1。此报文段发送完毕后,双方都进入 ESTABLISHED 状态,表示连接已建立。
•第一步:客户端进程发出断开连接指令,这将导致客户端的TCP程序创建一个特殊的TCP报文段,发送到服务器。这个报文段的FIN字段被置为1,表示这是一条断开连接的报文;
•第二步:服务器接收到客户端发来的断开连接报文,向客户端回送这个报文的确认报文(ACK字段为1),告诉服务器已经接收到FIN报文,并允许断开连接;
•第三步:服务器发送完确认报文后,服务器的TCP程序创建一条自己的断开连接报文,此报文的FIN字段被置为1,然后发往客户端;
•第四步:客户端接收到服务器发来的FIN报文段,则产生一条确认报文(ACK为1),发送给服务器,告知服务器已经接收到了它的断开报文。服务器接收到这条ACK报文段后,释放TCP连接相关的资源(缓存和变量),而客户端等待一段时间后(半分钟、一分钟或两分钟),也释放处于客户端的缓存和变量;
•ACK:只有1 bit的标志位,若为1,表示这个数据段中的确认序号是有效的,即这个数据报是对之前接收到的某个报文的确认(一个TCP报文可以同时作为确认报文和传递数据报文)。
•RST:只有1 bit的标志位,若客户端向服务器的一个端口请求建立TCP连接,但是服务器的那个端口并不允许建立连接(比如没开启此端口),则服务器会回送一个TCP报文,将RST位置为1,告诉客户端不要再向这个端口发起连接;
•SYN:只有1 bit的标志位,若为1,表示这是一条建立连接的TCP报文段;
•FIN:只有1 bit的标志位,若为1,表示这是一条断开连接的TCP报文段;
UDP扫描
UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。 偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。 如果几次重试后还没有响应,该端口就被认为是 open|filtered(开放|被过滤的)。 这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。 可以用版本扫描(-sV)帮助区分真正的开放端口和被过滤的端口。
使用特定的 UDP服务客户端(如 Snmpwalk,dig或Tftp)发送UDP数据包到目标UDP网络服务之后等待确定性的响应信息。
漏洞扫描
漏洞扫描程序的基本原理:具有漏洞的应用程序在对某些网络请求作答时,与已经安装补丁的程序有所差别;利用这些差别可以识别目标主机上的程序是否存在漏洞。
常用的漏洞扫描工具有Nessus、OpenVAS、X-Scan等
6.2.2 嗅探技术
对攻击者来说,通过嗅探技术能以非常隐蔽的方式攫取网络中的大量敏感信息,与主动扫描相比,嗅探行为更难被察觉,也更容易操作
嗅探器的作用
不正当用途:
(1) 窃取机密信息,包括各种用户名和口令,电子邮件正文及附件、网络打印的文档等;
(2) 窥探底层的协议信息,如DNS的IP地址、本机IP地址、网关IP地址等;
(3) 通过嗅探器获得的数据还可以为攻击者进行中间人攻击篡改数据提供帮助。
正当用途:
(1) 解释网络上传输的数据包的含义;
(2) 为网络诊断提供参考;
(3) 为网络性能分析提供参考;
(4) 发现网络入侵现象,为入侵检测提供参考;
(5) 将网络事件记入日志。
常见嗅探工具
•tcpdump嗅探器软件
可以将网络中传送的数据包的包头完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助去掉无用的信息。同时也是维护的比较好的开源嗅探器软件,官方网址是http://www.tcpdump.org/。
•wireshark网络数据包分析工具
主要作用是捕获网络数据包,并尽可能详细地显示数据包的内容,它使用WinPCAP作为接口,直接与网卡进行数据报文交换, wireshark的官方网址是https://www.wireshark.org/。
集线器网络
假设机器A上的管理员为了维护机器C,使用了一个FTP命令向机器C进行远程登陆,
机器B上的管理员想知道究竟登陆机器C上FTP口令,仅仅需要把自己机器上的网卡置于混杂模式,并对接收到的数据帧进行分析。
交换机网络
几种在交换网络中实现的嗅探方法:
•MAC洪泛
向交换机发送大量含有虚构的MAC地址和IP地址的包,使交换机无法处理如此多的信息,致使交换机进入了所谓的“打开失效”模式,也就是开始了类似于集线器的工作方式,向网络上所有机器广播数据包
•MAC欺骗
攻击者通过将源MAC地址伪造为目标主机的源MAC地址,并将这样的数据包通过交换机发送出去,使得交换机不断的更新MAC—端口映射表,从而让交换机相信攻击者主机的MAC就是目标主机的MAC,交换机就会把本应发送给目标主机的数据包发送给攻击者
•ARP欺骗
攻击者通过对网关和目标主机进行ARP欺骗,就可以截获两者之间的通信数据,实现嗅探的目的
6.2.3 其他信息收集技术
利用公开服务收集信息
WEB与搜索引擎服务、USENET(新闻组服务)、WhoIs服务
网络拓扑探测
主要方法是路由跟踪,执行路由跟踪的工具是在类UNIX操作系统平台上的traceroute和Windows平台的Tracert客户端程序
系统类型探测
- 利用端口扫描。
- 利用Banner
- TCP/IP协议栈指纹
TCP/IP 堆栈指纹识别是对 TCP/IP 堆栈实现的特征的远程检测。然后,参数的组合可用于推断远程机器的操作系统(也称为操作系统指纹),或合并到设备指纹中
6.2.4 关于漏洞与信息收集的防范
防范网络扫描:
•在防火墙及过滤设备上采用严格的过滤规则,禁止扫描的数据包进入系统。
•主机系统除了必要的网络服务外,禁止其它的网络应用程序。
•对于只对内开放的网络服务,更改其提供服务的端口。
•抓取扫描时的数据包,对扫描者进行反向追踪。
防范嗅探:
•及时打补丁。
•开启本机监控。
•监控本地局域网的数据帧。
•对敏感数据加密。
•使用安全的拓扑结构。
•安装ARP防火墙。
6.3 网络欺骗
6.3.1 IP欺骗
以其它主机IP作为源IP向目标主机发送数据包
IP欺骗的危害:
以可信任的身份与服务器建立连接和伪造源IP地址,隐藏攻击者身份,消除攻击痕迹
IP 欺骗的两种表现形式:
•攻击者伪造的IP地址不可达或者根本不存在。
•攻击者通过在自己发出的IP 包中填入被目标主机所信任的主机的IP来进行冒充。
IP欺骗的步骤
•找到一个被目标主机信任的主机;
•使被信任的主机丧失工作能力;
•伪装成被信任的主机, 向目标主机发送SYN;
•猜测或嗅探得到SYN+ACK的值;
•再向目标主机发送ACK连接建立
6.3.2 电子邮件欺骗
•电子邮件欺骗(email spoofing)是伪造电子邮件头,导致信息看起来来源于某个人或某个地方,而实际却不是真实的源地址。
•这种欺骗发生的主要原因是由于发送电子邮件最主要的协议—简单邮件传输协议(SMTP)不包括认证机制。即使SMTP服务扩展允许SMTP客户端通过邮件服务器来商议安全级别。但这一预防措施并不是总被使用。如果预防措施没有被使用,具备必要知识的任何人都可以连接到服务器,并使用其发送邮件
6.3.3 Web欺骗
•攻击者创造了一个表面上看起来完全相同的网站,它拥有相同的网页和链接。然而,攻击者控制着假冒的Web站点,这样被攻击者浏览器和Web服务器之间的所有网络信息完全被攻击者所截获
•基本原理:在受攻击者和提供真正服务的Web服务器之间设立攻击者的Web服务器,这种攻击种类在安全问题中称为“来自中间的攻击”
工作流程如下所示:
用户点击经过改写后的 http://www.www.org/http://home.xxx1.com ;
http://www.www.org 改写文档中的所有URL;
http://www.www.org 向用户返回改写后的文档。
•修改过的文档中的所有URL都指向了www.org ,当用户点击任何一个链接都会直接进入 www.org ,而不会直接进入真正的URL
•开始攻击之前,攻击者必须以某种方式引诱受攻击者进入攻击者所创造的错误的Web。黑客往往使用下面三种方法:
•把错误的Web链接放到一个热门Web站点上;
•如果受攻击者使用基于电子邮件,那么可以将它指向错误的Web;
•创建错误的Web索引,指示给搜索引擎
•构建自己的DNS服务器,IP地址解析到攻击WEB页面,且将攻击WEB页面伪造成被假冒的页面。
6.3.4 ARP欺骗
(前文嗅探处有提)
•ARP原理:
主机A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会通过交换机进行数据传输。如果未找到,则广播A一个ARP请求报文(携带主机A的IP地址Ia——物理地址Pa),请求IP地址为Ib的主机B回答物理地址Pb。局域网内所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据。因此,本地高速缓存的这个ARP cache表是本地网络通讯的基础,这个缓存表是动态更新的。
典型的ARP欺骗分为两种:
- 对路由器ARP cache表的欺骗
- 对内网PC的网关欺骗。
第一种ARP欺骗的原理是截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器的ARP cache中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。
第二种ARP欺骗的原理是——伪造网关。它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的网关连接到Internet。从被骗PC角度看,就是上不了网了,“网络掉线了”
ARP欺骗能够得以实现的主要原因有:
•ARP协议设计之初没有考虑安全问题,所以任何计算机都可以发送虚假的ARP数据包;
•ARP协议的无状态性,响应数据包和请求数据包之间没有什么关系,如果主机收到一个ARP响应却无法知道是否真的发送过对应的ARP请求;
•ARP缓存需要定时更新,给攻击者以可乘之机。
•ARP欺骗的主要环境必须是局域网,也就是说攻击者必须先取得进入局域网的合法身份才能进行ARP欺骗
网络执法官原理:
在网络执法官中,要想限制某台机器上网,只要点击”网卡”菜单中的”权限”,选择指定的网卡号或在用户列表中点击该网卡所在行,从右键菜单中选择”权限”。在弹出的对话框中即可限制该用户的权限。对于未登记网卡,可以这样限定其上线:只要设定好所有已知用户(登记)后,将网卡的默认权限改为禁止上线即可阻止所有未知的网卡上线。使用这两个功能就可限制用户上网。其原理是通过ARP欺骗发给被攻击的电脑一个假的网关IP地址对应的MAC,使其找不到网关真正的MAC地址,这样就可以禁止其上网。
6.3.5 非技术类欺骗
- 社会工程学
- 垃圾搜索
•攻击者通过搜索被攻击者的废弃物,得到与攻击系统有关的信息
6.3.6 关于网络欺骗的防范
IP欺骗的防范
•抛弃基于地址的信任策略;
•进行包过滤,只信任内部主机;
•利用路由器屏蔽掉所有外部希望向内部发出的连接请求;
•使用加密传输和验证的方法;
•使用随机化的初始序列号,使得TCP序列号难以猜测。
Web欺骗的防范
短期的解决方案:
•禁止浏览器中的javascript功能,那么各类改写信息将原形毕露;
•确保浏览器的连接状态是可见的,它将给你提供当前位置的各类信息;
•时刻注意你所点击的URL链接会在位置状态行中得到正确的显示。
长期的解决方案:
•改变浏览器,使之具有反映真实URL信息的功能,而不会被蒙蔽;
•对于通过安全连接建立的Web——浏览器对话,浏览器还应该告诉用户谁在另一端,而不只是表明一种安全连接的状态。
ARP欺骗的防范
•网关建立静态IP/MAC对应关系,各主机建立MAC数据库
•建立DHCP服务器
•IDS(Intrusion Detection System,入侵检测系统)监听网络安全。
6.4 口令攻击
6.4.1 常见系统口令机制
口令的存储:
操作系统一般不存储明文口令,只保存口令散列。
可以在以下几个地方找到windows系统的口令散列:
注册表,HKEY_LOCAL_MACHINE\SAM\SAM;
SAM文件,位置在%SystemRoot%system32\config\SAM;
恢复盘,位置在%SystemRoot%repair
口令的管理
Windows 系统使用安全账号管理器的机制来管理用户账号。安全账号管理器对账号的管理是通过安全标识进行的,安全标识在账号创建时就同时创建,一旦账号被删除,安全标识也同时被删除。安全标识是唯一的,即使是相同的用户名,在每次创建时获得的安全标识也完全不同。因此,一旦某个账号被删除,他的安全标识也就不存在了。即使重建相同的用户名账号,也会有不同的安全标识,不会保留原来的权限。
Windows使用两种算法来处理明文口令,即LM算法和NTLM算法。
•1) LM算法,口令转换为hash值,方法如下:
(1) 口令变成大写;
(2) 把口令变成14个字符,或截断或补齐;
(3) 这14个字符分成两个7字符;
(4) 用7个字符和DES算法加密一个64位“Magic ”;
(5) 把两个64位结果拼起来,得到128位值;
(6) 服务器保存该128位值
•2) NTLM算法,口令转换为hash值,方法如下:
(1) 把口令变成Unicode编码;
(2) 使用SHA256散列算法;
(3) 保存得到的128位散列值
6.4.2 口令攻击技术
根据攻击口令是否以网络连接的交互方式进行,可以将攻击分为在线口令攻击和离线口令攻击:
- 在线口令攻击:在线攻击是指在线状态下攻击者对用户口令进行的猜测试探攻击;
- 离线攻击:离线攻击是指攻击者通过某些手段进行任意多数量的口令猜测,采用攻击字典和攻击程序,最终获得口令。离线攻击方法是Internet上常用的攻击手段。
根据攻击手段是否参与实际的身份认证过程,可以将攻击分为主动口令攻击和被动口令攻击:
- 主动口令攻击又可以分为以下三种形式:
- •字典攻击:字典攻击是一种把常见的、使用概率较高的口令集中存放在字典文件中,利用字典库中的数据不断的进行用户名和口令的反复测试。缺点是只能发现字典里存在的单词口令。
- •强力攻击:尝试所有的字符组合方式,逐一去模拟口令验证过程,缺点是速度慢。
- •组合攻击:综合了以上两种方法,这种攻击介于字典攻击和强力攻击之间。
- 被动口令攻击又可以分为以下三种形式:
- •网络数据流窃听:由于认证信息要通过网络传递,且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某种特定系统的认证数据,并提取出用户名和口令。
- •重放(Record/Replay):有的系统会将认证信息进行简单加密后进行传输,如果攻击者无法用第一种方式推算出口令,可以使用截取/重放方式。攻击者仍可以采用离线方式对口令密文实施字典攻击;
- •钓鱼攻击
口令技术的缺点:
•大多数系统的口令是明文传送到验证服务器的,容易被截获。某些系统在建立一个加密链路后再进行口令的传输以解决此问题,如配置链路加密机。
•口令维护的成本较高。为保证安全性,口令应当经常更换。另外为避免对口令的字典攻击,口令应当保证一定的长度,并且尽量采用随机的字符。但缺点是难于记忆。
•口令容易在输入的时候被攻击者偷窥,而且用户无法及时发现。
6.4.3 关于口令攻击的防范
- 选择安全密码
- 设置足够长度的口令
- 口令中混合使用大小写字母、数字、特殊符号
- 防止口令猜测攻击
- 硬盘分区采用NTFS格式
- 正确设置和管理帐户
- 禁止不需要的服务
- 关闭不用的端口
- 禁止建立空连接
- 设置安全策略
- 强制密码历史。确定唯一新密码的个数,在重新使用旧密码之前,用户必须使用这些密码。
- 密码最长使用期限。确定在要求用户更改密码之前用户可以使用该密码的天数。其值介于 0 和 999 之间;如果该值设置为 0,则密码从不过期。
- 密码最短使用期限。确定用户可以更改新密码之前这些新密码必须保留的天数。此设置被设计为与“强制密码历史”设置一起使用,这样用户就不能很快地重置有次数要求的密码并更改回旧密码。
- 密码长度最小值。确定密码最少可以有多少个字符。
- 采用加密的通信协议。
比如在使用web邮箱时,可以采用更加安全的https。
- 使用U盾输入口令,降低键盘记录攻击的威胁。
另外,访问网站时,注意区分是否是虚假站点。
6.5 缓冲区溢出攻击
6.5.1 缓冲区溢出的概念
缓冲区:
从程序的角度,缓冲区就是应用程序用来保存用户输入数据和代码的临时数据的内存空间。
缓冲区溢出:
如果用户输入的数据长度超出了程序为其分配的内存空间,这些数据就会覆盖程序为其它数据分配的内存空间,形成所谓的缓冲区溢出。
缓冲区溢出的危害:
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统和应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统当机和重新启动等后果。更为严重的是,可以利用它执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
6.5.2 缓冲区溢出的基本原理
缓冲溢出通常在程序缓冲区编写超出其长度的代码——造成溢出,从而破坏其堆栈,使程序执行攻击者在程序地址空间中早已安排好的代码以达到其目的。
由于name只有8字节大小,在进行strcpy前,并没有检测argv[1]的长度,如果argv[1]的长度大于8,则复制时就会覆盖name数组后面的ebp的内容及main函数的返回地址。等函数返回时,程序就会跳转到修改后的地址去执行。
几种实现缓冲区攻击的方法
在程序的地址空间里安排适当的代码
- •植入法。
- •利用已经存在的代码。
通过适当的初始化寄存器和内存,让程序跳转到攻击者安排的地址空间执行
- •通过Activation Records(活动记录)改变地址
- •通过Function Pointers(函数指针)改变地址
- •通过Longjmpbuffers(长跳转缓冲区)改变地址
6.5.3 缓冲区溢出的类型
按照溢出缓冲区所在的区域类型来划分,可分为栈溢出和堆溢出
•栈溢出特点:缓冲区在栈中分配;拷贝的数据过长;覆盖了函数的返回地址、其它一些重要数据结构或函数指针
•堆溢出特点:缓冲区在堆中分配;拷贝的数据过长;覆盖了堆管理结构
•其他溢出类型中,最典型的就是整型溢出
•整型数溢出从造成溢出原因的角度来说可以分为三大类:存储溢出、计算溢出和符号问题
6.5.4 缓冲区溢出的防范
对缓冲区溢出的防范方法主要有以下几种方式:
编写严格的代码
不可执行堆栈数据段
利用程序编译器的边界检查
指针完整性检查
6.6 拒绝服务攻击
6.6.1 拒绝服务攻击的概念
服务:
是指系统提供的,用户需求的一些功能。
拒绝服务(DoS):
DoS是Denial of Service的简称,即拒绝服务,任何对服务的干涉,使得其可用性降低或者失去可用性均称为拒绝服务。例如一个计算机系统崩溃或其带宽耗尽或其硬盘被填满,导致其不能提供正常的服务,就构成拒绝服务。
拒绝服务攻击:
造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。
分布式拒绝服务(DDoS)攻击:
如果处于不同位置的多个攻击者同时向一个或数个目标发起攻击,或者一个或多个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击
6.6.2 利用系统漏洞进行拒绝服务攻击
•系统漏洞是包含在操作系统或应用程序中与安全相关的系统缺陷。这些缺陷大多是由于错误的编程、粗心的源代码审核或一些不当的绑定所造成的,常被攻击者利用
例如微软的Windows 操作系统中的安全漏洞允许rootkits在使用操作系统的计算机上隐藏起来或者实施拒绝服务器攻击
Windows GDI Plus library存在处理畸形图象漏洞,可能引起远程拒绝服务
•解决这类攻击方法只能是不停的修复漏洞,同时加强管理人员对这类问题的重视程度
6.6.3 利用协议漏洞进行拒绝服务攻击
•几个典型的利用协议漏洞进行的拒绝服务攻击:
SYN Flood
UDP flood拒绝服务攻击
Land攻击
这是利用漏洞,进行发送大量的源地址与目的地址相同的包,从而造成服务器解析Land包时占用大量的处理资源,当收到的包达到一定程度时,就会形成拒绝服务攻击。
死Ping
Ping是通过发送ICMP报文来判断主机是否存活。利用这个命令就能发动一次攻击,当发送超大型这种包时,也就是发送的包超过65535字节会造成服务器重组包时发生缓冲区溢出,从而让服务器崩溃发生拒绝服务。
6.6.4 对拒绝服务攻击的防范
- •确保所有服务器采用最新系统,并打上安全补丁
- •删除多余的网络服务
- •自己定制防火墙规则
- •确保从服务器相应的目录或文件数据库中删除未使用的服务
- •禁止内部网通过Modem连接至PSTN系统
- •禁止使用网络访问程序如Telnet、Ftp、Rsh、Rlogin和Rcp,以基于PKI的访问程序如SSH取代
(ps: rsh是”remote shell”(远程 shell)的缩写,该命令在指定的远程主机上启动一个shell并执行用户在rsh命令行中指定的命令;如果用户没有给出要执行的命令,rsh就用rlogin命令使用户登录到远程机上。
remote file copy,即远程文件拷贝)
- •限制在防火墙外与网络文件共享
- •在防火墙上运行端口映射程序或端口扫描程序
- •检查所有网络设备和主机/服务器系统的日志
- •确保管理员对所有主机进行检查,而不仅针对关键主机