elkserver/docker/redelk-base/redelkinstalldata/scripts/modules/alarm_dummy/module.py (43 lines of code) (raw):
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Part of RedELK
This alarm always triggers. Only use for testing purposes.
Authors:
- Lorenzo Bernardi (@fastlorenzo)
"""
import logging
from modules.helpers import get_initial_alarm_result, get_query
info = {
"version": 0.1,
"name": "dummy alarm",
"alarmmsg": "ALARM GENERATED BY DUMMY",
"description": "This alarm always triggers. Only use for testing purposes.",
"type": "redelk_alarm",
"submodule": "alarm_dummy",
}
class Module:
"""dummy alarm module
This check returns the last IOC in rtops-* that have not been alarmed yet
"""
def __init__(self):
self.logger = logging.getLogger(info["submodule"])
def run(self):
"""Run the alarm module"""
ret = get_initial_alarm_result()
ret["info"] = info
ret["fields"] = [
"agent.hostname",
"@timestamp",
"host.name",
"user.name",
"ioc.type",
"file.name",
"file.hash.md5",
"ioc.domain",
"c2.message",
"alarm.alarm_filehash",
]
ret["groupby"] = []
for result in self.alarm_dummy():
ret["hits"]["hits"].append(result)
ret["mutations"][result["_id"]] = {"test": "extra_data"}
ret["hits"]["total"] += 1
self.logger.info(
"finished running module. result: %s hits", ret["hits"]["total"]
)
self.logger.debug(ret)
return ret
def alarm_dummy(self):
"""This check returns the last IOC in rtops-* that have not been alarmed yet"""
es_query = "c2.log.type:ioc AND NOT tags:alarm_*"
es_results = get_query(es_query, 1, index="rtops-*")
self.logger.debug(es_results)
return es_results