Archives de catégorie : A retravailler

Cloud (pannes)

Facile mais instructif : quelques pannes notables sur les grands fournisseurs de Cloud (hors failles de sécurité)

Amazon Web Services

  • mars 2017 : une panne sur S3 (Virginie) avec plusieurs services affectés 1 . La cause est officiellement… une erreur de frappe2 !
  • mars 2018 : problèmes réseau (Virgine) 3 , ayant pour origine une panne électrique, avec de forts impacts 4 .

Microsoft Azure

  • xx

Microsoft Office

  • xx

IBM

  • nn

Google Cloud Plateform

  • 17 juillet 2018 : panne sur le StackDriver (données de performance et diagnostic), AppEngine et Cloud Networking touchés5, perturbant notamment Snapchat, Discord, Spotify ou même Pokemon GO 😉

Source

Articles intéressants

Ross Anderson

Vie privée, traces, anonymat

Défense multi-niveaux (en profondeur)

Enfants

Forensic, OSINT

Jeux

A classer

Prospective

Règles simples

Attaques

Statistiques

Juridique

Cryptographie

Bancaire

WordPress (scanners)

Réseaux

Cyberguerre et influence

Articles non classés

AWS

Failles

DNS

Chiffrement/Vie privée/Clés/SSH/Crypto

Secure Partitions

UNIX / Linux

Windows

Gestion des licences windows

Sécurité des mobiles

Coût et activité de la cybercriminalité

Simulations diverses

Outils à connaître

Information

MISC • Hakin9 • Phrack • Réseaux & Télécoms • Hackademy Magazine • SANS Institute • Securityfocus

Lexique (par Sophos)

Autres (pas forcément sécurité)

S3

S3 (Amazon Simple Storage Service) est un service de stockage d’objets en ligne d’Amazon Web Services (AWS). Bien que très pratique, il peut être très mal utilisé. Résultat : on assiste en ce moment à un florilège de divulgation de données via des S3 fonctionnant très bien mais mal paramétrés.

Il existe des variantes avec d’autres produits mal configurés, comme le service ElasticSearch, qui peut se révéler tout aussi fatal aux informaticiens peu consciencieux (ou débordés), ou la base MongoDB mal sécurisée par défaut.

frame

Responsabilité partagée

La presse se fait souvent l’écho de fuite d’informations liées à S3, allant parfois jusqu’à annoncer une faille sur S3. Or il s’agit d’un service d’infrastructure (IaaS), dont la sécurité est partagée entre le fournisseur d’accès et le client utilisateur du service : le fournisseur est responsable de la sécurité du cloud, le client est responsable de la sécurité dans le cloud.

Le fournisseur est responsable du bon fonctionnement du service, rien de moins mais rien de plus : il doit juste répondre au contrat de service. Par exemple, s’il y a un mécanisme d’autorisation d’accès, il doit s’assurer qu’il est efficace et qu’il fonctionne comme attendu, sans erreur, sans interruption, etc.

De l’autre côté, le client paramètre ce mécanisme d’autorisation d’accès comme il le souhaite. S’il laisse son compartiment S3 ouvert à tout vent (par erreur, par mégarde, par bêtise), c’est de sa faute.

Les failles S3, à qui la faute ?

Et bien jusqu’à présent, toutes les failles sur S3 sont dues à un mauvais paramétrage par le client. Pourtant AWS indique en grand le risque encouru, lors du paramétrage.

Tant et si bien qu’à partir de février 2018, AWS ajoute gratuitement le contrôle sur les droits d’accès sur S31 dans son service Trusted Advisor (ce contrôle était jusqu’alors réservé aux clients ayant un niveau de support payant). Début 20182, on estimait que 7% des buckets S3 étaient accessibles en lecture sans restriction (ce qui est parfois voulu, pour l’hébergement d’éléments web statiques), et que 2% étaient également accessible en écriture sans contrôle (là je suis moins sûr que ça soit normal).

frame

Aujourd’hui ?

Il faut vraiment être neuneu pour laisser un bucket ouvert : AWS a rajouté plein d’outils, de procédures, d’informations affichées pour qu’on ne se prenne plus les pieds dans le tapis.

Quelques exemples

  • Mars 2018
    • 1,3 millions de données client de Walmart (bijouterie) exposés3.
    • Keeper, un gestionnaire de mots de passe, laisse traîner des fichiers en lecture-écriture4.
  • Avril 2018
    • 1,2 To de données correspondant à 48 millions de personnes, non protégées par LocalBox, une société de profilage publicitaire au profil douteux5.
  • Mai 2018
    • Divulgation de données de 15 ou 20 000 joueurs de cricket indiens67.
    • Divulgation de données du service social de Los Angeles8.
    • Mots de passe de l’application TeenSafe en clair9.
    • Une société d’assurance (AgentRun) laisse des milliers de données de souscripteurs10 en accès libre
    • Honda laisse à disposition les informations de 50 000 véhicules et de leur propriétaires11.
  • Juillet 2018
    • Des milliers de données électorales américaines ont été exposées publiquement par une petite société (Robocall) qui les commercialisait12.
    • Une société israélienne expose des données de 14 millions de clients13 de l’opérateur téléphonique Verizon.
  • Août 2018
    • GoDaddy, un célèbre hébergeur web, laisse des informations d’infrastructures de 24 000 machines sur un bucket S3 mal configuré14.
  • Septembre 2018
    • Une société disons de surveillance (= qui produit un logiciel d’espionnage, surfant sur la vague de peur pour alimenter celle de l’insécurité) a laissé une quantité astronomique15 de données récoltées auprès des utilisateurs surveillés accessibles sur S316.
  • Avril 2019
    • Intéressant : 146 Go de données d’utilisateurs Facebook laissés en accès ouvert par des éditeurs tiers17.
  • Juin 2019
    • 1 Tb de données de sauvegardes (comprenant des clés privées) exposées par Attunity (qui a des clients de l’envergure de Netflix ou Ford).

La faute d’Amazon ?

Il n’y a pas qu’Amazon qui soit touché puisque la plupart des fournisseurs de services nuagiques proposent des services permettant le partage de façon publique ; on a vu que Google via Groups recelait de très nombreux documents18 qui n’ont pas à être exposés au grand public. Or les personnes ayant le rôle d’administrateur Google Groups n’ont pas toujours de hauts compétences en administration19, ce qui est normal vu le public visé par le service de Google.

Répétons : le problème ne vient pas du fournisseur de services, ni du service, mais de son utilisation.

Faut-il utiliser S3 ?

A mon humble avis, il faut l’éviter autant que faire se peut. Certes les usages potentiels sont nombreux, certains sont justifiés, d’autres non.

Hébergement de site web statique

AWS met en avant cet usage qui est parfaitement stupide. En effet, avec AWS, comme rien n’est gratuit, on paye à la bande passante utilisée mais aussi en fonction du nombre d’accès. Et ça va très vite…

Le seul usage raisonnable que je vois est de stocker des objets de livraison, qui doivent être accessibles facilement et dont on ne se sert qu’épisodiquement (pour construire une machine virtuelle, déployer une application, etc.).

Alors pourquoi AWS met en avant des usages du type site web statique ou fichiers statiques ? Simple : vous imaginez AWS vous dire d’économiser votre budget et de ne rien dépenser sur leurs infrastructures ?

Innovons dans les attaques

Parfois, il est normal et voulu que des fichiers soient stockés sur un bucket public : on peut même faire un site web statique rien qu’avec S3. Dans ce cas, les fichiers sont disponibles publiquement et c’est le comportement désiré.

Alors les attaquants se sont tournés vers ces fichiers publics pour les compromettre et tenter d’injecter du code ou n’importe quelle cochonnerie, par exemple sur Magecart20. Dans ce cas là, il s’agit d’un problème de gestion des droits, mais de façon plus fine, dans le contrôle d’accès de S3.

Voir aussi

Articles externes

Python

Les bases

Multithreading

A ne pas confondre avec multiprocessing. Avec des threads, on lance des programmes en //, et le système d’exploitation ou le processus parent gère comme il veut. Le multiprocessing consiste à forcer l’utilisation des différents cœurs d’un processeur.

import random 
import sys from threading
import Thread
import time

class Attente(Thread):
"""Thread chargé simplement d'afficher une lettre dans la console."""
def __init__(self, tps):
Thread.__init__(self)
self.attente = tps
def run(self):
"""Code à exécuter pendant l'exécution du thread."""
time.sleep(self.attente)
sys.stdout.write("Fin thread d'attente de {}\n".format(self.attente))
sys.stdout.flush()

# Création des threads
thread_1 = Attente(4)
thread_2 = Attente(7)
thread_3 = Attente(9)

# Lancement des threads
thread_1.start()
thread_2.start()
thread_3.start()

# Attend que les threads se terminent
thread_1.join()
thread_2.join()
thread_3.join()
  • https://www.tutorialspoint.com/python3/python_multithreading.htm  

Les décorateurs

Les décorateurs font de la « métaprogrammation », à savoir qu’ils ajoutent du code autour d’une fonction. Par l’exemple :

# Exemple avec décorateur
@decorateur
def fonction(…):
    …

Son équivalent est :

# Exemple équivalent, sans décorateur
def fonction(…):
    …
fonction = decorateur(fonction)

Ça n’a l’air de rien, mais ça permet de faire plein de choses très évoluées.

yield, générateurs et coroutines

Interface graphique (Qt)

Un des avantages de Python est d’être multi plate-forme (pas comme Java). Un des gros manque de Python est qu’il n’a pas d’interface graphique native, ou que ce qui est proposé en standard (Tkinter) n’est pas très développé. Certes cela permet de rester multi plate-formes, mais au prix d’un interface graphique assez peu évoluée.

Après quelques recherches, j’ai trouvé un outil lui aussi multi plate-formes permettant de réaliser de zolies interfaces graphiques avec Python : Qt.

Qt n’est pas toujours simple, ni gratuit, mais peut toutefois être utilisé avec certaines licences libres comme GPL v2 ou GPL v3, ce qui est chouette pour un développeur du dimanche comme moi.

Concepts essentiels

Tout d’abord, pour développer en Python + Qt, il faut installer la version open source de Qt, en faisant bien attention aux compatibilités de versions. Il faut également faire la liaison entre Python et Qt grâce au module PyQt ou à PySide2 (cette dernière étant maintenue par Qt).

Layout, Widget et événements

En Python 3 et Qt 5, la plupart des objets dont on a besoin seront dans PySide2.QtWidgets. Leur nom est assez explicite, genre QApplication, QMainWindow, QDialog, QGridLayout, QLabel, QLineEdit, QPushButton, QTable, QGroupBox, QDateEdit, etc.

La notion de layout est celle communément connue par les développeurs, et celles des événements également. Seule subtilité : les événements sont des signaux (SIGNAL) et les récepteurs ou gestionnaires d’événements sont de type SLOT. Chacun a son vocabulaire, mais comme les fonctions de Qt sont nommées d’après cela, autant le savoir.

Utilisation de l’outil de conception

Il s’appelle QT Designer, mais sous Windows il faut chercher… designer !

Ensuite, le fichier issu de cet outil est en XML, suffixé par .ui. Pour le convertir en Python, il faut utiliser un transformateur, variant selon le module python utilisé :

  • PyQt ==> pyuic5.exe fichier.ui -o fichier.py
  • PySide2 ==> pyside2-uic mainwindow.ui > ui_mainwindow.py

En ce qui concerne les ressources, genre icônes, la manipulation est plus complexe. D’abord il faut un fichier .qrc dans lequel on ajoute les emplacements des ressources, puis on génère avec un autre outil un fichier Python.

  • PyQt ==> pyrcc5.exe dossier/ressources.qrc -o ressources_rc.py -py3
  • PySide2 ==> pyside2-rcc ?

Pour développer

Compiler un script Python en .exe

Je ne sais pas si mon titre est très académique, mais l’idée est d’avoir un .exe de son zoli programme Python. J’ai trouvé plein de tutos sur le sujet et plusieurs outils.

Packaging, continuous integration

Je viens seulement de comprendre l’importance et l’utilité des environnements virtuels au sens Python : ça permet d’éviter de se marcher sur les pieds (avec des versions incompatibles de packages) mais aussi et surtout de repérer facilement les dépendances d’un programme (ou d’un projet).

Avant tout, il faut installer virtualenv via pip. Ensuite on crée un environnement virtuel puis on l’active avec les commandes suivantes :

virtualenv nom_environnement
nom_environnement\Scripts\activate.bat

Sur Windows, cela peut ressembler plutôt à cela :

python3 -m venv nom_environnement 
nom_environnement\Scripts\activate.bat 

Sous Linux, j’ai aussi trouvé :

python3 -m venv nom_environnement
source nom_environnement/bin/activate  

On se retrouve alors dans un pseudo-environnement virtuel, sans aucune dépendance ni package installé.

Astuce utile : pour lancer IDLE avec le contexte d’exécution de cet environnement virtuel, on peut le faire en ligne de commande en se plaçant dans le répertoire voulu et en lançant :

(venv) $ python -m idlelib.idle

Dépendances

Pour vérifier les packages qui ne sont plus à jour, la commande est :

pip list --outdated

Pour la mise-à-jour, il faut lancer :

pip install --upgrade package

Visual Studio Code

Ca a beau n’être qu’un éditeur de code (au départ), Visual Studio Code est un excellent outil qui sait s’adapter à tous les langages, Python y compris, et il sait même gérer les environnements virtuel et WSL (le Linux de Windows). Il suffit d’ajouter les extensions qui vont bien.

Un peu de sécurité

Un peu de réseau (sockets)

Il est très facile de manipuler des flux réseaux en Python.

Sockets

Ce sont des canaux de communications sur le réseau, qu’on définit par :

  • L’adresse IP (adresse sur serveur ou de la machine à contacter) ;
  • Le port (souvent 80 pour http) ;
  • Le type :
    • TCP (socket.SOCK_STREAM, orienté connexion) ou UDP (socket.SOCK_DGRAM, sans notion de connexion)
  • La famille :

Pour accéder à une URL, il faut utiliser urllib.request.urlopen(...), qui envoie un GET s’il n’y a aucune donnée en paramètre, et un POST s’il y en a. On peut bien sûr choisir une autre méthode HTTP.

Quelques trucs

Pour lister toutes les méthodes d’un objet :

>>> from optparse import OptionParser
>>> import inspect
>>> inspect.getmembers(type(objet), predicate=inspect.isfunction)

De façon plus brutale, on peut aussi faire plus simplement :

>>> import sys
>>> dir(sys)

Sources d’information

…et de formation.

CISSP

Management du Risque et de la Sécurité

US : Identification > Authentication > Authorization > Auditing > Accounting

FR : Identification > Authentification > Autorisation/Habilitation > Traçabilité > Imputabilité

L’imputabilité (qui a réalisé une action donnée) est différent de la non répudiation (un sujet ne peut pas nier avoir réalisé une action).

Droit : S’applique sur Sujet, Action, Objet.

Gouvernance

  • Alignée avec la stratégie de l’entreprise
  • Le Top Management définit périmètre, budget, objectifs, priorités, met en place la gouvernance, et est responsable de la sécurité en dernier ressort
  • Le management de la SSI s’assure que les principes sont suivis et que les risques sont gérés et acceptables
  • La SSI doit être pensée dès le stade initial de conception
  • La SSI est de la responsabilité de tous
  • Le RSSI est responsable de la protection de l’information

Due Care

Les choix doivent être faits raisonnablement afin de conduire à un niveau de sécurité correct (politique).

Due Diligence

La mise en œuvre de la SSI doit être effective et efficace (actions).

ISO 31000:2009  

Norme référentielle de management de la SSI.

Définitions de documents

  • Politique : orientation stratégique. Doit être valide 2-3 ans, mais revue tous les ans ou en cas de réorganisation importante
  • Norme/Standard : Règles obligatoires à suivre
  • Base de référence/Baseline : Règles minimales à suivre
  • Procédures : Documentation détaillée pour une tâche spécifique
  • Directive/Guideline : Recommandations, non obligatoires. Guides opérationnels de mise en œuvre des procédures

Analyse de Risque

RisquePotentiel de préjudice ou de perte, souvent défini par un événement et/ou une conséquence.Un Risque possède un impact, une fréquence, une certitude/probabilité.Exemple : Risque de perte financière suite à la panne électrique du Data CenterNotions : Source, cause, événement, conséquenceAutre définition : Probabilité qu’une menace utilise une vulnérabilité
MenaceCause possible d’un événement ou d’un incident. Scenario lié.Nature, Origine, Motivation, Moyens alloués à l’agent de menace (attaquant)Exemple d’origines : Accident, malveillanceCf ISO 27005:2011
Facteur d’expositionPourcentage mesurant la perte de valeur d’un actif quand la menace se réalise.Peut dépendre des contre-mesures.
IncidentUn incident est la réalisation d’une menace.
Probabilité d’occurrenceFréquence ou taux de réalisation d’une menace.Peut dépendre des contre-mesures (réduction de la probabilité) et des MOM de l’attaquant (Moyens, Opportunités, Motivation)
VulnérabilitéFragilité d’un système (opérationnelle, technique, physique, humaine). Représente une opportunité d’attaque
ImpactConséquence, dommage (image de marque, perte financière, engagement de responsabilité, perte de productivité)
ContrôleSynonyme de contre-mesure, mesure, dispositif de sécurité…

RISQUE = MENACE + VULNERABILITES

NIVEAU DE RISQUE = PROBA. OCCURRENCE x IMPACT POTENTIEL

Niveau de Risque est souvent appelé exposition au risque, risque estimé, voire risque.

ALE = SLE x ARO

Annual Loss Expectancy = SLE x Annual Rate of Occurrence

SLE = AV x EF

Single-loss Expectancy = Asset Value x Exposure Factor

SLE = Perte réelle quand la menace se réalise

ALE = Perte réelle attendue, lissée sur une année

Mesures de sécurité

  • Organisationnelle
  • Techniques/Logiques
  • Physiques
  • De type :
    • Préventif
    • Détection
    • Correctif
    • Directif (règlement, etc)
    • Dissuasif
    • De reprise
    • Compensatoire

L’approche peut être « Best Practices » (simple mais moins efficace) ou « Piloté par les Risques » (plus complexe mais plus efficace).

Management du risque (ISO 27005)

  • Etablissement du contexte
  • Appréciation des risques (identification, estimation des risques, évaluation des risques)
  • Traitement des risques
  • Acceptation des risques
  • Communication sur les risques
  • Monitoring et revue des risques

Risk Assessment = Appréciation des risques (identification des actifs à protéger, des menaces et agents menaçants, mesure de sécurité existantes, vulnérabilités présentes, impacts potentiels)

