文章目录:
一:网络安全法规
二:计算机网络
1.计算机网络的组成
计算机网络:由通信子网承载的、传输和共享 资源子网的各类信息的系统 通信子网:负责数据的无差错和有序传递,其处理功能包括差错控制、流量控制、路由选择、网络互连等 资源子网:是计算机通信的本地系统环境(包括主机、终端和应用程序等) 资源子网的主要功能是用户资源配置、数据的处理和管理、软件和硬件共享以及负载均衡等
2.网络分层模型(OSI七层 TCP/IP四层)
3.通信协议
IP协议
IP协议(Internet Protocol):又称之为网际协议,是互联网中最基础的网络协议之一 它处于IP层工作,是整个TCP/IP协议栈的核心协议之一,上层协议都要依赖IP协议提供的服务 主要特点 无连接性: IP协议在传输数据时,不需要在发送方与接收方之间建立一个持久的连接 每个数据包都是独立的,它们可以按照任意顺序发送,并可以选择不同的路径进行传输 不可靠性: IP协议不保证数据包的可靠传输。当数据包在传输过程中丢失、损坏或重复时,IP协议没有机制来修复或重新传输这些数据包 这种设计可以提高网络的灵活性和效率,但也可能导致数据丢失 分组交换: IP协议使用分组交换的方式传输数据 数据被分成较小的数据包(也称为数据报),每个数据包都带有源地址和目标地址 这样,数据包可以通过不同的路径进行传输,从而提高网络的可靠性和可扩展性 网络独立性: IP协议可以在不同类型的网络上运行,包括以太网、无线网络等 这使得IP协议能够跨越不同的网络进行通信,使得不同类型的设备可以互相通信 简单性: IP协议被设计为简单的协议,其功能有限,只提供了数据包的路由功能,不提供数据的校验、确认等功能 这种设计旨在提高协议的可扩展性和性能 封装性: IP协议使用分层的封装方式来传输数据 它将应用层的数据进行封装,然后添加IP头部信息,形成一个IP数据包。这个IP数据包再被封装到数据链路层的帧中进行传输 弹性和可扩展性: IP协议是一种弹性和可扩展的协议。它没有严格的限制和规则,可以适应不同的网络环境和需求 同时,IP协议的设计也允许添加新的功能和特性,以满足新的需求 主要功能 数据包传输: IP协议负责将数据分组从源主机传输到目标主机 每个数据包都包含源地址和目标地址,路由器会根据这些地址将数据包转发到下一个网络节点,直到最终到达目的地 路由选择:IP协议根据路由表选择最佳的路径将数据包传输到目的地。这有助于减少数据传输的延迟和提高网络的效率 分片与重组: IP协议可以将大的数据包进行分片,以适应不同网络的最大传输单元(MTU)限制 在接收端,这些分片的数据包会被重新组合成原始的IP数据包 分配IP地址:IP协议为每个连接到互联网上的设备分配一个唯一的IP地址,用于标识设备的位置和进行网络通信
UDP协议/TCP协议
TCP协议
TCP(Transmission Control Protocol,传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,由RFC793定义 定义与特点 TCP是一种面向连接的、可靠的、基于字节流的传输层协议 它通过序列号、确认机制、重传机制等确保数据的准确无误到达,并提供流量控制和拥塞控制机制以避免网络拥塞和数据丢失 TCP的头部开销较大(通常至少20字节),因为包含了更多的控制信息,但这也保证了数据传输的可靠性和有序性 应用场景 文件传输:如FTP(文件传输协议)等,TCP的可靠性和有序性确保了文件在传输过程中不会丢失和损坏,并按正确的顺序接收 网页浏览:HTTP(超文本传输协议)基于TCP协议,TCP可靠地传输网页内容,确保网页的准确显示 电子邮件传输:SMTP(简单邮件传输协议)等电子邮件协议也使用TCP协议,以保证电子邮件的传输不会出现丢失或乱序的情况 远程登录:如SSH(安全外壳协议)等远程登录工具,TCP提供了稳定的连接,适合远程登录操作 数据库管理系统:TCP确保了数据库的一致性和完整性,防止数据丢失和损坏
三次握手(Three-Way Handshake):是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立 第一次握手 客户端将标志位 SYN 置为1,随机产生一个值 seq=s ,并将该数据包发送给服务端 客户端进入 SYN_SENT 状态,等待服务端确认 第二次握手 服务端收到数据包后由标志位 SYN=1 知道客户端请求建立连接,服务端将标志位 SYN 和 ACK 都置为1,ack=s+1,随机产生一个值 seq=k ,并将该数据包发送给客户端以确认连接请求 服务端进入 SYN_RCVD 状态。 第三次握手 客户端收到确认后,检查ack值是否为s+1,ACK标志位是否为1,如果正确则将标志位 ACK 置为1,ack=k+1,并将该数据包发送给服务端 服务端检查ack值是否为k+1,ACK标志位是否为1,如果正确则连接建立成功 客户端和服务端进入 ESTABLISHED 状态,完成三次握手 四次挥手(Four-Way Wavehand):指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开 第一次挥手 客户端发送一个 FIN ,用来关闭客户端到服务端的数据传送 客户端进入 FIN_WAIT_1 状态 第二次挥手 服务端收到 FIN 后,发送一个 ACK 给客户端,确认序号为收到序号+1 服务端进入 CLOSE_WAIT 状态 第三次挥手 服务端发送一个 FIN ,用来关闭服务端到客户端的数据传送 服务端进入 LAST_ACK 状态。 第四次挥手 客户端收到 FIN 后,客户端进入 TIME_WAIT 状态,接着发送一个 ACK 给服务端,确认序号为收到序号+1 服务端进入 CLOSED 状态,完成四次挥手
UDP协议
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的、基于数据报的传输层协议 它在IP(Internet Protocol,互联网协议)的基础上提供了一种简单的报文传输服务 UDP与TCP不同:它不提供复杂的错误检测、数据重传或流量控制等机制 因此其传输效率较高,但数据的安全性、完整性和顺序性得不到保证 UDP的特点 无连接:UDP在发送数据之前不需要建立连接,接收方也不需要确认 发送方只管发送数据,不关注对方是否收到,因此UDP被称为“无连接”的协议 不可靠传输:UDP不提供数据报的分片、重组以及确认机制,也不提供数据报的排序和流量控制 因此不能保证数据包的到达顺序、完整性和正确性。如果数据包在传输过程中丢失或损坏,UDP协议本身不提供重传机制 资源消耗少:由于UDP的头部开销小(只有8字节),且无需建立和维持连接,因此UDP协议在资源消耗上远低于TCP 这使得UDP在需要高传输效率和低延迟的应用场景中非常有用,如实时视频传输、实时游戏、DNS(域名系统)查询等 支持一对一、一对多、多对一和多对多的通信:UDP支持广播和组播,这意味着它可以同时向多个接收方发送数据 UDP的应用场景 实时应用:如视频直播、音频流、实时游戏等,这些应用对实时性要求高,可以容忍一定程度的数据丢失和乱序 DNS服务:DNS使用UDP协议来查询域名和IP地址之间的映射关系,因为DNS查询通常较短且不需要复杂的连接管理 多播和广播应用:UDP支持多播和广播,使得数据可以一次性发送给多个接收者,适用于需要同时向多个用户发送信息的场景
区别
1.连接性 UDP:是一种无连接的协议。在传输数据之前,UDP不需要建立连接,发送方可以直接向接收方发送数据,接收方也不需要确认 这种无连接特性使得UDP在数据传输时具有较低的延迟和较高的效率 TCP:是一种面向连接的协议。在传输数据之前,TCP要求发送方和接收方先建立连接,即进行三次握手过程,以确保双方都已准备好接收和发送数据 数据传输结束后,还需要进行四次挥手来断开连接 2. 可靠性 UDP:不保证数据的可靠交付。在传输过程中,如果数据包丢失或损坏,UDP不会进行重传,而是直接使接收方收到的数据不完整 此外,UDP也不保证数据的顺序性,接收方收到的数据顺序可能与发送方发送的顺序不同 TCP:提供可靠的数据传输。TCP通过序列号、确认应答和重传机制来确保数据的完整性和顺序性 如果数据包在传输过程中丢失或损坏,TCP会负责重新发送,直到接收方确认收到正确的数据为止 3. 速度和效率 UDP:由于不需要建立连接和进行复杂的确认机制,UDP在数据传输速度方面通常比TCP更快 特别是在网络状况较好、丢包率较低的情况下,UDP的高效率尤为明显 TCP:由于需要建立连接、进行确认和重传等操作,TCP在数据传输速度上相对较慢 特别是当网络拥堵时,TCP的拥塞控制机制会进一步降低发送速率,以避免网络拥塞 4. 数据报大小 UDP:允许发送方一次性将多个数据包打包成一个较大的数据报进行传输 UDP数据报的最大长度取决于网络MTU(最大传输单元)的大小以及IP层和网络层的开销 TCP:将数据划分为较小的数据包进行传输,并根据网络状况进行调整 TCP没有固定的数据报大小限制,但会尽量避免发送过大的数据包以减少网络拥塞的风险 5. 适用场景 UDP:适用于对实时性要求高、对数据丢失不太敏感的应用场景,如在线直播、视频会议、在线游戏等 这些应用通常要求低延迟和高效率,但可以接受一定程度的数据丢失和乱序 TCP:适用于对数据可靠性要求较高的应用场景,如文件传输、电子邮件、网页浏览等 这些应用要求数据准确无误地到达接收方,并按照正确的顺序进行重组和处理
HTTP协议/HTTPS协议
HTTP协议
HTTP协议是什么? HTTP协议是超文本传输协议的缩写,英文是Hyper Text Transfer Protocol 它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 HTPP有多个版本,目前广泛使用的是HTTP/1.1版本 HTTP原理 HTTP是一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML文件、图片文件, 查询结果等 HTTP协议一般用于B/S架构,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求 HTTP特点 http协议支持客户端/服务端模式,也是一种请求/响应模式的协议 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接, 但是却不利于客户端与服务器保持会话连接,为了弥补这种不足, 产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传 URI和URL的区别 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接 URI:Uniform Resource Identifier 统一资源标识符 URL:Uniform Resource Location 统一资源定位符 URI 是用来标示 一个具体的资源的,我们可以通过 URI 知道一个资源是什么 URL 则是用来定位具体的资源的,标示了一个具体的资源位置。互联网上的每个文件都有一个唯一的URL HTTP报文组成 a. 请求行:包括请求方法、URL、协议/版本 b. 请求头(Request Header) c. 请求正文 响应报文构成 状态行 响应头 响应正文 常见请求方法 GET:请求指定的页面信息,并返回实体主体 POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中 POST请求可能会导致新的资源的建立和/或已有资源的修改 HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 PUT:从客户端向服务器传送的数据取代指定的文档的内容 DELETE:请求服务器删除指定的页面 post和get的区别 get多用来查询,请求参数放在url中,不会对服务器上的内容产生作用 post用来提交,包含请求头请求行,如把账号密码放入body中 GET是直接添加到URL后面的,直接就可以在URL中看到内容 POST是放在报文内部的,用户无法直接看到 GET提交的数据长度是有限制的,因为URL长度有限制,具体的长度限制视浏览器而定 POST没有 响应状态码 访问一个网页时,浏览器会向web服务器发出请求 此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求 状态码分类: 1XX - 信息型,服务器收到请求,需要请求者继续操作 2XX - 成功型,请求成功收到,理解并处理 3XX - 重定向,需要进一步的操作以完成请求 4XX - 客户端错误,请求包含语法错误或无法完成请求 5XX - 服务器错误,服务器在处理请求的过程中发生了错误 常见状态码 200 OK - 客户端请求成功 301 - 资源(网页等)被永久转移到其它URL 302 - 临时跳转 400 Bad Request - 客户端请求有语法错误,不能被服务器所理解 401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 404 - 请求资源不存在,可能是输入了错误的URL 500 - 服务器内部发生了不可预期的错误 503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 一般http中存在如下问题 请求信息明文传输,容易被窃听截取 数据的完整性未校验,容易被篡改 没有验证对方身份,存在冒充危险 http通信过程:建立连接—>发送请求数据包—>返回响应数据包——>关闭连接 1.浏览器建立与web服务器之间的连接 2.浏览器将请求数据打包(生成请求数据包)并发送到web服务器 3.web服务器将处理结果打包(生成响应数据包)并发送给浏览器 4.web服务器关闭连接
HTTPS协议
为什么要用https 实际使用中,绝大说的网站现在都采用的是https协议,这也是未来互联网发展的趋势 因为:HTTP协议不适合传输一些敏感信 可以看到访问的账号密码都是明文传输,这样客户端发出的请求很容易被不法分子截取利用 各种账号、密码等信息,使用http协议传输隐私信息非常不安全 什么是HTTPS? 为了解决上述HTTP存在的问题,就用到了HTTPS HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):一般理解为HTTP+SSL/TLS 通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密 那么SSL又是什么? SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持 TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发 1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本 SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到 TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2 SSL发展史(互联网加密通信) 1994年NetSpace公司设计SSL协议(Secure Sockets Layout)1.0版本,但未发布 1995年NetSpace发布SSL/2.0版本,很快发现有严重漏洞 1996年发布SSL/3.0版本,得到大规模应用 1999年,发布了SSL升级版TLS/1.0版本,目前应用最广泛的版本 2006年和2008年,发布了TLS/1.1版本和TLS/1.2版本 HTTPS的缺点 HTTPS协议多次握手,导致页面的加载时间延长近50% HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗 申请SSL证书需要钱,功能越强大的证书费用越高 SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大 浏览器在使用HTTPS传输数据的流程是什么? 1.首先客户端通过URL访问服务器建立SSL连接 2.服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端 3.客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级 4.客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站 4.服务器利用自己的私钥解密出会话密钥 5.服务器利用会话密钥加密与客户端之间的通信
区别
● HTTPS是HTTP协议的安全版本 HTTP协议的数据传输是明文的,是不安全的 HTTPS使用了SSL/TLS协议进行了加密处理 ● http和https使用连接方式不同,默认端口也不一样,http是80,https是443 ● 通信过程不同 ----------------------------------------------------------------------------------------- request request 请求数据包 浏览器————————>代理服务器proxy————————> 服务器web server <———————— <———————— response response 相应数据包 代理的出现在接受数据包和发送数据包的时候提供了修改数据包的机会 通信过程 1.浏览器建立与web服务器之间的连接 2.浏览器将请求数据打包(生成请求数据包)并发送到web服务器 3.web服务器将处理结果打包(生成响应数据包)并发送给浏览器 4.web服务器关闭连接 总结:建立连接——>发送请求数据包——>返回响应数据包——>关闭连接 数据格式:请求数据包包含什么 1.请求行:请求类型/请求资源路径、协议的版本和类型 2.请求头:一些键值对,一般由w3c定义,浏览器与web服务器之间都可以发送,表示特定的某种含义 3.空行:请求头与请求体之间用一个空行隔开 4.请求体:要发送的数据(一般post方式会使用);例:userName=123&password=123&returnUrl=/
DHCP协议
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):是一种用于自动分配IP地址和其他相关配置信息的网络协议 它主要工作在OSI模型的应用层,通过UDP协议进行通信,常用的端口号分别为67(DHCP服务器)和68(DHCP客户端) 它简化了网络配置过程,提高了网络配置的效率和准确性 一、DHCP协议的定义与作用 DHCP协议的前身是BOOTP(Bootstrap Protocol)协议 它主要用于局域网环境中,能够自动地将IP地址和其他网络配置参数分配给网络中的计算机和其他设备 这大大简化了网络管理工作,减少了手动配置IP地址的繁琐和错误,提高了网络配置的效率和准确性 二、DHCP协议的工作原理 DHCP发现阶段:当一个设备(如计算机)连接到网络时,它会通过广播发送一个DHCP DISCOVER消息,以寻找可用的DHCP服务器 这个消息中包含设备的MAC地址和一些其他信息,用于帮助DHCP服务器识别设备 DHCP提供阶段:当DHCP服务器接收到DHCP DISCOVER消息后,它会从自己的地址池中查找一个可用的IP地址,并广播发送一个DHCP OFFER消息给设备 这个消息中包含了IP地址、子网掩码、默认网关、DNS服务器等配置信息 DHCP请求阶段:设备在收到多个DHCP OFFER消息后(尽管实际上通常只会收到一个),会选择其中一个DHCP服务器,并向该服务器发送一个DHCP REQUEST消息,请求分配IP地址和其他配置信息 这个消息中包含了设备选择的DHCP服务器的IP地址和请求的配置信息 DHCP确认阶段:DHCP服务器在收到DHCP REQUEST消息后,会确认分配给设备的IP地址和其他配置信息,并向设备发送一个DHCP ACK消息作为响应 这个消息中包含了最终确定的配置信息,告诉设备可以使用这些配置信息来配置自己的网络设置 三、DHCP协议的优点与缺点 优点: 提供了安全、可靠且简单的TCP/IP网络配置,确保不会发生地址冲突,并通过地址分配集中管理预留的IP地址 大大减少了在管理上所耗费的时间 提供了计算机IP地址的动态配置,系统管理员可以通过限定租用时间来控制IP地址的分配 缺点: 在分布式网络中,DHCP服务器无法交换及共享地址和其他数据,网络管理员需要手工分配IP地址并确保不同服务器中的IP地址不重复 DHCP不能与传统的域名服务器(DNS)共享地址,网络管理员必须定期地手工更新DNS 如果DHCP服务器出现故障,依赖于该服务器的其他设备将可能无法获取IP地址,导致无法连接到网络 四、DHCP协议的应用场景 DHCP协议广泛应用于各种网络环境中,包括大型企业网络、中小企业网络、家庭网络等 在大型网络中,DHCP服务器能够同时为大量的设备分配IP地址和其他配置信息,极大地简化了网络管理工作 在小型网络和家庭网络中,DHCP协议也同样适用,能够自动地为连接的设备分配网络配置信息,提高用户体验
VPN协议
VPN(Virtual Private Network,虚拟私人网络)协议:是一种用于在公共网络上建立安全连接的网络协议 通过VPN协议,用户可以在不同的网络中安全地传输数据,保护隐私和数据安全 一、VPN协议的主要功能 数据加密:VPN协议使用加密技术对传输的数据进行加密,确保数据在公共网络上传输时的机密性和完整性 隐私保护:VPN协议可以隐藏用户的真实IP地址,防止被追踪和监视,保护用户的隐私信息 远程访问:VPN协议允许远程用户通过公共网络安全地访问企业内部网络或其他网络资源 跨网络连接:VPN协议可以在不同的网络之间建立连接,实现跨地域的数据传输和资源共享 二、常见的VPN协议类型 OpenVPN 特点:OpenVPN是一种极为可靠和安全的VPN协议,提供高达256位的AES加密,是军用级别的加密标准 由于它是开源的,因此经常得到更新和改进,能够防止DNS泄露和通过公共WiFi进行的攻击 优势:高度安全、开源、高度可定制性、易于使用、跨平台 PPTP(Point-to-Point Tunneling Protocol,点对点隧道协议) 特点:PPTP是一种较早的VPN协议,速度非常快且易于设置,但安全性较低,易受到攻击 优势:快速、简单、兼容性强 劣势:安全性低 L2TP/IPsec 特点:L2TP/IPsec是一个包含两种协议的VPN协议,其中L2TP用于创建隧道,IPsec用于加密 这种协议的安全性很高,但速度可能会有所降低 优势:增强的安全性、适用于多种设备、可穿越NAT设备 SSL VPN(安全套接字层VPN) 特点:SSL VPN利用安全套接字层协议(SSL)来构建虚拟私有网络,不需要安装专门的客户端软件,用户只需通过网页浏览器访问即可 优势:无需客户端、适用于危险网络环境、选择性访问、编码安全 SSTP(Secure Socket Tunneling Protocol,安全隧道协议) 特点:SSTP由微软开发,使用SSL/TLS加密技术,能够轻松通过大多数防火墙的封锁 优势:高级加密、防火墙友好、在Windows平台上具有极佳的原生支持 三、VPN协议的工作原理 建立连接:用户通过VPN客户端连接到VPN服务器。 身份验证:服务器对用户的身份进行验证,确保只有授权用户才能访问网络资源。 安全通道建立:一旦身份验证成功,客户端和服务器之间将建立一个安全的通道,使用加密算法对传输的数据进行加密和解密 数据传输:用户通过安全通道安全地传输数据,数据在公共网络中传输时受到保护 断开连接:当用户不再需要VPN连接时,可以断开连接,之前建立的安全通道将被关闭 四、VPN协议的应用场景 远程办公:VPN协议可以让远程员工安全地连接到公司内部网络,实现远程办公 跨地域访问:VPN协议可以帮助用户访问其他地理位置的网络资源,如访问国外的网站或连接到分支机构的网络 保护公共Wi-Fi中的数据安全:在使用公共Wi-Fi时,VPN协议可以加密用户的数据传输,防止被他人窃取 绕过地理限制:通过连接到其他国家或地区的VPN服务器,用户可以绕过地理限制,访问受限制的内容
4. 基础名词概念
域名
什么是域名? 互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置) 网域名称系统(Domain Name System)有时也简称为域名(DNS) 是互联网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库 能够使人更方便地访问互联网,而不用去记住能够被机器直接读取的 IP 地址数据串 域名在哪里注册? 1.Godaddy 2.Gandi 3.Hover 4.Namesilo 5.Namecheap 6.万网 什么是二级域名多级域名? 1.顶级域名:又叫一级域名,一串字符串中间一个点隔开,例如baidu.com 顶级域名是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中 2.二级域名:实际上就是一个一级域名以下的主机名,一串字符串中间两个“.”隔开 例如www.baidu.com。二级域名就是最靠近顶级域名左侧的字段 3.三级域名:二级域名的子域名,特征是包含三个“.”,例如___.___.baidu.com... 域名发现对于安全测试意义? 进行渗透测试时,其主域名找不到漏洞时,就可以尝试去测试收集到的子域名 有可能测试子域名网站时会有意向不到的效果,然后可以由此横向到主网站
DNS
什么是DNS? 域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统 就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时 必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(IPv4,IPv6的地址) 记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系 本地Hosts与DNS的关系? Hosts文件主要作用是定义IP地址和主机名的映射关系,是一个映射IP地址和主机名的规定 Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库” 当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址 一旦找到,系统会立即打开对应网页 如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析 浏览器访问网站,要首先通过DNS服务器把要访问的网站域名解析成一个唯一的IP地址,之后,浏览器才能对此网站进行定位并且访问其数据 如何查看本地Hosts文件 1. Win + R:打开运行输入drivers 2. 输入:c:\windows\system32\drivers\etc 3. 选择使用记事本或者Notepad、VsCode 等编程软件打开 CDN是什么?与DNS的关系? CDN的全称是Content DeliveryNetwork,即内容分发网络 CDN的基本思路:是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定 通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络, CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上, 单纯只使用DNS解析,直接PING就会显示出自己的真实IP, 如果又使用CDN,PING出来的IP就不是用户的真实IP而是CDN服务器的IP节点。需要绕过CDN后去找真实IP地址 使用CDN的目的:是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度 常见的DNs安全攻击有哪些? DDOS DDoS攻击也叫做分布式拒绝服务攻击,可以使很多的计算机在同一时间遭受到攻击,使攻击的目标无法正常使用 攻击者可以伪造自己的DNS服务器地址,同时发送大量请求给其他服务器 其他服务器的回复会被发送到被伪造服务器的真实地址,造成该服务器无法处理请求而崩溃 攻击者同样可以通过利用DNS协议中存在的漏洞,恶意创造一个载荷过大的请求,造成目标DNS服务器崩溃 DNS缓存中毒 DNS缓存中毒攻击者给DNS服务器注入非法网络域名地址,如果服务器接受这个非法地址,那说明其缓存就被攻击了,而且以后响应的域名请求将会受黑客所控 当这些非法地址进入服务器缓存,用户的浏览器或者邮件服务器就会自动跳转到DNS指定的地址 这种攻击往往被归类为域欺骗攻击(pharming attack),由此它会导致出现很多严重问题 首先,用户往往会以为登陆的是自己熟悉的网站,而它们却并不是。与钓鱼攻击采用非法URL不同的是,这种攻击使用的是合法的URL地址 域名劫持(DNS重定向) 域名劫持是通过攻击域名解析服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的地址从而实现用户无法访问目标网站的目的 域名劫持一方面可能影响用户的上网体验,用户被引到假冒的网站进而无法正常浏览网页,而用户量较大的网站域名被劫持后恶劣影响会不断扩大 另一方面用户可能被诱骗到冒牌网站进行登录等操作导致泄露隐私数据 DNS查询嗅探 攻击者主要利用对DNS的配置信息获取网络环境的信息,为之后的攻击做好的准备 针对这些情况,我们需要对DNS服务器需要采取特别的安全保护措施,在防火墙网络中,分开设置内部DNS服务器和外部DNS服务器 连接外部服务的外部DNS服务器上不留有对外禁止访问的内部网络系统的服务器,做到内外网络服务器分割 ARP欺骗 ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞 攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击 ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP病毒, 则感染该ARP病毒的系统将会试图通过”ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障 ARP欺骗通常是在用户局网中,造成用户访问域名的错误指向 如果IDC机房也被ARP病毒入侵后,则也可能出现攻击者采用ARP包压制正常主机、或者压制DNS服务器,以使访问导向错误指向的情况 本机劫持 本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常
脚本语言
常见脚本语言有哪些? 一种介于HTML 和诸如 JAVA、Visual Basic、C++ 等编程语言之间的一种特殊的语言 尽管它更接近后者,但它却不具有编程语言复杂、严谨的语法和规则 常见的脚本语言有:Python、JavaScript、Asp (逐渐淘汰,基本都是小站点在使用)、Aspx、Php (目前比较流行)、javaweb、 pl、cgi等 不同脚本类型与安全漏洞的关系? 不同的脚本语言的编写规则不一样,程序产生的漏洞自然也不一样(代码审计) php易产生注入、上传 java易产生反序列化、代码执行 漏洞挖掘代码审计与脚本类型的关系? 漏洞挖掘代码审计:要熟悉相关代码和相关逻辑机制
后门
什么是后门? 在信息安全领域,后门是指绕过安全控制而获取对程序或系统访问权的方法 后门的最主要目的就是方便以后再次秘密进入或者控制系统 有那些后门? 1.网页后门 此类后门程序一般都是服务器上正常的web服务来构造自己的连接方式,比如现在非常流行的ASP、cgi脚本后门等 2.线程插入后门 利用系统自身的某个服务或者线程,将后门程序插入到其中 具体原理《黑客防线》曾具体讲解过,感兴趣的朋友可以查阅。这也是现在最流行的一个后门技术 3.扩展后门 所谓的“扩展”,是指在功能上有大的提升,比普通的单一功能的后门有很强的使用性 这种后门本身就相当于一个小的安全工具包,能实现非常多的常见安全功能,适合新手使用 但是,功能越强,个人觉得反而脱郭后门“隐蔽”的初衷,具体看法就看各位使用都的喜好了 4.C/S后门(客户端服务器后门) 和传统的木马程序类似的控制方法,采用“客记端/服务端”的控制方式,通过某种特定的访问方式来启动后门进而控制服务器 后门在安全测试中的实际意义? 方便下次更方便的进来 获取到相关权限之后,后门相当于一个管道,便于操作 即使管理员通过改变所有密码之类的方法来提高安全性,仍然能再次侵入,使再次侵入被发现的可能性减至最低 大多数后门设法躲过日志,大多数情况下即使入侵者正在使用系统也无法显示他已在线 关于后门需要了解那些?(玩法,免杀) 玩法(创建后门之后我们可以怎么样操作?) 网站后门:便于控制网站 软件后门:用于控制 服务器后门:可以进行脱库、盗取信息 免杀技术全称为反杀毒技术Anti Anti-Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术 由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容 其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀 后门需要掌握的核心技能,防止杀毒软件检查到
Web
web的组成框架模型? 网站源码:分脚本类型、分应用框架 操作系统:Widows、Linux 中间件:apache、nginx、tomcat、iis 数据库:mysql、access、Oracle、mssql、postsql 架构漏洞安全测试的简要测试 通信层 主要测试通信协议的安全,系统开放的端口,其中操作系统提供网络层和数据链路层协议,存在问题的可能性较小 一般关注开源协议已存在漏洞即可,无需重点关注 应用层服务与协议一般由产品形态决定,产品中可以自定义配置相关协议与参数,需要重点关注与测试 应用层 应用层包含开发人员开发代码,为整个安全测试的核心模块 主要包括web安全测试,源码安全测试 其中web安全测试从web访问服务的维度,偏向黑盒,进行安全测试 源码安全测试从代码的维度,偏向白盒,进行安全测试 系统层:主要测试操作系统安全,数据库服务安全,web服务器安全,以及其他一些中间件的安全 管理层:主要包括产品资料的安全测试,安全策略制定,协调各个层面的安全测试以及安全风险的整体评估 为什么要从web界面为主 因为web使用方面广 从WEB方向先入手,一步一步的获取最高权限
URL编码
特殊字符 | 含义 | 十六进制值 |
+ | URL 中+号表示空格 | %2B |
空格 | URL中的空格可以用+号或者编码 | %20 |
’ | 单引号 | %27 |
/ | 分隔目录和子目录 | %2F |
\ | 斜杠 | %5C |
? | 分隔实际的 URL 和参数 | %3F |
% | 指定特殊字符 | %25 |
# | 表示书签 | %23 |
& | URL 中指定的参数间的分隔符 | %26 |
= | URL 中指定参数的值 | %3D |
三:信息收集
常见的搜集信息包括: IP地址 域名信息(邮箱、联系人、地址、电话) 技术使用(框架、服务器、数据库、编程语言) 在同一台服务器上的其他网站\旁站 DNS记录 文件、子域、目录
信息收集:是指利用计算机软件技术,针对定制的目标数据源 实时进行信息采集、抽取、挖掘、处理,从而为各种信息服务系统提供数据输入 并按业务所需,进行数据发布、分析的整个过程 信息收集的作用:如果你所掌握到的信息比别人多且更详细的时候那么你才能占据了先机, 这一条不仅仅用于商业、战争、渗透测试中也适用 信息收集的总结:收集到这些信息后就可以利用起来 比如:目标的真实IP地址,服务器的敏感目录,网站的搭建环境,网站使用的系统, 网站防火墙,常用端口信息,目录网站是用什么脚本写得等信息 这样我们就可以对这些信息进行时时漏洞扫描,漏洞发现等操作。然后进行漏洞利用,拿到服务器的权力
第一步:域名信息收集
1. whois查询
whois 是什么:whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议 用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)
2.备案信息查询
什么是备案:网站备案是根据国家法律法规规定,需要网站的所有者向国家有关部门申请的备案 这是国家信息产业部对网站的一种管理,为了防止在网上从事非法的网站经营活动的发生
查询的途径:ICP备案查询_备案号查询_网站备案查询 - 天眼查、ICP备案查询网 - 网站备案查询 - 工信部域名备案查询实时数据
第二步:敏感信息收集
(1)谷歌语法
site功能:搜索指定的域名网页内容,子网和网页相关的 site:网站 “你要的信息” site:zhihu.com“web安全” filetype功能:搜索指定的文件类型 filetype:pdf “你要的信息” filetype:ppt“你要的信息” site:zhihu.com filetype:pdf“你要的信息” ———在zhihu网站里搜索pdf inurl功能:搜索url网址存在特定关键字的网页,可以用来搜寻有注入点的网站 inurl:.php?id= ——搜索网址中有“php?id”的网页 inurl:view.php=? ——搜索网址中有“view.php=”的网页 inurl:.jsp?id= ——搜索网址中有“.jsp?id”的网页 inurl:.asp?id= ——搜索网址中有“asp?id”的网页 inurl:/admin/login.php ——搜索网址中有“/admin/login.php”的网页 inurl:login ——搜索网址中有“login”的网页 intitle功能:搜索标题存在特定关键字的网页 intitle:后台登录 ——搜索网址中是“后台登录”的网页 intitle:后台登录 filetype:php ——搜索网址中是“后台登录”的php网页 intitle:index of “keymord” ——搜索网址中关键字“keymord”的网页 intitle:index of “parent directory” ——搜索根目录 相关的索引目录信息 intitle:index of “password” ——搜索密码相关的索引目录信息 intitle:index of “login” ——搜索登录页面的信息 intitle:index of “admin” ——搜索后台登录页面信息 intext功能:搜索正文存在特定关键字的网页 intext:powered by Discuz ——搜索Discuz论坛相关的页面 intext:powered by wordpress ——搜索wordpress制作的博客网址 intext:powered by *cms ——搜索*CMS相关的页面 intext:powered by xxx inurl:login ——搜索此类网址的后台登录页面
(2)Burp查询服务器的某些信息.(服务器用什么搭建的)_server下面内容
(3)IP地址(ping 指令)(查看真实的IP地址)
cmd——>ping www.baidu.com
(4)网站指纹识别(查看CMS:如Discuz ! X3.3)
Web指纹定义:输入查询的网站/IP地址 Web指纹是一种对目标网站的识别技术 通过识别网站所使用的服务器、运行的脚本、安装的CMS等信息对目标进行精准的分类和定位 为什么要进行指纹识别:快速识别出网站的搭建环境,网站使用的系统,网站防火墙,和cms源码中使用的一些js库
查询的途径:WhatWeb - Next generation web scanner.、yunsee.cn-2.0、御剑web指纹识别系统
(5)网站容器( nmap扫描 )
扫描一般用的 (1)主机发现:nmap -sn 地址/24 (2)端口扫描:nmap -sS 地址 (3)系统扫描:nmap -o 地址 (4)版本扫描:nmap -sV 地址 (5)综合扫描:nmap -A 地址
(6)查看服务器有什么脚本类型(直接看网址后缀)
(7)数据库类型
常见搭配: ASP 和 ASPX 网站搭建:ACCESS、SQL Server (数据库) PHP 网站搭建:MySQL、PostgreSQL (数据库) JSP 网站搭建:Oracle、MySQL (数据库)
第三步:子域名信息收集
为什么要收集子域名?
1.子域名枚举可以发现更多评估范围相关的域名/子域名,以增加漏洞发现机率
2.探测到更多隐藏或遗忘的应用服务,这些应用往往可导致一些严重漏洞
(1)谷歌语法:Site:域名
(2)在线子域名爆破:在线子域名查询
(3)Loyer子域名挖掘
第四步:端口信息收集
为什么收集常用端口信息?
在渗透测试的过程中,对端口信息的收集是一个很重要的过程
通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务
就可以对症下药,便于我们渗透目标服务器
1.扫描端口工具
(1)Nmap扫描端口工具
端口扫描:nmap -sS 地址 默认扫描:nmap 地址 指定端口扫描:nmap –p 端口 地址 完整扫描到端口、服务及版本:nmap –v –sV 地址
(2)Masscan扫描端口工具
masscan IP地址 -p 端口(1-10000)
3)御剑高速TCP端口扫描工具
2.常见端口号对应服务
端口号 | 端口说明 | 攻击方向 |
---|---|---|
文件共享服务类 | ||
21/22/69 | Ftp/Tftp文件传输协议 | 允许匿名的上传、下载、爆破和嗅探 |
2049 | Nfs服务 | 配置不当 |
139 | Samba服务 | 爆破、未授权访问、远程代码执行 |
389 | Ldap目录访问协议 | 注入、允许匿名访问、弱口令 |
远程连接服务类 | ||
22 | SSH远程连接 | 爆破、SSH隧道及内网代理转发、文件传输 |
23 | Telnet远程连接 | 爆破、嗅探、弱口令 |
3389 | Rdp远程桌面连接 | Shift后门(需要Windows Server 2003一下系统)爆破 |
5900 | VNC | 弱口令爆破 |
5632 | PyAnywhere服务 | 抓密码、代码执行 |
Web应用服务类 | ||
80/443/8080 | 常见的Web服务端口 | Web攻击、爆破、对应服务器版本攻击 |
7001/7002 | WebLogic控制台 | Java反序列化、弱口令 |
8080/8089 | Jboss/Resin/Jetty/Jenkins | 反序列化、控制台弱口令 |
9090 | WebSphere控制台 | Java反序列化、弱口令 |
4848 | GlassFish控制台 | 弱口令 |
1352 | Lotus domino邮件服务 | 弱口令、信息泄漏、爆破 |
10000 | Webmin-Web控制面板 | 弱口令 |
数据库服务类 | ||
3306 | MySQL | 注入、提权、爆破 |
1433 | MSSQL数据库 | 注入、提权、SA弱口令、爆破 |
1521 | Oracle数据库 | TNS爆破、注入、反弹shell |
5432 | PostSQL数据库 | 注入、爆破、弱口令 |
27017/27018 | MongoDB | 爆破、未授权访问 |
6379 | Redis数据库 | 可尝试未授权访问、弱口令爆破 |
5000 | SysBase/DB2数据库 | 爆破、注入 |
邮件服务类 | ||
25 | SMTP邮件服务 | 邮件伪造 |
110 | POP3协议 | 爆破、嗅探 |
143 | IMAP协议 | 爆破 |
网络常见协议类 | ||
53 | DNS域名系统 | 允许区域传送、DNS劫持、缓存投毒、欺骗 |
67/68 | DHCP服务 | 劫持、欺骗 |
161 | SNMP协议 | 爆破、搜集目标内网信息 |
特殊服务类 | ||
2181 | ZooKeeper服务 | 未授权访问 |
8069 | Zabbix服务 | 远程执行、SQL注入 |
9200/9300 | Elasticsearch服务 | 未授权访问 |
11211 | Memcache服务 | 未授权访问 |
512/513/514 | Linux Rexec服务 | 爆破、Rlogin服务 |
873 | Rsync服务 | 匿名访问、文件上传 |
3690 | Svn服务 | Svn泄漏、未授权访问 |
50000 | SAP Management Console | 远程执行 |
第五步:真实IP地址查找
什么是CDN ?
CDN的全称Content Delivery Network,即内容分发网络
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问的网络中
在用户访问网站时,由距离最近的缓存服务器直接响应用户请求
(1)全球 Ping 检测
查询的途径:多个地点Ping服务器,网站测速 - 站长工具
(2)查询网查询
查询的途径:ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名
(3)web in Lookup 查询
查询的途径:ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名
(4)子域名IP
查询的途径:ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名
(5)查询网址
查询的途径:Securitytrails
(6)crt.sh组织主域名的子域名查询
第六步:敏感目录文件收集
为什么要收集敏感目录文件:在渗透测试中,最关键的一步就是探测web目录结构和隐藏的敏感文件
因为可以获取到网站的后台管理页面、文件上传页面、甚至可以扫出网站的源代码
(1)dirb 工具(比如:dirb http://192.168.1.102:801/)
(2)御剑敏感目录收集工具:输入地址/域名
(3)7KBwebpathBurute:输入地址
(4)也可以用更高级的工具:Awvs,Nessus,Burp爬虫等等
第七步:社会工程学
什么是社会工程学? 社会工程学(Social Engineering,又被翻译为:社交工程学)在上世纪60年代左右作为正式的学科出现 广义社会工程学的定义是:建立理论并通过利用自然的、社会的和制度上的途径来逐步地解决各种复杂的社会问题 经过多年的应用发展,社会工程学逐渐产生出了分支学科,如网络社会工程学 (1)QQ号:查询QQ号 看看朋友圈有没有开放(里面会有一些信息可以收集.) (2)微信号:转账–的时候会有一个真实姓名(朋友圈可能有信息可以收集.) (3)支付宝–转账–的时候会有一个真实姓名.(就可以收集真实姓名的一个字.) (4)电话:查询可以收集到这个电话是哪个地方的等等,操作都可以收集到信息的.(打电话)
四:加密编码算法
加密软件:超级加密解析转换工具、在线AES加密解密
#常见加密编码等算法解析 MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等 #常见加密形式算法解析 直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等 #常见解密方式(针对) 枚举,自定义逆向算法,可逆向 #了解常规加密算法的特性 长度位数,字符规律,代码分析,搜索获取等
url编码 (也称为百分号编码):是一种将文本转换为特定格式的过程,以便在互联网上传输和解析
base64编码:随着编码的文本增加而增加、由大小写和数字组成且字符结尾一般有两个等号
unescape编码:一般是%U+四个数字对应着两个字符、主要运用于网站web应用
五:软件使用
Burp软件下载使用
java环境