engine

package
v0.0.0-...-23ca95c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2026 License: AGPL-3.0 Imports: 29 Imported by: 0

Documentation

Overview

Package engine 是 v2.0 六微服务架构中检测引擎的实现。

本包目前是 PR3 引入的空骨架,后续 PR 将逐步搬入:

  • rule/ CEL + Sigma + Falco + Tetragon 转换规则
  • sequence/ Markov 转移 / n-gram 序列异常 / 端口扫描滑动窗口
  • ml/ ONNX Runtime CPU 推理 (IForest / LightGBM / MiniLM)
  • storyline/ 攻击链关联 + ATT&CK 战术映射
  • kube/ K8s Audit Event 检测 (从 manager.biz.kube_detector 搬入)
  • response/ observe/protect 模式下的响应动作

设计文档: docs/engine-design.md / docs/engine-detection-design.md

Index

Constants

View Source
const ConsumerGroupID = "mxcwpp-engine"

ConsumerGroupID 是 Engine 服务的 Kafka ConsumerGroup, 与 Consumer 服务的 "mxcwpp-writers" 互不冲突, 同一份 agent.* 消息会被两个 group 各消费一次。

View Source
const Version = "0.1.0-skeleton"

Version 是 Engine 服务的语义化版本。

Variables

This section is empty.

Functions

func IncBackpressureDrop

func IncBackpressureDrop()

IncBackpressureDrop 背压丢弃计数.

func IncMessageFailed

func IncMessageFailed(reason string)

IncMessageFailed message 处理失败计数.

func IncMessageReceived

func IncMessageReceived()

IncMessageReceived 入站 message 计数.

func NewHTTPHandler

func NewHTTPHandler(logger *zap.Logger) http.Handler

NewHTTPHandler 构造空骨架 HTTP handler,仅暴露 /health 与 /metrics 占位。

后续 PR 将在此挂入: /rules CRUD / /alerts query / /feedback 等。

func ObservePipeline

func ObservePipeline(start time.Time, outcome string)

ObservePipeline 单次 pipeline 处理记录.

func ObserveStage

func ObserveStage(stageName string, start time.Time)

ObserveStage 单 stage 处理记录.

func RecordAlert

func RecordAlert(stageName, ruleID, severity string)

RecordAlert 产 alert 时调用.

func RecordStageError

func RecordStageError(stageName string)

RecordStageError stage 内部 error.

Types

type AbnormalLoginStage

type AbnormalLoginStage struct {
	// contains filtered or unexported fields
}

AbnormalLoginStage 异常登录检测 (地理 / 时间 / IP / 用户 四维)。

func NewAbnormalLoginStage

func NewAbnormalLoginStage(d *intrusion.AbnormalLoginDetector, logger *zap.Logger) *AbnormalLoginStage

NewAbnormalLoginStage 构造。

func (*AbnormalLoginStage) Name

func (s *AbnormalLoginStage) Name() string

Name 满足 Stage interface。

func (*AbnormalLoginStage) Process

