De l invisibilité des rootkits : application sous Linux



Documents pareils
De l invisibilité des rootkits : application sous Linux

Logiciel de base. Première année ENSIMAG

Playing with ptrace() for fun and profit

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Les vulnérabilités du noyau. LECORNET Olivier LEGROS Bruno VIGIER Nicolas Promo 2005

Les rootkits navigateurs

Une approche de virtualisation assistée par le matériel pour protéger l espace noyau d actions malveillantes

«Le malware en 2005 Unix, Linux et autres plates-formes»

Cours A7 : Temps Réel

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

Systèmes d exploitation

SRS DAY: Problématique liée à la virtualisation

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Partie 7 : Gestion de la mémoire

KoinKoin. Système d exploitation à architecture basée micro-noyau. Antoine Castaing Nicolas Clermont Damien Laniel

REALISATION d'un. ORDONNANCEUR à ECHEANCES

ERESI : une plate-forme d analyse binaire au niveau noyau

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

Projet Sécurité des SI

Exécutif temps réel Pierre-Yves Duval (cppm)

Programmation assembleur : aperçu

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Architecture des ordinateurs

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

NETTOYER ET SECURISER SON PC

ISEC. Codes malveillants

Cours d initiation à la programmation en C++ Johann Cuenin

La technologie Java Card TM

Janvier Entretien de l ordinateur

Eclipse atelier Java

Conception de circuits numériques et architecture des ordinateurs

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Nouvelles stratégies et technologies de sauvegarde

SYSTÈME DE GESTION DE FICHIERS

Croisière au cœur d un OS Étape 4 : Mise en place de la pagination

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Java Licence Professionnelle CISII,

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Analyse de sécurité de logiciels système par typage statique

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Linux. Sécuriser un réseau. 3 e édition. l Admin. Cahiers. Bernard Boutherin Benoit Delaunay. Collection dirigée par Nat Makarévitch

Désinfecte les réseaux lorsqu ils s embrasent

Sauvegarde des données au LAAS

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Structure fonctionnelle d un SGBD

L action cyber Russe au service du renseignement stratégique

Dynamic Computing Services solution de backup. White Paper Stefan Ruckstuhl

TP3 : Manipulation et implantation de systèmes de fichiers 1

Création d un «Web Worm»

Fiche Technique. Cisco Security Agent

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Le cluster à basculement

S Catalogue des Formations Sécurité. Présentation. Menu. Présentation P.2 Nos formations P.3 Modalités P.9 Bulletin d inscription P.

Initiation à la sécurité

A propos de la sécurité des environnements virtuels

Symantec Endpoint Protection Fiche technique

Les avantages de la virtualisation sont multiples. On peut citer:

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

École Polytechnique de Montréal. Département de Génie Informatique et Génie Logiciel. Cours INF2610. Contrôle périodique.

Installation et utilisation

Plan du cours. Historique du langage Nouveautés de Java 7

Réalisation d un OS 32 bits pour PC(x86)

IV- Comment fonctionne un ordinateur?

CRYPTOGRAPHIE. Chiffrement par flot. E. Bresson. SGDN/DCSSI Laboratoire de cryptographie

Notions de sécurités en informatique

Un ordonnanceur stupide

Etat de l art des malwares

Compilation (INF 564)

Architecture des ordinateurs

HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet.

Test de performance en intégration continue dans un cloud de type PaaS

Adresse directe fichier : Adresse url spécifique sur laquelle le lien hypertext du Client doit être

Sécurité des réseaux Les attaques

Sauvegarde et restauration de données

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Structure d un programme

Tutoriel pour la gestion des bases de données du Serveur Mysql virtualisé par le Gip Récia

Conventions d écriture et outils de mise au point

Mobilité, quand tout ordinateur peut devenir cheval de Troie

OPTENET DCAgent Manuel d'utilisateur

Rootkit pour Windows Mobile 6

Windows Server Chapitre 1: Découvrir Windows Server 2008

