网络攻防考点

虚拟化网络

1. Bridge(桥接)模式

  • 工作机制:虚拟机的虚拟网卡直接连接到宿主机的物理网络,就像宿主机所在网络中的一台独立设备。
  • 使用场景
    • 虚拟机需要与局域网内其他设备通信。
    • 虚拟机需要被局域网中其他设备访问(如作为服务器)。
    • 需要虚拟机获取与宿主机同一网段的独立 IP 地址。

2. NAT(网络地址转换)模式

  • 工作机制:虚拟机通过宿主机进行 NAT 转换访问外网,对外显示为宿主机的 IP。
  • 使用场景
    • 虚拟机只需访问互联网,但不需要被外部直接访问。
    • 节省 IP 地址,适合个人学习或测试环境。
    • 虚拟机隔离在宿主机的私有网络中,安全性较高。

3. Host-only(仅主机)模式

  • 工作机制:虚拟机只能与宿主机及其他同一 Host-only 网络中的虚拟机通信,无法访问外部网络。
  • 使用场景
    • 构建一个完全隔离的私有测试网络。
    • 进行网络安全实验或软件封闭测试。
    • 宿主机与虚拟机之间需要进行网络调试或文件传输,但不希望虚拟机接触外网。

C&C 僵尸网络

分为三个组成:控制主机Master,一台服务器/主机或多台服务器/主机组成的C&C Sever,感染了僵尸程序的若干台肉鸡/僵尸主机bot(组成僵尸网络bot-net)

过程如下:

  1. 攻击者先部署一台或多台主机作为C&C Server
  2. 攻击者通过钓鱼等手段,将僵尸程序分发到受害者主机上
  3. 受害者主机上运行了僵尸程序,则他们会在特定时间后向C&C Server发起连接请求(回连)
  4. 此时C&C Server已经与僵尸主机bot建立了连接,Master就可以发送恶意的命令,经C&C Server到达bot执行

Cobal Strike攻击框架

其实这也是一种僵尸网络

分为三部分:

  • Client
    • 可以理解成一个操作面板,可视化的操作窗口,可视化bot状态,以及可以操纵beacon和bot
  • TeamServer
    • 负责持续监听受害者主机(bot),并将相应的数据传给Client呈现,并负责把Client的命令传给beacon和bot
  • Beacon
    • 要植入受害者主机的程序,植入后,负责将让bot执行Client发送的命令,以及将执行结果回传

CIA模型

机密性、完整性、可用性

常见攻击:

  • 窃听/网络嗅探
    • 攻击描述:攻击者在网络传输路径上截获网络流量,直接导致信息泄露
    • 破坏:机密性
  • 数据包篡改
    • 攻击描述:攻击者通过抓包工具截获网络传输路径上的数据包,篡改其中数据
    • 破坏:完整性、可用性
  • 中间人攻击
    • 攻击描述:中间人在通信双方之间窃听截获通信内容,并可以进行篡改通信内容
    • 破坏:机密性、完整性、可用性
  • 拒绝服务攻击DDOS
    • 攻击描述:通过大量无效请求耗尽服务器的资源,导致服务器无法对正常请求做出响应(提供正常服务)
  • 勒索软件
    • 攻击描述:加密计算机上一些文件,不付钱就不解密
    • 破坏:可用性、机密性
  • 钓鱼
    • 攻击描述:攻击者伪造链接,诱导受害者输入自己的敏感信息,然后根据盗取的身份凭证侵入系统
    • 破坏:机密性、完整性、可用性
  • DNS投毒
    • 攻击描述:篡改DNS服务器的缓存记录,将用户引导到恶意的IP地址
    • 破坏:完整性、机密性、可用性

网络扫描

TCP SYN扫描

  • TCP三次握手过程简要说明:客户端发送SYN包到服务器请求建立连接->若请求的服务器端口开放,回复一个SYN-ACK包->客户端回复一个ACK包,连接建立(established)
  • 攻击原理:利用TCP三次握手的过程,发送SYN包,但是不完成握手;收到服务器发出的SYN-ACK包后,就发一个连接重置RST来取消半连接;这样一来可以避免在目标服务器上留下完整的连接日志,达到隐蔽探测的目的
  • 攻击目的:扫描目标服务器哪些端口开放可用;可用端口会回复SYN-ACK包,不可用端口会直接返回RST包
  • 破坏:机密性、可用性

