六个小时完成编写 EDR (Endpoint Detection and Response)

admin 2025年3月16日21:20:38评论11 views字数 5847阅读19分29秒阅读模式
六个小时完成编写 EDR (Endpoint Detection and Response)

用cursor+Go语言编写的轻量级EDR(终端检测与响应)系统,用于监控和保护计算机系统免受恶意软件和高级威胁的侵害。

功能特点

核心功能

  1. 进程监控

    • 实时监控系统进程的创建和终止
    • 收集进程信息(PID、名称、路径、命令行、用户等)
    • 检测可疑进程行为
    • CPU 使用率限制:限制 Agent 的 CPU 使用率,避免影响系统性能
  2. 网络监控

    • 监控网络连接的建立和关闭
    • 收集连接信息(本地/远程地址和端口、协议等)
    • 检测可疑网络活动
  3. 文件系统监控

    • 监控文件的创建、修改和删除
    • 计算文件哈希值用于完整性验证
    • 检测可疑文件操作
  4. Windows注册表监控

    • 监控关键注册表位置的更改(仅Windows系统)
    • 检测自启动项的修改
    • 检测系统配置的更改
  5. ATT&CK 攻击监控

    • 基于 MITRE ATT&CK 框架的攻击检测
    • 监控可疑命令和进程路径
    • 检测常见的攻击技术和战术
    • 监控计划任务的创建和修改
  6. Windows 事件日志监控

    • 监控 Windows 安全事件日志
    • 检测重要的系统和应用程序事件
    • 关注登录失败、账户创建、权限更改等关键事件
  7. 增强的规则引擎

    • 支持多种规则类型(进程、网络、文件、注册表)
    • 支持复杂条件表达式
    • 支持多种操作符(=, !=, >, <, >=, <=, contains, startswith, endswith, matches, in, not in)
    • 支持正则表达式匹配
  8. 加密通信

    • 使用RSA/AES混合加密
    • 支持HTTPS通信
    • 支持证书验证
    • 密钥管理功能
  9. 自动响应功能

    • 终止可疑进程
    • 隔离可疑文件
    • 阻止可疑网络连接
    • 记录安全事件
  10. Web控制台

    • 仪表板显示系统状态
    • 主机管理
    • 事件管理
    • 规则管理
    • 设置管理

系统架构

系统由三个主要组件组成:

  1. Agent:安装在终端设备上的轻量级客户端,负责收集数据和执行响应操作
  2. Server:中央服务器,接收和处理来自Agent的数据,执行高级分析
  3. Web Console:基于Web的用户界面,用于查看和管理安全事件

安装与使用

前提条件

  • Go 1.20或更高版本
  • SQLite3
  • 对于Windows注册表监控:Windows操作系统

编译

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 克隆仓库git clone https://github.com/aiedr/edr.gitcd edr# 编译Agentgo build -o edr-agent ./cmd/agent# 编译Servergo build -o edr-server ./cmd/server

运行Agent

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 基本用法./edr-agent# 指定服务器地址./edr-agent -server=https://server-address:8443# 指定扫描间隔./edr-agent -interval=30s# 指定监控目录./edr-agent -dirs=/etc,/bin,/usr/bin# 指定监控注册表键(仅Windows)./edr-agent -regs="HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"# 指定服务器证书./edr-agent -cert=/path/to/server-cert.pem# 不验证服务器证书(不推荐用于生产环境)./edr-agent -insecure# 指定服务器公钥./edr-agent -pubkey=/path/to/server-public.pem# 指定隔离目录./edr-agent -quarantine=/path/to/quarantine# 限制 CPU 使用率(百分比)./edr-agent -cpulimit=5.0# 调试模式./edr-agent -debug

运行Server

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line# 基本用法./edr-server# 指定监听地址./edr-server -addr=:8443# 指定数据库文件./edr-server -db=/path/to/server.db# 指定TLS证书和密钥./edr-server -cert=/path/to/cert.pem -key=/path/to/key.pem# 指定RSA私钥./edr-server -privkey=/path/to/private.pem# 调试模式./edr-server -debug

配置

Agent配置

Agent可以通过命令行参数或配置文件(JSON格式)进行配置:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line{  "server_addr": "https://server-address:8443",  "scan_interval": "30s",  "monitor_dirs": ["/etc", "/bin", "/usr/bin"],  "monitor_regs": ["HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"],  "debug": false,  "cert_file": "/path/to/server-cert.pem",  "insecure": false,  "public_key_file": "/path/to/server-public.pem",  "quarantine_dir": "/path/to/quarantine",  "cpu_limit": 5.0}

Server配置

Server可以通过命令行参数或配置文件(JSON格式)进行配置:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line{  "addr": ":8443",  "db_file": "/path/to/server.db",  "cert_file": "/path/to/cert.pem",  "key_file": "/path/to/key.pem",  "private_key_file": "/path/to/private.pem",  "debug": false}

