
einfacher YARA-basierter IOC-Scanner
...ein einfacher, eigenständiger modularer host-basierter IOC-Scanner
Spyre ist ein einfacher host-basierter IOC-Scanner, der auf der YARA-Mustererkennungs-Engine und anderen Scan-Modulen basiert. Das Hauptziel dieses Projekts ist die einfache Operationalisierung von YARA-Regeln und anderen Indikatoren einer Kompromittierung.
Benutzer müssen ihre eigenen Regelsätze mitbringen. Das Repository awesome-yara bietet einen guten Überblick über die verfügbaren kostenlosen YARA-Regelsätze.
Spyre soll von Incident Respondern als Untersuchungswerkzeug eingesetzt werden. Es ist nicht dazu gedacht, sich zu einer Art Endpunktschutzdienst zu entwickeln.
Die Verwendung von Spyre ist einfach:
filescan.yar bzw. procscan.yar. Für die Bereitstellung von Regeldateien für Spyre stehen folgende Optionen zur Verfügung (die in dieser Reihenfolge versucht werden):
spyre oder spyre.exe heißt, verwenden Sie spyre.zip.ZIP-Dateiinhalte können mit dem Passwort infected (AV-Industriestandard) verschlüsselt werden, um zu verhindern, dass Antivirensoftware das Regelset scannt, es als schädlichen Inhalt einstuft und den Scan verhindert.
YARA-Regeldateien können include-Anweisungen enthalten.
2. Bereitstellen, den Scanner ausführen
3. Bericht und Beweise sammeln
Die Laufzeitkonfiguration erfolgt über eine optionale Datei spyre.yaml.
Wenn eine ZIP-Datei an die Spyre-Binärdatei angehängt wurde, werden Konfiguration und andere Dateien wie YARA-Regeln nur aus dieser ZIP-Datei gelesen. Andernfalls werden sie aus dem Verzeichnis gelesen, in dem sich die Binärdatei befindet.
Siehe das Unterverzeichnis example-configuration/ für ein Beispiel.
hostname / Kommandozeilenschalter --set-hostname: Legt den Hostnamen explizit fest, der in der Logdatei und im Bericht verwendet wird. Dies ist normalerweise nicht erforderlich.
max-file-size / Kommandozeilenschalter --max-file-size: Maximale Größe für Dateien, die mit aufwändigen Dateiscanmodulen wie YARA gescannt werden sollen. Standard: 32 MB
proc-ignore-names / Kommandozeilenschalter --proc-ignore: Namen von Prozessen, die nicht mit Prozessspeicher-Scanmodulen gescannt werden.
paths / Kommandozeilenschalter --path: Pfade, die mit Dateiscanmodulen gescannt werden sollen. Standard: / (Unix) oder alle Festplatten (Windows).
report / Kommandozeilenschalter --report: Legt ein oder mehrere Berichtsziele fest. Standard: spyre_${hostname}_${time}.log im aktuellen Arbeitsverzeichnis im Klartextformat. Ein anderes Ausgabeformat kann durch Anhängen von angegeben werden.
Derzeit gibt es drei Bereiche, für die Scanmodule implementiert werden können: Systemprüfungen, Datei-Scans und Prozess-Scans.
Nachfolgend sind die derzeit implementierten Module und unterstützten Konfigurationsparameter aufgeführt.
system
eventobj (Windows)
iocsregistry (Windows)
iocswinkernelobj (Windows)
iocsconficker, boolean: Sollen dynamische (host-/prozessbasierte) Conficker-IOCs zur IOC-Liste hinzugefügt werden? (Standard: false)findwindow (Windows)
iocsfile
yara
rule-filesBitte lesen Sie die Beispielkonfigurationsdatei example-spyre.yaml für Hinweise, wie Indikatoren einer Kompromittierung für jedes Modul beschrieben werden.
YARA ist mit Standardeinstellungen konfiguriert, plus den folgenden expliziten Schaltern (vgl. 3rdparty.mk):
--disable-magic--disable-cuckoo--enable-dotnet--enable-macho--enable-dexFür Datei-Scans sind die folgenden Variablen definiert:
filename,filepath,extension,filetype (wird derzeit beim Scannen nicht gefüllt)Für Prozess-Scans sind die Variablen pid und executable definiert.
Die Metavariable spyre_collect_limit kann verwendet werden, um die Anzahl der von übereinstimmenden Dateien gesammelten Schreibvorgänge zu begrenzen oder das Sammeln von Dateien insgesamt zu unterbinden. Dies kann nützlich sein, um die Größe von Beweispaketen zu begrenzen und die Sammlung sensibler Informationen zu vermeiden.
Spyre kann für 32-Bit- und 64-Bit-Linux- und Windows-Ziele erstellt werden.
Auf einem Debian/Buster-System (oder einem chroot), in dem die folgenden Pakete installiert wurden:
GOROOT nicht gesetzt wurde.Dies beschreibt die Build-Umgebung, die regelmäßig über CI getestet wird.
Der gleiche Build wurde auch erfolgreich auf Fedora 30 mit den folgenden installierten Paketen getestet:
Sobald alles installiert ist, geben Sie einfach make ein. Dadurch sollten Archive für musl-libc, openssl, yara heruntergeladen, diese erstellt und dann spyre erstellt werden.
Die reinen spyre-Binärdateien werden in _build/<triplet>/ erstellt.
Durch Ausführen von make release wird eine ZIP-Datei erstellt, die diese Binärdateien für alle unterstützten Architekturen enthält.
Die Kompatibilität mit diesen Systemen wurde mit Go 1.11 entfernt, daher wird eine Go 1.10-Toolchain benötigt. Da Go 1.10 keine Go-Module unterstützt, müssen Go-Abhängigkeiten von Drittanbietern vorgehalten werden: Verwenden Sie eine neuere Go-Version dafür (einfach go vendor ausführen) und setzen Sie GOROOT so, dass es auf die Go 1.10-Toolchain zeigt, bevor Sie make ausführen.
Derzeit wird Cross-Compiling nicht unterstützt.
Das systemeigene make ist zu alt, weil Apple beschlossen hat, allergisch auf GPLv3 zu reagieren. gmake von Homebrew funktioniert einwandfrei.
Siehe HACKING.md
Copyright 2018-2020 DCSO Deutsche Cyber-Sicherheitsorganisation GmbH
Copyright 2020-2021 Spyre Project Authors (siehe: AUTHORS.txt)
Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU Lesser General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version weiterverbreiten und/oder modifizieren.
Siehe die LICENSE-Datei für den vollständigen Lizenztext.
,format=FORMATDie folgenden Formate werden derzeit unterstützt:
plain, der Standard, ein einfaches, menschenlesbares Textformattsjson, ein JSON-Dokument, das in Timesketch importiert werden kannDie Variablen hostname und time werden nur im Ziel-Dateinamen expandiert.
Hinweis: Die Konfiguration der Berichtsziele wird sich voraussichtlich in einer der nächsten Versionen ändern.
high-priority / Kommandozeilenschalter --high-priority: In der Standardkonfiguration (mit deaktivierter Einstellung) weist Spyre den Betriebssystem-Scheduler an, die Prioritäten von CPU-Zeit- und E/A-Vorgängen zu senken, um Störungen des normalen Systembetriebs zu vermeiden.
Kommandozeilenschalter --loglevel=LEVEL: Legt die Protokollebene fest. Gültig: trace, debug, info, notice, warn, error, quiet.
fail-on-warningsproc
yara
rule-filesfail-on-warnings