HTTP慢速攻击

破坏了可用性

  • 定义:攻击者利用HTTP协议的特性,通过有意以极低速度与Web服务器建立并保持连接,从而耗尽服务器并发连接资源的攻击方式
  • 原理:Web服务器会为每个连接分配一定的资源,拥有等待请求完整接收的超时机制,攻击者通过合法但异常缓慢的通信方式,长时间占用这些连接,最终使服务器的所有资源被耗竭,无法再为正常用户提供服务
  • 主要攻击类型:
  • slowloris
    • 攻击者先与目标Web服务器建立正常的HTTP连接,通常发送一个POST请求的请求头,请求头中会声明一个很大的请求体
    • 发送完请求头后,攻击者每隔很长一段时间才发送请求体的几个字节或一行数据
    • 服务器一直在持续接收数据(只不过异常缓慢),服务器并不会认为这个连接违反协议,只会一直等待剩下的请求体
    • 攻击者维护成百上千个这样的连接,服务器的并发资源就会被耗尽
  • slowread
    • 和slowloris差不多其实,只不过这个更侧重单个连接的请求体的缓慢传输

口令破解

  • Hash算法安全性(MD5/SHA1/SHA256):
    • 最安全:SHA256
    • 最危险:MD5、SHA1(都已被完全攻破)

明文嗅探

  • 攻击描述:攻击者在网络传输路径上截获网络流量,直接导致信息泄露
  • 破坏:机密性

常见攻击:ddos等,对CIA模型哪部分进行破坏,比如TLS对哪部分进行保护

扫描等攻击原理、利用弱点

协议

重点掌握 DNS,HTTP,TLS 协议

DNS协议

用途:IP地址和域名之间的相互映射

image-20251124094148664

概述:DNS协议是应用层协议,运行在UDP协议上,默认端口为53

工作机制

image-20251124095802015
  • 根域名服务器:全球只有13组,是DNS查询的起点,知道所有顶级域(.cn,org,.com等)的信息

  • TLD顶级域域名服务器:负责管理特定的顶级域,比如.comTLD服务器知道所有以.com结尾的域名的权威服务区在哪里

  • 权威域名服务器:域名记录的最终来源,比如对于google.com,权威域名服务器持有它的完整DNS记录

  • 递归查询:客户端让服务器完成整个查询过程并返回最终结果给客户端

  • 迭代查询:客户端让服务器返回下一步应该去询问哪个服务器,服务器只返回它知道的最佳指引,不会帮助查询

对于首次访问,DNS流程为:

发起请求->询问本地DNS解析器-> 询问根域名服务器->询问TLD顶级域服务器->询问权威域服务器->拿到结果并缓存->建立连接

  1. 比如访问www.example.com,发请求之前,电脑会先检查本地有没有域名的DNS记录
  2. 本地DNS缓存中如果没有对应结果,会进行一个查询过程
  3. 询问根域名服务器:www.example.com的IP是多少?但是根域名服务器不知道,它只知道.com域名是TLD顶级域服务器在管
  4. 询问.comTLD服务器:www.example.com的IP是多少?TLD服务器只知道www.example.com的权威域服务器是谁
  5. 询问权威域服务器:这下才能拿到IP
  6. 本地解析器把IP缓存,发给电脑中请求的进程

HTTP协议

响应码:

  • 1xx:请求已被接受
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务端错误

关键字段:

  • Host:请求的服务器的域名和端口号
  • Referer:当前请求是从哪个页面跳转过来的,用于分析流量来源
  • Keep-alive:保持连接状态,避免每次请求都要经历TCP建立连接和释放连接的三次握手与四次挥手
    • timeout:连接在闲置几秒后应该关闭
    • max:最大并发请求

TLS v1.2协议

image-20251124112854196

1
2
3
4
5
6
requirements:
- TLS 1.2的完整的握手过程、能画出交互图,重点掌握前三个握手过程(Client Hello,Server Hello,Certificate)及其关键字段
- Client Hello:版本、加密套件、随机数
- Server Hello:版本、加密套件、随机数
- Certificate:证书本身内容
- 交互流程