规则系统

规则用于检测可疑活动并触发响应。规则示例:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line{  "id": 1,  "name": "可疑进程名称",  "description": "检测常见的恶意软件进程名称",  "type": "process",  "severity": "high",  "enabled": true,  "conditions": [    "name contains 'backdoor'",    "name contains 'trojan'",    "name contains 'keylogger'"  ],  "actions": ["alert", "log", "terminate_process"]}

规则类型

  • process:进程规则
  • network:网络规则
  • file:文件规则
  • registry:注册表规则(仅Windows)
  • attack:ATT&CK 攻击规则
  • event_log:Windows 事件日志规则

条件操作符

  • =:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于
  • contains:包含
  • startswith:以...开始
  • endswith:以...结束
  • matches:匹配正则表达式
  • in:在列表中
  • not in:不在列表中

响应动作

  • alert:创建警报
  • log:记录事件
  • terminate_process:终止进程
  • quarantine_file:隔离文件
  • block_connection:阻止网络连接

ATT&CK 攻击监控

ATT&CK 攻击监控基于 MITRE ATT&CK 框架,用于检测常见的攻击技术和战术。主要功能包括:

  1. 可疑命令检测:检测常见的恶意命令,如 PowerShell 编码命令、远程下载执行等
  2. 可疑路径检测:检测可疑的文件路径,如临时目录中的可执行文件
  3. 计划任务监控:监控计划任务的创建和修改,检测可疑的计划任务

示例检测规则:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line{  "id": 101,  "name": "PowerShell 编码命令",  "description": "检测使用编码命令的 PowerShell 执行",  "type": "attack",  "severity": "high",  "enabled": true,  "conditions": [    "command matches 'powershell.*-[eE].*[Ee]ncoded[Cc]ommand'"  ],  "actions": ["alert", "log", "terminate_process"]}

Windows 事件日志监控

Windows 事件日志监控用于检测重要的系统和应用程序事件。主要功能包括:

  1. 安全事件监控:监控登录失败、账户创建、权限更改等安全事件
  2. 系统事件监控:监控服务安装、事件日志清除等系统事件
  3. 应用程序事件监控:监控应用程序错误、崩溃等事件

监控的重要事件 ID 包括:

  • 4624:成功登录
  • 4625:登录失败
  • 4720:创建用户账户
  • 4728:将成员添加到安全组
  • 7045:服务安装
  • 104:事件日志已清除
  • 1102:审核日志已清除

CPU 使用率限制

为了避免 Agent 占用过多系统资源,影响系统性能,EDR 系统实现了 CPU 使用率限制功能:

  1. 动态调整:根据当前 CPU 使用率动态调整 Agent 的工作负载
  2. 可配置限制:通过命令行参数或配置文件设置 CPU 使用率限制
  3. 智能休眠:当 CPU 使用率超过限制时,自动计算并应用休眠时间

默认 CPU 使用率限制为 5%,可以通过 -cpulimit 参数进行调整。

Web控制台

Web控制台提供了一个用户友好的界面,用于管理和监控EDR系统。主要功能包括:

  1. 仪表板:显示系统概览,包括主机状态、事件统计和图表。
  2. 主机管理:查看和管理受监控的主机。
  3. 事件管理:查看、筛选和处理安全事件。
  4. 规则管理:创建、编辑、启用/禁用和删除规则。
  5. 设置:配置系统设置。

开发

项目结构

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineedr/├── cmd/                    # 命令行应用│   ├── agent/              # Agent应用│   └── server/             # Server应用├── pkg/                    # 共享包│   ├── agent/              # Agent核心功能│   │   ├── attack_monitor.go    # ATT&CK 攻击监控│   │   ├── event_log_monitor.go # Windows 事件日志监控│   │   ├── file_monitor.go      # 文件系统监控│   │   ├── network_monitor.go   # 网络监控│   │   ├── process_monitor.go   # 进程监控│   │   └── registry_monitor.go  # 注册表监控│   ├── crypto/             # 加密功能│   ├── database/           # 数据库操作│   ├── models/             # 数据模型│   ├── rules/              # 规则引擎│   └── server/             # Server核心功能│       └── web/            # Web控制台├── go.mod                  # Go模块文件└── README.md               # 项目说明

安全注意事项

  1. 在生产环境中,始终使用TLS证书和密钥保护通信。
  2. 定期更新规则以检测最新的威胁。
  3. 保护服务器和数据库免受未授权访问。
  4. 定期备份数据库。
  5. 根据系统性能调整 CPU 使用率限制。

许可证

MIT

原文始发于微信公众号(网安守护):六个小时完成编写 EDR (Endpoint Detection and Response)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月16日21:20:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   六个小时完成编写 EDR (Endpoint Detection and Response)https://cn-sec.com/archives/3846365.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息