Le contrôle des listes ACL (Access Control List) s’applique sur les fichiers/dossiers d’un système Windows sur NTFS. Ce mécanisme permet de paramétrer finement les droits d’accès à une ressource particulière, et ce de manière discrétionnaire. Les ACLs peuvent s’appliquer à un utilisateur en particulier ou à un groupe d’utilisateurs. Un utilitaire en ligne de commande permet de les manipuler simplement. Beaucoup de solutions logicielles de contrôle d’accès exploitent les ACLs, afin de restreindre l’accès à un emplacement précis du système. On compte notamment les solutions de protection de données, de restriction d’accès (dans un environnement universitaire par exemple) ou bien même de contrôle parental. C’est au travers de tels mécanismes de restriction qu’il est parfois visible des fenêtre du type :
Aussi utile que cela puisse paraitre pour confiner son environnement face à certains utilisateurs, les ACLs sont aussi régulièrement exploitées par des personnes malintentionnées. En effet, une des priorités d’un intrus sur un système est de déployer ses propres outils afin d’en conserver un accès à posteriori. Ces outils nécessite d’être placés sur le système cible et ce de manière pérenne. L’assaillant exploite donc diverses techniques pour camoufler, protéger l’accès et rendre invisible ses fichiers à la vue de l’administrateur technique. L’une de ces méthodes est bien évidemment les ACLs. L’assaillant peut créer un nouvel utilisateur (invisible) sur le système et brider l’accès à son répertoire d’outil qu’à ce nouvel utilisateur. Même les administrateurs seront bloqués à l’entrée. Pour opérer une telle manipulation, l’utilitaire « cacls » natif sous Windows XP, 7 et 8 est celui utilisé.
C:\>cacls REMARQUE : Cacls étant désapprouvé, utilisez Icacls. Affiche/modifie les listes de contrôle d'accès des fichiers CACLS nomfichier /T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G util:perm] [/R util [...]] [/P util:autor [...]] [/D util [...]] nomfichier Affiche les listes ACL. /T Modifie les listes ACL des fichiers dans le répertoire et les sous-répertoires. /L Fonctionne sur le lien symbolique par opposition à la cible /M Modifie les listes ACL des volumes montés dans un répertoire /S Affiche la chaîne SDDL pour la liste DACL. /S:SDDL Remplace les listes ACL par celles spécifiées dans la chaîne SDDL (non valide avec /E, /G, /R, /P ou /D). /E Modifie la liste ACL au lieu de la remplacer. /C Continue la modif. des ACL et ignore les erreurs /G util:autor Accorde des accès à l'utilisateur Perm : R Lecture W Écriture C Modification (en écriture) F Contrôle total /R util Révoque les accès de l'utilisateur (valide uniquement avec /E). /P util:autor Remplace les accès de l'utilisateur Perm peut être : N Aucun R Lecture W Écriture C Modification (en écriture) F Contrôle total /D util Refuse l'accès à l'utilisateur Utilisez des caractères génériques pour spécifier plusieurs fichiers dans une commande. Vous pouvez spécifier plusieurs utilisateurs dans une commande. Abréviations : CI - Héritage de conteneur. Les répertoires héritent de l'entrée de contrôle d'accès. OI - Héritage d'objet. Les fichiers héritent de l'entrée de contrôle d'accès. IO - Héritage unique. L'entrée de contrôle d'accès ne s'applique pas au fichier/répertoire en cours. ID - Hérité. L'entrée de contrôle d'accès a hérité de la liste de contrôle d'accès du répertoire parent.
Prenons l’exemple du répertoire : C:\Hidden\, certes pas très camouflé. Pour protéger l’accès à se répertoire à l’ensemble des administrateurs, l’intrus peut exécuter la commande suivante :
C:\>cacls c:\Hidden /E /P Administrateurs:N répertoire traité : c:\Hidden
Cette commande édite (/E) les ACLs du répertoire cible, en modifiants les permissions (/P) du groupe « Administrateurs » à « N » pour « NONE » soit aucune. En d’autres termes, aucun administrateur ne pourra :
- Accéder au contenu du répertoire (via explorer.exe ou cmd.exe)
- Supprimer le répertoire
- Couper le répertoire (le déplacer)
- Renommer le répertoire
Bien entendu, ses droits redeviennent actifs avec la commande inverse (« F » pour « FULL » soit tous les droits) :
C:\>cacls c:\Hidden /E /P Administrateurs:F répertoire traité : c:\Hidden
A noter que l’utilitaire « Unlocker » permet d’outrepasser l’accès à ces dossiers protégés, et tout administrateur en connaissance des commandes « cacls » peuvent réactiver l’accès. Cette solution peut s’avérer une bonne protection d’accès (en automatisant le processus via un fichier batch) face à des néophytes. Toutefois le mécanisme est aussi régulièrement employé à votre insu pour camoufler des données.
La protection d’un répertoire au niveau de ses ACLs est souvent couplé avec la modification de ses attributs. La gestion des attributs est beaucoup plus connue que celle des ACLs. La plupart des utilisateurs maîtrisent le passage d’un fichier/dossier en « caché » ou en « lecture seule » :
Toutefois certaines attributs se révèlent être de formidable atouts pour camoufler un fichier/dossier dans le système. C’est le cas de l’archivage d’une ressource ou de l’attribut « système ». La ressource devient ainsi invisible dans l’explorateur de fichier bien que celui-ci est l’option « Afficher les fichiers cachés » d’activée.
Pour modifier les attributs d’un fichier/dossier en ligne de commande, le programme « attrib » natif sous Windows XP, 7 et 8 permet cela:
C:\>attrib +s +r +a +h Hidden
Les différents arguments correspondent à « s » pour fichier « système », « r » pour « read » soit la lecture seule, « a » pour « archive » et « h » pour « hide » afin de cacher le fichier. A l’inverse, pour supprimer ces attributs, il suffit de mettre un « – » à la place du « + » pour chacun d’eux :
C:\>attrib -s -r -a -h Hidden
Ces deux méthodes en lignes de commande, « cacls » et « attrib » sont à garder à l’esprit pour camoufler des données sensibles du regard d’autrui et ce sans l’utilisateur d’un logiciel tiers. Toutefois ces méthodes ne sont pas imparables et un utilisateur avisé sera à même de retrouver vos données. Couplés à diverses autres techniques, les assaillants ces principes d’attributs et d’ACL pour rendre leur intrusion pérenne et le plus invisible possible.