• Aucun résultat trouvé

S´ecurit´e des Syst`emes d’Exploitation

N/A
N/A
Protected

Academic year: 2022

Partager "S´ecurit´e des Syst`emes d’Exploitation"

Copied!
69
0
0

Texte intégral

(1)

S´ecurit´e des Syst`emes d’Exploitation

Fr´ed´eric Gava

Master ISIDIS, Universit´e de Paris-Est Cr´eteil

Cours s´ecurit´e du M2 IDIDIS

(2)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(3)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(4)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(5)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(6)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(7)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(8)

Plan

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(9)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(10)

Enseignants et modalit´es

Fr´ed´eric Gava :frederic.gava@univ-paris-est.fr.

LACL.

LucDelpha :luc.delpha@provadys.com. Directeur Audit et Conseil SSI chez CISSP.

Th´eorique : 21h de cours et 9 h de TP. Pratique : un mix suivant les besoins

Examen final D´eroulement :

F. Gava : 1) et 2) G´en´eralit´es 3) Attaque Buffer/Integer-overflow

L. Alpha : 4-6) Attaque Concurrence/Noyau et Protection contre analyse et ing´enieurie inverse

(11)

G´en´eralit´es

Th´eorie : sˆuret´e

Sˆuret´e≡ bonne ex´ecution des programmes, donnent les bon r´esultats escompt´e sans ”planter”

S´ecurit´e ≡pas d’intrusion ext´erieur modifiant le comportement du syst`eme

Th´eorique : sˆuret´e≡s´ecurit´e. On consid`ere ”juste” qu’une modification est un mauvais comportement

Pratique/Th´eorie : sˆuret´e⊂ s´ecurit´e. Mod´eliser toutes les

”modifications de l’environement” est trop complexe (impossible mˆeme).

la plus part des probl`emes de s´ecurit´e sont inh´erents (due) `a des probl`emes de sˆuret´e (mauvaise ex´ecution des programmes entraˆınant des intrusions externes).

(12)

Objectifs de la s´ecurit´e

int´egrit´e : les donn´ees sont bien celles qu’on attend

confidentialit´e : l’acc`es `a chaque ressource est conforme aux autorisations

disponibilit´e : le syst`eme reste en fonctionnement, la s´ecurit´e n’empˆeche pas les utilisateurs l´egitimes de travailler

non r´epudiation: une transaction ne peut ˆetre ni´ee

confiance : construire des m´ecanismes dans lesquels on peut placer sa confiance (mais pas aveugl´ement) ; dans cette d’emarche, la r`egle de base est la m´efiance, voire la parano¨ıa.

Mais il faut pourtant faire confiance `a un moment donn´e⇒ authentification, cryptographie forte, audit, etc.

(13)

Attaques (1)

Afin de pouvoir s´ecuriser un syst`eme, il faut connaˆıtre les menaces :

