Standarderkennungsregeln
YARA-L-Regelsprache
YARA-L ist eine von Google entwickelte Sprache für Erkennungsregeln. Der Zweck von YARA-L von Erkennungen als reine Datenabfragen zu tatsächlichen ereignisgesteuerten Recherchen. YARA-L ist eine abgeleitete Sprache der YARA-Sprache, die häufig in Malware-Analyse. L steht für Logs. Mit YARA-L können Sie aller Informationen aus mehreren Quellen innerhalb von Erkennungsmechanismen und korrelieren umsetzbare Benachrichtigungen zu verwandeln. Weitere Informationen finden Sie in der Übersicht über die Sprache YARA-L 2.0.
Beispielerkennungsregeln für Google Security Operations
Um die Einführung der Google Security Operations Detection Engine zu beschleunigen, Es gibt ein GitHub-Repository mit Beispiel- Regeln. Dieses Repository enthält verschiedene Kategorien von Erkennungsregeln, darunter:
- Google Cloud-Audit
- Google Workspace
- Warnungen zu Informationszwecken
- Malware
- MITRE ATT&CK
- SOC-Prime-Regeln
- Verdächtige Ereignisse
Für jede Kategorie wird ein bestimmter Ansatz für die Datenquellen verwendet und festgelegt, welche Ereignisse und Abgleichsausdrücke verwendet werden sollen.
Beispielregeln und -optimierung
Mit der folgenden Regel wird eine Ereignisvariable $e1
erstellt, mit der der Ereignistyp erfasst wird. Die Ereignisvariable kann ein beliebiger Wert sein, der für die Daten eine Bedeutung hat.
evaluiert werden. Das UDM-Feld, das bei diesem Ereignis ausgewertet wird, ist
metadata.eventype
. Es ist also sinnvoll, sie e1
zu nennen. Die nächsten Zeilen
sucht nach bestimmten Vorkommen von Übereinstimmungen mit regulären Ausdrücken in e1
. Die Bedingung,
erstellt in Google Security Operations jedes Mal eine Erkennung, wenn das Ereignis $e1
Zur Abstimmung wird die Bedingung not
angegeben, um bestimmte
nicht schädliche Pfade für das Befehlszeilenargument. Weitere not
-Bedingungen
kann dieser Regel hinzugefügt werden, wenn Sie feststellen, dass häufig falsch positive Ergebnisse
weitere bekannte Dateipfade.
rule suspicious_unusual_location_svchost_execution
{
meta:
author = "Google Cloud Security"
description = "Windows 'svchost' executed from an unusual location"
yara_version = "YL2.0"
rule_version = "1.0"
events:
$e1.metadata.event_type = "PROCESS_LAUNCH"
re.regex($e1.principal.process.command_line, `\bsvchost(\.exe)?\b`) nocase
not re.regex($e1.principal.process.command_line, `\\Windows\\System32\\`) nocase
condition:
$e1
}
Mehrere Ereignisvariablen angeben
Mit YARA-L können Sie mehrere Ereignisvariablen in einer Regel verwenden. Im folgenden Beispiel enthält die Regel die Ereignisse $e1
und $e2
. Die Bedingung gibt an,
logische Bedingung, die die Erkennung auslöst.
rule ExcludeZeroValues {
meta:
author = "noone@google.com"
events:
$e1.metadata.event_type = "NETWORK_DNS"
$e1.principal.hostname = $hostname
// $e1.principal.user.userid may be empty string.
$e1.principal.user.userid != "Guest"
$e2.metadata.event_type = "NETWORK_HTTP"
$e2.principal.hostname = $hostname
// $e2.target.asset_id cannot be empty string as explicitly specified.
$e2.target.asset_id != ""
match:
// $hostname cannot be empty string.
$hostname over 1h
condition:
$e1 and $e2
}
Bereich für Regelergebnisse
Legen Sie im Ergebnisbereich die Hold-Variablen für die Regelerkennung auf
und eine Bereicherung für den nachgelagerten Verbrauch bieten. Sie können beispielsweise einen Schweregrad
Bewertungsinformationen, die auf Daten aus den analysierten Ereignissen beruhen. Bei der folgenden Erkennung werden zwei Ereignisse untersucht, um den Wert $hostname
zuzuweisen. Wenn
wenn der Wert $hostnames
über einen Zeitraum von 5 Minuten übereinstimmt, ist ein Schweregradwert
angewendet. Wenn Sie Zeiträume verwenden, prüft die Google Security Operations Detection Engine nur die von Ihnen angegebenen Zeitblöcke.
rule OutcomeRuleMultiEvent {
meta:
author = "noone@google.com"
events:
$u.udm.principal.hostname = $hostname
$asset_context.graph.entity.hostname = $hostname
$severity = $asset_context.graph.entity.asset.vulnerabilities.severity
match:
$hostname over 5m
outcome:
$risk_score =
max(
100
+ if($hostname = "my-hostname", 100, 50)
+ if($severity = "HIGH", 10)
+ if($severity = "MEDIUM", 5)
+ if($severity = "LOW", 1)
)
$asset_id_list =
array(
if($u.principal.asset_id = "",
"Empty asset id",
$u.principal.asset_id
)
)
$asset_id_distinct_list = array_distinct($u.principal.asset_id)
$asset_id_count = count($u.principal.asset_id)
$asset_id_distinct_count = count_distinct($u.principal.asset_id)
condition:
$u and $asset_context and $risk_score > 50 and not arrays.contains($asset_id_list, "id_1234")
}
Fazit
YARA-L ist eine flexible Erkennungssprache, mit der Sie Sicherheitsereignisse prüfen und nicht nur eine Datenabfrage zurückgeben können. Die Variable „event“ wird verwendet, Nachverfolgen, welche Feldwerte im Bedingungsabschnitt der Regel verwendet werden Sie können ein einzelnes Ereignis oder mehrere Ereignisse im Zeitverlauf verwenden, Quellen für einen einzelnen Wert (z. B. $hostname aus verschiedenen Datenquellen) korrelieren und sogar Tools wie reguläre Ausdrücke verwenden, um Übereinstimmungen zu finden. Es ist wichtig, die Regeln an Ihre eigene Umgebung anzupassen. Dazu können Sie Ausschlüsse in der Logik angeben. Ich können auch Referenzlisten verwenden, um Elemente zu gruppieren und dann darauf zu verweisen. in der Regel ein. Denken Sie daran, dass Google Security Operations nicht alle für die Benachrichtigung gesendet werden soll. Sie können die Erkennung für mehrere und nur diejenigen ansprechen, die für Ihr Unternehmen am wichtigsten sind, zu verbessern.