应急响应-工具-ELK日志分析系统与Yara规则识别样本

应急响应-工具-ELK日志分析系统与Yara规则识别样本

N0va7
2025-09-01 / 0 评论 / 3 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年09月01日,已超过275天没有更新,若内容或图片失效,请留言反馈。

ELK日志分析系统

  1. Elasticsearch:用于存储收集到的日志信息
  2. Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch
  3. Kibana:通过Web端的可视化界面来查看日志

很多日志分析的应用都不够全面,ELK解决了很多不完善的地方,是蓝队日志分析的一个好工具,是一个外国的产品,在系统下搭建很麻烦,很容易出错,如果只是日常使用,方便了解,建议在docker下搭建,如果是实战,建议在系统下搭建,毕竟docker只是个虚拟容器。

环境搭建

使用的Docker镜像sebp/elk:793

注意该容器使用的内存大约在2.1G左右

服务器需要安装Docker、Docker-compose

这个镜像是Elasticsearch、Logstash、Kibana集成容器镜像,使用docker或者docker-compose启动后各个组件就会启动成功

apt update
apt install docker
apt install docker-compose
# 设置一个进程可以拥有的VMA(虚拟内存区域)的数量
sysctl -w vm.max_map_count=262144
# 使上个命令立即生效
sysctl -p

如果有出现vm.max_map_count = 262144说明设置成功

vim docker-compose.yml
# 文件内容
version: "3.5"
services:
  elk:
    image: sebp/elk:7.12.0
    volumes:
       - ./elk/02-beats-input.conf:/etc/logstash/conf.d/02-beats-input.conf
    environment:
      ES_JAVA_OPTS: -Xms512m -Xmx512m
    ports:
      #Kibana 网络界面
      - "5601:5601"
      # Elasticsearch JSON 接口
      - "9200:9200"
      # Logstash Beats 接口
      - "5044:5044"

在docker-compose.yml文件目录下创建elk文件夹,创建Logstash配置文件02-beats-input.conf

#进入elk目录
cd elk
#创建并编辑02-beats-input.conf文件
vi 02-beats-input.conf
input {
    tcp {
        port => 5044
        codec => json_lines
    }
}
output{
    elasticsearch {
      hosts => ["localhost:9200"]
      index => "beat-%{+YYYY.MM.dd}"
    }
}
docker-compose up -d elk

支持大量日志解析

上传日志文件解析

上传文件解析

通过搜索语法快速筛选

特定部署采集分析

恶意样本Yara分析

Yara工具地址

GitHub - VirusTotal/yara: The pattern matching swiss knife

恶意样本库

GitHub - ytisf/theZoo: A repository of LIVE malwares for your own joy and pleasure. theZoo is a project created to make the possibility of malware analysis open and available to the public.

相关开源的检测规则

GitHub - Yara-Rules/rules: Repository of yara rules

https://github.com/JerryLinLinLin/Huorong-ATP-Rules

https://github.com/m-sec-org/d-eyes/tree/master/yaraRules

规则分类

  1. Antidebug_AntiVM:反调试/反沙箱类yara规则
  2. Crypto:加密类yara规则
  3. CVE_Rules:CVE漏洞利用类yara规则
  4. email:恶意邮件类yara规则
  5. Exploit-Kits:EK类yara规则
  6. Malicious_Documents:恶意文档类yara规则
  7. malware:恶意软件类yara规则
  8. Mobile_Malware:移动恶意软件类yara规则
  9. Packers:加壳类yara规则
  10. utils:通用类yara规则
  11. Webshells:Webshell类yara规则

检测范围

  1. 样本文件
  2. 内存数据
  3. 网络流量

Yara规则开发

参考文章

YARA规则与办公安全:高效检测策略

Yara规则内容支持字符串、正则表达式、十六进制进行匹配

特征规则:

  • 字符串:定义一个变量 $a = "字符串内容"
  • 正则表达式:定义一个变量 $a = /正则表达式内容/
  • 十六进制:定义一个变量 $a = {十六进制内容}

条件规则:

  • and:与 or:或 not:非
  • all of them:所有条件匹配即告警
  • any of them:有一个条件匹配即告警
  • $a and $b and $c:abc同时匹配即告警
  • ($a and $b) or $c:匹配a和b或c即告警

Yara规则常用修饰符:

  • nocase:不区分大小写
  • base64:base64字符串
  • xor:异或字符串
  • wide:宽字符

如何进行特征提取

  1. 通过多个样本的对比来找出共同点特征
  2. 通过分析协议、文件头等来找出特征

实例展示

利用已知规则测试识别挖矿、勒索、C2、WebShell

yara64.exe rules\malware_index.yar -r example

利用已知规则测试识别算法

yara64.exe rules\crypto_index.yar -r example

利用已知规则测试识别加壳

yara64.exe rules\packers_index.yar -r example

利用已知规则测试识别反沙箱

yara64.exe rules\antidebug_antivm_index.yar -r example

自写规则识别恶意软件-测试(并不能进行实际识别)

xmrig挖矿病毒前几个16进制数据

存在关键字数据

rule xmrig_find : miner {
    meta:
        author = "ElmWhite"
        date = "2025-02-20"
    strings:
        $hex = {4D 5A}
        $a = "stratum"
        $b = "xmrig"
        $c = "pool"
    condition:
        all of them
}

自写规则识别内存马

rule mem_find : memshell {
    meta:
        author = "ElmWhite"
        date = "2024-09-05"
    strings:
        $a = "org.apache.coyote.type.MapLikeType"
        $b = "org.apache.coyote.deser"
        $c = "org.apache.coyote.exc"
    condition:
        ($a and $b) or $c
}
yara64.exe rules\mem_find.yar PID

0

评论 (0)

取消