6.15.2019

Script en Python para detectar Badchars - Find Badchars (Buffer Overflow)

Este script fue realizado junto a @RizelTane, debido a que en mi momento de locura quise automatizar el proceso de detección de badchars, con el fin de estar seguro que la identificación era correcta, considerando ello se tuvo este pequeño, el cual fue adicionado a #Bashert para automatizar un poco el trabajo de la certificación.


Evidentemente esto es posible hacerlo desde Inmmunity Debugger con apoyo de Mona, pero quise tener algo a mano y estar seguro que funcione, ya que para ese entonces en el primer intento que tuve andaba nervioso, por que nunca antes toque un BoF como el de la certificación (aprendí a realizarlo), después de andar practicando todo el flujo es sumamente sencillo y entendible que por cierto en el blog contamos con una serie de entradas en proceso donde se explica un Stack Buffer Overflow, la cual si te animas a dar el OSCP puedes tomarlo como referencia.

Archivo.in y badchars_all

El script hace uso de dos ficheros los cuales son archivo.in y badchars_all realizando una comparativa para determinar cuales son los caracteres malos.


Fichero archivo.in

Es el resultado que tenemos de Immunity cuando enviamos el payload con el listado de los badchars y tenemos el output, el cual lo debemos de pasar al fichero para realizar la detección de los caracteres malos.

Este fichero es el output que obtenemos cuando se envía al servicio vulnerable, tenemos que ir iterando y verificando la salida, con el script continuamente.

Fichero badchars_all



El fichero badchars_all es el segundo que es usado por el script, este no es necesario realizar ninguna modificación, como veran lleva los badchars que realizaremos la comparación para determinar cuales no deben de ingresar en nuestra shellcode.


Ejecución de find_badchars.py

Para la ejecución del script necesitamos contar con Python3 y coloroma tenemos el resultado de la comparativa que realiza el script.


Vale aclarar que necesitamos realizar las corridas necesarias para identificar todos los badchars, ya que el script tiene puntos a mejorar y realizar la tarea mas limpia, pero por ahora esto fue lo que utilice para la certificación  en próximas entradas veremos, la detección de Badchars desde el mismo Inmmunity y avanzaremos con la serie de entradas.
Sigo trabajando para intentar aprender, para intentar hacer lo que no sé. Detesto repetir cosas que ya he hecho. - Eduardo Chillida.

Regards,
Snifer
Compartir:

6.11.2019

GTFOBins y LOLBAS - Binarios en Windows y Linux para post Explotación

Las dos páginas que compartimos hoy en el blog hacen referencia a aquellas "utilidades" en entornos Windows y Linux que pueden ser usadas de manera arbitraria, es decir no siguiendo el flujo que fueron concebidas seguro ya vieron mas de una vez el uso de Certutil.exe o bien whois por mencionar algunos para descarga de ficheros.



El primero es GTFOBins, que tiene una lista de binarios de Unix para ser utilizada es una lista actualizada de binarios de Unix que un atacante puede explotar para evitar las restricciones que tenga nuestro objetivo.


Lolbas es su semejante pero para Windows en este repositorio tenemos el uso para ejecutar, compilar descargar con ejecutables propios del sistema operativo lo interesante de este sitio es que tenemos en la descripción en que sistema operativo se encuentra disponible el binario.




Como veran son dos paginas de referencia,  cuando realizamos un proceso de pentesting, conoces sitios que tienen la misma funcionalidad o recopilación?

Intentar, intentar, intentar y seguir intentando es la regla que debe seguir para convertirse en un experto en cualquier cosa. - William Clemente Stone

Regards,
Snifer
Compartir:

6.07.2019

CFP 8.8 Bolivia - Envia tu investigación, Proyecto

El 13 y 14  de Septiembre se tendrá nuevamente el evento de Seguridad Informática 8.8 Bolivia en la ciudad de La Paz.



Este evento es realizado en Bolivia, Chile, Perú, México el CFP Call for Papers fue lanzado hace 1 mes y algo, algo tarde?.

La invitación esta abierta, si tienes un trabajo de investigación, alguna herramienta, proyecto que quieras compartir con la comunidad en Bolivia, o si te encuentras en algún país vecino, envía tu propuesta de Charla. 


Según indican por Twitter debe de enviarse la propuesta al mail.



Uno debe de vez en cuando intentar cosas que están más allá de su capacidad. - Auguste Renoir

Regards,
Snifer
Compartir:

5.31.2019

OSCP Certified! - Se logro la meta!!!

Uffff vuelvo a escribir después de mucho tiempo lo se, pero hoy recibí el mail en el que me confirman que soy OSCP.




El Sabado 25 de Mayo empece las 24 horas de "Try Harder", en el cual logre realizar el examen, para posteriormente documentar teniendo un tiempo de 24 horas y mandar el reporte,  estos días estuve pendiente, ansioso esperando recibir este correo.