exploitation des erreurs de configuration (syst`eme ouvert ou vuln´erable) et de programmation (exploits)

d´enis de service (mailbombing, flood, exploits, nuke), potentiellement distribu´es

squat (h´ebergement ill´egal, attaques par rebond, botnets) malware (virus, vers, troyens, espions, backdoors)

usurpation d’identit´ee (IP/ARP spoofing) erreurs humaines ⇒ ne pas ˆetre root

ing´enierie sociale : exploitation des erreurs humaines, de la na¨ıvet´e, gentillesse, ignorance, etc. Par exemple, le phishing : faux message de la banque qui redemande le mot de passe (via une fausse page web) ⇒ identifi´ee par certains antivirus.

Attaque de Twitter/Yahoo.

(14)

Attaques (2)

L’URL

http://www.site-officiel.com@www.site-attaquant.com dirige vers http//www.site-attaquant.comen envoyant www.site-officiel.comcomme login (qui peut ˆetre ignor´ee). Attention aussi `a l’orthographe d’une URL : http://WWW.SITE-OFFICIEL.COM6=

http://WWW.SITE-0FFICIEL.COM(0 au lieu de O) gˆeneurs (spam, popups) et canulars (haox, chain mail) sur le r´eseau, les attaques ont lieu en permanence (plusieurs par minutes), en grande partie de fa¸ccon automatique (vers, attaques de masse, botnets `a louer, etc.) et `a l’insu du propri´etaire de la machine attaquante (machine compromise ou infect´ee)

(15)

Politiques de s´ecurit´e (1)

Ensemble des droits d’acc`es aux ressources : globale `a une organisation

d´efinie par la hi´erarchie

mise en oeuvre par les informaticiens en ce qui concerne les ressources informatiques

prend en compte la formation (utilisation correcte des ressources, ing´enierie sociale)

le maillon le plus faible d´efinit la force de la chaˆıne de s´ecurit´e, c’est souvent l’utilisateur lambda

d´efense en profondeur (`a plusieurs niveaux)⇒ une barri`ere peut tomber, il en reste d’autres

simplicit´e ⇒efficacit´e (KISS : keep it simple, stupid) conception ouverte : la protection ne doit pas d’´ependre de l’ignorance de l’attaquant ⇒ audit (par des experts)

(16)

Politiques de s´ecurit´e (2)

m´ediation compl`ete : toute tentative d’acc`es `a une ressource doit ˆetre v´erifi´e

sˆuret´e des comportements par d´efaut (refus) : tout le monde a connu l’amer experience d’un Windows XP qui fraˆıchement install´e n’a pas le firewall activ´e⇒ `a peine lanc´e, il est victime d’un vers

s´eparations des privil`eges : l’acc`es `a une ressource doit d´ependre de plus d’une condition

acceptabilit´e psychologique et simplicit´e d’utilisation

n´ecessaire int´egration de la marche `a suivre en cas d’attaque r´eussie, de compromission des clefs, etc.

Il est inutile d’installer des syst`emes sophistiqu´es sur une machine dont l’acc´es physique n’est pas s´ecuris´e (vol, destruction, reboot,

(17)

S´ecurit´e par l’obscurit´e

Cacher des informations dans le but d’am´eliorer la s´ecurit´e. ⇒ pas de s´ecurit´e

Le code source des produits Microsoft, Apple, IBM et tutti quanti n’est (g´en´eralement) pas disponible, ce sont eux qui sont les plus vuln´erables.

Surtout Microsoft car beaucoup d’ordis potentiels `a toucher.

Exemples aussi chez Apple (p. ex. non sp´ecification des protocoles de s´ecurit´e employ´es)

ne supprime pas le risque

empˆeche l’audit par une tierce partie ne r´esiste pas aux attaques automatis´ees

r´esiste peu aux attaquants d´ecid´ees (ing´enierie inverse) Les protections anti-copie (DVD, etc.) sont secr`etes et n’ont jamais fonctionn´e.

(18)

La mise en lumi`ere ?

La simple mise en lumi`ere n’am´eliore pas la s´ecurit´ee non plus, il faut faire plus :

Les cryptographes utilisent la publication scientifique et des concours avec r´ecompense.

concours de hacking White-hacker

V´erifier formellement si possible Corriger toujours au plus vite

Respecter certaines r`egles et faire de la veille technologique

(19)

Algorithme de l’attaquant

1 prise d’information

2 rep´erage de faille

3 exploitation de la faille et si echec ⇒ 1

4 ´el´evation des privil`eges et si insuffisant⇒1

5 r´ealisation du but initial. Game Over. You lose.

(20)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(21)

S´ecurit´e de la machine

Acc`es physique possible = risques

vol de la machine, de ses disques (crypto des fichiers) installation de logiciels (malware)

vol ou consultation de donn´ees usurpation d’identit´e

modification de donn´ees

modification de configuration (mots de passe)

(22)

S´ecurit´e physique

attacher la machine

empˆecher son ouverture : Vol des ´el´ements (en particulier les disques durs) ou retirer la pile du BIOS pour supprimer le mot de passe.

empˆecher le red´emarrage

(23)

S´ecurit´e du BIOS

mettre un mot de passe

attention aux mots de passe par d´efaut supprimer le boot sur support amovible sur un serveur ⇒ mot de passe au boot

(24)

Chargeur de syst`eme (boot loader)

ne pas utiliser Linux n’empˆeche pas d’en installer un

permet la protection par mot de passe (On a supprim´e le boot sur support amovible dans le BIOS, on le r´etablit avec le boot loader en ajoutant un mot de passe)

attention au stockage des mots de passes : LILO les stocke en clair dans /etc/lilo.conf ⇒ prot´eger ce fichier. GRUB utilise MD5 c’est plus sˆur

(25)

Connexion

mot de passe obligatoire pas de mots trop simples

pas d’aide m´emoire sous le clavier (Des syst`emes v´erifient la complexit´e du mot de passe ou peuvent g´en´erer des mots de passe al´eatoires mais pronon¸cables).

ne pas proposer de nom d’utilisateur (c’est ¸ca de plus `a deviner. A ce niveau, Windows est d´efaillant)

ne pas afficher d’etoiles ⇒ longueur plus difficile `a connaˆıtre connexion s´ecuris´ee : Le Ctr-Alt-Suppr est captur´e par le syst`eme ⇒ on ne peut pas faire un faux ´ecran de connexion

(26)

Verrouillage

N´ecessit´e du mot de passe avant de reprendre le travail : en quittant son poste

apr`es un certain temps d’inactivit´e

doit ˆetre facile (Rabattre l’ecran du portable peut le verrouiller)

s´ecuriser comme la connexion

(27)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(28)

G´en´eralit´es

La s´ecurit´e n’est pas une fonctionnalit´e comme les autres :

`

a prendre en compte d`es le d´ebut n´ecessite formations et information

utilisation des m´ethodes formelles (preuves)

les langages / protocoles / programmes ne sont pas fait pour

¸ca (C, C++, Perl, PHP /la suite TCP-IP/d´emons Internet)

⇒ l’expertise technique est n´ecessaire (mais pas suffisante) prise en compte de l’aspect multi-utilisateur

la s´ecurit´e coˆute en temps, en argent, en efforts, en tests, etc.

s´eparation du contrˆole et des donn´ees (virus de documents, cross-site scripting (XSS), ...)

(29)

Programmes sensibles (1)

Les programmes critiques s’ex´ecutent sur une fronti`ere, entre deux espaces qui doivent rester s´epar´es :

zone hostile programme s´ecuris´e zone prot´eg´ee Internet

serveur

firewall, routeur client (navigateur)

machine qui l’ex´ecute r´eseau interne utilisateur utilisateur programme suid/sgid

syst`eme de droits

administrateur autres utilisateurs programme

appel syst`eme syst`eme de fichier gestionnaire de m´emoire

noyau

espace disponible espace disponible document inconnu afficheur, ´editeur utilisateur

programmes critiques (plus ou moins) cibles privil´egi´ees pour les attaques

il faut limiter les erreurs et les cons´equences d’erreurs

(30)

Pourquoi des erreurs ? (1)

peu de formations, peu de sources d’information (moins maintenant)

pas d’utilisation des m´ethodes formelles (preuves)

les langages ne sont pas fait pour ¸ca (surtout C/C++ et PHP) non prise en compte de l’aspect multi-utilisateur

paresse et facilit´e

les programmes sont s´ecuris´es `a post´eriori et non `a priori (d`es la conception)

mauvais programmeurs (ou moyens, ou non sp´ecialistes du langage)

la programmation et la s´ecurit´e sont (encore) deux m´etiers s´epar´es

les utilisateurs se soucient peu de s´ecurit´e (ou ne savent pas,

(31)

Pourquoi des erreurs ? (2)

la s´ecurit´e coˆute en temps, en argent, en efforts, en tests, etc.

beaucoup d’options de compilations ne sont pas utilis´ees.

Exemples :

avec GNAT : -gnato

avec GCC : -Wall -Wpointer-arith -Wstrict-prototypes -O2 les documentations ne sont pas lues : Pour Perl, perlsec et pour Java, Li Gong, Inside Java 2 Platform Security, Addison Wesley

les langages utilis´es sont mal connus :

la s´ecurit´e sous Java est quelque chose de tr`es difficile car les m´ecanisme de chargement de code (local, distant) sont tr`es complexes

en C/C++, les d´ebordements de tampons, les bogues de formats, les d´ebordements arithm´etiques, etc., sont m´econnus

(32)

Comptes utilisateurs

donner les privil`eges minimaux pour l’usage demand´e

interdire la connexion `a certains moments, de certains endroits interdire les salles serveurs ou l’installation de logiciel maisons en binaires dessus

d´esactiver les comptes inactifs

tous les comptes doivent ˆetre individuels

faire des audits r´eguliers des comptes (Un utilisateur ne devrait pas avoir de dossier ou fichiers accessibles en ´ecriture `a tous. Il faut r´eguli`erement chercher les malwares sur son compte. Il faut contrˆoler les binaires qu’il installe.)⇒ la politique de s´ecurit´e

maintenir des log des activit´es

interdire les mots de passe faibles ou par d´efaut

(33)

Compte administrateur (root)

pareil mais beaucoup plus critique :

inaccessible `a tous (sauf aux autres root)

utilis´e au minimum (Avec su et sudo, mˆeme pas besoin de se connecter)

log et contrˆole tr`es pr´ecis des connexions

cr´eer des comptes ”mini-root” : un compte staff poss´edant /usr/local et quelques droits d’ex´ecution par sudo comme ldconfig. Mais attention `a quoi on donne acc`es (cat est tr`es dangereux).

attention au PATH ⇒ pas de ., ne contient que des r´epertoires non modifiables

le comportement de root est aussi critique⇒ prudence, ne pas installer n’importe quoi, etc. ne pas se balader sur le web, pas tchater, QUE DE L’ADMIN

attention `a umask (buildin)

(34)

Protection des mots de passe

id´ealement, on ne les stocke pas. Mot de passe dans /etc/shadow (double protection : fichier prot´eg´e, mots de passe hach´es)

sinon, les stocker chiffr´es et prot´eg´es par les droits d’acc`es (ssh ne se lance pas si les droits sont incorrects)

ne pas autoriser les mots de passe trop simples

ne jamais faire transiter en clair un mot de passe sur le r´eseau (voir capture mot de passe POP sur la feuille)

ne jamais ´ecrire ni divulguer son mot de passe

garder une clef le moins longtemps possible en m´emoire

(35)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(36)

Outils de protection

antivirus : prot`ege des virus, vers, etc.

pare-feux : contrˆole les connexions r´eseaux

anti-espion : cherche les spywares, backdoors, rootkits, etc. ⇒ comme antivirus

contrˆole d’int´egrit´e : v´erifie si le syst`eme a ´et´e alt´er´e d´etecteur d’intrusions : cherche la pr´esence d’un intrus

(37)

Antivirus (1)

Etude britannique de 2004 (sur l’ann´eee 2003) :

99% des grandes entreprises et 93% des PME utilisent un antivirus

83% des entreprises ont ´et´e attaqu´ees au moins une fois 68% on ´et´e victimes d’un virus

le nombre d’attaques r´eussies a augment´e de 25%

coˆut pour l’ann´ee : 290 millions d’euros

Les antivirus ne suffisent pas. Ils n’en sont pas moins n´ecessaires ! R´esultats th´eoriques :

la d´etection virale en g´en´eral est ind´ecidable

les instances restreintes int´eressantes sont au minimum NP-complet ou p-space

la d´etection des virus polymorphes est NP-complet

⇒ toute protection peut ˆetre contourn´ee

(38)

Antivirus (2)

En pratique, c’est de plus en plus difficile mˆeme si, ¸ca pourrait ˆetre mieux :

les ´editeurs d’antivirus ”s’opposent” `a la recherche dans le domaine

les produits privil´egient la rapidit´e d’ex´ecution `a la sˆuret´e l’ing´enierie sociale permet de contourner les outils l’utilisateur final ne sait pas r´eagir `a une alerte Bon antivirus :

d´etecte, identifie et ´eradique les virus connus

g`ere les virus inconnus qui utilisent des techniques connues ne g´en`ere pas (ou peu) de fausses alertes et ne n´ecessite pas d’intervention de l’utilisateur

s’ex´ecute sans ralentir le syst`eme

s’installe et se d´esinstalle facilement et facile `a configurer

(39)

Antivirus (3)

L’´etat du march´e est assez d´eprimant :

les meilleurs ne sont pas les plus connus (Avast/Alwil Software, AVG/Grisoft, FSecure, Kaspersky/KAV, NOD32) Unix/Linux tr`es en retard sur Windows (mais moins de virus).

Existe Anti-virus pour linux pour prot´eger des ordis windows certains produits sont tr`es mauvais

d´elais entre l’apparition du virus et la mise-`a-jour assez (malgr´e ce que dit le marketing) : 24h `a 48h minimum, parfois jamais

incoh´erence de l’identification et de l’appellation entre les

´editeurs

mauvaises configuration par d´efaut

vitesse d’ex´ecution au d´etriment de la sˆuret´e d´esinfection assez mauvaise

et surtout : distorsion ´enorme entre le marketing et la r´ealit´e

(40)

Antivirus (4)

Analyse de forme (statique) : Analyse hors de tout contexte d’ex´ecution par la recherche d’une signature (une suite de bits) qui doit ˆetre caract´eristique (pas de confusion) et suffisamment longue (pas de fausse alerte) :

facilement contournable (virus polymorphes/metamorphes ou chiffr´es)

peu de fausses alertes

d´etection une infection d´ej`a effective

ne g`ere que le connu et difficult´es de mise-`a-jour de la base de signatures

taille de la base de signatures ⇒ non exhaustive (quelques milliers en pratique, les vieux virus sont ignor´es)

recherche partielle (certaines parties de certains fichiers) pour

(41)

Antivirus (5)

Analyse spectrale : recherche d’instructions caract´eristiques des virus mais rares dans les programmes ”normaux”

m´ethodes statistiques pour d´efinir la normalit´e fausses alertes

peut d´etecter de nouveaux virus

contournable par mim´etisme (virus cod´e ”comme” un programme normal)

Analyse heuristique : strat´egies de d´etection d’action potentiellement virales :

difficile et peu fiable fausses alertes

contournable par mim´etisme

(42)

Analyse de comportement (dynamique)

Surveillance des actions potentiellement dangereuses (exemple : modification du MBR).

d´etection possible de virus inconnus fausses alertes

consommation des ressources de la machine

´emulation de code⇒ analyse statique

(43)

Contrˆole d’int´egrit´e (1)

V´erifier que le syst`eme est conforme `a ce qu’il devrait.

Essentiellement une technique : prise d’empreintes et comparaisons :

on prend une empreinte de chaque fichier (syst`eme, pas forcement les images, quoique...) du syst`eme sain

on met `a jour la base d’empreintes `a chaque modification l´egitime

une modification ill´egitime est d´etectable par changement de l’empreinte

Difficult´es :

falsification des empreintes ⇒ utiliser un hachage

cryptographique. Les antivirus utilisent souvent CRC32 ).

(facile `a contourner). On conseille maintenant d’utiliser deux empreintes simultan´ement (ex : MD5+SHA, ou

SHA+HAVAL).

distinguer une modification l´egitime d’une autre ⇒sous contrˆole de l’administrateur

(44)

Contrˆole d’int´egrit´e (2)

s´ecurit´e de la base d’empreintes : certains virus modifient la base d’empreinte des antivirus les plus r´epandus pour cacher leur infection. Un intrus ayant les droits root a tout pouvoir

⇒ mˆeme ces droits ne doivent pas suffire `a la modification⇒ support en ´ecriture seule ⇒difficult´es de la mise-`a-jour. Les syst`emes courants s´ecurisent par cryptographie et mots de passe (empreintes sign´ees ou chiffr´ees).

le contrˆole sur un syst`eme compromis n’est pas fiable : Les librairies peuvent avoir ´et´e chang´ees ⇒ les outils d’analyse doivent ˆetre compil´es statiquement. Un rootkit noyaux peut faire modifier l’appel syst`eme d’ouverture de fichier et pr´esenter le fichier d’origine au lieu du fichier modifi´e ⇒les outils d’analyse doivent s’ex´ecuter sur un autre syst`eme.

Impossible lorsqu’on veut garder le syst`eme en marche.

(45)

Contrˆole d’int´egrit´e (3)

Comment savoir que le syst`eme est sain lorsqu’on prend/met `a jour une empreinte ? M´ethodologie : utiliser une machine de r´ef´erence, isol´ee et coup´ee du r´eseau sauf lors des mises `a jour :

installation prises d’empreintes pour mettre `a jour :

connexion (la plus br`eve) et t´el´echargement (s´ecuris´e) des mises-`a-jour et d´econnexion

contrˆole d’int´egrit´e minutieux (c’est la machine de r´ef´erence) contrˆole des mises-`a-jour (signatures) et prise des nouvelles empreintes

distribution des mises-`a-jour

contrˆole d’int´egrit´e des machines `a mettre `a jour mise-`a-jour des autres machines

mise-`a-jour des bases d’empreintes `a partir de celles prises sur la machine d’installation

c’est assez peu praticable, voire impossible (OS ne le permettant pas, syst`emes h´et´erog`enes, etc.)

(46)

D´etection d’intrusions

Tr`es proche des antivirus :

mˆeme techniques de d´etection (mˆemes limites) contrˆole d’int´egrit´e (mˆemes difficult´es)

limites fortes en terme de ressources syst`eme : l’analyse du r´eseau n´ecessite de surveiller simultan´ement des milliers de connexions sur des centaines de protocoles diff´erents.

(47)

Reprendre le contrˆole (1)

Observer avant d’agir :

peut t’on voir l’attaquant en train d’agir (processus, trafic r´eseau, ´ecoute r´eseau, etc.)

mais il est peut-etre d´ej`a en train de faire des d´egats, de commettre des infractions

il est peut-ˆetre tr`es furtif (contrˆole profond) le syst`eme est indigne de confiance

Reprise de contrˆole :

il faut couper l’alimentation brutalement : un arrˆet ”propre”

peut ne pas d´esinstaller les fichiers de l’attaquant.

il faut d´econnecter le r´eseau

il faut red´emarrer sur un syst`eme sain : nombreuses

distribution Linux utilisables depuis un CD (Live-CD). On peut aussi d´eplacer le disque du syst`eme compromis sur une autre machine.

(48)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(49)

Prise de contrˆole

Une attaque r´eussie est g´en´eralement suivie d’une prise de contrˆole :

pour propager l’attaque (vers, virus) pour utiliser le syst`eme (squat, botnets) pour espionner les utilisateurs (spywares) pour revenir plus tard (backdoors)

S’installe ses outils et doit rester discret ⇒rootkit : ensemble d’outils pour garder le contrˆole en toute discr´etion

(50)

Rootkit (1)

on en trouve des tout fait sur internet...

modification des binaires sensibles. Les programmes de dissimulation cachent les ressources employ´ees par le pirate aux yeux des autres utilisateurs :

ls, find, locate, xargs ou du ne r´ev´eleront pas ses fichiers ps, top ou pidof dissimuleront ses processus

netstat n’affichera pas les connexions ind´esir´ees killall pr´eservera ses processus

ifconfig ne montrera pas que l’interface est en mode promiscuous

tcpd et syslogd ne loguent pas ses actions

Les backdoors permettent au pirate de changer d’identit´e : chfn, chsh, passwd, login, su, etc., ouvrent un shell root lorsque le mot de passe du root-kit est entr´e (comme nom d’utilisateur ou comme mot de passe)

(51)

Rootkit (2)

Les d´emons offrent au pirate un moyen simple d’acc`es `a distance :

inetd installe un shell root `a l’´ecoute sur un port. Apr`es la connexion, le mot de passe du root-kit doit ˆetre saisi en premi`ere ligne

rshd ex´ecute la commande demand´ee en tant que root si le username employ´e est le mot de passe du root-kit

sshd fonctionne comme login mais donne un acc`es distant modification des librairies dynamiques : mˆeme but que la modification des binaires en plus facile : on ne change que quelques appels syst`emes critiques (module≡ load dynamique de module dans le noyau)

(52)

Rootkit (3)

modification du noyau ⇒un module noyau se charge de tout ce qui a ´et´e vu pr´ec´edemment : plus discret, plus de pouvoirs : rendre invisible des fichiers, comme ceux produit par un sniffer filtrer le contenu d’un fichier (supprimer son IP des logs, les num´eros de ses processus, etc.)

sortir de prison (chroot)

tout ce qui ´etait possible l’est encore (plus facilement) on en est sˆur maintenant : un syst`eme compromis ne peut contrˆoler son int´egrit´e

Exemple : Installation d’une backdoor via un lkm (Linux 2.2 et 2.4) : /etc/passwd devient une commande qui donne un shell root (voir feuille)

(53)

Rootkit (4)

Protection :

interdire les modules (recompiler le noyau)

comparer l’image m´emoire du noyau (/dev/kmem) avec ce qu’il d´eclare publiquement (dans /proc)

pr´e-charger un module interdisant la modification des appels syst`eme (on trouve sur le net)

tests d’int´egrit´e de la m´emoire noyau

Toutes contournables puisqu’on a compromis le noyau ⇒analyse `a partir d’une boot sain ou de la machine de r´ef´erence.

(54)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(55)

H´elas... (1)

Statistiquement, elle aura lieu ⇒ mieux vaut partir du principe que c’est certain. Les signes d’une compromission :

activit´e inhabituelle dans les logs de connexions apparition de binaires suid/sgid

contrˆole d’int´egrit´e n´egatif

binaires (ex´ecutables ou librairies) modifi´es

trafic r´eseau anormal ou inhabituel⇒ pr´esence de processus surveillant le r´eseau

interface r´eseau en mode promiscuous nouvelles entr´ees cron ou at

nouveaux services ou services modifi´es

/etc/passwd ou /etc/shadow modifi´es : Rarement contrˆol´e pour leur int´egrit´e (les utilisateurs peuvent les modifier via chsh ou passwd) il peuvent ˆetre v´erifi´es manuellement : comptes sans mots de passe, comptes avec mˆeme uid ou uid 0 (root), etc.

(56)

H´elas... (2)

fichiers de configuration modifi´es

fichiers cach´es (noms possibles ”...” ”..ESPACE” ”.ˆG”

donn´ees/binaires dans des endroits anormaux fichiers non device dans /dev

... (Dans le doute, faire comme si c’etait certain)

Si une machine du r´eseau est compromise, il faut v´erifier toutes les autres. Il peut ˆetre prudent de changer tous les mots de passe (utilisateurs ralent).

Attention aux sauvegardes : tant que l’attaque n’a pas ´et´e compl`etement d´emont´ee, les sauvegardes ne sont pas plus sˆures que le reste du syst`eme.

(57)

Avant de commencer

Consulter votre politique de s´ecurit´e Quand on n’en a pas :

consulter la hi´erarchie solliciter un conseil juridique

contacter les autorit´es (d´eposer une plainte)

informer : utilisateurs, collaborateurs, (clients ?), prestataires, etc. tous ceux qui ont affaire au syst`eme compromis

documenter pr´ecis´ement chaque ´etape du travail : pour la prochaine fois, pour pouvoir revenir en arri`ere, pour v´erifier des oublis, pour corriger des erreurs, pour ´etablir des preuves, etc.

(58)

Reprendre le contrˆole (1)

Observer avant d’agir :

peut t’on voir l’attaquant en train d’agir (processus, trafic r´eseau, ´ecoute r´eseau, etc.)

mais il est peut-etre d´ej`a en train de faire des d´egats, de commettre des infractions

il est peut-ˆetre tr`es furtif (contrˆole profond) le syst`eme est indigne de confiance

Reprise de contrˆole :

il faut couper l’alimentation brutalement : un arrˆet ”propre”

peut ne pas d´esinstaller les fichiers de l’attaquant.

il faut d´econnecter le r´eseau

il faut red´emarrer sur un syst`eme sain : nombreuses

distribution Linux utilisables depuis un CD (Live-CD). On peut aussi d´eplacer le disque du syst`eme compromis sur une autre machine.

(59)

Reprendre le contrˆole (2)

faire une image miroir des disques : dd. Copier les fichiers ne suffit pas : donn´ees cach´ees (ex : StegFS).

garder cette image intacte (`a dupliquer si n´ecessaire) comme preuve l´egale

ne pas alt´erer les sauvegardes tant que la date de la compromission est inconnue : elle peut ne jamais l’ˆetre, il faudra restaurer avec pr´ecautions. En g´en´eral, elle est connus car on peut constater la date de modification des fichiers compromis (le jour ou ils ont ´et´e sauvegard´es). Il est moins coˆuteux de faire du contrˆole d’int´egrit´e que de faire de telles sauvegardes.

(60)

Analyse de l’intrusion (1)

Buts :

trouver l’origine de la compromission (faille, erreur humaine, etc.)

dater la compromission

´etablir des preuves

connaˆıtre les informations acquises par l’attaquant faire le bilan des actions de l’attaquant

Actions `a entreprendre (non exhaustif) :

examiner toute modification de binaires (en particulier les suid/sgid) ou de configuration. Rappel : on a d´emarr´e un autre syst`eme, sain. Le syst`eme compromis est indigne de confiance.

examiner manuellement les fichiers dont on n’a pas de copie de r´ef´erence. De mˆeme qu’on documente les ´etapes de l’analyse apr`es intrusion, il faut documenter les ´etapes d’installation et de mise `a jour. Tr`es utile en cas de panne ou

(61)

Analyse de l’intrusion (2)

examiner les donn´ees modifi´ees r´ecemment : pages web, fichiers ftp, fichiers des utilisateurs, etc.

rechercher des outils laiss´es par l’intrus : sniffers, chevaux de Troie, portes d´erob´ees, exploits, etc. Utiliser un maximum d’outils d’analyse de comportements ou de recherche de tels logiciels (anti-virus, anti-spywares, d´etecteurs de rootkits, etc.

ils ont tous au moins une version d’´evaluation !)

examen des logs : attention, ils ont pu ˆetre alt´er´es : chercher aussi les trous potentiels. Chercher tout ce qui semble sortir de l’ordinaire. Comparer aux logs d’une machine saine, utiliser du filtrage Bayesien (statistique), des outils d’analyse de logs.

examiner minutieusement les logs de sniffers d´ecouverts : ils indiquent les machines en danger et les donn´ees r´ev´el´ees v´erifier en d´etail les autres syst`emes en relation avec le syst`eme compromis

v´erifier toutes les autres machines

(62)

Analyse de l’intrusion (3)

contrˆoler toute action potentiellement tent´ee par l’attaquant rechercher dans les annonces du net de vuln´erabilit´es des signes qu’on a pu constater : une attaque automatis´ee fera d’autres victimes, avec des symptˆomes similaires

Rechercher une ´ecoute r´eseau. On doit le faire (vraiment) avant de reprendre le contrˆole mais sans certitude ⇒ processus suspect, interface en mode promiscuous, fichier grossissant constamment et rapidement (log du sniffer). Apr`es red´emarrage sain, on peut rechercher le fichier de log du sniffer (fichier contenant des adresses IP connues, mais c’est parfois chiffr´e), la pr´esence d’un binaire connu comme tcpdump (attention il a ´et´e sˆurement renomm´e), ing´enierie inverse sur les binaires modifi´es), le mot ”promiscuous” dans les logs syst`eme, etc.

(63)

Assainissement (1)

r´einstaller un syst`eme sain : Il faut consid´erer que le syst`eme compromis est irr´ecup´erable

le configurer au plus sˆur

installer toutes les mises `a jour de s´ecurit´e

utiliser les sauvegardes avec pr´ecautions : Si la date de la compromission est connue (avec certitude), on peut utiliser ce qui est ant´erieur. Sinon, et pour le reste, il ne faudrait

restaurer que des donn´ees qu’on v´erifie minutieusement.

changer tous les mots de passe

Il faut am´eliorer la s´ecurit´e du syst`eme et du r´eseau : demande d’un audit g´en´eral

mettre `a jour (ou changer) et utiliser les outils de s´ecurit´e : en changeant d’outil, attention `a ne pas ouvrir des portes. Il vaut parfois mieux doubler que remplacer.

(64)

Assainissement (2)

ajouter des outils de s´ecurit´e (en particulier ceux qui auraient pu pr´evenir ou d´etecter l’attaque)

augmenter le d´etail des logs

v´erifier la configuration des pare-feux et autre outils de s´ecurit´e du r´eseau

documenter les le¸cons tir´ees de l’attaque, de son analyse et des mesures qui ont dˆu ˆetre prises

calculer le coˆut de l’incident

mettre `a jour la politique de s´ecurit´e si elle s’est av´er´ee d´efaillante (ou inexistante)

rester vigilant ”un certains temps” : l’attaquant va peut-ˆetre revenir (et c’est certain si c’est un ver/virus)

(65)

D´eroulement du cours

1 Introduction

2 S´ecurit´e de la machine

3 Points d’entr´ees

4 Outils de Protection

5 Prise de contrˆole

6 Apr`es la compromission

7 Pour le Plaisir

(66)

Conditions de concurrence (1)

Lorsque plusieurs programmes s’ex´ecutant en mˆeme temps partagent une ressource, typiquement le syst`eme de fichier.

Attaque sur les scripts suid :

$ id

uid=1000(gava) gid=1000(gava) groups=4(adm)

$ head -n 1 /bin/suidscript

#!/bin/sh

$ cd /tmp; echo "id" > titi.sh; ln -s /bin/suidscript toto

$ (nice -n +19 ./toto &) ; ln -sf titi.sh toto uid=0(root) gid=0(root) groups=0(root)

Pourquoi :

le syst`eme suit le lien toto et trouve un programme suid⇒ devient root

le syst`eme invoque l’interpr´eteur donn´e dans la premi`ere ligne avec le source en argument ⇒ /bin/sh toto

pendant que /bin/sh se charge, ln remplace toto (le nice -n +19 lui laisse du temps)

/bin/sh lit le contenu de toto et donc de titi.sh et l’ex´ecute⇒ id de root

(67)

Conditions de concurrence (2)

´evitez d’utiliser une suite d’appels `a chown, chgrp et chmod qui prennent un nom de fichier en param`etre : le fichier peut changer entre deux appels. Utilisez plutˆot fchown, fstat et fchmod qui prennent un descripteur de fichier (ne peut pas changer)

un appel `a ”access” suivi de ”open” est fautif car les droits peuvent changer entre les deux appels. A la place, positionner les droits avec umask, setuid et setgid et lancer directement open en testant la valeur de retour.

tout fichier cr´e´e doit avoir les droits corrects d`es le d´ebut ⇒ utiliser umask suivi de open avec le mode

O CREAT—O EXCL, puis v´erifier l’absence d’erreur

attention `a la cr´eation de fichiers temporaires (d´elai entre la cr´eation du nom et celle du fichier) :

(68)

Conditions de concurrence (3)

utilisez mkstemp au lieu de tempfile utilisez umask au pr´ealable

une fois le fichier ferm´e, ne l’ouvrez plus jamais et ne r´eutilisez pas son nom

effacez imm´ediatement le fichier avec unlink ⇒ il disparaˆıt du syst`eme de fichier mais reste utilisable jusqu’`a sa fermeture (et le fichier sera effac´e mˆeme si le programme plante) plutˆot que d’utiliser /tmp, cr´eez un sous-r´epertoire priv´e (⇒

umask avant cr´eation)

attention `a NFS (v2) qui ne supporte pas O EXCL.

ne faˆıtes pas confiance aux variables d’environnement TMP et TMPDIR si l’utilisateur peut les positionner

(69)

A la semaine prochaine

Références

Documents relatifs

– Il ne peut y avoir plus d’un processus dans sa section critique en mˆeme temps – Un processus en dehors de sa section critique ne peut bloquer un autre

Jacques Gangloff (ENSPS) Syst `emes temps r ´eel et syst `emes embarqu ´es Ann ´ee scolaire 2007-2008 1 /

Linux n’est pas temps r ´eel Architecture de

– Obligation de publier les sources (pas de module binaire dans le noyau) – Pas adapt´e aux syst`emes `a taille m´emoire tr`es

3 Programmation d’un syst `eme embarqu ´e La compilation crois

Par contre pour les faibles valeurs de K ( K ≤ 10 −2 ) le champ thermique tend ` a pr´ esenter une grande similitude avec le cas d’une temp´ erature de paroi du solide variant

Dans les th´eories de champs ` a bosses, telles que les th´eories ´electro- magn´etiques de Mie et de Born-Infeld [3], ou la version non dualiste de la Relativit´e G´en´erale [4],

L’´epilogue permet de pr´eparer le retour ` a la fonction appelante en restaurant les registres sauv´es, en d´esallouant les variables locales, en restaurant le pointeur de base de