Contenido actualizado 24/11/2023, publicación original 29/07/2013
Realizar pruebas de penetración es un proceso complejo que involucra distintos tipos de tareas que identifican, en una infraestructura objetivo, las vulnerabilidades que podrían explotarse y los daños que podría causar un atacante. En otras palabras, se realiza un proceso de hacking ético para identificar qué incidentes podrían ocurrir antes de que sucedan y, posteriormente, reparar o mejorar el sistema, de tal forma que se eviten estos ataques.
Para realizar una prueba de penetración de forma profesional, es necesario sumar a los conocimientos de hacking ético, otros aspectos fundamentales como: programación, metodologías, documentación, entre otros. No obstante, esos aprendizajes suelen venir una vez que se conocen y se saben utilizar muchas herramientas que son parte del proceso de pentesting.
A continuación, enumeraremos 5 herramientas que no solo te permitirán adentrarte en el mundo del penetration testing, sino que también son ampliamente utilizadas en el mundo del hacking ético.
NMAP
Nmap es una herramienta de código abierto que se utiliza para escanear redes y sistemas informáticos con el objetivo de obtener información sobre lo que se encuentra en ellos. Es una herramienta esencial, ya que permite identificar posibles vulnerabilidades que podrían ser utilizadas como puntos de entrada por atacantes.
Más puntualmente, con una ejecución de NMAP sobre un objetivo en puntual podríamos observar aquellos dispositivos, servidores, servicios, firewalls y más, relacionados al primero. Para ello, la herramienta envía distintos tipos de paquetes (de tipo ping, echo y dirigidos a puertos) para hacer un sondeo sobre una IP o un rango de las mismas.
Usualmente, esta herramienta es ejecutada vía terminal de comandos (aunque existen adaptaciones con interfaz gráfica) con el formato "nmap <Flags> <Objetivo>".
Existen un sinfín de Flags que le indicarán a la ejecución configuraciones particulares. Entre las más utilizadas, encontramos:
- -sn, para determinar si un objetivo está disponible.
- -sT, para determinar qué puertos están abiertos en un objetivo usando TCP.
- -O, para identificar el sistema operativo y la versión del software que se ejecuta en un objetivo.
- -A, para el escaneo completo del objetivo.
La ejecución sin parámetros ejecuta un escaneo sencillo a los 1000 puertos más comunes, realizando anteriormente un ping para ver si el equipo está vivo (si el equipo no responde al ping, no se realizará el test de los puertos).
NESSUS
Una vez que se tienen identificados los servicios que se están ejecutando, se puede comenzar el uso de las herramientas que sirven para identificar vulnerabilidades en los servicios. En este campo, la mejor herramienta para introducirse en este mundo es Nessus, otra aplicación gratuita que, por su base de datos y su facilidad de uso, es la preferida en este aspecto.
Nessus utiliza un conjunto de plugins para realizar los escaneos. Cada plugin se centra en un tipo específico de vulnerabilidad. Por ejemplo, un plugin puede buscar vulnerabilidades en el software de servidor web, mientras que otro plugin puede buscar vulnerabilidades en el software de correo electrónico.
Nessus posee una extensa base de datos de vulnerabilidades conocidas en distintos servicios y, por cada una de éstas, posee plugins que se ejecutan para identificar si la vulnerabilidad existe (o no) en determinado equipo objetivo. En resumen, al ejecutarse Nessus sin parámetros específicos, se probarán miles de vulnerabilidades y se obtendrá como resultado un listado de las vulnerabilidades que fueron identificadas.
La lógica de Nessus es similar a Nmap: hay que indicar el objetivo, en este caso la o las direcciones IP y los parámetros. Estos permiten limitar el campo de búsqueda, especialmente si en una etapa anterior se identificaron los servicios: no tiene sentido buscar vulnerabilidades conocidas en Linux en un equipo que tiene instalado Windows.
La herramienta cuenta con, además de su ejecución por consola, una interfaz gráfica amigable para quienes estén dando sus primeros pasos en el mundo del pentesting.
Metasploit
Metasploit es un framework de pruebas de penetración que se utiliza para realizar una amplia gama de ataques contra sistemas y aplicaciones. Es una herramienta poderosa que puede ser utilizada por pentesters experimentados, pero también es relativamente fácil de aprender a usar para principiantes.
Metasploit se basa en una base de datos de exploits, que son programas que explotan vulnerabilidades conocidas en sistemas y aplicaciones. El framework proporciona una interfaz fácil de usar para buscar y seleccionar exploits, así como para ejecutarlos.
Una vez ejecutado el comando para iniciar la herramienta, tendremos acceso a una terminal de comandos en la misma. Aquí podremos elegir entre los exploits ya cargados para la explotación y seleccionar alguno de ellos. Luego, debemos configurar parámetros propios del exploit que hayamos elegido como, por ejemplo, la IP o puertos destino, servidores HTTP de escucha, y más. Finalmente, podemos comenzar a correr la explotación.
Si quieres conocer una aplicación práctica en profundidad de Metasploit con una conocida vulnerabilidad, te invitamos a leer el post Cómo explotar vulnerabilidad BlueKeep con Metasploit.
DVL – DVLWA
Para probar las tres herramientas anteriores, es necesario definir un sistema objetivo, un sistema en el que se harán las pruebas. Una pésima costumbre de quienes inician en este ámbito es realizar sus primeros pasos y pruebas en sistemas públicos de Internet, en un entorno real. Esto podría acarrear problemas legales y no es la forma correcta (ni ética) de realizarlo. Para aprender a usar estas herramientas, se debe utilizar un entorno de pruebas, es decir, un escenario de investigación en donde uno pueda tener acercamientos sin riesgos de afectar algún entorno en producción.
Para ello, existen dos herramientas excelentes: Damn Vulnerable Linuxy (DVL) y Damn Vulnerable Web Application (DVWA). Aunque el primero está descontinuado, aún se puede conseguir en Internet para hacer los primeros pasos y primeras pruebas. Se trata de un sistema operativo y una aplicación web que poseen todo tipo de vulnerabilidades, de tal forma que, la personaquelos utiliza, puede intentar explotarlas y experimentar.
También es posible "construir" nuestro propio sistema de pruebas: tan solo instala cualquier sistema operativo (desactiva las actualizaciones o instala una versión antigua) y sobre él comienza a instalar servicios en versiones anteriores a la última. De esta forma, tendrás tu propio sistema vulnerable para hacer pruebas. Este entorno es el correcto para dar tus primeros pasos en Penetration Testing.
Kali Linux
Si bien no es una herramienta sino un sistema operativo, no podíamos dejar por fuera a Kali, una distribución de Linux diseñada exclusivamente para Penetration Testing. Las herramientas antes descritas (Nmap, Nessus, Metasploit) están disponibles y, no solo eso, también hay muchas más herramientas para continuar practicando.
Kali Linux puede ser descargada como imagen ISO o directamente para VMWare. Una vez que inicias un sistema Kali Linux, verás un menú muy extenso con más de 300 herramientas para pentesters. Nmap y Metasploit Framework están incluidos en esta lista, entre tantas otras.
Para una mejor comprensión, las herramientas son presentadas en diferentes categorías, aquí algunas de las más importantes:
- Information gathering: Herramientas de recolección de datos que ofrecen información sobre los objetivos de los análisis, especialmente herramientas de DNS, dominios y direcciones IP. Nmap está en esta categoría.
- Aplicaciones web: Herramientas diseñadas para realizar análisis en sitios web a nivel de servidores.
- Ataques a contraseñas: Herramientas para hacer cracking de contraseñas, de forma tal, que se prueban ataques de fuerza bruta o diccionario para encontrar las contraseñas de acceso correctas a un formulario o sistema.
- Ataques inalámbricos: Cuando un atacante está conectado a una red wireless puede ejecutar algunos ataques, especialmente cuando intenta interceptar información que está siendo transmitida mediante esa red inalámbrica. Estas herramientas permiten analizar la red y diagnosticar su seguridad.
- Herramientas de explotación: Metasploit Framework es la clave de esta sección, entre otras herramientas que permiten explotar vulnerabilidades.
- Sniffing/Spoofing: Wireshark y Ettercap son las herramientas más recomendables. Con ellas, es posible ver el tráfico de red que podría permitir el acceso a información confidencial, entre otros ataques.
- Ingeniería inversa: Ollydbg es uno de los mejores debuggers que podrían ayudar a comprender qué acciones realiza un archivo en el sistema por medio de un proceso de ingeniería inversa.
- Forense: También hay una serie de herramientas para realizar análisis forenses sobre un sistema, es decir, se puede analizar el estado de un sistema justo en el momento que ocurrió determinado incidente; además se identifican acciones pasadas o archivos ocultos en el mismo, entre otros.
Conclusiones
Hay una falsa idea de que una prueba de penetración es la ejecución de una serie de herramientas en un orden determinado. Esto no es así, la elección de las herramientas, la ejecución de tareas manuales y la utilización de una metodología, son tan solo algunas de las variables para convertirse en un profesional de Pentesting. Sin embargo, un factor común en todo el proceso, es que tenemos que pensar. Hay dos tipos de ethical hacker, aquel que solo lee y utiliza lo que dicen las herramientas, y aquel que interpreta y pone su inteligencia para ofrecer un informe que realmente brinde valor a su cliente, aquella empresa u organización que necesita conocer cómo mejorar la protección de la información y su infraestructura.
Los atacantes no solo ejecutan herramientas, sino que piensan cómo atacar. Al momento de realizar un Pentest es fundamental no perder de vista nuestra herramienta principal: pensar. Independientemente de las herramientas de software que utilicemos, pensar constantemente como un atacante, es la clave principal para realizar un Pentesting de forma exitosa.