Ring 0f F1re. Par Sébastien Dudek (FlUxIuS)

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

CIE 1 : Mise en service d un PC, y compris le domaine de la sécurité informatique :

Le Network File System de Sun (NFS)

Systèmes d exploitation

Sophos Computer Security Scan Guide de démarrage

Concept de machine virtuelle

Rootkit pour Windows Mobile 6

Pourquoi choisir ESET Business Solutions?

Initiation à la sécurité

IFT Systèmes d exploitation - TP n 1-20%

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Initiation à JAVA et à la programmation objet.

Installation software

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Plantage et ralentissement

Sébastien Geiger IPHC Strasbourg

Les rootkits navigateurs

Playing with ptrace() for fun and profit

ENDPOINT SECURITY FOR MAC BY BITDEFENDER

Windows Server Chapitre 1: Découvrir Windows Server 2008

NETTOYER ET SECURISER SON PC

Linux embarqué: une alternative à Windows CE?

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

Fiche technique: Sécurité des terminaux Symantec Endpoint Protection La nouvelle technologie antivirus de Symantec

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

INSTALLATION DE WINDOWS 2000 SERVER POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

Le principe du moindre privilège appliqué aux systèmes Windows

L origine de tous les maux Les Rootkit dévoilés

Désinfecte les réseaux lorsqu ils s embrasent

Gérer ses environnements de développement avec Vagrant RMLL 2012

Virtualization is the isolation of one computing resource from the others Virtualization results in more efficient resource utilization, and enables

PPE GESTION PARC INFORMATIQUE

Can we trust smartphones?

Utiliser Glary Utilities

Techniques de contournement des firewalls personnels et protections

ISEC. Codes malveillants

Gestion et impression

StormShield v4.0 StormShield - Version 4.0 Presentation OSSIR 10 juillet 2006

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

Nicolas Hanteville. for(e=n;s<i;c++){attitude();} Sur environnement Microsoft Windows

Symantec Endpoint Protection

Derrière toi Une machine virtuelle!

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

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

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

IV- Comment fonctionne un ordinateur?

La protection des systèmes Mac et Linux : un besoin réel?

Windows Vista : Gestion des périphériques

Bootkit REvisited. Samuel Chevet Sogeti ESEC

Symantec Protection Suite Enterprise Edition Protection éprouvée pour les terminaux, la messagerie et les environnements Web

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

Utilisation de matériels industriels avec des outils de virtualisation open source. Open Source dans le monde industriel

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Robot WIFIBOT Lab V4. Lab V4.

TwinCAT 3 C++ Création de modules C++ sous TwinCAT 3 VERSION : 1.0 / PH

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

-1 - Postes de travail graphiques

Panorama des moyens de contrôle des ports USB sous Windows XP

Ordinateurs, Structure et Applications

A Libre Ouvert. Médiathèque Jacques Ellul. le

WEA Un Gérant d'objets Persistants pour des environnements distribués

Projet gestion d'objets dupliqués

Cours de Système : Gestion de Fichiers

Visualization sur Ubuntu: Quels Choix? Nicolas Barcet

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

A propos de la sécurité des environnements virtuels

Mobilité, quand tout ordinateur peut devenir cheval de Troie

Virtualisation et Sécurité

Windows 7 Système d exploitation. INF Outils bureautiques, logiciels et Internet

Comment configurer Kubuntu

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

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

Guide d installation d AppliDis Free Edition sur Windows Serveur 2008 R2

Serveur d'archivage 2007 Installation et utilisation de la BD exist

SRS Day. Attaque BitLocker par analyse de dump mémoire

Certificats Electronique d AE sur Clé USB

Imprimantes et partage réseau sous Samba avec authentification Active Directory

Configurations maximales

Programmation système I Les entrées/sorties

Virtualisation et le hosting. Christophe Lucas Sébastien Bonnegent rouen.fr>

FreeNAS Shere. Par THOREZ Nicolas

Installation et mise en sécurité des postes de travail Windows

La sécurité informatique

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Présentation Windows 7 &

1. Étape: Activer le contrôle du compte utilisateur

Virtualisation et sécurité Retours d expérience

Faiblesses des méthodes d administration en environnement Windows et état des lieux de l outillage intrusif 1/50

FusionInventory. Guillaume Rousse Journées francophones de Perl 2011

Distributeur des solutions ESET et 8MAN en France

PROXINFO-SERVICES. NOS TARIFS. Prix révisés le 01/03/2010

Présentation d HyperV

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

Problèmes liés à la concurrence

