Utilisation de SIEM pour former des pirates éthiques: ouverture du laboratoire pratique

Comment former des hackers éthiques dans nos universités et centres de formation? En règle générale, nous leur fournissons Kali Linux ou Scanner-VSqui comprend un ensemble d'outils de test de sécurité et une machine avec de nombreuses vulnérabilités. En conséquence, les auditeurs peuvent avoir une compréhension plutôt superficielle de la manière dont les tests de pénétration sont réellement effectués, car dans les projets réels, les pentesters traitent des infrastructures qui incluent des outils de sécurité de l'information et des systèmes de surveillance des événements de sécurité de l'information (SIEM). Pour rectifier la situation et offrir aux débutants la possibilité d'étudier les méthodes de test de sécurité et les outils de suivi des événements de sécurité de l'information dans un complexe, nous commençons par cet article la publication de travaux pratiques de laboratoire.







Notre laboratoire d'introduction se concentre sur l'identification d'un incident lié à l'accès au panneau d'administration d'un serveur Web.



Cas



Pendant les vacances de l'ISA, des développeurs tiers ont été embauchés pour créer une application Web qui devait être hébergée sur le serveur Web Tomcat. Pour plus de commodité, les développeurs ont mis la console Web de gestion des applications serveur à la disposition du monde extérieur entier et ont créé un compte admin: admin "non trivial".



La menace



L'attaquant, en analysant les hôtes externes de l'organisation, rencontre le port 8080 du serveur Web en question, s'assure que la console d'administration est disponible et, après quelques tentatives, réussit à brutes le mot de passe du compte administrateur.



Tâche



Il est nécessaire de déterminer comment l'administrateur de la sécurité de l'information pourrait mettre en place le SIEM avant ses vacances afin d'enregistrer en temps opportun un incident lié à la menace en question. Après cela, vous devez implémenter ce scénario d'attaque et vous assurer que les directives de corrélation fonctionnent correctement.



Infrastructure virtuelle



La situation évolue dans l'infrastructure informatique suivante déployée dans VirtualBox:







  1. Machine de l'attaquant (Kali Linux, IP: 8.8.8.10, 4 Go de RAM, kali: kali);
  2. Pare-feu avec système de détection d'intrusion (pfSense, IP externe: 8.8.8.1, IP réseau interne: 192.168.1.1, IP DMZ: 192.168.2.1, 1 Go de RAM, admin: pfsense);
  3. Serveur Web (Ubuntu Server 18.04 avec Tomcat, IP 192.168.2.15, 2 Go de RAM, utilisateur: utilisateur);
  4. Serveur SIEM-système "KOMRAD" (Ubuntu 20.04, IP 192.168.1.99, 4 Go de RAM, utilisateur: utilisateur).


Si vous souhaitez déployer vous-même cette infrastructure, vous pouvez utiliser les instructions , mais si vous souhaitez gagner du temps, nous avons publié les machines virtuelles configurées au format OVA . Le système SIEM devra être obtenu en plus, mais cela sera décrit ci-dessous.



Solution: mettre en place un système SIEM



Pour résoudre le problème, nous effectuerons séquentiellement les actions de l'attaquant, analyserons comment elles sont reflétées dans les journaux du pare-feu et du serveur Web, configurerons la collecte, l'analyse et le filtrage des événements, et créerons également les directives de corrélation nécessaires dans le système SIEM.

Le guide de notre laboratoire fournit des étapes détaillées pour résoudre ce problème, dans l'article, nous nous concentrerons uniquement sur les points clés.



1. Envoi d'événements depuis le pare-feu



Le pare-feu pfSense vous permet d'envoyer vos logs via le protocole Syslog vers un serveur distant, pour cela il vous suffit de paramétrer l'adresse IP et le port du collecteur syslog SIEM "KOMRAD", ainsi que d'ajouter une règle qui permet d'envoyer les logs du réseau 192.168.2.0/24 vers le réseau interne 192.168 .1.0 / 24.







Le système SIEM recevra des événements du type suivant:



<134> 1 2020-10-18T02: 33: 40.684089 + 00: 00 pfSense.localdomain filterlog 9761 - - 4``, 1000000103, em0, match, block , in, 4, 0x0`` 64,25904,0, DF, 6, tcp, 60, 8.8.8.10 , 8.8.8.1 , 35818,1721,0, S, 1017288379`` 64240`` mss; sackOK; TS; nop; wscale



Comme vous pouvez le voir, cette entrée contient des informations importantes telles que l'adresse IP de l'hôte qui a initié la connexion, l'adresse IP de l'hôte auquel la connexion est tentée et une indication que la tentative de connexion a été bloquée.



2. Envoi d'événements depuis un serveur Web



Le serveur Web Tomcat enregistre les requêtes http dans les journaux locaux qui peuvent être redirigés via rsyslog vers le système SIEM. Pour résoudre ce problème, vous pouvez également utiliser le collecteur de fichiers, qui fait partie du système SIEM "KOMRAD". Dans les enregistrements, vous pouvez voir que l'adresse IP de l'hôte à partir duquel la demande a été reçue est enregistrée, ainsi que le compte utilisateur en cas d'autorisation réussie:







3. Réception d'un flux d'événements par le système SIEM "KOMRAD"



Les événements considérés sont automatiquement enregistrés par le système SIEM "KOMRAD":







Les deux types d'événements mentionnés suffisent à détecter les situations suivantes:



  • Blocage de connexion - basé sur le bloc;
  • Balayage des ports - en cas de blocage multiple des tentatives de connexion initiées par le même hôte;
  • Accès non autorisé suspecté - analyse de port avec accès administratif ultérieur.