握手过程

  1. Client Hello

    image-20251124141652110
    1. 类型(Content Type)
    2. TLS版本
    3. 数据包长度
    4. 第一随机数(32字节长的Random)
    5. Session ID
    6. 加密套件Cipher Suites
      1. 命名规则:TLS_密钥交换算法_认证算法_WITH_批量加密算法_消息验证码算法
        1. 密钥交换算法:用于生成会话密钥的预备主密钥,常用ECDHE(基于椭圆曲线的临时DH密钥交换),RSA
        2. 认证算法:定义服务器与可选客户端如何证明身份,通常使用数字证书;常用算法:RSA,ECDSA
        3. WITH:起到分隔符的作用,WITH后的算法作为数据传输加密算法
  2. Server Hello

    image-20251124142339894
    1. 类型
    2. TLS版本
    3. 第二随机数,32字节Random
    4. Session ID
    5. 加密套件Cipher Suites:从Client Hello上传的加密套件中选择
  3. Certification

    1. 服务端下发证书,客户端验证服务端的身份,并且取出证书携带的公钥,这个公钥是交换加密算法的公钥(Server Hello中指定的加密套件中的密钥交换算法)

    2. 下发了携带自己公钥的数字证书和CA证书的证书链

    3. Certificates字段:里面分别是:服务端证书(终端证书)->中间CA证书->Root CA证书

      1. 证书下的signedCertificate字段的内容为:

        image-20251124150532521
        1. 版本:X509 v3
        2. 序列号serialNumber:证书颁发者唯一序列号
        3. 签名算法ID:消息摘要算法_WITH_加密算法
        4. 证书颁发者:颁发该证书的CA的信息
        5. 有效期validity
        6. 对象名称subject:包含证书名称、国家、组织、适用域名等主要信息
        7. 对象公钥信息
    4. algorithmIdentifier字段:认证该证书的CA使用的签名算法

  4. Server Key Exchange

    1. 这步比较特殊,是对Certificate的补充,只有以下情况下需要此步:
      1. 协商使用RSA算法加密,但是服务器端证书没提供RSA公钥
      2. 协商使用ECDHE算法加密,但是服务器端证书未提供DH参数
  5. Server Hello Done

    1. 通知客户端,版本和加密套件协商结束
  6. 有3步:

    1. Client Key Exchange
      1. 客户端通过随机数1、随机数2再生成一个随机数3,用从Certificate包中获取的服务器端公钥加密后传给服务端,这个加密的随机数3称为预备主密钥
      2. 服务端收到这个用自己的公钥加密的随机数3后,用自己的私钥解开;此时服务端和客户端都有3个随机数:随机数1、随机数2、和随机数3
      3. 两端都用相应的算法生成主密钥
    2. Change Cipher Spec(Client)
      1. 客户端通知服务端,后续报文将被加密
    3. Encrypted Handshake Message(Client)
      1. 客户端的 Client Finished 消息,客户端发给服务端的第一个加密消息(加密的是已交互握手信息的摘要)
      2. 服务端收到客户端加密信息后,用同样的方式计算已交互握手信息的摘要,与用主密钥解密后的结果对比,一致的话,则证明双方主密钥一致,完成密钥交换
  7. Encrypted Handshake Message(Server)

    1. 和上面的客户端的 Encrypted Handshake Message 一样,是服务端发出的第一条加密信息。客户端按照协商好的主密钥解密并验证正确后,SSL 握手阶段完成

密码学

了解:对称加密算法、非对称加密加密、哈希算法安全性

对称密码:共享密钥为k

1
2
E(k,M) = encrypted_M
D(k,encrypted_M) = M

非对称密码:公钥pub_key,私钥pri_key

1
2
3
4
5
E(pub_key,M) = encrypted_M
D(pri_key,encrypted_M) = M
---------------------------
E(pri_key,M) = encrypted_M
D(pub_key,encrypted_M) = M

恶意代码

分类

病毒

  • 工作原理

    • 病毒工作的流程

    image-20251124162843807

    • 病毒的功能结构

    image-20251124163301229

    • 引导模块

      • 检查病毒运行环境,比如OS、内存等系统环境
      • 将病毒加载到内存中,并让病毒处于活跃状态
    • 感染模块

      • 用于寻找符合感染条件的目标,并将恶意代码插入其中

        • 条件:文件后缀、文件类型、文件名等
        • 满足感染,那么将恶意代码插入
        • 对于本地文件

        image-20251124164243316

        • 对于PE文件(可移植可执行文件)

        image-20251124164313214

  • 定义:植入到计算机程序中的非法指令或者程序,破坏计算机功能和数据,具备自我复制能力

  • 特点:可执行性、非授权性、自我复制性、本地感染性、破坏性

