3/25/2017 1:09 AM Recherche de vulnérabilités en environnement Windows 32 bits et divulgation responsable Kostya Kortchinsky Responsable du CERT RENATER.

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Active Directory Windows 2003 Server
Module 5 : Implémentation de l'impression
Chap. 4 Recherche en Table
Gérer son parc hétérogène depuis MOM et SMS avec QMX de Quest Software Laurent CAYATTE Consultant avant-vente Quest Software.
Franck BARBIEU – Romain GARDON
Introduction Pour concrétiser l’enseignement assisté par ordinateur
« 0days » Recherche de vulnérabilités en environnement Windows 32 bits
SSTIC 2004 Gaël Delalleau Zencom Secure Solutions Mesure locale des temps d'exécution : application.
- Couche 4 - Couche transport. Sommaire 1) Caractéristiques de la couche transport 2) Les protocoles TCP & UDP 3) Méthode de connexion TCP.
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Exposé de Système - Informatique et Réseau
Module 6 : Gestion et analyse du système DNS
Module 7 : Résolution de noms NetBIOS à l'aide du service WINS
Les risques Mascarade d'identité & Rebonds
FORMATION OUTILS « FONCTIONS »
simulateur de réseau de machines UML connectées par WiFi mode ad-hoc
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
La configuration Apache 2.2 Lhébergement virtuel.
Un peu de sécurité Modal Web Modal Baptiste DESPREZ
Common Gateway Interface
Appel d’offres DAFPEN ac-montpellier
Active Directory Windows 2003 Server
Cycle de vie d’une vulnérabilité
CPI/BTS 2 Programmation Web Introduction au PHP
Etude des Technologies du Web services
SECURITE DU SYSTEME D’INFORMATION (SSI)
Aide-mémoire – FORMULAIRE Web DA/DT
Le langage ASP Les variables d'environnement HTTP avec Request.
Amélioration de la sécurité des données à l'aide de SQL Server 2005
ECF 5 PRESENTATION « BULLE APPLICATIVE »
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
TRANSMISSION DES DONNEES.
Le codage des nombres en informatique
Les Algorithmes Cryptographiques Symétriques
FICHIERS : Définition : Algorithme général:
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Détection d’intrusions
Module 2 : Préparation de l'analyse des performances du serveur
Module 4 : Maintenance des pilotes de périphériques
Institut Supérieur des Etudes Technologiques de Djerba Exposé du Traitement de Données Réalisé par: Khalifa Marwa Magroun Amira Jawadi Souad L2MDW.
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Novembre – Décembre 2005 Version Conclusion État de lart de la sécurité informatique Auteurs : Stéphan GUIDARINI – Consultant Senior Sébastien DESSE.
Vue d'ensemble Configuration d'adresses IP
Module 8 : Surveillance des performances de SQL Server
PHP 5° PARTIE : LES COOKIES
Advisor Advanced IP Présentation Télémaintenance Télésurveillance.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
Programmation Système et Réseau
Répartition des adresses IP
QRA, partie II: gestion des données Trousse de formation 2: le suivi de l'abus des drogues: politiques et pratiques.
2008/ Plan du cours 1.Introduction –Contenu du cours 2.Logique mathématique –Calcul propositionnel –Calcul des prédicats –Logique floue et aide à.
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Contact Sécurité du ROC français R. Rumler.
MOCK.
Publication Bulletin de sécurité hors cycle MS Révision Bulletin de sécurité MS
Réalisé par : Grégory CORDIER Promotion : RIE03 UE : Management Social & Humain Réalisé par : Grégory CORDIER Promotion : RIE03 UE : Management Social.
Introduction à PHP TOURNADRE Guillaume - Informatique Réseaux URL :
COMPARAISON DES SYSTEMES DE GESTION DE FICHIERS LINUX / WINDOWS NT
Module 2 : Planification de l'installation de SQL Server
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Gestion et traitement des demandes de service
Chapitre 4 La représentation des nombres.
Table Ronde Bulletins de Sécurité MS Bulletin de sécurité hors cycle.
PROCESSUS D’AUDIT PLANIFICATION DES AUDITS
9 février 2010 Enrique Ruiz Mateos Architecte avant-vente Microsoft
IFT 703 Informatique cognitive ACT-R Modèle symbolique et perceptuel
PRÉSENTATION AGL LES TESTS LOGICIELS LES TEST LOGICIELS 1 Mickael BETTINELLI Brandon OZIOL Gaétan PHILIPPE Simon LUAIRE.
Chapitre8 Configuration de l'adressage TCP/IP et de la résolution de noms Module S41.
Chapitre 12 Surveillance des ressources et des performances Module S41.
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

