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[1]
恶意样本库
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.[2]
相关开源的检测规则
GitHub - Yara-Rules/rules: Repository of yara rules[3]
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规则内容支持字符串、正则表达式、十六进制进行匹配
特征规则:
-
• 字符串:定义一个变量 $a = "字符串内容" -
• 正则表达式:定义一个变量 $a = /正则表达式内容/ -
• 十六进制:定义一个变量 $a = {十六进制内容}
条件规则:
-
• and:与 or:或 not:非 -
• all of them:所有条件匹配即告警 -
• any of them:有一个条件匹配即告警 -
•b and $c:abc同时匹配即告警 -
• (b) or $c:匹配a和b或c即告警
Yara规则常用修饰符:
-
• nocase:不区分大小写 -
• base64:base64字符串 -
• xor:异或字符串 -
• wide:宽字符
如何进行特征提取
-
1. 通过多个样本的对比来找出共同点特征 -
2. 通过分析协议、文件头等来找出特征
实例展示
利用已知规则测试识别挖矿、勒索、C2、WebShell
yara64.exe rulesmalware_index.yar -r example
利用已知规则测试识别算法
yara64.exe rulescrypto_index.yar -r example
利用已知规则测试识别加壳
yara64.exe rulespackers_index.yar -r example
利用已知规则测试识别反沙箱
yara64.exe rulesantidebug_antivm_index.yar -r example
自写规则识别恶意软件-测试(并不能进行实际识别)
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 rulesmem_find.yar PID
引用链接
[1]
GitHub - VirusTotal/yara: The pattern matching swiss knife:https://github.com/VirusTotal/yara[2]
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.:https://github.com/ytisf/theZoo[3]
GitHub - Yara-Rules/rules: Repository of yara rules:https://github.com/Yara-Rules/rules
原文始发于微信公众号(ElmWhite安全小记):应急响应-工具-ELK日志分析系统与Yara规则识别样本
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论