20.01.2021 11:05

Abuse.ch URLhaus als neue Datenquelle für unsere Aussendungen aufgenommen

Seit Mittwoch, 13. Jänner 2020 senden wir die Daten der URLhaus Feeds des abuse.ch-Projekts in unseren regelmäßigen Benachrichtigungen an Netzbetreiber aus. Die Feeds umfassen URLs, die Malwaredateien diverser Schadsoftwarefamilien hosten. Nach unseren Informationen sind die Daten der Quelle von sehr hoher Qualität, zusätzlich dazu verwenden wir nur die aktuellsten Daten. Feedback zu der neuen Datenquelle ist jederzeit gerne gesehen.

Wie die Feeds zu einer IntelMQ-Instanz hinzugefügt werden können, ist in IntelMQs Feed Dokumentation beschrieben. Aufgrund interner Anforderungen haben wir außerdem einige zusätzliche Verarbeitungsschritte. In den folgenden Abschnitten beschreiben wir diese Verarbeitung.

Wir haben zwei wesentliche Anforderungen, die für zusätzliche Komplexität sorgen:

  • Die Feeds beinhalten ein "Dateadded" Datenfeld, welches den Zeitpunkt angibt, an dem die Malware zum ersten Mal auf dieser URL verfügbar war (dieses Feld wird vom Parser "time.source" zugeordnet). Wir möchten aber, dass im "time.source" Feld der aktuellste Zeitpunkt steht, an dem die Malware unter der URL verfügbar war. Da die Daten des Feeds regelmäßig und in sehr kurzen Zeitintervallen auf Aktualität überprüft werden, kann die folgende Logik (in Pseudocode) angewendet werden: time.source = time.observation - 1 hour, wobei time.observation den Zeitpunkt beschreibt, an dem IntelMQ die Daten abgerufen hat. Daraus ergibt sich dann der Zeitpunkt, an dem die URL sicher aktiv war.
  • Wir benützen sowohl den Country-feed als auch den TLD-feed. Da beide Feeds überlappende Daten enthalten, müssen wir diese deduplizieren.

Um die erste Anforderung zu erfüllen sind zwei Schritte notwendig, da sich diese Aufgabe aktuell nicht mit einem einzelnen IntelMQ Bot bewerkstelligen lässt. Zunächst setzen wir einen modify expert mit der folgenden Konfiguration ein:

[
        {
                "rulename": "setze time.source auf time.observation",
                "if": {},
                "then": {
                        "time.source": "{msg[time.observation]}"
                }
        }
]

Darauf folgt ein sieve expert, mit folgenden Regeln:

if :exists time.source {
add! time.source -= '1 hour'
}

Mathematische Operationen auf Datetime-Objekte werden ab dem kommenden IntelMQ Release 2.3.0 unterstützt.

Um die kombinierten Daten der Feeds für Country und TLD zu deduplizieren, nutzen wir folgende Einstellungen:

  • filter_keys ist gesetzt auf raw,time.source,time.observation,feed.url
  • filter_type ist blacklist
  • Und mit redis_cache_ttl etwas niedriger als ein Tag: 82800 Sekunden

Beide Feeds werden einmal täglich abgeholt, dieser Vorgang wird mittels systemd timern gestartet. Für diesen Zweck nützen wir den scheduled run mode und den systemd service generator.

Zusammengefasst ergibt sich die Reihenfolge der eingesetzten Bots wie folgt:

  • Abuse.ch URLhaus Country Feed Collector und Abuse.ch URLhaus TLD Feed Collector
  • Abuse.ch URLhaus Parser
  • Modify Expert
  • Sieve Expert
  • Deduplicator Expert
  • Weitere Verarbeitungsschritte

This blog post is part of a series of blog posts related to our CEF Telecom 2018-AT-IA-0111 project, which also supports our participation in the CSIRTs Network.

Co-financed by the European Union Connecting Europe Facility

Verfasst von: Sebastian Wagner