43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
"""
|
||
|
Get lookup csv from urlhaus-filter
|
||
|
Usage: "| geturlhausfilter | outputlookup override_if_empty=false urlhaus-filter-splunk-online.csv"
|
||
|
"""
|
||
|
|
||
|
import sys
|
||
|
from os import path
|
||
|
|
||
|
sys.path.insert(0, path.join(path.dirname(__file__), "..", "lib"))
|
||
|
from splunklib.searchcommands import Configuration, GeneratingCommand, Option, dispatch
|
||
|
from utils import Utility
|
||
|
|
||
|
DOWNLOAD_URL = (
|
||
|
"https://malware-filter.gitlab.io/malware-filter/urlhaus-filter-splunk-online.csv"
|
||
|
)
|
||
|
|
||
|
|
||
|
@Configuration()
|
||
|
class GetUrlhausFilter(Utility, GeneratingCommand):
|
||
|
"""Defines a search command that generates event records"""
|
||
|
|
||
|
wildcard_prefix = Option(name="wildcard_prefix")
|
||
|
wildcard_suffix = Option(name="wildcard_suffix")
|
||
|
wildcard_affix = Option(name="wildcard_affix")
|
||
|
custom_message = Option(name="message")
|
||
|
|
||
|
def generate(self):
|
||
|
dl_csv = self.download(DOWNLOAD_URL)
|
||
|
for row in self.csv_reader(dl_csv):
|
||
|
if isinstance(self.custom_message, str) and len(self.custom_message) >= 1:
|
||
|
row["custom_message"] = self.custom_message
|
||
|
|
||
|
affixed_row = self.insert_affix(
|
||
|
row, self.wildcard_prefix, self.wildcard_suffix, self.wildcard_affix
|
||
|
)
|
||
|
yield self.gen_record(**affixed_row)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
dispatch(GetUrlhausFilter, sys.argv, sys.stdin, sys.stdout, __name__)
|