Création d'un laboratoire pour tester les protocoles ICS/SCADA

Création d'un laboratoire pour tester les protocoles ICS/SCADA

40410
Created On 09/26/18 19:10 PM - Last Modified 06/12/23 16:48 PM


Resolution


Introduction

Les organisations avec des systèmes de contrôle industriel (ICS) ont été sur un chemin pour sécuriser la frontière entre elle (réseau d'entreprise) et OT (réseau ICS) pendant un certain temps. La première étape pour beaucoup a été de fournir une segmentation simple entre les deux réseaux en utilisant des pare-feu de Palo Alto réseaux. Cela satisfaisait aux exigences initiales de visibilité et d'inspection des paquets pour les activités malveillantes. Comme les entreprises s'efforcent d'améliorer la posture de sécurité au sein de l'ICS, il ya un fort besoin de tester avant la mise en œuvre. Ce document montrera comment simuler la frontière IT/OT afin de tester AppID, UserID, et d'autres fonctionnalités dans le pare-feu de Palo Alto Networks. Tout ce labo peut être virtualisé sur un seul ordinateur portable.

 

Exigences en matière

 

Élément requis

Notes

Appareil virtuel Palo Alto Networks

Testé avec un VM50, Panos 8.0.6.

Machine virtuelle Windows

Pour l'interface HMI simulée par Java.

MAC OS X

Testé avec 10.12.6, nécessite l'environnement Xcode (pourrait installer sur une machine virtuelle Kali Linux ainsi).

VM fusion pour Mac

Testé avec fusion Pro v 8.5.8. VM Workstation pour Windows peut également être utilisée.

Machine Java ModBusPal

Testé avec v 1.6 b. Simule des appareils PLC sondés.

MBTGET

Clone de github. Simule un serveur d'interrogation.

Java (sous Windows VM)

Testé avec JRE v9, 64-bit.

 

 

Diagramme

Image ajoutés par l’utilisateur

 

Configurer VM fusion

 Les deux réseaux utilisés dans le laboratoire sont étiquetés vmet2 (pour la zone PLC) et VMnet3 (pour la zone de scrutin). L'exemple illustré est pour VM Fusion sur un Mac, mais le même principe s'applique à VM Workstation. Remarque: n'allumez pas encore le pare-feu VM50, il y a deux étapes importantes à faire en premier.

 

 

Vmnet2

Picture2.png

 

Vmnet3

Picture3.png

 

Une troisième carte réseau devra être ajoutée dans les paramètres du pare-feu VM50 dans VM fusion.

 

Picture4.png

 

Assignez les adaptateurs comme suit:

  • Carte réseau à VMnet3
  • Carte réseau 2 à vmnet 3
  • Carte réseau 3 à VMnet2

 

Le fichier de configuration VM devra être modifié pour la carte réseau 3 ème. En fusion, allez à la bibliothèque et cliquez avec le bouton droit sur le VM50 et sélectionnez "afficher le fichier de configuration dans le Finder".

 

Picture5.png

 

Vous allez ensuite cliquer avec le bouton droit sur le fichier VM dans le dossier et sélectionner "afficher le contenu du paquet".

 

Picture6.png

 

Recherchez le fichier. vmx et éditez-le avec TextEdit ou un autre éditeur de texte. Assurez-vous de changer le périphérique virtuel pour Ethernet2 à "vmxnet3" comme indiqué ci-dessous. Enregistrez le fichier. Le dossier contenu du package peut être fermé. À partir de la bibliothèque de fusion, le pare-feu VM50 peut maintenant être lancé.

 

Picture7.png

 

Pour configurer l'adresse IP de gestion du pare-feu, suivez les instructions ci-dessous:

https://www.paloaltonetworks.com/documentation/80/Pan-OS/Pan-OS/Getting-Started/Integrate-the-Firewall-into-Your-Management-Network/Perform-initial-configuration

 

Pour appliquer les licences d'appareils et l'enregistrement:

https://www.paloaltonetworks.com/documentation/80/Pan-OS/Pan-OS/Getting-Started/Activate-licenses-and-subscriptions.html

 

Configurer la stratégie de pare-feu initiale

 La stratégie de pare-feu initiale permettra toutes les applications entre la zone d'interrogation et la zone plc. Toutes les activités sont journalisées et il n'y a aucun profil à configurer à ce stade.

 

Stratégies de sécurité

Picture8.png

 

Politique NAT

Picture9.png

 

Interfaces Ethernet

Picture10.png

 

Rappelez-vous l'itinéraire statique par défaut. J'utilise le routeur virtuel par défaut. Pour VMware Fusion, l'IP de passerelle par défaut réservée est 192.168.55.2 sur VMnet3.

 

Picture11. png

 

Objets d'adresse

Picture12. png

 

Configurer le serveur et le client

 Sur la machine Windows qui servira de périphériques PLC, assurez-vous de mettre son interface Ethernet dans VMnet2 (sur le PLCZone du pare-feu). Assurez-vous que sa passerelle par défaut pointe vers l'interface du pare-feu: 192.168.45.20.

 

ModbusPal sera utilisé pour simuler des registres de PLC. Vous pouvez le télécharger ici:

https://sourceforge.net/projects/modbuspal/Files/modbuspal/RC%20version%201.6B/

 

Il nécessite l'environnement d'exécution Java. Une fois que les conditions ont été remplies, ouvrez une fenêtre de commande et accédez au répertoire où ModbusPal réside et lancez-le comme indiqué ci-dessous.

 

Picture13. png

 

Nous allons ajouter un esclave Modbus en sélectionnant "ajouter" de la section esclaves Modbus.

 

Picture14. png

 

Ajoutez un esclave pour l'instant, puis cliquez sur "ajouter".

 

Picture15. png

 

Nommez le nouvel esclave, puis cliquez sur l'œil à remplir.

 

Picture16. png

 

Sous l'onglet Holding registres, ajoutez le montant des registres que vous souhaitez tester.

 

Picture17. png

 

Fournissez des valeurs et, facultativement, des noms pour les adresses que vous avez créées.

 

Picture18. png

 

Faites de même pour l'onglet bobines. Ajoutez des valeurs binaires et, facultativement, des noms.

 

Picture19. png

 

 

Fermez la fenêtre esclave lorsque vous avez terminé. Cliquez sur le bouton Activer tout pour vous assurer que l'esclave est activé. Puis cliquez sur Exécuter pour démarrer le simulateur.

 

Picture20. png

 

Pour utiliser l'outil MBTGET pour simuler un serveur d'interrogation, vous devrez cloner l'outil à partir de github. Vous pouvez télécharger le client gratuit Mac/Windows ici:

https://Desktop.github.com/

 

Facultativement, l'outil peut être cloné sur une machine virtuelle de Kali Linux. Pour cloner l'outil MBTGET, suivez ces instructions à partir d'un terminal ou d'une invite de commandes.

 

Picture21. png

 

Ecran d'aide pour MBTGET:

 

Picture22. png

 

Une route statique devra être créée sur l'ordinateur portable hébergeant les images afin d'atteindre le simulateur plc.

 

Pour Mac:

# sudo route-n Add-net 192.168.45.0/24192.168.55.20  

 

Test de l'environnement

Pour vous assurer que les images fonctionnent correctement, ouvrez une fenêtre de terminal et lancez un sondage à l'aide de MBTGET. Le sondage résultant doit afficher les valeurs que vous avez créées dans les registres de détention dans ModbusPal. La valeur après "-n" doit correspondre au nombre de registres que vous avez créés.

 

Picture23. png

 

Test Modbus avec AppID

 

Pour progresser vers une posture de sécurité plus positive, vous pouvez commencer par implémenter AppID. Ici, nous ajoutons simplement l'application et les sous-fonctions Modbus que nous souhaitons autoriser. Dans mon exemple, je vais ajouter Modbus-base et Modbus-Read-Holding-registres comme les seules applications autorisées à être utilisés à partir du PollingZone dans le PLCZone.

 

Picture24. png

 

Après avoir exécuté l'outil MBTGET, examinez les journaux pour voir l'application Recogniztion et que la stratégie a autorisé l'action.

 

Picture25. png

 

Dans notre règle AppID, nous autorisons les demandes de lecture pour la tenue de registres uniquement. Nous pouvons utiliser MBTGET pour demander à lire une bobine. La demande échoue.

 

Picture26. png

 

Le journal montre que la demande a échoué et qu'elle tentait de lire un registre de bobine, ce qui n'est pas ce que nous autorisons dans la politique.

 

Picture27. png

 

Test Modbus avec AppID et userid

 

Pour réduire encore davantage la surface d'attaque, appliquez l'ID utilisateur pour autoriser uniquement les lectures de registres d'utilisateurs spécifiques.

 

Dans la base de données/utilisateurs du périphérique/utilisateur local, ajoutez deux utilisateurs de test.

 

Picture28. png

 

Sous la base de données/groupes d'utilisateurs du périphérique/utilisateur local-Placez chaque utilisateur dans un groupe différent. Dans mon exemple, j'ai ajouté User1 au groupe «CanReadHolding» et à l'ensemble de la catégorie «CanReadCoils».

 

Picture29. png

 

Sous profil de périphérique/authentification, créez un nouveau profil d'authentification. Sélectionnez base de données locale pour le type.

 

Picture30. png

 

Sous l'onglet Avancé, sélectionnez «tous» les utilisateurs.

 

Picture31. png

 

Sous réseau/interfaces/bouclage, créez une adresse de bouclage pour rediriger les utilisateurs vers l'authentification.

 

Picture32. png

 

Fournir une adresse IP sous l'onglet IPv4. Assurez-vous qu'il est de la même gamme que votre PollingZone.

 

Picture33. png

 

Sous installation/identification de l'utilisateur/portail captif, modifiez les paramètres du portail captif comme indiqué. Utilisez l'adresse de bouclage IPv4 que vous venez de créer.

 

Picture34. png

 

Sous stratégies/authentification, créez une nouvelle stratégie d'authentification avec les valeurs affichées.

 

Picture35. png

 

Sous stratégies/sécurité, modifiez la première règle et ajoutez le groupe d'utilisateurs pour la lecture des registres de détention.

 

Picture36. png

 

La règle modifiée devrait ressembler à quelque chose comme ça.

 

Picture37. png

 

Ajoutez une nouvelle règle pour autoriser le trafic d'authentification vers le bouclage pour que le portail captif fonctionne.

 

Picture38. png

 

Validez les modifications.

 

Essayez de lire les registres de détention avec MBTGET et nous voyons qu'il échoue.

 

Picture39. png

 

Le journal de trafic révèle que la demande de lecture a été refusée par la règle ExplicitDeny. C'est parce que l'exigence userid n'a pas été satisfait.

 

Picture40. png

 

Pour lancer l'authentification de l'utilisateur dans cette configuration, accédez à l'adresse de bouclage créée pour le portail captif et ouvrez une session avec l'utilisateur autorisé à lire les registres de détention.

 

Picture41. png

 

Sous moniteur/ID utilisateur, consultez l'utilisateur authentifié dans la liste.

 

Picture42. png

 

Réessayez le sondage MBTGET et il devrait une fois de plus réussir.

 

Picture43. png

 

Les journaux de trafic affichent également l'utilisateur authentifié associé au Registre Read.

 

Picture44. png

 

À partir de l'interface CLI du pare-feu, émettez ces deux commandes pour effacer toutes les données userid.

 

Picture45. png

 

Lancez à nouveau la connexion à l'aide d'un autre utilisateur qui n'est pas autorisé à lire les registres de détention.

 

Picture46. png

 

Tentez le registre MBTGET lire et voir qu'il échoue pour le fichier.

 

Picture47. png

 

Notez que la raison de l'échec dans les journaux de trafic est due à ExplicitDeny puisque le trafic ne correspond à aucune autre règle. Plus précisément, il n'est pas membre du groupe CanReadHolding afin que la lecture du Registre échoue.

 

Picture48. png

 

 

Résumé

Il existe plus de scénarios qui peuvent être utilisés avec ce laboratoire virtuel qui peut encore augmenter la posture de sécurité dans l'environnement ICS. L'ajout d'une authentification multi-facteurs pour les utilisateurs ayant accès au réseau OT, par exemple. L'ajout de profils de sécurité au RuleSet est un autre. Les attaques peuvent être simulées aussi bien en utilisant des outils tels que Metasploit. Consultez cet article pour des idées sur l'utilisation des fonctionnalités de profil de journal de Pan-OS 8,0 pour surveiller l'activité malveillante et potentiellement placer les utilisateurs ICS dans un État mis en quarantaine lors d'une violation: https://Live.paloaltonetworks.com/T5/Learning-Articles/ Protection-ICS-et-SCADA-réseaux-with-Pan-OS-8-0/ta-p/180651  

 



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000Cm2pCAC&lang=fr&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language