Skip to content

Latest commit

 

History

History
241 lines (201 loc) · 11.8 KB

eagleeye.md

File metadata and controls

241 lines (201 loc) · 11.8 KB

vela-eagleeye

鹰眼,洞察全局,发现蛛丝马迹

主机内自动化资产采集与应急响应溯源模块(preview)

更新日志

2023年5月17日
初步demo 传到git备份一下
2023年8月17日
主要是想关联分析和上传主机内的资产数据, 尝试利用端口指纹配合资产识别配合本地进程做采集(beta1)
问题:1. 需要探索性能问题,进程和网络关联分析
2023年9月27日
前段时间探索性地实现数据库信息采集(被动采集和主动探测结合, 全部手写实现)
问题:1. 过于繁琐, 数据结构不好一致(特别是想尽可能多地采集数据库运维信息和安全资产信息的情况下)
2023年11月10日
解决Linux和Windows双端系统CPU和进程占用信息采集, 优化准确度, 结合进vela-kit的环形队列, 不再单独采集了
2023年11月16日
最近尝试加入容器相关信息和资产的采集, 仅限于linux平台, 包括容器服务状态和运行中的容器信息和资产提取与扫描
问题:1. 容器信息采集需要docker api, 需考虑api的兼容性和socket访问会导致docker服务启动可能带来的风险
2024年3月27日
重新修改了原来的模块和架构,开发Windows系统下的功能
加入 windows平台下的多个功能, 包括计划任务采集, 系统服务采集, 安装的软件包采集, 主机内开启启动项采集等
2024年3月29日
完全重构项目, 重命名为vela-eagleeye(鹰眼, 洞察全局, 发现蛛丝马迹)
2024年4月1日
加入Windows系统用户信息获取
2024年4月2日
系统用户信息在windows下采集sam hash等信息, 支持弱口令账户检测功能, 优化vela-sam模块
2024年4月3日
Windows系统防火墙规则采集
2024年4月7日
Linux系统软件清单采集, 以及对接系统组件供应链安全(前期)
2024年4月9日
发布 vela-eagleeye v0.3.0 preview版本
2024年4月11日
1.加入程序所处硬件环境判断(物理机/虚拟机/容器, 支持Windows和Linux)
2.历史命令采集(支持Windows和Linux)
2024年4月15日
1.Linux上系统服务采集更新优化
2.加入进程的句柄信息采集功能
2024年5月6日
加入windows系统杀软采集(WD原生方法)
2024年5月14日
完善数据采集逻辑和内部接口

功能

Overview

采集项/ 功能 Windows Linux 备注
获取磁盘信息
获取cpu信息
获取内存信息
运行环境判断(物理机\虚拟机\容器)
系统计划任务采集
系统服务信息采集
系统安装补丁信息采集(Windows)
获取安装的软件列表 ❔不同操作系统和版本的兼容
❔不同方式获取的数据准确性性
系统用户信息采集 🏗 系统账户弱口令风险本地检测(Windows和Linux)
开机自启项采集 ❔不同操作系统和版本的兼容性
网卡信息采集 🏗
进程信息采集
进程句柄信息采集
网络连接信息采集
历史命令采集
系统防火墙规则采集 🏗
杀软\EDR安装和运行信息采集
是否有外网访问权限 公网出口IP, 是否有独立IP
hosts采集
arp缓存采集
dns缓存采集
路由表信息采集
共享资源信息采集
基于进程信息的被动资产识别
基于网络连接信息的被动资产识别
容器服务和资产信息采集(linux)
浏览器密码抓取(windows)
浏览器最近流量信息抓取(windows)
本地凭证抓取(windows)
最近访问或修改的文件(windows)
杀软详细信息采集(windows)
基于everything的文件速览(windows)
⚠防火墙规则控制(增删改)
⚠系统服务控制(启停)
⚠网卡连接控制(禁用或启用)
⚠进程控制(kill进程)
⚠网络控制(一键阻断)
性能信息统一持续采集循环队列实时监控 比kit自带的做得更详细,尽可能多地监控和检测
如CPU占用、内存占用、网络流量、磁盘读写、句柄、网络连接数等等
windows高阶采集(以火绒剑为例) 如系统驱动加载\ 钩子检测\等等
对接威胁情报(文件哈希)
对接威胁情报(网络连接IP地址)
对接威胁情报(域名)

