Share via


Détecter de nouvelles menaces en utilisant Microsoft Sentinel avec Azure Web Application Firewall

Les applications web font face à des attaques malveillantes fréquentes qui exploitent des vulnérabilités connues, comme l’injection de code et les attaques par traversée de répertoire. Ces attaques sont difficiles à empêcher dans le code d’application, car elles nécessitent une maintenance constante, des mises à jour correctives et une surveillance à plusieurs niveaux de l’architecture d’application. Une solution WAF (Web Application Firewall) peut fournir une sécurité plus rapide et centralisée en appliquant un patch sur une vulnérabilité connue pour toutes les applications web, au lieu de sécuriser chacune d’elles individuellement. Azure Web Application Firewall est un service cloud natif qui protège les applications web contre les techniques courantes de piratage web. Il peut être déployé rapidement pour obtenir une visibilité complète du trafic de l’application web et bloquer les attaques web malveillantes.

En intégrant Azure WAF à Microsoft Sentinel (une solution SIEM native cloud), vous pouvez automatiser la détection et la réponse aux menaces/incidents/alertes, et économiser du temps et du travail pour mettre à jour la stratégie WAF. Cet article explique comment créer des règles d’analyse/détections dans Microsoft Sentinel pour des attaques comme l’injection de code.

Requêtes de détection pour les attaques d’applications web

Le dépôt GitHub Azure Network Security contient les requêtes prédéfinies suivantes que vous pouvez utiliser pour créer des règles d’analyse dans Microsoft Sentinel. Ces règles d’analyse aident à détecter et à répondre automatiquement à des attaques comme l’injection de code, la traversée de répertoire et les attaques basées sur un scanneur.

  • Attaques par injection de code (Application Gateway et WAF Front Door)

    Une attaque par injection de code est un type de cyber-attaque qui implique l’injection de code malveillant dans une application. L’application interprète ou exécute ensuite le code, ce qui affecte les performances et le fonctionnement de l’application.

  • Attaques par traversée de répertoire (Application Gateway et WAF Front Door)

    Une attaque par traversée de répertoire est un type de cyber-attaque qui implique la manipulation des chemins d’accès des fichiers d’une application pour accéder aux fichiers et aux répertoires stockés en dehors du dossier racine web. L’attaquant peut utiliser des séquences de caractères spéciaux, comme …/ ou …\, pour monter dans la hiérarchie des répertoires et accéder à des données sensibles ou confidentielles, comme des fichiers de configuration, du code source ou des fichiers système.

  • Attaques basées sur un scanneur (WAF Application Gateway)

    Une attaque web basée sur un scanneur est un type de cyber-attaque qui implique l’utilisation d’un scanneur de vulnérabilités web pour rechercher et exploiter les faiblesses de sécurité dans les applications web. Un scanneur de vulnérabilités web est un outil qui scanne automatiquement les applications web pour détecter les vulnérabilités courantes, telles que l’injection SQL, XSS, CSRF et la traversée de répertoire. L’attaquant peut utiliser le scanneur pour identifier les cibles vulnérables et lancer des attaques pour les compromettre.

Configurer des règles d’analyse dans Sentinel pour les attaques d’applications web

Les prérequis suivants sont nécessaires pour configurer des règles d’analyse :

