一、计算机网络
1、网络协议
我们用手机连接上网的时候,会用到许多网络协议。从手机连接 WiFi 开始,使用的是 802.11 (即 WLAN )协议,通过 WLAN 接入网络;手机自动获取网络配置,使用的是 DHCP 协议,获取配置后手 机才能正常通信。这时手机已经连入局域网,可以访问局域网内的设备和资源,但还不能使用互联网应 用,例如:微信、抖音等。想要访问互联网,还需要在手机的上联网络设备上实现相关协议,即在无线 路由器上配置 NAT、 PPPOE 等功能,再通过运营商提供的互联网线路把局域网接入到互联网中,手机 就可以上网玩微信、刷抖音了。
上述协议分析:
802.11 协议(WLAN):这是一种用于通过无线局域网(WLAN)接入网络的协议。例如,当您在咖啡馆使用 Wi-Fi 连接上网时,就是在依靠 802.11 协议实现的。
DHCP 协议:它能够让设备自动获取 IP 地址,从而顺利接入局域网。想象一下,您新买了一台电脑,连接到公司网络,无需手动设置 IP 地址,DHCP 协议会自动为您的电脑分配一个可用的 IP 地址,使其能够迅速融入网络环境。
NAT 协议:网络地址转换协议,常用于解决 IPv4 地址不足的问题。比如在家庭网络中,多个设备共享一个公共 IP 地址与外部网络通信,NAT 协议在其中发挥了关键作用。
PPPOE 协议:简单来讲,当您通过拨号上网时,比如使用 ADSL 宽带连接,PPPOE 协议就在幕后工作,建立您的设备与网络服务提供商之间的连接。
简单来说,就是手机、无线路由器等设备通过多种网络协议实现通信。网络协议就是为了通信各方能够 互相交流而定义的标准或规则,设备只要遵循相同的网络协议就能够实现通信。那网络协议又是谁规定 的呢? ISO 制定了一个国际标准 OSI , 其中的 OSI 参考模型常被用于网络协议的制定。
2、以太网
1)局域网
- 局域网指的是这是在一个相对较小的范围内构建的私有网络。
- 例如家庭中几台设备组成的网络,便于共享文件和打印机等;公司内部网络,方便员工协同工作与共享信息;校园内部网络,支持教学和科研活动。
2)广域网
- 广域网(WAN)的作用是把不同地域的局域网相互连接起来。
- 运营商搭建广域网实现跨区域网络互连。 比如一家在多城市有分支机构的企业,借助广域网能让各地员工便捷交流和共享数据,仿若在同一办公室。
3)互联网
- 互联网是一个将全世界连接起来的巨大网络。互联网是开放和互联的,不属于任何个人或机构。
- 一旦接入互联网,就能与全球任何主机通信,可轻松访问地球另一端的网站获取信息或交流。
3、域名
1)域名的定义:
-
域名相当于网站在互联网上的名字,用于在数据传输时标识计算机的位置(有时也可能指其地理位置)。它让人们更容易记住和访问特定的网站,而不必记住复杂的数字 IP 地址。
2)域名的类型:
-
顶级域名(一级域名):
-
是由一串字符串中间用一个点隔开的形式,例如 baidu.com 。顶级域名在互联网 DNS 等级中处于最高级别,其信息保存在 DNS 根域的名字空间中。
常见的顶级域名有.com 、.org 、.net 等。 - 二级域名:
-
实际上是在一级域名基础下的主机名,由一串字符串中间用两个“.”隔开。
例如 www.baidu.com ,其中,“www”就是二级域名。再比如 news.baidu.com ,“news”就是二级域名。 - 三级域名:
-
是二级域名的子域名,特征是包含三个“.”。
例如 m.news.baidu.com ,这里的“m”指的就是三级域名或者更高级的多级域名。
3)域名与安全:
-
在进行渗透测试时,如果主域名找不到漏洞,那么尝试测试收集到的子域名可能会有意外收获。有时,从子域名网站发现的问题可以横向扩展到主网站。
比如,当您进入网站 https://www.cnu.edu.cn/ 没有找到突破口(漏洞),再次搜索:inurl:cnu.edu.cn ,可能会找到 https://jwc.cnu.edu.cn/ (教务处系统)。
4、DNS
1)DNS的定义:
-
域名系统(Domain Name System,DNS)是 Internet 上用于解决网上机器命名的一种系统。
-
其核心功能就是将域名解析成 IP 地址。
-
要知道,每一个 IP 地址都对应着一台 DNS 服务器。
-
-
简单来说,DNS 就像是一个存有域名与对应 IP 的巨大表格的服务器。当您访问网站时,首先会访问 DNS 服务器,查找对应的 IP 地址,然后才能准确地访问该网站。
2)本地 Hosts 与 DNS:
-
Hosts 文件的主要作用是定义 IP 地址和主机名的映射关系,就像是一个通过映射IP地址和主机名而专门建立 IP 地址关联的“数据库”。
-
当用户访问一个 URL 时,系统会首先在 Hosts 文件中查找对应的 IP 地址。如果没有找到,系统才会将网址提交给 DNS 域名解析服务器进行 IP 地址的解析。
-
想象一下,您的浏览器访问网站时,就像一个迷路的旅人,首先会在 Hosts 文件这个“本地地图”中寻找方向,如果找不到,才会求助于 DNS 这个“全球导航系统”来获取准确的 IP 地址,进而定位并访问网站的数据。
-
3)CDN 是什么:
-
CDN 的全称是 Content Delivery Network,即内容分发网络。
-
CDN 的基本思路是尽可能避开互联网上可能影响数据传输速度和稳定性的瓶颈和环节,从而让内容传输得更快、更稳定。
-
它通过在网络的各个角落放置节点服务器,构建起一层在现有的互联网基础之上的智能虚拟网络。
-
当用户发起请求时,CDN 系统能够根据实时的网络流量、各节点的连接和负载状况,以及用户与节点的距离和响应时间等综合信息,将用户的请求重新导向离用户最近的服务节点上。
-
这里要注意的是,如果单纯只使用 DNS 解析,直接 PING 就会显示出自己的真实 IP 。但如果又使用了 CDN ,PING 出来的 IP 通常就不是用户的真实 IP ,而是 CDN 服务器的 IP 节点。所以,在某些情况下,需要绕过 CDN 才能找到真实的 IP 地址。
-
另外,DNS 缓存中毒是一种严重的攻击手段。攻击者给 DNS 服务器注入非法的网络域名地址,如果服务器接受了这个非法地址,就意味着其缓存被攻击了。此后,响应的域名请求将会受到黑客的控制。当这些非法地址进入服务器缓存,用户的浏览器或者邮件服务器就会自动跳转到 DNS 指定的非法地址。
-
使用 CDN 的目的在于让用户能够就近获取所需的内容,有效解决 Internet 网络拥挤的状况,显著提高用户访问网站的响应速度。
4)常见 DNS 攻击:
1、DDoS:
•DDoS 攻击,也被称为分布式拒绝服务攻击,指的是大量计算机在同一时间对目标发起攻击,导致目标无法正常提供服务。
•攻击者可以通过伪造自己的 DNS 服务器地址,同时发送海量的请求给其他服务器。而其他服务器的回复会被发送到被伪造服务器的真实地址,造成该服务器因无法处理如此大量的请求而崩溃。
•此外,攻击者还能利用 DNS 协议中存在的漏洞,恶意制造一个载荷过大的请求,致使目标 DNS 服务器崩溃。
•为什么 DDoS 攻击难以解决呢?这是因为它就像一场以数量取胜的“人海战术”。当攻击的规模足够大,就像面对一个巨大的池塘,无论倒入多少水都能容纳,让人难以应对。
2、DNS 缓存中毒:
•这种攻击常常被归类为域欺骗攻击(pharming attack),会引发许多严重的问题。用户可能会误以为登录的是熟悉的网站,实际上却并非如此。与钓鱼攻击采用非法 URL 不同,这种攻击使用的是合法的 URL 。
3、域名劫持:
•域名劫持是通过攻击域名解析服务器(DNS),或者伪造域名解析服务器(DNS)的方式,把目标网站的域名解析到错误的地址,从而让用户无法访问目标网站。
•域名劫持一方面会严重影响用户的上网体验,用户可能被引导到假冒的网站,无法正常浏览网页。对于用户量较大的网站,域名被劫持后,其恶劣影响会迅速扩大。另一方面,用户可能在被劫持的网站上进行登录等操作,从而导致隐私数据的泄露。
4、DNS 嗅探:
•攻击者主要利用对 DNS 的配置信息获取网络环境的信息,为后续的攻击做好准备。
•针对这种情况,我们需要对 DNS 服务器采取特别的安全保护措施。在防火墙网络中,应分开设置内部 DNS 服务器和外部 DNS 服务器,连接外部服务的外部 DNS 服务器上不应保留对外禁止访问的内部网络系统的服务器,以实现内外网络服务器的分割。
5、ARP 欺骗:
•ARP 攻击是通过伪造 IP 地址和 MAC 地址来实现 ARP 欺骗,能够在网络中产生大量的 ARP 通信量,导致网络阻塞。
•攻击者只要持续不断地发出伪造的 ARP 响应包,就能更改目标主机 ARP 缓存中的 IP-MAC 条目,造成网络中断或中间人攻击。
•ARP 攻击主要发生在局域网网络中。如果局域网中有一台计算机感染了 ARP 病毒,那么被感染的系统将会试图通过“ARP 欺骗”手段截获所在网络内其他计算机的通信信息,从而导致网内其他计算机的通信故障。
•此外,ARP 欺骗还可能导致用户在访问域名时出现错误指向。如果 IDC 机房也被 ARP 病毒入侵,那么攻击者可能会采用 ARP 包压制正常主机或 DNS 服务器,使得访问导向错误的地址。
6、本机劫持:
当本机的计算机系统被木马或流氓软件感染后,也可能会出现部分域名的访问异常。
5)协议端口
-
1、 TCP 协议和 UDP 协议采用 16 位端口号来识别应用程序。这意味着相同的端口号对于不同的传输层协议,表示的是不同的进程。 例如,TCP 端口号 23 和 UDP 端口号 23 并不是相同的。
-
2、 服务器通常通过熟知端口号(保留端口号)来识别对应的应用程序。这类端口号由 IANA(互联网编号分配机构)管理,范围是 1 到 1023。 比如,HTTP 协议通常使用 80 端口,HTTPS 协议通常使用 443 端口。
-
3、 客户端口号又称为临时端口号,通常只在用户运行该客户程序时才存在,其范围通常为 1024 到 5000。
-
4、 从 1024 开始的端口号通常被视为 TCP 协议和 UDP 协议的默认临时端口号。 也有人把 1024 到 65535 的端口号通称为动态端口号,因为这些端口号一般不会固定分配给某个服务器使用。
-
其他:对于 UNIX 类系统来说,文件 /etc/services 中包含了熟知端口号。对于具有超级用户(root 用户)权限的进程,允许分配 1 到 1023 范围内的熟知端口号。
6)封装与分用
前言: 在数据通信中,协议栈(协议的具体应用)有两个极其重要的操作:封装(发送数据时)和分用(接收数据时)。
1、封装:
-
当发送数据时,会按照网络协议的层级,从上层到下层依次添加头部信息。
-
应用层生成数据后,传输层会添加端口等控制信息的头部;网络层会添加 IP 地址等头信息;数据链路层会添加 MAC 地址等帧头帧尾;最终由物理层将其转换为信号进行发送。
-
例如,当您发送一个网页请求时,各层会逐步添加对应的头部,形成一个完整的数据包进行传输。就像给一个包裹一层一层地添加包装和标签,以便在传输过程中能够准确无误地送达目的地。
2、分用:
-
在接收数据时,则按照相反的顺序逐层去除头部信息。
-
物理层接收信号并转换为数据帧后交给数据链路层;数据链路层确认目标 MAC 地址匹配后去除帧头帧尾,交给网络层;网络层确认目标 IP 地址匹配后去除 IP 头,交给传输层;传输层根据端口号将数据交给相应的应用程序。
-
比如当您收到一个数据包时,各层会依次去除头部,提取出最终应用层所需的数据。这就像收到一个层层包裹的礼物,需要一层一层地拆开包装,最终得到里面的核心物品。