3/25/2017 1:09 AM Recherche de vulnérabilités en environnement Windows 32 bits et divulgation responsable Kostya Kortchinsky Responsable du CERT RENATER kostya.kortchinsky@renater.fr © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

« 0days » Définition Chiffres Vulnérabilité pour laquelle il n’existe pas de correctif Outil d’exploitation (« exploit ») d’une telle vulnérabilité Chiffres Une vingtaine de « bons » 0days en circulation dans les milieux alternatifs Une valeur financière tournant autour de 3000 dollars et pouvant atteindre beaucoup plus ! Un temps de recherche d’une dizaine de jours pour trouver une faille exploitable dans Windows

Historique Vulnérabilités précédemment découvertes MS04-042 : Vulnerability in DHCP Could Allow Remote Code Execution and Denial of Service Logging Vulnerability - CAN-2004-0899 DHCP Request Vulnerability - CAN-2004-0900 MS04-045 : Vulnerability in WINS Could Allow Remote Code Execution Name Validation Vulnerability - CAN-2004-0567 Association Context Vulnerability - CAN-2004-1080 MS05-010 : Vulnerability in the License Logging Service Could Allow Code Execution License Logging Service Vulnerability - CAN-2005-0050 MS05-017 : Vulnerability in Message Queuing Could Allow Code Execution Message Queuing Vulnerability - CAN-2005-0059 Plusieurs à venir prochainement …

MS04-045 : WINS (1/2) (Vie publique) Avis Immunity, Inc. INSTANTANEA (1) Avis Microsoft MS04-045 (2) Exploit public K-Otik (3) Signature Snort (4) (1) : http://www.immunitysec.com/downloads/instantanea.pdf (2) : http://www.microsoft.com/technet/security/Bulletin/MS04-045.mspx (3) : http://www.frsirt.com/exploits/20041231.ZUC-WINShit.c.php (4) : http://www.snort.org/pub-bin/sigs.cgi?sid=3017

MS04-045 : WINS (2/2) (Vie privée) Premières rumeurs d’une vulnérabilité WINS, analyse du binaire dans la foulée Fin mai 2004 Soumissions des vulnérabilités au MSRC Name Validation Vulnerability (CAN-2004-0567) : 9 juin 2004 Toujours pas d’exploit public à ce jour Context Association Vulnerability (CAN-2004-1080) : 16 juin 2004 Implémentation d’un exploit fiable Fin juin 2004 Publication du correctif 14 décembre 2004 Durée de vie du 0day 6 mois (c’est le minimum)

Introduction Trouver un 0day est l’objectif de bon nombre de chercheurs en sécurité Et de pirates aussi … Comment ? En l’achetant, en l’échangeant En le capturant Pots de miel (j’attends toujours) Investigations « forensiques » En le découvrant ( Objet de la suite de la présentation) Pourquoi ? Pour s’introduire dans un système à jour Pour la renommée, la publicité En le publiant (de façon responsable, ou pas) Pour le bien de l’humanité ?

Trousse à outils Désassembleur Débogueur Analyseur réseau L’indispensable IDA Pro de Datarescue (et son SDK) Débogueur IDA Pro ou OllyDbg pour le ring3 SoftIce ou WinDbg pour le ring0 Analyseur réseau Ethereal et ses nombreux dissecteurs de protocoles Outil de virtualisation de systèmes VMware Workstation pour un réseau de test complet Aide à l’analyse Symboles de déboguage Microsoft Le Platform SDK Windows de Microsoft

Méthodes Fuzzing Analyse statique Analyse différentielle Trace d’exécution Analyse d’exécution

Fuzzing (1/3) Soumission de requêtes et de paramètres illégitimes à une application afin d’en étudier le comportement dans une situation non prévue par ses concepteurs Le procédé peut être manuel ou complètement automatisé Les moyens incluent L’utilisation de clients ou d’API existants Le re-jeu de paquets capturés et modifiés L’implémentation de clients personnalisés

