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:
- Machine de l'attaquant (Kali Linux, IP: 8.8.8.10, 4 Go de RAM, kali: kali);
- 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);
- Serveur Web (Ubuntu Server 18.04 avec Tomcat, IP 192.168.2.15, 2 Go de RAM, utilisateur: utilisateur);
- 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:
- Blocage de connexion - "insignifiant";
- Balayage des ports - Faible;
- 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
- Machines virtuelles pour l'organisation de l'infrastructure de formation dans VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
- , : https://yadi.sk/i/tD8nxckjYwr_6Q
- №1: https://yadi.sk/i/ffztj2XQMPD-xw