Elkeid 插件介绍-scanner_clamav
2022-4-25 09:57:6 Author: mp.weixin.qq.com(查看原文) 阅读量:7 收藏

Elkeid 静态检测插件 scanner_clamav ,使用clamav 引擎:https://docs.clamav.net/Introduction.html 对 Linux 系统进程和敏感目录进行周期扫描,以发现可疑静态文件(UPX/挖矿二进制/挖矿脚本/可疑脚本文件/...)。

开源地址: https://github.com/bytedance/Elkeid/tree/main/plugins/scanner_clamav

在 Elkeid 的 agent 中,静态检测插件需要在极其有限的内存和CPU资源占用条件下,在不同发行版和内核版本的  Linux x64 架构系统上进行静态扫描,因此使用完全静态链接的 libclamav 库以及裁剪后的 clamav database 与 yara 规则实现。资源占用数据如下:

Agent-插件占比 PCT

CPU 单核百分比

RSS Mb

静默

0

25.6

50

0.18

64.2

75

0.80

64.4

90

1.12

64.8

95

1.58

65

99

1.69

66

999

2.88

75

MAX

10

111

(PCT.50~PCT.999 为 Agent 每次心跳上报的数据统计分布占比)

参考 Github readme

中文 https://github.com/bytedance/Elkeid/blob/main/plugins/scanner_clamav/README-zh_CN.md

英文 https://github.com/bytedance/Elkeid/blob/main/plugins/scanner_clamav/README.md

考虑到部分国内用户无法在编译时正常拉取 zlib、ssl 等标准库的代码,这里配置了 github action 对应的 dockerfile 编译方式,参见:

  • Dockerfile

https://github.com/bytedance/Elkeid/blob/main/plugins/scanner_clamav/docker/Dockerfile

  • Github Action runner

https://github.com/bytedance/Elkeid/blob/main/.github/workflows/Elkeid.yml#L46

  • Action 产物

https://github.com/bytedance/Elkeid/actions/runs/2202809672

1.周期性扫描:对敏感目录和系统进程进行静态扫描

2.插件扫描任务:对静态检测插件下发扫描任务,对指定文件进行静态扫描

3.与策略联动:外网下载 &  php/jsp/asp 文件创建扫描,以发现 webshell 上传

4. 数据说明

数据类型汇总

4.1. 公共字段(6001 静态命中)

types

文件类型

class

恶意分类

name

恶意家族

exe

目标文件

exe_size

文件大小(byte)

exe_hash

快速hash,对标 driver exe_hash

md5_hash

md5

create_at

文件 brith_time, 文件系统不支持则为0

modify_at

文件修改时间, 文件系统不支持则为0

4.2. 进程信息(6002 进程的可执行文件命中)

pid

目标进程pid

ppid

父进程 pid

pgid

父进程 组id

tgid

thread group id

argv

进程命令行 cmdline

comm

进程的命令名

sessionid

进程所在会话 ID

uid

用户ID

pns

Process name space

4.3. 插件扫描任务

error

扫描任务执行错误信息(如果有)

token

扫描任务 token

{custom}

自定义数据

在 示例 https://github.com/bytedance/Elkeid/blob/main/plugins/scanner_clamav/README-zh_CN.md#%E6%89%AB%E6%8F%8F%E4%BB%BB%E5%8A%A1 中,

{    "id_list": [        "33623333-3365-4905-b417-331e183333ff"    ],    "data": {        "task": {            "data_type":6053,            "name": "scanner_clamav",            "data": "{\"exe\":\"/path/to/target\"}"        }    }}

字段 data 为给插件下发的扫描任务 json string,其中,exe 为待扫描的文件绝对路径,exe、data_type 以外的所有字段会 插入/覆盖(如果已经存在)到命中规则后上报的数据中。例,如果需要在上报的数据中插入预定义的sid,则需要变更如下:

{    "id_list": [        "33623333-3365-4905-b417-331e183333ff"    ],    "data": {        "task": {            "data_type":6053,            "name": "scanner_clamav",            "data": "{\"exe\":\"/path/to/target\",\"sid\":42414236}"        }    }
}

5. database 说明

完整的 clamav database 中包含六百万以上样本数据,加载需要 2G 以上内存使用,且 clamav database 中大部分规则类型为:文件 hash 校验、Section hash 校验,以及大量的 windows 相关病毒规则。在 Linux 服务端的场景下,windows pe 等无关的病毒规则可以裁剪掉,此外 hash 校验部分则可以在扫描时提取对应特征,随 agent 数据流到后端统一验证。裁剪后的 database 再配合低频率的扫描任务,这样可以大幅减少静态检测在端上的内存和 CPU 资源资源占用。

clamav 数据库支持 yara 格式(但有一些限制),且数据库文件支持自定义,详细格式以及数据库定义规则请参考 https://docs.clamav.net/manual/Signatures.html。


文章来源: https://mp.weixin.qq.com/s?__biz=MzI1NTc1NTcwNg==&mid=2247484258&idx=1&sn=692ba3f0d1930526592dd7bdceeb781f&chksm=ea3057b7dd47dea17d778776f6ec4ddffe183892548a6724b4af7757dfbf00dfa620ceeaf311&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh