Cursos de Hacking Ético

Hola a todos/as nuestros lectores y seguidores habituales de nuestro blog.

Queremos volver a comunicaros que ya están disponibles las nuevas fechas para inscribirse en nuestros Cursos de Hacking Ético de Sistemas y Redes así como el de Hacking Ético Wifi.

linea

¡Atención porque hay novedades en la planificación!

linea

folletosvtPulsa “Read More…” para continuar leyendo.

 

Read more

DLL Hijacking – Comprobando la vulnerabilidad

En el anterior artículo de esta serie sobre DLL Hijacking, vimos cómo podríamos descubrir posibles aplicaciones vulnerables a DLL Hijacking. En esta segunda parte daremos un paso más y veremos cómo comprobar la vulnerabilidad en una aplicación que estemos auditando.

Una vez que ya tenemos DLL candidatas a ser usadas, que previamente hemos descubierto con nuestro Procmon, procederemos a crear nuestra propia DLL que suplantará a la que la aplicación está buscando, con la idea de que se ejecute el código que nosotros indiquemos.

En este caso, nuestro objetivo para esta fase de comprobación, es que al ejecutar la aplicación vulnerable nos muestre una ventana con el mensaje “DLL Hijacked!“.

Tenemos varias opciones a la hora de crear nuestra DLL pero lo haremos de la forma más práctica y sencilla. Es aprovechando un código ya creado por LiquidWorm y que está publicado en la Web de exploit-db. Se trata de una DLL muy sencilla que utiliza la función DllMain() para ejecutar código.

La URL donde podéis ver y descargar el código es la siguiente:

https://www.exploit-db.com/exploits/14789/

Como podéis observar al final del código, si se ejecuta correctamente nuestra DLL, por lo tanto la aplicación es vulnerable a DLL Hijacking, se abrirá una ventana de MessageBox:

MessageBox(0, "DLL Hijacked!", "DLL Message", MB_OK);

DLL Hijacking

Read more

DLL Hijacking – Descubriendo posibles aplicaciones vulnerables

Este artículo será el primero de una serie dedicada a la vulnerabilidad conocida como DLL Hijacking. Haremos una breve introducción y veremos cómo llevar a cabo una primera fase de descubrimiento de posibles aplicaciones candidatas a ser vulnerables a DLL Hijacking.

Para entender bien en qué consiste esta vulnerabilidad tenemos que tener claro cuál es la funcionalidad de estos ficheros en nuestros sistemas Windows, de los cuales encontraremos muchos repartidos por nuestro sistema de ficheros.

El uso de DLL, Dynamic Link Library, es el método más utilizado por Windows y aplicaciones para compartir funciones, haciendo que las aplicaciones sean más modulares y permita reutilizar funciones comunes que ya están desarrolladas y que son exportadas por estas librerías.

DLL Hijacking - Parte 1

La idea es que cualquier ejecutable pueda cargar funciones de estas librerías, aprovechando el desarrollo ya realizado. Por ejemplo, hay funciones comunes que testean la disponibilidad de la red, la conexión a Internet o la presencia de una impresora.

DLL Hijacking - Parte 1

Pero, ¿qué pasaría si la aplicación no encuentra una DLL que intenta cargar? ¿Podría un atacante suplantar esa DLL creando una personalizada con código malicioso? Aunque existen métodos para evitar esto, la respuesta más correcta sería que si.

Read more

Phishing bancario con Ruralvia de Caja Rural

Firma invitada: Inmaculada López Gutiérrez @inmaculadalogu

En esta ocasión tenemos el placer de contar con la colaboración de Inmaculada López Gutiérrez, a la que agradecemos su investigación y redacción de este interesante post sobre phishing bancario. ¡Gracias Inmaculada!


Me estreno como “bloguera” tras recibir, cuando iba dispuesta a descansar un ratito, un correo “con premio” como los hackers a quienes sigo dicen. Reconozco que a quienes no lo somos, a veces nos cuesta seguir las enseñanzas de los mismos, así que quizá por ello, pueda ser útil el contar lo ocurrido desde la visión de una persona no experta en seguridad como yo. Más que empezar contando el contenido de este email recibido, mucho más claro queda si lo muestro tal cual:

Phishing bancario

Al leerlo, y gracias a todos los consejos de estos “Grandes”, desconfié de inmediato de ese enlace, sobre todo, como siempre bien dicen, usando el sentido común: Mi banco jamás me pediría que realizase una verificación tal a través de un correo, y mucho menos, pinchando en un enlace. Pero debo reconocer que me asombró el perfecto español con el que estaba escrito, y el buen formato de la dirección de correo electrónico que, ya que lo leí en el teléfono móvil, no me mostraba el dominio de la misma. Eso si, al pulsar para verla por completo, ese dominio que nada tiene que ver con la entidad bancaria, viene a ser un nuevo indicio de que es un correo “con premio”.

Picada por el bichillo de la curiosidad que esto de la seguridad informática tiene y siguiendo los consejos recibidos por uno de estos expertos en sus charlas, fui a usar las que él mismo llamó Técnicas Sencillas de Análisis de Malware, todas ellas online. Read more

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