linux平台

目前就打算先开发的功能

  1. 主机内docker容器的资产识别
  2. 主机内系统计划任务采集
  3. 获取系统服务的状态
  4. 获取安装的软件列表
  5. 获取磁盘空间占用
  6. 历史命令
  7. 运行环境判断
  8. 磁盘\cpu\内存基础信息采集
  9. 进程采集
  10. 句柄信息采集
  11. 网络信息采集

Windows平台

  1. 获取安装的软件列表
  2. 主机内系统计划任务采集
  3. 主机内开启启动项采集
  4. 主机内服务信息采集
  5. 磁盘硬件和分区信息采集
  6. 主机内系统用户采集和风险检测
  7. 杀软状态, win defender 杀软信息采集(详细,有策略和防护日志等)
  8. 系统防火墙规则采集
  9. 系统补丁信息采集
  10. 运行环境判断
  11. 磁盘\cpu\内存基础信息采集
  12. 进程采集
  13. 句柄信息采集
  14. 网络信息采集

todo

  1. 收集到资产后, 集成安全功能
  2. 增加采集资产的维度, 除了计划任务和docker, 还可以采集 系统服务,安装的软件包等等
  3. 优化采集的逻辑以及返回的数据结构
  4. 其它

使用说明

目前处于开发阶段, 未暴露LUA SDK
第一步 运行模块
运行lua脚步调用该模块
第二步 查看数据
方式1: 通过内部HTTP API在线查看采集的数据 方式2: 下载.ssc.db文件,本地查看采集的数据

HTTP API

⚠API统一前缀 /api/v1/arr/agent/eagleeye/

通用(generic)接口

.../collectAll 采集所有信息

备注: 采集的信息统一存入本地的bucket
以下接口都是读取的bucket内的缓存数据, 而不是实时重新采集

.../socket 获取网络连接信息

待编写详细文档和说明

.../process 获取进程信息

待编写详细文档和说明

.../commandHistroy 获取历史命令

待编写详细文档和说明

.../hardwareEnv 获取机器环境信息

待编写详细文档和说明

.../services 获取系统服务信息

待编写详细文档和说明

Windows特有接口

以下接口仅Windows可用

.../autoRuns 获取开机自启动信息

待编写详细文档和说明

.../diskInfo 获取磁盘信息

待编写详细文档和说明

.../cronTabs 获取计划任务信息

待编写详细文档和说明

.../softwareList 获取软件安装清单

待编写详细文档和说明

.../systemUserInfo 获取系统用户信息

待编写详细文档和说明

.../firewallRules 获取系统防火墙规则

待编写详细文档和说明

.../patches 获取补丁信息

待编写详细文档和说明

Linux 特有接口

.../docker 获取docker相关信息

待编写详细文档和说明

LUA API

主服务

初始化方法 vela.eagleeye{}

初始化eagleeye服务对象
传入参数为一个LUA Table, 字段说明如下

参数名 数据类型 是否必填 说明
name string 扫描主服务名称
debug bool 是否开启debug模式(console输出debug日志)

返回值 eagleeye服务对象

(eagleeye).startService()方法

启动服务
传入参数
返回值

(eagleeye).collectAll()方法

一键采集所有信息
信息默认存储到agent统一的bucket中(默认为.ssc.db)

传入参数
返回值

(eagleeye).define()方法

开启HTTP API服务
传入参数
返回值

(eagleeye).cache()方法

设置缓存模式(存入本地的bucket)
传入参数
返回值

示例(lua)

eg.1 :

serv=vela.eagleeye{}    
-- 启动服务
serv.startService()
-- 开启内部HTTP API
serv.define()
-- 采集一次
serv.collectAll()