De l invisibilité des rootkits : application sous Linux

Attaques applicatives via périphériques USB modifiés : infection virale et fuites d informations

TP1. Outils Java Eléments de correction

Transcription:

Ring 0f F1re Par Sébastien Dudek (FlUxIuS)

Sommaire 1) Présentation des rootkits 2) Un peu d'architecture 3) Premiers pas sur le Ring0 4) La communication User<->kernel 5) Le DKOM 6) Références 2/35

Les Rootkits : Présentation

Un Rootkits : Virus, Exploit? O_o Un rootkit peut être un virus ou un exploit chef! MON C*L!!! 4/35 *Ce n'est ni un virus, ni un exploit

Rootkit : Culture générale Une technologie (ensemble de programmes et codes) Reprend le principe des virus (années 80) : Modifications logiques d'un programme Clés des tables systèmes Mémoire Objectif : Rendre un code furtif et indétectable Ne se reproduit pas!= virus 5/35

Le Rootkit première génération Très primitif = Backdoor Possibilités : Remplacer des binaires cacher des fichiers et processus Exemple (remplacement de «/bin/ls») : $ ls helloword.c angelina.png Nous avons caché à la vue de l'utilisateur notre fichier «Piraterlaplanet.bin» 6/35

Le Rootkit 2G Introduction aux Rootkits Kernel Utilisation de 2 modes : User + Kernel Hooking : IAT (Import Address Table) EAT (Export Address Table) SSDT (System Service Dispatch Table) IDT (Interrupt Descriptor Table) 7/35

Le Rootkit 3G Principe : modification des objets dynamiques de l'os chargés en mémoire DKOM (Direct Object Manipulation) : Exemple : FU Rootkit Les objets Kernel : Processus, threads, drivers, etc... Montre la faiblesse des systèmes de détections actuels 8/35

Le Rootkit «3G+» ou Firmware Firmware Ajout de fonctionnalités reverse engineering Taille du firmware limitée faire un rootkit adapté à la capacité de stockage. Vecteurs : BIOS Cible parfaite (Rappel: CIH) PCI PCMCIA USB Clés U3 Plus : Présentation Hack.lu par Guillaume Delugré (Sogeti ESEC) 9/35

Motifs d'un attaquant Un attaquant pénètre un système avoir des informations Détruire un système ou Garder un accès privilégié sur la machine revenir sur la machine à un autre moment 10/35

Utilisations et légalité Utilisés pour attaquer (vue précédemment) Mais aussi pour défendre (Ex: LoJack for Laptops) Un rootkit en lui même n'est pas illégale Rootkit concept de modification (Sourcescode, patching, easter eggs, spyware, updater & packages) Une modification peut compromettre/violer le copyright illégale 11/35

Composants attaqués Les composants du OS attaqués : Gestion E/S (Log de frappes, activités réseaux) Périphériques & systèmes de fichiers (Cacher des fichiers) Gestion d'objets (Cacher des handles de processus/threads) Moniteur de sécurité (Désactivation des règles de sécurité) Gestion des threads et processus (Cacher processus et threads) Gestion de la configuration (Cacher des entrées du registre) 12/35

Un peu d'architecture

Intel x86 : Interruptions (1) Un système attend toujours quelques chose à faire (Exécution de processus, Périphérique E/S, Répondre aux utilisateurs). Les évènements signalés par des interruptions ou traps (Exceptions). Trap : Causé par une erreur (Ex: Division par zéro ou accès mémoire invalide). Besoin de privilèges? Interfacé le kernel grâce aux «system calls». 14/35

15/35 Intel x86 : Interruptions (2)

16/35 Intel x86 : Rings (1)

Intel x86 : Rings (2) 17/35 4 Rings utilisés pour le contrôle d'accès Ring0 le plus privilégié Ring3 le moins privilégié Windows et Linux utilise le ring0 et ring3 (pas besoin des autres modes) Ring0 accès à la mémoire virtuelle, matériel, etc... Ring3 Ring0 = interruption (anormal)

Emmènes-moi au Ring0

Histoire de Kernel Driver Extension Kernel Code tournant en kernel possibilité de tout modifier Un module comporte un point d'entrée et une routine de nettoyage (utile pour les mises à jours de notre rootkit). 19/35

Kernel Driver : Exemple Windows #include "ntddk.h" VOID CleanUP(IN PDRIVER_OBJECT pdriverobject); NTSTATUS DriverEntry(IN PDRIVER_OBJECT TheDriverObject, IN PUNICODE_STRING TheRegistryPath) { DbgPrint("Hello wolrd"); // Fonction Print vu en debuggage } return STATUS_SUCCESS; VOID CleanUP(IN PDRIVER_OBJECT pdriverobject) { DbgPrint(''CleanUp routine called'') } 20/35