Les trois situations peuvent être des incidents de sécurité de l'information, mais bien sûr avec différents niveaux de gravité.



Avant d'enregistrer des incidents, nous devons apprendre à extraire les informations utiles ci-dessus des événements.



4. Analyse des événements par le système SIEM "KOMRAD" (analyse syntaxique)



Pour analyser les événements source dans un système SIEM, vous devez créer un plug-in qui inclut un ensemble d'expressions régulières. Pour les sources les plus populaires, COMRAD a déjà des plugins prêts à l'emploi. En l'absence de plug-in, l'utilisateur peut en créer un.



Voici un exemple de conception d'une expression régulière pour extraire des champs de l'événement de pare-feu ci-dessus. En tant qu'outil de débogage, nous avons utilisé le portail https://regex101.com/







Après avoir créé le plug-in, les données des événements sont extraites dans des champs séparés, comme vous pouvez le voir sur la carte d'événement suivante:







5. Configuration de filtres pour extraire les événements de sécurité des informations d'intérêt du flux



Afin d'identifier les événements qui nous intéressent dans le flux d'événements entrant dans le système SIEM, nous devons mettre en place des filtres. Dans le système SIEM, les filtres "KOMRAD" sont formés en utilisant le langage de script populaire Lua (les spécialistes de la sécurité de l'information le connaissent déjà depuis Nmap et Suricata).



Pour sélectionner les événements de pare-feu liés au blocage de la connexion, nous allons créer le filtre suivant:



--  filter  
function filter(event)
--    ,     IP- ,  
    action = event:getString ('Action')
    ip = event:getString ('IpSrc')
--     IP-,      
    if action == 'block' then
        return {IP=ip}
    end
end


Le filtre pour l'événement Tomcat semble un peu plus compliqué, dans lequel nous vérifions si le compte récupéré de l'événement correspond à la valeur "admin". Dans ce cas, nous renvoyons également l'adresse IP.



function filter(event)
    journal = event:getString ('Journal')
    login = event:getString ('Username')
    ip = event:getString ('IpSrc')
    
    if journal == 'tomcat-access' and login == 'admin' then
        return {IP=ip}
    end
end


Lorsqu'il est utilisé dans un environnement de production, pour améliorer les performances du système, vous devrez peut-être vérifier un ID de collecteur spécifique au début de chaque filtre pour limiter la portée du filtre.



6. Création de directives de corrélation



Créons des directives de corrélation pour les situations considérées avec les niveaux de gravité suivants:



  1. Blocage de connexion - "insignifiant";
  2. Balayage des ports - Faible;
  3. L'envoi de requêtes http à l'aide du compte administrateur est "élevé".


Pour créer un incident si une connexion est bloquée, il suffit d'indiquer dans la directive de corrélation le seul filtre appliqué:



filter 5


La deuxième directive, qui devrait créer un incident en cas de blocage trois fois d'une connexion initiée par le même hôte, ressemblera à ceci:



/*  ip,   ,        .*/
var ip
filter 5 export ip = ep.IP
/*         IP.
    notforking,       .*/
filter 5 +1m where ep.IP==ip notforking
//   .
filter 5 +1m where ep.IP==ip notforking


Dans la troisième directive, nous ajoutons une autre ligne, dans laquelle nous utilisons le filtre avec l'ID 6, créé pour sélectionner les demandes au serveur Web avec le compte admin.




var ip
filter 5 export ip = ep.IP
filter 5 +1m where ep.IP==ip notforking
filter 5 +1m where ep.IP==ip notforking
filter 6 +1m where ep.IP==ip notforking


Dans l'exemple du didacticiel, la fenêtre de temps a été laissée égale à 1 minute, dans la vraie vie, il est logique de l'augmenter à plusieurs minutes.



Solution: mener une attaque et l'identifier



Après avoir configuré les sources d'événements et le système SIEM, il est temps de mener une attaque simulée. Tout d'abord, analysons les ports:







Ensuite, nous allons au port 8080 et passons l'autorisation avec le compte admin: admin:







Ces actions sont enregistrées par le système SIEM "KOMRAD": les trois directives de corrélation sont déclenchées:







Conclusion



Ainsi, dans ce travail de laboratoire, nous avons vu la séquence d'actions de collecte et d'analyse des événements de sécurité de l'information en cas d'accès administratif au serveur web. Dans le laboratoire suivant, l'attaquant développera l'attaque et utilisera l'accès administratif obtenu pour collecter des informations sur l'infrastructure cible.



Comment obtenir une version de démonstration du système SIEM "KOMRAD"



Nous sommes actuellement en phase de test bêta de notre produit, auquel tout le monde peut participer. Pour ce faire, nous fournissons la version actuelle du système SIEM sous la forme d'un conteneur Docker. Il n'y a que deux limitations dans la version démo: le taux de traitement des événements est réduit à 1000 EPS et il n'y a pas de système d'autorisation et de contrôle d'accès.



Pour recevoir une archive avec une version de démonstration, écrivez-nous à l'adresse e-mail getkomrad@npo-echelon.ru de la boîte aux lettres de votre organisation (nous souhaitons savoir qui participera). Nous vous invitons également à notre groupe Telegram, où vous pouvez obtenir de l'aide en cas de difficultés: https://t.me/komrad4



Liens



  1. Machines virtuelles pour l'organisation de l'infrastructure de formation dans VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
  2. , : https://yadi.sk/i/tD8nxckjYwr_6Q
  3. №1: https://yadi.sk/i/ffztj2XQMPD-xw



All Articles