engine

package
v0.0.0-...-8877ced Latest Latest
Warning

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

Go to latest
Published: Jun 25, 2026 License: AGPL-3.0 Imports: 27 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" 互不冲突, 同一份 mxcwpp.agent.* 消息会被两个 group 各消费一次。

View Source
const Version = "0.1.0-skeleton"

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

Variables

View Source
var SubscribedTopics = []string{
	"mxcwpp.agent.ebpf",
	"mxcwpp.agent.events",
	"mxcwpp.agent.scanner",
	"mxcwpp.agent.baseline",
	"mxcwpp.vuln.advisory",
}

SubscribedTopics 是 Engine ConsumerGroup B 订阅的 Topic 集合。 详见 docs/architecture.md §4.2 ConsumerGroup 拓扑。

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 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, handler MessageHandler, logger *zap.Logger) (*KafkaConsumer, error)

NewKafkaConsumer 构造 ConsumerGroup B。

brokers: Kafka broker 地址列表 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。

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 — Pod Security Standards 检查器 (B10).
Package kube — Pod Security Standards 检查器 (B10).
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