第243篇:企业内网威胁狩猎基础
关键词:威胁狩猎、Threat Hunting、ATT&CK 框架、内网安全、IOC、IOA、安全运营
一、引言
在传统安全运营中,安全团队主要依赖 SIEM 告警和终端安全产品的事件通知来响应安全事件。然而,这种方式存在两个致命缺陷:
- 告警疲劳:每天数千条告警中混杂大量误报,安全人员难以聚焦真正威胁
- 未知威胁:基于签名和规则的检测手段无法发现新型攻击、APT 攻击或内部威胁
威胁狩猎(Threat Hunting)是一种主动的安全分析方法。安全分析师不等待告警触发,而是基于假设和情报,主动在内网中搜索隐藏的攻击痕迹。从"被动响应"到"主动出击",是安全运营能力的质变。
二、威胁狩猎核心概念
2.1 威胁狩猎与事件响应的差异
| 维度 | 事件响应(IR) | 威胁狩猎(Hunting) |
|---|---|---|
| 触发方式 | 告警驱动 | 假设驱动 / 情报驱动 |
| 执行时机 | 事件发生后 | 日常持续进行 |
| 分析范围 | 单一事件相关日志 | 全网数据深度关联 |
| 目标对象 | 已知威胁 | 已知 + 未知威胁 |
| 输出结果 | 事件处置报告 | 检测规则改进 + 攻击面收敛 |
| 周期 | 按需触发 | 常态化运营(每周/每月) |
2.2 MITRE ATT&CK 框架简介
MITRE ATT&CK(Adversarial Tactics, Techniques and Common Knowledge)是威胁狩猎的核心参考框架,描述了攻击者在网络中的行为模式。

2.3 狩猎假设驱动模型

三、常见内网威胁狩猎场景
3.1 场景一:异常登录行为狩猎
狩猎假设:攻击者已获取内网某台服务器的凭据,正在尝试登录更多系统。
-- 基于 Syslog / 安全审计日志的分析查询
-- 1. 统计同一源 IP 在不同目标主机上的 SSH 登录尝试
SELECT
source_ip,
COUNT(DISTINCT destination_host) AS unique_targets,
COUNT(*) AS total_attempts,
SUM(CASE WHEN result = 'failure' THEN 1 ELSE 0 END) AS failed_attempts,
MAX(timestamp) AS last_attempt
FROM ssh_auth_logs
WHERE timestamp >= NOW() - INTERVAL 24 HOUR
GROUP BY source_ip
HAVING unique_targets > 3
OR failed_attempts > 10
ORDER BY unique_targets DESC;
-- 2. 检测非工作时间的管理员登录
SELECT
username,
login_time,
source_ip,
destination_host,
authentication_method
FROM admin_login_logs
WHERE EXTRACT(HOUR FROM login_time) BETWEEN 0 AND 6
AND username IN ('root', 'administrator', 'admin')
ORDER BY login_time DESC;
-- 3. 检测来自非常规位置的登录
SELECT
username,
login_time,
source_ip,
vlan_id,
CASE
WHEN vlan_id NOT IN (user_usual_vlans) THEN '异常VLAN'
ELSE '正常'
END AS anomaly_flag
FROM login_logs
WHERE timestamp >= NOW() - INTERVAL 7 DAY
AND vlan_id NOT IN (
SELECT vlan_id
FROM user_baseline
WHERE username = login_logs.username
);
3.2 场景二:横向移动狩猎
狩猎假设:攻击者已突破边界,正在利用已获取的凭据在内网横向移动。
-- 1. RDP 横向移动检测
SELECT
source_ip,
destination_ip,
COUNT(*) AS rdp_connections,
COUNT(DISTINCT destination_ip) AS unique_destinations,
MIN(first_seen) AS first_seen,
MAX(last_seen) AS last_seen
FROM rdp_connections
WHERE timestamp >= NOW() - INTERVAL 12 HOUR
GROUP BY source_ip, destination_ip
HAVING rdp_connections > 3;
-- 2. SMB 横向移动检测(PsExec、WMI 等)
SELECT
source_ip,
destination_ip,
protocol,
port,
payload_size,
timestamp
FROM smb_traffic
WHERE port IN (445, 139)
AND (protocol = 'PsExec' OR protocol = 'WMI' OR protocol = 'Admin$')
AND timestamp >= NOW() - INTERVAL 24 HOUR
ORDER BY timestamp DESC;
-- 3. 异常进程创建(检测 PsExec 等工具)
SELECT
host_name,
process_name,
parent_process,
command_line,
user_name,
create_time
FROM process_creation_logs
WHERE process_name IN ('psexec.exe', 'psexesvc.exe', 'wmic.exe', 'winrm.vbs')
OR command_line LIKE '%admin$%'
OR command_line LIKE '%\\\\%\\admin$%'
ORDER BY create_time DESC;
3.3 场景三:数据外泄狩猎
狩猎假设:攻击者已获取敏感数据访问权限,正在尝试将数据传送到外部。
-- 1. 异常大流量外传检测
SELECT
source_ip,
destination_ip,
destination_port,
SUM(bytes_sent) AS total_bytes_sent,
COUNT(*) AS connection_count,
MAX(timestamp) AS last_transfer
FROM netflow_logs
WHERE bytes_sent > 1048576 -- 1MB
AND destination_ip NOT IN (
SELECT ip FROM internal_networks -- 排除内网流量
)
GROUP BY source_ip, destination_ip, destination_port
HAVING total_bytes_sent > 10485760 -- 10MB
ORDER BY total_bytes_sent DESC;
-- 2. DNS 隧道检测
SELECT
source_ip,
COUNT(*) AS query_count,
COUNT(DISTINCT query_name) AS unique_domains,
AVG(LENGTH(query_name)) AS avg_label_length,
SUM(CASE WHEN query_type = 'TXT' THEN 1 ELSE 0 END) AS txt_queries
FROM dns_logs
WHERE timestamp >= NOW() - INTERVAL 1 HOUR
GROUP BY source_ip
HAVING unique_domains > 100
OR avg_label_length > 30; -- 异常长的 DNS 标签
-- 3. 异常时间段的文件访问
SELECT
user_name,
file_path,
access_time,
CASE
WHEN EXTRACT(HOUR FROM access_time) BETWEEN 0 AND 6 THEN '非工作时间'
WHEN EXTRACT(DAYOFWEEK FROM access_time) IN (1, 7) THEN '周末'
ELSE '正常时间'
END AS time_classification
FROM file_access_logs
WHERE file_path LIKE '%confidential%'
OR file_path LIKE '%sensitive%'
OR file_path LIKE '%password%'
AND (EXTRACT(HOUR FROM access_time) BETWEEN 0 AND 6
OR EXTRACT(DAYOFWEEK FROM access_time) IN (1, 7))
ORDER BY access_time DESC;
3.4 场景四:持久化痕迹狩猎
狩猎假设:攻击者在目标主机上建立了持久化后门,即使清除了初始入侵点仍可重新控制。
# Linux 系统持久化检查
# 1. 异常定时任务
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/
# 2. 系统启动项检查
ls -la /etc/init.d/
systemctl list-unit-files --state=enabled
ls -la ~/.config/autostart/
# 3. SSH 公钥后门
cat /root/.ssh/authorized_keys
cat /home/*/.ssh/authorized_keys
# 4. 异常 SUID/SGID 文件
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
# 5. 隐藏用户(UID 为 0)
awk -F: '$3 == 0 {print $1}' /etc/passwd
# 6. 最近修改的系统二进制文件
find /usr/bin /usr/sbin /bin /sbin -mtime -7 -type f 2>/dev/null
# Windows 系统持久化检查
# 1. 注册表启动项
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
Get-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
# 2. 计划任务
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"} | Select TaskName, TaskPath, State
# 3. WMI 事件订阅
Get-WmiObject -Namespace "root\subscription" -Class __EventFilter
Get-WmiObject -Namespace "root\subscription" -Class CommandLineEventConsumer
# 4. 隐藏服务
Get-WmiObject Win32_Service | Where-Object {$_.StartMode -eq "Auto" -and $_.State -ne "Running"}
四、威胁狩猎平台建设
4.1 数据源整合
| 数据源 | 获取方式 | 价值 |
|---|---|---|
| 网络设备日志 | Syslog / SNMP Trap | 流量异常、配置变更、连接异常 |
| 防火墙日志 | Syslog / API | 跨域访问策略、命中策略统计 |
| 终端 EDR 日志 | Agent 上报 | 进程创建、文件修改、网络连接 |
| 认证日志 | RADIUS / AD / LDAP | 登录失败、异常登录时间、权限提升 |
| DNS 日志 | DNS 服务器导出 | DNS 隧道、C2 域名解析 |
| 流量元数据(NetFlow) | 交换机/路由器导出 | 流量基线偏离、异常连接 |
| 邮件网关日志 | 邮件安全网关 | 钓鱼邮件、恶意附件 |
| 云平台日志 | CloudTrail / API | 云资源异常操作 |
4.2 华为设备日志采集配置
# 华为交换机 Syslog 配置(对接 SIEM)
<HUAWEI> system-view
[HUAWEI] sysname Core-SW-01
# 配置 Syslog 主机
[HUAWEI] info-center loghost 10.10.100.20
[HUAWEI] info-center loghost trap level informational
[HUAWEI] info-center loghost filter level informational
# 配置登录日志
[HUAWEI] aaa
[HUAWEI-aaa] authentication-scheme default
[HUAWEI-aaa-auth-domain-default] authentication-log enable
[HUAWEI-aaa-auth-domain-default] quit
# 配置命令行操作审计日志
[HUAWEI] info-center enable
[HUAWEI] info-center source default channel 1 log level debugging
[HUAWEI] info-center source default channel 2 log level debugging
# 配置配置变更日志
[HUAWEI] log configuration enable
# 配置 NetFlow 导出
[HUAWEI] interface GigabitEthernet 1/0/1
[HUAWEI-GigabitEthernet1/0/1] user-defined flow export enable
[HUAWEI-GigabitEthernet1/0/1] quit
[HUAWEI] flow monitoring ipv4 template 1
[HUAWEI-flow-ipv4-1] source-address
[HUAWEI-flow-ipv4-1] destination-address
[HUAWEI-flow-ipv4-1] source-port
[HUAWEI-flow-ipv4-1] destination-port
[HUAWEI-flow-ipv4-1] protocol
[HUAWEI-flow-ipv4-1] packets
[HUAWEI-flow-ipv4-1] bytes
[HUAWEI-flow-ipv4-1] sampling 100
[HUAWEI-flow-ipv4-1] export host 10.10.100.20 udp-port 9996
[HUAWEI-flow-ipv4-1] quit
4.3 狩猎仪表盘关键指标

五、总结
| 维度 | 要点 |
|---|---|
| 威胁狩猎定位 | 不替代告警系统,而是填补规则检测的盲区 |
| 核心方法论 | 假设驱动 + ATT&CK 框架 + 多源数据关联 |
| 关键数据源 | 终端日志、网络流量、认证日志、DNS 日志、流量元数据 |
| 常见场景 | 异常登录、横向移动、数据外泄、持久化、凭证窃取 |
| 工具依赖 | SIEM、EDR、NetFlow 分析器、ATT&CK 导航器 |
| 组织能力 | 分析师需具备攻防双方视角、编程能力和业务理解 |
| 持续改进 | 狩猎发现 → 检测规则 → 自动化 → 新的狩猎假设 |
核心结论:威胁狩猎不是偶尔为之的应急手段,而是常态化安全运营的核心能力。通过持续在内网中主动搜索隐藏威胁,安全团队能够在攻击者完成其目标之前发现并阻断攻击,将平均检测时间(MTTD)从被动告警的数天缩短到数小时甚至数分钟。
思考
-
基于 ATT&CK 框架的威胁狩猎与基于告警规则的事件响应,在检测未知威胁方面各有什么优劣?
-
如果企业缺乏 EDR 和流量分析平台,仅依靠网络设备日志能否开展有效的威胁狩猎?可以覆盖哪些场景?
-
如何衡量威胁狩猎项目的有效性?应该关注哪些指标?
下篇预告:第244篇:无线网络安全:WPA2/WPA3/802.1X——无线网络的全链路防护