Risk Analysis = Analyse des risques, suivant une méthode (EBIOS, MEHARI)

Traitement du risque
  • Accepter
  • Eliminer
  • Transférer
  • Réduire
Communication
  • Sensibilisation
  • Formation (professionnels impliqués dans les processus SSI)
  • Education (experts SSI)

Sécurité des Actifs

Classification et Labellisation

Classification

Donnée sensible : confidentielle, protégée, propriétaire

Sécurité de l’Engineering

Menaces

  • Canaux cachés : mémoire et temporel (plus sophistiqué).
  • Entrées de service (maintenance hook)
  • Défaut de synchronisation (TOC/TOU, Time-of-check/Time-of-use) ou Race Condition
  • Buffer Overflow

Modèles de sécurité

ESA, Entreprise Security Architecture

Description précise et complète.

ISO/IEC 15288

Ingénierie des systèmes

Modèle V (cycle en V)

Connu, chaque phase de test répond à une phase de conception

NIST SP 800-14

Principes généraux de sécurité des systèmes

ISO/IEC 15408 – Critères Communs

Norme internationale

NIST SP 800-27 Rev A (cycle de vie des systèmes)

Initiation, développement/acquisition, implémentation, opérations/maintenance, fin de vie

ISO/IEC 21827 – SSE/CMM

System Security Engineering/Capability Maturity Model

Métrique standard couvrant les pratiques d’ingénierie de sécurité.

Zachman Framework

Framework d’architecture d’entreprise. Règle des 6 « W » : what, how, where, who, when, why.

Modèles : visionary, owner, designer, builder, implementer, worker

SABSA (Sherwood Applied Business Security Architecture)

Approche basée sur l’analyse des exigences métier, donc approche par les risques (« risk driven »). Distinct de Zachman, mais structure proche (6 « W »).

TOGAF

Architecture d’entreprise.

  • ADM : Architectural Development Method (processus)
  • ACF : Architecture Capability Framework (composants)

ITIL

Qualité de service.

Architecture physique d’un ordinateur

Généralités

  • Instruction CPU : extraire (lire), décoder, exécuter, écrire
  • Processus : contrôlé par l’OS. Thread (ou fil) : contrôlé par un processus.
  • VM : Hyperviseur Type I = Bare Metal ; Type II = Nécessite un OS

Conception sécurisée

  • Isolation temporelle, physique, virtuelle
  • Isolation de processus : encapsulation, multiplexage temporelle, nommage
  • Protection par anneau :
    • 0 : OS
    • 1 : I/O
    • 2 : Utilitaires (drivers…)
    • 3 : Utilisateur (applications)
  • TCB défini par le livre Orange (DoD) : c’est le minimum dont on est sûr. On ne communique avec le TCB qu’avec « Trust Paths », contrôlés et vérifiés.
    • Reference Monitor : spécifications. Contrôle d’accès (MAC, RBAC, DAC…)
    • Security Kernel : mise en œuvre. Communication via trust Paths.

Types de modèles de sécurité

Définition des droits

DAC : A la discrétion d’un utilisateur propriétaire de la ressource

MAC : Application d’une politique de sécurité, type militaire

RBAC : Matrice de droits, basé sur des rôles/fonctions

Rule Based AC : Basé sur des règles (ex : firewall)

Modèles de sécurité

Machine à états

Flux d’information (ex : Bell LaPadula, Biba)

Non interférence

Bell-LaPadula

Assure la confidentialité. On ne peut écrire que vers le haut (vers un niveau de confidentialité supérieur), ce qui évite de « déclassifier » une information.

  • Règle simple (no read up) : « append » vers le haut
  • Règle étoile (no write down) : « read » vers le bas
Biba

Assure l’intégrité des données. Un sujet ne peut pas écrire vers le haut (niveau de confidentialité supérieur).

  • Règle simple (no read down) : ne peut pas lire vers le bas
  • Règle étoile (no write up) : ne peut pas écrire vers le haut
  • Invocation property (?)
Brewer Nash (« Chinese wall »)

Matrice. But : éviter les conflits d’intérêt. Adresse la confidentialité.

The Brewer and Nash model, also known as the Chinese Wall model was designed to allow access controls to dynamically change based on previous actions that a user performed. This model’s main goal is to protect an organization’s assets from a user’s conflict of interests by automatically denying access to resources that would cause a conflict of interest.

Clark Wilson

Gère l’intégrité des données, destiné aux environnements commerciaux classiques. Basé sur une matrice de contrôle d’accès.

  • Séparation des tâches pour éviter collusion entre utilisateurs ;
  • Cohérence des transactions (« well formed »), pour toujours rester dans un état cohérent.

The Clark-Wilson model was developed as an extension to the Biba model. Concepts in the model revolve around the inability to directly access and/or manipulate objects to prevent data corruption.

This security model was developed with a great deal of focus on information integrity and fraud prevention. It requires the use of an abstraction layer that prevents subjects from directly accessing the object. The abstraction layer enforces the integrity of the object.

Graham Denning

Matrice. Adresse l’intégrité des données. Les sujets ont des droits transférables. Décrit la création des objets et le contrôle de la modification des accès.

HRU (Harrisson-Russo Ullman)

Matrice, intégrité des données. S’occupe des droits d’accès et l’intégrité de ces droits.

Modes de sécurité opérationnelle

Accord de confidentialité plus, selon le cas :

Autorisation adéquateApprobation formelle d’accès du propriétaireAccès (besoin d’en connaître)
ExclusifTous les utilisateurs accèdent à toutes les donnéesToutesToutesToutes
Dominante sécuritéTous les utilisateurs accèdent à certaines donnéesToutesToutesCertaines
CloisonnéIdemToutesCertainesCertaines
Multi-niveauxidemCertainesCertainesCertaines

Exclusif : système isolé en général.  

Méthodes d’évaluation de la sécurité et critères

Livre orange (DoD)

TCSEC 

Trusted Computer System Evaluating Criteria (1983)

Niveaux croissants :

  • D : Minimal
  • C : Sécurité discrétionnaire (DAC)
    • C1 : Intégrité, DAC, isolation des processus privilégiés
    • C2 : DAC plus fin, piste de vérification, isolation des ressources, documentation…
  • B : Protection obligatoire (MAC)
    • B1 : Etiquette de sensibilité, contrôle d’accès obligatoire, traitement des failles
    • B2 : Protection structurée, documentée, et formalisée, analyse des canaux mémoire, contrôles renforcés
    • B3 : Exigences monitorées (suivies, vérifiées), administration de la sécurité, détection automatique d’intrusion, analyse des canaux temporels
  • A1 : Protection vérifiée (tout est documenté de manière formelle)

Livre rouge (DoD)

TNI

Trusted Network Implementation

  1. Application du livre Orange au réseau local et étendu

Niveaux : ø < C1 (minime) < C2 (moyen) < B1 (bon)

ITSEC

Information Technology Security Evaluation Criteria, initiative européenne dans les années 1990.

Niveaux de E0 (non confiance) à E6 (confiance maximale).

Concepts/fonctionnalités prendre en compte :

  • Identification
  • Authentification
  • Contrôle d’accès
  • Imputabilité
  • Vérification
  • Réutilisabilité des objets
  • Fidélité (intégrité)
  • Fiabilité du service
  • Echange de données

Prédéfinition de classes.

Critères Communs (ISO 15408)

Norme internationale, couvrant divers systèmes et produits de sécurité (AV, firewalls, PKI, OS, routeurs, switchs, VPN, puces…).

  • Cible d’évaluation (Target Of Evaluation) : objet à certifier
  • Profil de protection (PP) : Exigences (pour une catégorie de produit). Correspond aux besoins de l’utilisateur
  • Cible de sécurité (Security Target) : Exigences utilisées pour la base de l’évaluation (niveau de sécurité souhaité, pour le produit à évaluer)
  • Composants : la politique de sécurité est décrite à l’aide de composants.
SFR = Security Functionnal Requirements (exigences fonctionnelles) ➔ incluses dans le ST

Il existe 11 familles de composants SFR.

  • FAU audit de sécurité, FCO communication, FCS support cryptographiques, FDP protection données utilisateur, FIA identification et authentification, FMT gestion de la sécurité, FPR vie privée, FPT protection de la solution de sécurité de la TOE (TSF), FRU utilisation des ressources, FTA accès TOE, FTP chemins/canaux sécurisés.
SAR = Security Assurance Requirements ➔ Evaluation

Il existe 10 familles de composants SAR.

  • ACM gestion de la configuration, ADO distribution et opération, ADV développement, AGD gestion des directives, ALC support du cycle de vie, ATE tests, AVA évaluation des vulnérabilités, AMA maintenance de l’assurance, APE évaluation du profil de protection, ASE évaluation de la cible de sécurité.
Niveaux CC (Evaluation Assurance Level)
  • EAL1 : Testé fonctionnellement
  • EAL2 : Testé structurellement (= C1)
  • EAL3 : Testé et vérifié méthodiquement (= C2)
  • EAL4 : Conçu, testé, et vérifié méthodiquement (=B1)
  • EAL5 : Conçu de façon semi-formelle et testé (= B2)
  • EAL6 : Conception vérifiée de façon semi-formelle et testé (= B3)
  • EAL7 : Conception vérifiée de façon formelle et testé (A1)