Fuzzing (2/3) Clients et API existants Clients personnalisés Probable rejet ou modification des entrées invalides Moyen simple de capturer, analyser et construire des requêtes Peu ou pas de connaissances du protocole requises Clients personnalisés A partir de trames légitimes A partir de « frameworks » SPIKE par David Aitel, en C IOActive Peach par Michael Eddington, en Python Connaissances du protocole nécessaires

Fuzzing (3/3) Application possible aux formats de fichiers Modification de champs d’un fichier existant Génération de fichiers invalides Ce qu’il faut surveiller Crash de l’application Déni de service, exécution de code arbitraire ? Fuite d’information Nécessite un analyseur réseau Génération d’exceptions Nécessite un débogueur

Analyse statique (1/4) Désassemblage et audit du code d’un binaire, afin d’y rechercher Les appels à des fonctions potentiellement vulnérables Les agencements de code à risques Ne nécessite pas nécessairement l’exécution du binaire Couvre la totalité des fonctionnalités, connues ou non Possibilité d’automatiser une partie de la recherche La majorité du travail reste manuelle Compétences nécessaires très pointues

Analyse statique (2/4) Fonctions potentiellement vulnérables (exemples) strcpy, wcscpy (MS03-001 : Locator Service) strcat, wcscat (MS05-010 : License Logging Service) sprintf, swprintf (MS05-017 : MSMQ) vsprintf, vswprintf (MS04-011 : LSASS) memcpy, wmemcpy (MS04-045 : WINS) lstrcpyA, lstrcpyW (MS04-022 : Task Scheduler) CharToOemA (MS04-034 : Compressed Folders) Vulnérabilités de type Débordement de tampon Formatage de chaîne de caractères

MS04-044 : ZipFldr Détails L’attaquant contrôle les données en arg_0 La fonction CharToOemA ne vérifie pas la taille des buffers Le buffer destination fait 264 octets, est situé dans la pile La prise de contrôle de EIP est immédiate

MS04-010 : LlsSrv Détails L’attaquant contrôle le contenu de arg_0 et arg_4 Les buffers destinations des fonctions lstrcpyW et lstrcatW font 1024 octets, sont situés dans la section data du binaire Le débordement ne permet pas la prise de contrôle directe du flux d’exécution, mais une ruse supplémentaire, oui 

MS05-017 : MqSvc Détails L’attaquant contrôle la chaîne de caractères en arg_0 Le buffer destination de la fonction swprintf fait 300 octets, est situé dans la pile L’alignement du buffer dépend de la longueur du nom NETBIOS de la machine hébergeant le service

Analyse statique (3/4) Fonctions de « parsing » spécifiques Copies de chaînes de caractères personnalisées MS03-036 : MsgSvc Vulnérabilités plus pointues Débordement d’entiers et « wraps » A surveiller : LocalAlloc, GlobalAlloc, RtlAllocateHeap « Off-by-one » Conversion de signes, comparaisons signées ou non Vulnérabilités combinées complexes MS05-010 : LlsSrv

MS03-036 : MsgSvc Détails L’attaquant contrôle le buffer source, dans lequel tout caractère 0x14 est remplacé par deux caractères 0xd et 0xa Le buffer destination n’est cependant pas d’une taille suffisante Cela résulte en un débordement sur le tas

Analyse statique (4/4) Une automatisation partielle du procédé est possible grâce à des plugins IDA Tentative d’évaluation de la longueur des paramètres des fonctions sensibles Détermination de la taille des allocations mémoire Détection des boucles de copie personnalisée Localisation de boucles dans le code La méthode a ses limitations Qualité du désassemblage Appels dynamiques à des fonctions en C++ ou Delphi Complexité des structures et formats de données IDL

Analyse différentielle (1/3) Identification d’une vulnérabilité suite à la publication d’un correctif Les détails d’une vulnérabilité corrigée peuvent ne pas être communiqués MS05-017 : MqSvc Un éditeur peut être tenté de corriger des failles silencieusement MS04-007 : ASN.1 (Kill Bill) Une comparaison manuelle serait un travail titanesque Automatisation de l’analyse et visualisation des différences grâce à des graphes BinDiff de Sabre Security

Analyse différentielle (2/3) Diffie par Kostya Kortchinsky

