GDB orientado a Pentesting – Parte 3

Continuamos con esta serie de artículos sobre depuración de programas orientados al pentesting y la ingeniería inversa. En los artículos anteriores de esta serie GDB orientado a Pentesting vimos cómo podíamos depurar simples programas hechos en C que contenían sus símbolos de depuración, lo cual facilita mucho la depuración, así como programas que no incluyen estos símbolos, algo bastante más habitual cuando estamos realizando una tarea de pentesting o reverse engineering.

Si no has leído esos artículos, antes de leer este te aconsejo que le eches un vistazo. Los podrás encontrar en los siguientes enlaces:

GDB orientado a Pentesting – Parte 1

GDB orientado a Pentesting – Parte 2

En esta ocasión vamos a ver cómo podríamos “crackear” un simple programa desarrollado en C. El programa es muy simple; se le pasa como argumento un código, si es correcto mostraré un mensaje diciendo que el código secreto es correcto, en caso contrario indicaré que es erróneo.

Aquí podemos plantear dos opciones; hacer un simple “bypass” del programa, para que introduciendo cualquier cosa obtengamos el mensaje correcto, o intentar localizar el registro donde se almacena temporalmente el código correcto con el que compará lo que nosotros hayamos introducido como argumento.

En esta tercera parte de la serie haremos un bypass, de forma que da igual el valor que introduzcamos, siempre pasaremos con éxito la autenticación. El programa lo he llamado codigoSecreto y su sintaxis es la siguiente:

./codigoSecreto 123456

GDB orientado a Pentesting

Podemos observar que con los distintos código, al ser incorrectos, obtenemos el mensaje correspondiente de error.

Veamos esto mismo pero ya con nuestro GDB depurando el programa.

GDB orientado a Pentesting

Read more

Cursos de Hacking Ético

Ante las diversas peticiones que nos han llegado interesándose por saber cuando comienzan las nuevas ediciones de nuestros Cursos de Hacking Ético tanto de Sistemas y Redes como de WiFi, vamos a lanzar el próximo 29 de Junio nuevas ediciones.

Podéis consultar las fichas técnicas aquí o si lo preferís a continuación las listamos:

Hacking Ético de Sistemas y Redes – Básico

Hacking Ético de Sistemas y Redes – Avanzado

Hacking Ético Wifi – Medio

 

Podéis gestionar la inscripción hasta el día 26 de Junio, inclusive. Estos cursos tienen un precio unitario de 220€ no existiendo descuentos actualmente debido a lo ajustado del precio.

folleto_publi1

Os esperamos!

 

Creando un túnel SSH con Nessus

Muchas veces a la hora de hacer una auditoría externa y tener algún sistema de protección exterior (Firewall, IDS…), se nos habilitan diferentes mecanismos para poder acceder dentro de la red que queremos auditar sin que su seguridad exterior se vea comprometida. Es muy común habilitar un túnel SSH para acceder al interior de la red local.

notaLegal

Hoy vamos a ver cómo aprovechar ese túnel para correr Nessus como si estuviéramos ubicados dentro de la red. Como sabéis, la versión gratuita de Nessus tan sólo nos permite escaneos a direcciones IP locales, sin embargo mediante el túnel vamos a conseguir utilizar esta herramienta frente a una IP pública, como si estuviéramos dentro de la red a auditar aún estando fuera de la misma.

Vamos a utilizar para ello un túnel SSH y la herramienta Proxychains de la cual tenéis un artículo en el blog sobre cómo trabajar con ella y Tor.

http://hacking-etico.com/2013/08/27/anonimato-con-tor-y-proxychains/

En el siguiente diagrama vemos el entorno en el cual vamos a trabajar:

tunel

La idea es crear un túnel SSH y haciendo uso de Proxychains reenviaremos todas las peticiones de nuestro PC (Nodo A) a través del túnel, de tal forma que Nessus va a pensar que está corriendo el scanner en la máquina intermedia (Nodo B) que sí está en la misma red del servidor a auditar (Nodo C). Los pasos a seguir son los siguientes:

Creación del túnel SSH con el nodo B.

Para crear el túnel previamente tenemos que tener habilitado en el nodo B el servicio SSH con nuestro usuario correspondiente y una regla en el Firewall que permita las peticiones desde exterior hacia la máquina B (natearemos el puerto 22 mediante Port Fowarding a la máquina B).

Con todo preparado pondremos a la escucha un puerto en la máquina local A, de tal forma que todo lo que se envíe a ese puerto se reenviará a través del túnel que crearemos contra la máquina B. Usaremos el siguiente comando:

sudo ssh –p 22 –N –D 8081 user@direccionIP_B

