Développement d'exploits

Intermédiaire

RT433

Sommaire

Description

Pendant ce cours, les participants apprendront les langages de programmation et l’écriture de Shellcode. Ils apprendront la structure des programmes et les modèles d’exécution afin de trouver les vulnérabilités et les exploiter dans les programmes et les codes, pour prendre le contrôle des systèmes et des applications cibles.

Ce cours couvre la manière d’écrire des shellcodes, des programmes et des outils, compétences essentielles pour les testeurs d’intrusion avancés et les professionnels de la sécurité logicielle.

Comment réussir au mieux ce cours

Pour réussir ce cours, il vous faudra :

  • Participer à l’ensemble des labos
  • Produire du travail personnel entre les cours
  • Exécuter les exercices, s’auto-former, réaliser les tâches demandées, etc.

Outre une participation active au cours, le participant doit fournir au moins 10h de travail personnel durant la semaine de cours afin d’acquérir une expérience pratique dans les domaines enseignés.
Le participant doit également posséder un ordinateur personnel capable de faire tourner un système virtuel avec une connexion Internet stable (voir ci-dessous pour plus de détails).

Public cible

  • Testeurs de pénétration
  • Professionnels et vendeurs de la sécurité
  • Équipes de recherche

Objectifs

  • Découvrir les différents niveaux de vulnérabilité, y compris les vulnérabilités “zero-day”
  • Comprendre les méthodes d’attaque
  • Infrastructure et défense du système
  • Se familiariser avec l’APT et les attentats qui se sont produits ces dernières années
  • Comprendre les mécanismes de sécurité modernes et comment les pirates informatiques les contournent

Prérequis

  • Acquis effectifs en Analyse Malware

Syllabus

Description

Dans ce module, les participants suivront un cours qui accélérera les capacités de programmation en langage C afin d’acquérir les compétences nécessaires à l’écriture de shellcodes.

Contenu technique

  • Les fondamentaux de la programmation C
    o Variables
    o Entrées et sorties
    o Mots-clés et opérateurs
    o Expressions et déclarations
    o Contrôle du flux
    o Le préprocesseur C
    o Fonctions
    ▪ Raisons d’utiliser les fonctions
    ▪ Structure de base
    ▪ Déclaration de retour
    ▪ Différence entre ANSI-C et “”Traditional C””
    ▪ Classes et champ d’application du stockage d’objets
    ▪ Programmes plus importants
    ▪ Macros
    o Les points de repère
    ▪ Définition et utilisation des pointeurs
    ▪ Les pointeurs comme arguments de fonction : “Appel par valeur”
    ▪ Arrays
    ▪ Fonctions Retour des pointeurs
    ▪ Arrays Multidimensionnels
    ▪ Cordes
    ▪ Arguments de la ligne de commande
    ▪ Pointeurs vers les fonctions
    o Structures de code
    ▪ Syntaxe et opérations
    ▪ typedef
    ▪ Réseau de structures
    ▪ Utilisation avec les fonctions
    ▪ Listes liées
    ▪ union
    ▪ enum
    o Utilisation des bibliothèques C
    ▪ Allocation de mémoire
    ▪ Bibliothèques de mathématiques
    ▪ Variables aléatoires
    ▪ Entrées et sorties
    ▪ Cordes
    ▪ Style général
    ▪ Mise en page
    ▪ Conventions d’appellation

Description

Dans ce module, les participants acquerront l’expérience de l’assemblage du langage machine pour se familiariser avec les codes shellcode et en écrire un par eux-mêmes.

Contenu technique

  • Architecture de processeur x86
    o Comprendre les bus et le trafic de données
    o Table Syscalls
    o Représentation des nombres et des caractères
    o Programmation Assembly x86 de base
    ▪ Sortie standard
    ▪ Registres
    ▪ Variables et réserves
    ▪ Chaîne en Assembly
    ▪ Travailler avec les chiffres
    ▪ Jumps et Flags

Description

Le shellcode est un ensemble d’instructions qui exécute une commande dans un logiciel pour prendre le contrôle ou exploiter une machine compromise. Ce module permettra de comprendre comment le shellcode est construit, pourquoi il est utilisé et comment l’écrire en utilisant des méthodes et techniques conventionnelles.

