bdk3000/privileged-logon-anomaly
GitHub: bdk3000/privileged-logon-anomaly
用于检测Windows特权登录异常的日志分析工具。
Stars: 0 | Forks: 0
# 特权登录异常
# 特权账户登录异常检测
**MITRE ATT&CK:** T1078.002 - 有效账户:域账户
**日志来源:** 通过AMA的Windows安全事件 → Sentinel
**事件ID:** 4672 - 特殊权限分配 |
4624 - 成功登录
## 概述
4672事件在Active Directory中无处不在——每个
管理员登录都会生成一个。它本身并不能告诉你什么
有用的信息。但是,当你将它与某人登录的方式以及他们登录的时间相关联时,噪音就变成了信号。
这个检测将权限分配事件与
登录上下文相结合,以捕捉重要信息——在非工作时间通过RDP进行身份验证的管理账户。这就是
凭证被盗后看到的模式。攻击者拥有有效的凭证,他们已经进入系统,如果没有这种关联,他们在日志中就是不可见的。
## 攻击场景
攻击者通过钓鱼、Kerberoasting或Pass-the-Hash获取域管理员凭证。他们在凌晨2点通过RDP进行身份验证。没有这个检测,这个事件只是数百万行中的一行。有了它——警报会立即触发。
## 检测逻辑
- 在账户身份上连接4672和4624
- 过滤RDP(登录类型10)和网络(登录类型3)
- 从时间戳计算一天中的小时
- 标记07:00-19:00窗口外的身份验证
- 排除计算机账户和内置服务账户
- 通过时间分桶去重——每个账户一行
## 登录类型 — 参考
| 类型 | 描述 | 风险 |
|------|-------------|------|
| 2 | 交互式 — 物理上在键盘上 | 低 |
| 3 | 网络 — 共享或驱动器映射 | 中等 |
| 10 | 远程交互式 — RDP会话 | 高 |
| 5 | 服务账户登录 | 预期 |
## KQL检测规则
```
let BizStart = 7;
let BizEnd = 19;
SecurityEvent
| where EventID == 4672
| join kind=inner (
SecurityEvent
| where EventID == 4624
| where LogonType in (10, 3)
| project
TimeGenerated,
Account,
LogonType,
IpAddress,
LogonTypeName = case(
LogonType == 10, "RemoteInteractive (RDP)",
LogonType == 3, "Network",
"Other")
) on Account
| extend HourOfDay = hourofday(TimeGenerated)
| extend AfterHours = iff(
HourOfDay < BizStart or
HourOfDay >= BizEnd, true, false)
| where AfterHours == true
| where Account !endswith "$"
| where Account !in ("SYSTEM", "LOCAL SERVICE",
"NETWORK SERVICE")
| summarize
EventCount = count(),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated),
Computers = make_set(Computer)
by Account, HourOfDay, AfterHours
| order by AfterHours desc, EventCount desc
```
## 验证结果
规则针对DC01.lab.local的实时Sentinel数据进行执行。
在正常工作时间返回了LAB\Administrator的单个去重行——正确评估AfterHours = false。
调整过程中没有生成误报。规则确认
针对真实生产遥测数据是有效的。
## 证据
**Sentinel检测输出 — 单个去重行**

## 所以呢
域管理员账户在非工作时间通过RDP进行身份验证是任何环境中凭证泄露的最高置信度指标之一。这个规则
在攻击者达到目标之前就会触发——给SOC一个端点检测完全错过的响应窗口。
## 身份与信任上下文
这个检测在域身份层捕捉信任边界违规。攻击者使用有效的被盗凭证绕过每个外围控制——这个规则
在身份验证事件本身捕捉到他们,无论他们如何获取凭证。每个特权登录都是一个信任决策——这个规则审计每一个。
## 误报考虑因素
- 合法的非工作时间管理员工作 — 与账户所有者进行验证
- 以管理员账户运行的自动化脚本 —
转移到具有范围权限的服务账户
- 跨时区的全球团队 — 调整BizStart和BizEnd变量以匹配运营时间
## 环境
- 日志来源:DC01.lab.local Windows安全事件
- 管道:AMA → Azure Arc → DCR → DetectionLab-LAW → Sentinel
- 针对实时生产遥测数据进行验证
- 实验室:隔离的HyperV环境
标签:asyncio, ATT&CK 框架, Cloudflare, Kerberoasting, MITRE ATT&CK, Pass-the-Hash, RDP 会话, RDP 安全, Sentinel, T1078.002, Windows 安全事件, 事件ID 4624, 事件ID 4672, 交互式登录, 域账户, 安全事件响应, 安全事件检测, 安全信息与事件管理, 异常行为分析, 搜索引擎爬取, 数据关联, 日志关联, 时间序列分析, 服务账户登录, 权限管理, 模型越狱, 特权账户, 登录异常检测, 网络登录类型, 远程访问监控, 黄金证书