In this article
Conceptos básicos de las pruebas de caja negra
Simula a los atacantes en las pruebas de seguridad
Pruebas de caja negra: explicación
Crear aplicaciones de alta calidad y seguras es uno de los mayores desafíos del desarrollo de software. Las pruebas de seguridad ayudan a abordar ambos aspectos, ya que identifican posibles fallas y vulnerabilidades en el software. Las pruebas de caja negra son un buen punto de partida porque simulan cómo un atacante aprovecharía las fallas de un sistema para obtener acceso.
En este artículo, veremos todo lo que necesitas saber sobre las pruebas de caja negra, incluidos sus tipos y técnicas.
¿Qué son las pruebas de caja negra?
Las pruebas de caja negra son un método de prueba de software que no requiere conocer cómo está creada una aplicación. Utiliza una amplia variedad de técnicas de prueba para descubrir vulnerabilidades o debilidades en el producto y simula cómo un atacante real buscaría fallas explotables en el software.

4 tipos de pruebas de caja negra
Los profesionales de seguridad recurren a varias técnicas de pruebas de caja negra, tanto automatizadas como manuales, para evaluar la seguridad de un sistema. Revisemos algunos de los tipos más populares.
1. Análisis de vulnerabilidades
Para hackear una aplicación, el atacante primero debe entender cómo funciona. El análisis de vulnerabilidades les ofrece a los hackers una forma sencilla de conocer un sistema y descubrir sus fallas de seguridad. Sin embargo, también es una parte importante de la seguridad de las aplicaciones, ya que te permite asumir el papel de un hacker para prevenir estos ataques.
Aunque el software automatizado para pruebas de caja negra, como ZAP, suele detectar las vulnerabilidades más evidentes, los profesionales de seguridad con más experiencia pueden complementar este análisis con pruebas manuales para descubrir las vulnerabilidades que podrían pasar inadvertidas en las pruebas automatizadas. También puedes combinar varias herramientas para buscar vulnerabilidades, por ejemplo, las herramientas compatibles con Kali Linux o Chrome DevTools para inspeccionar aplicaciones web.
2. Pruebas de penetración
Las pruebas de penetración simulan escenarios de ataque reales en los que los hackers intentan acceder a los datos y recopilarlos para llevar a cabo acciones maliciosas que comprometan el sistema.
Las pruebas de penetración suelen realizarse manualmente, según la experiencia de quien las lleva a cabo. Por ejemplo, puedes usarlas para revisar la API que obtiene los productos disponibles que un usuario puede comprar. En este caso, tendrías que probarla con distintas entradas para detectar respuestas anormales o errores de seguimiento de pila.
También puedes realizar pruebas de penetración automáticamente con herramientas de código abierto como Powershell Suite.
3. Descubrimiento de la topología de red
El descubrimiento de la topología de red ayuda a comprender la disposición actual de la red dentro de tu sistema, incluidas las conexiones entre sus elementos y la forma en que interactúan. Esto, a su vez, permite identificar los elementos potencialmente vulnerables de la red y mitigar los riesgos.
4. Evaluación de riesgos
Este tipo particular de prueba de seguridad requiere muy pocos conocimientos técnicos sobre el sistema y se enfoca más en el aspecto empresarial: los requisitos que podrían generar riesgos de seguridad. La evaluación de riesgos puede aplicarse en las primeras etapas del desarrollo del producto, desde la concepción hasta la planificación de sprints del equipo de desarrollo de software. Así, puede prevenir problemas de seguridad desde las primeras etapas del ciclo de vida del desarrollo de software (SDLC).
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
Ejemplo de pruebas de caja negra
Veamos un ejemplo de pruebas de caja negra.
Primero, tendrás que clonar este repositorio en tu entorno local: https://github.com/appsecco/dvna. Esto iniciará la aplicación de ejemplo, que tiene varias vulnerabilidades explotables:

Para configurar rápidamente el ejemplo, ejecuta el siguiente comando:
docker run --name dvna -p 9090:9090 -d appsecco/dvna:sqliteAnálisis automatizado de vulnerabilidades con ZAP
Usaremos ZAP para realizar pruebas de caja negra, así que tendrás que instalar ZAP en tu equipo.
Primero, ejecutaremos análisis automatizados para buscar vulnerabilidades en el sitio. Cuando termine el análisis, tendrás una lista de alertas sobre vulnerabilidades, junto con una descripción y una solución propuesta para cada una.

Inyección SQL manual
Aunque el análisis automatizado es fácil de realizar y constituye un buen punto de partida para las pruebas de seguridad, algunos aspectos requieren pruebas manuales. La inyección SQL es un ejemplo. Ejecutemos la consulta SQL simple ' or '1'='1 para hacer una búsqueda en la aplicación:

Aquí se muestra cómo afectó a la interfaz de usuario que ven todas las personas que usan el sistema. Esto podría permitir que los hackers recopilen datos de los usuarios del sistema e incluso vendan datos de clientes a empresas competidoras.
El proceso de pruebas de caja negra
Las pruebas de caja negra buscan problemas de seguridad explotables en los sistemas sin necesidad de acceder al código del producto de software ni de comprender a fondo cómo se desarrolla la aplicación. Al finalizar la prueba, se obtiene una lista de errores de seguridad que se deben revisar, priorizar y corregir.
Los siguientes pasos son:
El equipo de desarrollo debe encontrar soluciones para cada problema de seguridad.
Los analistas de seguridad vuelven a revisar para confirmar que los errores se hayan corregido.
El equipo de desarrollo ejecuta pruebas de regresión para confirmar que todo funcione correctamente y que la corrección no haya afectado ninguna función existente.
4 técnicas de pruebas de caja negra
Las pruebas de seguridad pueden considerarse un arte, en especial las pruebas de caja negra. La regla fundamental es ser creativo y pensar como un hacker. Hay varias técnicas de pruebas de caja negra que puedes aplicar.
1. Fuzzing
La técnica de fuzzing prueba servicios de API o interfaces web para observar el comportamiento del sistema ante entradas aleatorias o personalizadas. Si detectas un comportamiento inusual, el equipo de desarrollo debe encontrar la causa raíz y proponer una solución.
2. Pruebas de sintaxis
Las pruebas de sintaxis buscan entradas no válidas, como una sintaxis incorrecta. También verifican si el sistema muestra datos confidenciales relacionados con bases de datos o información de clientes que los hackers podrían aprovechar.
3. Pruebas exploratorias
Las pruebas exploratorias son una técnica común de análisis de caja negra que ayuda a los analistas de seguridad a conocer mejor el sistema mientras buscan problemas de seguridad ocultos durante todo el proceso de prueba. Los errores de seguridad se detectan y reportan a medida que aparecen, junto con las posibles soluciones.
4. Análisis de datos
Las pruebas de análisis de datos consisten en revisar registros, respuestas de servicios de backend de API o interfaces web que podrían ser ilegales o usarse para atacar el sistema o recopilar datos de usuarios. Para realizar estas pruebas de manera adecuada y eficiente, se necesita un buen sistema de monitoreo y depuración que recopile registros y visualice datos. También podría ser necesario configurar reglas para recibir alertas de seguridad al instante cuando surjan problemas.
Pruebas de caja negra frente a pruebas de caja blanca
En las pruebas de seguridad, hay casos en los que es necesario realizar tanto pruebas de caja negra como pruebas de caja blanca. Veamos las diferencias entre dos de los métodos más populares de pruebas de caja negra y de caja blanca: las pruebas dinámicas de seguridad de aplicaciones (DAST) y las pruebas estáticas de seguridad de aplicaciones (SAST).
Método de caja negra: pruebas dinámicas de seguridad de aplicaciones (DAST)
Pruebas dinámicas sin acceder al código fuente de la aplicación ni analizarlo.
Pueden realizarse manualmente (por especialistas en seguridad) o de forma automatizada.
La aplicación se prueba desde el exterior, sin acceder a la estructura interna del software.
Es difícil garantizar que se haya cubierto toda la base de código.
Por lo general, es más costoso porque hay que implementar la aplicación para probarla.
Método de caja blanca: pruebas estáticas de seguridad de aplicaciones (SAST)
SAST se usa para analizar el código fuente.
Por lo general, se realiza antes de compilar el código.
A menudo se realiza con herramientas automatizadas de SAST.
Puede analizar el 100 % de la base de código.
Corregir los problemas de seguridad cuesta menos porque se detectan antes en el ciclo de vida del desarrollo de software.
El tipo de prueba que mejor se adapte a tus necesidades, ya sea de caja negra, de caja blanca o ambos, dependerá del caso de uso.
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
Conclusión
Las pruebas de caja negra son una parte importante de la seguridad de las aplicaciones. Sin conocer la arquitectura interna del software, este método de prueba ofrece una visión objetiva y realista de tu aplicación. Aunque quizá no cubra toda la base de código, al combinarse con otros métodos de pruebas de seguridad, ayuda a los equipos de seguridad a entregar productos de alta calidad y más seguros.
Con herramientas diseñadas para desarrolladores e inteligencia de seguridad líder en el sector, Snyk ayuda a los desarrolladores a entregar productos de calidad más rápido y, al mismo tiempo, mantener seguros el código, las bibliotecas de código abierto, los contenedores y la infraestructura como código. Agenda una demostración hoy mismo.