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
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
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
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
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
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
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
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
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
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
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).
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.
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.
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)
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)
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,
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.
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
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.
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
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)
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
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
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
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
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
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
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), ...)
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
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,
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
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
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)
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
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
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
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
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
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
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
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
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
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
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.
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.)
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.
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.
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
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
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)
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)
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)
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.
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
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.
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.
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.
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.
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.
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
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
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.
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.
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)
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
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
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) :
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