Analyse différentielle (3/3) Diffie Plugin pour IDA Pro 4.8 pour processeur « MetaPC » Analyse différentielle de deux binaires Analyse de fonctions par blocs Génération de signatures type CRC32 pour chaque bloc et pour chaque fonction Mise en correspondance des fonctions des deux binaires Mise en évidence des fonctions modifiées Visualisation des différences grâce aux graphes des fonctions Algorithme de mise en correspondance Nom des fonctions Signatures Position dans le binaire Arbre d’appels aux fonctions

Trace d’exécution Surveiller les appels à des fonctions potentiellement vulnérables au cours de l’exécution d’un binaire Moyen rapide mais superficiel de savoir ce qu’il se trame Déterminer l’emplacement en mémoire des différents paramètres Pile, tas, section du binaire ? Évaluer la possibilité d’influer sur ces derniers Utilisation de (dum(b)ug) ltrace Personnalisation des fonctions à surveiller Possibilité d’inspecter les paramètres avant et après l’appel Résolution des emplacements des buffers en mémoire

Analyse d’exécution (1/2) Attacher un débogueur à un binaire en cours d’exécution afin d’observer son fonctionnement Suivi de l’exécution du binaire en fonction du code ou des données Mettre des points d’arrêt sur les fonctions à surveiller Vérifier les arguments Suivre les modifications apportées aux données dès leur réception par l’application auditée Trouver une vulnérabilité dans le traitement apporté Indispensable à l’implémentation d’un exploit fiable Examiner l’état des registres, de la mémoire Travail manuel et laborieux

Analyse d’exécution (2/2) EIP = 0x43434343, c’est mauvais signe …

Ring 0 Le mode noyau de Windows est un domaine encore peu exploré Il recèle pourtant bien des trésors Vulnérabilités du noyau Vulnérabilités des drivers systèmes MS05-011 : MrxSmb Antivirus et pare-feu fonctionnent généralement grâce à des drivers systèmes Débogage Ring 0 possible avec WinDbg et VMware L’audit des drivers de matériels laisse entrevoir des possibilités séduisantes

« Disclosure » Il existe plusieurs façons de divulguer des failles, aux conséquences variables Vulnerability Sharing Clubs Clubs privés aux frais d’adhésion relativement chers dans lesquels circulent des informations concernant les derniers « 0days » Responsible disclosure Principe de divulgation responsable qui consiste à ne transmettre l’information qu’au seul éditeur ou constructeur, jusqu’à la mise à disposition du correctif Full disclosure Publication sans restrictions des détails concernant la vulnérabilité, que l’éditeur soit au courant, ou pas

Microsoft Security Response Center (MSRC) Il s’agit du service de Microsoft chargé de la gestion et de la résolution des vulnérabilités et incidents de sécurité Réception et tri des rapports de vulnérabilité Développement et test des correctifs Création des bulletins de sécurité Publication et envoi des avis Le MSRC est joignable à l’adresse secure@microsoft.com Une première réponse arrive généralement dans les 2 ou 3 jours ouvrables suivant l’envoi du rapport

Conclusion Il existe de nombreux moyens d’auditer des binaires Windows 32 bits Pour des résultats superficiels, mais rapides, il faudra préférer des méthodes automatisées Pour une analyse en profondeur, des méthodes manuelles devront être appliquées Les 0days ne sont pas un mythe La fenêtre de vulnérabilité est de l’ordre de plusieurs mois Il ne faut pas se fier qu’aux correctifs, il est alors déjà trop tard Les IDS n’y peuvent pas grand-chose Le moyen le plus simple pour s’en procurer est encore de les trouver soi-même

Littérature Dave Aitel – 0days Dave Aitel – TC0 FX – Bugs How hacking really works Dave Aitel – TC0 Microsoft Windows, a lower Total Cost of Ownership FX – Bugs Vulnerability finding methods in Windows 32 environments compared Ben Nagi – Zero Day Vulnerability Research, Disclosure and Ethics Barnaby Jack – Remote Windows Kernel Exploitation Step into the Ring 0

Questions ? Remerciements : Dave, Halvar, Gera, Security Labs, Team Rstack, Sécurité.org, Microsoft

Microsoft France 18, avenue du Québec 91 957 Courtaboeuf Cedex 3/25/2017 1:09 AM Microsoft France 18, avenue du Québec 91 957 Courtaboeuf Cedex www.microsoft.com/france 0 825 827 829 msfrance@microsoft.com © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.