Backdoors Et Rootkits Avancees

Embed Size (px)

Citation preview

  • 7/25/2019 Backdoors Et Rootkits Avancees

    1/19

    Backdoors avances p. 1/19Nicolas Dube

    Backdoors et rootkits avancs

    Nicolas DubeSt Secway

    [email protected]

  • 7/25/2019 Backdoors Et Rootkits Avancees

    2/19

    Backdoors avances p. 2/19Nicolas Dube

    RsumLa confiance envers ses systmes de surveillance est un composant essentiel dune scuritmatrise. Hollywood est grand consommateur de la notion, avec lingrdient essentiel de toutbon 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 cesprceptes simples ; derrire la complexit des systmes dinformation et des moyens mettreen uvre pour les protger se cache le vice des fondations. A qui se rfrer lorsque aucune descomposantes du systme na t prvue pour assurer cette base de confiance dont lesapplications auraient tant besoin ? Cet expos tentera dillustrer la notion de base de confianceet son application aux systmes dexploitation actuels. Au travers de lexemple de rootkitskernel sous Solaris, nous dmontrerons comment les meilleurs logiciels de scurit sont misen dfaut par la compromission du systme dexploitation sous-jacent.

    AbstractTrust 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 robberymovie the security guard and his security console being fooled by a picture put just in front ofthe 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 themstands flawed foundations. Who can we refer to when none of the components of the systemhas been designed to ensure the trust applications need? This document will show the notion oftrust base and its application to modern operating systems. Through the example of so-calledkernel backdoors, we will explain how the best security software can be defeated by thecompromising of the underlying operating system.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    3/19

    Backdoors avances p. 3/19Nicolas Dube

    1. Introduction ............................................................................................................................ 42. Les systmes dexploitation modernes .................................................................................. 4

    2.1 Dfinitions...................................................................................................................... 4

    2.2

    Modles actuels............................................................................................................. 4

    2.3 Fonctionnalits de scurit des systmes dexploitation ............................................... 72.4 Le paradigme de lutilisateur root................................................................................... 9

    3. Compromission totale dun systme par modification du kernel .......................................... 113.1 Mise en vidence......................................................................................................... 113.2 Techniques usuelles.................................................................................................... 12

    3.2.1 Dissimulation de processus................................................................................. 133.2.2 Dissimulation de fichiers ...................................................................................... 143.2.3 Excution dtourne............................................................................................ 143.2.4 Backdoors rseaux.............................................................................................. 15

    3.3 Importance du problme.............................................................................................. 163.4 Solutions...................................................................................................................... 17

    3.4.1

    Dtection post intrusion ....................................................................................... 173.4.2 Prvention............................................................................................................ 18

    4. Conclusion ........................................................................................................................... 19

  • 7/25/2019 Backdoors Et Rootkits Avancees

    4/19

    Backdoors avances p. 4/19Nicolas Dube

    1. Introduction

    La confiance envers ses systmes de surveillance est un composant essentiel dune scuritmatrise. Hollywood est grand consommateur de la notion, avec lingrdient essentiel de toutbon film daction le gardien et sa camra de surveillance tromps par une photographieplante juste devant. Linformatique semble pourtant avoir oubli ces prceptes simples ;derrire la complexit des systmes dinformation actuels et des moyens mettre en uvrepour les protger se cache le vice des fondations. A qui se rfrer lorsque aucune descomposantes du systme na t prvue pour assurer cette base de confiance dont lesapplications auraient tant besoin ? Cet expos tentera dillustrer la notion de base de confianceet son application aux systmes dexploitation actuels. Au travers de lexemple de backdoorskernel sous Solaris, nous dmontrerons comment les meilleurs logiciels de scurit sont misen dfaut par la compromission du systme dexploitation sous-jacent.

    2. Les systmes dexploitation modernes

    2.1 Dfinitions

    Une backdoorest une porte drobe logicielle permettant un pirate de revenir ou dlever sesprivilges plus facilement sur le systme.

    Un rootkitest une modification non autorise dun ou plusieurs composants lgitimes existants

    du systme, compromettant son intgrit et changeant son fonctionnement normal. Un rootkitpeut par exemple dsactiver les fonctions de journalisation des vnements, ou insrer desbackdoors dans les programmes critiques du systme.De ce fait, un rootkit est souvent un pack implantant sur un systme un ensemble de backdoors.Mme sils ne se rfrent pas strictement la mme notion, nous utiliserons les deux termesrootkits et backdoors de faon interchangeable dans la suite du prsent document.

    2.2 Modles actuels

    Au cur de tout systme informatique, le systme dexploitation est devenu bien plus que la

    simple interface matriels-logiciels traditionnelle et est maintenant, derrire une faade simple,un logiciel trs complexe.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    5/19

    Backdoors avances p. 5/19Nicolas Dube

    Figure 1: Modlisation d'un systme d'exploitation

    Le modle de rfrence est constitu de deux niveaux ou modes de fonctionnement :

    - Un mode noyau, mode privilgi dans lequel tourne le cur mme du systmedexploitation, souvent appel kernel et dcoup en de nombreux ples defonctionnalits.

    Ce mode est dit privilgi car il dispose dun accs et un contrle complet toutes lesressources matrielles ou logicielles du systme ; de ce fait le systme dexploitation estsouvent 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 auxprocessus dappeler des fonctions donnes du kernel. Ces fonctions, environ 200 sur lessystmes 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 sefont par les appels systme open() puis read(), mises disposition par le ple gestion desfichiers (VFS) du kernel.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    6/19

    Backdoors avances p. 6/19Nicolas Dube

    Le ple gestion mmoire soccupe de grer la vision mmoire de chaque processus en relationavec la mmoire physique. Cette correspondance est faite par lintermdiaire de morceaux demmoire appels pages . Dautre part, le ple gestion des processus travaille pour organiserles processus, de leur cration jusqu leur mort en exportant des fonctions de cration deprocessus (fork()), de rglage des priorits, de gestion des signaux.

    Le systme propose aussi un accs transparent par un mcanisme dit VFS de nombreuxtypes de systmes de fichiers, aussi bien des systmes de fichiers classiques servant grer les arborescences sur des disques physiques que des systmes de fichiers virtuelscomplexes comme procfs, specfs. Procfs permet, via la hirarchie dynamique /proc, un accsaux 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 psest implmente en parcourant larborescence /proc. Specfs propose quant lui un accs detype fichiers aux ressources matrielles grce larborescence/dev.

    Figure 2: Aperu de la hirarchie proc pour le processus 116

    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 oupriphrique est tenu dimplmenter ces fonctions de base. Celles-ci incluent par exempleopen(), read(), write()et close(). Chaque pilote exporte alors au kernel la liste des fonctions quiimplmentent 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 FATfat_write()

    Quand un programme ouvre un fichier, il appelle la fonction gnrique open(). Le kernel dtectealors quel est le type de priphrique ou de systme de fichiers derrire le fichier demand enouverture,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 directedes autres processus, de leur mmoire, ou mme des ressources matrielles. Il doitobligatoirement se rfrer au systme dexploitation par lintermdiaire des appels systmespour accder aux ressources systmes ou communiquer avec les autres processus.

    Ces processus sont traditionnellement crs par un appel systme appel fork(), et le fils ainsicr 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

  • 7/25/2019 Backdoors Et Rootkits Avancees

    7/19

    Backdoors avances p. 7/19Nicolas Dube

    du pre, notamment de son contexte de scurit, cest--dire de lutilisateur sous lequel ilsexcutait.

    2.3 Fonctionnalits de scurit des systmes dexploitation

    Les systmes dexploitation modernes fournissent de nombreuses fonctionnalits de scurit.

    Cependant, limplmentation de telles fonctionnalits nest la plupart du temps pas ralise aucur mme du systme dexploitation (kernel), mais largement dans des applicatifs modeutilisateur fournis avec le systme. Ainsi, linvite de login Unix nest rien dautre quunprogramme aucunement particulier, sinon quil est lanc au dmarrage par un autre processus(init) ou par les gestionnaires de liaisons rseaux (telnetd). Dun point de vue machine, rien nediffrencie /bin/login dautres programmes, le coeur du systme dexploitation ignorecompltement le rle si crucial de login.

    Figure 3: Programmes /bin/ls et /bin/login sur Sun Solaris 2.6

    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. Cesfonctionnalits ntant pas considres comme des oprations canoniques, elles ne sont pasimplmentes dans le kernel du systme, mais dans un ensemble de librairies dynamiques liesaux applicatifs eux-mmes, et sexcutant donc dans leur contexte.

    Ainsi, le programme/bin/loginvrifie le couple (login, mot de passe) fourni par lutilisateur quisouhaite sauthentifier. Cette vrification est faite en interrogeant la base des utilisateurs Unix dufichier /etc/passwd. Les fonctions getpwent(),getpwnam(),getpwuid() implmentes dans la libcsoccupent de cette interrogation ; elles vont elles-mmes appeler les appels systmesdouverture de fichier (open()) et de lecture (read()) afin de lire squentiellement les lignes de labase des mots de passe /etc/passwd et vrifier la correspondance avec les informationsdauthentification entres par lutilisateur. Une fois lutilisateur trouv dans la base, /bin/loginconstruit un nouvel environnement pour excuter le shell qui sera prsent lutilisateur. Cenouvel environnement devant sexcuter sous lidentifiant (uid) de lutilisateur en question,/bin/login effectue alors un appel systme setuid() permettant de positionner lidentifiantutilisateur du processus appelant (cest--dire du nouvel environnement). Le seul contrleeffectu par le kernel avant dautoriser lopration setuid() consiste vrifier que le processus

    appelant sexcute jusqualors en tant que root, le super-utilisateur Unix.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    8/19

    Backdoors avances p. 8/19Nicolas Dube

    Figure 4: droulement d'une session de login

    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 sonenvironnement) 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 concernentque deux aspects :

    - la protection des processus entre eux, notamment au niveau de la gestionmmoire. De ce fait, deux processus voulant communiquer sont obligs de le faire parlintermdiaire de fonctionnalits offertes par le kernel, aucune communication directe

    purement mode utilisateur nest possible. La protection des processus est un lmentextrmement important des systmes dexploitation, notamment en terme de fiabilit etde disponibilit du systme car cest ce mcanisme qui assure aussi quun processusnentrane pas dans sa chute dautres processus. En terme de scurit, lacommunication entre processus peut tre suivie de manire fine par le systmedexploitation puisque toute communication impliquera des appels systmes.

    - la scurit du systme de fichiers. Cest le kernel, au niveau de primitives syscalltelles que open(), read(), write(), close(), qui gre les permissions sur les objets du

  • 7/25/2019 Backdoors Et Rootkits Avancees

    9/19

    Backdoors avances p. 9/19Nicolas Dube

    systme de fichiers au sens large (dont socket rseaux, ). La notion didentifiantsutilisateurs et groupes est largement associe la scurit du systme de fichiers.

    - la gestion des identifiants dutilisateurs (uid) et de groupes (gid), au moyendalgorithmes simples (possibilit de passer de luid 0 une uid quelconque sansrestriction, opration inverse possible dans certains cas seulement).

    Ainsi un outil de dtection dintrusion locale comme Tripwire1met chronologiquement en jeules fonctionnalits de scurit kernel suivantes pour assurer son bon fonctionnement :

    - Avant son excution, scurit du systme de fichiers, afin dviter que le binaire lui-mme de Tripwire ne soit remplac par un cheval de Troie ignorant les modificationscommises au systme par le pirate.

    - Durant son excutiono Protection des processus, pour empcher la modification dynamique de la

    mmoire (code, donnes) du processus Tripwire par un autre processus piratesitu sur la machine. Ce processus pirate pourrait par exemple prendre au vol lecontrle de la mmoire du processus Tripwire et modifier le code de vrificationdes fichiers pour quil saute les fichiers qui ont t modifis par le pirate, cecisans avoir besoin de toucher le binaire Tripwire prsent sur disque.

    o Scurit du systme de fichiers, garantissant que les fichiers qui sontprsents Tripwire lorsquil les ouvre pour en effectuer des vrifications sontbien ceux stocks sur disque et utiliss par le systme. Tripwire repose ainsi surle fait que le kernel offre la mme vision des fichiers pour tous les processus.

    2.4 Le paradigme de lutilisateur root

    Le super utilisateur root est sans doute une des caractristiques les plus connues dessystmes Unix. Issus dun hritage historique fort, prcdant larrive massive des rseaux, lesutilisateurs Unix sont grs sous le modle du tout ou rien :

    - dune part, des utilisateurs non privilgis, identifis par leur login/mot de passe maissurtout de manire interne par un uid entier strictement suprieur 0 sont restreints dansleurs actions sur les processus/fichiers/,

    - dautre part un utilisateur spcial, dit root correspondant en interne luid 0 disposede tous les pouvoirs sur tous les objets du systme : aussi bien fichiers que ressourceset processus.

    Si pour ladministrateur, qui doit accder des fonctionnalits critiques, ajouter des utilisateursou des services, lutilisateur root trouve toute son application, au niveau systme lui-mme, lesattributions de root sont pour le moins obscures. On pourrait en effet rsumer par le simple faitque lutilisateur root est, du point de vue kernel, un utilisateur fourre-tout nayant aucunerestriction :

    - manipulation complte de tous les objets du systme de fichiers- accs sans restrictions aux priphriques- accs complet la mmoire

    o mmoire utilisateur : prise de contrle dautres processus, consultation de leurmmoire et mme modification (modification dynamique du code ou desdonnes)

    1Logiciel de vrification de lintgrit des fichiers, http://www.tripwire.com/

  • 7/25/2019 Backdoors Et Rootkits Avancees

    10/19

    Backdoors avances p. 10/19Nicolas Dube

    o mmoire kernel : consultation pour surveillance de lexploitation et modification auvol des paramtres kernel (tuning ou ajout de fonctionnalits, pilotespriphriques, )

    De ce fait, tout programme lanc avec les privilges rootnaura sur son chemin aucune barrirede scurit.

    Malheureusement, le modle prcdent induit des effets transitoires forts dsagrables.Beaucoup de fonctions systmes tant lgitimement restreintes lutilisateur root, nombre deprogrammes cruciaux ncessitent davoir au moins un bout de leur excution effectue en tantque root. Tout processus devant un moment donn accder une fonction privilgie devratre 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 rootpour pouvoir sattacher au port TCP/UDPdcoute correspondant2. Ainsi, pour environ 10 lignes de code privilgi, des serveurs rseauxcomplexes 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 duprocessus, de son chemin dexcution et donc possibilit pour le pirate dexcuter distancenimporte quel code, directement en tant que root.

    Dans la suite du document, nous nous intresserons aux possibilits qua un pirate, pass rootsur 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 dedtection dintrusion ds lors quil est root, en modifiant la base de confiance questnormalement le systme dexploitation.

    2Ceci 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 nesimulent des serveurs lgitimes en se mettant en coute sur des ports privilgis standards).

  • 7/25/2019 Backdoors Et Rootkits Avancees

    11/19

    Backdoors avances p. 11/19Nicolas Dube

    3. Compromission totale dun systme par modification dukernel

    3.1 Mise en vidence

    Nous avons pu ainsi constater que, par manque de fonctions scurit critiques, la plupart dessystmes actuels sont compltement vulnrables une faille localise sur un de leurscomposants logiciel. Afin dillustrer cette affirmation, nous allons maintenant tudier un exempledes possibilits qua un pirate ayant obtenu laccs root sur un serveur pour le compromettrecompltement, jusqu rendre inoprants tous les moyens de scurit de la machine en

    question.

    Une des fonctionnalits spcifies prcdemment dans les possibilits de lutilisateur root taitle paramtrage et la modification du kernel.

    Alors que ces oprations sont impossibles pour un utilisateur normal, root dispose de plusieursfaons pour modifier un kernel Unix :

    - modification des fichiers kernels eux-mmes

    Ces fichiers (/platform/platform-name/kernel/unix et /kernel/genunix sous Solaris) constituentles programmes du kernel stocks sur disque, exactement comme tout autre logiciel dispose

    dau moins un fichier excutable sur disque. Ils sont chargs au dmarrage de la machine parun mini programme dit bootstrap, et leur accs, lors de lexcution, est limite par permissionscomme tout autre fichier.

    La modification des fichiers du kernel sera effective au prochain dmarrage du systme. Avantcela, les modifications faites aux fichiers kernel sont facilement identifiables puisque le code demise en chec des logiciels de surveillance na pas encore t charg. Cette manipulation estdonc peu pratique pour un pirate qui ne peut risquer se faire dtecter en redmarrant lesystme. Dautre part, bien souvent (cas des systmes commerciaux) les sources du kernel nesont pas disponibles ; les modifications sont donc extrmement dlicates raliser. Cependant,cette mthode assure que les modifications effectues survivront aux redmarrages de lamachine et seront en place longtemps, le kernel tant rarement mis jour. Elle est donc utilise

    assez couramment en conjonction avec dautres mthodes.

    - Ajout au vol de pilotes priphriques ou de modules

    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 facilementpossible. 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 pilotespriphriques. Ces modules peuvent tre chargs dans le systme dexploitation la vole

  • 7/25/2019 Backdoors Et Rootkits Avancees

    12/19

    Backdoors avances p. 12/19Nicolas Dube

    grce des commandes simples. Ils sont alors digrs par le kernel et sexcutent en modeprivilgi dans ce dernier, ayant un accs complet et sans restriction lensemble du systme.

    Lide dutiliser cette fonctionnalit lgitime des systmes dexploitation modernes3 a tintroduite ds 1995 sur les systmes libres et popularise par plusieurs articles 4 techniques en1997, 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, .

    - Modification au vol de la mmoire du kernel

    La mmoire tant un priphrique comme un autre, un fichier spcial /dev/mem lui est souventassoci qui permet la lecture et la modification de la mmoire physique. Lcriture une positiondonne dans ce fichier entrane la modification de la zone mmoire correspondante. Demme, le fichier /dev/kmem est associ la mmoire virtuelle du kernel. Ces deux mthodespermettent 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 crivantdans 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 moindreerreur dun octet peut dtruire le systme) a cependant t dmontre comme ralisable, et desoutils dinjection de la sorte seraient disponibles dans certains cercles pirates. La mthode deprdilection reste celle des modules ; plusieurs kits sont disponibles dans le domaine publicutilisant 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 fonctionnalitslgitimes du systme, modifier le systme dexploitation son gr afin dtre invisible aux

    systmes de surveillance locaux et ladministrateur. Nous allons maintenant voir quelles sontles possibilits et les techniques communment implmentes.

    3.2 Techniques usuelles

    En modifiant le cur mme du systme dexploitation, le pirate contrle tous les applicatifs quitournent sur la machine. Il peut leur prsenter une vue biaise de lactivit du systme, et nadonc plus, comme avec les backdoors traditionnelles, besoin de modifier tous les programmesde surveillance un un. Les buts recherchs sont le maintien ais sur le systme (en particulier,pouvoir revenir facilement, sans avoir drouler lintrusion une nouvelle fois) et la dissimulationde ses fichiers, de ses processus, de son activit en gnral. Cette dissimulation doit tromperaussi bien ladministrateur que les outils automatiques de dtection.

    3Quasiment aucun systme Unix moderne nest dpourvu de cette fonctionnalit.

    4Halflife, Bypassing integrity checking systems, Phrack 51/9Plaguez, Weakening the Linux kernel, Phrack 52/18

  • 7/25/2019 Backdoors Et Rootkits Avancees

    13/19

    Backdoors avances p. 13/19Nicolas Dube

    3.2.1 Dissimulation de processus

    Dissimuler des processus est une des premires proccupations du pirate. En effet, lacommande de listing des processus actifs ps est sans doute, avec ls, la commande la plusutilise sur un systme Unix. En dissimulant ses propres processus, le pirate peut laisser sanscrainte sniffers5, portshell6, .

    Plusieurs mthodes existent pour lister les processus actifs sur un systme. Toutes cesmthodes reposent sur une interrogation du systme dexploitation, qui est le seul mme defournir cette liste.Trs souvent, la liste des processus est obtenue en parcourant le rpertoire virtuel /proc, quicontient un sous-rpertoire par processus actif. Afin de mettre en dfaut les programmesreposant sur /proc, la backdoor kernel modifie la partie VFS du kernel, et en particulier lesfonctions douverture et de lecture des rpertoires. En remplaant les fonctions originales parses propres fonctions qui omettent de crer des sous-rpertoires pour les processus cacher, lepirate dissimule les processus quil souhaite.

    Figure 5: Remplacement par un module de la fonction systme proc_readdir par une fonctiondissimulant 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 unmodule ayant accs la mmoire kernel.

    Certains codes publics utilisent mme des mcanismes assez pousss base de signaux pourindiquer dynamiquement au code pirate dans le kernel quels processus il doit cacher, sans avoirbesoin de reprogrammer le module. Le module intercepte le signal de type spcial envoy unprocessus 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 dela mmoire du kernel au travers du priphrique virtuel/dev/kmem. Comme prcdemment, unaiguillage indiquant au kernel quelle est la fonction appeler pour ouvrir et lire dans le

    5Programmes dcoute de rseaux enregistrant les mots de passe qui y transitent.

    6Type de programmes trs souvent utiliss par les pirates et donnant accs un shellsur un port TCP ou

    UDP donn.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    14/19

    Backdoors avances p. 14/19Nicolas Dube

    priphrique virtuel /dev/kmem. Le pirate remplace alors ces fonctions par les siennes, qui nettoient les valeurs renvoyes au processus demandeur.

    3.2.2 Dissimulation de fichiers

    Les fichiers sont dissimulables exactement comme prcdemment, en modifiant les aiguillagesdu pilote systme de fichiers correspondant dans le noyau. Ainsi, si lintrus cherche cacher desfichiers stocks sur un disque dur format en UFS, il modifie la routine UFS de listing desrpertoires afin de cacher les fichiers quil souhaite. Il veut cependant toujours pouvoir y accderen lecture ou criture (consultation denregistrements de sniffers par exemple), il ne modifiedonc pas les autres fonctions.

    Figure 6: Dissimulation d'un fichier sous Solaris par modification kernel, pour cet exemple leprogramme 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 auxfichiers) sans quaucune date daccs ou de modification ne soit change . Le code tait activen envoyant un signal spcial au processus sur lequel on voulait installer la fonctionnalit, ettous les descendants du processus en hritaient. Le pirate envoyait donc trs probablement lesignal son propre shell afin que toutes les consultations/modifications de fichiers quil effectuait partir de ce shell soient invisibles.

    3.2.3 Excution dtourne

    La modification de binaires systmes tels que /bin/login ou sshd est une technique favorite despirates. Ils peuvent en effet facilement introduire des chevaux de Troie la place desprogrammes de login standard pour pouvoir se connecter sans avoir besoin de login / mot depasse autoris. Une fois que le cheval de Troie (ou plutt, backdoor porte drobe dans cecas) a dtect que son matre souhaite se connecter, il lui accorde laccs comme unutilisateur lgitime mais nenregistre nulle par de traces de cette connexion.

    Cependant, la pose de backdoors la place de programmes standards ncessite leurmodification, et des outils performants tels que Tripwire existent pour dtecter de tellesmodifications aux fichiers sensibles. Ces outils de vrification peuvent quand mme tre mis en

  • 7/25/2019 Backdoors Et Rootkits Avancees

    15/19

    Backdoors avances p. 15/19Nicolas Dube

    chec par des modifications au kernel. Noublions pas en effet que pour lire les fichiers et enfaire des signatures, les outils de vrification se fondent sur les informations fournies par lekernel (ils utilisent les services du kernel pour ouvrir et lire les fichiers, et ne peuvent pas faireautrement).Cette constatation a t leve par plusieurs articles de la revue Phrack afin de mettre en dfautles 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 queceux-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 devrification ne trouveront rien redire.

    - Le programme ssh de remplacement (cheval de Troie) est mis sur un autre endroit dusystme de fichiers, par exemple /var/tmp/backdoorsshd. Son existence peut tremasque 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 seralance la place, tandis que si un programme de vrification ouvre le programme sshdpour levrifier, elle verra le fichier original.

    3.2.4 Backdoors rseaux

    Une des dernires avances en matire de modification des kernels est la modification des pilesrseaux elles-mmes afin dy introduire des portes drobes.

    Ds janvier 1998, des exprimentations sont publies dans la revue Phrack concernant des

    modules kernel dtectant les paquets UDP contenant un mot clef donn et excutant unprogramme. Ces premiers exemples de dclenchements de backdoors distance parmodification des piles rseaux ont t largement amliors par la suite.

    Ainsi, un article7 de la mme revue en septembre 1999 dtaille un module permettant entreautres dinverser les bits SYN et FIN dans une connexion TCP, crant des connexions TCP nonreconnues par les systmes non quips du module, et obscures lanalyseur de trafic. LesIDS, ntant pas capables dinterprter de tels flux, sont aussi mis en dfaut par cesmodifications des couches rseaux, idales pour raliser des covert chanels8.

    La modification des couches rseaux peut aussi avoir une incidence sur le systme local lui-mme. Un module9 rcupr par nos soins sur une machine Linux compromise modifiait parexemple la couche SOCK_RAW du kernel afin de masquer aux analyseurs ou sondes rseaux

    situes sur la machine certains types de paquets. Normalement, la fonctionnalit SOCK_RAWpermet de remonter aux applications toutes les trames au format brut ; cest ainsi que sontdvelopps les IDS rseaux ou les analyseurs comme tcpdump. Le systme quip du module

    7Kossak, Lifeline, Building into the Linux network layer, Phrack 55/12

    http://www.phrack.com/show.php?p=55&a=128Flux dissimuls permettant par exemple de faire sortir secrtement dun rseau local des informations

    sensibles, en les mlangeant du trafic normal.9Module apparemment non connu publiquement.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    16/19

    Backdoors avances p. 16/19Nicolas Dube

    en question ne signalait pas lIDS les paquets ayant un port source particulier ou contenant unmot 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 installesur la machine de dtecter le trafic rseau gnr par lactivit du pirate.

    3.3 Importance du problme

    Bien que le problme des modifications kernel soit connu de longue date (il a mme fait lobjetdun avis du CERT10), il nest pas encore matris

    En particulier, il est souvent dit pour minimiser limpact de tels outils pirates que ceux-cincessitent une technicit leve. Cependant, ce serait oublier que nombre de modules publicsfacilement utilisables (notamment sous Linux) sont disponibles, et pas plus dlicats dutilisationque la plupart des programmes dattaques. La littrature est de plus abondante et les exemplesdutilisation disponibles foison :

    -Adore

    v0.34 (Linux) par Stealth

    11

    Module kernel Linux avec programme dinstallation et dadministration aise permettantde gagner root par une fonction cache, dissimuler des processus, des fichiers desconnexions TCP (contre netstat) et du mode Promisc.

    - Kernmod0.2 (Solaris) par Job de Haas - ITSX12Dmonstration dun module kernel Solaris ralisant toutes les oprations de base(dissimulation de fichiers, processus, connexions TCP, ).

    - Rootkit200013(Windows NT 4.0, Windows 2000) par Greg Hoglund & collectifRootkit kernel sous Microsoft Windows.

    Comme le montre lexemple prcdent de kernmod et rootkit 2000, le fait que les sources dukernel Solaris ou de Windows NT ne soient pas disponibles na pas dissuad la communaut dedvelopper des rootkits Solaris ou NT. En effet, les fabricants de systmes dexploitation ont toutintrt documenter les mthodes de programmation du kernel afin de favoriser ledveloppement de pilotes priphriques pour leurs systmes dexploitations ; les mthodesutilises pour dvelopper les pilotes priphriques sont alors reprises pour la ralisation demodules pirates.

    Aujourdhui, tous les systmes dexploitation sont modulaires et documents, pour permettre unenrichissement fonctionnel par la communaut des dveloppeurs et fabricants de matriels.Malheureusement, aucun de ces systmes nintgre en parallle des mcanisme de scuritpermettant de limiter limpact dune compromission privilgie (root). Les possibilits sans limitesqua un agresseur pouvant modifier un systme dexploitation montrent clairement les limites duconcept actuel de tout ou rien au niveau des privilges. Quand le kernel, normalement base de

    10http://www.cert.org/vul_notes/VN-98.02.kernel_mod.html

    11http://online.securityfocus.com/data/tools/adore-0.34.tgz

    12http://www.itsx.com/

    13http://www.rootkit.com/

  • 7/25/2019 Backdoors Et Rootkits Avancees

    17/19

    Backdoors avances p. 17/19Nicolas Dube

    confiance, a t compromis, force est de constater quil ny a plus aucun salut possible pour lesystme.

    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 pourdtecter et corriger une machine affecte. Le fait que les systmes de dtection se fondent surdes informations fournies par un kernel potentiellement compromis rend la dtection trsdlicate.

    Cependant, on peut arrive dtecter quelques-uns des rootkits kernel classiques. Les mthodesutilises sont base de signatures et mme trs largement des bugs ou oublis des rootkits.

    Une mthode couramment utilise consiste parcourir larborescence /proc, en essayant dallerdans les rpertoires /proc/N/ avec N allant de 1 65535. Si lopration russie mais que lerpertoire ntait pas dans la liste obtenue par un ls, le processus N est cach par le systmedexploitation et une modification du kernel a sans doute t effectue. En effet, la plupart desmodules, par soucis de facilit ou mme par mauvaise connaissance du fonctionnement internedes systmes, ne changent que certaines fonctions du kernel, laissant une fois quils sontinstalls de nombreux bugs ou effets indsirables induits par lintroduction des modifications.Cette mthode, peu fiable, dtecte uniquement les LKM simples ou mal programms. Elle restequand mme trs utile pour des compromissions automatiques ou agresseurs bas de gamme, etest 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 transmisespar un systme potentiellement compltement dtourn.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    18/19

    Backdoors avances p. 18/19Nicolas Dube

    La seule mthode fiable pour dtecter de tels rootkits est larrt complet du systme et lexamende ses disques partir dune machine sre. Si une compromission est dtecte, la rinstallationtotale est de rigueur.

    3.4.2 Prvention

    3.4.2.1 Prvention des attaques rootLutilisateur root tant le seul pouvoir modifier les fichiers sensibles et le noyau du systme, laparade 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 systmemoderne se prtendant scuris, est par dfaut absente et souvent bien difficile raliser soi-mme. Elle est mme presque impossible effectuer sans modifications drastiques au kernel.Comme nous lavons fait remarquer dans la premire partie du document, faute desfonctionnalits 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 lesusuels. Il est vrai que de telles fonctionnalits ajouteraient en complexit aux systmesdexploitation, qui prfrent tort ou raison offrir aux programmeurs et utilisateurs uneconvivialit plus importante (au niveau de lajout de drivers, de ladministration, ).Cependant, les systmes Microsoft Windows NT 4.0, Microsoft Windows 2000 et successeursproposent une gestion des rles et permissions assez labore permettant de dployer un plande 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, vitantainsi le recours systmatique lutilisateur Administrateur ds quun privilge lev estncessaire. Remarquons quoiquil en soit que de nombreux services rseaux doivent toujoursdisposer de privilges systmes, cest--dire les plus levs ; la gestion dattributionsspcifiques par processus (et non par utilisateur) ntant pas encore supporte.

    3.4.2.2 Limitation des pouvoirs de rootConsidrons maintenant le cas o il nest pas possible de se prmunir de lutilisation de root, etquune compromission de cet utilisateur nest pas exclue. On peut vouloir minimiser sesattributions 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 lacompromission de son systme dexploitation. Si le systme dexploitation reste sain, il pourratoujours fournir aux applications de dtection les moyens de reprer des modifications defichiers 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), sanschangements de configuration, les systmes BSD implmentent un tel mcanisme connu sous

    14Le 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 lessystmes 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.

  • 7/25/2019 Backdoors Et Rootkits Avancees

    19/19

    Backdoors avances p. 19/19Ni l D b

    le nom des securelevels. Des permissions tendues sur les fichiers et un identifiant spcial sontintroduits. Lidentifiant spcial, un entier appel securelevel, peut uniquement tre incrmentpar des administrateurs. A ltat 0, le systme est dit non sr et le comportement est celui dunsystme classique sans securelevel. Les permissions tendues peuvent tre changes et lekernel modifi par /dev/kmem ou /dev/mem. Aux tats srs 1 et 2, les fichiers virtuels/dev/kmemet/dev/memainsi quentre autres les permissions spciales des fichiers ne sont plus

    modifiables.

    Sans ces mcanismes interdisant les modules (malheureusement, enlevant de ce fait unefonctionnalit bien pratique), lcriture dans les priphriques mmoire et la modification desfichiers kernel eux-mmes, il est quasiment impossible de protger un systme o root a tcompromis dune modification du kernel. Certaines tentatives ont t faites pour dvelopper desoutils vrifiant en temps rel la table des appels systmes, cependant il existe de nombreusesparties dun systme dexploitation modifier part les appels systmes, et ces outils neferaient que rebuter les pirates moins techniques.

    4. ConclusionNous avons pu voir comment, en dtournant des possibilits lgitimes, un agresseur peutmanipuler sa guise un systme entier au point quaucune information ne puisse plus trevalide.

    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 systmesdexploitation, doffice vulnrables de nombreuses attaques. Cependant, nous avons puassister ces derniers mois, en raison notamment dvnements majeurs tels que larrive devers et virus diffusion exceptionnelle, dun retournement de la tendance. Mme si nous ne

    pouvons quapprouver ces nouvelles orientations, le problme de la modification des noyauxnous montre bien que des changements drastiques seront ncessaires aux curs mme dessystmes dexploitation, afin que la confiance perdue de longue date puisse tre restaure.