Processus d’évaluation
  • Evaluation du PP (cohérent, complet)
  • Evaluation de la ST (capable d’évaluer la TOE correspondante)
  • Evaluation de la TOE : détermination du niveau EAL.
  • Evaluation de l’assurance : Démontre que l’assurance établie en TOE est entretenue/maintenue.

CERTIFICATION = Vérification.

ACCREDITATION = Acceptation formelle de la direction du niveau de sécurité et du niveau de risque associé.

Common Structural Coverage metrics

  • Statement/Decision/Condition/Multiconditions/Loop/Path/DataFlow
  • Vérification des programmes informatiques ?

Stratégies de vérifications : positive (le programme fait ce qu’on attend) ou négative (on vérifie que l’appli sait gérer les imprévus)

ISCM

Define > Establish strategy/metrics… > Implement > Analyse data collected > Respond > Review > Update

Vulnérabilités

  • Emanations (fuite « mécaniques »), canaux cachés, inférence (déduction), agrégation (combiner des infos non sensibles), datawarehouse (destruction des structures de contrôle), data mining (découverte de données).

Mesures de sécurité : connu.

Sécurité des réseaux et des télécommunications

https://www.commentcamarche.net/faq/2238-reseaux-concentrateur-hub-commutateur-switch-et-routeur

PAN : Personal Area Network.

SAN : Stockage AN.

MAN : Metropolitan AN, entre LAN et WAN

Equipements

Hub, Répéteur (1, octet) < Pont/Bridge, switch (2, trame) <  Routeur (3)1

  • Un hub n’est qu’une multiprise RJ45. Il peut aussi être répéteur (s’il est alimenté).
  • Un pont peut interconnecter plusieurs « réseaux » en redirigeant le trafic en fonction de l’adresse Mac. Ici, 1 port = 1 segment réseau. Tout paquet est retransmis vers tout le monde. Il peut également faire office de répéteur.
  • Un switch travaille aussi au niveau Mac. 1 port = 1 adresse Mac. Tout paquet n’est renvoyé que vers le destinataire.
  • Un routeur travaille à partir d’une table de routage, qui indique sur quel segment réseau envoyer les paquets en fonction de l’adresse Mac. Un routeur sait travailler sur plusieurs sous-réseaux, et peut en créer (VLAN) et parfois les protéger (pare-feu).

Typologie : bus, étoile, anneau (ring), arbre, tas de merde (mesh)

  • Bus, étoile : risque de collision, à gérer. Principe de base ; on écoute avant d’émettre.
  • Token ring (matériel ou virtuel) : seul la machine disposant d’un jeton peut émettre.

Mode de transmission : Unicast (un seul dest), broadcast (tout le monde), multicast (plusieurs dest.)

Réseaux

LAN

Méthode de négociation LAN :

  • CSMA/CD : Carrier Sense Multiple Access with Collision Detection (ex : ethernet)
  • CSMA/CA : Collision Avoidance (ex : wifi)
  • Polling (mainframe)
  • Token passing
WIFI

ad hoc (tout le monde se parle), infrastructure (passage par un point d’accès), maillé (plusieurs points d’accès avec routage filaire)

WAN

T1 (1.5 Gbits/s), T3 (44 .7 Gbits/s) aux USA, E1 (2.0 Gbits/s), E3 (34.3 Gbits/s) en Europe

HDLC : High-level Data Link Control. Protocole niv 2 synchrone. Améliore le SDLC (Synchronous DLC). Sont de niveau 2 OSI.

HSSI : Protocole de niveau 1

PPP : Basé sur HDLC. Authentification par PAP, CHAP, EAP

X25 : en déclin. Performances << ATM (commutation de cellules, très robuste) ou Frame Relay (packet switching, débit minimal garanti ?)

RNIS : « Numérisation » du réseau RTC (local)

MPLS : Multiprotocol Label Switching), hautes perfs. MP : peut transporter IP (v4 et v6), Ethernet, ATM, DSL, Frame Relay.

VSAT : Very Small Aperture Terminal (via satellite)

VLAN

Lan virtuel. Voir norme 802.1q

PVLAN

VLAN avec restrictions sur certains ports (uplink). Les ports restreints sont appelés ports privés.

Typiquement il y a un seul port ascendant, vers le routeur, firewall, FAI…

VLAN primaire : VLAN d’origine. Utilisé pour envoyer les flux vers les VLAN secondaires

VLAN secondaires :  

  • Isolé : Ne peut atteindre que le VLAN primaire ; les hôtes de ce VLAN ne peuvent pas communiquer non plus. Un seul isolé par VLAN primaire.
  • Communauté : Les ports d’un VLAN communautaire peuvent communiquer entre eux. Impossibilité de communiquer entre VLAN secondaires. Il peut y en avoir plusieurs.

Ports de VLAN privé :

  • Un port en mode promiscuous (P), branché au routeur ; il peut envoyer et recevoir de n’importe quel VLAN.
  • Ports hôte
    • Port isolé : ne peut communiquer qu’avec P
    • Port communautaire : peut communiquer avec P et les ports de sa communauté

Modèle OSI

  1. Physique (bit)
  2. Liaison de données (Data Link, trames ou frames) ➔ Adresse MAC (« camion de la Poste »)
  3. Réseau (Network, paquets) ➔ Adresse IP. Adressage logique d’un paquet, sélection des routes (« centre de tri postal »)
  4. Transport (datagrammes UDP, segments TCP) ➔ Livraison de données, correction d’erreurs, contrôle des flux
  5. Session ➔ RPC, SQL, NetBios Names…
  6. Présentation ➔ ASCII, EBCDIC, JPEG, GIF, chiffrement…
  7. Application ➔ HTTP, DNS, FTP, telnet, NFS, SMTP, SNMP…

Internet

Couches 5 à 7 regroupées en une seule (application).

Classe d’adresse :

  • A : 0 x x x x … donc 0.0.0.0 à 127.255.255.255 (/8)
  • B : 1 0 x x x… donc 128.0.0.0 à 191.255.255.255 (/16)
  • C : 1 1 0 x x … donc 192.0.0.0 à 223.255.255.255 (/24)
  • D : 1 1 1 0 x … donc 224.0.0.0 à 239.255.255.255 (/4)
  • E : le reste > 240.0.0.0, réservée

Classes privées (RFC1918) :

  • A : 10.0.0.0/8 (10.0… à 10.255…) disposant de 224 adresses
  • B : 172.16.0.0/12 (172 .16.0… à 172.31.255…) soit 16 réseaux de classe B contigus (220 adresses)
  • C : 192.168.0.0/16, 255 réseaux de classe C contigus (216 adresses)

TCP vs UDP : protocoles de niveau 4 (transport) mais TCP est « fiable » (demande un accusé de réception du paquet), UDP est en « best effort ».

Routage

Algorithmes de routage :

  • EGP/Extérieur AS : (p) path vector
    • BGP v4 (« path vector routing protocol ») (p)
  • IGP/Intérieur EAS : (d) distance vector, (l) link state, hybride.
    • RIP v1 et v2 (d), IGRP (d), EIGRP (d), OSPF (l), IS-IS (l)

Authentification réseau

En PPP

PAP : Password Authentication Protocol, mot de passe en clair

CHAP : Challenge-Handshake AP : pas de mot de passe, challenge

EAP : Utilisation de certificats X509

En centralisé

AAA : Authentication, Autorisation, Accountability

Ex : Radius, Diameter, Tacacs, Kerberos, Sesame

Parefeux

  • Gen 1 : packet filtering (ACL), layer 3
  • Gen 2 : proxy FW (socks). Semblable à G1 mais en rupture de flux (proxy). Peut être implémenté en « application layer proxy FW » (1 par protocole)
  • Gen 3 : stateful FW, avec historique, moteur d’analyse des états, etc
  • Gen 4 : Gen 3 en proxy.
  • Gen 5 : Kernel Proxy FW. Tentative de Cisco, mais abandonné.
Figure 2-1. Simple firewall architecture (dual-homed)Figure 2-2. Single-firewall DM2 architecture (three-homed)
Figure 2-3. « Screened subnet » DM2 architectureFigure 2-4. Better screened subnet architecture (fully firewalled variant)

Isolation par VPN

  • PPTP : Propre à Microsoft. Encapsulation GRE. Niveau LAN (uniquement @IP)
  • L2TP : PPTP + L2F de Cisco. Niveau WAN
  • IPSEC : Canaux sécurisés entre ordinateurs plutôt qu’entre applis comme avec SSL. Défini dans différents RFC (2401, 2402, 2406, 2408)
    • SA : Security Association (Security Parameter Index + @IP dest + protocole de sécurité (AH ou ESP))
      • SA de transport (liaison point à point, couches 4 à 7 OSI)
      • SA tunnel (entre sites ou accès distant, couches 3-4 ?)
    • IKE : RFC2409, échange de clé (Internet Key Exchange)
      • Combinaison ISAKMP et OAKLEY
      • Phase 1 (« admin ») : authent, établissement paramètres IPSEC.
      • Phase 2 : établissement de tunnels secondaires pour échange des données (renouvellement ce clé ➔ nouveau tunnel secondaire)
    • AH (Authentication Header)/ESP (Encapsulating Security Payload)
      • AH, protocole 51, établit l’identité des systèmes
      • EPS, protocole 50, chiffre les données échangées
      • Peuvent être en mode transport (entre 2 hôtes) ou tunnel (entre 1 hôte ou 1 passerelle avec une autre passerelle). Une passerelle n’a besoin que du mode tunnel, un hôte doit supporter tunnel et transport.
    • Mode transport = entête original + nouvel header + payload original…
    • Mode tunnel = on encapsule (entête original + payload original)
    • Note : Chiffrement ➔ ajout d’un trailer de « signature »

