网络攻防期末复习

课程学习过程中的主要内容包括:

第一章 网络安全概述

第二章 常见网络攻击与防御方法

第三章 恶意代码

第四章 软件安全

第五章 重要防御系统

第六章 威胁分析与应用

重点存在于:

网络协议部分

一、熟悉常见协议原理

TCP UDP ICMP DNS TLS

常见网络攻击

一、网络扫描

TCP SYN 扫描 

HTTP慢速攻击

二、口令安全

Hash算法安全性(MD5/SHA1/SHA256)

加盐技术原理

彩虹表

三、明文嗅探

加密协议(SSL/TLS)

非加密协议

TLS握手过程

四、恶意代码

恶意代码分类与命名方法

病毒、木马、蠕虫、勒索软件

各类恶意代码的工作原理、特点、区别

典型恶意代码:熊猫烧香、WannaCry等

Tip 1、熟悉常见的协议原理

1)TCP

首先要说的是TCP是面向连接的、可靠的、基于字节流的传输层协议。

主要包括以下机制:

1.超时重传机制

 主机A发送数据给B之后,可能因为网络拥堵等原因,数据无法到达主机B;如果主机A在一个特定时间间隔内没有收到B发来的确认应答,就会进行重发;

2.确认应答机制

发送方发送数据,如果收到了接收方的应答(确认),就代表了接收方收到了数据;如果超过一定时间没有收到接收方的应答(确认),可以推测接收方未能收到数据。

3.连接管理机制

在正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接。

TCP的主动连接方一般为客户端

TCP的被动连接方一般为服务器

来看一看客户端和服务器在三次握手中的状态变化

客户端:

CLOSED -> SYN_SENT : 客户端调用connect,发送同步报文段;
SYN_SENT -> ESTABLISHED : connect调用成功,则进入ESTABLISHED状态,开始读写数
据;

服务器:

CLOSED -> LISTEN: 服务器端调用listen后进入LISTEN状态,等待客户端连接;
LISTEN -> SYN_RCVD: 一旦监听到连接请求(同步报文段),就将该连接放入内核等待队列
中,并向客户端发送SYN确认报文。
SYN_RCVD -> ESTABLISHED: 服务端一旦收到客户端的确认报文,就进入ESTABLISHED状
态,可以进行读写数据了。
 

为什么连接阶段时三次握手,断开连接是四次挥手? 
        当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可能未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。所以断开连接是四次挥手
 

 服务器上面出现大量的CLOSE_WAIT状态的TCP连接,请问这种现象是否合理?
        无法确定是否合理;如果我们的程序设计时,会出现比较长时间的单方面关闭的情况时,会出现大量CLOSE_WAIT是合理的现象,但如果我们没有这种设计,则不合理,可能出现的原因是忘记调用socket.close()方法。
 

2)UDP

首先udp协议是非连接的,发送数据就是把简单的数据包封装一下,然后从网卡发出去就可以了,数据包之间并没有状态上的联系,正因为udp这种简单的处理方式,导致他的性能损耗非常少,对于cpu,内存资源的占用也远小于tcp,但是对于网络传输过程中产生的丢包,udp并不能保证,所以udp在传输稳定性上要弱于tcp。

3)ICMP

1、ICMP协议是TCP/IP协议栈中的网络层的一个协议,ICMP是(Internet Control Message Protocol) Internet控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

2、 ICMP报文是在IP数据报内部被传输的, 它封装在IP数据报内。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。

3、使用ICMP协议排除网络故障

1、如果计算机发送一个ICMP请求数据包在一段时间内没有得到ICMP响应数据包或针对该ICMP请求数据包的差错报告数据包,就会显示请求超时。

2、使用ping命令断定那一段链路出现故障步骤:

     ①ping命令加上参数-i可以指定数据包的TTL,从而就能知道途径的第一个路由器、第二个路由器等路由器的IP地址。

     ②使用ping命令加上参数-t依次ping各个链路中的IP地址来确定出现问题的链路。
 

4)DNS

1、DNS协议就是用来将域名解析到IP地址的一种协议,当然,也可以将IP地址转换为域名的一种协议。

DNS协议基于UDP和TCP协议的,端口号53,用户到服务器采用UDP,DNS服务器通信采用TCP。

2、像Linux目录结构一样,现代因特网采用层次树状结构的命名方法,任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,该名字称为域名。

5)HTTP

HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

以下是 HTTP 请求/响应的步骤:

http协议是基于TCP/IP协议之上的应用层协议。

  1. 客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com。

  2. 发送HTTP请求
    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

  3. 服务器接受请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。

  4. 释放连接TCP连接
    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

  5. 客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

  6. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
  7. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
  8. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
  9. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
  10. 释放 TCP连接;
  11. 浏览器将该 html 文本并显示内容;

 6)TLS这协议考了就g,实在懒得看了

Tip2、常见网络攻击

一、网络扫描

1)TCP SYN 扫描

TCP SYN扫描又称“半开扫描”。回顾TCP连接的三次握手,申请方首先发送的是一个SYN数据包,服务方在接到这个SYN数据包后,如果该端口处于侦听状态,则会回复一个SYN|ACK的数据包;如果该端口没有处于侦听状态,则会回复一个RST的数据包。而此时如果对方处于侦听状态,申请方还需要再向对方回复一个ACK数据包以示建立连接。此时对方就认为连接建立,并记入日志。

