Professional Documents
Culture Documents
Nicolas Dube
St Secway
ndubee@secway.com
Backdoors avances
Nicolas Dube
p. 1/19
Rsum
La confiance envers ses systmes de surveillance est un composant essentiel dune scurit
matrise. Hollywood est grand consommateur de la notion, avec lingrdient essentiel de tout
bon film daction le gardien et sa camra de surveillance tromps par une photographie
plante juste devant. Les concepteurs des logiciels actuels semblent pourtant avoir oubli ces
prceptes simples ; derrire la complexit des systmes dinformation et des moyens mettre
en uvre pour les protger se cache le vice des fondations. A qui se rfrer lorsque aucune des
composantes du systme na t prvue pour assurer cette base de confiance dont les
applications auraient tant besoin ? Cet expos tentera dillustrer la notion de base de confiance
et son application aux systmes dexploitation actuels. Au travers de lexemple de rootkits
kernel sous Solaris, nous dmontrerons comment les meilleurs logiciels de scurit sont mis
en dfaut par la compromission du systme dexploitation sous-jacent.
Abstract
Trust in your monitoring systems is a key component in a well-designed security. Hollywood
movies are great consumers of this idea, with the essential ingredient of every good robbery
movie the security guard and his security console being fooled by a picture put just in front of
the camera However, the computer industry seems to have forgotten those simple concepts;
behind the complexity of todays information systems and the means aimed at securing them
stands flawed foundations. Who can we refer to when none of the components of the system
has been designed to ensure the trust applications need? This document will show the notion of
trust base and its application to modern operating systems. Through the example of so-called
kernel backdoors, we will explain how the best security software can be defeated by the
compromising of the underlying operating system.
Backdoors avances
Nicolas Dube
p. 2/19
1.
2.
Introduction ............................................................................................................................ 4
Les systmes dexploitation modernes .................................................................................. 4
2.1
Dfinitions ...................................................................................................................... 4
2.2
Modles actuels............................................................................................................. 4
2.3
Fonctionnalits de scurit des systmes dexploitation ............................................... 7
2.4
Le paradigme de lutilisateur root................................................................................... 9
3. Compromission totale dun systme par modification du kernel .......................................... 11
3.1
Mise en vidence......................................................................................................... 11
3.2
Techniques usuelles .................................................................................................... 12
3.2.1
Dissimulation de processus ................................................................................. 13
3.2.2
Dissimulation de fichiers ...................................................................................... 14
3.2.3
Excution dtourne ............................................................................................ 14
3.2.4
Backdoors rseaux .............................................................................................. 15
3.3
Importance du problme.............................................................................................. 16
3.4
Solutions ...................................................................................................................... 17
3.4.1
Dtection post intrusion ....................................................................................... 17
3.4.2
Prvention............................................................................................................ 18
4. Conclusion ........................................................................................................................... 19
Backdoors avances
Nicolas Dube
p. 3/19
1. Introduction
La confiance envers ses systmes de surveillance est un composant essentiel dune scurit
matrise. Hollywood est grand consommateur de la notion, avec lingrdient essentiel de tout
bon film daction le gardien et sa camra de surveillance tromps par une photographie
plante juste devant. Linformatique semble pourtant avoir oubli ces prceptes simples ;
derrire la complexit des systmes dinformation actuels et des moyens mettre en uvre
pour les protger se cache le vice des fondations. A qui se rfrer lorsque aucune des
composantes du systme na t prvue pour assurer cette base de confiance dont les
applications auraient tant besoin ? Cet expos tentera dillustrer la notion de base de confiance
et son application aux systmes dexploitation actuels. Au travers de lexemple de backdoors
kernel sous Solaris, nous dmontrerons comment les meilleurs logiciels de scurit sont mis
en dfaut par la compromission du systme dexploitation sous-jacent.
Backdoors avances
Nicolas Dube
p. 4/19
Un mode noyau, mode privilgi dans lequel tourne le cur mme du systme
dexploitation, souvent appel kernel et dcoup en de nombreux ples de
fonctionnalits.
Ce mode est dit privilgi car il dispose dun accs et un contrle complet toutes les
ressources matrielles ou logicielles du systme ; de ce fait le systme dexploitation est
souvent considr comme linterface entre les applications et le matriel.
Chaque ple peut mettre ses services directement disposition des processus grce
linterface des appels systmes. Les appels systmes constituent un mcanisme permettant aux
processus dappeler des fonctions donnes du kernel. Ces fonctions, environ 200 sur les
systmes Unix traditionnels, sont les primitives de base de toutes les oprations dentre-sortie,
de gestion de la mmoire, des processus, . Ainsi, louverture et la lecture dans un fichier se
font par les appels systme open() puis read(), mises disposition par le ple gestion des
fichiers (VFS) du kernel.
Backdoors avances
Nicolas Dube
p. 5/19
Le ple gestion mmoire soccupe de grer la vision mmoire de chaque processus en relation
avec la mmoire physique. Cette correspondance est faite par lintermdiaire de morceaux de
mmoire appels pages . Dautre part, le ple gestion des processus travaille pour organiser
les processus, de leur cration jusqu leur mort en exportant des fonctions de cration de
processus (fork()), de rglage des priorits, de gestion des signaux.
Le systme propose aussi un accs transparent par un mcanisme dit VFS de nombreux
types de systmes de fichiers, aussi bien des systmes de fichiers classiques servant
grer les arborescences sur des disques physiques que des systmes de fichiers virtuels
complexes comme procfs, specfs. Procfs permet, via la hirarchie dynamique /proc, un accs
aux informations dtat sur chaque processus du systme (un rpertoire par processus actif).
Sur de nombreux systmes Unix, la commande de liste des processus en cours dexcution ps
est implmente en parcourant larborescence /proc. Specfs propose quant lui un accs de
type fichiers aux ressources matrielles grce larborescence /dev.
La gestion des fichiers et priphriques est implmente en utilisant largement des dispatchs,
(aiguillages) : un ensemble de fonctions de base est dfini, chaque pilote systme de fichiers ou
priphrique est tenu dimplmenter ces fonctions de base. Celles-ci incluent par exemple
open(), read(), write() et close(). Chaque pilote exporte alors au kernel la liste des fonctions qui
implmentent ces appels standards, une table des correspondances est ainsi cre :
fat_open()
implmente open() pour le systme de fichiers FAT
fat_read()
implmente read() pour le systme de fichiers FAT
fat_write()
Quand un programme ouvre un fichier, il appelle la fonction gnrique open(). Le kernel dtecte
alors quel est le type de priphrique ou de systme de fichiers derrire le fichier demand en
ouverture,et appelle grce la table des correspondances la bonne fonction open().
-
un mode utilisateur, dans lequel tournent des applicatifs appels processus, formes
vivantes des programmes stocks sur disque.
Chaque processus sexcute en tant quun utilisateur donn, dans un contexte qui lui est propre
et dans un espace mmoire virtuel gr par le systme dexploitation. Il na aucune vue directe
des autres processus, de leur mmoire, ou mme des ressources matrielles. Il doit
obligatoirement se rfrer au systme dexploitation par lintermdiaire des appels systmes
pour accder aux ressources systmes ou communiquer avec les autres processus.
Ces processus sont traditionnellement crs par un appel systme appel fork(), et le fils ainsi
cr par un appel fork() est une copie conforme mais compltement indpendante du parent,
qui continue normalement son excution. Ainsi, chaque processus cr hrite des paramtres
Backdoors avances
Nicolas Dube
p. 6/19
On peut alors se demander comment sont ralises les oprations de scurit ncessites par
/bin/login, telles que la vrification des mots de passe et le chiffrement de donnes. Ces
fonctionnalits ntant pas considres comme des oprations canoniques, elles ne sont pas
implmentes dans le kernel du systme, mais dans un ensemble de librairies dynamiques lies
aux applicatifs eux-mmes, et sexcutant donc dans leur contexte.
Ainsi, le programme /bin/login vrifie le couple (login, mot de passe) fourni par lutilisateur qui
souhaite sauthentifier. Cette vrification est faite en interrogeant la base des utilisateurs Unix du
fichier /etc/passwd. Les fonctions getpwent(),getpwnam(),getpwuid() implmentes dans la libc
soccupent de cette interrogation ; elles vont elles-mmes appeler les appels systmes
douverture de fichier (open()) et de lecture (read()) afin de lire squentiellement les lignes de la
base des mots de passe /etc/passwd et vrifier la correspondance avec les informations
dauthentification entres par lutilisateur. Une fois lutilisateur trouv dans la base, /bin/login
construit un nouvel environnement pour excuter le shell qui sera prsent lutilisateur. Ce
nouvel environnement devant sexcuter sous lidentifiant (uid) de lutilisateur en question,
/bin/login effectue alors un appel systme setuid() permettant de positionner lidentifiant
utilisateur du processus appelant (cest--dire du nouvel environnement). Le seul contrle
effectu par le kernel avant dautoriser lopration setuid() consiste vrifier que le processus
appelant sexcute jusqualors en tant que root, le super-utilisateur Unix.
Backdoors avances
Nicolas Dube
p. 7/19
Comme nous pouvons voir du diagramme prcdent, lentre sur le systme dun utilisateur
(cest--dire, la vrification de ses informations dauthentification et la cration de son
environnement) est compltement la charge de processus sexcutant en mode utilisateurs,
avec une aide minime du kernel.
En effet, les fonctionnalits de scurit offertes par la plupart des kernels actuels ne concernent
que deux aspects :
- la protection des processus entre eux, notamment au niveau de la gestion
mmoire. De ce fait, deux processus voulant communiquer sont obligs de le faire par
lintermdiaire de fonctionnalits offertes par le kernel, aucune communication directe
purement mode utilisateur nest possible. La protection des processus est un lment
extrmement important des systmes dexploitation, notamment en terme de fiabilit et
de disponibilit du systme car cest ce mcanisme qui assure aussi quun processus
nentrane pas dans sa chute dautres processus. En terme de scurit, la
communication entre processus peut tre suivie de manire fine par le systme
dexploitation puisque toute communication impliquera des appels systmes.
- la scurit du systme de fichiers. Cest le kernel, au niveau de primitives syscall
telles que open(), read(), write(), close(), qui gre les permissions sur les objets du
Backdoors avances
Nicolas Dube
p. 8/19
Ainsi un outil de dtection dintrusion locale comme Tripwire1 met chronologiquement en jeu
les fonctionnalits de scurit kernel suivantes pour assurer son bon fonctionnement :
- Avant son excution, scurit du systme de fichiers, afin dviter que le binaire luimme de Tripwire ne soit remplac par un cheval de Troie ignorant les modifications
commises au systme par le pirate.
- Durant son excution
o Protection des processus, pour empcher la modification dynamique de la
mmoire (code, donnes) du processus Tripwire par un autre processus pirate
situ sur la machine. Ce processus pirate pourrait par exemple prendre au vol le
contrle de la mmoire du processus Tripwire et modifier le code de vrification
des fichiers pour quil saute les fichiers qui ont t modifis par le pirate, ceci
sans avoir besoin de toucher le binaire Tripwire prsent sur disque.
o Scurit du systme de fichiers, garantissant que les fichiers qui sont
prsents Tripwire lorsquil les ouvre pour en effectuer des vrifications sont
bien ceux stocks sur disque et utiliss par le systme. Tripwire repose ainsi sur
le fait que le kernel offre la mme vision des fichiers pour tous les processus.
Backdoors avances
Nicolas Dube
p. 9/19
De ce fait, tout programme lanc avec les privilges root naura sur son chemin aucune barrire
de scurit.
Malheureusement, le modle prcdent induit des effets transitoires forts dsagrables.
Beaucoup de fonctions systmes tant lgitimement restreintes lutilisateur root, nombre de
programmes cruciaux ncessitent davoir au moins un bout de leur excution effectue en tant
que root. Tout processus devant un moment donn accder une fonction privilgie devra
tre root au minimum de son dbut jusqu lappel lui-mme de la fonction en question.
Cest par exemple le cas des processus serveurs rseaux tels que les serveurs http ou dns,
devant obligatoirement tre dmarrs en tant que root pour pouvoir sattacher au port TCP/UDP
dcoute correspondant2. Ainsi, pour environ 10 lignes de code privilgi, des serveurs rseaux
complexes ncessitent des privilges levs quils gardent bien souvent par la suite.
La suite a trs certainement dj t vcue par la plupart des administrateurs systmes :
vulnrabilit sur tel processus serveur (DNS par exemple) permettant une prise de contrle du
processus, de son chemin dexcution et donc possibilit pour le pirate dexcuter distance
nimporte quel code, directement en tant que root.
Dans la suite du document, nous nous intresserons aux possibilits qua un pirate, pass root
sur un systme Unix, pour viter dtre dtect et sy maintenir de faon aise. En particulier,
nous verrons comment un agresseur peut rendre inefficients tous les systmes de scurit et de
dtection dintrusion ds lors quil est root, en modifiant la base de confiance quest
normalement le systme dexploitation.
Ceci car les fonctions de mise en coute TCP/UDP interdisent aux utilisateurs normaux de se mettre en
coute sur les ports infrieurs 1024 (dits ports privilgis, ceci pour viter que les utilisateurs ne
simulent des serveurs lgitimes en se mettant en coute sur des ports privilgis standards).
Backdoors avances
Nicolas Dube
p. 10/19
Une des fonctionnalits attendues dun systme dexploitation actuel est quil soit modulaire :
que lajout de priphriques et donc des pilotes correspondants se fasse le plus facilement
possible. Dans cette optique, de nombreux systmes Unix proposent lajout dynamique par root,
sans redmarrage, de bouts de code dits modules ou LKM , tels que des pilotes
priphriques. Ces modules peuvent tre chargs dans le systme dexploitation la vole
Backdoors avances
Nicolas Dube
p. 11/19
grce des commandes simples. Ils sont alors digrs par le kernel et sexcutent en mode
privilgi dans ce dernier, ayant un accs complet et sans restriction lensemble du systme.
Lide dutiliser cette fonctionnalit lgitime des systmes dexploitation modernes3 a t
introduite ds 1995 sur les systmes libres et popularise par plusieurs articles4 techniques en
1997, agrments des premiers codes publics (Linux et FreeBSD). De nombreux kits sont
maintenant disponibles pour modifier de la sorte des kernels Solaris ou Linux, FreeBSD, .
-
La mmoire tant un priphrique comme un autre, un fichier spcial /dev/mem lui est souvent
associ qui permet la lecture et la modification de la mmoire physique. Lcriture une position
donne dans ce fichier entrane la modification de la zone mmoire correspondante. De
mme, le fichier /dev/kmem est associ la mmoire virtuelle du kernel. Ces deux mthodes
permettent un accs commode la mmoire, vue comme un fichier.
Si un de ces fichiers est accessible en criture, un agresseur peut injecter du code en crivant
dans la mmoire comme dans un fichier, et remplacer par exemple certains appels systmes
sensibles par ses propres versions, pourvues de portes drobes.
Cette technique, assez peu rencontre en pratique car trs dlicate techniquement (la moindre
erreur dun octet peut dtruire le systme) a cependant t dmontre comme ralisable, et des
outils dinjection de la sorte seraient disponibles dans certains cercles pirates. La mthode de
prdilection reste celle des modules ; plusieurs kits sont disponibles dans le domaine public
utilisant les modules pour injecter du code dans le noyau et en modifier le comportement.
Un pirate ayant obtenu laccs root une machine peut donc, en utilisant des fonctionnalits
lgitimes du systme, modifier le systme dexploitation son gr afin dtre invisible aux
systmes de surveillance locaux et ladministrateur. Nous allons maintenant voir quelles sont
les possibilits et les techniques communment implmentes.
3
4
Backdoors avances
Nicolas Dube
p. 12/19
Figure 5: Remplacement par un module de la fonction systme proc_readdir par une fonction
dissimulant les processus pirates. Lorsquun processus cherche lister le contenu du rpertoire
/proc, le kernel regarde quelle fonction ralise cette opration dans un tableau des oprations
interne au kernel. Il appelle alors la fonction en question. Cet aiguillage peut tre dtourn par un
module ayant accs la mmoire kernel.
Certains codes publics utilisent mme des mcanismes assez pousss base de signaux pour
indiquer dynamiquement au code pirate dans le kernel quels processus il doit cacher, sans avoir
besoin de reprogrammer le module. Le module intercepte le signal de type spcial envoy un
processus par le pirate au moyen de la commande kill, et cache le processus en question.
Sous certains systmes comme Solaris, le listing des processus est aussi obtenu par lecture de
la mmoire du kernel au travers du priphrique virtuel /dev/kmem. Comme prcdemment, un
aiguillage indiquant au kernel quelle est la fonction appeler pour ouvrir et lire dans le
Backdoors avances
Nicolas Dube
p. 13/19
priphrique virtuel /dev/kmem. Le pirate remplace alors ces fonctions par les siennes, qui
nettoient les valeurs renvoyes au processus demandeur.
Figure 6: Dissimulation d'un fichier sous Solaris par modification kernel, pour cet exemple le
programme ls n'a pas t modifi. Le fichier monfichier nest pas visible dans le listing du
rpertoire mais est toujours accessible et modifiable si lon connat son nom.
Nous avons pu aussi tudier des modules kernel Solaris pirates trs perfectionns qui
introduisaient une fonctionnalit freeze dans toute la partie gestion des fichiers du noyau.
Cette fonctionnalit permettait de modifier le systme de fichiers (accder en lecture/criture aux
fichiers) sans quaucune date daccs ou de modification ne soit change . Le code tait activ
en envoyant un signal spcial au processus sur lequel on voulait installer la fonctionnalit, et
tous les descendants du processus en hritaient. Le pirate envoyait donc trs probablement le
signal son propre shell afin que toutes les consultations/modifications de fichiers quil effectuait
partir de ce shell soient invisibles.
p. 14/19
chec par des modifications au kernel. Noublions pas en effet que pour lire les fichiers et en
faire des signatures, les outils de vrification se fondent sur les informations fournies par le
kernel (ils utilisent les services du kernel pour ouvrir et lire les fichiers, et ne peuvent pas faire
autrement).
Cette constatation a t leve par plusieurs articles de la revue Phrack afin de mettre en dfaut
les outils de vrification comme Tripwire. Lide est simple : si nous pouvons contrler le noyau,
pourquoi ne pas fournir aux outils de vrification la vue quils veulent des fichiers, alors que
ceux-ci ont pu tre modifis ?
Prenons le cas du remplacement du programme de connexion scurise SSH,
/usr/local/sbin/sshd, par un cheval de Troie. Une technique pour ce faire est la suivante :
- le fichier en lui-mme /usr/local/sbin/sshd nest pas modifi. Ainsi, les programmes de
vrification ne trouveront rien redire.
- Le programme ssh de remplacement (cheval de Troie) est mis sur un autre endroit du
systme de fichiers, par exemple /var/tmp/backdoorsshd. Son existence peut tre
masque en le cachant comme vu prcdemment.
- Le module kernel pirate modifie lappel systme dexcution de programmes, execve(),
pour dtecter si on essaie dexcuter /bin/login. Si tel est le cas, on excute la place le
cheval de Troie, /var/tmp/backdoorlogin.
De ce fait, lorsque le programme sshd sera lanc au dmarrage de la machine, la backdoor sera
lance la place, tandis que si un programme de vrification ouvre le programme sshd pour le
vrifier, elle verra le fichier original.
Kossak, Lifeline, Building into the Linux network layer, Phrack 55/12
http://www.phrack.com/show.php?p=55&a=12
8
Flux dissimuls permettant par exemple de faire sortir secrtement dun rseau local des informations
sensibles, en les mlangeant du trafic normal.
9
Module apparemment non connu publiquement.
Backdoors avances
Nicolas Dube
p. 15/19
en question ne signalait pas lIDS les paquets ayant un port source particulier ou contenant un
mot clef donn. Le pirate utilisait ce port source pour effectuer toutes ses connexions vers ou
partir de la machine compromise. Il tait donc impossible pour la sonde IDS qui tait installe
sur la machine de dtecter le trafic rseau gnr par lactivit du pirate.
Rootkit 200013 (Windows NT 4.0, Windows 2000) par Greg Hoglund & collectif
Rootkit kernel sous Microsoft Windows.
Comme le montre lexemple prcdent de kernmod et rootkit 2000, le fait que les sources du
kernel Solaris ou de Windows NT ne soient pas disponibles na pas dissuad la communaut de
dvelopper des rootkits Solaris ou NT. En effet, les fabricants de systmes dexploitation ont tout
intrt documenter les mthodes de programmation du kernel afin de favoriser le
dveloppement de pilotes priphriques pour leurs systmes dexploitations ; les mthodes
utilises pour dvelopper les pilotes priphriques sont alors reprises pour la ralisation de
modules pirates.
Aujourdhui, tous les systmes dexploitation sont modulaires et documents, pour permettre un
enrichissement fonctionnel par la communaut des dveloppeurs et fabricants de matriels.
Malheureusement, aucun de ces systmes nintgre en parallle des mcanisme de scurit
permettant de limiter limpact dune compromission privilgie (root). Les possibilits sans limites
qua un agresseur pouvant modifier un systme dexploitation montrent clairement les limites du
concept actuel de tout ou rien au niveau des privilges. Quand le kernel, normalement base de
10
http://www.cert.org/vul_notes/VN-98.02.kernel_mod.html
http://online.securityfocus.com/data/tools/adore-0.34.tgz
12
http://www.itsx.com/
13
http://www.rootkit.com/
11
Backdoors avances
Nicolas Dube
p. 16/19
confiance, a t compromis, force est de constater quil ny a plus aucun salut possible pour le
systme.
3.4 Solutions
3.4.1 Dtection post intrusion
La perte de la base de confiance quest le kernel rend alatoire toute solution a posteriori pour
dtecter et corriger une machine affecte. Le fait que les systmes de dtection se fondent sur
des informations fournies par un kernel potentiellement compromis rend la dtection trs
dlicate.
Cependant, on peut arrive dtecter quelques-uns des rootkits kernel classiques. Les mthodes
utilises sont base de signatures et mme trs largement des bugs ou oublis des rootkits.
Une mthode couramment utilise consiste parcourir larborescence /proc, en essayant daller
dans les rpertoires /proc/N/ avec N allant de 1 65535. Si lopration russie mais que le
rpertoire ntait pas dans la liste obtenue par un ls, le processus N est cach par le systme
dexploitation et une modification du kernel a sans doute t effectue. En effet, la plupart des
modules, par soucis de facilit ou mme par mauvaise connaissance du fonctionnement interne
des systmes, ne changent que certaines fonctions du kernel, laissant une fois quils sont
installs de nombreux bugs ou effets indsirables induits par lintroduction des modifications.
Cette mthode, peu fiable, dtecte uniquement les LKM simples ou mal programms. Elle reste
quand mme trs utile pour des compromissions automatiques ou agresseurs bas de gamme, et
est surtout facilement mise en uvre par des outils comme chkrootkit
(http://www.chkrootkit.org/) ou mme certains antivirus sous Microsoft Windows.
Figure 7: Compromission possible par LKM, le processus 202 n'apparat pas dans la liste pourtant
il semble exister (bug de la backdoor).
Malheureusement, les rootkits kernel bien conus peuvent tre extrmement difficiles dtecter,
et mme virtuellement impossibles sil ny a pas de grandes suspicions de compromission.
Rappelons que les outils de dtection reposent sur des informations qui leurs sont transmises
par un systme potentiellement compltement dtourn.
Backdoors avances
Nicolas Dube
p. 17/19
La seule mthode fiable pour dtecter de tels rootkits est larrt complet du systme et lexamen
de ses disques partir dune machine sre. Si une compromission est dtecte, la rinstallation
totale est de rigueur.
3.4.2 Prvention
3.4.2.1 Prvention des attaques root
Lutilisateur root tant le seul pouvoir modifier les fichiers sensibles et le noyau du systme, la
parade ultime consisterait donc viter tout pris quun agresseur ne puisse devenir root.
- dsinstallation de tous les programmes non utiliss
- installation rgulire des patchs
- filtrage des services rseaux non ncessaires de lextrieur
- restriction de lutilisateur root aux seuls endroits o cela est compltement ncessaire.
Malheureusement, cette dernire fonctionnalit, qui devrait tre de rigueur sur tout systme
moderne se prtendant scuris, est par dfaut absente et souvent bien difficile raliser soimme. Elle est mme presque impossible effectuer sans modifications drastiques au kernel.
Comme nous lavons fait remarquer dans la premire partie du document, faute des
fonctionnalits adquates, la compartimentation des rles et des processus nest ralisable en
pratique que sur les systmes ayant t spcialement crits pour14, cest--dire jamais dans les
usuels. Il est vrai que de telles fonctionnalits ajouteraient en complexit aux systmes
dexploitation, qui prfrent tort ou raison offrir aux programmeurs et utilisateurs une
convivialit plus importante (au niveau de lajout de drivers, de ladministration, ).
Cependant, les systmes Microsoft Windows NT 4.0, Microsoft Windows 2000 et successeurs
proposent une gestion des rles et permissions assez labore permettant de dployer un plan
de scurit15 limitant le recours lutilisateur Administrateur. Il est ainsi possible de dlguer
certains groupes non privilgis des attributions de scurit telles que le backup complet, vitant
ainsi le recours systmatique lutilisateur Administrateur ds quun privilge lev est
ncessaire. Remarquons quoiquil en soit que de nombreux services rseaux doivent toujours
disposer de privilges systmes, cest--dire les plus levs ; la gestion dattributions
spcifiques par processus (et non par utilisateur) ntant pas encore supporte.
3.4.2.2 Limitation des pouvoirs de root
Considrons maintenant le cas o il nest pas possible de se prmunir de lutilisation de root, et
quune compromission de cet utilisateur nest pas exclue. On peut vouloir minimiser ses
attributions et lui faire perdre un peu du modle classique tout ou rien.
Nous avons vu que la perte complte de la confiance en un systme tait due la
compromission de son systme dexploitation. Si le systme dexploitation reste sain, il pourra
toujours fournir aux applications de dtection les moyens de reprer des modifications de
fichiers par exemple. Une premire technique consiste interdire toute modification du kernel,
mme par root.
Si le systme est destin tre largement fixe (cas des systmes de production), sans
changements de configuration, les systmes BSD implmentent un tel mcanisme connu sous
14
Le noyau Linux devrait tre dot dune interface de rglages fins des permissions dans ce but. Dautre
part, des systmes commerciaux comme ceux de la socit Argus peuvent venir se greffer sur les
systmes dexploitation du march pour leur ajouter de nombreuses fonctionnalits de scurit.
15
Le site Web de la socit Edelweb possde une section scurit Windows fort propos
(http://www.edelweb.fr/EdelStuff/EdelPages/) comprenant notamment des articles par Maxime de Jabrun,
Nicolas Ruff et Patrick Chambet sur la scurisation avance de machines Microsoft Windows NT/2000.
Backdoors avances
Nicolas Dube
p. 18/19
le nom des securelevels. Des permissions tendues sur les fichiers et un identifiant spcial sont
introduits. Lidentifiant spcial, un entier appel securelevel, peut uniquement tre incrment
par des administrateurs. A ltat 0, le systme est dit non sr et le comportement est celui dun
systme classique sans securelevel. Les permissions tendues peuvent tre changes et le
kernel modifi par /dev/kmem ou /dev/mem. Aux tats srs 1 et 2, les fichiers virtuels
/dev/kmem et /dev/mem ainsi quentre autres les permissions spciales des fichiers ne sont plus
modifiables.
Sans ces mcanismes interdisant les modules (malheureusement, enlevant de ce fait une
fonctionnalit bien pratique), lcriture dans les priphriques mmoire et la modification des
fichiers kernel eux-mmes, il est quasiment impossible de protger un systme o root a t
compromis dune modification du kernel. Certaines tentatives ont t faites pour dvelopper des
outils vrifiant en temps rel la table des appels systmes, cependant il existe de nombreuses
parties dun systme dexploitation modifier part les appels systmes, et ces outils ne
feraient que rebuter les pirates moins techniques.
4. Conclusion
Nous avons pu voir comment, en dtournant des possibilits lgitimes, un agresseur peut
manipuler sa guise un systme entier au point quaucune information ne puisse plus tre
valide.
Les fonctionnalits de convivialit et de souplesse ont longtemps t privilgies par rapport
celles de scurit, comme en tmoignent les installations par dfaut des plus grands systmes
dexploitation, doffice vulnrables de nombreuses attaques. Cependant, nous avons pu
assister ces derniers mois, en raison notamment dvnements majeurs tels que larrive de
vers et virus diffusion exceptionnelle, dun retournement de la tendance. Mme si nous ne
pouvons quapprouver ces nouvelles orientations, le problme de la modification des noyaux
nous montre bien que des changements drastiques seront ncessaires aux curs mme des
systmes dexploitation, afin que la confiance perdue de longue date puisse tre restaure.
Backdoors avances
Nicolas Dube
p. 19/19