Como generar un patron sin metasploit

bo

patron semi-manual en python

Te Estás preguntando cómo crear un patrón cíclico para buffer overflows sin usar Metasploit (o sin pattern_create.rb mejor dicho). Aquí te explicare como. Si aun no sabes como hacerlo de forma básica con Metasploit es recomendable iniciar la sección de buffer overflow desde 0 o leer este articulo de offset dando click aquí

Un patrón cíclico es una cadena de caracteres única y predecible que se usa para:

  • Llenar un buffer

  • Provocar el crash

  • Luego encontrar exactamente cuántos bytes hasta donde sobrescribes el EIP (o RIP)

  • Cada combinación de 4 bytes es única

Cómo crear uno manualmente? :

Puedes hacer un generador sencillo en Python.

def generate_cyclic(length):
    pattern = ""
    charset1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    charset2 = "abcdefghijklmnopqrstuvwxyz"
    charset3 = "0123456789"

    for ch1 in charset1:
        for ch2 in charset2:
            for ch3 in charset3:
                if len(pattern) < length:
                    pattern += ch1 + ch2 + ch3
                else:
                    return pattern
    return pattern

# Ejemplo de uso:
length = 600  # o el número que quieras
cyclic_pattern = generate_cyclic(length)
print(cyclic_pattern)

El script usa 3 sets de caracteres (ABC, abc, 123) y genera combinaciones únicas con todos ellos, repitiéndolo hasta el tamaño que definas

  • Ejecutas el script para generar, por ejemplo, 600 caracteres.

  • Copias el patrón.

  • Lo envías como payload al programa vulnerable.

  • El programa crashea.

  • Tomas el valor que cayó en EIP (por ejemplo 37694136).

  • Buscas dónde cae ese valor en tu patrón y sigues la explotación del BOF (buffer over flow)

Patrón manual

Si eres Haxor de verdad No necesitas scripts en Python ajenos si quieres hacerlo manual. La idea es juntar letras mayúsculas + minúsculas + números siguiendo un orden lógico.

Ejemplo:

Aa0
Aa1
Aa2
...
Ab0
Ab1
Ab2
...
Ac0
Ac1
Ac2
...
Ba0
Ba1
...

Cada grupo de 3 caracteres es único.

Así que a mano, podrías ir escribiendo:

Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5 etc..
  • La primera letra (mayúscula) va cambiando cada cierto tiempo.

  • La segunda letra (minúscula) cambia más rápido.

  • La tercera posición (número) es la que más cambia.

  • Empieza con A, a, 0.

  • Luego A, a, 1.

  • Hasta A, a, 9.

  • Luego A, b, 0, y así...

Así puedes crear tu patrón a mano en un bloc de notas si quieres, copiando y pegando o incluso armar tu propio script sabiendo la lógica

Last updated