Résumé Génération de code Le code intermédiaire

Virtualisation et ou Sécurité

Mise en place d une info-structure étendue et sécurisée à base de logiciels libres

MEAD : temps réel et tolérance aux pannes pour CORBA

UE Programmation Impérative Licence 2ème Année

Remote Method Invocation Les classes implémentant Serializable

Systèmes et algorithmes répartis

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Les débordements de tampons et les vulnérabilités de chaîne de format 1

La Continuité d Activité

PLAN. Industrialisateur Open Source LANS DE SECOURS INFORMATIQUES PRINCIPES GENERAUX ETAT DE L ART SELON BV ASSOCIATES

Chap. I : Introduction à la sécurité informatique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Transcription:

De l invisibilité des rootkits : application sous Linux Eric Lacombe 1 Frédéric Raynal 2 Vincent Nicomette 3 1 eric.lacombe@{laas.fr,security-labs.org} LAAS-CNRS - EADS-CCR 2 frederic.raynal@security-labs.org Sogeti ESEC - MISC Magazine 3 nicomett@laas.fr LAAS-CNRS 31 mai 2007 1 / 27

Introduction Définition de rootkit Ensemble de modifications permettant à un attaquant de maintenir dans le temps un contrôle frauduleux sur un système informatique. 2 / 27

Plan Introduction 1 2 3 3 / 27

Plan Introduction 1 2 3 4 / 27

Introduction Jusqu alors : démarche de factorisation afin de toucher le plus de monde avec un minimum de modifications. D abord modification des commandes du système. Ensuite factorisation en espace utilisateur via la modification de DSO - Dynamic Shared Object, compilateur, etc. Enfin au sein de l entité partagé par tous les éléments du système : le noyau. Maintenant : stade d externalisation du code malicieux. Les rootkit-hyperviseurs se place en dessous du noyau en exploitant les technologies de virtualisation. 5 / 27

Introduction Jusqu alors : démarche de factorisation afin de toucher le plus de monde avec un minimum de modifications. D abord modification des commandes du système. Ensuite factorisation en espace utilisateur via la modification de DSO - Dynamic Shared Object, compilateur, etc. Enfin au sein de l entité partagé par tous les éléments du système : le noyau. Maintenant : stade d externalisation du code malicieux. Les rootkit-hyperviseurs se place en dessous du noyau en exploitant les technologies de virtualisation. 5 / 27

Plan Introduction 1 2 3 6 / 27

Quatre éléments fonctionnnels Un injecteur : installer le rootkit. Un module de protection : protéger le rootkit et les activités de l attaquant. Une backdoor : communiquer avec le rootkit. Des services : effectuer des opérations malicieuses. 7 / 27

Définitions des éléments fonctionnels d un rootkit (1/2) Un injecteur Mécanisme que l attaquant emploie afin d insérer le rootkit dans le système. Ne sert qu une fois lors de l installation du rootkit. Un module de protection Objectif : rendre le rootkit tenace sur le système tout le temps nécessaire à l attaquant. Stratégies envisageables : Dissimulation : cacher la présence du rootkit sur le système (parasitage de processus, etc.) et l activité de l attaquant. Résistance : faire en sorte que le rootkit ne puisse être enlevé même s il est découvert (chiffrement de données critiques pour le bon comportement du système). Persistance : survie au redémarrage du système (i.e. dissimination dans des mémoires non-volatiles comme dans /boot/vmlinuz sur le disque). 8 / 27

Définitions des éléments fonctionnels d un rootkit (2/2) Une backdoor Rôles : Medium de communication entre l attaquant et le système compromis. Accéder aux services fournis par le rootkit. Vecteurs d interaction : Entre l attaquant et le système compromis. Entre le système compromis et les services du rootkit. Des services Services passifs (espionnage) : keylogger, écoute réseau, etc. Services actifs (modifient perceptiblement le comportement du système) : lancement d un DoS, suppression de fichiers, déroutage des ressources de calcul du système, etc. 9 / 27

Représentation graphique de l architecture fonctionnelle d un rootkit Espace utilisateur Programme Client Processus complice Réseau Machine de l attaquant Code noyau malicieux Services passifs Espace noyau Machine compromise Module de protection Services actifs 10 / 27

Plan Introduction 1 2 3 11 / 27

Fonctionnement des appels système sous Linux system_call:... call * sys_call_table... offset dans la table (,%eax,4) @sys_restart_syscall @sys_exit @sys_fork @sys_read @sys_write Fonctionnement Depuis le mode utilisateur : Préparation de la requête. eax contient le numéro de l appel système. Autres registres : contiennent les paramètres. On bascule en mode noyau : Levée de l interruption 0x80. Autre technique : l instruction sysenter. 12 / 27

Fonctionnement et détournement de l appel système 0 SCT (SysCall Table) @sys_restart_syscall sys_restart_syscall () {... restart = &current_ti() -> return restart->fn(restart); } restart_block; thread_info (structure propre à chaque processus) L appel système 0 restart_block long (*fn)(restart_block *) int arg0, arg1,... Point d entrée vers l espace noyau. Rôle : employé par le noyau pour reprendre certains appels système interrompus (propre au processus interrompu). Fonctionnement : prend en arguments l adresse de l appel système à relancer et ses paramètres, ajustés si besoin. 13 / 27

Fonctionnement et détournement de l appel système 0 SCT (SysCall Table) @sys_restart_syscall sys_restart_syscall () {... restart = &current_ti() -> return restart->fn(restart); } restart_block; thread_info (structure propre à restart_block long (*fn)(restart_block *) int arg0, arg1,... ON CHANGE CETTE ADRESSE chaque processus) L appel système 0 Point d entrée vers l espace noyau. Rôle : employé par le noyau pour reprendre certains appels système interrompus (propre au processus interrompu). Fonctionnement : prend en arguments l adresse de l appel système à relancer et ses paramètres, ajustés si besoin. 13 / 27

Design de notre rootkit, fondé sur le détournement de l appel système 0 La backdoor en espace noyau : minimisation des modifications Modification de la sémantique de l appel système 0 pour appeler n importe quelle fonction située en espace noyau. Permet l injection de code arbitraire si une fonctionnalité n est pas directement fournie par le noyau. La backdoor en espace utilisateur : le point d entrée dans le noyau Le processus complice : un mécanisme de relais via l appel système 0. Le programme client : siège de la logique de l attaquant Construction des opérations de l attaquant à partir des fonctions noyau et du code injecté. 14 / 27

Plan Introduction 1 2 3 15 / 27

L injecteur du rootkit Introduction Description Installation d un bootstrap : 1 Recherche de l adresse de la fonction noyau get page par pattern matching sur /dev/kmem. 2 Injection au fond de la pile noyau d un bootstrap B qui appelle cette fonction. 3 Appel de B via l appel système 0 depuis l espace utilisateur et obtention d une page mémoire P. Installation de la backdoor BK en espace noyau dans P : 1 BK est l interface entre les fonctions du noyau et l appel système 0 servant à les exécuter. Nouvelle sémantique de l appel système 0 : les registres eax, ebx, etc. contiennent l adresse de la fonction noyau à exécuter et ses paramètres. 2 Écriture dans le thread info du processus complice de l adresse de BK dans le champ employé par l appel système 0. 16 / 27

Dissimulation de la backdoor noyau du rootkit (1/2) Rappels PAGINATION Adresse Linéaire sur 32 bits PGD primaire : init_mm.pgd 31 A 21 B 11 X 0 4096 X 1024 Page Table 1024 A B Adresse Physique 0 Page PGD du processus courant : current->mm.pgd 0 0 Page Global Directory L allocateur mémoire non-contiguë VMALLOC VMALLOC ne modifie que la PGD primaire. Mise à jour de la PGD d un processus lors de l accès à la zone allouée. 17 / 27

