Cómo Hacer Pentesting: Una Guía Completa de Comandos para Pruebas de Penetración
Las pruebas de penetración, comúnmente conocidas como pentesting, son una práctica crítica en ciberseguridad que implica simular ataques a una red, sistema o aplicación para identificar vulnerabilidades antes de que actores maliciosos puedan explotarlas. Esta guía proporciona una mirada en profundidad a comandos y herramientas esenciales de pentesting, ofreciendo explicaciones técnicas detalladas y ejemplos prácticos.
Enumeración
La enumeración es una fase crucial en las pruebas de penetración que implica recopilar activamente información detallada sobre un sistema, red o aplicación objetivo. El objetivo principal de la enumeración es identificar y catalogar recursos, servicios, usuarios y configuraciones que pueden ser vulnerables a la explotación.
Conceptos Clave en Enumeración
Descubrimiento de Hosts: Los enumeradores comienzan identificando hosts activos dentro de un rango de red utilizando herramientas como ping, escaneos ARP o técnicas más avanzadas como escaneos TCP ACK.
Escaneo de Puertos: Una vez que se identifican los hosts activos, se utilizan técnicas de escaneo de puertos como escaneos TCP SYN, escaneos TCP Connect o escaneos UDP para determinar qué puertos en los hosts objetivo están abiertos, cerrados o filtrados.
Identificación de Servicios: Los enumeradores sondean puertos abiertos para identificar servicios en ejecución y sus versiones. Esta información es crítica para comprender las vulnerabilidades potenciales asociadas con versiones específicas de servicios.
Enumeración de Usuarios: La enumeración de usuarios implica identificar nombres de usuario válidos en sistemas objetivo. Las técnicas van desde fuerza bruta en formularios de inicio de sesión hasta consultar servicios de directorio como LDAP o Windows Active Directory.
Enumeración de Red: La enumeración de dispositivos y configuraciones de red implica mapear la topología de red, identificar routers, switches y sus configuraciones, lo que puede revelar posibles puntos de entrada o puntos de pivote dentro de la red.
Técnicas Comunes de Enumeración
Nmap: Nmap (Network Mapper) es una herramienta versátil utilizada para descubrimiento de redes y auditoría de seguridad. Puede realizar varios tipos de escaneos, incluyendo descubrimiento de hosts, escaneo de puertos, detección de versiones de servicios y detección de sistemas operativos.
Enum4Linux: Específicamente diseñado para enumerar información de servicios Windows y SMB, Enum4Linux puede recopilar detalles sobre usuarios, grupos, recursos compartidos y políticas, aprovechando las debilidades del protocolo SMB.
NBTScan: Utilizado para escanear servicios NetBIOS, NBTScan ayuda a enumerar nombres NetBIOS activos y sus direcciones IP asociadas, revelando detalles de redes Windows y vulnerabilidades potenciales.
Herramientas de Enumeración
Nmap
Nmap (Network Mapper) es una poderosa y versátil herramienta de código abierto utilizada para descubrimiento de redes y auditoría de seguridad. Puede identificar hosts activos en una red, puertos abiertos, servicios en ejecución e incluso el sistema operativo y versión de los dispositivos objetivo.
Parámetros de Nmap
- --min-rate <rate>: Establece el número mínimo de paquetes enviados por segundo para acelerar el escaneo.
- -n: Desactiva la resolución DNS para aumentar la velocidad de escaneo y evitar retrasos relacionados con DNS.
- --open: Muestra solo puertos abiertos, filtrando puertos cerrados y filtrados.
- -O: Habilita la detección del sistema operativo, intentando identificar el sistema operativo del objetivo.
- -oG <file>: Genera los resultados en formato Greppable para facilitar el análisis.
- -oN <file>: Genera los resultados en un formato legible para humanos.
- -oX <file>: Genera los resultados en formato XML para integración con otras herramientas.
- -Pn: Omite la fase de descubrimiento de hosts, asumiendo que el objetivo está activo.
- -p-: Escanea los 65,535 puertos TCP.
- -p <ports>: Especifica una lista de puertos a escanear.
- -sC: Ejecuta scripts Nmap predeterminados para vulnerabilidades comunes.
- -sS: Realiza un escaneo SYN sigiloso, que es menos probable que sea detectado por firewalls.
- -sU: Escanea puertos UDP, que a menudo se pasan por alto pero pueden ser críticos.
- -sV: Sondea puertos abiertos para determinar información de servicio/versión.
- -T4: Utiliza opciones de tiempo agresivas para acelerar el escaneo.
- --traceroute: Mapea la ruta que toman los paquetes para llegar al objetivo, útil para entender la topología de red.
- -v, -vv, -vvv: Aumenta la verbosidad para una salida más detallada.
Ejemplos de Nmap
Escaneo Completo de Puertos: Realiza un escaneo TCP SYN rápido y exhaustivo en todos los puertos del objetivo 192.168.0.1, guardando los resultados en un formato Greppable.
Escaneo de Detección de Servicios: Escanea los puertos especificados (22, 80, 443) en el objetivo 192.168.0.1, detecta versiones de servicios y ejecuta scripts predeterminados para recopilar información adicional.
Enum4Linux
Enum4Linux es una herramienta para enumerar información de servicios Windows y SMB (Server Message Block). Se utiliza para recopilar detalles sobre usuarios, grupos, recursos compartidos y políticas en un entorno Windows.
Parámetros de Enum4Linux
- -a: Realiza una enumeración completa utilizando todas las opciones disponibles.
- -G: Enumera grupos en el objetivo.
- -M: Enumera máquinas (cuentas de ordenador) en el objetivo.
- -P: Enumera políticas de contraseñas, proporcionando información sobre configuraciones de seguridad.
- -S: Enumera recursos compartidos disponibles en el objetivo.
- -U: Enumera usuarios en el objetivo, lo que puede ayudar a identificar cuentas potenciales para atacar.
- -d: Proporciona información detallada, aumentando la verbosidad.
- -p <password>: Especifica una contraseña para usar en la autenticación.
- -u <username>: Especifica un nombre de usuario para usar en la autenticación.
Ejemplos de Enum4Linux
Enumeración Completa: Realiza una enumeración completa del objetivo, recopilando información sobre usuarios, grupos, recursos compartidos, máquinas y políticas.
NBTScan
NBTScan es una herramienta de línea de comandos para escanear servicios NetBIOS en una red. NetBIOS (Network Basic Input/Output System) permite que aplicaciones en diferentes ordenadores se comuniquen dentro de una red local.
Parámetros de NBTScan
- -v: Habilita el modo verboso para proporcionar una salida más detallada.
- -d: Vuelca el contenido de los paquetes NetBIOS.
- -e: Formatea la salida en formato
/etc/hosts
, haciéndola útil para añadir a archivos hosts. - -l: Formatea la salida en formato lmhosts.
- -t <time>: Establece el tiempo máximo de espera para respuestas, controlando la duración del escaneo.
- -b <bandwidth>: Limita el ancho de banda utilizado durante el escaneo.
- -s <separator>: Formatea la salida para facilitar el scripting y análisis.
- -m <retransmits>: Establece el número de retransmisiones para confiabilidad.
Ejemplos de NBTScan
Escaneo de Objetivo Único: Escanea una sola dirección IP, proporcionando información sobre nombres NetBIOS y servicios.
Escaneo de Red: Escanea una subred completa, identificando todos los dispositivos con servicios NetBIOS activos.
Escaneo desde Archivo: Escanea una lista de objetivos proporcionada en un archivo, útil para enumeración a gran escala.
Searchsploit
Searchsploit es una interfaz de línea de comandos para buscar y recuperar exploits de la base de datos Exploit-DB, un repositorio de vulnerabilidades y exploits conocidos.
Parámetros de Searchsploit
Opciones de Búsqueda:
- -c: Búsqueda sensible a mayúsculas y minúsculas.
- -e: Búsqueda de término exacto.
- -t: Buscar solo por título.
- --cve <CVE-ID>: Buscar por identificador CVE.
Opciones de Salida:
- -j: Salida en formato JSON.
- -o: Permite que los títulos desborden columnas.
- -p: Muestra la ruta completa a los archivos de exploit.
- -v: Modo verboso.
- -w: Muestra URLs a exploit-db.com.
- --disable-colour: Desactiva la salida coloreada para facilitar la lectura o scripting.
Automatización:
- --nmap <file.xml>: Analiza la salida XML de Nmap para búsqueda automatizada de exploits.
Inyección SQL
La inyección SQL es una técnica utilizada para explotar vulnerabilidades en la capa de base de datos de una aplicación inyectando código SQL malicioso. Aquí hay algunos ejemplos básicos de payload:
Bypass de Autenticación: Este payload puede omitir la autenticación de inicio de sesión explotando consultas SQL mal implementadas.
Inyección SQL basada en UNION: Este payload utiliza el operador SQL UNION para combinar los resultados de dos o más sentencias select en un único resultado.
Inyección SQL basada en Error: Este payload fuerza a la base de datos a generar un mensaje de error, que puede revelar información valiosa sobre la estructura de la base de datos.
Inyección SQL Ciega basada en Tiempo: Este payload utiliza funciones de base de datos para causar un retraso, que puede indicar si una condición es verdadera o falsa, útil en ataques de inyección SQL ciega.
Inyección SQL Ciega basada en Booleanos: Este payload explota condiciones verdaderas o falsas para inferir información sobre la base de datos.
Extracción de Versión de Base de Datos: Este payload recupera la versión de la base de datos.
Recuperación de Nombres de Tablas: Este payload extrae los nombres de todas las tablas en la base de datos.
Recuperación de Nombres de Columnas: Este payload extrae los nombres de columnas de una tabla específica.
Volcado de Credenciales de Usuario: Este payload recupera nombres de usuario y contraseñas de una tabla llamada users.
Comentar el Resto de la Consulta: Este payload comenta el resto de la consulta SQL, lo que puede ser útil en varios escenarios de inyección.
Ejemplos de Searchsploit
Búsqueda Básica de Vulnerabilidad: Busca exploits locales relacionados con "afd" en sistemas Windows.
Búsqueda Específica de Título: Busca exploits relacionados con Oracle en Windows, centrándose en títulos.
Búsqueda Específica de Puerto: Busca exploits dirigidos a un puerto específico (39446).
Búsqueda de CVE: Busca exploits relacionados con la vulnerabilidad CVE-2021-4428.
Explotación
La explotación es la fase en el ciclo de vida de las pruebas de penetración donde el tester intenta activamente explotar vulnerabilidades identificadas durante las fases de enumeración y escaneo. El objetivo de la explotación es obtener acceso no autorizado a un sistema, elevar privilegios o ejecutar código arbitrario. Este paso implica utilizar diversas técnicas y herramientas para aprovechar debilidades en software, hardware o configuraciones de red.
Conceptos Clave en Explotación
Identificación de Vulnerabilidades: El paso inicial implica identificar vulnerabilidades específicas que pueden ser explotadas. Esto puede hacerse utilizando herramientas automatizadas o técnicas manuales. Las vulnerabilidades pueden incluir software sin parches, configuraciones incorrectas, contraseñas débiles o fallas inherentes en el diseño del sistema.
Entrega de Payload: Una vez que se identifica una vulnerabilidad, el siguiente paso es entregar un payload al sistema objetivo. Un payload es un fragmento de código que realiza la acción deseada, como abrir una puerta trasera, capturar credenciales o lanzar un shell de comandos. Los métodos comunes para la entrega de payloads incluyen desbordamientos de buffer, inyecciones SQL y ataques de phishing.
Ejecución y Control: Después de entregar el payload, el siguiente paso es ejecutarlo en el sistema objetivo. La ejecución exitosa permite al tester obtener control sobre el sistema. Este control puede ser temporal o persistente, dependiendo del tipo de payload y los objetivos del tester.
Post-Explotación: Esta fase implica mantener el acceso, escalar privilegios y moverse lateralmente dentro de la red. También incluye la exfiltración de datos, donde se extrae información sensible del sistema comprometido.
Técnicas Comunes de Explotación
Desbordamiento de Buffer: Esta técnica implica desbordar un buffer (un área de almacenamiento temporal de datos) con más datos de los que puede manejar, lo que puede sobrescribir la memoria adyacente y permitir la ejecución de código arbitrario. Los desbordamientos de buffer pueden ocurrir tanto en la memoria de pila como de montón.
Inyección SQL: Esta técnica implica inyectar código SQL malicioso en los campos de entrada de una aplicación, explotando vulnerabilidades en la capa de base de datos de la aplicación. Puede usarse para bypasear autenticación, recuperar o modificar contenido de la base de datos.
Cross-Site Scripting (XSS): Los ataques XSS implican inyectar scripts maliciosos en páginas web visualizadas por otros usuarios. Estos scripts pueden robar cookies de sesión, redirigir usuarios a sitios maliciosos o realizar acciones en nombre del usuario.
Phishing: Los ataques de phishing engañan a los usuarios para que proporcionen información sensible, como credenciales de inicio de sesión o información financiera, haciéndose pasar por entidades legítimas. Estos ataques a menudo se realizan a través de correo electrónico o sitios web fraudulentos.
Herramientas de Explotación
Metasploit Framework
Metasploit es un framework de explotación ampliamente utilizado que proporciona un conjunto completo de herramientas para desarrollar, probar y ejecutar exploits. Incluye una vasta base de datos de vulnerabilidades conocidas y exploits preconstruidos.
Ejemplos de Metasploit
Lanzamiento de un exploit simple: Utiliza Metasploit para explotar la vulnerabilidad MS08-067 en Windows SMB, configurando un payload TCP reverso para obtener una sesión meterpreter en el objetivo.
Explotación de una Vulnerabilidad de Windows SMB: Utiliza el exploit EternalBlue (ms17_010_eternalblue) para atacar una máquina Windows a través de SMB, estableciendo una sesión Meterpreter.
SQLmap
SQLmap es una herramienta automatizada para detectar y explotar vulnerabilidades de inyección SQL en aplicaciones web. Puede extraer información de la base de datos, ejecutar comandos SQL e incluso proporcionar un shell de comandos.
Ejemplos de SQLmap
Explotación de una vulnerabilidad de inyección SQL: Utiliza SQLmap para explotar automáticamente una vulnerabilidad de inyección SQL en una aplicación web, recuperando y volcando el contenido de la base de datos.
BeEF
BeEF (Browser Exploitation Framework): BeEF se centra en explotar vulnerabilidades en navegadores web. Permite a los testers controlar navegadores comprometidos y realizar diversas acciones, como robar credenciales o capturar pulsaciones de teclas.
Hydra
Hydra es una herramienta de crackeo de contraseñas que soporta numerosos protocolos, incluyendo FTP, HTTP, SMB y más. Realiza ataques de fuerza bruta para adivinar credenciales de inicio de sesión.
Ejemplos de Hydra
Fuerza bruta contra servicio FTP: Intenta forzar por fuerza bruta las credenciales de inicio de sesión FTP utilizando una lista de contraseñas de passwords.txt.
Post Explotación
La post explotación es crucial para que los testers de penetración demuestren completamente el impacto de las vulnerabilidades descubiertas durante las pruebas. Simula comportamientos de atacantes del mundo real y ayuda a las organizaciones a comprender su exposición a amenazas cibernéticas sofisticadas. Al realizar actividades exhaustivas de post-explotación, los testers proporcionan información accionable para mejorar las defensas de seguridad y mitigar riesgos de manera efectiva.
Conceptos Clave en Post Explotación
Mantener Acceso: Asegurar acceso persistente al sistema o red comprometida.
Puertas Traseras: Instalar puertas traseras persistentes para mantener el acceso.
Tunneling: Configurar túneles para comunicarse de forma segura con el sistema comprometido.
Escalada de Privilegios: Intentar elevar privilegios en el sistema comprometido para obtener acceso de nivel superior, potencialmente alcanzando privilegios administrativos o de root.
Exfiltración de Datos: Extraer datos sensibles como contraseñas, credenciales, información financiera o propiedad intelectual de sistemas comprometidos.
Transferencia de Archivos: Usar herramientas como scp o ftp para transferir datos fuera de la red.
Esteganografía: Ocultar datos dentro de imágenes u otros formatos de archivo para evadir la detección.
Movimiento Lateral: Moverse lateralmente a través de la red para acceder a otros sistemas o dispositivos, explorando objetivos adicionales para explotación.
Pass-the-Hash: Usar credenciales hasheadas robadas para autenticarse en otros sistemas.
Pivoting: Usar el sistema comprometido para lanzar ataques a otros sistemas dentro de la red.
Cubrir Rastros: Borrar evidencia del ataque.
Manipulación de Logs: Alterar o eliminar logs para ocultar evidencia del ataque.
Rootkits: Instalar rootkits para mantener control sigiloso sobre el sistema.
Herramientas de Post Explotación
PowerShell Empire
Un framework de post-explotación que utiliza PowerShell para entornos Windows. Incluye módulos para mantener acceso, ejecutar comandos y exfiltrar datos.
Ejemplos de PowerShell Empire
Escalada de Privilegios con PowerShell Empire: Comprueba vulnerabilidades comunes de escalada de privilegios en un sistema comprometido, con el objetivo de elevar privilegios y obtener mayor control.
Cobalt Strike
Una herramienta comercial de pruebas de penetración que integra capacidades de post-explotación con infraestructura de comando y control. Facilita la emulación avanzada de amenazas y operaciones de equipo rojo.
Ejemplos con Cobalt Strike
Exfiltración de Datos con Cobalt Strike: Permite la exfiltración de datos estableciendo un canal encubierto de comando y control para transmitir información sensible desde la red comprometida.
Conclusión
Las pruebas de penetración son un componente crítico de la ciberseguridad, ayudando a identificar y mitigar vulnerabilidades antes de que puedan ser explotadas por actores maliciosos. Herramientas como Nmap, Enum4Linux, NBTScan, Searchsploit y Hydra proporcionan capacidades invaluables para enumeración y explotación, mientras que comprender las técnicas de post-explotación asegura un enfoque integral para asegurar sistemas y redes.
Al dominar estas herramientas y técnicas, los profesionales de ciberseguridad pueden mejorar su capacidad para proteger contra amenazas potenciales y mejorar la postura de seguridad general de sus organizaciones.
Gracias por leer ^^