Read more

GDB orientado a Pentesting – Parte 2

Continuamos con la segunda parte de esta serie de artículos sobre cómo usar GDB orientado a Pentesting. Tal y como vimos en el GDB orientado a Pentesting – Parte 1 de esta serie,

GDB es un depurador que podemos utilizar para distintas tareas de las cuales las que nos interesan desde el punto de vista del pentesting son aquellas orientadas al análisis de un programa en tiempo de ejecución, de forma que podamos controlar el flujo del programa, así como consultar o modificar valores de variables y registros durante la ejecución del mismo.

En artículo anterior, que nos sirvió de introducción, vimos cómo podemos analizar un programa que ha sido compilado con gcc incluyendo sus símbolos de depuración. En esta ocasión vamos a ver cómo podríamos depurar un programa que no incluye los símbolos de depuración, un escenario mucho más real, ya que cuando tengamos que analizar un programa o una App móvil, no incluirá estos símbolos, lo que dificultará de alguna forma su análisis.

En esta ocasión, siguiendo con ejemplos básico de programas en C, vamos a utilizar uno muy sencillo que realiza la suma de dos números, que el usuario introduce durante le ejecución del programa. Este programa, llamado sumaNumeros, básicamente funciona así:

GDB orientado a Pentesting - Parte 2

¿Fácil, verdad? Introducimos dos sumandos, y el programa nos muestra el resultado de sumarlos. Pero claro, aquí no estamos para jugar a las matemáticas, nuestra intención podría ser, por ejemplo, modificar los valores de los sumandos o el resultado final de la suma. Pasemos a depurar nuestro programa con GDB.

gdb ./sumaNumeros

En primer lugar, prestamos atención al mensaje de GDB cuando se ejecuta, y es que al no haber compilado este programa con la opción –ggdb del compilador gcc, los símbolos de depuración no están disponibles.

GDB orientado a Pentesting - Parte 2

Read more

Usando OTP en WordPress y Gmail

Hoy retomo la publicación en el blog con un tema sobre contraseñas. Como sabéis, usamos contraseñas para todo, y es que los servicios Web como correo, redes sociales o banca online, así nos lo exigen. Por ello, el uso de contraseñas está muy masificado. Usamos contraseñas para todo. Menos seguras de lo que creemos pero se utiliza ese método que impide que cualquiera pueda entrar libremente a tus servicios de redes sociales, de banca, portales Web, equipos, etcétera…

No obstante, hay una falsa creencia de que usar contraseñas sean como sean, es estar seguros.

Evidentemente este pensamiento es erróneo y ocasiona muchos problemas de confidencialidad, suplantación de identidad, etcétera… Puestos en la piel del “pasota”, como me encuentro muy a menudo podríamos pensar “Es que nadie tiene que entrar en mi cuenta…” toma ya. Esto no es una ocurrencia mía para complementar el artículo sino que son palabras textuales que me han dicho en persona. Claro, y nadie tiene que robar coches, ni casas, ni negocios ni nada y sin embargo pasa. Pongamos la cosa difícil y al menos, cuando vean las dificultades, la tomen con otro ¿no?. Probemos pues  “Usando OTP en WordPress y Gmail”

2factor copia  Read more

GDB orientado a Pentesting – Parte 1

Introducción a GDB orientado a Pentesting

GDB o GNU Debugger es el depurador escrito por Richard Stallman en 1986 y utilizado en plataformas Unix. Es software libre y está distribuido bajo la licencia GPL.

Aunque se utiliza para depurar programas y trazar posibles errores en tiempo de ejecución, su potencial y características hacen que sea una herramienta muy utilizada para pentesters y expertos en ingeniería inversa.

Es por este motivo por el que desde hacking-etico.com nos hemos decidido a crear una pequeña serie de artículos dedicados a cómo usar esta poderosa herramienta en nuestros trabajos de pentesting que hemos titulado “GDB orientado al Pentesting“.

Con GDB podremos controlar el flujo de un programa, ingeniería inversa o hacer un análisis en tiempo real, también aplicable por ejemplo a entornos iOS del que también tenemos una serie de artículos, y complementaremos precisamente con análisis en tiempo real de una App de iOS.

Pero para poder llegar a ese punto, tenemos que empezar por lo básico, así que en este primer artículo de la serie, empezaremos a ver conceptos básicos de GDB.

Ejemplos prácticos – Binario con símbolos de depuración

Para nuestros ejemplos prácticos nos basaremos en sencillos programas en C y compilados con su gcc. En este punto hay que hacer mención a los símbolos de depuración. Este tipo de compilación, incluyendo estos símbolos, se utiliza cuando un programador quiere depurar su programa, tiene el código fuente y lo compila con estos símbolos, para que el proceso de depuración sea mucho más sencillo.

Supongamos que tenemos nuestro primer programa que queremos depurar, el típico helloWorld.c

#include<stdio.h>

main()

{

printf(“Hello World!\n\n”);

return 0;

}

Read more

Cuando el pato teclea Cuack Cuack – Parte 3

En este artículo de hoy vamos a acabar con la trilogía del “pato”. Ya vimos en la parte 1 qué era el pato (USB Rubber Ducky) y cómo protegernos, en la parte 2 vimos nuestros primeros códigos y ahora vamos a ver cómo compilarlos y donde hay códigos interesantes ya preparados para usar :)

ducky

Read more

Port Knocking con PowerShell

Después de varios días investigando con el USB Rubber Ducky para preparar una ponencia en el VI Congreso ACCID, sobre los peligros de los dispositivos USB si no se dispone de un control de éstos,  y como nos gusta tanto compartir con vosotros nuestras experiencias, os dejo este artículo sobre cómo hacer Port-Knocking con PowerShell para, por ejemplo, poder ejecutarlo desde nuestro querido Pato (USB Rubber Ducky).

A estas alturas creo que todos conocéis ya de sobra a nuestro amigo Pato, oficialmente conocido como USB Rubber Ducky y del que nuestro compañero Goldrak ya nos ha hablado. Si aún no habéis leído sus dos primeros artículos de esta serie, os aconsejo que lo hagáis:

Cuando el pato teclea Cuack Cuack – Parte 1

Cuando el pato teclea Cuack Cuack – Parte 2

¿Por qué Port Knocking?

La idea original era que el Pato ejecutara una instrucción PowerShell para descargar desde un servidor Web el payload que previamente habríamos preparado con Metasploit, para que la víctima (mejor dicho, nuestro Pato) lo descargara y ejecutara para obtener una sesión Meterpreter.

Así lo hice, monté mi servidor Web con Apache, generé con msfpayload un payload de tipo windows/meterpreter/reverse_tcp con los parámetros correspondientes y subí el fichero al servidor Web, listo para su descarga.

Problema: si dejo el servidor Web funcionando continuamente a la espera de algún ataque con el Pato, corro el riesgo de que el servidor y el recurso sean indexados por buscadores, crawlers y otras arañas. Lo ideal sería que fuera el propio Pato el que levantara el servicio Web, descargara el payload, y bajara el servicio. De esa forma dejar el servidor lo más “invisible” posible.

Se me ocurrió hacerlo con Port-Knocking, así que instalé knockd en mi servidor, donde tengo montado el servidor Web y subido el payload. El siguiente paso era configurar el knockd para que al “tocar” los puertos TCP 7000, 8000 y 9000 en un tiempo máximo de 10 segundos, levante el servicio Web, espere 30 segundos y lo vuelva a bajar. ¿Sencillo verdad?

Este es el archivo de configuración de knock.conf:

[options]

logfile = /var/log/knockd.log

sequence    = 7000,8000,9000

seq_timeout = 10

command     = service apache2 start ; sleep 30 ; service apache2 stop

tcpflags    = syn

En la opción command, escribo los comandos que quiero que se ejecuten en caso de que haya un Port-Knocking correcto: Iniciar Apache, esperar 30 (tiempo para la descarga del payload) y parar Apache. Read more

Logjam: dejando al desnudo a tu conexión

Los fallos de seguridad están que no paran desde que Heartbleed alcanzó nuestras conexiones, tenemos que enfrentarnos a otra vulnerabilidad en el SSL, nuestro nuevo amigo Logjam, que nos puede desnudar nuestra conexión rompiendo su seguridad.

candado_roto

 

Read more

Privacidad en la navegación (II)

El pasado Miércoles os traje un artículo de “Privacidad en la navegación”  donde se aconsejaban una serie de complementos para proteger nuestra navegación de rastreadores, publicidad y observar la reputación cada sitio con las herramientas citadas.

Como en estos temas toda configuración segura es poca, he creado este segundo artículo para otorgarle un extra más de “seguridad” a nuestro navegador. Hay que decir que me baso en Firefox porque es el que uso siempre y que desde hace años uso porque me da muy buenos resultados. O por manía, puede ser :P.

En este segundo post vamos a tratar otros tres complementos que suelo utilizar en mi día a día, trabajo, consultas, etcétera y que cuando te acostumbras a tenerlos es difícil prescindir de ellos. Estos complementos seguramente os suenen, son:

  • NoScript
  • ServerSpy
  • Certificate Patrol

PARTE2

Read more