func (s *AbnormalLoginStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 处理 sshd "Accepted password" 等成功登录事件。

type Alert

type Alert struct {
	AlertID        string
	RuleID         string
	Severity       string
	ATTCKTactic    string
	ATTCKTechnique string
	WouldAction    json.RawMessage
	Action         json.RawMessage
	Payload        json.RawMessage
}

Alert 是 Pipeline 产出的告警 (转换为 AlertEnvelope 后推送)。

type AlertEnvelope

type AlertEnvelope struct {
	AlertID        string          `json:"alert_id"`
	TenantID       string          `json:"tenant_id"`
	HostID         string          `json:"host_id,omitempty"`
	RuleID         string          `json:"rule_id"`
	Severity       string          `json:"severity"`
	Mode           string          `json:"mode"` // observe / protect
	DetectedAt     time.Time       `json:"detected_at"`
	ATTCKTactic    string          `json:"attck_tactic,omitempty"`
	ATTCKTechnique string          `json:"attck_technique,omitempty"`
	WouldAction    json.RawMessage `json:"would_action,omitempty"`
	Action         json.RawMessage `json:"action,omitempty"`
	ActionResult   json.RawMessage `json:"action_result,omitempty"`
	AttackChain    json.RawMessage `json:"attack_chain,omitempty"`
	Payload        json.RawMessage `json:"payload,omitempty"`
	TraceID        string          `json:"trace_id,omitempty"`
}

AlertEnvelope 是 Engine 产出的告警消息体 (落 Kafka mxcwpp.engine.alert)。

字段对齐 docs/operating-modes.md §6:

  • Mode: observe / protect
  • WouldAction: observe 模式预期动作
  • Action / ActionResult: protect 模式实际动作

type AlertProducer

type AlertProducer struct {
	// contains filtered or unexported fields
}

AlertProducer 是 Engine 向 Kafka 推送告警的生产者 (P0-1: SyncProducer → Async).

异步发送 + ack callback. Publish RT 从 SyncProducer 的 P99 ~50ms 降到 sync.Pool put 级别 (<10μs). 失败由 Errors() goroutine 兜底重投 1 次 + 写 DLQ.

func NewAlertProducer

func NewAlertProducer(brokers []string, topic string, logger *zap.Logger) (*AlertProducer, error)

NewAlertProducer 构造告警 producer (Async + batch).

func (*AlertProducer) Close

func (p *AlertProducer) Close() error

Close 关闭 producer.

func (*AlertProducer) Publish

func (p *AlertProducer) Publish(ctx context.Context, env AlertEnvelope) error

Publish 异步推送告警 (P0-1: 非阻塞, RT < 10μs 入队).

Partition Key = "{tenant_id}:{host_id}" 保证同主机告警有序. 队列满返 backpressure error (调用方可决定丢弃 / 缓存重投).

func (*AlertProducer) Stats

func (p *AlertProducer) Stats() (succeeded, failed uint64)

Stats 累计计数.

type AnomalyStage

type AnomalyStage struct {
	// contains filtered or unexported fields
}

AnomalyStage 接入 anomaly.Detector (IForest 异常检测)。

把 host_metrics 类事件喂给 Detector.Ingest, Detector 内部累积训练 + 触发告警 (异步写 anomaly_alerts 表 + 通过自有通道告警), 因此 Stage.Process 返回空 Alert 数组。

后续 PR 可改造 Detector 暴露 Alert chan, 让 Pipeline 也能拿到异常告警走统一 Producer 链路。

func NewAnomalyStage

func NewAnomalyStage(d *anomaly.Detector, logger *zap.Logger) *AnomalyStage

NewAnomalyStage 构造 anomaly stage。

func (*AnomalyStage) Name

func (s *AnomalyStage) Name() string

Name 满足 Stage interface。

func (*AnomalyStage) Process

func (s *AnomalyStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 把 ev 喂给 anomaly.Detector。仅处理 host_metrics 类事件。

type AntiRootkitStage

type AntiRootkitStage struct {
	// contains filtered or unexported fields
}

AntiRootkitStage 处理 Agent 端 Anti-Rootkit Scanner 上报 (P1-4).

与 RootkitStage 区别:

RootkitStage     — 接 process/file/kmod 事件做模式匹配 (用户态 cmdline)
AntiRootkitStage — 接 Agent rootkit/scanner.go 周期 5min 自检结果 (内核完整性)

DataType 3006 (Agent rootkit/scanner.go 周期上报):

kmod_hidden        — /proc/modules vs /sys/module 差异
known_rootkit_kmod — /proc/modules 命中已知 rootkit 名
syscall_drift      — sys_call_table 地址变化
pid_hidden         — /proc PID 列表与 getdents 差异

func NewAntiRootkitStage

func NewAntiRootkitStage(logger *zap.Logger) *AntiRootkitStage

NewAntiRootkitStage 构造.

func (*AntiRootkitStage) Name

func (s *AntiRootkitStage) Name() string

Name 满足 Stage interface.

func (*AntiRootkitStage) Process

func (s *AntiRootkitStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 处理 DataType 3006 事件。

type BruteForceStage

type BruteForceStage struct {
	// contains filtered or unexported fields
}

BruteForceStage 接入入侵检测六件套之"暴力破解"。

仅处理 syslog / journal_watcher 类事件 (DataType 6010-6019 预留)。 命中阈值后产 Alert,其中 would_action 含 ip_block 建议。

func NewBruteForceStage

func NewBruteForceStage(d *intrusion.BruteForceDetector, logger *zap.Logger) *BruteForceStage

NewBruteForceStage 构造。

func (*BruteForceStage) Name

func (s *BruteForceStage) Name() string

Name 满足 Stage interface。

func (*BruteForceStage) Process

func (s *BruteForceStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 解析 sshd 失败登录事件并喂给 detector。

type CelRuleStage

type CelRuleStage struct {
	// contains filtered or unexported fields
}

CelRuleStage 把 PipelineEvent 喂给 celengine.Engine, 返回命中的 DetectionRule 对应的 Alert(s)。

v2 拆分: Engine 服务独立 deploy 时, alertGen 直接 upsert alerts 表 (取代旧 架构 Consumer 内嵌 cel 写 DB 的路径). Kafka mxcwpp.engine.alert 仍推送, 供后续 ML / SOAR / 通知 异步消费.

func NewCelRuleStage

func NewCelRuleStage(cel *celengine.Engine, logger *zap.Logger) *CelRuleStage

NewCelRuleStage 构造 CEL 规则 stage。

func (*CelRuleStage) Name

func (s *CelRuleStage) Name() string

Name 满足 Stage interface。

func (*CelRuleStage) Process

func (s *CelRuleStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 把 ev.Payload 解码为 fields map,调用 celEngine.Evaluate。

func (*CelRuleStage) WithAlertGenerator

func (s *CelRuleStage) WithAlertGenerator(g *celengine.AlertGenerator) *CelRuleStage

WithAlertGenerator 注入 AlertGenerator, 让 stage 在命中时直接 upsert alerts 表. 不调时 stage 仅返 Alert slice (pipeline 推 Kafka), 不写 DB.

type ConfigChangeAuditStage

type ConfigChangeAuditStage struct {
	// contains filtered or unexported fields
}

ConfigChangeAuditStage 处理高敏配置变更事件 → 告警 (P5-5).

Data flow:

ConfigChangeWorker.applySystemConfig / applyKubeCluster 写入 Kafka
  → Pipeline 收 PipelineEvent.DataType=14501 (配置变更审计)
  → 本 Stage 命中高敏 key → 产 Alert

高敏 key 判定:

  • 前缀 kms.* / secret.* / password.* / token.* → severity=critical
  • 前缀 feature.protect / mode.* / iam.role.* → severity=high
  • 其它 → severity=info (仍上报便于审计回溯)

func NewConfigChangeAuditStage

func NewConfigChangeAuditStage(logger *zap.Logger) *ConfigChangeAuditStage

NewConfigChangeAuditStage 构造.

func (*ConfigChangeAuditStage) Name

func (s *ConfigChangeAuditStage) Name() string

Name 满足 Stage interface.

func (*ConfigChangeAuditStage) Process

Process 仅处理 DataType=14501 (配置变更审计) 与 14502 (隔离箱审计).

type HoneypotStage

type HoneypotStage struct {
	// contains filtered or unexported fields
}

HoneypotStage 反勒索 honeypot 检测。

仅处理 DataType 7020-7029 (Agent av-scanner 上报的 honeypot 触发事件)。

func NewHoneypotStage

func NewHoneypotStage(d *honeypot.Detector, logger *zap.Logger) *HoneypotStage

NewHoneypotStage 构造。

func (*HoneypotStage) Name

func (s *HoneypotStage) Name() string

Name 满足 Stage interface。

func (*HoneypotStage) Process

func (s *HoneypotStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 仅处理 honeypot 类事件。

type IOCStage

type IOCStage struct {
	// contains filtered or unexported fields
}

IOCStage 服务端威胁情报匹配:网络事件的外联 IP、进程 hash、URL 对 IOC 集匹配。 事件本就全量流到 engine,匹配放服务端,不依赖给 agent 下发 IOC。

func NewIOCStage

func NewIOCStage(m *celengine.IOCMatcher, g *celengine.AlertGenerator, logger *zap.Logger) *IOCStage

NewIOCStage 构造

func (*IOCStage) Name

func (s *IOCStage) Name() string

Name 返回 stage 名

func (*IOCStage) Process

func (s *IOCStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 对事件做 IOC 匹配,命中生成 ioc_hit 告警

type KafkaConsumer

type KafkaConsumer struct {
	// contains filtered or unexported fields
}

KafkaConsumer 是 Engine 的 Kafka ConsumerGroup 消费器。

启动模型:

  • 一个 sarama ConsumerGroup 实例订阅 SubscribedTopics
  • 内部 goroutine 循环 Consume()
  • ctx 取消时优雅退出

func NewKafkaConsumer

func NewKafkaConsumer(brokers []string, topicPrefix string, handler MessageHandler, logger *zap.Logger) (*KafkaConsumer, error)

NewKafkaConsumer 构造 ConsumerGroup B。

brokers: Kafka broker 地址列表 topicPrefix: Kafka topic 前缀 (与 AgentCenter / Consumer 一致,如 "prod") handler: 消息处理函数 (nil 时使用 noop)

func (*KafkaConsumer) Close

func (c *KafkaConsumer) Close() error

Close 优雅关闭。

func (*KafkaConsumer) Start

func (c *KafkaConsumer) Start(ctx context.Context)

Start 启动消费循环。ctx 取消时优雅退出。 调用方应在 defer 中 Close。

type KubeAuditStage

type KubeAuditStage struct {
	// contains filtered or unexported fields
}

KubeAuditStage 接入 engine/kube.KubeDetector, 把 K8s Audit Event 喂给检测引擎,内部规则命中由 KubeAlarmService 派发。

由于 KubeDetector 直接走 KubeAlarmService 写 kube_alarms 表 + 通知, 本 Stage 不返回 Alert 数组 (告警已由 alarm service 异步派发)。 后续 PR 可改造 KubeDetector 暴露 Alert chan, 让 Engine Pipeline 也接管。

func NewKubeAuditStage

func NewKubeAuditStage(d *kube.KubeDetector, logger *zap.Logger) *KubeAuditStage

NewKubeAuditStage 构造 K8s audit stage。

func (*KubeAuditStage) Name

func (s *KubeAuditStage) Name() string

Name 满足 Stage interface。

func (*KubeAuditStage) Process

func (s *KubeAuditStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 仅处理 K8s audit 类事件 (DataType 5070-5099 K8s 资产 / 7080-7099 K8s alarm)。

ev.Payload 应可解码为 model.AuditEvent。

type MLStage

type MLStage struct {
	// contains filtered or unexported fields
}

MLStage 用 ml.Registry 中的所有模型对事件做推理。

每个 Model 独立产 Alert (一个事件可触发多个 model 命中)。 分数阈值 (默认 0.7) 以上才产 Alert。

func NewMLStage

func NewMLStage(reg *ml.Registry, threshold float64, logger *zap.Logger) *MLStage

NewMLStage 构造 ML stage。

func (*MLStage) Name

func (s *MLStage) Name() string

Name 满足 Stage interface。

func (*MLStage) Process

func (s *MLStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 把 ev.fields 转 features 后依次跑所有 model.

P1-5: 加 DataType 段过滤短路, 仅对 ML 段 (3000-3099) 跑模型, 其它 DataType 直接 return. 避免每事件都遍历全部 model.

type MessageHandler

type MessageHandler func(ctx context.Context, msg *sarama.ConsumerMessage) error

MessageHandler 是单条 Kafka 消息的处理函数。

返回 error 时该消息走 DLQ;返回 nil 即 commit offset。 Engine 检测层 (rule/sequence/ml/storyline) 实现该 interface, PR13 仅给 noop 占位,真实实现由后续 PR 引入。

type Pipeline

type Pipeline struct {
	// contains filtered or unexported fields
}

Pipeline 把 Kafka 消息按"规则 → 序列 → ML → Storyline"4 层引擎处理, 命中告警时通过 AlertProducer 发到 mxcwpp.engine.alert。

设计文档: docs/engine-detection-design.md

func NewPipeline

func NewPipeline(producer *AlertProducer, resolver *mode.MemoryResolver, stages []Stage, logger *zap.Logger) *Pipeline

NewPipeline 构造检测管线。

func (*Pipeline) Handler

func (p *Pipeline) Handler() MessageHandler

Handler 把 Pipeline 包装成 engine.MessageHandler, 供 KafkaConsumer 注入。

type PipelineEvent

type PipelineEvent struct {
	TenantID   string          `json:"tenant_id"`
	AgentID    string          `json:"agent_id"`
	HostID     string          `json:"host_id"`
	DataType   int32           `json:"data_type"`
	Topic      string          `json:"-"`
	Partition  int32           `json:"-"`
	Offset     int64           `json:"-"`
	ReceivedAt time.Time       `json:"received_at"`
	Payload    json.RawMessage `json:"payload"`
	// contains filtered or unexported fields
}

PipelineEvent 是 Engine 内部统一事件 schema (解码自 Kafka).

func (*PipelineEvent) Fields

func (ev *PipelineEvent) Fields() (map[string]string, error)

Fields P0-5: lazy 一次解码, 多 stage 共享.

调用者 ev.Fields(), 内部第一次访问触发解码 + 写 cache; 后续直接命中. 单 goroutine 走完所有 stage 时安全 (Pipeline 串行 stage 走顺序).

type PipelineMetrics

type PipelineMetrics struct {
	MessageReceived  prometheus.Counter
	MessageProcessed prometheus.Counter
	MessageFailed    *prometheus.CounterVec   // 标签 reason
	PipelineDuration *prometheus.HistogramVec // 标签 outcome
	StageDuration    *prometheus.HistogramVec // 标签 stage_name
	StageAlerts      *prometheus.CounterVec   // 标签 stage_name, severity
	AlertsProduced   *prometheus.CounterVec   // 标签 rule_id, severity
	StageErrors      *prometheus.CounterVec   // 标签 stage_name
	BackpressureDrop prometheus.Counter
}

PipelineMetrics 全部 engine 指标.

func Metrics

func Metrics() *PipelineMetrics

Metrics 单例 (lazy 注册).

type PrivEscalationStage

type PrivEscalationStage struct {
	// contains filtered or unexported fields
}

PrivEscalationStage 本地提权检测。

func NewPrivEscalationStage

func NewPrivEscalationStage(d *intrusion.PrivEscalationDetector, logger *zap.Logger) *PrivEscalationStage

NewPrivEscalationStage 构造。

func (*PrivEscalationStage) Name

func (s *PrivEscalationStage) Name() string

Name 满足 Stage interface。

func (*PrivEscalationStage) Process

func (s *PrivEscalationStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 仅处理进程事件。

type PrivilegeStage

type PrivilegeStage struct {
	// contains filtered or unexported fields
}

PrivilegeStage 处理 Agent 上报的 privilege escalation 事件 (P1-3).

DataType 3005 (内核态提权 hook 上报):

30 commit_creds  — UID/GID/cap 切换
31 setuid        — setreuid/setresuid
32 setgid        — setregid/setresgid
33 ptrace        — ptrace 注入 (T1055.008)
34 mount         — mount 调用 (T1611 容器逃逸)
35 kmod_load     — LKM rootkit 加载 (T1547.006)

规则:

  • UID 0→0 + cap 提升 → high
  • 非 root 提到 root → critical
  • ptrace 跨进程 → high
  • mount 含 /proc/self/exe 或 cgroup → critical (容器逃逸)
  • kmod_load 命中 已知 rootkit 名 → critical

func NewPrivilegeStage

func NewPrivilegeStage(logger *zap.Logger) *PrivilegeStage

NewPrivilegeStage 构造.

func (*PrivilegeStage) Name

func (s *PrivilegeStage) Name() string

Name 满足 Stage interface.

func (*PrivilegeStage) Process

func (s *PrivilegeStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 处理 DataType 3005 事件。

type QuarantineAuditStage

type QuarantineAuditStage struct {
	// contains filtered or unexported fields
}

QuarantineAuditStage 处理隔离箱事件 → 告警.

隔离意味检测到 webshell / virus / suspicious 文件, 默认 high 严重. 还原操作 → medium (可能是误报恢复).

func NewQuarantineAuditStage

func NewQuarantineAuditStage(logger *zap.Logger) *QuarantineAuditStage

NewQuarantineAuditStage 构造.

func (*QuarantineAuditStage) Name

func (s *QuarantineAuditStage) Name() string

Name 满足 Stage interface.

func (*QuarantineAuditStage) Process

Process 处理 DataType=14502 (隔离箱审计).

type RASPStage

type RASPStage struct {
	// contains filtered or unexported fields
}

RASPStage 处理 Agent 上报的 RASP 事件 (Java/PHP/Python/Node)。

严格 read-only:

  • 永远只产 Alert (告警 + storyline 关联)
  • 不下发 action_kill / action_throw_exception 等阻断指令
  • mode 字段在落 Kafka 前被 EnsureObserveMode 强制改 observe
  • 即便全局 mode.Resolver=protect, RASP 仍走 observe 路径

DataType 段: 4000-4099 (RASP 事件, Agent 上报)

func NewRASPStage

func NewRASPStage(logger *zap.Logger) *RASPStage

NewRASPStage 构造。

func (*RASPStage) Name

func (s *RASPStage) Name() string

Name 满足 Stage interface。

func (*RASPStage) Process

func (s *RASPStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 仅处理 RASP DataType 段。

type ReverseShellStage

type ReverseShellStage struct {
	// contains filtered or unexported fields
}

ReverseShellStage 反弹 shell 检测。

func NewReverseShellStage

func NewReverseShellStage(d *intrusion.ReverseShellDetector, logger *zap.Logger) *ReverseShellStage

NewReverseShellStage 构造。

func (*ReverseShellStage) Name

func (s *ReverseShellStage) Name() string

Name 满足 Stage interface。

func (*ReverseShellStage) Process

func (s *ReverseShellStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 仅处理进程类事件 (DataType 3000-3001 process_exec)。

type RootkitStage

type RootkitStage struct {
	// contains filtered or unexported fields
}

RootkitStage Rootkit/后门检测。

func NewRootkitStage

func NewRootkitStage(d *intrusion.RootkitDetector, logger *zap.Logger) *RootkitStage

NewRootkitStage 构造。

func (*RootkitStage) Name

func (s *RootkitStage) Name() string

Name 满足 Stage interface。

func (*RootkitStage) Process

func (s *RootkitStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 处理多种事件类型 (process_exec / file_create / kernel_module_load)。

type SequenceStage

type SequenceStage struct {
	// contains filtered or unexported fields
}

SequenceStage 接入 celengine.SequenceDetector, 检测 N 次内多事件触发的序列模式 (暴力破解 / 多次失败登录 / 反弹shell 多步)。

func NewSequenceStage

func NewSequenceStage(d *celengine.SequenceDetector, logger *zap.Logger) *SequenceStage

NewSequenceStage 构造 sequence stage。

func (*SequenceStage) Name

func (s *SequenceStage) Name() string

Name 返回 stage 名。

func (*SequenceStage) Process

func (s *SequenceStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 把 ev 喂给 detector,返回命中的 SequenceRule -> Alert。

func (*SequenceStage) WithAlertGenerator

func (s *SequenceStage) WithAlertGenerator(g *celengine.AlertGenerator) *SequenceStage

WithAlertGenerator 注入 AlertGenerator,让攻击链命中落 alerts 表(供 UI 与 incident 关联)。

type Stage

type Stage interface {
	Name() string
	Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)
}

Stage 是 Pipeline 中的一层检测处理器。

每个 Stage 接收 PipelineEvent (从 Kafka 消息解码得到), 检测命中时返回 Alert(s),不命中返回空 slice。

type StorylineStage

type StorylineStage struct {
	// contains filtered or unexported fields
}

StorylineStage 把事件喂给 storyline.Engine 关联攻击链。

Storyline 不直接产 Alert (它累积事件构建 story), 而是异步把已成熟的 story 推送到 mxcwpp.engine.storyline Topic。 这里 Stage.Process 返回空 Alert 数组,仅做 Ingest 副作用。

func NewStorylineStage

func NewStorylineStage(se *storyline.Engine, logger *zap.Logger) *StorylineStage

NewStorylineStage 构造 storyline stage。

func (*StorylineStage) Name

func (s *StorylineStage) Name() string

Name 满足 Stage interface。

func (*StorylineStage) Process

func (s *StorylineStage) Process(_ context.Context, ev PipelineEvent) ([]Alert, error)

Process 把事件喂给 storyline,无 Alert 直接返回。

故事完成时由 storyline.Engine 内部 goroutine 推 Kafka mxcwpp.engine.storyline, 与 Pipeline 主链解耦。

type WebshellStage

type WebshellStage struct {
	// contains filtered or unexported fields
}

WebshellStage 检测文件落地/修改事件中的 Web 后门启发式特征。

func NewWebshellStage

func NewWebshellStage(d *intrusion.WebshellDetector, logger *zap.Logger) *WebshellStage

NewWebshellStage 构造。

func (*WebshellStage) Name

func (s *WebshellStage) Name() string

Name 满足 Stage interface。

func (*WebshellStage) Process

func (s *WebshellStage) Process(ctx context.Context, ev PipelineEvent) ([]Alert, error)

Process 处理 FIM 文件事件 (DataType 6001 FIM)。

Directories

Path Synopsis
Package adaudit — AD / LDAP 域控审计 (EDR-4).
Package adaudit — AD / LDAP 域控审计 (EDR-4).
Package anomaly implements server-side ML anomaly detection.
Package anomaly implements server-side ML anomaly detection.
Package baseline implements the Server-side Behavior Detection Engine (BDE) baseline.
Package baseline implements the Server-side Behavior Detection Engine (BDE) baseline.
Package celengine 实现基于 CEL-Go 的实时检测规则引擎 支持从数据库加载 CEL 表达式规则,对 Kafka 消费事件进行实时评估并生成告警
Package celengine 实现基于 CEL-Go 的实时检测规则引擎 支持从数据库加载 CEL 表达式规则,对 Kafka 消费事件进行实时评估并生成告警
Package honeypot 实现反勒索 honeypot 服务端检测逻辑。
Package honeypot 实现反勒索 honeypot 服务端检测逻辑。
Package intrusion 实现入侵检测六件套:
Package intrusion 实现入侵检测六件套:
Package kube 提供 K8s/GKE 安全检查能力。
Package kube 提供 K8s/GKE 安全检查能力。
Package microseg 实现微隔离 (Microsegmentation) 流量观察 + 策略推荐 + Enforcement。
Package microseg 实现微隔离 (Microsegmentation) 流量观察 + 策略推荐 + Enforcement。
Package ml 是 Engine 的本地机器学习推理抽象。
Package ml 是 Engine 的本地机器学习推理抽象。
Package rasp 实现 RASP (Runtime Application Self-Protection) 服务端事件接收与检测。
Package rasp 实现 RASP (Runtime Application Self-Protection) 服务端事件接收与检测。
Package rollout — 规则灰度推送 (B6).
Package rollout — 规则灰度推送 (B6).
Package ruleimport 把 Falco / Sigma / Tetragon 规则转成 mxcwpp CEL 规则。
Package ruleimport 把 Falco / Sigma / Tetragon 规则转成 mxcwpp CEL 规则。
Package rulesync 实现基于 Git 仓库的检测规则同步 定期从远程 Git 仓库拉取规则 YAML,增量同步到 detection_rules 表
Package rulesync 实现基于 Git 仓库的检测规则同步 定期从远程 Git 仓库拉取规则 YAML,增量同步到 detection_rules 表
Package scheduler 是 v2.0 Engine 服务的调度器集合,承担:
Package scheduler 是 v2.0 Engine 服务的调度器集合,承担:
Package storyline aggregates Agent-side story_id-tagged events into attack storylines on the Server.
Package storyline aggregates Agent-side story_id-tagged events into attack storylines on the Server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL