Erstellen Sie eine benutzerdefinierte Erkennung
Mit benutzerdefinierten Erkennungen können Sie Kriterien angeben, anhand derer Erkennungen auf dem ExtraHop-System generiert werden. Maschinelles Lernen und regelbasierte Erkennungen erfassen ungewöhnliche Verhaltensweisen und häufige Bedrohungen. Durch die Erstellung einer benutzerdefinierten Erkennung können Sie jedoch die Geräte und Verhaltensweisen genauer untersuchen, die für Ihr Netzwerk von entscheidender Bedeutung sind.
Wenn Sie eine benutzerdefinierte Erkennung erstellen, müssen Sie einen Auslöser erstellen, der das Systemereignis und die Bedingungen identifiziert, auf die das System achten soll, und dann können Sie den Auslöser den spezifischen Geräten oder Gerätegruppen zuweisen, die Sie überwachen möchten. Wenn das Ereignis eintritt, wird eine Erkennung generiert.
In diesem Handbuch finden Sie die Schritte und ein Beispielskript, das eine benutzerdefinierte Erkennung generiert, wenn verdächtige Verbindungen zu bestimmten Websites über Windows PowerShell hergestellt werden.
Before you begin
- Sie müssen mit ExtraHop vertraut sein Trigger. Betrachten Sie insbesondere diese Best Practices beim Schreiben Ihres Skripts und beim Zuweisen von Triggern.
- Sie benötigen ein Benutzerkonto bei Privilegien erforderlich, um Trigger zu erstellen.
- Wenn du eine hast Konsole, erstelle einen Auslöser auf dem Konsole und der Auslöser läuft auf allen angeschlossenen Sensoren.
Einen Auslöser erstellen, um benutzerdefinierte Erkennungen zu generieren
Trigger generieren benutzerdefinierte Erkennungen, indem sie den commitDetection Funktion im Trigger-Skript.
Im folgenden Beispiel generiert der Auslöser eine benutzerdefinierte Erkennung, wenn ein PowerShell-Client eine Website aufruft, die als Staging-Site für exfiltrierte Daten bekannt ist.
Der Auslöser identifiziert PowerShell-Verbindungen, indem er nach JA3-Hashes des TLS-Clients sucht, die zu bekannten PowerShell-Clients gehören.
Wenn die TLS-Verbindung von einem PowerShell-Client zu einem verdächtigen Host hergestellt wird, generiert der Auslöser eine Erkennung. Die Erkennung umfasst die Version von PowerShell, die die Verbindung initiiert hat, die Server-IP-Adresse und die Client-IP-Adresse.
Hinweis: | Für weitere Informationen über die commitDetection Funktion, siehe Trigger-API-Referenz. |
Erstellen Sie einen benutzerdefinierten Erkennungstyp
Nachdem Sie einen Auslöser zur Generierung Ihrer benutzerdefinierten Erkennung erstellt haben, können Sie im Erkennungskatalog einen benutzerdefinierten Erkennungstyp erstellen, um weitere Informationen zu Ihrer Erkennung hinzuzufügen.
Benutzerdefinierte Erkennungen anzeigen
Sie können benutzerdefinierte Erkennungen auf der Erkennungen Seite mit anderen integrierten Erkennungen.
Gruppieren Sie die Erkennungsseite nach Typ. Alle Entdeckungen in der Erkennungsliste sind nach Erkennungstyp gruppiert.
Zum Beispiel, wenn Ihr Erkennungsanzeigename lautet [custom]Segmentation Breach, würde der Eintrag in der Erkennungsliste ähnlich der folgenden Abbildung erscheinen:
Wählen Sie links oben auf der Seite MITRE Karte. Die MITRE-Techniken, die mit der benutzerdefinierten Erkennung verknüpft wurden, sind in der Matrix hervorgehoben.
Die nächsten Schritte
Erstellen Sie eine Regel für Erkennungsbenachrichtigungen. Sie können das ExtraHop-System beispielsweise so konfigurieren, dass es Ihnen eine E-Mail sendet, wenn Ihre benutzerdefinierte Erkennung erfolgt.
Beispiel für einen benutzerdefinierten Erkennungsauslöser
Das folgende Skript ist das vollständige PowerShell/JA3-Beispiel, auf das in diesen Anweisungen verwiesen wird.
// If the server is internal, exit if ( ! Flow.server.ipaddr.isExternal ) { return; } // If the TLS host name is not set, exit if(SSL.host === null) { return; } // Continue only if the TLS hostname belongs to one of the suspicious sites if(SSL.host.match(/pastebin/i) || SSL.host.match(/raw.githubusercontent.com/i) || SSL.host.match(/githack/i)) { // List of common PowerShell JA3 hashes let suspect_ja3_hashes = cache('suspect_ja3_hashes', () => ({ '13cc575f247730d3eeb8ff01e76b245f':'PowerShell/BitsAdmin/PowerShell 4.0 Windows Server 2012RT', '5e12c14bda47ac941fc4e8e80d0e536f':'PowerShell/BitsAdmin/PowerShell 4.0 Windows Server 2012RT', '2c14bfb3f8a2067fbc88d8345e9f97f3':'PowerShell/BitsAdmin Windows Server 2012RT', '613e01474d42ebe48ef52dff6a20f079':'PowerShell/BitsAdmin Windows Server 2012RT', '05af1f5ca1b87cc9cc9b25185115607d':'BitsAdmin/PowerShell 5.0 Windows 7 64 bit enterprise', '8c4a22651d328568ec66382a84fc505f':'BitsAdmin/PowerShell 5.0 Windows 7 64 bit enterprise', '235a856727c14dba889ddee0a38dd2f2':'BitsAdmin/PowerShell 5.1 Server 2016', '17b69de9188f4c205a00fe5ae9c1151f':'BitsAdmin/PowerShell 5.1 Server 2016', 'd0ec4b50a944b182fc10ff51f883ccf7':'PowerShell/BitsAdmin (Microsoft BITS/7.8) Server 2016', '294b2f1dc22c6e6c3231d2fe311d504b':'PowerShell/BitsAdmin (Microsoft BITS/7.8) Server 2016', '54328bd36c14bd82ddaa0c04b25ed9ad':'BitsAdmin/PowerShell 5.1 Windows 10', 'fc54e0d16d9764783542f0146a98b300':'BitsAdmin/PowerShell 5.1 Windows 10', '2863b3a96f1b530bc4f5e52f66c79285':'BitsAdmin/PowerShell 6.0 Windows Server 2012RT', '40177d2da2d0f3a9014e7c83bdeee15a':'BitsAdmin/PowerShell 6.0 Windows Server 2012RT', '36f7277af969a6947a61ae0b815907a1':'PowerShell/BitsAdmin Windows 7 32 bit enterprise', })); // Store the client JA3 hash in a variable const hash = SSL.ja3Hash; // Iterate through each PowerShell JA3 hash for ( let ja3 in suspect_ja3_hashes ) { // If the client JA3 hash is from PowerShell, // commit the detection if ( hash.includes(ja3) ) { commitDetection('PowerShell_JA3', { categories: ['sec.caution'], title: "PowerShell / BitsAdmin Suspicious Connection", // Specify the offender as the device object of the client participants: [ { role: 'offender', object: Flow.client.device } ], description: "This TLS client matched a variant of PowerShell." + "\n"+ "Investigate other client behaviors on the victim host." + "\n"+ "- ** PowerShell/BitsAdmin JA3 client match**" + "\n"+ "- **Client IP:** " + Flow.client.ipaddr + "\n"+ "- **Server IP:** " + Flow.server.ipaddr + "\n"+ "- **JA3 Client Value:** " + ja3 + "\n"+ "- **JA3 Client Match:** " + suspect_ja3_hashes[ja3], // Create the identity key by combining the server IP address, client IP address, and PowerShell JA3 hash identityKey: [ Flow.server.ipaddr, Flow.client.ipaddr, hash ].join('!!'), riskScore: 60, identityTtl: 'hour' }); } } }
Danke für deine Rückmeldung. Dürfen wir Sie kontaktieren, um weitere Fragen zu stellen?