蠕虫

  • 工作原理

    -

  • 特点:主要利用漏洞进行攻击、可作为独立程序运行、自我复制、网络感染性、传播速度快、破坏性强

木马

  • 定义:指一种与远程计算机之间建立连接,使远程计算机能够通过网络控制目标系统,并可能造成信息损失、系统破坏的恶意程序
  • 工作原理:攻击者向受害者主机植入木马程序,受害者主机运行木马程序后,攻击者就能远程控制受害者
    • 植入方法:
      • 通过邮件钓鱼
      • Drive-by-Download:称作偷渡式下载;像飞来横祸一样,受害者只是点击了被篡改的恶意网站就不知不觉的被安装了木马程序
    • 控制技术:
      • 正向连接(攻击者-连接->受害者主机)
        • 步骤
          • 攻击者在受害者主机上开启了特定的端口,并处于监听状态,等待外部连接
          • 攻击者去连目标主机上的那个端口
        • 优缺点:
          • 攻击者可以随时选择控制和不控制
          • 很容易被防火墙干掉
          • 隐蔽性很差
      • 反向连接(受害者主机-连接->攻击者)
        • 步骤
          • 攻击者在自己的公网服务器上运行客户端程序,开启特定的端口并监听
          • 攻击者把包含自己公网IP和端口的通信恶意代码植入目标文件
          • 目标主机运行木马程序后,就会请求连接攻击者
          • 信道建立
        • 优缺点
          • 穿透性高:出站请求几乎不会被防火墙拦截
          • 隐蔽性好
          • 依赖固定控制端,如果IP被封就完蛋
          • 连接时机不确定
  • 特点:欺骗性、隐蔽性、自动运行性

勒索软件

  • 工作原理
image-20251124172817966 image-20251124172840003
  • 特点:文件等资产加密、加密程度不断提高、电子支付追踪困难

熊猫烧香

WannaCry

工作流程:

image-20251124185343214
  1. 攻击者发送带有附件的邮件,通常是含有Office文档的zip包
  2. 解压缩zip包
  3. 用户打开Office文档,触发了脚本
  4. 脚本通过网络请求下载勒索软件
  5. 勒索软件会被下载到%TEMP%目录下
  6. 勒索软件被下载到%TEMP%目录后,脚本让勒索软件运行起来
  7. 勒索软件运行后,勒索软件会向远程的密钥服务器上传本机信息,获取加密的公钥
  8. 得到公钥后,勒索软件就会使用预先设置好的加密算法(比如RSA)对本机的原始目标文件进行加密
  9. 加密完毕后,勒索软件开始弹出勒索信息
  10. 弹出勒索信息后,勒索软件把自己删除同时抹去相关的日志记录

漏洞

生命周期

漏洞发现->披露->修复->验证

永恒之蓝漏洞

CVE编号:CVE-2017-0144

微软MS编号:MS17-010

操作系统:Windows

端口:445

利用:

  • SMB v1协议的远程代码执行漏洞(CVE-2017-0144,MS17-010);SMB协议:用于在计算机间共享文件、管道、打印机等资源
  • 无需用户交互,只需要利用445端口发送特制的数据包,通过srv.sys文件中的缓冲区溢出漏洞来获取系统最高权限

影响:

  • Windows内核
  • SMB协议

心脏滴血漏洞

CVE编号:CVE-2014-0160

操作系统:所有使用存在缺陷的OpenSSL版本(openssl <=1.0.1)的Unix/Linux系统

利用:

  • Openssl的心跳扩展实现缺陷;缺少必要的边界检查:
    • openssl处理心跳请求时,会根据数据包声明的长度来分配内存并准备响应数据;但是没有验证声明的长度与实际payload的长度是否一致
    • 随后,memcpy()会将payload复制到新的缓冲区,需要的长度严格遵循数据包声明的长度,但是如果攻击者把数据包长度声明的很长,那么就会导致缓冲区过读

缓冲区溢出漏洞

防御机制

金丝雀Canary

在栈底指针EBP上面加上一个随机数,若返回地址被修改,那么Canary随机数也会被修改

比如对于下面这个C程序:

1
2
3
4
5
6
7
8
9
10
int add(int x,int y){
return x+y;
}

int main(){
int x = 1;
int y = 2;
sum = add(1,2);
return 0
}

刚刚要调用add()内的指令时的堆栈图:
image-20251124205345755

若栈溢出导致返回地址被覆盖:image-20251124205454868

可以看到随机数被篡改了,此时编译器就会中断执行

地址随机化ASLR

操作系统将lib库随机加载到内存中,攻击者没办法可靠地预测目标地址

image-20251124210826800

栈不可执行DEP

针对shellcode执行

shellcode简单说就是通过栈溢出漏洞,把恶意代码写入栈空间,溢出值是恶意代码在内存中的首址,溢出值刚刚好覆盖原本正确的返回地址

这个机制的核心就是:栈区中的数据可以被当做代码/指令执行

栈不可执行的核心就是:数据区的数据不可被当成代码执行(设置为不可执行)

  • 常见漏洞(编号、利用了什么、在什么OS上)

    • 永恒之蓝

    • 心脏滴血漏洞

    • 缓冲区溢出漏洞(栈内变化,汇编指令)

      • 防御:
        • 金丝雀Canary(方法、在栈内地址)
        • 地址随机化
        • 数据(?)不可执行
    • 恶意代码(能描述原理、区别)

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

      image-20251106145506599

      • WannaCry(图、描述过程,在哪执行等)

      image-20251106145719895

防御

企业网络典型结构

  • 南北向流量:经过互联网,比如内网与外网之间传输的数据流量
  • 东西向流量:通常不经过互联网,比如内网之间不同服务器间的数据流量

DMZ

称之为隔离区

就是内网(可信区域)与外部网络(非可信区域)之间的缓冲地带

核心目的:安全地放置必须向外部用户提供服务的服务器(比如Web服务器),即使这些服务器被攻破,也要保证内部网络的安全

防火墙

工作原理

通过安全策略对两个网络之间的通信进行控制,只有符合安全策略的数据流才能通过

  • 包过滤防火墙

    • 利用特定规则(IP源地址、目的地址,源端口、目的端口等)过滤数据包
    image-20251124214340333
  • 状态监测防火墙

    • 对网络流进行分析和检测
  • 下一代防火墙

使用场景

  • 内网(可信区域)与外网(不可信区域)的边界
    • 访问控制:只允许外部用户访问内网服务器特定的端口,允许内部用户访问互联网
    • 防御外部攻击:过滤扫描、恶意报文
  • 隔离东西向流量
    • 访问控制:访问非授权的内部访问
    • 抵御攻击:防止内网主机被攻陷后导致攻击的横向移动

部署位置

串联设备,通常部署在南北向关键位置(可信区域与不可信区域的分界处)

优缺点

  • 优点
    • 拥有较强阻断能力
    • 功能较丰富
  • 缺点
    • 高速网络下的性能瓶颈
    • 难以检测新型攻击
    • 难以防御内部威胁

入侵检测系统IDS

NIDS:网络入侵检测系统

HIDS:主机入侵检测系统

工作原理

通过对网络或计算机系统中若干关键点信息收集并对其分析,发现网络或系统中是否有违反安全策略的行为或遭到攻击的痕迹。是一种动态网络检测技术,对攻击行为进行分析

image-20251124220155555

采集原始网络流量->解码(原始二进制变为人类可读)->提取特征->进行规则匹配->告警或者输出日志

规则匹配:将流量数据与已知规则进行比较,发现违反安全策略的攻击行为

优点:技术成熟

缺点:容易误报,面对新型攻击需要不断扩充规则库

使用场景

  • 内部威胁防护(东西向流量)
  • 增强南北向安全防护

部署位置

旁路设备,通常通过端口镜像从交换机引流

部署在关键的位置,比如可信区域与不可信区域的边界(南北向流量),内部安全级别不同的网络区域之间(东西向流量)

与防火墙的区别

  • 防火墙是串联设备,可阻断攻击,通常部署在IPS(入侵防御系统)之前

  • IDS是旁路设备,不可阻断攻击,只可以监测攻击,通常从交换机引网络流量

  • 能画出企业网络典型结构(网络拓扑图、南北向、东西向,注意不同组件的图形)

  • 防火墙(工作区域)

  • IDS(工作区域)