En cybersécurité, une backdoor, également appelée porte dérobée, désigne un mécanisme permettant d'accéder à un système informatique en contournant les procédures normales d'authentification ou de contrôle d'accès. Elle peut être introduite volontairement dans un logiciel ou installée clandestinement après une compromission. Les backdoors constituent une menace importante, car elles peuvent permettre à un acteur malveillant de conserver un accès non autorisé à un ordinateur, un serveur, une application ou un réseau.
1. À propos des backdoors en cybersécurité
Une backdoor, ou porte dérobée, est un mécanisme d'accès alternatif qui contourne les contrôles de sécurité normalement imposés aux utilisateurs et aux applications.
Dans un système correctement sécurisé, les accès doivent être soumis à des mécanismes d'authentification, d'autorisation et de journalisation. Une backdoor peut permettre de contourner une partie de ces contrôles.
Pourquoi une backdoor est-elle dangereuse ?
Une porte dérobée peut permettre à un attaquant de :
- Accéder à un système sans suivre les procédures normales.
- Conserver un accès persistant après une première intrusion.
- Consulter des informations confidentielles.
- Modifier ou supprimer des fichiers selon les privilèges obtenus.
- Exécuter des opérations non autorisées.
- Utiliser un système compromis pour préparer d'autres attaques.
- Contourner certaines mesures de sécurité.
Origine des backdoors
Une backdoor peut avoir plusieurs origines :
- Malveillante : introduite par un cybercriminel ou un logiciel malveillant.
- Intentionnelle : intégrée dans un logiciel ou un équipement pour permettre un accès particulier.
- Accidentelle : résultant d'un mécanisme de test ou de maintenance laissé accessible.
- Issue d'une compromission : installée après l'exploitation d'une vulnérabilité.
Un mécanisme de maintenance n'est pas automatiquement une backdoor. Il devient particulièrement problématique lorsqu'il contourne les contrôles de sécurité prévus, reste caché ou permet un accès non autorisé.
Exemple conceptuel
Supposons qu'une application Web exige normalement un identifiant et un mot de passe pour accéder à son interface d'administration.
Si un mécanisme caché permet d'ouvrir cette interface sans effectuer les vérifications habituelles, il peut constituer une porte dérobée.
Cette situation représente une violation du principe de contrôle d'accès.
Différence entre backdoor et vulnérabilité
Une vulnérabilité est une faiblesse pouvant être exploitée pour compromettre un système.
Une backdoor est un mécanisme permettant un accès alternatif ou dissimulé. Elle peut être introduite en exploitant une vulnérabilité, mais les deux notions ne sont pas identiques.
2. Principaux types de backdoors
Les portes dérobées peuvent être classées selon leur emplacement, leur origine ou leur fonctionnement.
Backdoor logicielle
Une backdoor logicielle est intégrée à un programme ou ajoutée à un système d'exploitation.
Elle peut prendre la forme d'un composant caché, d'une fonction non documentée ou d'un programme installé après une compromission.
Backdoor Web
Une Web Shell est un exemple de mécanisme pouvant servir de porte dérobée dans une application Web compromise.
Elle peut permettre à un attaquant d'effectuer des opérations sur un serveur à travers une interface Web non autorisée.
Les applications développées avec PHP, Python ou d'autres technologies serveur peuvent être concernées lorsque leurs protections sont insuffisantes.
Backdoor réseau
Une backdoor réseau peut permettre des communications non autorisées avec un système compromis.
Elle peut utiliser des connexions sortantes ou des services d'écoute selon son fonctionnement.
Backdoor matérielle
Une backdoor matérielle peut être intégrée à un équipement ou à certains de ses composants.
Elle peut notamment concerner des mécanismes de diagnostic ou d'administration insuffisamment protégés.
Backdoor dans un firmware
Le firmware est un logiciel de bas niveau utilisé par de nombreux équipements.
Une porte dérobée présente dans un firmware peut être particulièrement difficile à identifier et à éliminer si elle échappe aux mécanismes ordinaires de maintenance.
Backdoor liée aux identifiants
Un compte caché, un mot de passe universel ou un identifiant de maintenance non documenté peut constituer un mécanisme de porte dérobée.
Backdoor dans la chaîne d'approvisionnement
Une Supply Chain Backdoor peut être introduite dans un logiciel, une dépendance ou une mise à jour avant son installation chez les utilisateurs.
Cette catégorie est particulièrement préoccupante, car un composant compromis peut être distribué à de nombreux systèmes.
Tableau comparatif
| Type | Emplacement | Risque principal |
|---|---|---|
| Logicielle | Application ou système d'exploitation | Accès clandestin au système |
| Web Shell | Serveur ou application Web | Opérations non autorisées sur le serveur |
| Réseau | Service ou composant réseau | Communication non autorisée |
| Matérielle | Équipement physique | Contournement de protections matérielles |
| Firmware | Logiciel embarqué | Persistance difficile à détecter |
| Compte caché | Système d'identités | Accès non autorisé |
| Chaîne d'approvisionnement | Dépendance ou mise à jour | Compromission de plusieurs systèmes |
3. Fonctionnement et mécanismes d'une backdoor
Le fonctionnement d'une backdoor dépend de sa nature. Certaines sont intégrées dès la conception d'un logiciel, tandis que d'autres sont introduites après une intrusion.
Introduction de la backdoor
Une porte dérobée peut être introduite par une modification non autorisée de fichiers, l'installation d'un programme malveillant ou la compromission d'un composant logiciel.
Dans certains cas, elle peut également provenir d'un mécanisme de maintenance laissé accessible.
Activation du mécanisme
Une backdoor peut être activée par un événement particulier, une opération cachée ou une communication avec un composant externe.
Les détails varient selon le mécanisme concerné.
Contournement des contrôles normaux
Le principal danger est la possibilité de contourner les procédures habituelles d'authentification ou d'autorisation.
Un système peut ainsi être compromis même si ses utilisateurs légitimes disposent de mots de passe robustes.
Persistance
La persistance désigne la capacité d'un mécanisme malveillant à rester présent ou à retrouver son fonctionnement après certains événements, comme un redémarrage.
Les mécanismes de persistance peuvent notamment concerner les services, les tâches planifiées, les comptes ou certains composants logiciels.
Communication avec un système externe
Certaines backdoors communiquent avec une infrastructure extérieure.
Cette communication peut servir à transmettre des informations ou à recevoir des instructions non autorisées.
Backdoor et serveur de commande et contrôle
Un serveur C2, pour Command and Control, est une infrastructure utilisée par certains logiciels malveillants pour recevoir des informations et transmettre des instructions.
Toutes les backdoors n'utilisent pas nécessairement un serveur C2.
Backdoor et Remote Access Trojan
Un RAT, pour Remote Access Trojan, est un logiciel malveillant permettant un contrôle distant non autorisé.
Un RAT peut fournir des fonctionnalités de porte dérobée, mais les deux termes ne sont pas strictement synonymes.
Backdoor et Rootkit
Un Rootkit est un ensemble de techniques ou de composants visant notamment à dissimuler une présence malveillante ou à maintenir des privilèges.
Un rootkit peut cacher une backdoor, mais une porte dérobée peut exister sans rootkit.
Exemple d'un serveur Web compromis
Considérons un serveur Web sur lequel un attaquant a réussi à installer un composant non autorisé.
Ce composant pourrait permettre un accès clandestin à certaines fonctions du serveur. Même si la vulnérabilité initiale est corrigée, la présence du composant peut maintenir un risque de compromission.
C'est pourquoi la réponse à incident doit rechercher non seulement la vulnérabilité initiale, mais également les éventuels mécanismes de persistance.
4. Risques, conséquences et signes de compromission
Une backdoor peut compromettre plusieurs propriétés fondamentales de la sécurité informatique : la confidentialité, l'intégrité et la disponibilité.
Atteinte à la confidentialité
Une porte dérobée peut permettre l'accès à des informations sensibles, telles que des documents, des données personnelles ou des secrets d'application.
Atteinte à l'intégrité
Un attaquant disposant de permissions suffisantes peut modifier des fichiers, des configurations ou des données.
Atteinte à la disponibilité
Une compromission peut entraîner une interruption de service, une suppression de données ou une perturbation du fonctionnement normal.
Persistance après une intrusion
Une backdoor peut permettre à un attaquant de conserver un accès même après la correction de certaines vulnérabilités initiales.
Propagation des risques
Un système compromis peut être utilisé comme point d'appui pour accéder à d'autres ressources, selon les permissions et les connexions disponibles.
Indicateurs de compromission
Les Indicators of Compromise, ou IoC, sont des éléments pouvant signaler une compromission.
Parmi les signes possibles figurent :
- La présence de comptes inconnus ou non autorisés.
- L'apparition de services inhabituels.
- Des connexions réseau inattendues.
- Des modifications inexpliquées de fichiers sensibles.
- La création de tâches planifiées inconnues.
- Des changements non autorisés des permissions.
- Des événements de connexion suspects.
- Des fichiers inconnus dans les répertoires d'une application Web.
Limites des indicateurs
Un indicateur suspect ne prouve pas automatiquement la présence d'une backdoor.
Par exemple, une nouvelle connexion réseau peut provenir d'une mise à jour légitime ou d'un service récemment installé.
Les événements doivent être examinés dans leur contexte avant de conclure à une compromission.
Outils de surveillance
Plusieurs catégories d'outils peuvent contribuer à la détection :
- Antivirus : recherche de logiciels malveillants connus.
- EDR : surveillance des événements et comportements des terminaux.
- IDS/IPS : détection de certaines activités réseau suspectes.
- SIEM : centralisation et corrélation des journaux.
- Wireshark : analyse autorisée du trafic réseau.
- Nmap : inventaire et vérification des services exposés dans un environnement autorisé.
- Outils d'intégrité : surveillance des modifications de fichiers.
5. Détection des backdoors avec Python
Python permet de développer des outils pédagogiques de surveillance, d'inventaire et de vérification de l'intégrité des systèmes. Les exemples suivants sont orientés vers la détection défensive et utilisent principalement des données fictives ou des fichiers locaux.
Exemple 1 : identifier des comptes inconnus
Le programme suivant compare une liste fictive de comptes observés à une liste de comptes autorisés. Il signale les comptes qui ne figurent pas dans l'inventaire de référence.
1 2 3 4 5 | comptes_autorises = ["admin", "alice", "bob"] comptes_observes = ["admin", "alice", "bob", "maintenance"] for compte in comptes_observes: if compte not in comptes_autorises: print("Compte à vérifier :", compte) |
Output :
1 | Compte à vérifier : maintenance |
Un compte inconnu n'est pas nécessairement malveillant. Il doit être vérifié auprès des administrateurs et comparé aux procédures de gestion des identités.
Exemple 2 : vérifier l'intégrité d'un fichier avec SHA-256
Le programme suivant calcule l'empreinte SHA-256 d'un fichier local et la compare à une empreinte de référence préalablement établie à partir d'une source fiable. Il permet d'illustrer la détection d'une modification non autorisée.
1 2 3 4 5 6 7 8 9 10 11 12 | import hashlib from pathlib import Path fichier = Path("application.py") empreinte_reference = "empreinte_sha256_de_reference" if fichier.is_file(): empreinte = hashlib.sha256(fichier.read_bytes()).hexdigest() if empreinte == empreinte_reference: print("Intégrité du fichier vérifiée") else: print("Alerte : empreinte différente") else: print("Fichier introuvable") |
Output :
1 | Alerte : empreinte différente |
Cette sortie correspond au cas où le fichier existe et où son empreinte diffère de la valeur de référence fictive. En pratique, il faut remplacer cette valeur par une véritable empreinte fiable.
Exemple 3 : rechercher des fichiers récemment modifiés
Le programme suivant examine les fichiers d'un répertoire local et affiche ceux qui ont été modifiés pendant les dernières 24 heures. Cette vérification peut aider à repérer des modifications nécessitant une investigation.
1 2 3 4 5 6 7 8 9 10 11 12 | from pathlib import Path import time dossier = Path("mon_application") maintenant = time.time() if dossier.is_dir(): for fichier in dossier.iterdir(): if fichier.is_file(): age = maintenant - fichier.stat().st_mtime if 0 <= age <= 86400: print("Fichier récemment modifié :", fichier.name) else: print("Répertoire introuvable") |
Output possible :
1 2 | Fichier récemment modifié : config.py Fichier récemment modifié : views.py |
La sortie dépend du contenu du répertoire et des dates de modification. Le programme n'effectue aucune analyse du contenu des fichiers.
Exemple 4 : identifier des connexions inhabituelles dans un journal fictif
Le programme suivant examine une liste fictive de connexions réseau et signale les destinations qui ne figurent pas dans une liste de destinations attendues. Il illustre une méthode simple de surveillance des communications sortantes.
1 2 3 4 5 6 7 8 9 10 11 12 | destinations_autorisees = [ "192.168.1.1", "192.168.1.10" ] connexions = [ "192.168.1.1", "192.168.1.10", "203.0.113.25" ] for adresse in connexions: if adresse not in destinations_autorisees: print("Connexion à examiner :", adresse) |
Output :
1 | Connexion à examiner : 203.0.113.25 |
L'adresse 203.0.113.25 appartient à une plage réservée à la documentation. Elle est utilisée ici uniquement comme exemple.
Exemple 5 : détecter des tâches planifiées inconnues
Le programme suivant compare une liste fictive de tâches planifiées à un inventaire de référence. Il permet d'illustrer la recherche de mécanismes de persistance non documentés.
1 2 3 4 5 6 7 8 9 | taches_autorisees = ["sauvegarde", "mise_a_jour"] taches_observees = [ "sauvegarde", "mise_a_jour", "maintenance_inconnue" ] for tache in taches_observees: if tache not in taches_autorisees: print("Tâche à vérifier :", tache) |
Output :
1 | Tâche à vérifier : maintenance_inconnue |
Exemple 6 : rechercher des permissions excessives
Le programme suivant examine des permissions fictives associées à plusieurs comptes. Il signale les comptes possédant des privilèges administratifs alors qu'ils ne figurent pas dans la liste des administrateurs autorisés.
1 2 3 4 5 6 7 8 9 10 | administrateurs_autorises = ["admin"] comptes = { "admin": ["lecture", "ecriture", "administration"], "alice": ["lecture"], "service_test": ["lecture", "administration"] } for utilisateur, permissions in comptes.items(): if "administration" in permissions: if utilisateur not in administrateurs_autorises: print("Privilège à examiner :", utilisateur) |
Output :
1 | Privilège à examiner : service_test |
Exemple 7 : analyser des événements suspects
Le programme suivant utilise des journaux fictifs et recherche certains événements nécessitant une vérification. Il illustre le principe d'une surveillance fondée sur des règles simples.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | evenements = [ "Connexion normale", "Sauvegarde terminée", "Création de compte inconnue", "Modification de configuration", "Mise à jour terminée" ] mots_suspects = [ "compte inconnue", "Modification de configuration" ] for evenement in evenements: for motif in mots_suspects: if motif.lower() in evenement.lower(): print("Événement à examiner :", evenement) break |
Output :
1 2 | Événement à examiner : Création de compte inconnue Événement à examiner : Modification de configuration |
Ces programmes illustrent des contrôles élémentaires. Une détection professionnelle doit également tenir compte du contexte, de l'historique, des signatures, des comportements et des informations de menace disponibles.
6. Prévention et suppression des backdoors
La protection contre les portes dérobées repose sur une combinaison de mesures techniques, organisationnelles et opérationnelles.
Maintenir les logiciels à jour
Les systèmes d'exploitation, applications, bibliothèques et équipements doivent recevoir régulièrement les mises à jour de sécurité appropriées.
Appliquer le principe du moindre privilège
Le moindre privilège consiste à limiter les permissions accordées aux utilisateurs et aux services.
Cette mesure peut réduire les conséquences d'une compromission.
Utiliser une authentification forte
Les accès administratifs doivent être protégés par des mécanismes d'authentification appropriés, notamment la MFA lorsque cela est possible.
La MFA ne supprime toutefois pas une porte dérobée déjà installée.
Surveiller les comptes et les permissions
Les comptes inconnus, les privilèges excessifs et les modifications non autorisées doivent être examinés régulièrement.
Contrôler l'intégrité des fichiers
Les fichiers critiques peuvent être surveillés à l'aide de mécanismes de File Integrity Monitoring, ou FIM.
Une modification inattendue doit être comparée aux opérations de maintenance et aux déploiements autorisés.
Surveiller les communications réseau
Les connexions sortantes inhabituelles, les nouveaux services et les changements de configuration réseau peuvent constituer des éléments utiles lors d'une investigation.
Sécuriser les applications Web
Les applications Web doivent appliquer des contrôles d'accès rigoureux, valider les fichiers téléversés et protéger leurs répertoires sensibles.
Dans un environnement WordPress, il est particulièrement important de :
- Mettre à jour le noyau WordPress, les thèmes et les extensions.
- Installer les extensions depuis des sources fiables.
- Supprimer les extensions inutilisées.
- Limiter les comptes administrateurs.
- Contrôler les fichiers récemment modifiés.
- Vérifier les tâches planifiées et les comptes inconnus.
- Maintenir des sauvegardes fiables.
Protéger la chaîne d'approvisionnement
Les dépendances logicielles doivent être obtenues auprès de sources fiables et faire l'objet de vérifications adaptées.
Les signatures numériques, les contrôles d'intégrité et les procédures de validation des mises à jour contribuent à réduire certains risques.
Isoler un système suspect
Lorsqu'une backdoor est suspectée, il peut être nécessaire d'isoler le système concerné afin de limiter les communications non autorisées.
Cette opération doit tenir compte des exigences de continuité de service et de préservation des preuves.
Préserver les preuves
Les journaux, les fichiers suspects et les informations pertinentes doivent être conservés selon les procédures de réponse à incident.
Il faut éviter de supprimer précipitamment des éléments pouvant être nécessaires à une investigation.
Identifier la cause initiale
La suppression d'un fichier suspect ne suffit pas toujours. Il est nécessaire de rechercher comment la compromission s'est produite et si d'autres mécanismes de persistance existent.
Reconstruire les systèmes compromis
Lorsqu'une compromission importante est confirmée, une réinstallation à partir d'une source fiable peut être préférable à une simple suppression des fichiers malveillants.
Les sauvegardes utilisées doivent être vérifiées afin d'éviter la réintroduction du mécanisme compromis.
Renouveler les secrets
Les mots de passe, clés et autres secrets potentiellement exposés doivent être renouvelés depuis un environnement considéré comme fiable.
Vérifier l'éradication
Après les opérations de nettoyage ou de reconstruction, les administrateurs doivent vérifier l'intégrité des systèmes, les configurations, les comptes et les communications réseau.
Défense en profondeur
Une stratégie de défense en profondeur combine les mises à jour, le contrôle d'accès, la segmentation réseau, la surveillance, les sauvegardes et les procédures de réponse à incident.
7. À retenir
Une backdoor, ou porte dérobée, est un mécanisme permettant de contourner les procédures normales d'authentification ou de contrôle d'accès.
Elle peut être introduite volontairement dans un logiciel, résulter d'un mécanisme de maintenance mal protégé ou être installée par un attaquant après une compromission.
Les principales catégories comprennent les backdoors logicielles, les Web Shells, les backdoors réseau, les mécanismes présents dans les firmwares et les portes dérobées liées à la chaîne d'approvisionnement.
Une backdoor peut compromettre la confidentialité, l'intégrité et la disponibilité des systèmes.
Elle peut également fournir un mécanisme de persistance, permettant à un attaquant de conserver un accès non autorisé.
Les indicateurs de compromission peuvent comprendre des comptes inconnus, des services inhabituels, des connexions suspectes et des modifications non autorisées de fichiers.
Python permet de développer des contrôles pédagogiques pour vérifier l'intégrité des fichiers, analyser des journaux, examiner des comptes et rechercher des configurations inhabituelles.
La prévention repose sur les mises à jour, le moindre privilège, la surveillance, la protection des applications et le contrôle des dépendances logicielles.
Lorsqu'une compromission est confirmée, la réponse à incident doit rechercher la cause initiale, préserver les preuves, supprimer les mécanismes de persistance et rétablir les systèmes à partir de sources fiables.
Enfin, la lutte contre les backdoors constitue une composante essentielle de la défense en profondeur et de la sécurité des infrastructures informatiques.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