Ese mensaje que soñé desde el 2015 certificarme como OSCP, tuve algunas caídas y en cada una de ellas tuve que levantarme y seguir adelante, luchar contra lo bueno, y lo malo que me trajo la vida, pensando en lo que se lucho para esta certificación hace que sonría y mire al futuro. Ahora que? Continuar con el aprendizaje ir mejorando y lo que mas me gusta hacer, compartir lo poco que se con la comunidad, las entradas volverán al blog, el Podcast como es costumbre tendremos una entrada con el Review de la certificación.



El cambio y volver a lo esencial tuvo su motivo... #BackToRoot!


Solo me queda dar gracias, a mi familia que siempre estuvo apoyándome sin perder la fe en mi incluso cuando la perdí y a Dios por permitirme hacerlo, sin dejar de lado a los amigos que no los mencionó por no olvidarme de ninguno.


Recuerda tu rompecabezas no le sobran piezas para ser feliz...

Regards,
Snifer
Compartir:

3.20.2019

Exploiting 101: Que son los Badchars? Generando Badchars desde Python y Mona

Hoy estaremos con los badchars, teniendo una breve introducción de que son y como generarlos, desde Python y con Inmmunity Debugger utlizando el script !mona, si deseas instalar la herramienta y lo que necesitaremos posteriormente puedes ver la entrada anterior Montando un entorno para iniciar en el Exploiting


¿Que son los Badchars?


Los badchars son caracteres inválidos o “malos” los cuales el programa a explotar no los acepta, por lo consiguiente el atacante cuando genere su shellcode la misma no sirve, ya que estos caracteres no fueron identificados y hace que el programa se rompa. Tranquilo al final de la entrada tenemos un breve ejemplo.
Puedes tener el listado de los badchars a mano en un fichero de texto y listo nos olvidamos de los mismos, tambien podemos generarlos y tener a nuestro disposición con un par de comandos desde el mismo Inmunity Debugger con !mona o desde Python ambos lo veremos a continuación.

Listado de Badchars


Un punto a considerar es que el 0 - Null no es utilizado ya que este llegar a ser un badchar de cajon "\x00" en todas las pruebas que estuve realizando en ninguna fue un valor admitido.

badchars = ("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f\x40"
"\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff")

Generando Badchars desde Inmunity con Mona


Tenemos como primera opción utilizar Mona desde Inmunity para que nos genere todos los badchars que necesitamos para el proceso en el cual posteriormente podemos realizar la detección de los mismos este proceso se explicara en la siguiente entrada totalmente aparte para luego realizar el proceso completo en una sola entrada.

Para tener los badchars nos dirigimos a la parte inferior de Inmunity y ejecutamos:

!mona bytearray

Badchars desde Mona (Inmmunity Debugger)

El resultado del comando tras ser ejecutado es el siguiente, si no configuramos previamente donde queremos que se almacene el log lo tendremos en el mismo directorio donde se encuentra Inmunity Instalado.

================================================================================
  Output generated by mona.py v2.0, rev 583 - Immunity Debugger
  Corelan Team - https://www.corelan.be
================================================================================
  OS : 7, release 6.1.7601
  Process being debugged : SLmail (pid 340)
  Current mona arguments: bytearray
================================================================================
  2019-03-04 09:04:37
================================================================================
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"

Generando Badchars desde Python


Desde python tambien llegamos a generar los badchars permitiendonos tenerlo a mano y desde la terminal de manera rápida.

import sys
for x in range(0,256):
        sys.stdout.write ("\\x" + '{:02x}'.format(x))

El resultado al ejecutar desde python es el siguiente:

Obteniendo Badchars desde Python

Breve Ejemplo.


Mandamos un array con todos los badchars y en inmmunity en el Stack tenemos la siguiente secuencia.

 Como un breve ejemplo enviamos lo siguiente:

\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\



Identificamos que se tiene 01 02 03 04 05 06 07 08 09 29

El que deberia de seguir en dicha secuencia es 0a pero como no lo tenemos presente este llega  a ser nuestro primer badchar (valor no aceptado) retiramos  del array y se vuelve a enviar.


Este proceso llega a ser un poco moroso para la creación de exploits si fallas en identificar es muy probable que no llegues a obtener el resultado esperado, al decir moroso me refiero cuando uno esta empezado a dar sus primeros pinos hay maneras rápidas de identificar por ejemplo con ayuda de !mona o scripts externos, pero las entradas el objetivo inicial es aprender a mano y luego explicar la automatización.

En proximas entradas iremos ya con la parte práctica, alguna duda en los comentarios.

Es difícil mostrarte confiable cuando la gente tiene que esperarte. - Wes Fessler

Regards,
Snifer
Compartir: