kamithi/SOC-analyst-home-labs

GitHub: kamithi/SOC-analyst-home-labs

一个结构化的 SOC 分析师家庭实验室文档,指导用户搭建隔离的虚拟安全环境,并通过 Splunk 进行真实安全事件的模拟检测与响应分析。

Stars: 1 | Forks: 0

🛡️ SOC Analyst 家庭实验室 ![实验室状态](https://img.shields.io/badge/Labs-3%20of%207%20Complete-blue) ![MITRE](https://img.shields.io/badge/MITRE%20ATT%26CK-Mapped-red) ![Splunk](https://img.shields.io/badge/SIEM-Splunk%20Enterprise-green) ## 📋 目录 - [实验室概述](#lab-overview) - [环境](#environment) - [设置指南](#setup-guide) - [阶段 1:VMware Workstation Pro](#phase-1-vmware-workstation-pro) - [阶段 2:Kali Linux VM](#phase-2-kali-linux-vm) - [阶段 3:Windows 10 VM](#phase-3-windows-10-vm) - [阶段 4:Splunk Enterprise](#phase-4-splunk-enterprise) - [阶段 5:Splunk Universal Forwarder](#phase-5-splunk-universal-forwarder) - [阶段 6:网络验证](#phase-6-network-verification) - [实验室练习](#labs) - [实验 1:暴力破解检测](#lab-1--brute-force-detection) - [实验 2:网络侦察与端口扫描检测](#lab-2--network-reconnaissance--port-scan-detection) - [实验 3:Beaconing / C2 检测](#lab-3--beaconing--c2-detection) - [MITRE ATT&CK 映射](#mitre-attck-mapping) - [关键事件 ID](#key-event-ids) - [作者](#author) ## 🎯 实验室概述 本家庭实验室通过模拟真实世界的系统和场景,提供网络安全领域的实践经验。在整个设置过程中,您将操作虚拟机、网络和安全工具,以了解如何检测和管理威胁。 最终,您将掌握以下实用技能: - **系统配置**与虚拟化 - **日志分析**与 SIEM 查询编写 (SPL) - **事件响应**生命周期 (检测 → 分类 → 遏制 → 调查 → 升级 → 补救) - 使用 Windows 事件日志和 Sysmon 进行**威胁检测** - **MITRE ATT&CK 框架**映射 ### 实验室路线图 | # | 场景 | 关键技能 | MITRE | |---|----------|----------|-------| | 1 | [暴力破解检测](#lab-1--brute-force-detection) | 失败登录分析,阈值告警 | T1110.001 | | 2 | [网络侦察](#lab-2--network-reconnaissance--port-scan-detection) | 端口扫描检测,SYN 分析 | T1046, T1595 | | 3 | [C2 Beaconing](#lab-3--beaconing--c2-detection) | 时间分析,连接模式 | T1071 | | 4 | 权限提升检测 | 进程分析,token 操控 | T1134 | | 5 | 恶意软件检测 | 行为分析,哈希校验 | T1055 | | 6 | 规则调优 | 减少误报,阈值优化 | — | | 7 | 钓鱼分析 | 电子邮件取证,URL 分析 | T1566 | ## 🖥️ 环境 | 组件 | 详情 | |-----------|---------| | **宿主机** | 物理笔记本电脑/台式机 (Windows 10/11) | | **Hypervisor** | VMware Workstation Pro 25.x | | **攻击端 VM** | Kali Linux (VM 1) | | **目标 VM** | Windows 10 (VM 2) | | **SIEM** | Splunk Enterprise (位于宿主机) | | **Forwarder** | Splunk Universal Forwarder (位于 Win10) | | **EDR** | Microsoft Sysmon (位于 Win10) | ### 网络架构 ``` +-----------------------------------------+ | HOST MACHINE | | +---------------------------------+ | | | Splunk Enterprise | | | | http://localhost:8000 | | | +---------------------------------+ | | | | | VMnet1 (Host-only) | | 192.168.x.0/24 | | | | | | +----+----+ +----+----+ | | | Kali | | Win10 | | | | Linux |<--> | Target | | | | Attacker| | Victim | | | +---------+ +--------+ | +-----------------------------------------+ ``` ## 🔧 设置指南 ### 前置条件 | 要求 | 规格 | 备注 | |-------------|---------------|-------| | 宿主机 RAM | 16–32 GB | 为 VM 分配 12–16 GB | | 存储 | 150+ GB 可用空间 | Kali: 80 GB, Win10: 60 GB | | CPU | 4+ 核并支持虚拟化 | BIOS 中启用 Intel VT-x / AMD-V | | OS | Windows 10/11 宿主机 | 需要管理员权限 | | 网络 | 需要互联网下载 | VM 使用隔离网络 | ### 阶段 1:VMware Workstation Pro #### 步骤 1 — 下载 VMware VMware 现归 Broadcom 所有。所有下载均需免费的 Broadcom 账号。 1. 访问:[https://support.broadcom.com](https://support.broadcom.com) 2. 注册免费账号 (验证电子邮件) 3. 导航至:**My Downloads → VMware Workstation Pro** 4. 选择适用于 Windows 的 **25.x** (最新稳定版) 5. 下载 `.exe` 安装程序 #### 步骤 2 — 安装 VMware 以管理员身份运行安装程序。使用默认设置,但以下例外: - 取消勾选 **"Join the VMware Customer Experience..."** 以保护隐私 - 首次启动时,选择 **"I want to use VMware Workstation 25 for Personal Use"** (免费层级 — 全功能版) #### 步骤 3 — 配置虚拟网络 打开 **Edit → Virtual Network Editor** (点击 "Change Settings" 并批准 UAC)。 确认存在以下网络: | 名称 | 类型 | 子网 | 用途 | |------|------|--------|---------| | VMnet1 | Host-only | 192.168.x.0 | 隔离的攻击实验网络 | | VMnet8 | NAT | 192.168.y.0 | 用于更新的互联网访问 | #### 步骤 4 — 设置内存偏好 **Edit → Preferences → Memory** - 预留内存:所有运行中的 VM 总计 **12–16 GB** **Edit → Preferences → Workspace** - 默认 VM 位置:`C:\Users\YourName\Documents\Virtual Machines\` #### 步骤 5 — 验证 VMware 服务 ``` Get-Service -Name "VMware*" | Select-Object Name, Status ``` 所有关键服务均应显示为 **Running**。 ### 阶段 2:Kali Linux VM #### 步骤 6 — 下载 Kali Linux ISO 1. 访问:[https://www.kali.org/get-kali/#kali-installer-images](https://www.kali.org/get-kali/#kali-installer-images) 2. 下载 **64-bit Installer Image** 3. 验证 SHA256 校验和: ``` Get-FileHash "kalilinux-2025.2-installer-amd64.iso" -Algorithm SHA256 ``` #### 步骤 7 — 创建 Kali VM **File → New Virtual Machine → Typical** | 设置 | 值 | |---------|-------| | 安装程序光盘映像 | 浏览至 Kali ISO | | 客户机 OS | Linux → Debian 12.x 64-bit | | VM 名称 | `kali-attacker` | | 位置 | `C:\Users\YourName\Documents\Virtual Machines\Kali Linux\` | | 磁盘大小 | 80 GB (存储为单个文件) | | 内存 | 4096 MB | | 处理器 | 2 核,每个处理器 2 核 | | 网络 | NAT (用于安装/更新) | #### 步骤 8 — 安装 Kali Linux 启动 VM 并选择 **Graphical Install**: | 设置 | 值 | |---------|-------| | 语言 | English | | 位置 | 您所在的地区 | | 键盘 | American English | | 主机名 | `kali-attacker` | | 域 | (留空) | | 用户名 | 您的名称 | | 密码 | 强密码 (至少 12 个字符) | | 分区 | Guided — use entire disk → All files in one partition | | 软件 | ✅ `top10tools` ✅ `SSH server` | #### 步骤 9 — 更新系统并安装 VMware Tools ``` sudo apt update && sudo apt upgrade -y sudo apt install open-vm-tools open-vm-tools-desktop sudo reboot ``` #### 步骤 10 — 验证关键工具 ``` nmap --version hydra -h | head -5 msfconsole --version wireshark --version ``` 安装任何缺失的工具: ``` sudo apt install -y nmap wireshark metasploit-framework hydra netcat-traditional ``` ### 阶段 3:Windows 10 VM #### 步骤 11 — 创建 Windows 10 ISO 1. 访问:[https://www.microsoft.com/software-download/windows10](https://www.microsoft.com/software-download/windows10) 2. 下载 **Media Creation Tool** 3. 以管理员身份运行 → **"Create installation media" → ISO file** 4. 保存至:`C:\Users\YourName\Documents\Virtual Machines\Win10-Target\` #### 步骤 12 — 创建 Windows 10 VM **File → New Virtual Machine → Typical** | 设置 | 值 | |---------|-------| | 安装程序光盘映像 | 浏览至 Windows ISO | | 客户机 OS | Microsoft Windows → Windows 10 x64 | | VM 名称 | `Win10-Target` | | 位置 | `C:\Users\YourName\Documents\Virtual Machines\Win10-Target\` | | 磁盘大小 | 60 GB (存储为单个文件) | | 内存 | 4096 MB | | 处理器 | 2 核,每个处理器 2 核 | | 网络 | **Host-only** | #### 步骤 13 — Windows OOBE 设置 | 设置 | 值 | |---------|-------| | 区域 | United States | | 键盘 | US | | 登录 | 点击 **"Domain join instead"** (创建本地账号) | | 全名 | `labuser` | | 密码 | (为 RDP 设置一个密码) | | 隐私 | 将 **所有开关关闭 (ALL toggles OFF)** | #### 步骤 14 — 安装 VMware Tools 在 VMware 菜单中:**VM → Install VMware Tools** 在 Win10 VM 内:文件资源管理器 → DVD 驱动器 (D:) → Setup → Next → Next → Install → 重启 #### 步骤 15 — 配置 Windows 10 **重命名计算机:** ``` Rename-Computer -NewName "Win10-Target" -Restart ``` **启用 RDP:** ``` Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0 Enable-NetFirewallRule -DisplayGroup "Remote Desktop" ``` **创建脆弱的受害者账号 (用于暴力破解实验):** ``` New-LocalUser -Name "victim" -Password (ConvertTo-SecureString "Password123" -AsPlainText -Force) -FullName "Lab Victim" -Description "Weak account for brute-force lab" Add-LocalGroupMember -Group "Remote Desktop Users" -Member "victim" Add-LocalGroupMember -Group "Users" -Member "victim" ``` #### 步骤 16 — 安装 Sysmon ``` New-Item -ItemType Directory -Path "C:\Tools" -Force Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Sysmon.zip" -OutFile "C:\Tools\Sysmon.zip" Expand-Archive -Path "C:\Tools\Sysmon.zip" -DestinationPath "C:\Tools\Sysmon\" cd C:\Tools\Sysmon\ .\Sysmon64.exe -accepteula -i ``` 验证: ``` Get-Service Sysmon64 ``` #### 步骤 17 — 启用审计日志 ``` auditpol /set /subcategory:"Logon" /success:enable /failure:enable auditpol /set /subcategory:"Credential Validation" /success:enable /failure:enable ``` 验证: ``` auditpol /get /category:* ``` ### 阶段 4:Splunk Enterprise #### 步骤 18 — 下载并安装 Splunk 1. 访问:[https://www.splunk.com/en_us/download/splunk-enterprise.html](https://www.splunk.com/en_us/download/splunk-enterprise.html) 2. 创建免费的 Splunk 账号 3. 下载 Windows `.msi` 安装程序 4. 以管理员身份运行 | 设置 | 值 | |---------|-------| | 许可证 | Splunk Free (60 天试用 / 500 MB/天) | | 用户名 | `admin` | | 密码 | (设置强密码) | | 服务账号 | Local System | #### 步骤 19 — 打开 Splunk Web ``` http://localhost:8000 ``` 使用 admin 凭据登录。接受许可协议。 #### 步骤 20 — 启用接收端口 **Settings → Forwarding and receiving → Configure receiving → New Receiving Port** - 端口号:`9997` - 点击 **Save** 验证端口是否正在监听: ``` netstat -ano | findstr :9997 ``` ### 阶段 5:Splunk Universal Forwarder #### 步骤 21 — 下载 Forwarder 在您的宿主机上: 1. 访问:[https://www.splunk.com/en_us/download/universal-forwarder.html](https://www.splunk.com/en_us/download/universal-forwarder.html) 2. 下载 Windows 64 位安装程序 3. 复制到 Win10-Target (拖拽或通过共享文件夹) #### 步骤 22 — 在 Win10 上安装 Forwarder 在 Win10-Target 内以管理员身份运行: | 设置 | 值 | |---------|-------| | 许可证 | On-premises Splunk Enterprise | | 用户名 | `admin` | | 密码 | (设置 forwarder 管理员密码) | | Deployment Server | (留空) | | Receiving Indexer | 宿主机的 VMnet1 IP (例如,`192.168.x.1`) | | 端口 | `9997` | #### 步骤 23 — 配置日志输入 ``` cd "C:\Program Files\SplunkUniversalForwarder\bin" .\splunk.exe add monitor "WinEventLog://Security" --accept-license .\splunk.exe add monitor "WinEventLog://System" --accept-license .\splunk.exe add monitor "WinEventLog://Application" --accept-license .\splunk.exe add monitor "WinEventLog://Microsoft-Windows-Sysmon/Operational" --accept-license .\splunk.exe restart ``` #### 步骤 24 — 验证 Forwarder 连接 ``` .\splunk.exe list forward-server ``` 预期输出: ``` Active forwards: 192.168.x.x:9997 ``` #### 步骤 25 — 在 Splunk Web 中测试 运行搜索: ``` index=* host=Win10-Target ``` 设置时间范围:**Last 15 minutes** 您应该能看到来自 Win10-Target 的 Windows 事件日志条目。 ### 阶段 6:网络验证 #### 步骤 26 — 验证 VM 连接性 将两台 VM 都设置为 **Host-only** 网络模式。 **检查 IP:** ``` # 在 Kali 上 ip a ``` ``` :: On Win10 ipconfig ``` **测试 ping:** ``` # 从 Kali ping ``` ``` # 从 Win10 ping ``` 如果 ping 被阻止,请在 Windows 上允许 ICMP: ``` New-NetFirewallRule -DisplayName "Allow ICMPv4" -Protocol ICMPv4 -IcmpType 8 -Direction Inbound -Action Allow ``` 🎉 **设置完成!** 您的实验环境已准备就绪。 ## 🧪 实验室 ### 实验 1 — 暴力破解检测 **MITRE ATT&CK:** T1110.001 (Brute Force: Password Guessing) #### Win10-Target 上的前置条件 禁用 Network Level Authentication (NLA) 以允许 Hydra 连接: ``` Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 0 Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "SecurityLayer" -Value 0 ``` #### 步骤 1 — 确认目标 IP 在 Win10-Target 上: ``` ipconfig ``` 记下 IP (例如,`192.168.221.129`)。 #### 步骤 2 — 生成字典 在 Kali 上: ``` head -500 /usr/share/wordlists/rockyou.txt > ~/lab_wordlist.txt echo "Password1" >> ~/lab_wordlist.txt ``` #### 步骤 3 — 发起暴力破解攻击 **选项 A — Ncrack** (对 RDP 最可靠): ``` ncrack -u labuser -P ~/lab_wordlist.txt rdp://192.168.221.129 --connection-limit 1 ``` **选项 B — Hydra:** ``` hydra -l labuser -P ~/lab_wordlist.txt rdp://192.168.221.129 -t 1 -V -W 3 ``` **选项 C — NetExec:** ``` nxc rdp 192.168.221.129 -u labuser -p ~/lab_wordlist.txt ``` #### 阶段 1 — 检测 (DETECT) **告警触发:** 来自单一源 IP 的大量 EventCode 4625 (登录失败)。 **核心检测查询:** ``` index=win_logs EventCode=4625 | stats count by src_ip, Account_Name | where count > 10 | sort -count ``` **基于时间的分桶模式:** ``` index=win_logs EventCode=4625 | timechart span=1m count by src_ip ``` **检查成功登录:** ``` index=win_logs (EventCode=4624 OR EventCode=4625) | stats count by EventCode, src_ip, Account_Name | sort src_ip ``` #### 阶段 2 — 分类 (TRIAGE) | 问题 | 答案来源 | |----------|---------------| | 目标是哪个账号? | EventCode 4625 → `Account_Name` 字段 | | 源 IP? | `src_ip` — 内部还是外部? | | 尝试了多少次? | Splunk 查询中的 `count` | | 登录类型? | `Logon_Type` — 10 = RDP | | 有成功的吗? | 来自相同 `src_ip` 的 EventCode 4624 | | 账号被锁定? | 检查 AD 或本地账号状态 | **严重性分类:** - **中等** — 仅失败,无 4624 → 阻止并监控 - **严重 (CRITICAL)** — 多次 4625 后出现 4624 → 确认违规 - **更高优先级** — 内部源 IP → 横向移动或内部威胁 #### 阶段 3 — 遏制 (CONTAIN) ``` # 在 firewall 阻断攻击者 IP sudo ufw deny from to any # 锁定目标账户 net user labuser /active:no # 或通过 AD Disable-ADAccount -Identity "labuser" # 检查账户状态 net user labuser ``` #### 阶段 4 — 调查 (INVESTIGATE) **完整攻击时间线:** ``` index=win_logs (EventCode=4625 OR EventCode=4624 OR EventCode=4648) src_ip="" | table _time, EventCode, Account_Name, src_ip, Logon_Type | sort _time ``` **如果确认违规 — 后渗透:** ``` index=win_logs EventCode=4688 OR EventCode=1 | where _time > "[time of 4624]" | table _time, Account_Name, Image, CommandLine ``` #### 阶段 5 — 升级与记录 (ESCALATE & DOCUMENT) **在以下情况升级至 L2:** - 确认来自攻击者 IP 的任何 EventCode 4624 - 攻击来自外部 IP - 同时针对多个账号 - 攻击者 IP 匹配威胁情报/黑名单 **事件工单模板:** ``` ## INCIDENT REPORT — RDP Brute Force Attack | Field | Value | |-------|-------| | Detection Time | [timestamp] | | Alert Source | Splunk — EventCode 4625 threshold breach | | Attacker IP | (internal/external) | | Target Account | labuser | | Target Host | Win10-Target | | Total Attempts | [count] | | Timeframe | [start] to [end] | | Logon Type | 10 (RemoteInteractive / RDP) | | Breach Confirmed | Yes / No | | 4624 Observed | Yes / No | | Actions Taken | IP blocked, account locked, host isolated | | Escalated To | [L2 name] | | MITRE ATT&CK | T1110.001 — Brute Force: Password Guessing | ``` #### 阶段 6 — 补救 (REMEDIATE) | 修复 | 原因 | |-----|--------| | 5 次尝试后锁定账号 | 彻底阻止暴力破解 | | 在 RDP 上启用 MFA | 仅靠密码是不够的 | | 启用 NLA | 在 RDP 会话开启前要求身份验证 | | 如果不需要,禁用 RDP | 完全移除攻击面 | | 对来自国外的 RDP 进行地理封锁 | 减少外部暴露 | | 部署等效的 fail2ban | 自动封锁突破阈值的 IP | | 使用非标准 RDP 端口 | 减少自动化扫描的命中率 | ### 实验 2 — 网络侦察与端口扫描检测 **MITRE ATT&CK:** T1046 (Network Service Discovery), T1595 (Active Scanning) #### 步骤 1 — 确认目标 IP 在 Win10-Target 上: ``` ipconfig ``` #### 步骤 2 — 在 Windows 上启动数据包捕获 在 Win10-Target 上打开 **Wireshark**,选择正确的网络适配器,然后开始捕获。 #### 步骤 3 — 从 Kali 运行 Nmap 扫描 ``` # 隐蔽 SYN 扫描 nmap -sS # 带有 service/OS detection 的激进扫描 nmap -A # 全端口扫描 nmap -p- # OS fingerprinting nmap -O # Host discovery (ping sweep) nmap -sn # 完整 SYN 端口扫描 nmap -sS -p- # Service and version detection nmap -sV -sC -p 22,80,443,3389,445,139 ``` #### 步骤 4 — 在 Wireshark 中观察 SYN 数据包 应用过滤器: ``` tcp.flags.syn==1 and tcp.flags.ack==0 ``` 这揭示了来自 Kali IP 指向许多端口的大量 SYN 数据包 — 这是典型的端口扫描行为。 #### 阶段 1 — 检测 (DETECT) **告警触发:** - Sysmon EventCode 3 — 来自单一源 IP 到多个目标端口的突发网络连接 - Windows 防火墙 EventCode 5157 — 跨多个端口的被阻止入站连接尝试 - 无对应的应用程序流量模式 — 纯粹的端口枚举 **端口扫描检测:** ``` index=win_logs EventCode=3 | stats dc(DestinationPort) as unique_ports, count by SourceIp, DestinationIp | where unique_ports > 15 | sort -unique_ports ``` **扫描时间线:** ``` index=win_logs EventCode=3 SourceIp="" | timechart span=10s count ``` **探测了哪些端口:** ``` index=win_logs EventCode=3 SourceIp="" | stats count by DestinationPort | sort -count ``` **防火墙阻止的流量:** ``` index=win_logs EventCode=5157 | stats dc(DestinationPort) as unique_ports by SourceAddress, DestAddress | where unique_ports > 15 | sort -unique_ports ``` #### 阶段 2 — 分类 (TRIAGE) | 问题 | 查看位置 | |----------|---------------| | 哪个 IP 正在扫描? | Sysmon EventCode 3 — `SourceIp` 字段 | | 内部还是外部源? | 将 `SourceIp` 与内部子网进行比较 | | 探测了多少个端口? | Splunk 中的 `dc(DestinationPort)` | | 扫描持续了多长时间? | 结果中最早与最晚的时间 | | 扫描发现开放端口了吗? | 检查哪些目标端口收到了响应 | | 扫描后是否发生了其他操作? | 扫描后来自相同 IP 的 EventCode 4624/4625 | **严重性:** - 内部 IP 扫描内部 → **中等** (可能为被攻陷的主机) - 外部 IP 扫描边界 → **高** (主动外部侦察) - 扫描后紧跟利用 → **严重** (立即升级) #### 阶段 3 — 遏制 (CONTAIN) ``` # 在周边 firewall 阻断扫描 IP # 在 Windows Firewall 阻断(如果是内部攻击者) netsh advfirewall firewall add rule name="Block Scanner" dir=in action=block remoteip= # 在 Linux 周边阻断 sudo ufw deny from to any ``` #### 阶段 4 — 调查 (INVESTIGATE) **扫描后扫描器是否连接到了开放端口?** ``` index=win_logs EventCode=3 SourceIp="" | stats count by DestinationPort | sort -count ``` **扫描后是否有来自扫描 IP 的登录尝试?** ``` index=win_logs (EventCode=4624 OR EventCode=4625) src_ip="" | table _time, EventCode, Account_Name, src_ip, Logon_Type | sort _time ``` **是否有其他主机被同一源扫描?** ``` index=win_logs EventCode=3 SourceIp="" | stats dc(DestinationIp) as hosts_scanned, values(DestinationIp) as targets by SourceIp ``` **攻击时间线:** ``` [T+0] First Sysmon EventCode 3 from KALI_IP [T+xs] Burst of connections across multiple ports — scan pattern confirmed [T+ym] Scan ends — unique_ports count peaks [T+zm] Any EventCode 4624/4625 from same IP? → exploitation attempt ``` #### 阶段 5 — 升级与记录 (ESCALATE & DOCUMENT) **在以下情况升级至 L2:** - 确认扫描源为外部 IP - 扫描后紧接着发生登录尝试或利用行为 - 多个内部主机被扫描 (初始攻陷后的横向侦察) - 扫描模式与已知威胁行为者的工具匹配 **事件报告模板:** ``` ## INCIDENT REPORT — Network Port Scan / Reconnaissance | Field | Value | |-------|-------| | Detection Time | [timestamp] | | Alert Source | Splunk — Sysmon EventCode 3 dc(DestinationPort) threshold | | Scanning IP | (internal/external) | | Target Host | Win10-Target | | Ports Probed | [count] unique ports | | Scan Duration | [start_time] to [end_time] | | Open Ports Found | [list ports with inbound connections] | | Follow-on Action | Yes / No — [login attempts / exploit attempts] | | Actions Taken | Scanning IP blocked, L2 notified | | MITRE ATT&CK | T1046 / T1595 | ``` #### 阶段 6 — 补救 (REMEDIATE) | 修复 | 原因 | |-----|--------| | 在所有端点上启用基于主机的防火墙 | 阻止未经请求的入站探测 | | 部署 IDS/IPS (Snort / Suricata) | 自动检测 nmap 扫描特征 | | 启用带有网络日志记录 (EventCode 3) 的 Sysmon | 提供扫描检测的核心可见性 | | 网络分段 / VLAN | 限制攻击者可到达的主机 | | 告警规则:60秒内 dc(DestinationPort) > 15 | 自动化检测 | | 在边界对外部 IP 范围进行地理封锁 | 减少外部侦察暴露 | | 禁用不必要的开放端口/服务 | 缩小攻击面 | ### 实验 3 — Beaconing / C2 检测 **MITRE ATT&CK:** T1071 (Application Layer Protocol) #### 步骤 1 — 确认目标 IP 在 Win10-Target 上: ``` ipconfig ``` #### 步骤 2 — 在 Windows 上启动监听器 在 Win10 VM 上下载 Nmap 以获取 Ncat,然后以管理员身份打开命令提示符: ``` ncat -lvp 4444 ``` 如果 `nc` 不可用,请使用 `ncat` (包含在 Nmap 中)。 #### 步骤 3 — 从 Kali 启动重复连接 从 Kali 运行一个循环,每 30 秒生成一次重复的出站连接: ``` while true; do nc 192.168.221.129 4444; sleep 30; done ``` 这会创建一个类似于 Beaconing 或 C2 活动的可预测回调模式。 #### 步骤 4 — 在 Wireshark 中观察流量 在 Windows 上,打开 Wireshark 并观察以固定时间间隔传入的重复连接尝试。 过滤器:`tcp.port == 4444` #### 检测 **数据源:** 转发至 Splunk 的网络或流量日志。 **核心理念:** 查找来自同一源、以一致时间间隔发往同一目标的重复连接。 **Beaconing 检测查询:** ``` index=main | sort 0 src_ip dest_ip _time | streamstats current=f last(_time) as prev_time by src_ip dest_ip | eval interval = _time - prev_time | stats count, avg(interval) as avg_interval, stdev(interval) as stdev_interval by src_ip dest_ip | where count > 5 AND avg_interval < 300 AND stdev_interval < 10 | sort -count ``` 这种类型的时间分析通常用于识别 Beaconing,因为恶意的签到通常以固定的间隔发生,且标准偏差较低。 #### 分类说明 - 实验中的**真阳性** - **源 IP:** Kali 攻击者 VM - **目标 IP:** Windows 10 VM - **间隔:** 连接之间的间隔高度一致 — 这是 Beaconing 的主要线索 - **确认方式:** Wireshark 和 Splunk 共同确认 ## 🗺️ MITRE ATT&CK 映射 ### 实验 1 — 暴力破解 | 技术 ID | 技术名称 | 详情 | |--------------|----------------|--------| | T1110 | Brute Force | 父技术 | | T1110.001 | Password Guessing | 针对 RDP 的字典攻击 | | T1078 | Valid Accounts | 如果暴力破解成功 | | T1021.001 | Remote Services: RDP | 使用的访问方法 | | T1133 | External Remote Services | RDP 暴露在外部 | **Kill Chain:** ``` Credential Access → [T1110.001] Brute Force RDP └── Success → [T1078] Valid Accounts └── [T1021.001] RDP Lateral Movement ``` ### 实验 2 — 端口扫描 | ID | 技术 | 上下文 | |----|-----------|---------| | T1595 | Active Scanning | 攻击者扫描 IP 范围和端口 | | T1595.001 | Scanning IP Blocks | nmap ping 扫描 (-sn) | | T1595.002 | Vulnerability Scanning | nmap 服务检测 (-sV -sC) | | T1046 | Network Service Discovery | 全端口枚举 (-p-) | | T1590 | Gather Victim Network Information | OS 指纹识别 (-O) | **Kill Chain:** ``` Reconnaissance └── [T1595.001] Ping Sweep — host discovery └── [T1046] Port Scan — service enumeration └── [T1595.002] Version Detection — vulnerability mapping └── Weaponization → Exploitation ``` ### 实验 3 — C2 Beaconing | ID | 技术 | 上下文 | |----|-----------|---------| | T1071 | Application Layer Protocol | C2 通信通道 | | T1071.001 | Web Protocols | HTTP/HTTPS Beaconing | | T1001 | Data Obfuscation | Beaconing 时间中的抖动/随机化 | ## 📊 关键事件 ID ### Windows 安全日志 | 事件 ID | 描述 | |----------|-------------| | 4624 | 成功登录 — 确认违规 | | 4625 | 登录失败 — 核心暴力破解指标 | | 4648 | 使用显式凭据登录 | | 4776 | NTLM 凭据验证尝试 | | 4740 | 账号被锁定 | ### Sysmon | 事件 ID | 描述 | |----------|-------------| | 1 | 进程创建 | | 3 | 网络连接 — 核心扫描/Beacon 检测 | | 7 | 镜像加载 | | 8 | CreateRemoteThread | | 10 | ProcessAccess | ### Windows 防火墙 | 事件 ID | 描述 | |----------|-------------| | 5156 | 允许通过防火墙的连接 | | 5157 | 被阻止的连接 — 扫描流量 | ### 登录类型 | 类型 | 名称 | 含义 | |------|------|---------| | 2 | Interactive | 在键盘/控制台登录 | | 3 | Network | 通过网络访问 (SMB, DC 身份验证) | | 4 | Batch | 计划任务 | | 5 | Service | 服务账号登录 | | 7 | Unlock | 工作站解锁 | | 8 | NetworkCleartext | 使用明文凭据 | | 9 | NewCredentials | 使用不同凭据的 RunAs | | 10 | RemoteInteractive | RDP 登录 | | 11 | CachedInteractive | 缓存的域凭据 | ## 👤 作者 **SOC Analyst Home Lab** — 出于教育目的在隔离环境中构建。 *最后更新:2026 年 7 月*
标签:安全实验环境, 安全运营, 库, 应急响应, 扫描框架, 网络安全, 隐私保护