监控互联网的背景噪音
Melody 是一个为威胁情报设计的透明互联网传感器,由一个检测规则框架支撑,允许你标记感兴趣的数据包以进行进一步分析和威胁监控。
以下是 Melody 的一些关键特性:
由于我现在需要专注于其他项目,无法投入太多时间在 Melody 的开发上。
不过还有很多改进空间,以下是我未来想实现的一些功能:
cmd/meloctl 中的 Meloctl
在 https://github.com/ma111e/melody/releases 获取最新版本。
make install # 设置默认的出站接口
make cap # 设置网络能力,以便无需提升权限即可启动 Melody
make certs # 为 HTTPS 文件服务器创建自签名证书
make enable_all_rules # 启用默认规则
make service # 创建 systemd 服务,自动重启程序并在启动时启动
sudo systemctl stop melody # 在配置时停止服务
更新 filter.bpf 文件以过滤掉不需要的数据包。
sudo systemctl start melody # 启动 Melody
sudo systemctl status melody # 检查 Melody 是否正在运行
日志将开始堆积在 /opt/melody/logs/melody.ndjson 中。
tail -f /opt/melody/logs/melody.ndjson # | jq
git clone https://github.com/ma111e/melody /opt/melody
cd /opt/melody
make build
然后继续执行 发布版本 TL;DR 中的步骤。
make certs # 为 HTTPS 文件服务器创建自签名证书
make enable_all_rules # 启用默认规则
mkdir -p /opt/melody/logs
cd /opt/melody/
docker pull ma111e/melody:latest
MELODY_CLI="" # 在此处放入你的 CLI 选项。示例:export MELODY_CLI="-s -i 'lo' -F 'dst port 5555' -o 'server.http.port: 5555'"
docker run \
--net=host \
-e "MELODY_CLI=$MELODY_CLI" \
--mount type=bind,source="$(pwd)/filter.bpf",target=/app/filter.bpf,readonly \
--mount type=bind,source="$(pwd)/config.yml",target=/app/config.yml,readonly \
--mount type=bind,source="$(pwd)/var",target=/app/var,readonly \
--mount type=bind,source="$(pwd)/rules",target=/app/rules,readonly \
--mount type=bind,source="$(pwd)/logs",target=/app/logs/ \
ma111e/melody
日志将开始堆积在 /opt/melody/logs/melody.ndjson 中。
CVE-2020-14882 Oracle Weblogic Server RCE:
layer: http
meta:
id: 3e1d86d8-fba6-4e15-8c74-941c3375fd3e
version: 1.0
author: BonjourMalware
status: stable
created: 2020/11/07
modified: 2020/20/07
description: "Checking or trying to exploit CVE-2020-14882"
references:
- "https://nvd.nist.gov/vuln/detail/CVE-2020-14882"
match:
http.uri:
startswith|any|nocase:
- "/console/css/"
- "/console/images"
contains|any|nocase:
- "console.portal"
- "consolejndi.portal?test_handle="
tags:
cve: "cve-2020-14882"
vendor: "oracle"
product: "weblogic"
impact: "rce"
IPv4 上的 Netcat TCP 数据包:
{
"tcp": {
"window": 512,
"seq": 1906765553,
"ack": 2514263732,
"data_offset": 8,
"flags": "PA",
"urgent": 0,
"payload": {
"content": "I made a discovery today. I found a computer.\n",
"base64": "SSBtYWRlIGEgZGlzY292ZXJ5IHRvZGF5LiAgSSBmb3VuZCBhIGNvbXB1dGVyLgo=",
"truncated": false
}
},
"ip": {
"version": 4,
"ihl": 5,
"tos": 0,
"length": 99,
"id": 39114,
"fragbits": "DF",
"frag_offset": 0,
"ttl": 64,
"protocol": 6
},
"timestamp": "2020-11-16T15:50:01.277828+01:00",
"session": "bup9368o4skolf20rt8g",
"type": "tcp",
"src_ip": "127.0.0.1",
"dst_port": 1234,
"matches": {},
"inline_matches": [],
"embedded": {}
}