Las pruebas de penetración o pentesting son una práctica muy extendida en ciberseguridad. ¡Te la explicamos!

Pentesting: hackeando sistemas por un bien común

pablo.blanco
08/03/2024

Definimos una prueba de penetración como una práctica ética de ciberseguridad cuyo fin es descubrir, estudiar y remediar vulnerabilidades dentro de una red de sistemas informáticos. El sentido detrás de las pruebas de penetración es que recurre a las mismas tácticas y argucias que los ciberdelincuentes para atacar un sistema informático. De esta forma, los ingenieros podrán cerciorarse del grado de resistencia de los protocolos de ciberseguridad establecidos a la hora de responder eficazmente ante amenazas potenciales.

En este artículo de EducaOpen te hablaremos sobre los diferentes tipos de pruebas de penetración que hay y cómo los equipos de ciberseguridad las ponen en práctica en su espacio de trabajo. Además, si te interesa formarte en ciberseguridad, te recomendamos que le eches un vistazo a nuestro catálogo de másteres en ciberseguridad.

Tipos de pruebas de penetración

Según el software o el aspecto de la red en la que nos queramos centrar, podemos categorizar los tipos de pruebas de penetración de la siguiente forma:

Pruebas de red

Se centran en identificar vulnerabilidades en la infraestructura de red, como:

  • Enrutadores: Explotación de vulnerabilidades de firmware o configuración para obtener acceso no autorizado.
  • Conmutadores: Suplantación de direcciones MAC o ataques de denegación de servicio (DoS) para interrumpir el tráfico.
  • Firewalls: Escaneo de puertos y protocolos para encontrar rutas de acceso no autorizadas.
  • Dispositivos inalámbricos: Intercepción de datos o ataques de fuerza bruta contra claves WPA/WPA2.

Pruebas de aplicaciones

Evalúan la seguridad de aplicaciones web, móviles y de escritorio. Se buscan vulnerabilidades como:

  • Inyección SQL: Manipulación de consultas a la base de datos para obtener acceso no autorizado a datos confidenciales.
  • Cross-site scripting (XSS): Inyección de código JavaScript malicioso en páginas web para robar cookies o redirigir a usuarios.
  • Cross-site request forgery (CSRF): Engañifas a usuarios para que realicen acciones no autorizadas en aplicaciones web.
  • Vulnerabilidades de autenticación: Contraseñas débiles, falta de autenticación de dos factores o errores en la gestión de sesiones.

Pruebas de ingeniería social

Se basan en la manipulación psicológica para obtener información sensible o acceso a sistemas. Algunas técnicas son:

  • Phishing: Envío de correos electrónicos o mensajes fraudulentos para engañar a usuarios y obtener sus credenciales.
  • Baiting: Dejar dispositivos infectados o memorias USB en lugares públicos para que usuarios los recojan y los conecten a sus equipos.

Pruebas en la nube

Se enfocan en la seguridad de plataformas y servicios en la nube, como:

  • Amazon Web Services (AWS): Búsqueda de configuraciones erróneas de permisos o vulnerabilidades en los servicios S3 o EC2.
  • Microsoft Azure: Vulnerabilidades en la infraestructura de Azure o en las aplicaciones desarrolladas para la plataforma.
  • Google Cloud Platform (GCP): Análisis de la seguridad de los contenedores de Google Kubernetes Engine o de las bases de datos Cloud SQL.

Pruebas de hardware

Evalúan la seguridad del hardware de los dispositivos, como:

  • Impresoras: Intercepción de datos sensibles o manipulación del firmware para obtener acceso no autorizado.
  • Smartphones: Ataques a través de interfaces USB o Bluetooth, o análisis de vulnerabilidades en el sistema operativo del dispositivo.
  • Dispositivos IoT: Vulnerabilidades en el firmware o en la configuración de dispositivos como routers, cámaras IP o smart TV.

Caja negra vs. caja blanca vs. caja gris

El hecho de que el tester conozca en menor o mayor medida cómo están construidas las redes informáticas de la empresa y sepa dónde se aloja la información puede hacer que los resultados del pentesting varíen enormemente. En este aspecto, diferenciamos entre caja negra (black box), caja blanca (white box) y caja gris (grey box).

Caja blanca

La prueba de penetración de caja blanca consiste en compartir con el tester toda la información del sistema, como los mapas de redes y las credenciales (contraseñas, IP, etc.). De esta forma, podemos evaluar de forma más directa y certera las medidas de ciberseguridad de un sistema en su totalidad en un menor tiempo. También es útil para simular un ataque cibernético si proviniese de alguien de dentro de la empresa.

Pentesting de caja negra

Al contrario que en la caja blanca, en el pentesting de caja negra, al tester no se le proporciona ninguna información, como si fuera un atacante totalmente anónimo. Así pues, el tester se las tiene que apañar para poder franquear todos los controles de seguridad y obtener las credenciales necesarias para detectar alguna vulnerabilidad. Aunque esta opción sea la más cara, es la que más se asemeja a un ataque cibernético real externo.

Pentesting de caja gris

En este caso, ni una cosa ni la otra; se le proporciona al tester información parcial sobre la estructura de red del sistema. Esta táctica se emplea cuando nuestro sistema informático tiene permisos de acceso estratificados por niveles. Con esta, se quiere comprobar hasta qué punto podría navegar un usuario que posea unas determinadas credenciales y descubrir en qué medida podría causar daño en el sistema.

Proceso de pentesting

Si bien todas las empresas tienen sus propios protocolos de pentesting, todas siguen un proceso parecido para planificar, documentar y sacar sus conclusiones de las pruebas de penetración que deciden implementar.

  • Planificación y reconocimiento: El primer paso es definir qué se va a evaluar, qué partes de los sistemas o aplicaciones de la empresa, el tipo de pruebas que nos conviene en cada caso y el nivel de profundidad que se quiere explorar. Se recopila información sobre la empresa y sus tecnologías, y se realiza un análisis de riesgos para identificar posibles amenazas y vulnerabilidades.
  • Escaneo: Se utilizan herramientas automatizadas para identificar vulnerabilidades en los sistemas y aplicaciones. Posteriormente, se realizan pruebas manuales para verificar las vulnerabilidades encontradas y hasta qué punto podría afectar negativamente al sistema si tuviera que responder ante un ataque.
  • Explotación y acceso: Se intentan burlar las medidas de ciberseguridad del sistema a toda costa aprovechando las vulnerabilidades encontradas para obtener acceso a los sistemas y datos confidenciales. Se evalúa el impacto potencial que un atacante podría causar, incluyendo el robo de datos confidenciales, la interrupción del funcionamiento de la red y el perjuicio que sufriría la reputación de la empresa.
  • Registro: Se documentan todos los pasos del proceso de pentesting y otros detalles relevantes, como las herramientas y técnicas utilizadas, las vulnerabilidades encontradas y los resultados de las pruebas. Finalmente, se genera un informe con los resultados de las pruebas y las recomendaciones para mejorar la seguridad.
  • Automatización de pentesting: Para ahorrar tiempo y mejorar la productividad, se utilizan herramientas de automatización para configurar las mismas pruebas de penetración de forma periódica.

Artículos relacionados

La estadística puede utilizarse de forma engañosa. En este artículo te contamos los sesgos estadísticos más comunes.
pablo.blanco

¿Los datos mienten? Estos son los sesgos estadísticos que más te engañan

09/01/2024

Vamos a empezar el artículo con una gran verdad: la estadística, aunque represente datos discutiblemente exactos, puede utilizarse de forma engañosa. Hasta la más exacta de las ope

Actúa como un intermediario entre el código máquina y los lenguajes de alto nivel. ¡Descubre mucho más con nosotros!

¿Qué es el lenguaje ensamblador (ASM)?

05/12/2023

El lenguaje ensamblador actúa como un intermediario entre el código máquina y los lenguajes de alto nivel, ofreciendo una comunicación más directa c

Es un conjunto de principios breves y sencillos que definen el diseño y la funcionalidad de Python. ¡Te explicamos cada uno con ejemplos!
pablo.blanco

Los 20 principios del Zen de Python explicados con ejemplos

08/07/2024

El Zen de Python (también llamado PEP 20) son un conjunto de principios breves y sencillos que definen el diseño y la funcionalidad de Python como lenguaje de programación.