Vocabulaire réseau

Frame Relay

ATM

NAT/PAT : Network AT ou Port AT

DNP3 : Protocole niveau 2 utilisé dans les systèmes industriels. Aucune sécurité.

Disques

  • Raid 0 : disques en // (perf uniquement)
  • Raid 1 : mirroring
  • Raid 5 : répartition (au moins 3 disques) avec parités
  • Raid 6 : RAID 5 mais tolère la panne de 2 disques. Au moins 4 disques.
  • Raid 10 : 0 + 1
  • Sauvegardes incrémentale (= depuis la dernière svg) différentielle (= depuis la dernière svg complète)

Cryptographie

  • Confidentialité ➔ Chiffrer
  • Intégrité ➔ Hacher
  • Authenticité et intégrité ➔ Signer. Permet aussi la non-répudiation

Anciens procédés

  • Chiffre de César ➔ Substitution
  • Procédé de Vigénère ➔ Substitution polyalpha
  • Chiffre de Vernam ➔ Masque jetable (longueur de clé = longueur de message)

Algorithmes modernes

  • Principe de Kerckoff : la force repose sur la clé et non le secret de l’algo.
  • Le chiffrement peut se faire en bloc, en continu, ou par masque jetable
  • Algo symétriques : difficiles à casser (clés > 128 bits), rapide, mais prb échange de clé (pour N correspondants, il faut échanger n(n-1)2 clés.
  • Algo asymétriques : pas d’échange de clé mais lent (1000 à 10 000 fois plus lent), besoin de clés plus grandes (sauf courbes elliptiques)

Symétriques

Modes d’opérations cryptographiques
Figure 1 ECB (Electronic Codebook)Figure 2 CBC (Cipher Block Chaining )
Figure 3 CFB (Cipher Feedback) type fluxFigure 4 OFB (Output Feedback) type flux précalculable
Figure 5 Compteur type flux précalculable
Algos symétriques
  • Lucifer/DES : Bloc 64 bits, clé 56 bits. Utilise ECB et CBC généralement.
  • Rijndael : symétrique, remplace DES/3DES. Clés et blocs de 128 à 256 bits.
  • AES : Rijndael + qqs paramètres. Clés : 128, 192 ou 256 bits. Bloc 128 bits.
  • IDEA, utilisé dans PGP
  • RC2, RC5, RC6 (Ronald RIVEST)

Asymétriques

  • RSA (nombres premiers)
  • Diffie-Hellman, El-Gamal, Elliptic Curve Cryptosystem (logarithmes discrets)
  • PGP

Protocoles internet

  • TLS (> SSL), permet de sécuriser tout protocole TCP
  • S/MIME : Secure MIME, basé sur PKCS (Private Key Cryptography Strandards) et X509
  • PGP (Phil ZIMMERMANN), utilise IDEA et RSA
  • SET (Visa, Mastercard), remplacé par 3DSecure
  • S-HTTP : Authent. mutuelle par certificat
  • IKE : Echange de clé sur internet (basé sur ISAKMP et OAKLEY)
  • IPSEC : utilise les protocoles AH (Authent. Header) et ESP (Encaps. Security Payload)
  • SSH

Hachage

  • MD2, MD4, MD5 (R. Rivest encore)
  • HAVAL
  • SHA (160, 256, 512 bits)
  • RIPMED-160
  • MAC/HMAC : Fonctions de hachage avec clé secrète assurant intégrité et authenticité
    • MAC : message + clé
    • HMAC : itérations cryptos…

Signature

Intégrité et authenticité (calcul d’un hash du message, puis chiffrement asymétrique du hash).

Algos : RSA (FIPS-186), DSA, ECDSA

Autorité de certification

Composantes : Certificat > Autorité de certification (émet et vérifie les certificats) > Autorité d’enregistrement (vérifie l’identité, envoie les demandes à l’AC) > Référentiel des certificats (conserve les certificats, gère les CRL)

Vocabulaire cryptographie

Link encryption : chiffrement au niveau 2 (data link). Nécessite la confiance en tous les éléments supérieur du reseau…

End-to-end : Niveau applicatif ?

SP-Networks : Substitutions-Permutations

Attaques

  • Side-channel analysis (émanations, puissance électrique…)
  • Fault analysis
  • Probing attack (observation autour de l’unité cryptographique)

IAM

Approche : physique, logique, administrative

[802.1x : authent/ident réseau, niveau OSI 2]

Méthode IAAI : Identification, Authentification, Autorisation (besoin d’en connaître, moindre privilège), Imputabilité.

[PAM : account, auth, password, session]

SASL : Simple Authentication and Security Layer (IETF). Relatif au mot de passe ?

Biométrie : CER (Crossover Error Rate) = EER (point où FAR = FRR). FRR : Type I. FAR : Type II.

Contrôles centralisés d’accès aux systèmes

Radius

AS : Serveur d’Authentification, point d’entrée. Basé sur n’importe quelle BD (fichier, LDAP, AD, mySQL…)

NAS : Network Access Server

TACACS+

Propriétaire Cisco, basé sur TACACS

Diameter

Radius + TACACS+ avec améliorations

Kerberos

Point critique : échange initial des clés (car basé sur de la crypto symétrique)

Contrôles décentralisés

Contrôle au plus près des ressources, souvent via des domaines de sécurité

Exemple : Windows Workgroup

Modèles de contrôle

Définit comment un sujet accède à un objet.

  • DAC (en général décentralisé)
  • MAC (classification des objets et habilitations des sujets), en général centralisé
  • RBAC, en général hybride
  • Rule-based AC
  • Non discrétionnaire

Contrôles d’accès aux données

  • Interface restreinte (programme, vue de BD…)
  • Contenu (seuls les employés de la paye accèdent aux données/logiciel paye)
  • Contexte (horaires d’accès, lieu…)
  • Moindre privilège, besoin d’en connaître
  • Sécurité des protocoles utilisés

Bonnes pratiques

  • Séparation des fonctions, rotations
  • Désenregistrements
  • Revues périodiques
  • TI, sensibilisations…

Evaluation et test de la sécurité

Etapes d’une attaque : reconnaissance/information, scan et énumération, accès à la cible, maintien de l’accès, effacement des traces

Etapes d’un TI : reconnaissance/information (selon le type : white, gray, blackbox), scan et énumération, validation des vulnérabilités, éventuellement effacement des traces (rares)

Sécurité des opérations

Faire fonctionner les systèmes conformément à la politique et aux procédures, s’assurer que les sauvegardes sont réalisées et utilisables, répondre efficacement aux incidents de sécurité, gérer les changements (patch, configuration)

Sécurité Physique ➔ FailSafe

Mesures/Type de contrôles

  • Directifs : information, règles
  • Préventifs : supervision, gardiens, tests, sensibilisation…
  • Détection : IDS, alarmes…
  • Correctifs : antivirus, IPS…
  • Récupération/Réparateurs : sauvegardes
  • Compensatoires : alternative à un contrôle
  • Dissuasives : vidéo, affichages…

Gestion du changement : demande d’intervention (« change request »), contrôle du changement (« change »), mise en production du contrôle (« release »)

Réponse aux incidents de sécurité : Triage, Investigation, Reprise.

Sécurité du développement logiciel

Ver : N’a pas besoin d’hôte pour se propager (contrairement à un virus)

Développement

  1. Initiation du projet : analyse préliminaire
  2. Planification : définition des exigences fonctionnelles
  3. Conception : exigences fonctionnelles traduites en spécs détaillées
  4. Développement : mise en œuvre et plans de test
  5. Essai : TU, TI. Si besoin : accréditation (suite à certification). Documentation
  6. Mise en œuvre
  7. Maintenance
  8. Retrait/Elimination

CMM : Capability Maturity Model

  1. Introductif
  2. Reproductible (processus basiques)
  3. Défini : Toute l’organisation respecte les processus standards (périmètre complet, mises-à-jour)
  4. Géré : Qualité des processus contrôlée (mesuré)
  5. Optimisé : Amélioration continue institutionnalisée (amélioré)

Informatique distribué

ORB : Object Request Broker. La plupart s’appuye sur CORBA

COM : Comm sur un même sysème (-> OLE). DCOM : Entre systèmes distribués (-> ActiveX)

Méthodologie cleanroom

SGBD

  • Intégrité sémantique
  • Intégrité de l’entité (non duplication, clé primaire correcte (non nulle))
  • Intégrité référentielle (entre clés/enregistrements)
  • ACID : Atomicity, Consistency, Isolation and Durability

Sécurité physique

Interférences magnétiques : moteurs électriques, foudre, mise à la terre…

Interférences radio : néons, fils électriques, radios…

Feux

  • A : Eau, liquide ignifuge
  • B (hydrocarbures) : CO2, FM200, mousse, bicarbonates de soude et potassium
  • C (électriques) : CO2, FM200, poudre
  • D (métaux) : poudre sèche
  • K (huile de cuissson) : savon spécial, couvrir…

Halon : désormais interdit !

Normes : 20-23°C, 40-60% d’humidité

CPTED : Territorialité, Surveillance, Contrôle d’accès

Clôtures : dissuasion (1m), protection (2m), forte protection (2,5m)

Eclairage :

  • 2 lumens à 2m de hauteur pour identification visuelle
  • 5 pour un parking ?

Continuité des activités/Reprise après sinistre

PCA : Comprend le plan de reprise

  • Initiation et management du projet
  • Evaluation de l’état actuel (Ident menaces, gestion des risques, BIA/Business Impact Analysis)
    • D’abord identifier tous les actifs (Business Units) puis déterminer fonctions et processus critiques.
    • Evaluer le MTD : Max Tolerable Downtime (Délai max admissible pour le retour à la normale)

Non-essential (30 j) < Normal (7 j) < Important (72 h) < Urgent (24 h) < Critique (minutes)

  • Déterminer les ressources IT nécessaires aux fonctions et processus IT critiques
  • RTO : Recovery Time Objective  (Délai max d’interruption admissible). Peut se rapporter aux coûts…
  • RPO : Recovery Point Objective (Délai max admissible de perte de données)
  • WRT : Work Recovery Time (Délai de récupération)

Conformité

HIPAA : Assurances (confidentialité)

Gramm-Leach-Billey (GLBA) : sécurité et confidentialité institutions financières

SOX : Sociétés côtés

Preuve :

  • Exacte
  • Admissible (inclut la pertinence, la légalité de son obtention…)
  • Authentique
  • Convaincante
  • Complète

Niveaux de preuve US :

  • Best (original)
  • Secondary (copie)
  • Direct (objet/sujet en lui-même)
  • Conclusive (irréfutable)
  • Corroborative
  • Circumstancial (faits indirects, certains mais impossible à relier de façon certaine)

Ethique

  • Protéger la société, le bien commun, les infrastructures
  • Agir honorablement, honnêtement, de façon juste, responsable et légale
  • Fournir les services avec compétence et application
  • Faire avancer et protéger la profession

Vocabulaire

Accountability : Imputabilité ou responsabilité

DMIA : Délai Maximum d’Interruption Admissible (RTO, Recovery Time Objective)

CMDB : Configuration Management DB

COBIT : Control Objectives for Information and related Technology. Bonne gouvernance des

ressources informatiques. Base « minimale » de services de sécurité à implémenter.

CVC : Chauffage, Ventilation, Climatisation

Disaster Recovery ➔ Technical Env.

FRAP (Facilitated Risk Analysis Process) : Analyse d’un système ou application à la fois

ISO 27002 : Recueil de bonnes pratiques

ICS : Industrial Control Systems (SCADA)

Socket : IP, port, protocole

X501/X500

Tactical Szcurity Plan : Un aspect spécifique d’un plan stratégique. Ex : emploi de nouvelles technos de sécurité

Electronic vaulting ➔ Sasuvegarde hors site par voie électronique

Remote journaling ➔ Transactions/Journal de logs envoyés vers secours/mirroir

Classification données US : confidential > private > sensitive > internal use > public

IPv6 : 128 bits

CMM : Initial, Repeatable, Defined, Managed, Optimized

  • Incident
  • Problème : incident qui se répète
  • Changement
  • Configuration

Attaques

SMURF : attaque réseau distribuée (via broadcast)

Teardrop attack : données incomplètes (le serveur attend la suite en vain)

War Driving : attaque sur les points d’accès, par récupération d’info en voiture…

Whaling : phishing vers le top management

Vishing : phishing par téléphone

Piggybacking : utiliser les identifiants de qqn d’autre

Tailgating : pousser au portillon…

Baiting

Due diligence takes place in planning, and is done to ensure that all possible weaknesses and threats were considered. Due care is the set of actions to mitigate weaknesses in the current situation.

A risk is the likelihood that a threat agent will take advantage of a vulnerability. It ties the vulnerability, threat and the likelihood of being exploited, to the business impact that could result.

A company purchased anti-virus software from a leading vendor and installed it. However, the signatures were not kept up-to-date. This is a vulnerability since the company is now prone to virus attacks. The threat is that a virus will actually show up and disrupt systems. Risk is the likelihood of the virus showing up.

A good business continuity plan will be structured as Initiation phase, Activation phase, Recovery phase, and Reconstruction phase.

PII does not include information that is readily available from a telephone directory. However, when it is combined with a third item of information, such as an account number, it becomes private.

Radio frequency interference (RFI) can be caused by devices that produces radio waves and is commonly caused by fluorescent lights in buildings. Shielded cabling and proper placement of cables are ways to help prevent interference due to fluorescent lighting.

Security plans should be designed to be useful for at least three years. 

Standards refer to mandatory activities or rules.

End-to-end encryption : in this form of encryption, details such as the addresses, routing information, header and trailer information are not encrypted, thereby enabling an attacker to gain details without the need for decryption. In contrast, link encryption (also known as online encryption) provides better security against packet-sniffers.

Code of Ethics Canons

  • Protect society, the common good, necessary public trust and confidence, and the infrastructure.
  • Act honorably, honestly, justly, responsibly, and legally.
  • Provide diligent and competent service to principles.
  • Advance and protect the profession.

HORS CISSP

Cf site zerodium

Outils cités

  • Google ! (Google Dorks)
  • Maltego : recueil d’infos
  • Httprint : infos sur le serveur (fingerprinting)
  • The harvester (cf Kali Linux)
  • Web Data Extractor
  • NMAP, Netcat, Hping, Angry IP Scanner
  • Unicorn.net ou org (obsolète)
  • Détections de vuln. manuels : Nessus, WPScna, ISS, Saint
  • Détections de vuln. auto. : Core Impact, Canvas, Retina
  • Commandes Win : net view, net use, nbstats, currport, netstat
  • Volatility

Rootkit

Un rootkit (en français : « outil de dissimulation d’activité »1) est un type de programme (ou d’ensemble de programmes ou d’objets exécutables) dont le but est d’obtenir et de maintenir un accès frauduleux (ou non autorisé) aux ressources d’une machine, de la manière la plus furtive et indétectable possible.

Le terme peut désigner à la fois la technique de dissimulation ou son implémentation (c’est-à-dire un ensemble particulier d’objets informatiques mettant en œuvre cette technique).

Historique

Le phénomène n’est pas nouveau : des programmes manipulant les logs système, tout en se dissimulant des commandes donnant des informations sur les utilisateurs (telles que who, w, ou last), sont apparus en 1989{{Lien web | url = http://www.sans.org/reading_room/whitepapers/honors/linux_kernel_rootkits_protecting_the_systems_1500?show=1500.php&cat=honors | titre = Linux kernel rootkits: protecting the system’s « Ring-Zero » | date = mars 2004 | éditeur = SANS Institute }} ; les premiers rootkits sur Linux et Solaris ont été rencontrés au début des années 19902 et ont été répertoriés en tant que tels en octobre 1994. Le projet chkrootkit, dédié au développement d’un outil de détection de rootkits pour les plateformes Solaris et HP-UX, a été démarré en 1997.

Il existe des rootkits pour la plupart des systèmes d’exploitation. En 2002, Securityfocus constatait déjà des évolutions et des progrès en matière de rootkit pour les plate-formes Windows. Un des premiers rootkits pour Mac OS X (WeaponX) est apparu en novembre 20043.

Certains rootkits peuvent être légitimes, pour permettre aux administrateurs de reprendre le contrôle d’une machine défaillante, pour suivre un ordinateur ayant été volé4, ou dans des outils comme Daemon Tools ou Alcohol 120%5. Mais aujourd’hui le terme n’évoque quasiment plus que des outils à finalité malveillante.

Mode opératoire

Contamination

La première phase d’action d’un rootkit consiste à chercher un accès au système, sans forcément que celui-ci soit un accès privilégié (ou en mode administrateur). La contamination d’un système peut avoir lieu de différentes façons, en utilisant les techniques habituelles des programmes malveillants. Les moyens les plus courants sont :

  • utilisation des techniques virales : un rootkit n’est pas un virus à proprement parler, mais il peut se transmettre par les techniques utilisées par les virus, notamment par un [[Cheval_de_Troie_(informatique)|cheval de Troie]]. Un virus peut avoir pour objet de répandre des rootkits sur les machines infectées (a contrario, un virus peut aussi utiliser les techniques de rootkits pour parfaire sa dissimulation) ;
  • mise en œuvre d’un [[Exploit_(informatique)|exploit]], c’est-à-dire l’exploitation d’une vulnérabilité de sécurité, à n’importe quel niveau du système : application, système d’exploitation, BIOS, etc. Cette mise en œuvre peut être le fait d’un virus, mais elle résulte aussi souvent de botnets qui réalisent des scans de machines pour identifier les failles et exploiter celles qui sont utiles à l’attaque ;
  • attaque par force brute, afin de profiter de la faiblesse des mots de passe de certains utilisateurs, et obtenir ainsi un accès au système.

Modification du système et dissimulation

Une fois la contamination effectuée et l’accès obtenu, la phase suivante du mode opératoire consiste en l’installation de l’ensemble des objets et outils nécessaires au rootkit. Il s’agit des objets permettant la mise en place de la charge utile du rootkit, s’ils n’ont pas pu être installés durant la phase de contamination, ainsi que les outils et les modifications nécessaires à la dissimulation.

Mise en place de la charge utile

Un [[botnet

permet d’avoir un accès sur des centaines de machines.]]

La charge utile est la partie active du rootkit (et de tout programme malveillant en général), dont le rôle est d’accomplir la (ou les) tâche(s) assignée au système. La charge utile permet d’avoir accès aux ressources de la machine infectée, et notamment :

  • CPU, pour décoder des mots de passe ou plus généralement pour effectuer des calculs distribués à des fins malveillantes ;
  • serveur de messagerie, pour envoyer des mails (pourriel ou spam) en quantité ;
  • ressources réseaux, pour servir de base de lancement pour des attaques diverses (déni de service, exploits) ou pour sniffer l’activité réseau ;
  • pilotes de périphériques, pour installer des enregistreurs de frappe ou keyloggers (par exemple) ;
  • accès à d’autres machines, par rebond ;
  • prise de contrôle total de la machine (par exemple en remplaçant le procédé de connexion, comme /bin/login sous Linux).

Certains rootkits sont utilisés pour l’exploitation de botnets, la machine infectée devenant alors une machine zombie, comme par exemple pour le botnet Srizbi6.

Dissimulation

Le rootkit cherchera également à « dissimuler » son activité. Ce procédé de dissimulation permet évidemment de minimiser le risque de découverte du rootkit, afin de profiter le plus longtemps possible de l’accès frauduleux. Une des caractéristiques principales d’un rootkit est donc sa faculté à se dissimuler, alors qu’un virus cherche principalement à se répandre, ces deux fonctions étant parfois jumelées pour une efficacité supérieure. Selon les cas, plusieurs méthodes peuvent être employées et combinées :

  • en ouvrant des portes dérobées, afin de pérenniser l’accès au système et permettre le contrôle de la machine, l’installation de la charge utile, etc27 ;
  • en cachant des processus informatiques ou des fichiers ; sous Windows, une technique consiste à modifier certaines clés de la base de registre ; sous Linux, on peut par exemple modifier les fichiers /usr/include/proc.h (processus à masquer) ou /usr/include/file.h (fichiers à masquer) ;
  • en remplaçant certains exécutables ou certaines librairies par des programmes malveillants et des chevaux de Troie, contrôlables à distance ;
  • en obtenant des droits supérieurs (par élévation des privilèges), afin de désactiver les mécanismes de défense ou pour agir sur des objets de haut niveau de privilèges ;
  • en utilisant des techniques de type « {{lang|en|Stealth by Design}} » (littéralement « furtif par conception »)8, à savoir implémenter à l’intérieur du rootkit des fonctions système afin de ne pas avoir à appeler les fonctions standards du système d’exploitation et ainsi éviter l’enregistrement d’événements système suspects ;
  • en détournant certains appels aux tables de travail utilisées par le système{{pdf}} {{Lien web |url=http://www.security-labs.org/fred/docs/sstic07-rk-article.pdf|titre=De l’invisibilité des rootkits : application sous Linux|auteur=E. Lacombe, F. Raynal, V. Nicomette|éditeur=CNRS-LAAS/Sogeti ESEC}} par [[Hook (informatique)|hooking]] ;
  • en effaçant physiquement toute trace d’activité, notamment dans les journaux de logs système, etc.

Niveau de privilège

Bien que le terme a souvent désigné des outils ayant la faculté à obtenir un niveau de privilège de type administrateur (utilisateur root) sur les systèmes Unix et Linux, un rootkit ne cherche pas obligatoirement à obtenir un tel accès sur une machine (par [[Élévation_des_privilèges|élévation de privilège]]), et ne nécessite pas non plus d’accès administrateur pour s’installer, fonctionner et se dissimuler9. Le programme malveillant Haxdoor10, même s’il était un rootkit du type noyau11 pour parfaire sa dissimulation, écoutait les communications sous Windows en mode utilisateur12 afin de tenter de capturer des identifiants avant cryptage, en interceptant les API de haut niveau.

Cependant, l'[[Élévation_des_privilèges|élévation de privilège]] est souvent nécessaire pour que le camouflage soit efficace : le rootkit peut utiliser certains [[Exploit_(informatique)|exploits]] afin de parfaire sa dissimulation en opérant à un niveau de privilège très élevé, pour atteindre des bibliothèques du système, des éléments du noyau, pour désactiver les défenses du système, etc.

Types

Il existe cinq types principaux de rootkits selon leur cible : les kits de niveau micrologiciel, hyperviseur, noyau, bibliothèque et applicatif.

Niveau micrologiciel/hardware

Il est possible d’installer des rootkits directement au niveau du micrologiciel (ou {{lang|en|firmware}}). De nombreux produits proposent désormais des mémoires flash, ce qui peut être utilisé pour implanter durablement du code13, en détournant par exemple l’usage d’un module de persistance souvent implanté dans le BIOS de certains systèmes.

Un outil légitime utilise d’ailleurs cette technique : LoJack, d’AbsolutSoftware4, qu’on trouve sur des ordinateurs portables car il permet ainsi de suivre un ordinateur à l’insu de l’utilisateur (en cas de vol). Ce code peut « survivre » à un changement de disque dur voire à un flashage du BIOS14 si le module de persistance est présent et actif. Tout périphérique disposant d’un tel type de mémoire est donc potentiellement vulnérable.

Une piste évoquée pour contrer ce genre de rootkit serait d’interdire l’écriture du BIOS (grâce à un cavalier sur la carte-mère ou par l’emploi d’un mot de passe) ou d’utiliser des EFI à la place du BIOS15, mais cette méthode reste à tester et à confirmer16.

Niveau hyperviseur

Ce type de rootkit se comporte comme un hyperviseur classique (de niveau 1) : après s’être installé et avoir modifié la séquence de démarrage, pour être lancé en tant qu’hyperviseur de la machine infectée au démarrage. Le système d’exploitation original se retrouve alors être un hôte (invité) du rootkit, lequel peut alors intercepter tout appel matériel. Il devient quasiment impossible à détecter depuis le système original.

Une étude conjointe de chercheurs de l’université du Michigan et de Microsoft ont démontré la possibilité d’un tel type de rootkit, qu’ils ont baptisé « {{lang|en|virtual-machine based rootkit}} » (VMBR)17. Ils ont pu l’installer sur un système Windows XP et sur un système Linux. Les parades proposées sont la sécurisation du boot, le démarrage à partir d’un média vérifié et contrôlé (réseau, CD-ROM, clé USB, etc) ou l’emploi d’un moniteur de machine virtuelle sécurisé.

Niveau noyau

Certains rootkits arrivent à s’implanter dans les couches du noyau du système d’exploitation soit dans le noyau lui-même, soit dans des objets exécutés avec un niveau de privilèges équivalent au système, ce qui est le cas pour certains pilotes de périphériques.

Sous Linux, il s’agit souvent de modules pouvant être chargés au niveau du noyau (modules de noyau chargeables, ou {{lang|en|loadable kernel modules}}), sous Windows de pilotes informatiques. Avec un tel niveau de privilèges, la détection et l’éradication du rootkit n’est souvent possible que de manière externe au système en redémarrant (en bootant) depuis un système sain, installé sur CD, sur une clé USB ou par réseau.

Ce type de rootkit est dangereux à la fois parce qu’il a acquis des privilèges élevés (il est alors plus facile de leurrer un logiciel de protection), mais aussi par les instabilités qu’il peut causer sur le système infecté comme cela a été le cas lors de la correction de la vulnérabilité MS10-01518, où des [[Écran_bleu_de_la_mort|écrans bleus]] sont apparus en raison d’un conflit entre cette correction et le fonctionnement du rootkit Alureon19.

Niveau bibliothèque

À ce niveau, le rootkit détourne l’utilisation de bibliothèques légitimes du système d’exploitation. Plusieurs techniques peuvent être utilisées :

  • en patchant un objet d’une bibliothèque, c’est-à-dire en ajoutant du code à l’objet en question ;
  • en détournant l’appel d’un objet (« hooking »), ce qui revient à appeler une autre fonction puis à revenir à la fonction initiale ;
  • en remplaçant des appels système par une version spécifique, ce qui correspond à remplacer l’appel système initial par du code malveillant.

Ce type de rootkit est assez fréquent, mais il est aussi le plus facile à contrer, notamment par un contrôle d’intégrité des fichiers essentiels en surveillant leur empreinte grâce à une fonction de hachage, par détection de signature du programme malveillant, ou par exemple par examen des {{lang|en|hooks}} par des outils comme unhide sous Linux ou HijackThis sous Windows.

Niveau applicatif

Un rootkit applicatif implante des programmes malveillants de type [[Cheval_de_Troie_(informatique)|cheval de Troie]], au niveau utilisateur. Ces programmes prennent la place de programmes légitimes ou en modifient le comportement, afin de prendre le contrôle des ressources accessibles par ces programmes.

Exemples

Rootkits Sony

À deux reprises, Sony a été confronté à la présence masquée de rootkits dans ses produits : dans ses clés usb biométriques20 et dans son composant de gestion numérique des droits (DRM)2122 présent notamment sur ses CD audio. Ce rootkit possède lui-même des failles qui peuvent être exploitées.

Ces affaires ont fait un tort important à Sony, aussi bien pour sa respectabilité que financièrement. Dans plusieurs pays, Sony a été poursuivi en justice et obligé de reprendre les CD contenant un rootkit et de dédommager les clients23.

Voir aussi : [[:en:Sony BMG CD copy protection scandal|Sony BMG CD copy protection scandal]].

Exploitation de la vulnérabilité de LPRng

Le CERTA (Centre d’Expertise Gouvernemental de Réponse et de Traitement des Attaques informatiques) a publié, dans une note d’information, l’analyse d’une attaque ayant permis d’installer un rootkit (non identifié), n’utilisant à l’origine qu’une seule faille (répertoriée CERTA-2000-AVI-08724) qui aurait pu être stoppée soit par la mise-à-jour du système, soit par le blocage d’un port spécifique grâce à un pare-feu25.

Cette attaque a été menée en moins de deux minutes. L’attaquant a identifié la vulnérabilité, puis envoyé une requête spécialement formée sur le port 515 (qui était le port exposé de cette vulnérabilité) pour permettre l’exécution d’un code arbitraire à distance. Ce code, nommé « SEClpd », a permis d’ouvrir un port en écoute (tcp/3879) sur lequel le pirate est venu se connecter pour déposer une archive (nommée rk.tgz, qui contenait un rootkit) avant de la décompresser et de lancer le script d’installation.

Ce script a fermé certains services, installé des [[Cheval_de_Troie_(informatique)|chevaux de Troie]], caché des processus, envoyé un fichier contenant les mots de passe du système par mail, et il a même été jusqu’à corriger la faille qui a été exploitée, afin qu’un autre pirate ne vienne pas prendre le contrôle de la machine.

Prévention

Moyens de détection

La mise en œuvre de la détection peut parfois demander un examen du système ou d’un périphérique suspect en mode « inactif » (démarrage à partir d’un système de secours ou d’un système réputé sain), selon le type de rootkit. Les moyens de détection peuvent être :

Le calcul régulier des empreintes de fichiers sensibles permet de détecter une modification inattendue.
  • contrôle de l’intégrité des fichiers : on cherche à détecter toutes modifications des fichiers sensibles (bibliothèques, commandes systèmes, etc)8 en vérifiant régulièrement leur intégrité, en calculant pour chacun d’eux leur empreinte : toute modification inattendue de cette somme indiquera une modification du fichier et une contamination potentielle. Cela demande cependant une analyse car tout système subit aussi des modifications légitimes (comme lors des mises-à-jour du système) ; idéalement, l’outil de contrôle aura la possibilité d’accéder à une base de référence de ces sommes de contrôles, qui variera donc en fonction du système et des versions utilisées (comme rkhunter, par exemple) ;
  • détection de leur signature spécifique : il s’agit du procédé classique d’analyse de signature, comme cela se fait pour les virus. On cherche à retrouver dans le système la trace d’une infection, soit directement (signature des objets du rootkit), soit par le vecteur d’infection (virus utilisé par le rootkit)8 ;
Le hooking consiste à détourner un appel de fonction légitime par un autre qui contient du code malveillant.
  • analyse des appels systèmes : cette technique consiste à analyser la table des appels système, les tables d’interruption (ou Interrupt Descriptor Table)2627 et de manière générale les tables de travail utilisées par le système par des outils comme HijackThis qui permettent de voir si ces appels sont détournés ou non, par exemple en comparant ce qui est chargé en mémoire avec les données brutes de bas niveau (ce qui est écrit sur le disque) ;
  • analyse des flux réseau anormaux : cette analyse28 permet de détecter une surcharge ou une utilisation de ports logiciels inhabituels qui peut être observée à partir de la contamination de la machine, grâce aux traces issues d’un pare-feu ou grâce à un outil spécialisé. Il est également possible de faire une recherche des ports logiciels ouverts et de la comparer à ce que connaît le système, avec des outils d’investigation comme unhide-tcp. Toute différence peut être considérée comme anormale. Il existe cependant des moyens de dissimulation réseau, comme de la stéganographie ou l’utilisation de canaux cachés, qui rend la détection directe impossible, et seule une analyse statistique peut éventuellement répondre à cette difficulté29 ;
  • analyse des logs système : ce type d’analyse30 automatisée s’appuie sur le principe de corrélation, avec des outils de type HIDS qui disposent de règles paramétrables31 pour distinguer les événements anormaux et mettre en relation des événements systèmes distincts, sans rapport apparent ou différés dans le temps ;
  • analyse de la charge système : une surveillance continue peut mettre en évidence un surcharge, à partir de la contamination de la machine. Il s’agit essentiellement d’une analyse statistique de la charge habituelle d’une machine, comme le nombre de mails sortants ou la charge CPU. Toute modification (en surcharge) sans cause apparente est suspecte, mais cela demandera une analyse complémentaire pour écarter toute cause légitime (mise-à-jour du système, installation de logiciels, etc).
  • recherche d’objets cachés, tels que des processus informatiques, des clés de registre, des fichiers, etc. Des outils comme unhide sous Linux réalisent cette tâche pour les processus. Sous Windows, des outils comme RootkitRevealer recherchent les fichiers cachés en listant les fichiers via l’API normale de Windows puis en comparant cette liste à une lecture physique du disque ; tout fichier caché (à l’exception des fichiers légitimes connus de Windows, tels que les fichiers métadata de NTFS comme $MFT ou $Secure) est alors suspect32.

Moyens de protection et de prévention

Les moyens de détection peuvent également servir à la prévention, même si celle-ci sera toujours postérieure à la contamination. D’autres mesures en amont peuvent limiter l’installation d’un rootkit33 :

  • correction des failles par mise-à-jour de l’OS : cela permet de réduire la surface d’exposition du système en éliminant le temps où une faille est présente sur le système34 et dans les applications30, afin de prévenir les [[Exploit_(informatique)|exploits]] pouvant être utilisés pour la contamination ;
  • utilisation d’un pare-feu : cela fait partie des bonnes pratiques dans le domaine de la sécurité informatique, et se révèle efficace dans le cas des rootkits273034 car cela empêche des communications inattendues (téléchargements de logiciel, dialogue avec un centre de contrôle et de commande d’un botnet, etc.) dont ont besoin les rootkits ;
  • utilisation d’outil de prévention de type HIPS : ces outils30, de type logiciel ou appliance, répondent dès qu’une alerte est suspectée, en bloquant des ports ou en interdisant la communication avec une source (adresse IP) douteuse, ou toute autre action appropriée. La détection sera d’autant meilleure que l’outil utilisé sera externe au système examiné, puisque certains rootkit peuvent atteindre des parties de très bas niveau dans le système, jusqu’au BIOS même. Un des avantages de ces outils est l’automatisation des tâches de surveillance8 ;
  • contrôle d’intégrité des fichiers : des outils spécialisés existent pour remplir cette tâche, et peuvent produire des alertes lors de modifications inattendues. Cependant, ce contrôle à lui seul seul est insuffisant si d’autres mesures préventives ne sont pas mises en œuvre, si aucune réponse du système n’est déclenchée, ou si ces différences ne sont pas analysées. Les HIPS/HIDS, ainsi que certains outils anti-rootkits comme rkhunter peuvent interpréter ces contrôles via une base de sommes de contrôle (pour des versions connues de systèmes d’exploitation) ou par corrélation ;
attaque par force brute

.]]

  • renforcement de la robustesse des mots de passe : il s’agit là encore d’une des bonnes pratiques de sécurité informatique, qui éliminera une des sources principales de contamination. Des éléments d’authentification triviaux sont des portes ouvertes pour tous type d’attaque informatique ;
  • démarrage du système à partir d’une image saine : le démarrage à partir d’une image saine, contrôlée et réputée valide du système d’exploitation, via un support fixe (comme un LiveCD, une clé USB) ou par réseau, permet de s’assurer que les éléments logiciels principaux du système ne sont pas compromis, puisqu’à chaque redémarrage de la machine concernée, une version valide de ces objets est chargée. Un système corrompu serait donc remis en état au redémarrage (sauf dans le cas de rootkit ayant infecté le BIOS, qui ne sera lui pas rechargé automatiquement) ;
  • moyens de protection habituels : {{citation étrangère |lang=en |Do everything so that attacker doesn’t get into your system}}29. Tous les moyens habituels et classiques de protection d’un système informatique sont utiles, tels que [[Durcissement_(informatique)|durcissement du système]]27, filtrages applicatifs (type mod_security), utilisation de programmes antivirus2734 pour minimiser la surface d’attaque et surveiller en permanence les anomalies et tentatives de contamination, sont bien sûr à mettre en œuvre pour éviter la contamination du système et l’exposition aux [[Exploit (informatique)|exploits]].

Windows 10

Microsoft a travaillé pour rendre l’installation de rootkits plus difficile. Leur travail a porté ses fruits, mais être mieux protégé ne signifie pas être totalement protégé, car un malware (Zacinlo) présent à 90%35 sur des machines Windows a réussi à assurer sa persistance grâce à un rootkit.

Outils et programmes de détection

Bien que les rootkits existent depuis un certain temps, l’industrie de la sécurité informatique ne les a pris en compte (en masse) que récemment, les virus puis les chevaux de Troie accaparant l’attention des éditeurs. Il existe cependant quelques programmes de détection et de prévention spécifiques à Windows, tels que Sophos Anti-Rootkit, ou AVG Anti-Rootkit. Sous Linux, on peut citer rkhunter et chkrootkit ; plusieurs projets open-source existent sur Freshmeat et Sourceforge.net.

Aujourd’hui, il reste difficile de trouver des outils spécifiques de lutte contre les rootkits, mais heureusement leur détection et leur prévention sont de plus en plus intégrées dans les HIPS et même dans les anti-virus classiques, lesquels sont de plus en plus obligés de se transformer en suites de sécurité pour faire face à la diversité des menaces ; ils proposent en effet de plus en plus souvent des protections contre les rootkits, comme Avast, AVG 8.0 ou Microsoft Security Essentials.

Liens externes

{{Portage}}