Dissimulation de la backdoor noyau du rootkit (2/2) Méthode profitant du mécanisme paresseux de VMALLOC L1 L1 PGD des processus L1 PGD du processus complice Mémoire physique P2 P1 Description de la méthode Mise en place du mécanisme : 1 Allocation de 2 pages mémoire : Une qui contient le code malicieux à l adresse linéaire L 1 et physique P 1. Une qui est vide (L 2 et P 2). 2 Recherche de l entrée relative à L 1 dans le PGD primaire. 3 Remplacement de P 1 par P 2 dans ce PGD. 4 Ajout au processus complice, dans son PGD, de l association L 1 P 1. Conséquences : Au premier accès par un processus à L 1 : 1 Levée d une faute de page. 2 PGD du processus synchronisée avec le PGD primaire : ajout de l association L 1 P 2. 18 / 27

Plan Introduction 1 2 3 19 / 27

Dissimulation de processus (1/2) Méthodes Camoufler son descripteur Un processus est caractérisé par une structure task struct. Ce descripteur est lié de multiples façons avec ces pairs et certains sous-systèmes du noyau (mécanismes des signaux, ptrace, etc.). Pour le camoufler : on l enlève de toutes les listes le référençant afin que le noyau nie son existence. Deux approches pour le délier : A priori : duplication de do fork et suppression des opérations de liaison. A posteriori : suppression de ses liens après sa création. Attention : Il doit rester dans les listes de l ordonnanceur (au moins temporairement) pour s exécuter. 20 / 27

Dissimulation de processus (2/2) Observations Problème Le descripteur de processus est toujours présent en mémoire. On peut facilement le trouver en parcourant la mémoire physique. Solution Le parasitage mobile : le vol de cycles d exécution. Exemples d utilisation Exécution de codes malicieux sans création de task struct. Conception d une backdoor originale (cf. l article pour plus de détails). 21 / 27

Le parasitage mobile Objectifs Introduction Objectifs Exécuter du code par l intermédiaire de threads noyau. Ne pas altérer le travail de ces threads. Rappel À chaque changement de contexte, l ordonnanceur sauvegarde dans le descripteur du processus interrompu la valeur de son compteur d instructions. 22 / 27

Parasitage mobile dans le cas de deux threads noyau (1/2) Disposition task_struct n1 task_struct n2... eip...... eip... prologue Premier bloc Code noyau malveillant code malveillant épilogue Second bloc Code noyau malveillant 23 / 27

Parasitage mobile dans le cas de deux threads noyau (2/2) Algorithme task_struct n1 task_struct n2... eip... (1) exécution du premier bloc... eip... (3) exécution du second bloc (2) n1 passe la main à n2 Premier bloc Code noyau malveillant (4) n2 passe la main à n1 Second bloc Code noyau malveillant 24 / 27

Limites et Contributions Limites Au niveau du vecteur d interaction avec le noyau : Comportement a priori étrange du processus complice : exécution de nombreux appels système 0. Forte dépendance du programme client avec l API interne du noyau. Au niveau des techniques de dissimulation : Camouflage via VMALLOC ne résiste pas à une lecture complète de la mémoire physique. Parasitage mobile : Difficulté d implémentation de la charge malicieuse. Survie dépendante des processus infestés 25 / 27

Limites et Contributions Contributions Au niveau du vecteur d interaction avec le noyau : Visibilité locale des modifications effectuées sur le système. Tirer parti au maximum des fonctionnalités du noyau pour effectuer nos opérations. Construction des opérations de l attaquant, repoussée à l extérieur du système compromis. Au niveau des techniques de dissimulation : Mise à profit des caractéristiques d implémentation des mécanismes du noyau (ex : VMALLOC). Algorithme de parasitage mobile ne perturbe que temporairement le comportement des threads infestés. 26 / 27

Et maintenant...... place aux questions (et au café ;) 27 / 27