admin 管理员组文章数量: 887007
免责声明
学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
B站地址:泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频
真正的小白文根据其他师傅们的总结进行重构精简捋顺学习逻辑顺序,适合0.5有计算机专业基础的人看。觉得文章逻辑狗屁不通和文章看不懂的你进微信群找我,我给你100哈哈,虽然是ai辅助的,看的时候,要想我为什么给这些内容,和一定要学会反向思考,如安全加固想到未加固有漏洞
网络协议印象记忆
网络协议是用于计算机和设备间进行通信的规则和约定,它定义了数据交换的格式、传输方法以及如何确保数据的可靠性和安全性。(相当于说不严格的话可能有漏洞产生)网络协议体系结构通常按照层级划分,每层协议负责不同的功能。最常见的模型是 OSI(开放系统互联模型) 和 TCP/IP(传输控制协议/互联网协议)模型。
OSI 七层模型(OSI Model)
OSI 模型是一个抽象的模型,用来描述计算机网络的不同功能层级,包含七个层级,每一层定义了不同的通信任务。
层级 | 名称 | 主要功能 |
---|---|---|
7 | 应用层 (Application) | 提供用户接口,支持应用程序之间的通信。包括 HTTP, FTP, DNS 等协议。 |
6 | 表示层 (Presentation) | 处理数据格式、加密/解密、压缩/解压。确保数据传输的语法理解一致。 |
5 | 会话层 (Session) | 管理应用程序之间的会话(如登录会话),建立、维持和终止会话。 |
4 | 传输层 (Transport) | 提供可靠的数据传输,控制数据流、错误检测和恢复。常见协议有 TCP, UDP。 |
3 | 网络层 (Network) | 负责数据包的路由和转发,选择合适的路径,常见协议有 IP, ICMP。 |
2 | 数据链路层 (Data Link) | 负责物理地址(如 MAC 地址)的管理和错误检测,确保数据的可靠传输。 |
1 | 物理层 (Physical) | 传输比特流,定义了硬件传输的电气和机械特性,包含网卡、传输介质等。 |
2. TCP/IP 四层模型(TCP/IP Model)
TCP/IP 模型是用于互联网通信的标准协议模型。其层次较为简化,共分为四个层级。相比于 OSI 模型,TCP/IP 模型更侧重于实际的协议实现,记这个。
层级 | 名称 | 主要功能 | 常见协议 |
---|---|---|---|
4 | 应用层 (Application Layer) | 提供用户和应用程序之间的通信接口,处理高层数据和用户交互。 | HTTP, FTP, SMTP, DNS, POP3, IMAP, Telnet, SSH |
---|---|---|---|
3 | 传输层 (Transport Layer) | 负责端到端的数据传输,确保数据的完整性和顺序。 | TCP, UDP |
---|---|---|---|
2 | 网络层 (Internet Layer) | 负责数据包的路由与转发,选择适合的路径,提供主机之间的通信。 | IP, ICMP, ARP, RIP |
---|---|---|---|
1 | 网络接口层 (Link Layer) | 处理物理设备的传输和接收,定义数据链路和物理地址。 | Ethernet, Wi-Fi, PPP |
---|---|---|---|
网络通信印象记忆
TCP 连接详细请【TCP通信】原理详解与编程实现(一)_如何使用tcp-CSDN博客
TCP 连接的特性
-
面向连接:通信前需建立连接(三次握手)。
-
可靠传输:提供数据包完整性和顺序保证。
-
流量控制:通过窗口大小调整发送速率,防止拥塞。
-
全双工通信:允许双方同时发送和接收数据。
TCP 连接的过程
-
三次握手(建立连接)
-
第一步:客户端发送 SYN 包,表明希望建立连接。
-
第二步:服务器收到 SYN 后,返回 SYN+ACK 表示同意连接请求。
-
第三步:客户端收到 SYN+ACK 后,发送 ACK 确认。
-
结果:连接建立,双方可以开始通信。
syn-->
<--syn+ack
ack-->
-
-
数据传输
-
滑动窗口:控制数据发送速率,确保高效传输。
-
确认机制:接收方发送 ACK 确认接收到的数据。
-
-
四次挥手(断开连接)
-
第一步:客户端发送 FIN 表示结束数据发送。
-
第二步:服务器接收 FIN,返回 ACK 确认接收。
-
第三步:服务器发送 FIN 表示也要断开连接。
-
第四步:客户端接收 FIN,发送 ACK 确认断开连接。
-
结果:连接关闭,双方资源释放。
-
fin-->
<--ack
<--fin
ack-->
UDP 的对比
-
无连接:无需建立连接,直接发送数据包。
-
不保证可靠性:不提供重传和顺序保证。
-
低延迟:适合实时应用(如视频会议、DNS 查询)。
-
资源消耗低:不需要额外的连接状态和确认信息。
在 TCP 协议中,除了常见的 SYN、ACK、FIN,还有其他标志位(Flags)用于不同的通信目的。以下是所有 TCP 标志位的详细说明,以及它们在数据包中的作用:
TCP 标志位及其作用
-
SYN (Synchronize)
-
作用:建立连接(三次握手中的第一步)。
-
典型场景:客户端向服务器发送 SYN 包请求建立连接。
-
-
ACK (Acknowledgment)
-
作用:确认接收到的数据或请求。
-
典型场景
-
在三次握手和四次挥手中作为确认包。
-
数据传输过程中确认接收到的数据段。
-
-
-
FIN (Finish)
-
作用:关闭连接。
-
典型场景:四次挥手中的第一步,表示发送方已完成数据传输。
-
-
RST (Reset)
-
作用:强制断开连接。
-
典型场景
-
非法连接尝试时,服务器返回 RST 包终止会话。
-
出现异常情况(如端口未监听)时发送 RST。
-
-
-
PSH (Push)
-
作用:提示接收方立即将数据交给应用层,而无需等待缓冲区填满。
-
典型场景
-
发送即时消息时,PSH 标志可以确保数据快速到达对方应用层。
-
-
-
URG (Urgent)
-
作用:标识紧急数据,需要优先处理。
-
典型场景
-
发送带有高优先级的数据(如终止会话的紧急指令)。
-
数据段中会包含一个 "紧急指针" 指向紧急数据的结束位置。
-
-
-
ECE (Explicit Congestion Notification Echo)
-
作用:用于显式拥塞通知的响应。
-
典型场景
-
网络支持 ECN(Explicit Congestion Notification)功能时,接收方在检测到拥塞后向发送方反馈。
-
-
-
CWR (Congestion Window Reduced)
-
作用:表示发送方已减小拥塞窗口大小。
-
典型场景
-
发送方检测到网络拥塞后发送此标志,配合 ECE 使用。
-
-
-
NS (Nonce Sum)
-
作用:用于增加 TCP ECN 的安全性,防止伪造的 ECN 标志位。
-
典型场景
-
一些支持高级拥塞控制机制的场景。
-
-
标志位组合的常见数据包
-
SYN + ACK
-
作用:三次握手中的第二步,用于确认收到 SYN 并准备建立连接。
-
-
FIN + ACK
-
作用:四次挥手中用于确认关闭连接。
-
-
PSH + ACK
-
作用:数据传输时,表示数据需要立即被处理。
-
-
RST + ACK
-
作用:发送方重置连接并确认。
-
-
URG + PSH + ACK
-
作用:发送紧急数据的同时要求立即处理。
-
连接过程中可以使用工具劫持数据包,发送不同的数据包或修改
1. Wireshark
-
功能:数据包捕获与分析。
-
使用场景:监控并分析 TCP 连接过程中的数据包,发现潜在漏洞。
-
例子
-
捕获三次握手过程中的数据包。
-
验证是否存在伪造的 SYN 包(如 SYN Flood 攻击)。
-
-
限制:只能捕获,不直接发送伪造数据包。
2. Scapy
-
功能:数据包生成、发送、接收和分析的 Python 库。
-
使用场景:伪造数据包、修改流量、进行协议测试。
-
例子
-
伪造 SYN 包
from scapy.all import * ip = IP(dst="192.168.1.1") # 目标 IP syn = TCP(dport=80, flags="S", seq=1000) # SYN 包 send(ip/syn)
伪造一个目标为 192.168.1.1 的 SYN 包发送到端口 80。
-
劫持 TCP 会话: 捕获会话中的 SEQ 和 ACK,然后伪造一个带有效序列号的数据包插入通信。看第一排文章
构造 RST 包:
from scapy.all import * ip = IP(dst="192.168.1.1") rst = TCP(dport=80, flags="R") send(ip/rst)
伪造一个 RST 包断开连接。
-
3. Ettercap
-
功能:中间人攻击(MITM),劫持和修改通信数据。
-
使用场景:用于监听和注入 TCP 连接中的数据。
-
例子
-
设置 ARP 欺骗劫持网络通信。
-
在 HTTP 会话中注入自定义消息或伪造响应数据包。
-
4. Burp Suite
-
功能:拦截和修改 HTTP/HTTPS 请求和响应。
-
使用场景:伪造或篡改应用层的数据。
-
例子
-
劫持 HTTP POST 请求,修改其中的表单数据(如登录密码)。
-
注入恶意负载测试服务器的输入验证。
-
5. hping3
-
功能:构造和发送自定义 TCP/IP 数据包。
-
使用场景:测试网络协议,发起伪造的流量。
-
例子
-
发送伪造的 TCP SYN 包:
hping3 -S -p 80 192.168.1.1
向目标 IP 的 80 端口发送 SYN 包,模拟三次握手的第一步。
-
模拟 ICMP Ping Flood:
hping3 -1 --flood 192.168.1.1
-
6. Netcat (nc)
-
功能:TCP/UDP 数据流测试工具。
-
使用场景:伪造简单的数据包通信。
-
例子
-
发送自定义数据:
echo "Hello" | nc 192.168.1.1 80
向目标 IP 的 80 端口发送自定义字符串 "Hello"。
-
7. MITMf (Man-In-The-Middle Framework)
-
功能:执行 MITM 攻击并注入数据包。
-
使用场景:测试 HTTPS 劫持或 DNS 欺骗。
-
例子
-
劫持 HTTP 请求并注入恶意 JavaScript:
mitmf --arp --spoof --inject --target 192.168.1.1
-
在网络安全测试或研究中,标志位异常的 TCP 数据包通常被用于测试网络设备的鲁棒性或触发某些协议行为。这些异常包违反了 TCP 协议的标准逻辑,在合法授权的场景下可以用于安全评估。
标志位异常包的类型与举例
1. SYN + FIN
-
异常描述:SYN 和 FIN 同时设置,这在正常通信中是不可能的,因为 SYN 表示“建立连接”,而 FIN 表示“结束连接”。
-
用途:测试防火墙、路由器或操作系统对异常数据包的处理能力。
-
工具示例(Scapy)
from scapy.all import * ip = IP(dst="192.168.1.1") tcp = TCP(dport=80, flags="SF") send(ip/tcp)
2. SYN + RST
-
异常描述:SYN 表示请求建立连接,而 RST 表示重置连接。这两个标志同时存在是矛盾的。
-
用途:检测目标设备是否会崩溃或记录错误日志。
-
工具示例(hping3)
hping3 -S -R -p 80 192.168.1.1
3. FIN + URG + PSH
-
异常描述:FIN 表示连接关闭,URG 和 PSH 则表示数据需要立即传递,逻辑冲突。
-
用途:测试目标系统是否能够解析矛盾的标志位组合。
-
工具示例(Scapy)
from scapy.all import * ip = IP(dst="192.168.1.1") tcp = TCP(dport=80, flags="FUP") send(ip/tcp)
4. 无标志位(Flag=0)
-
异常描述:TCP 数据包中不设置任何标志位。这种包通常被称为“空 TCP 包”。
-
用途:检测防火墙是否过滤非标准的 TCP 包。
-
工具示例(hping3)
hping3 192.168.1.1 --tcp -p 80
5. 全标志位(Flag=ALL 或 URG+ACK+PSH+RST+SYN+FIN
)
-
异常描述:所有标志位都被设置。这种包严重违反协议规范,通常会触发网络设备的防护机制。
-
用途:检测入侵检测系统(IDS)或防火墙的反应。
-
工具示例(Scapy)
from scapy.all import * ip = IP(dst="192.168.1.1") tcp = TCP(dport=80, flags="UAPRSF") send(ip/tcp)
6. FIN + SYN + ACK
-
异常描述:FIN 表示结束连接,SYN 表示建立连接,ACK 表示确认。这种组合无意义。
-
用途:测试防火墙的处理能力。
-
工具示例(Scapy)
from scapy.all import * ip = IP(dst="192.168.1.1") tcp = TCP(dport=80, flags="FSA") send(ip/tcp)
如何分析异常包
-
工具: 使用 Wireshark 或 tcpdump 捕获数据包并查看标志位字段。
-
异常行为
目标设备可能会:
-
丢弃数据包(典型防火墙行为)。
-
返回 RST 包终止连接。
-
记录异常日志。
-
在未充分防护时,导致崩溃或 DoS。
-
hping3默认发送的是 ICMP echo request(类似 ping
命令),而不是 TCP 数据包。
参数 | 说明 | 示例 |
---|---|---|
-i | 设置发送数据包的时间间隔(秒,默认为无延迟)。 | hping3 -i u1000 192.168.1.1 (1毫秒间隔) |
-c | 指定发送数据包的数量。 | hping3 -c 10 192.168.1.1 |
-n | 使用数字格式显示 IP 地址(禁用 DNS 解析)。 | hping3 -n 192.168.1.1 |
-q | 只输出统计结果,不显示发送过程。 | hping3 -q 192.168.1.1 |
-S | 设置 SYN 标志位。 | hping3 -S 192.168.1.1 |
-A | 设置 ACK 标志位。 | hping3 -A 192.168.1.1 |
-F | 设置 FIN 标志位。 | hping3 -F 192.168.1.1 |
-R | 设置 RST 标志位。 | hping3 -R 192.168.1.1 |
-P | 设置 PSH 标志位。 | hping3 -P 192.168.1.1 |
-U | 设置 URG 标志位。 | hping3 -U 192.168.1.1 |
--fin | 等同于 -F ,设置 FIN 标志位。 | hping3 --fin 192.168.1.1 |
--syn | 等同于 -S ,设置 SYN 标志位。 | hping3 --syn 192.168.1.1 |
--ack | 等同于 -A ,设置 ACK 标志位。 | hping3 --ack 192.168.1.1 |
-p | 指定目标端口号(默认端口 0)。 | hping3 -p 80 192.168.1.1 |
--rand-source | 使用随机源 IP 地址发送数据包。 | hping3 --rand-source 192.168.1.1 |
-a | 指定伪造的源 IP 地址。 | hping3 -a 10.0.0.1 192.168.1.1 |
--icmp | 使用 ICMP 协议发送数据包。 | hping3 --icmp 192.168.1.1 |
--udp | 使用 UDP 协议发送数据包。 | hping3 --udp -p 53 192.168.1.1 |
--tcp-timestamp | 设置 TCP 时间戳选项。 | hping3 --tcp-timestamp 192.168.1.1 |
-d | 指定数据包的大小(以字节为单位)。 | hping3 -d 120 192.168.1.1 |
-E | 使用文件中的内容作为数据包载荷。 | hping3 -E payload.txt 192.168.1.1 |
-K | 使用指定文件内容作为校验和。 | hping3 -K checksum.txt 192.168.1.1 |
--sign | 在数据包载荷中附加一个自定义签名。 | hping3 --sign mysign 192.168.1.1 |
--win | 设置 TCP 窗口大小。 | hping3 --win 512 192.168.1.1 |
--ttl | 设置 IP 数据包的 TTL 值。 | hping3 --ttl 64 192.168.1.1 |
--traceroute | 启用 traceroute 模式。 | hping3 --traceroute 192.168.1.1 |
--frag | 发送分片的 IP 数据包。 | hping3 --frag 192.168.1.1 |
--safe | 安全模式,避免向广播地址发送数据包。 | hping3 --safe 192.168.1.1 |
--flood | 发送数据包的最大速率(可能导致网络拥塞)。 | hping3 --flood 192.168.1.1 |
-C | 设置数据包的控制码(适用于某些协议)。 | hping3 -C 8 --icmp 192.168.1.1 |
网络嗅探印象记忆
网络嗅探是指通过监听网络上的数据包,捕获并分析流经网络的数据,以获取其中的关键信息或进行其他恶意操作。网络嗅探常用于数据窃取、监视网络流量或测试网络安全。攻击者可以利用嗅探工具来分析传输的敏感信息(如用户名、密码、信用卡号等)以及其他网络协议的细节。
网络嗅探的基本原理
网络嗅探基于以下基本原理:
-
数据包捕获:在数据传输过程中,网络上的每个数据包都可以被捕获和分析。数据包包含源地址、目标地址、传输协议、数据内容等信息。
-
网络模式:大多数网络通信采用“广播”或“单播”方式。网络嗅探可以利用这些模式来捕获并分析传输的所有数据包。
-
监听流量:通过网络接口卡(NIC)的混杂模式,攻击者能够监听到流经目标设备的所有数据包,而不仅仅是发往自己的数据包。
常见的网络嗅探工具
-
Wireshark
-
功能:广泛使用的网络流量分析工具,支持捕获、分析各种协议的流量,包括以太网、TCP/IP、HTTP等。
-
使用场景:用于深入分析数据包,查看其中的详细信息。
-
-
tcpdump
-
功能:一个基于命令行的网络分析工具,支持捕获并打印数据包的详细信息,支持过滤器来指定捕获的包类型。
-
使用场景:用于实时监控网络流量,常见于Linux系统。
-
-
Ettercap
-
功能:除了网络嗅探外,Ettercap还支持中间人攻击、ARP欺骗等高级攻击。
-
使用场景:用于监控和劫持网络流量,特别适用于局域网攻击。
-
-
Scapy
-
功能:一个强大的Python库,既能用来构造和发送数据包,也可以用来嗅探和分析数据包。
-
使用场景:用于自定义数据包捕获与生成,适合高级用户。
-
-
Kismet
-
功能:无线网络嗅探工具,用于捕获无线网络的流量,支持Wi-Fi协议分析。
-
使用场景:用于监听无线网络中的广播流量。
-
-
Netcat
-
功能:一个简单的网络工具,虽然不专门用于嗅探,但可以与其他工具配合监听和转发流量。
-
使用场景:常用于网络连接调试,也可以用于流量转发。
-
-
Nmap
-
功能:主要用于端口扫描和主机发现,但通过其脚本引擎可以执行自定义的嗅探操作。
-
使用场景:网络映射和漏洞扫描,但也可以配合其他工具进行嗅探。
-
网络嗅探的分类
-
被动嗅探:
-
定义:攻击者不主动与网络流量进行交互,只是监听和捕获流经网络的数据包。这种方式对网络没有任何影响,因此较难被发现。
-
例子:通过Wireshark或tcpdump监听流量。
-
-
主动嗅探:
-
定义:攻击者通过向网络中注入数据包(如ARP请求)来干扰网络流量,以便捕获更多信息或重新定向流量。
-
例子:ARP欺骗攻击,通过伪造ARP响应让数据包经过攻击者机器。
-
网络嗅探的攻击方式
-
密码嗅探:
-
攻击者通过嗅探网络上的明文传输流量(如HTTP、FTP、Telnet等)来捕获用户名、密码等敏感信息。
-
防护措施:使用加密协议(如HTTPS、SSH)来加密敏感信息的传输。
-
-
中间人攻击(MITM):
-
攻击者通过中间人手段拦截并篡改通信数据,使受害者与攻击者之间的通信看起来是安全的,但实际上传输的数据被攻击者监听或修改。
-
防护措施:使用加密协议和数字签名来确保数据的完整性和机密性。
-
-
ARP欺骗(ARP Spoofing):
-
攻击者通过发送伪造的ARP包将目标设备的MAC地址指向攻击者的机器,从而使网络流量流经攻击者的设备。
-
防护措施:使用静态ARP表、启用ARP防护功能等。
-
-
DNS欺骗:
-
攻击者伪造DNS响应,使得受害者访问到恶意网站,进一步窃取信息或植入恶意软件。
-
防护措施:使用DNSSEC等防护机制。
-
防范网络嗅探的措施
-
使用加密协议:确保敏感数据传输时使用加密协议(如HTTPS、SSH、VPN),防止明文数据被嗅探工具捕获。
-
启用网络分段:通过VLAN和子网划分减少广播域,减少潜在的嗅探范围。
-
启用端到端加密:对于敏感通信,确保端到端加密,以防止数据在中间被泄露。
-
防止ARP欺骗:使用静态ARP表、启用动态ARP检查等措施,减少ARP欺骗的风险。
-
使用网络入侵检测系统(NIDS):通过流量分析检测异常网络活动,及早发现潜在的嗅探或攻击行为。
-
定期审计和监控:定期进行网络安全审计,并使用网络监控工具检测是否存在异常流量或数据包。
网络嗅探与WiFi探针的对比表格:
特征 | 网络嗅探 | WiFi探针 |
---|---|---|
适用网络类型 | 所有类型的网络(有线、无线) | 专门用于无线网络(Wi-Fi) |
捕获数据类型 | TCP/IP、HTTP、FTP等协议的数据包 | Wi-Fi管理帧、控制帧、数据帧 |
目标数据 | 包含从数据链路层到应用层的数据,如协议头、负载等 | 主要关注Wi-Fi网络的基本信息、设备间通信 |
常见工具 | Wireshark、tcpdump、Cain & Abel等 | Kismet、Aircrack-ng、WiFi Pineapple等 |
网络层级 | 能捕获从数据链路层到应用层的各类协议数据 | 主要捕获Wi-Fi信号层(管理、控制、数据帧) |
攻击方式 | 中间人攻击(MITM)、数据包注入、会话劫持等 | 网络嗅探、WPS破解、Wi-Fi网络钓鱼等 |
使用场景 | 用于分析和监视网络流量、捕获敏感信息等 | 用于捕获Wi-Fi网络信息、攻击无线网络等 |
web网络攻击印象记忆
1. SQL 注入攻击 (SQL Injection)
-
原理:攻击者通过向 Web 表单或 URL 中注入恶意 SQL 代码,操控后台数据库,访问、篡改或删除数据。
-
危害:泄露敏感数据、数据丢失、篡改数据库内容。
-
防护措施
-
使用预处理语句(Prepared Statements)和参数化查询。
-
严格输入验证,避免直接插入用户输入。
-
最小化数据库权限,确保只授予必需的权限。
-
2. 跨站脚本攻击 (XSS, Cross-Site Scripting)
-
原理:攻击者将恶意脚本(如 JavaScript)嵌入到 Web 页面中,当用户浏览该页面时,脚本会在其浏览器中执行,可能盗取用户的 cookie 或进行其他恶意操作。
-
类型
-
反射型 XSS:恶意脚本直接反射在 URL 中,用户点击链接时触发。
-
存储型 XSS:恶意脚本存储在服务器端的数据库或文件中,影响所有访问该内容的用户。
-
-
防护措施
-
对用户输入进行严格的过滤和转义(如 HTML 转义)。
-
使用 Content Security Policy (CSP) 来限制浏览器执行脚本的来源。
-
3. 跨站请求伪造 (CSRF, Cross-Site Request Forgery)
-
原理:攻击者诱导已认证的用户在不知情的情况下执行恶意操作,如转账、修改密码等。
-
防护措施
-
使用 CSRF Token(令牌)来验证请求的合法性。
-
检查请求来源的 Referer 头部。
-
通过 SameSite 属性限制 Cookie 的跨站请求。
-
4. 目录遍历攻击 (Directory Traversal)
-
原理:攻击者通过操控 URL 或请求路径,尝试访问 Web 服务器上不应公开的目录和文件。
-
防护措施
-
检查用户输入的路径,避免使用相对路径。
-
限制 Web 服务器上的访问权限,确保敏感文件不可访问。
-
5. 远程文件包含 (RFI, Remote File Inclusion) 和 本地文件包含 (LFI, Local File Inclusion)
-
原理
-
RFI:攻击者通过 URL 引入远程恶意文件进行执行。
-
LFI:攻击者通过路径操控引入本地文件进行执行或泄露。
-
-
危害:执行恶意代码、泄露敏感信息、获取服务器控制权限。
-
防护措施
-
严格验证文件路径,防止用户输入的文件路径直接作为参数。
-
禁用文件包含功能或限制包含的文件类型。
-
6. 会话劫持 (Session Hijacking)
-
原理:攻击者盗取合法用户的会话标识(如 Cookie),冒充用户进行操作。
-
防护措施
-
使用 HTTPS 加密会话传输,避免会话劫持。
-
在会话管理中使用 HTTPOnly 和 Secure 属性,确保 Cookie 只能通过 HTTPS 传输。
-
定期更新会话标识,缩短会话时间。
-
7. Web Shell 攻击
-
原理:攻击者通过上传恶意 Web Shell 文件,获得对服务器的远程控制权限。
-
防护措施
-
限制文件上传类型,只允许特定类型的文件上传。
-
检查上传文件的扩展名,防止执行恶意脚本。
-
对服务器上的敏感目录进行访问权限控制。
-
8. HTTP 请求走私 (HTTP Request Smuggling)
-
原理:攻击者通过构造特殊的 HTTP 请求,欺骗代理服务器或负载均衡器,导致它们错误地处理请求。
-
防护措施
-
对 HTTP 请求进行严格的解析和过滤,防止 HTTP 请求走私攻击。
-
使用 HTTPS 来加密传输,防止中间人攻击。
-
9. 缓存投毒 (Cache Poisoning)
-
原理:攻击者将恶意内容注入缓存服务器,当合法用户请求时返回恶意内容。
-
防护措施
-
严格配置缓存规则,避免敏感数据被缓存。
-
进行缓存验证,确保缓存内容是合法的。
-
10. DNS 缓存投毒 (DNS Cache Poisoning)
-
原理:攻击者通过伪造 DNS 响应,将恶意 IP 地址缓存到 DNS 服务器中,诱使用户访问恶意网站。
-
防护措施
-
配置 DNS 服务器使用随机端口和严格的源验证。
-
部署 DNSSEC(DNS 安全扩展)来验证 DNS 响应的合法性。
-
11. 暴力破解攻击 (Brute Force Attack)
-
原理:攻击者通过自动化工具不断尝试不同的用户名和密码组合,直到成功登陆。
-
防护措施
-
设置复杂的密码,并启用 双因素认证(2FA)。
-
限制登录尝试次数,并引入 CAPTCHA 验证。
-
使用账户锁定策略,限制连续失败的登录尝试。
-
12.DDoS(Distributed Denial of Service)
1. 定义与特点
-
定义:DDoS 是分布式拒绝服务攻击,通过大量分布式设备(通常是僵尸网络)向目标系统发送大量无效请求,导致目标系统资源耗尽、服务中断。
-
特点
-
攻击来源分布广,难以追踪。
-
流量大,短时间内使目标系统瘫痪。
-
技术门槛低,易于实施(现有攻击工具丰富)。
-
2. 常见攻击类型
-
流量型攻击
-
ICMP Flood:发送大量 ICMP 数据包,耗尽目标带宽。
-
UDP Flood:发送大量伪造的 UDP 包,占用目标系统资源。
-
SYN Flood:通过发送大量半连接请求消耗服务器连接资源。
-
-
协议型攻击
-
HTTP Flood:发送大量合法的 HTTP 请求,耗尽服务器资源。
-
Slowloris:保持大量慢速连接,使服务器资源耗尽。
-
-
应用层攻击
-
针对特定应用程序(如数据库查询)触发资源消耗,如 DNS 放大攻击、邮件轰炸等。
-
-
反射型攻击
-
利用第三方(如 DNS 服务器、NTP 服务)将请求反射到目标,流量成倍放大。
-
3. 防范措施
-
基础防御
-
带宽扩容:增加网络带宽,提高承载能力。
-
过滤规则:配置防火墙,限制恶意流量的进入。
-
速率限制:对连接和请求速率进行限制。
-
-
进阶防御
-
DDoS 防护服务:使用第三方服务(如 Cloudflare、Akamai)进行流量清洗。
-
分布式架构:构建分布式系统,将流量分散到多个节点。
-
流量监控:实时检测异常流量并采取响应措施。
-
-
策略优化
-
黑白名单:阻止已知恶意 IP,允许可信来源。
-
CDN 缓存:利用内容分发网络缓解负载压力。
-
协议优化:如关闭不必要的 UDP 服务,启用 SYN Cookie。
-
4. 检测工具与技术
-
工具
-
Wireshark:抓包分析流量来源与特征。
-
Snort:开源入侵检测系统,可设置规则检测异常行为。
-
DDoS 攻击模拟工具(LOIC、HOIC 等,用于模拟防御测试)。
-
-
技术
-
流量行为分析:利用 AI 和机器学习模型检测异常流量模式。
-
日志分析:对服务器和网络设备日志进行实时监控。
-
5. 现状与挑战
-
现状
-
攻击规模持续扩大(流量级别已达 Tbps)。
-
攻击工具开源化、自动化,门槛降低。
-
IoT 设备的安全漏洞助长僵尸网络发展。
-
-
挑战
-
无法彻底防御:DDoS 攻击利用的是合法流量本身。
-
资源消耗不对等:攻击成本低,防御成本高。
-
技术更新迭代快,防御手段需实时升级。
-
工具名称 | 类型 | 功能特点 |
---|---|---|
LOIC | TCP/UDP/HTTP 攻击 | 开源工具,提供简单界面,常被用作初学者的攻击工具。 |
HOIC | HTTP 攻击 | 更强大的 HTTP 洪水攻击工具,可支持多线程与脚本定制化。 |
HULK | HTTP 攻击 | 专注于制造 HTTP 请求异常流量,针对 Web 服务器过载。 |
Slowloris | HTTP 攻击 | 通过保持大量半连接会话,耗尽目标服务器资源。 |
R-U-Dead-Yet (RUDY) | HTTP 攻击 | 利用低速 POST 请求消耗目标服务器资源。 |
Xerxes | HTTP 攻击 | 强调速度和流量制造,用于 HTTP 洪水攻击,主要面向 Linux 平台。 |
GoldenEye | HTTP 攻击 | 类似 HULK,主要用于 Web 服务器负载压力测试。 |
Botnets | 多协议攻击 | 利用大量受控僵尸设备,执行分布式的多协议攻击(HTTP、TCP、UDP)。 |
hping3 | TCP/UDP/ICMP 攻击 | 多功能网络测试工具,可用于生成定制的高频流量,模拟洪水攻击。 |
Tor's Hammer | HTTP 攻击 | 专为通过 Tor 网络执行匿名攻击设计的低速 POST 攻击工具。 |
UDP Unicorn | UDP 洪水攻击 | 创建大量伪造 UDP 数据包,压垮目标服务器的带宽和计算能力。 |
Mirai | IoT DDoS 攻击 | 利用 IoT 设备感染,执行大规模多协议攻击,涉及 DNS 和 HTTP 攻击等。 |
Mirai 是一个臭名昭著的 物联网(IoT)设备 DDoS 攻击工具,它利用大量被感染的设备发起大规模分布式拒绝服务攻击(DDoS)。Mirai 最初是由一些黑客创建并公开的,后来成为了物联网设备被用作僵尸网络的典型案例之一。它的影响力非常广泛,并且是现代物联网安全问题的一个重要警示。
Mirai 攻击流程与工作原理
-
设备感染(Botnet 构建)
-
Mirai 通过暴力破解常见的用户名和密码(例如:
admin/admin
、root/root
、user/user
)来攻击和感染易受攻击的物联网设备,如路由器、监控摄像头、打印机、智能家电等。 -
一旦设备的默认密码被破解,Mirai 就会将其添加到 僵尸网络(Botnet)中,并让其成为攻击的一部分。
-
这些物联网设备大多运行简单的操作系统,许多没有更新机制,因此它们成为了攻击者的理想目标。
-
13.SSRF(Server-Side Request Forgery)
(服务器端请求伪造)是一种网络安全攻击,攻击者通过利用服务器的漏洞,诱使服务器发起请求到攻击者控制的目标,通常是内部服务或外部资源。攻击者可以通过伪造请求来访问本应被保护的内部资源,或者绕过防火墙等安全机制进行其他恶意操作。
重点:假设一个 Web 应用允许用户输入 URL 并通过服务器请求该 URL 的内容。
SSRF 攻击原理
SSRF 攻击发生在 Web 应用程序中,攻击者可以通过精心构造的请求,诱导服务器向不应公开的内部网络或外部资源发送请求。攻击者不直接向目标发起请求,而是借用受害者服务器的权限,发起请求。
通常的攻击方式包括:
-
内部网络访问:攻击者可以利用服务器与内部网络之间的信任关系,访问仅能从服务器内部访问的服务或 API。
-
绕过防火墙:如果服务器能够访问外部资源而防火墙阻止了外部直接访问,攻击者可以通过服务器发起外部请求,绕过防火墙。
-
暴露敏感数据:攻击者可以伪造请求到服务器上的内部服务或云平台提供的元数据服务,获取敏感数据如数据库凭据、云存储配置信息等。
常见的 SSRF 攻击方式
-
访问内部服务: 攻击者可能会构造类似
http://localhost:8080
或http://127.0.0.1
的请求,使得服务器尝试访问其自身或内部的 Web 服务,而这些服务是无法从外部直接访问的。 -
扫描本地网络: 攻击者可以通过 SSRF 扫描受害服务器的内网,寻找其他可能存在漏洞的服务或设备。例如,攻击者可以尝试访问
http://10.0.0.1
或http://192.168.1.1
等私有 IP 地址,测试内网服务。 -
暴露云平台元数据服务: 云服务平台(如 AWS, GCP, Azure)通常提供元数据服务,存储服务器的配置信息和凭据。攻击者可以通过 SSRF 请求访问这些服务,获取敏感信息,如 API 密钥、存储凭据等。例如,AWS 的元数据服务位于
http://169.254.169.254
。 -
恶意 URL 请求: 攻击者可能通过构造特殊的 URL(如文件包含)来使服务器向外部攻击者控制的主机发送 HTTP 请求,从而泄露敏感信息。
SSRF 攻击的影响
-
内网扫描:攻击者可以通过 SSRF 扫描内部网络,寻找其他易受攻击的系统,或者寻找漏洞进行进一步攻击。
-
访问受限资源:攻击者可以访问服务器内部未公开的资源,进行数据窃取或破坏。
-
数据泄露:如果攻击者能够访问元数据服务,可能会获得存储凭据、API 密钥、认证令牌等敏感信息。
-
绕过防火墙:利用服务器发起请求,可以绕过防火墙和访问控制,导致外部和内部网络的安全控制失效。
SSRF 防护措施
-
输入验证和过滤:
-
对用户输入进行严格验证,确保请求 URL 仅指向允许的目标地址。
-
过滤掉可能导致服务器请求的敏感地址,如
localhost
、127.0.0.1
、169.254.169.254
等。 -
不允许用户控制请求头部中的
Host
字段。
-
-
限制出站请求:
-
将 Web 服务器的网络访问权限限制在最小范围,只允许其与必要的外部或内部服务通信。
-
阻止对本地地址(如
localhost
或127.0.0.1
)的请求。
-
-
使用白名单:
-
实现 URL 白名单机制,允许请求仅发送到已知的、安全的目标地址,拒绝所有未列入白名单的请求。
-
-
网络隔离:
-
使用虚拟网络或隔离的网络架构,将 Web 服务器和内部服务进行隔离,避免攻击者利用 SSRF 攻击访问内部网络。
-
-
云平台元数据服务保护:
-
对云环境中的元数据服务进行保护,限制访问权限,避免泄露敏感信息。
-
使元数据服务无法从外部或不可信的 IP 访问。
-
-
监控和日志分析:
-
监控出站流量,并对异常流量进行报警。特别是对于访问内网资源或外部 IP 的请求,进行详细审计。
-
分析日志中可疑的 SSRF 攻击模式,并及时响应。
-
如果没有适当的验证,攻击者可能会输入如下的恶意 URL:
http://localhost:8080/admin
服务器会将这个请求发送到 localhost
,即使 Web 应用本身并不允许用户访问本地服务。攻击者可能通过这种方式访问到内部管理员界面,或访问内部的敏感 API。
渗透测试流程印象记忆
-
信息收集:收集目标硬件设备的相关信息,包括设备型号、固件版本网络配置等。
-
漏洞扫描:使用漏洞扫描工具对硬件设备进行扫描,发现潜在的安全漏洞。
-
漏洞利用:根据发现的漏洞,尝试利用漏洞获取设备的控制权或敏感信后渗透测试:在成功获取设备控制权后,进行后渗透测试,如权限提升、横向移动、数据窃取等。
-
报告生成:将渗透测试的结果整理成报告,包括发现的漏洞、利用方法、风险评估等
安全方面的证书印象记忆
总的来说,OSEP>=OSCP>CISSP>国内相关安全证书
1. OSCP (Offensive Security Certified Professional)
证书介绍:
-
OSCP 是由 Offensive Security 提供的一个实战性渗透测试认证。
-
它侧重于渗透测试的实战能力,通过24小时的实战渗透测试考试,考核学员的能力。
-
OSCP 在全球网络安全领域具有很高的声誉。
考试特点:
-
实践性考试:24小时的实战渗透测试,考生在实际环境中使用各种工具和技术获取系统权限。
-
无监考:考试远程进行,考生可在家进行,但需要遵守严格的考试规则。
-
考试要求:必须在规定时间内完成渗透测试任务,并提交报告。
-
1、需要办理⼀个护照,证明你的合法身份;
-
2、然后通过特定VPN,远程连接环境;
-
3、24h内,房间内不允许有其他电⼦设备;
-
4、需要摄像头监控考试过程;
-
5、电脑端不允许有远程控制软件;
-
6、有⼯具使⽤的限制。
-
全球认可:OSCP认证在全球⽹络安全⾏业中享有很⾼的声誉,持有OSCP证书的专业⼈⼠通常被认 为具备了⾼级的渗透测试能⼒。
考点:
-
信息收集:网络侦查,端口扫描,服务识别等。
-
漏洞发现:SQL注入,缓冲区溢出,文件上传漏洞等。
-
漏洞利用:掌握不同漏洞的利用方法来获取系统权限。
-
后渗透测试:权限提升,横向移动,数据窃取等。
练习方法:
-
学习基础知识:网络、操作系统、数据库等基础知识,了解常见漏洞类型和利用方法。
-
搭建实验环境:使用虚拟机搭建各种渗透环境进行实践操作。
-
参加培训课程:如Offensive Security的 PWK 课程。
-
练习靶场:通过在线渗透测试靶场(如Hack The Box,vulnhub等)进行练习。
总结:
-
oscp的难度⼤,得达到70%的准确率,涉及全⾯,国际上认可度⾼
2. OSEP (Offensive Security Experienced Penetration Tester)
证书介绍:
-
OSEP 是由 Offensive Security 提供的高级渗透测试认证。
-
适合具备深厚底层知识和高级编程技能的渗透测试人员,要求独立发现和利用软件漏洞。
-
认证内容包括绕过安全防御、客户端滥用、进程注入、Active Directory攻击等。
考试特点:
-
考试格式:48小时的实战渗透测试评估,考察学员在复杂场景中应用高级渗透测试技巧。
-
课程对应:OSEP认证对应的课程是PEN-300。这个课程是⾃ paced的,旨在帮助学习者提⾼他 们在道德⿊客和漏洞评估⽅⾯的专业知识。完成课程后,学习者可以参加OSEP认证考试
-
认证价值:获得OSEP认证的专业⼈⼠被认为具备⾼级渗透测试技能,这些技能在保护组织免受复杂 威胁⽅⾯⾮常有价值。因此,OSEP认证专家在⽹络安全领域中备受追捧
考点:
-
逆向工程:反汇编和调试分析软件的内部结构。
-
漏洞挖掘:静态分析和动态分析漏洞。
-
漏洞利用开发:编写漏洞利用代码控制目标系统。
-
高级编程:熟悉C/C++/Python等编程语言,进行底层编程。
练习方法:
-
学习逆向工程:掌握反汇编、调试等技术。
-
实践漏洞挖掘:使用工具(如Fuzzing工具)进行漏洞挖掘实践。
-
开发漏洞利用代码:根据挖掘的漏洞编写利用代码。
总结:
-
osep的难度⼤,得达到100%的准确率(10题),涉及免杀,国际上认可度 ⾼
3. CISSP (Certified Information Systems Security Professional)
证书介绍:
-
CISSP 是国际上广泛认可的高级信息安全管理认证,适用于信息安全管理人员和专业人士。
-
该证书涵盖了信息安全的各个领域,包括安全管理、密码学、网络安全等。
考试特点:
-
考试内容:包含10个领域,如安全管理、密码学、网络安全、软件开发等。
-
考试形式:以选择题形式进行,测试学员在理论和实践中的知识掌握情况。
考点:
-
安全管理:包括安全策略、风险管理、合规性等。
-
访问控制:身份验证、授权、访问控制模型等。
-
密码学:加密算法、密钥管理、数字签名等。
-
网络安全:网络架构、防火墙、入侵检测等。
-
软件开发工程:安全开发生命周期、代码审查等。
练习方法:
-
学习官方教材:阅读CISSP官方教材,掌握各领域的知识。
-
参加培训课程:参加培训机构的课程,做练习题以增强理论知识。
-
参与学习小组:与小组成员交流,共同学习和讨论。
总结:
-
涵盖信息安全的各个领域,为理论考试,70%的正确率(1000题)
硬件设备的潜在漏洞分析与渗透测试印象记忆
硬件设备的处理器漏洞是指存在于硬件处理单元(CPU、GPU等)中的设计或实现缺陷,可能会被攻击者利用来执行未授权操作、窃取数据或绕过系统安全措施。这些漏洞通常是由于硬件设计、指令集或微架构的缺陷所导致的,通常比软件漏洞更难发现和修复,因为它们与硬件的底层操作密切相关。
硬件处理器漏洞
1. Meltdown (2018)
Meltdown是一个严重的硬件漏洞,影响现代 Intel 处理器。该漏洞允许攻击者绕过操作系统的内存保护,直接访问内核内存区域,进而窃取敏感数据(如密码、密钥等)。即使没有访问权限,攻击者也能够通过利用 CPU 的推测执行机制来绕过内存隔离。
处理方法:
-
操作系统更新:操作系统厂商(如 Linux、Windows)发布了补丁,修复了内核空间和用户空间之间的访问漏洞。
-
硬件更新:Intel 推出了带有微架构更新的处理器版本,以减少 Meltdown 漏洞的影响。
-
禁用特性:禁用一些推测执行优化,如 KPTI(Kernel Page Table Isolation)。
2. Spectre (2018)
Spectre是与 Meltdown 类似的漏洞,但它影响了多种现代处理器(包括 Intel、AMD 和 ARM)。Spectre 利用了处理器的指令预测机制,允许攻击者通过时间测量等技术推测出内存中的敏感信息。Spectre 的漏洞比 Meltdown 更为复杂,因为它不仅限于操作系统层面,应用程序也可能成为攻击目标。
处理方法:
-
软件补丁:操作系统和应用程序厂商发布了补丁,限制了恶意代码的执行权限,并增强了执行路径的随机性。
-
硬件更新:新的处理器架构(如 Intel Cascade Lake)对硬件进行了修复,防止 Spectre 攻击。
-
指令集调整:处理器厂商可能会通过引入新的指令集特性来避免推测执行带来的安全风险。
3. Rowhammer (2014)
Rowhammer 是一种针对动态随机存储器(DRAM)的攻击技术,通过反复访问内存的特定行,导致物理内存位翻转,从而篡改内存数据。攻击者可以利用这一漏洞来破坏数据的完整性或提升特权。
处理方法:
-
硬件修复:一些 DRAM 制造商在生产过程中加入了错误校正码(ECC),来检测并修复内存位翻转。
-
操作系统级防护:操作系统可以使用内存访问模式监控技术,阻止暴力读写内存造成的硬件故障。
4. ZombieLoad (2019)
ZombieLoad 是一个影响 Intel 处理器的漏洞,允许攻击者通过读取处理器的内存缓存来窃取敏感数据。ZombieLoad 是通过 CPU 的缓存系统(特定于处理器微架构)来实现数据泄漏的。
处理方法:
-
微码更新:Intel 发布了微码更新,限制了攻击者利用处理器缓存的能力。
-
操作系统更新:操作系统厂商也发布了补丁,以减少漏洞的利用风险。
5. Foreshadow (2018)
Foreshadow 漏洞影响了 Intel SGX(Software Guard Extensions)技术,该技术用于保护敏感数据的隔离和加密。Foreshadow 允许攻击者通过暴力破解的方法访问 SGX 内部密钥和机密数据。
处理方法:
-
硬件补丁:Intel 发布了针对该漏洞的微码更新,以修复 SGX 的设计缺陷。
-
操作系统更新:修复了操作系统中可能导致该漏洞利用的部分功能。
6. SpectreNG (2019)
SpectreNG(Spectre Next Generation)是一组新发现的 Spectre 类漏洞,影响了多种处理器架构。SpectreNG 漏洞可能允许攻击者通过侧信道攻击窃取敏感信息,如加密密钥、密码等。
处理方法:
-
微架构修复:新的处理器版本(如 Intel 和 AMD)针对这些漏洞进行了修复。
-
操作系统和软件更新:发布了针对 SpectreNG 的操作系统补丁和软件防护措施。
-
强化硬件特性:引入了新硬件特性,降低了通过侧信道攻击获取敏感数据的可能性。
7. L1 Terminal Fault (L1TF)
L1TF 是一个影响 Intel 处理器的漏洞,它允许攻击者通过侧信道攻击从 CPU 的 L1 缓存中窃取敏感数据,如密钥和凭据。该漏洞利用了处理器的推测执行和缓存的设计缺陷。
处理方法:
-
微码更新:Intel 发布了针对 L1TF 的微码更新,限制了处理器缓存的访问。
-
操作系统更新:操作系统发布了补丁来限制用户和内核空间之间的内存访问,减少攻击的成功率。
8. Speculative Store Bypass (SSB)
SSB 漏洞影响了部分处理器,攻击者利用该漏洞可能绕过数据安全机制,访问到被保护的内存区域。此漏洞与推测执行和乱序执行有关。
处理方法:
-
操作系统修复:通过操作系统补丁,禁用了部分影响推测执行的指令,并通过软件手段减少攻击面。
-
硬件修复:针对该漏洞的微架构更新,强化了硬件层面的数据保护。
利用 Meltdown 和 Spectre 漏洞:C/C++ 语言
Meltdown 和 Spectre 漏洞依赖于处理器的推测执行和缓存机制。攻击者可以通过以下手段触发推测执行,进而泄漏内存数据。
C/C++ 代码示例(Spectre 漏洞):
#include <stdio.h> // 引入标准输入输出库,用于输出调试信息 #include <stdint.h> // 引入标准整数类型库,定义了标准整数类型,如 uint64_t 等 #include <x86intrin.h> // 引入 x86 指令库,提供了与特定硬件(如处理器)相关的内联汇编支持 #define CACHE_HIT_THRESHOLD 100 // 定义一个缓存命中的阈值,用于侧信道攻击的缓存行为分析 // 模拟分支预测的函数 void spectre_attack(int *arr1, int *arr2, size_t size) { int i, j; // 定义变量 i 和 j,用于循环 volatile int x = 0; // 声明一个变量 x,volatile 告诉编译器不优化此变量 // 遍历 arr1 数组 for (i = 0; i < size; i++) { // 分支预测 - 通过 arr1[i] 的值,预测是否访问 arr1[i] 索引值 if (arr1[i] < size) { // 分支条件:如果 arr1[i] 小于数组的大小 // 通过缓存侧信道泄漏敏感数据 x = arr2[arr1[i] * 512]; // 通过 arr1[i] 的值间接访问 arr2 数组的敏感数据 } } } int main() { int arr1[256]; // 声明 arr1 数组,包含 256 个整数 int arr2[256 * 512]; // 声明 arr2 数组,包含 256 * 512 个整数,模拟更大的内存区域 // 初始化 arr1 和 arr2 数组 for (int i = 0; i < 256; i++) { arr1[i] = i; // 将 arr1 的每个元素初始化为索引值 i for (int j = 0; j < 512; j++) { arr2[i * 512 + j] = 0; // 将 arr2 中的每个元素初始化为 0 } } // 执行 Spectre 攻击 spectre_attack(arr1, arr2, 256); // 调用 spectre_attack 函数,进行 Spectre 漏洞攻击 return 0; // 返回 0,结束程序 }
解释:
-
Spectre 漏洞通过创建分支预测错误来触发推测执行。攻击者利用分支预测来读取本不应访问的内存区域,并通过缓存的访问模式来推测敏感数据。
-
在上述代码中,
spectre_attack
函数通过访问arr1
数组中的索引,诱导处理器执行错误的内存访问预测,从而泄漏出arr2
数组中的数据。
###
网络设备漏洞,建议用思科模拟器Cisco Packet Tracer进行网路拓扑图配置
网络设备漏洞指的是与网络硬件(如路由器、交换机、防火墙、无线接入点等)相关的安全漏洞,这些漏洞可能会导致未经授权的访问、数据泄露、拒绝服务(DoS)攻击、设备控制等问题。
路由器默认密码和凭证管理漏洞
许多网络设备出厂时设置了默认用户名和密码。如果管理员没有及时更改这些默认凭证,攻击者可以轻松利用这些默认密码进行访问,从而控制设备或访问敏感网络信息。
-
例子:2014年,某些型号的Linksys、Netgear、TP-Link路由器存在默认用户名和密码(如"admin"/"admin"或"admin"/"password")。攻击者可以通过扫描设备的IP地址,并尝试默认凭证来获得设备管理权限,进而修改路由器配置,窃取网络流量或执行恶意操作
交换机MAC地址表溢出(MAC Address Table Overflow)
交换机作为网络中不可或缺的核心设备,负责数据包的转发和路由。
-
例子:攻击者通过发送大量伪造的MAC地址信息,使交换机的MAC地址表溢出。一旦溢出,交换机便进入广播模式,所有的数据流量将被转发到所有端口,攻击者可以在其控制的端口上窃取数据包,这种攻击被称为“MAC Flooding”。
MAC Flooding攻击是一种典型的网络层攻击,通常针对以太网交换机(Layer 2交换机)。攻击者通过向交换机发送大量伪造的MAC地址信息,导致交换机的MAC地址表溢出。结果,交换机不能再正确地根据MAC地址表进行数据转发,因此会将接收到的所有数据包广播到所有端口,导致网络拥塞,并使攻击者能够通过其控制的端口接收到所有数据包。这种攻击本质上是通过耗尽交换机的资源(MAC表),使交换机进入“广播模式”。
攻击原理:
交换机通过维护一个MAC地址表来进行数据包转发,该表记录了每个端口与之对应的MAC地址。当交换机接收到一个数据包时,它会根据目标MAC地址查找表中对应的端口,并将数据包发送到该端口。如果目标MAC地址不在表中,交换机会广播该数据包到所有端口。
MAC Flooding攻击的关键步骤如下:
-
交换机的MAC表有限:交换机的MAC地址表是有限的,每个交换机只能存储一定数量的MAC地址。
-
攻击者发送大量伪造的MAC地址:攻击者通过发送大量伪造的MAC地址,迅速填满交换机的MAC地址表。
-
MAC表溢出,交换机进入广播模式:当交换机的MAC地址表满时,它无法为新地址分配空间,导致交换机进入广播模式,将所有收到的数据包广播到每个端口。
-
攻击者监听广播流量:由于广播流量包含了大量交换机网络中的数据,攻击者可以利用这一点来截获敏感信息,或者通过重放数据包等方式发起其他攻击。
攻击过程:
-
攻击者通过扫描和伪造MAC地址,利用脚本或工具向交换机发送大量数据包,带有虚假的源MAC地址。每个数据包都会使交换机更新其MAC地址表。
-
交换机的MAC表逐渐被填满,当表满时,交换机会停止正常的转发过程。
-
一旦表满,交换机会进入广播模式,导致所有数据包被广播到所有端口,攻击者可以通过监听广播流量来获取网络中传输的数据。
Scapy伪造大量数据包以填充交换机的MAC地址表。
from scapy.all import Ether, ARP, sendp def mac_flood(target_ip, interface): # 生成大量的伪造ARP包 while True: eth = Ether(src="00:11:22:33:44:55", dst="ff:ff:ff:ff:ff:ff") arp = ARP(op=1, psrc=target_ip, hwdst="ff:ff:ff:ff:ff:ff") packet = eth/arp sendp(packet, iface=interface) # 调用函数 mac_flood("192.168.0.1", "eth0")
Hping3:虽然Hping3主要用于发送TCP/IP数据包,但也可以用来伪造大量的数据包进行MAC Flooding。
hping3 -a 00:11:22:33:44:55 --flood -S <target_ip>
Macof(由dsniff工具集提供):Macof是一个专门用于MAC Flooding的工具。它通过伪造大量的以太网帧向交换机发送大量数据,从而溢出MAC地址表。
macof
Wireshark可以使用过滤器筛选广播流量。 eth.addr == ff:ff:ff:ff:ff:ff
tcpdump 捕获所有广播包: tcpdump ether broadcast 或者捕获指定端口的广播流量: tcpdump port 67 and ether broadcast
防御措施:
启用静态MAC地址表:如果交换机只需要与特定的设备通信,可以为这些设备配置静态MAC地址。这可以防止MAC Flooding攻击,因为静态MAC地址不会被覆盖。
使用VLAN:通过将网络划分为多个VLAN,可以减少MAC表的规模,从而减轻MAC Flooding攻击的影响。
定期监控交换机的流量:通过监控交换机端口的流量和MAC地址表的大小,可以及时发现异常的网络行为,从而及时采取措施应对潜在的MAC Flooding攻击。
VLAN跳跃(VLAN Hopping)
VLAN Hopping(VLAN 跳跃攻击)是一种网络攻击方式,通过绕过 VLAN 的隔离,攻击者可以使其网络流量穿越多个 VLAN,从而访问本不应允许访问的网络资源。VLAN(虚拟局域网)是用于将一个物理网络划分为多个逻辑网络的技术,目的是隔离网络流量,提高安全性和性能。
VLAN Hopping 攻击原理
VLAN Hopping 攻击的核心原理是在网络交换机的 VLAN 隔离机制上利用其漏洞,从一个 VLAN 跳到另一个 VLAN。攻击者可以通过多种方式实现 VLAN Hopping,常见的攻击方法包括 Double Tagging 和 Switch Spoofing。
1. Double Tagging (双标签攻击)
Double Tagging 是一种常见的 VLAN Hopping 攻击方式。它利用了 VLAN 标记的特点,发送一个带有两个 VLAN 标签的帧,以便在转发过程中,交换机只看到第一个 VLAN 标签,从而误认为数据帧属于其他 VLAN。
攻击过程:
-
双 VLAN 标签: 正常情况下,以太网帧只有一个 VLAN 标签(TPID 字段)。在 Double Tagging 攻击中,攻击者将两个 VLAN 标签嵌套在数据帧中。第一个标签指示攻击者想要跳跃到的目标 VLAN,第二个标签是攻击者自己所在的 VLAN。
-
交换机处理: 在一个有多个交换机的网络中,第一个交换机会仅去除第一个标签(即攻击者所在的 VLAN),而将第二个标签(目标 VLAN)传递给下一个交换机。这个过程会让目标交换机误认为数据包应该属于目标 VLAN,从而允许攻击者访问该 VLAN。
-
成功攻击: 攻击者通过这种方式可以“跳跃”到其他 VLAN,实现跨 VLAN 的访问。
攻击示例:
假设攻击者在 VLAN 10 中,目标是访问 VLAN 20。
-
攻击者构造的帧会包含两个标签:
-
第一个标签(outer tag):VLAN 10
-
第二个标签(inner tag):VLAN 20
-
-
当交换机接收到该帧时,它会首先删除第一个标签(VLAN 10),然后将帧转发到目标交换机。目标交换机只看到 VLAN 20 标签,从而将数据帧错误地转发到 VLAN 20 中的设备。
2. Switch Spoofing (交换机欺骗)
Switch Spoofing 是另一种 VLAN Hopping 攻击方法,它通过伪装成交换机的方式,使攻击者能够获得与交换机之间的 VTP(VLAN Trunking Protocol)交换数据的能力。通过这种方式,攻击者可以将自己伪装成交换机并加入到 trunk 链路中,从而让攻击者能够访问多个 VLAN。
攻击过程:
-
攻击者伪装: 攻击者通过配置其设备(如计算机)为交换机模式,模拟交换机的行为。攻击者的设备会启动 trunk 模式(即允许多个 VLAN 的流量通过该连接)。
-
Trunk 连接: 攻击者的设备与交换机之间建立一个 trunk 连接。由于交换机无法区分真正的交换机和伪装的设备,攻击者的设备可以通过该 trunk 连接访问多个 VLAN。
-
成功攻击: 攻击者能够接收到属于多个 VLAN 的流量,从而“跳跃”到其他 VLAN。
防御 VLAN Hopping 攻击的措施
-
禁用未使用的 VLAN:禁用交换机端口上的未使用 VLAN,防止攻击者利用空闲的 VLAN 发起攻击。
-
限制 trunk 端口:只有真正需要的端口应设置为 trunk 模式,且应使用基于端口的 VLAN 限制。所有不需要进行 VLAN 传输的端口应禁用 trunk。
-
VLAN 访问控制列表(ACL):在交换机上设置 VLAN ACL(VACL),限制不同 VLAN 之间的通信,从而减少攻击者能够访问的网络范围。
-
端口安全性:使用交换机端口安全功能(例如,静态绑定 MAC 地址),限制每个端口可以使用的设备数量,避免未授权设备接入网络。
-
启用 802.1Q 保护功能:部分交换机支持 VLAN 保护功能(例如 Cisco 交换机上的 VTPv3),可以避免 VLAN 配置被未经授权的设备篡改。
-
监控和告警:持续监控网络流量,并配置告警机制,检测潜在的 VLAN Hopping 攻击行为,例如通过分析异常的 VLAN 流量模式。
量子安全印象记忆
量子安全(Quantum Security)指的是针对量子计算机可能对当前加密算法和信息安全系统的威胁,研究和设计出能够抵抗量子计算攻击的加密方法和技术。随着量子计算技术的进展,量子计算机能够在某些特定计算任务上远超传统计算机,尤其是在破解现有的公钥加密算法(如 RSA 和 ECC)方面,因此,量子安全成为了信息安全领域的重要课题。
量子计算的威胁
量子计算通过利用量子力学的原理(如叠加态、纠缠态和量子并行性),能够在一些计算任务上实现指数级别的加速。量子计算对现有的加密算法构成了威胁,尤其是对于基于大数分解问题(如 RSA)和离散对数问题(如 ECC)等传统公钥加密方法。
-
Shor 算法:Shor 算法可以有效地解决大数分解问题和离散对数问题,这使得 RSA、ECC 和 DH(Diffie-Hellman)等加密协议在量子计算面前不再安全。
-
Grover 算法:Grover 算法通过量子并行性加速了对称加密算法的暴力破解,但其加速的程度只有平方级(即对称密钥长度需要增加一倍),因此,尽管对对称加密构成一定威胁,但相对影响较小。
现有加密算法失效:许多经典的加密算法,如 RSA 和 ECC,依赖于量子计算机能够快速解决某些数学难题。量子计算机的出现可能使这些加密算法不再安全。
密钥长度问题:为了在量子计算面前保持安全,传统的对称加密方法(如 AES)可能需要更长的密钥长度,这给密钥管理和性能带来了挑战。
Shor 算法简介
Shor 算法是一种量子算法,用于在多项式时间内因数分解整数,或者说,它能够高效地破解基于大数分解问题的加密算法(如 RSA)。Shor 算法通过量子计算的并行性来加速经典的因数分解过程,比传统的经典算法(如试除法、二分法等)快得多。
RSA 加密破解过程(量子计算)
假设我们要破解 RSA 公钥加密中的私钥,过程可以分为以下几个步骤:
1. RSA 公钥加密系统简介
RSA 加密的安全性基于大数分解难题。其公钥由两个大质数的乘积 n = p * q
生成,其中 p
和 q
是两个大质数,n
是 RSA 公钥的一部分。加密操作是通过公钥 e
和 n
完成的:
-
公钥:
(e, n)
-
私钥:
(d, n)
其中,e
是公钥指数,d
是私钥指数,n
是两个大质数的乘积。
2. Shor 算法的应用
Shor 算法能够快速找到 n
的两个质因数 p
和 q
。这是因为,Shor 算法利用量子计算的性质,特别是通过量子傅里叶变换和周期性检测,来找到数 n
的质因数。算法步骤如下:
-
选取一个随机数
a
,满足1 < a < n
。 -
计算最大公约数
gcd(a, n)
。如果gcd(a, n)
大于 1,那么a
和n
的公因数已经找到了(即p
或q
)。 -
如果
gcd(a, n)
等于 1,Shor 算法则使用量子傅里叶变换计算一个周期
r
,使得:
-
a^r mod n
返回到1
(此时r
为周期)。
-
-
找到周期后,计算因数
-
使用
r
来计算两个质因数:
-
p = gcd(a^(r/2) - 1, n)
-
q = gcd(a^(r/2) + 1, n)
通过这种方式,Shor 算法能够在多项式时间内找到n
的质因数。
-
-
3. 破解 RSA 密钥
一旦通过 Shor 算法找到了 n
的两个质因数 p
和 q
,可以计算出 RSA 的私钥 d
。这时,只需要进行以下步骤:
-
计算
ϕ(n) = (p-1)(q-1)
,其中ϕ(n)
是欧拉函数。 -
使用扩展欧几里得算法计算私钥指数
d
,使得d * e ≡ 1 (mod ϕ(n))
。
有了私钥 d
和公钥 n
,就可以对加密信息进行解密。
破解步骤演示
假设我们有一个 RSA 公钥 (e, n)
:
-
公钥
e = 65537
(常见的公钥指数) -
n = 119249
(RSA 公钥的一部分,假设为一个较小的数,实际情况中n
会非常大)
-
随机选取
a
:-
选择一个
a = 2
,并计算gcd(2, 119249)
。 -
如果
gcd(a, n)
不等于 1,说明我们已经找到了一个因数。
-
-
计算周期
r
:-
假设
a^r mod n = 1
,使用量子计算方法计算周期r
。 -
假设周期
r = 12
,然后计算:
-
p = gcd(2^(12/2) - 1, 119249)
。 -
q = gcd(2^(12/2) + 1, 119249)
。
-
-
-
计算因数
p
和q
:-
使用
r = 12
,计算出p = 7
和q = 17
,这两个数是n = 119249
的质因数。
-
-
计算私钥
d
:-
使用
p
和q
,计算ϕ(n) = (7-1) * (17-1) = 96
。 -
使用扩展欧几里得算法求解
d
,使得d * 65537 ≡ 1 (mod 96)
,得到d = 77
。
-
-
解密消息:
-
拿到私钥
(d, n)
,就可以使用d = 77
和n = 119249
来解密加密的消息。
-
版权声明:本文标题:我重生了,回到了18岁,这一世一定要从0开始成为极客之渗透安全扫盲(下) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1733988839h1651474.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论