Si tuvieras que cifrar y comprimir datos durante la transmisión, ¿qué harías primero y por qué?
La compresión busca utilizar patrones en los datos para reducir su tamaño.
El cifrado busca aleatorizar los datos para que no sean interpretables sin una clave secreta.
Si cifras primero y luego comprimes, tu compresión será inútil. La compresión no funciona con datos aleatorios.
Si comprimes primero y luego cifras, un atacante puede encontrar patrones en la longitud del mensaje (índice de compresión) para aprender algo sobre los datos y potencialmente frustrar el cifrado (como CRIME)
¿Qué podrían hacer los atacantes con la vulnerabilidad de inyección de cabeceras HTTP?
Los retornos de carro y saltos de línea (o %0D y %0A) son medios para un fin que permitiría a los atacantes controlar las cabeceras HTTP
Los atacantes podrían inyectar XSS a través de la cabecera Referer
Los atacantes podrían establecer una cookie a un valor conocido por el atacante (fijación de sesión)
Los atacantes podrían redirigir a un servidor malicioso
Describe el último programa o script que escribiste. ¿Qué problema resolvió?
Solo se busca señales de que el candidato tiene una comprensión básica de los conceptos de programación y es al menos capaz de escribir programas simples
¿Cómo implementarías un campo de inicio de sesión seguro en un sitio web de alto tráfico donde el rendimiento es una consideración?
TLS (independientemente del rendimiento) es imprescindible
¿Cuáles son las diversas formas de manejar la fuerza bruta?
Bloqueos/tiempos de espera de cuentas
Límite de tasa de API
Restricciones de IP
Fail2ban
...etc.
¿Qué es la falsificación de solicitudes entre sitios (CSRF)? ¿Y cómo defenderse de ella?
Cuando un atacante consigue que el navegador de la víctima realice solicitudes con las credenciales de la víctima
Ejemplo: si una etiqueta de imagen (``) apunta a una URL con una acción asociada, p. ej. https://foo.com/logout
La defensa incluye, entre otras:
verificar la cabecera Origin y la cabecera Referer
verificar tokens CSRF o nonces
¿Qué es Cross-Site Scripting? ¿Cuáles son los diferentes tipos de XSS? ¿Cómo defenderse de XSS?
XSS ocurre cuando los atacantes consiguen que el navegador de la víctima ejecute algún código (generalmente JavaScript) dentro de su navegador
Tradicionalmente, los tipos se han clasificado en ataques XSS almacenados y reflejados.
El XSS almacenado es algún código que un atacante pudo persistir en una base de datos y que se recupera y presenta a las víctimas (p. ej. un foro)
El XSS reflejado suele tener la forma de una URL maliciosamente elaborada que incluye el código malicioso. Cuando el usuario hace clic en el enlace, el código se ejecuta en su navegador
Recientemente ha habido discusiones sobre el XSS basado en DOM, que ocurre cuando los atacantes pueden controlar elementos del DOM, logrando así XSS sin enviar ninguna solicitud al servidor
Las categorías de XSS tienden a superponerse, por lo que es mucho mejor describir XSS en términos como XSS almacenado en servidor, XSS reflejado en servidor, XSS almacenado en cliente (p. ej. XSS almacenado basado en DOM) o XSS reflejado en cliente (p. ej. XSS reflejado basado en DOM)
La defensa incluye:
Codificación de salida (más importante)
Validación de entrada (menos importante)
¿Cómo maneja el estado HTTP?
HTTP es sin estado
El estado se almacena en cookies
Arquitecto
¿Has diseñado medidas de seguridad que abarquen dominios de información superpuestos?
¿Puedes darme algunos ejemplos de requisitos de arquitectura de seguridad?
¿Qué desafíos de seguridad especiales presenta la arquitectura orientada a servicios (SOA)?
¿Has diseñado una solución de seguridad que involucrara componentes SaaS? ¿Qué desafíos enfrentaste?
¿Has trabajado en un proyecto en el que las partes interesadas eligieron aceptar riesgos de seguridad identificados que te preocupaban? ¿Cómo manejaste la situación?
¿Cómo manejas las demandas de diferentes partes interesadas que tienen requisitos conflictivos?
¿Cómo te aseguras de que los arquitectos de soluciones desarrollen soluciones seguras?
¿Cómo te aseguras de que una solución siga siendo resiliente ante amenazas en evolución?
¿Cuál crees que es la tecnología más importante en este momento? ¿Cómo vamos a asegurarla?
Equipo Azul
Dado un registro de tráfico HTTP entre una máquina de tu red y un sitio web de terceros (p. ej. Google), ¿cómo se verían los puertos de origen y destino?
El puerto de origen podría ser un número por encima del puerto 1024 (también conocido como puerto efímero)
El puerto de destino podría ser 80 (HTTP) o 443 (HTTPS)
Cifrado
¿Cuál es la diferencia entre codificación, cifrado y hash?
La codificación garantiza la integridad del mensaje. Puede invertirse fácilmente. Ejemplo: base64
El cifrado garantiza la confidencialidad del mensaje. Solo se puede invertir utilizando las claves de descifrado adecuadas. Ejemplo: AES256
El hash es una función unidireccional. No se puede invertir. La salida tiene una longitud fija y suele ser más pequeña que la entrada.
¿TLS utiliza cifrado simétrico o asimétrico?
Ambos.
El intercambio inicial se realiza mediante cifrado asimétrico, pero el cifrado de datos masivos se realiza mediante simétrico. Consulta la siguiente pregunta para obtener información adicional.
Describe el proceso de establecimiento de una sesión TLS cuando alguien visita un sitio web seguro.
El cliente envía un mensaje hello que enumera información criptográfica, como la versión de SSL/TLS y el orden de preferencia de las suites de cifrado del cliente. El mensaje también contiene una cadena de bytes aleatoria que se utiliza en cálculos posteriores. El cliente puede incluir métodos de compresión de datos en el mensaje hello también.
El servidor responde con un mensaje hello que contiene la suite de cifrado elegida por el servidor, el certificado digital del servidor y otra cadena de bytes aleatoria. Si el servidor requiere autenticación mediante certificado de cliente, el servidor también enviará una client certificate request (solicitud de certificado de cliente) al cliente.
El cliente verifica el certificado digital del servidor.
Forense
General
¿Los proyectos de código abierto son más o menos seguros que los proyectos propietarios?
Ambos modelos tienen pros y contras.
Hay ejemplos de proyectos inseguros que han salido de ambos bandos.
El modelo de código abierto fomenta "muchos ojos" en un proyecto, pero eso no necesariamente se traduce en productos más seguros
Lo importante no es código abierto vs. propietario, sino el control de calidad del proyecto.
¿A quién admiras en el campo de la Seguridad de la Información? ¿Por qué?
¿De dónde obtienes tus noticias de seguridad?
Respuesta a Incidentes
Redes
Equipo Rojo
Gestión de Vulnerabilidades
¿Qué clasificación de vulnerabilidades es la más explotada?
¿Con qué frecuencia deberías escanear?
¿Cuál es la diferencia entre un escaneo externo y uno interno?
¿Cuál es la diferencia entre un escaneo autenticado y uno no autenticado?
¿Cómo podría un escaneo identificar la huella (fingerprint) de un sistema operativo?
¿Qué es una puntuación CVSS?
¿Cómo deberías dividir los escaneos?
¿Cómo asesorarías a las diferentes organizaciones sobre qué deberían parchear primero?
¿Qué es una vulnerabilidad?
¿Estás familiarizado con alguna de las formas estándar de la industria de rastrear vulnerabilidades?
¿Qué es CVE y por qué es importante la estandarización que proporciona?
¿Dónde irías para encontrar información adicional sobre una vulnerabilidad?
¿Cuál es la diferencia entre un exploit y una vulnerabilidad?
Si hay una amenaza, pero no una vulnerabilidad, ¿dirías que todavía hay riesgo? ¿Y si hay una vulnerabilidad, pero no una amenaza?
¿Puedes enumerar algunas vulnerabilidades de las que hayas oído hablar recientemente?
¿Estás familiarizado con alguna de las herramientas utilizadas para escanear vulnerabilidades? Si no, ¿puedes nombrar alguna?
¿Puedes enumerar algunas herramientas utilizadas para parchear vulnerabilidades en una empresa?
¿Qué es SCCM?
¿Estás familiarizado con alguna de las herramientas de código abierto comúnmente utilizadas para explotar vulnerabilidades?
¿Puedes enumerar algún software conocido por tener vulnerabilidades de manera constante?
¿Con qué frecuencia se publican los parches de Microsoft (no urgentes?
El cliente envía una cadena de bytes aleatoria cifrada con la clave pública del servidor para permitir que tanto el cliente como el servidor calculen la clave secreta utilizada para el cifrado posterior entre cliente y servidor.
Si el servidor solicitó un certificado de cliente, el cliente envía una cadena de bytes aleatoria cifrada con la clave privada del cliente junto con el certificado digital del cliente o una "alerta de no certificado digital". Esta alerta es solo una advertencia, pero algunas implementaciones harán fallar el handshake si la autenticación del cliente es obligatoria.
El servidor verifica el certificado digital del cliente.
El cliente envía un mensaje finished cifrado con la clave secreta calculada
El servidor envía un mensaje finished cifrado con la clave secreta calculada
Durante la duración de la sesión TLS, el servidor y el cliente ahora pueden intercambiar mensajes cifrados simétricamente con la clave secreta compartida
El secreto perfecto hacia adelante es un sistema que utiliza claves de sesión efímeras para realizar el cifrado real de los datos TLS, de modo que incluso si la clave privada del servidor se viera comprometida, un atacante no podría usarla para descifrar datos capturados que se hubieran enviado a ese servidor en el pasado.