Création d'une détection personnalisée
Les détections personnalisées vous permettent de spécifier des critères qui génèrent des détections sur le système ExtraHop. L'apprentissage automatique et les détections basées sur des règles détectent les comportements inhabituels et les menaces courantes. Toutefois, en créant une détection personnalisée, vous pouvez cibler les appareils et les comportements essentiels pour votre réseau.
Lorsque vous créez une détection personnalisée, vous devez créer un déclencheur qui identifie l'événement système et les conditions que le système doit surveiller, puis vous pouvez attribuer le déclencheur aux appareils ou groupes d'équipements spécifiques que vous souhaitez surveiller. Lorsque l'événement se produit, une détection est générée.
Dans ce guide, nous fournissons les étapes et un exemple de script qui génère une détection personnalisée lorsque des connexions suspectes sont établies avec des sites Web spécifiques via Windows PowerShell.
Before you begin
- Vous devez avoir une certaine connaissance d'ExtraHop déclencheurs. En particulier, considérez ces meilleures pratiques lors de l'écriture de votre script et de l'attribution de déclencheurs.
- Vous devez disposer d'un compte utilisateur auprès du privilèges nécessaire pour créer des déclencheurs.
- Si vous avez un console, créez un déclencheur sur le console et le déclencheur fonctionnera sur tous les capteurs connectés.
Créez un déclencheur pour générer des détections personnalisées
Les déclencheurs génèrent des détections personnalisées en appelant le commitDetection fonction dans le script du déclencheur.
Dans l'exemple suivant, le déclencheur génère une détection personnalisée lorsqu' un client PowerShell accède à un site Web connu sous le nom de site intermédiaire pour les données exfiltrées.
Le déclencheur identifie les connexions PowerShell en recherchant les hachages JA3 du client SSL appartenant à des clients PowerShell connus.
Si la connexion SSL est établie entre un client PowerShell et un hôte suspect, le déclencheur génère une détection. La détection inclut la version de PowerShell qui a initié la connexion, l'adresse IP du serveur et l'adresse IP du client.
Remarque : | Pour plus d'informations sur le commitDetection fonction, voir Référence de l'API Trigger. |
Création d'un type de détection personnalisé
Après avoir créé un déclencheur pour générer votre détection personnalisée, vous pouvez créer un type de détection personnalisé dans le catalogue de détection pour ajouter des informations supplémentaires à votre détection.
Afficher les détections personnalisées
Vous pouvez consulter les détections personnalisées sur le Détections page avec d'autres détections intégrées.
Regroupez la page des détections par type. Toutes les détections de la liste de détection sont regroupées par type de détection.
Par exemple, si votre nom d'affichage de détection est [custom]Segmentation Breach, l'entrée apparaîtrait dans la liste de détection comme dans la figure suivante :
En haut à gauche de la page, sélectionnez Carte MITRE. Les techniques MITRE liées à la détection personnalisée sont mises en évidence dans la matrice.
Prochaines étapes
Création d'une règle de notification de détection. Par exemple, vous pouvez configurer le système ExtraHop pour qu'il vous envoie un e-mail lorsque votre détection personnalisée se produit.
Exemple de déclencheur de détection personnalisé
Le script suivant est l'exemple complet de PowerShell/JA3 auquel il est fait référence dans ces instructions.
// If the server is internal, exit if ( ! Flow.server.ipaddr.isExternal ) { return; } // If the SSL host name is not set, exit if(SSL.host === null) { return; } // Continue only if the SSL 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 SSL 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' }); } } }
Nous vous remercions pour vos commentaires. Pouvons-nous vous contacter pour vous poser des questions complémentaires ?