Se garantiza que el software tiene errores. Puede haber muchos miles de líneas de código en el software, y la falibilidad humana significa que al menos algunas de ellas no estarán completas como se esperaba. El ciclo de vida del desarrollo de software es un proceso diseñado para tratar de minimizar estos problemas mediante pruebas periódicas.
El problema es que las pruebas a menudo las realizan los desarrolladores, que pueden haber aprendido a codificar algo, pero es posible que no hayan aprendido prácticas de codificación seguras. Incluso en sistemas probados a fondo, tener un observador externo que mire y aporte una nueva perspectiva puede ayudar a identificar nuevos problemas.
Una forma común de hacerlo es a través de una prueba de penetración, generalmente abreviada como pentest. Esto implica contratar a un hacker profesional y ético, un pentester, para examinar el sistema y encontrar cualquier problema de seguridad.
Sugerencia: es "pentest" y "pentester", no "pentest". Un pentester no prueba bolígrafos. La "prueba de penetración" es un poco más aceptable que la "prueba de penetración", pero generalmente también debe evitarse.
El objetivo de un pentest
El objetivo de cualquier pentest es identificar todas las vulnerabilidades de seguridad en el sistema que se está probando e informarlas al cliente. Sin embargo, por lo general, los compromisos tienen un límite de tiempo basado en el costo. Si una empresa tiene un pentester interno o un equipo de pentest, pueden trabajar permanentemente para la empresa. Aún así, muchas empresas con la escala para eso tienen una amplia cartera de sistemas que deben probarse. Esto incluye tanto los productos que se venden como los sistemas comerciales de la empresa.
Como tal, no pueden pasar todo el tiempo probando una cosa. Muchas empresas prefieren contratar a una empresa externa de pentesting para realizar el compromiso. Esto todavía tiene un límite de tiempo basado en el costo. El costo se debe al hecho de que un pentest es un proceso muy manual y ese conjunto de habilidades es escaso.
Por lo general, un pentest tendrá un alcance de un período de tiempo específico. Esto se hace en función del objetivo en cuestión y del tiempo que debería llevar estar razonablemente seguro de haber encontrado todo. La línea de tiempo para encontrar vulnerabilidades es generalmente una curva de campana. No se encuentra mucho al instante cuando el pentester mira alrededor de la aplicación. Luego, la gran mayoría de los hallazgos se pueden lograr dentro de una escala de tiempo específica antes de disminuir. En algún momento, el costo de pasar más tiempo buscando no compensa la posibilidad de que no haya nada más que encontrar.
A veces, incluso el precio cotizado por el tiempo recomendado es demasiado. En este caso, la prueba puede ser "encuadrada en el tiempo". Aquí es donde el cliente acepta que no está probando tanto como se recomienda, pero quiere que los pentesters hagan lo mejor que puedan en un marco de tiempo reducido. Por lo general, esto se incluye como una advertencia en el informe.
Proceso manual
Algunas herramientas están disponibles para realizar pruebas de seguridad automáticamente. Estos pueden ser útiles. Sin embargo, a menudo tienen altas tasas de falsos positivos y falsos negativos. Esto significa que debe dedicar tiempo a investigar los problemas de verificación, sabiendo que es posible que no sea exhaustivo. La mayoría de estas herramientas buscan indicadores específicos, como versiones de software vulnerables conocidas o funciones vulnerables conocidas. Sin embargo, hay muchas maneras de que estos no sean problemas reales o mitigados en la práctica.
Las vulnerabilidades de seguridad pueden surgir de un montón de piezas aparentemente inocuas. La mejor manera de detectar esto es a través del esfuerzo humano manual. Los pentesters usan herramientas pero saben cómo interpretar los resultados, verificarlos manualmente y realizar acciones manuales independientes. Este esfuerzo manual separa un pentest de un análisis de vulnerabilidad o una evaluación de vulnerabilidad.
Tipos de Pentest
Por lo general, un pentest implica probar un producto completo tal como se implementaría. Idealmente, esto sucede en un entorno de producción real. Sin embargo, esto no siempre es práctico. En primer lugar, existe el temor de que el pentest pueda desconectar al objetivo. En general, este temor es esencialmente infundado. Los pentests generalmente no generan demasiado tráfico de red, tal vez el equivalente a unos pocos usuarios activos adicionales. Los pentesters tampoco probarán deliberadamente problemas de tipo denegación de servicio, especialmente en entornos de producción. En su lugar, por lo general informarán sobre los problemas de denegación de servicio sospechosos para permitir que el cliente lo investigue por sí mismo.
Además, vale la pena señalar que si el sistema está conectado a Internet, está constantemente sujeto a "pentests gratuitos" de piratas informáticos de sombrero negro reales y sus bots. Otra razón para evitar los entornos de producción son los problemas de privacidad con los datos de usuario en vivo. Los pentesters son piratas informáticos éticos bajo NDA y contratos, pero si existe un entorno de prueba y es similar, se puede usar.
Sugerencia: un "pentest gratuito" es una forma jocosa de referirse a estar bajo el ataque de los sombreros negros en Internet.
Los pentest se pueden realizar básicamente contra cualquier sistema tecnológico. Los sitios web y la infraestructura de red son los tipos de pruebas más comunes. También obtiene pruebas de API, pruebas de "cliente pesado", pruebas móviles, pruebas de hardware y más.
Variaciones sobre el tema
Siendo realistas, los ejercicios de phishing, OSINT y equipo rojo están relacionados pero son ligeramente diferentes. Es probable que esté al tanto de la amenaza del phishing. Algunas pruebas implican realizar pruebas para ver cómo responden los empleados a los correos electrónicos de phishing. Al rastrear cómo los usuarios interactúan, o no, con el phishing, es posible aprender cómo adaptar la capacitación futura sobre phishing.
OSINT significa Inteligencia de código abierto. Una prueba OSINT gira en torno al raspado de información disponible públicamente para ver cómo se pueden recopilar datos valiosos y cómo se pueden usar. Esto a menudo implica generar listas de empleados de lugares como LinkedIn y el sitio web de la empresa. Esto puede permitir que un atacante identifique a figuras de alto nivel que podrían ser buenos objetivos para un ataque de spear-phishing, phishing específicamente diseñado para el destinatario individual.
Un compromiso de equipo rojo suele ser mucho más profundo y puede involucrar algunos o todos los demás componentes. También puede incluir pruebas de seguridad física y cumplimiento de la política de seguridad. Desde el punto de vista de la política, esto implica ingeniería social. Eso está tratando de convencer a su entrada en el edificio. Esto puede ser tan simple como pasar el rato en el área de fumadores y volver con los fumadores después de una pausa para fumar.
Puede ser hacerse pasar por un funcionario o pedirle a alguien que le abra una puerta mientras lleva una bandeja con una taza de café. En el lado de la seguridad física, incluso puede implicar intentar entrar físicamente, probar la cobertura de la cámara, la calidad de las cerraduras y cosas por el estilo. Los compromisos del equipo rojo generalmente involucran a un equipo de personas y pueden durar escalas de tiempo mucho más largas que las pruebas de penetración normales.
Equipos rojos
Un ejercicio de equipo rojo puede parecer menos ético que un pentest estándar. El probador se está aprovechando activamente de los empleados desprevenidos. La clave es que cuentan con el permiso de la dirección de la empresa, por lo general de la junta directiva. Esta es la única razón por la que está bien que un miembro del equipo rojo intente entrar. Sin embargo, nada permite que sea violento. Un ejercicio del equipo rojo nunca intentará herir o someter a un guardia de seguridad, eludirlos o engañarlos.
Para evitar que arresten al miembro del equipo rojo, generalmente llevarán un contrato firmado con las firmas de los miembros de la junta de aprobación. Si se detecta, esto se puede utilizar para demostrar que tenían permiso. Por supuesto, a veces, esto se usa como un doble farol. El jugador del equipo rojo puede llevar dos permisos, uno real y otro falso.
Cuando los atrapan, inicialmente entregan el formulario de permiso falso para ver si pueden convencer a la seguridad de que es legítimo, incluso cuando no lo es. Con ese fin, a menudo utilizará los nombres reales de la junta directiva de la empresa, pero incluirá un número de teléfono de verificación que va a otro miembro del equipo rojo informado para verificar la historia de portada. Por supuesto, si la seguridad ve a través de esto, se entrega la hoja de permiso real. Sin embargo, esto puede ser tratado con gran sospecha.
Dependiendo de cómo fue atrapado el miembro del equipo rojo, es posible continuar con la prueba, suponiendo que hayan pasado por alto al guardia de seguridad individual que los atrapó. Sin embargo, es posible que la identidad de la persona que realiza la prueba sea "falsa", esencialmente eliminándolo de cualquier otra prueba en persona. En este punto, otro miembro del equipo puede intercambiar con o sin informar a la seguridad.
Conclusión
Un pentest es un compromiso en el que se le pide a un profesional de seguridad cibernética que pruebe la seguridad de un sistema informático. La prueba consiste en buscar y verificar manualmente la presencia de vulnerabilidades. Las herramientas automatizadas se pueden utilizar como parte de esto. Al final de la prueba, se proporciona un informe que detalla los problemas encontrados y proporciona consejos para solucionarlos.
Es importante que este informe no sea solo el resultado automatizado de una herramienta, sino que se haya probado y verificado manualmente. Cualquier sistema informático, hardware, red, aplicación o dispositivo puede ser evaluado. Las habilidades necesarias para cada uno varían, pero a menudo son complementarias.