Contenu technique

  • Informations générales
    o Structure des registres des transformateurs
    o Comprendre le bloc de données supérieur et inférieur
    o Les appels systématiques avec arguments
    o Zéro registre
    o Convention d’appel de Windows
    o Outils Shellcode
    ▪ Gcc et ld
    ▪ Nasm
    ▪ Objdump
    o Trouver l’adresse de la base DLL
    o Trouver l’adresse de la fonction
    o Appeler la fonction
    o Ecrire le Shellcode
    o Tester le Shellcode
    o Shellcodage Linux
    ▪ Chargement des adresses
    ▪ Reproduction d’un Shell
    o Codage de Windows (Shellcoding)
    ▪ Utilisation de la fonction Sleep
    ▪ Message écrit
    ▪ Ajout d’un compte administratif
    o Shellcode imprimable

Labos

Les labos suivants font partie du cours RT433 :

  • Labo 1 C Programmation en C
  • Labo 2 Fonctions en C
  • Labo 3 Macros
  • Labo 4 Attribution de la mémoire
  • Labo 5 Assembly
  • Labo 6 Syscall
  • Labo 7 Flags
  • Labo 8 Outils Shellcode
  • Labo 9 Shellcode Linux
  • Labo 10 Travailler avec les DLL

Etudes de cas réels

Etude de cas #1 (EDA001)
Skype, un service en ligne gratuit qui permet aux utilisateurs de communiquer par la voix, la vidéo et le chat, a été à l'origine d'un bogue qui a permis aux pirates d'exécuter un code malveillant à distance. Ce bogue a fait l'objet d'une fuite puis a été découvert par Skype lui-même ; à la suite de cela, le bogue a été atténué et corrigé. Un groupe de hackers a réussi à reproduire ce bogue dans la nouvelle version, mais tout ce qu'ils ont fourni est un POC.
Reference
Etude de cas #2 (EDA002)
Un groupe de cyberactivistes internationaux a réussi à abuser d'une vulnérabilité dans un serveur FTP ; l'entreprise s'est empressée de régler le problème, mais après des mois de va-et-vient, elle n'a pas pu reproduire les étapes que le cybergroupe a réalisées. L'entreprise a alors lancé un programme de chasse aux bogues, récompensant le premier à fournir un POC fonctionnel.
Reference
Diapositive précédente
Diapositive suivante
RT433

TYPE DE COURS

Le participant peut bénéficier d’un des deux modes de cours :

  • Une classe de cours virtuelle avec des labos avec instructeur et des scénarios exécutés dans notre Cyberium Arena
  • Des cours in situ avec des labos avec instructeur et des scénarios exécutés dans notre Cyberium Arena

Cependant, en raison des restrictions sanitaires, l’ensemble des cours se fait sous la forme de classes virtuelles.

Toutes les sessions sont enregistrées et peuvent être re-visionnées pendant 30 jours.

Tout le matériel de cours  est mis à disposition du participant sous  forme électronique, couvrant les syllabus, les labos, et les études de cas.

Groupe de cours: Offense

NIVEAU
0%
1
HEURES

Entre Pratique et Théorie

Notre approche de la formation est éminemment pratique et vise à permettre au participant d’appliquer dans un contexte pratique les connaissances qu’il acquiert.
Ce cours intègre:

1 %
Pratique
1
Labos
1
Etudes de cas

Certification

Ce cours prépare aux certifications suivantes:

  • SEC760 (SANS)

Équipement requis

Connexion réseau

Comme ce cours est essentiellement fondé sur un Learning Managament System (LMS), incluant une arène pour les labos, les participants ont besoin d’une connexion fiable à Internet.

Apporter votre propre matériel

Le cours étant principalement basé sur la pratique, les participants doivent avoir un ordinateur portable avec :

  • L’audio et la vidéo
  • 8 GB RAM
  • 200 GB d’espace disque
  • La capacité d’un environnement virtuel (capable de faire tourner la dernière version de Virtualbox ou un simulateur de machine virtuelle équivalent)

Et bien sûr un bon kit casque/micro. Plus de détails ici

Inscription