Levantamiento de Información (Information Gathering)

Una de las primeras fases que se deben realizar en el proceso de pruebas de seguridad en una aplicación Web es el levantamiento de información, ya que esta fase nos ayudará a entender la aplicación desde su contexto (tipos de datos que almacena/procesa/transmite, procesos que soporta, tipo de usuarios), hasta las versiones de infraestructura, frameworks y lenguajes de desarrollo utilizados.

Esta información nos ayudará a perfilar el sistema y diseñar pruebas de seguridad y ataques específicos, para que nuestras pruebas sean más efectivas.

Las fases para el levantamiento de información son las siguientes:


  • Conduct search engine discovery/reconnaissance for information leakage (OTG-INFO-001)
    • Existe elementos directos e indirectos que pueden ser identificados.
    • Los elementos directos están relacionados con el contenido de la aplicación.
    • Los elementos indirectos relacionados con la información sensible de diseño y configuración mediante búsquedas en foros, grupos de noticias y sitios web de licitación (sitios de terceros).
    • El objetivo es identificar información sensible expuesta sobre el sistema/aplicación/organización en elementos directos o indirectos.
    • Herramientas: shodan, google hacking.

  • Fingerprint Web Server (OTG-INFO-002)

    • Identificar la versión de web server sobre la que se ejecuta la aplicación permite identificar posibles vulnerabilidades y ejecutar pruebas dirigidas y exploits específicos.
    • Para identificar la versión utilizada se debe analizar la respuesta del servidor.
    • Herramientas: Netcat, envío de peticiones malformadas, nikto.

  • Review Webserver Metafiles for Information Leakage (OTG-INFO-003)

    • Identificar información sensible expuesta en directorios y archivos.
    • robots.txt.
    • Herramientas: FOCA (Metadata extraction, Network analysis, DNS snooping, Search for common files, Juicy (interesting) file search, Proxies search, Technology identification, Fingerprinting, Leak detection, Backups search, Error forcing, Open directories search, Vulnerability detection).

  • Enumerate Applications on Webserver (OTG-INFO-004)

    • Identificar las aplicaciones que están hosteadas en el servidor.
    • Se pueden encontrar diferentes aplicaciones que apuntan a la misma IP, por lo cual es importante definir el alcance de las pruebas.
    • También es importante identificar las URLs que pueden estar asociadas a diferentes aplicaciones.
    • El objetivo es enumerar todas las aplicaciones que existen en el Webserver.
    • URL base diferente.
    • Puertos no estándar.
    • Virtual hosts permite hacer uso de un servidor para alojar múltiples dominios o sitios en una única interfaz o IP.
    • El protocolo DNS permite que una sola IP sea asociada con uno o más nombres simbólicos.
    • Visualizar directorios debido a configuraciones inseguras.
    • Directorios o aplicaciones referenciados por otras aplicaciones.
    • Fuerza bruta para obtener directorios.
    • Herramientas: Nmap, Nikto, Transferencia de zona DNS.

  • Review webpage comments and metadata for information leakage (OTG-INFO-005)

    • Los comentarios y metadata en recursos públicos como archivos html, js, y otros puede revelar información sensible (lógica de la aplicación, código, IPs, usuario/password).
    • El objetivo es entender el funcionamiento de la aplicación e identificar información sensible expuesta.
    • Herramientas: wget, requests python, HTTP proxy.

  • Identify application entry points (OTG-INFO-006)

    • Identificar datos de entrada como posibles vectores de ataque a la aplicación.
    • Analizar las peticiones y respuestas HTTP que requieren ser investigadas más a detalle.
    • Identificar información sensible que es se expone en las peticiones/respuestas HTTP.
    • Identificar cookies, parámetros, redirecciones, mensajes HTTP, headers que se utilizan como datos de entrada a la aplicación.

  • Map execution paths through application (OTG-INFO-007)

    • Entender la estructura de la aplicación, e identificar los principales flujos de datos.
    • Es importante definir el alcance de los flujos que se van a probar ya que en la práctica resulta complicado revisar el código completo de una aplicación.
    • Se pueden tomar los datos de entrada de los usuarios para identificar el flujo y transformación de datos utilizada en la aplicación.
    • También se recomienda validar con el dueño de la aplicación sobre las funcionalidades y las secciones de código que está más interesado en validar.
    • En pruebas de caja negra se pueden utilizar herramientas y técnicas de “spidering” para identificar LinksURLs.
    • En pruebas de caja blanca se puede hacer uso de la documentación de la aplicación y el código para definir los flujos que se van a probar.

  • Fingerprint Web Application Framework (OTG-INFO-008)

    • Conocer el framework sobre el que fue desarrollado la aplicación nos ayuda a identificar posibles vulnerabilidades, configuraciones inseguras específicas, y la estructura de archivos utilizada.
    • Se puede identificar el framework utilizado en los headers, mensajes HTTP, cookies, código HTML, archivos y directorios específicos (Ej. X-Powered-By, X-Generator).
    • Cada framework tiene una estructura de directorios y archivos específico, que debe ser analizada, en algunos casos es necesario instalar localmente el framework para analizar su estructura.

  • Fingerprint Web Application (OTG-INFO-009)

  • Map Application Architecture (OTG-INFO-010)

    • Identificar los elementos y componentes que conforman la arquitectura de la aplicación (firewall, balanceadores, DMZ, reverse proxy, front-end server, LDAP server).