REVISTA .SEGURIDAD | 1 251 478, 1 251 477 | REVISTA BIMESTRAL

La importancia de las pruebas de penetración (Parte I)

Las pruebas de penetración son de suma importancia para las instituciones, hoy en día con la inseguridad existente en muchas aplicaciones y sistemas es necesario contar con este tipo de pruebas que nos permite evaluar el nivel de seguridad de la infraestructura tecnológica.

Si bien este tipo de pruebas no es la panacea de la seguridad, desde hace varios años se ha comprobado que gracias a ellas se pueden descubrir una gran cantidad de huecos en los activos críticos de las organizaciones.  

A pesar de que es necesario tener experiencia y gran conocimiento para realizar pruebas de penetración, este tipo de pruebas no es exclusivamente para grandes organizaciones con un conjunto de servidores que proporcionan distintos servicios y con segmentos de red de decenas o cientos de computadoras.

Se pueden ejecutar pruebas de penetración a equipos independientes e incluso a un equipo personal; es evidente que la profundidad con la que se realizan este tipo de pruebas no será la misma que la aplicada por un pentester profesional, pero llevar a cabo pruebas de penetración de este tipo permitirá encontrar los puntos vulnerables más visibles, facilitando la implantación de controles de seguridad y medidas preventivas para evitar intrusiones y comportamientos no esperados en el equipo evaluado.

En este articulo dividido en dos partes, se mostrará de manera general como realizar pruebas de penetración con herramientas automáticas y fáciles de usar, el objetivo no es crear pentesters expertos, se pretende ayudar al usuario que no tiene gran experiencia en seguridad a descubrir las vulnerabilidades en su infraestructura tecnológica casera así como a pequeñas organizaciones que deseen evaluar pocos activos críticos que posean. 

Existen diversas metodologías que indican el camino a seguir para la evaluación de seguridad de un equipo algunas orientadas a herramientas otras a elementos a evaluar y otras a procedimientos generales, todas las metodologías incluyen un conjunto de etapas o fases de evaluación, a pesar de ser distintas se pueden englobar en las siguientes:

  • Reconocimiento
  • Escaneo
  • Explotación
  • Reporte

Existe una primera etapa independiente a las mencionadas anteriormente, es de gran importancia y no debe omitirse por ninguna razón, en esta etapa se establece la autorización por parte del solicitante de las pruebas de penetración esta acción es una de las que marcan la diferencia entre un pentester y un cracker. En algunas metodologías así como en cursos de capacitación para pentesters se menciona que no se puede lanzar ni un simple ping si no se cuenta con la autorización firmada por el solicitante, esta autorización es muy importante ya que será el respaldo legal ante cualquier problema existente en el proceso de evaluación. Este documento de autorización debe contener al menos los siguientes datos:

  • Fecha y hora de inicio de las pruebas
  • Fecha y hora de término de las pruebas
  • Equipos a evaluar, especificando dirección IP
  • Nombre del equipo o persona que realizará las pruebas
  • Datos de contacto del equipo o persona que realizará las pruebas
  • Nombre del solicitante de las pruebas 
  • Firma de conformidad del solicitante

Un ejemplo de autorización se puede obtener en la siguiente página:

http://www.counterhack.net/permission_memo.html

Imagen 1. Ejemplo de Autorización

Reconocimiento

La primera etapa de las pruebas de penetración es el reconocimiento, esta etapa permite identificar la información públicamente accesible. Muchas veces en bases de datos publicadas en internet, en sitios web en caso de contar con ellos, en servidores ftp, hasta los perfiles de solicitud de personal pueden brindar mucha información valiosa para el pentester.

Como ejemplo se puede ver la siguiente imagen:

Imagen 2. Ejemplo de recopilación de información a través de ofertas de empleo

Es una oferta de trabajo en la que se proporcionan tres datos muy importantes:

  • Plataformas NET
  • Windows 2003 ó 2008
  • SQL 2005 ó 2008

Si no se tiene información del equipo a evaluar, se irá recabando poco a poco con búsquedas públicas. De esta forma se puede detectar si se está divulgando más información de la que se debe, si se está publicando información confidencial o simplemente si se están brindando pistas a un cracker o individuo mal intencionado.

Una herramienta muy útil para esta tarea es whois, brinda información detallada sobre un sitio, los datos que se pueden recabar con whois son los siguientes:

  • Fechas de registro del dominio
  • Personas asociadas con el dominio
  • Nombre del servidor
  • Fecha de actualización del dominio
  • Fecha de expiración del dominio
  • Quién registró el dominio

La herramienta whois es proporcionada por diferentes organizaciones, una de ellas es InterNIC, permite la consulta de un dominio vía internet proporcionando una interfaz fácil de usar. Se encuentra disponible a través de http://www.internic.net/whois.html

Imagen 3. Whois

  Por ejemplo, si se ejecuta whois a google.com el resultado es el siguiente:

Imagen 4. Whois a google.com

Whois también se puede emplear por línea de comandos, tiene diferentes opciones que hacen muy flexible a esta herramienta.

Para ver las opciones y la explicación de cada una de ellas, se puede recurrir en un sistema Linux al siguiente comando:

$man whois

Imagen 5. Man whois en Linux

Otra herramienta muy útil para esta etapa es Nslookup, permite realizar consultas a los servidores DNS, la información que proporciona este comando es la siguiente:

  • Dirección IP
  • Nombre canónico

Imagen 6. Nslookup

Este comando cuenta con otras opciones, por ejemplo es posible consultar los registros que un servidor DNS ha cargado en su cache, y otras opciones que permitirían realizar un análisis más detallado, por el momento solo es necesaria la información por default que proporciona el comando.

Finalmente para esta etapa se recurrirá a búsquedas mediante motores de búsqueda públicos. Se requiere el envío de consultas adecuadas para encontrar información divulgada y útil tanto para un pentester como para un cracker.

Este artículo se enfoca al motor de búsqueda Google debido a su popularidad y calidad de resultados.

A continuación se listan un conjunto de directivas que permitirán generar búsquedas mas precisas y brindar mejores resultados.

Site: permite la búsqueda en un solo sitio o dominio. Ejemplo, búsqueda de la cadena host en el sitio unam.mx se expresaría de la siguiente forma: site:unam.mx host    

Link: Muestra las paginas que apuntan a un sitio web determinado. 

Related: Muestra las paginas que tienen contenido similar y enlaces a la página de búsqueda.

Allintitle: Muestra las paginas que tienen todas las palabras especificadas en su titulo.

Existen muchas directivas que permiten generar resultados más específicos, aquí solo se mostraron pocos ejemplos para brindar el usuario la idea general.

Las redes sociales son una fuente importante de información ya que las personas revelan información muy útil y personal que podría dar pistas o un camino a seguir para el evaluador. 

Como se pudo observar en esta etapa, la idea es recolectar información del equipo a evaluar, de la institución, etc. tal vez a partir de aquí se pueda generar un diccionario para realizar fuerza bruta a servicios vulnerables o se puedan obtener posibles nombres de usuarios a través de los nombres publicados, la idea es almacenar tanta información útil como sea posible.

Esta etapa es considerada pasiva ya que la información a la que se tiene acceso es pública y no se tiene contacto directo con el equipo a evaluar.

Escaneo

Esta fase es de gran importancia en el proceso de pruebas de penetración ya que permite identificar las “puertas” y vulnerabilidades por donde podría entrar un intruso.

Esta etapa se puede dividir en los siguientes aspectos:

  • Barrido de Red (Network sweeping): Permite identificar los host presentes en la red.
  • Seguimiento de red (Network tracing): Permite identificar la topología de la red.
  • Escaneo de puertos (Port scanning): Identifica aperturas en los equipos.
  • Toma de huellas dactilares del SO (OS fingerprinting): Permiten la identificación del sistema Operativo presente en el equipo.
  • Versión de escaneo (Version scanning): Identifica los servicios presentes en cada puerto.
  • Identificación de vulnerabilidades (Vulnerability scanning): Encuentra las vulnerabilidades presentes en el equipo. 

La parte de barrido de host se da solamente cuando se trata de una red completa donde existen varios equipos a evaluar.  El mismo caso para el seguimiento de red, se ejecuta cuando se tiene toda una red a evaluar.

Se verificarán  los puertos abiertos así como su correspondiente  servicio ejecutado y la versión del servicio. 

Existen distintas herramientas para llevar a cabo esta tarea, una de ellas es nmap, una herramienta muy flexible y de gran ayuda al pentester. Para obtener puertos abiertos, servicios y versiones se puede ejecutar el siguiente comando:

nmap –T4 –A 127.0.0.1 

Imagen 7. Nmap

Una vez que se conocen las versiones y puertos abiertos, lo que resta es investigación sobre cada punto para detección de vulnerabilidades. Generalmente las versiones no actualizadas pueden tener vulnerabilidades. Este punto será detallado en la segunda parte del artículo.

Hasta aquí la primera parte de este artículo. En la siguiente parte se realizará escaneo de vulnerabilidades, explotación y reporte de los hallazgos encontrados.    

Referencias:

 

UNAM

[ CONTACTO ]

Se prohíbe la reproducción total o parcial
de los artículos sin la autorización por escrito de los autores

 

Hecho en México, Universidad Nacional Autónoma de México (UNAM) © Todos los derechos reservados 2017.