Kernel Driver : Exemple Linux #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("HzV"); static int hello_init(void) { printk(kern_alert "Hello, world\n"); // print présent en /var/log/messages return 0; } static void hello_exit(void) { printk(kern_alert "'CleanUp routine called\n"); } module_init(hello_init); module_exit(hello_exit); 21/35

Chargement du Kernel Driver : Linux Makefile bien configuré Exemple de chargement : 22/35 $ make make[1]: Entering directory `/usr/src/linux-2.6.32' CC [M] /home/ldd3/src/misc-modules/hello.o Building modules, stage 2. MODPOST CC /home/ldd3/src/misc-modules/hello.mod.o LD [M] /home/ldd3/src/misc-modules/hello.ko make[1]: Leaving directory `/usr/src/linux-2.6.32' $ sudo -s root# insmod./hello.ko Hello, world root# rmmod hello CleanUp routine called root#

Windows : chargement simple Utilisation de OSR Driver Loader (gratuit) Démo : 23/35

Windows : Chargement embarqué Utilisation de Service Control Manager (SCM) Créé les clés de registre SCM Driver non-pageable pas de soucis avec le «page out»! (donc accès à l'intégralité du driver pas de BSOD) Démo avec exemple de code et base de registre.,,, SC_HANDLE sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);,,, 24/35

Communication entre User et Kernel

I/O Request Packets Rootkit actuellement : UserLand + KernelLand Communication la plus utilisé : IOCTL sur Windows On a besoin de I/O Request Packets (IRPs) IRP = Buffer de donnée un utilisateur peu traiter un fichier (lire et écrire) 26/35

Structure de DRIVER_OBJECT nt!rtlpbreakwithstatusinstruction: nt!rtlpbreakwithstatusinstruction: 80527bdc 80527bdc cc cc int int 33 kd> kd> dt dt nt!_driver_object nt!_driver_object,,,, +0x00c +0x00c DriverStart DriverStart : : Ptr32 Ptr32 Void Void +0x010 +0x010 DriverSize DriverSize : : Uint4B Uint4B +0x014 +0x014 DriverSection DriverSection : : Ptr32 Ptr32 Void Void +0x018 +0x018 DriverExtension DriverExtension : : Ptr32 Ptr32 _DRIVER_EXTENSION _DRIVER_EXTENSION +0x01c +0x01c DriverName DriverName : : _UNICODE_STRING _UNICODE_STRING,,,, +0x034 +0x034 DriverUnload DriverUnload : : Ptr32 Ptr32 void void +0x038 +0x038 MajorFunction MajorFunction ::[28] [28] Ptr32 Ptr32 long long 27/35

Les Major Functions Traitent les IRPs Ont différentes valeurs : IRP_MJ_CLEANUP IRP_MJ_CLOSE IRP_MJ_CREATE IRP_MJ_READ (voir MSDN) Si on gère CREATE, READ et CLOSE par exemple en userland on devra faire CreateFile(), ReadFile() et CloseHandle() 28/35

User + Kernel mode (1) Pour communiquer nous devront ouvrir un file handle. Schéma : 29/35 Page 23 : Livre «Rootkits»

User + Kernel mode (2) Démonstration : 30/35

Direct Kernel Object Manipulation

DKOM : Spécificités Type d'attaque difficile à détecter Limitée seul les objets pris en mémoire peuvent être manipulés (Ex: donc pas possible de cacher des fichiers) Ce qu'on peut faire : Cacher des processus Cacher des Kernel drivers Cacher des ports Élever le privilège d'un thread, d'un processus Complexifier l'analyse forensic 32/35

Cacher un processus avec DKOM (1) Processus actif 33/35

Cacher un processus avec DKOM (2) Les phases : Parcourir les structures jusqu'à EPROCESS (en suivant les pointeurs) Trouver le PID qui nous intéresse dans EPROCESS 34/35 Ce qu'on veut faire disparaitre

Références 35/35 Rootkits Subverting the windows kernel (Greg Hoglund & James Butler) «SHADOW WALKER» Raising The Bar For Rootkit Detection (Sherri Sparks & James Butler) Eye Digital Security White Paper Remote Windows Kernel Exploitation Infond par t0ka7a Blog d'0verc0ck MSDN GoRing0 par Emilien Girault Blog de Ivanlef0u