Pour configurer une règle d’analyse dans Sentinel, procédez comme suit.

  1. Accédez à Microsoft Sentinel, puis sélectionnez l’onglet Analyse. Sélectionnez Créer, puis Règle de requête planifiée. Screenshot showing creating a scheduled query rule.

    Les tactiques et techniques fournies ici sont données seulement à titre d’information et proviennent de la Base de connaissances MITRE ATT&CK, qui est une base de connaissances des tactiques et techniques des personnes mal intentionnées, basées sur des observations réelles.

  2. Vous pouvez utiliser l’Assistant Règle d’analyse pour définir un niveau de gravité pour cet incident. Étant donné qu’il s’agit d’attaques majeures, Gravité élevée est sélectionné.

    Screenshot showing the analytics rule wizard.

  3. Dans la page Définir la logique de la règle, entrez la requête d’injection de code prédéfinie suivante : vous trouverez cette requête dans le dépôt GitHub Azure Network Security. De même, vous pouvez utiliser n’importe quelle autre requête disponible dans le dépôt pour créer des règles d’analyse et détecter les modèles d’attaque respectifs.

     let Threshold = 3; 
    
     AzureDiagnostics
     | where Category == "ApplicationGatewayFirewallLog"
     | where action_s == "Matched"
     | where Message has "Injection" or Message has "File Inclusion"
     | where ruleGroup_s == "REQUEST-932-APPLICATION-ATTACK-RCE" or ruleGroup_s ==    "REQUEST-931-APPLICATION-ATTACK-RFI" or ruleGroup_s == "REQUEST-932-APPLICATION-ATTACK-RCE" or    ruleGroup_s == "REQUEST-933-APPLICATION-ATTACK-PHP" or ruleGroup_s ==    "REQUEST-942-APPLICATION-ATTACK-SQLI" or ruleGroup_s == "REQUEST-921-PROTOCOL-ATTACK" or ruleGroup_s    == "REQUEST-941-APPLICATION-ATTACK-XSS"
     | project transactionId_g, hostname_s, requestUri_s, TimeGenerated, clientIp_s, Message,    details_message_s, details_data_s
     | join kind = inner(
    
     AzureDiagnostics
    
     | where Category == "ApplicationGatewayFirewallLog"
     | where action_s == "Blocked") on transactionId_g
     | extend Uri = strcat(hostname_s,requestUri_s)
     | summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), TransactionID = make_set   (transactionId_g,100), Message = make_set(Message,100), Detail_Message = make_set(details_message_s,   100), Detail_Data = make_set(details_data_s,100), Total_TransactionId = dcount(transactionId_g) by    clientIp_s, Uri, action_s
     | where Total_TransactionId >= Threshold
    

    Screenshot showing the rule query.

    Remarque

    Il est important de vérifier que les journaux WAF se trouvent déjà dans l’espace de travail Log Analytics avant de créer cette règle d’analyse. Sinon, Sentinel ne va pas reconnaître certaines des colonnes de la requête et vous devrez ajouter une entrée supplémentaire comme | extend action_s = column_ifexists(“action_s”, “”), transactionId_g = column_ifexists(“transactionId_g”, “”) pour chaque colonne qui indique une erreur. Cette entrée crée manuellement les noms de colonne et leur affecte des valeurs Null. Pour éviter cette étape, envoyez d’abord les journaux WAF à l’espace de travail.

  4. Sous l’onglet Paramètres d’incident, activez Créer des incidents à partir d’alertes déclenchées par cette règle d’analyse. Le regroupement d’alertes peut être configuré en fonction des besoins.

  5. Si nécessaire, vous pouvez également ajouter une réponse automatisée à l’incident. Pour plus d’informations sur la configuration des réponses automatisées, consultez Détection et réponse automatisées pour Azure WAF avec Microsoft Sentinel.

  6. Enfin, sélectionnez Enregistrer sous l’onglet Vérifier et créer.

Cette règle d’analyse permet à Sentinel de créer un incident basé sur les journaux WAF qui enregistrent les attaques par injection de code. Le pare-feu d’applications web Azure bloque ces attaques par défaut, mais la création d’incidents offre davantage de support à l’analyste de sécurité pour répondre aux menaces futures.

Vous pouvez configurer des règles d’analyse dans Sentinel pour différentes attaques d’application web en utilisant les requêtes de détection prédéfinies disponibles dans le dépôt GitHub Azure Network Security. Ces requêtes seront ajoutées directement aux modèles de détection de Sentinel. Une fois ajoutées, ces requêtes seront directement disponibles dans la section Modèles de règle d’analyse de Sentinel.

Étapes suivantes