无论服务方回复SYN|ACK的数据包,还是回复RST的数据包,申请方其实已经能够判断对方端口是否为“开”的状态。之后的ACK数据包发送则被对方监视,如果此时不发送ACK数据包,而是发一个RST数据包,则不仅关闭了这个未完成的连接过程,并且也会因为连接未建立而不会被对方记录。这种扫描方式因为使用了SYN标志位,所以被称为TCP SYN扫描。这种扫描技术的优点在于一般不会在目标计算机上留下记录,有时即使在用netstat命令也显示不出来;但这种方法的一个缺点是必须要有管理员权限才能建立自己的SYN数据包。
 

2)HTTP慢速攻击 原文链接:https://blog.csdn.net/zhangzhen02/article/details/120782292

HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求,就会导致占用一个HTTP连接会话。如果发送大量慢速的HTTP包就会导致拒绝服务攻击DoS。

Slow headers(也称slowloris):Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,Web服务器再没接收到2个连续的\r\n时,会认为客户端没有发送完头部,而持续的等等客户端发送数据,消耗服务器的连接和内存资源。

Slow body(也称Slow HTTP POST):攻击者发送一个HTTP POST请求,该请求的Content-Length头部值很大,使得Web服务器或代理认为客户端要发送很大的数据。服务器会保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器的连接和内存资源。

Slow read(也称Slow Read attack):客户端与服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取Response,比如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。

二、口令安全

1)加盐技术原理

1、什么是盐?

密码学中是指通过在密码任意固定位置插入特定字符串,让散列后的结果和使用原始密码的散列结果不相符,这样一个过程我们称之为“加盐”。
盐值 是一组随机的字符串,系统随机生成;Salt可以插在最前面、最后面,也可以插在中间,可分开插入也可倒序。

加盐加密 是一种对系统登录口令加密的方式,它的实现方式是将每一个口令同一个叫做"盐"salt的n位随机数相关联。 只要口令改变,随机位数就改变。随机数以未加密方式存于口令文件中,每个人可读;不再只是保存加密过的文件,而是先将口令和随机数连接起来一同加密,加密后结果存于口令文件中。

  简单来说:由原来的H(p)变成了H(p+salt),相当于哈希函数H发生了变化,每次哈希计算使用的salt是随机的

        H如果发生了改变,则已有的彩虹表数据就完全无法使用,必须针对特定的H重新生成,这样就提高了破解的难度。

三、明文嗅探

1)加密协议SSL/TLS  原文链接:https://blog.csdn.net/m0_61462682/article/details/124296429

1.SSL协议

SSL协议属于加密协议,现在多数网站是以https开头的,此类网站已部署了SSL证书,可以实现数据加密传输和服务器身份验证功能。

SSL协议位于TCP/IP协议与各种应用层协议之间,旨在为数据通讯提供安全支持。SSL协议可分为两层。

SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务主要有:
1、认证用户和服务器,确保数据发送到正确的客户机和服务器;
2、加密数据以防止数据中途被窃取;
3、维护数据的完整性,确保数据在传输过程中不被改变。

SSL证书直接在传输控制协议(TCP)基础上高效运行,像安全毯一样发挥着重要防护作用。它允许更高协议层保持不变,同时确保连接安全。所以在SSL层之下,其他协议层能够正常工作。
 

2.TLS协议

TLS(Transport Layer Security)即安全传输层协议,在两个通信应用程序之间提供保密性和数据完整性。最典型的应用就是HTTPS。HTTPS,即HTTP over TLS,就是安全的HTTP,运行在HTTP层之下,TCP层之上,为HTTP层提供数据加解密服务。也可用于email,即时通信等。
 

以下部分来自:https://blog.csdn.net/qq_41033254/article/details/127276231

 TLS协议采用主从式架构模型,用于在两个应用程序间透过网络创建起安全的连接,防止在交换数据时受到窃听及篡改。
       TLS协议的优势是与高层的应用层协议(如HTTP、FTP、Telnet等)无耦合。应用层协议能透明地运行在TLS协议之上,由TLS协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过TLS协议时都会被加密,从而保证通信的私密性。
       TLS协议是可选的,必须配置客户端和服务器才能使用。主要有两种方式实现这一目标:一个是使用统一的TLS协议通信端口(例如:用于HTTPS的端口443);另一个是客户端请求服务器连接到TLS时使用特定的协议机制(例如:邮件、新闻协议和STARTTLS)。一旦客户端和服务器都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据。通过握手,客户端和服务器协商各种参数用于创建安全连接:

当客户端连接到支持TLS协议的服务器要求创建安全连接并列出了受支持的密码组合(加密密码算法和散列算法),握手开始;
服务器从该列表中决定加密算法和散列算法,并通知客户端;
服务器发回其数字证书,此证书通常包含服务器的名称、受信任的证书颁发机构(CA)和服务器的公钥;
客户端验证其收到的服务器证书的有效性;
为了生成会话密钥用于安全连接,客户端使用服务器的公钥加密随机生成的密钥,并将其发送到服务器,只有服务器才能使用自己的私钥解密;
利用随机数,双方生成用于加密和解密的对称密钥。这就是TLS协议的握手,握手完毕后的连接是安全的,直到连接(被)关闭。如果上述任何一个步骤失败,TLS握手过程就会失败,并且断开所有的连接。
tls报文交互

四、 恶意代码

1.恶意代码分类与命名方法

病毒、木马、蠕虫、勒索软件

各类恶意代码的工作原理、特点、区别

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值