Docker aplicado al Incident Handling

Docker ya lleva entre nosotros algún tiempo. En esta entrada se va a hablar de cómo es posible sacar partido de Docker y su uso en DFIR para un análisis rápido en los equipos de los analistas.

En primer lugar hay que conocer Docker. No hace falta sacarnos un máster, pero al menos conocer los conceptos básicos de la tecnología Docker. Voy a explicar muy brevemente los conceptos de imagen y contenedor, y cómo Docker trabaja con ellos.

  • Una imagen Docker es un sistema “congelado”, un sistema pausado o en estado de hibernación, el cual se encuentra en un modo de solo lectura.
  • Un contenedor no es más que una imagen en ejecución. Docker “le da al play” y añade una capa sobre la imagen en un modo de lectura-escritura.

Cuando el contenedor se detiene o se borra, Docker automáticamente elimina la capa de lectura-escritura dejando la imagen en su estado original. Esto permite reutilizar un sistema base en varios entornos, o partir siempre del mismo sistema base.
[Read more…]

Rastreando XSS con Sleepy Puppy

Cross Site Scripting (XSS) es una vulnerabilidad que permite ejecutar código JavaScript en el navegador de la víctima sin su consentimiento. Por ejemplo, un XSS permite a un atacante, entre muchas posibilidades, mostrar el clásico mensaje mediante un pop-up, redirigir el navegador de la víctima a un sitio de terceros o robar las cookies de su sesión.

La herramienta que ocupa esta entrada es Sleepy Puppy y fue lanzada por Netflix en 2015 (sí, la Netflix que todos conocemos). Ésta permite, principalmente, mediante la inyección de determinados payloads en JavaScript, seguir la traza de las vulnerabilidades XSS obteniendo información de las víctimas del ataque. La información obtenida de éstas abarca desde cookies, hasta su user-agent, el código del DOM o una captura del sitio afectado (entre muchas más posibilidades). [Read more…]

Qué es un TDS (Traffic Director System)

La idea para escribir este post surgió a raíz de haber  investigado múltiples casos de infecciones en equipos a causa de los omnipresentes Exploit Kits (EK). Una visita a un sitio web que aparentemente no debía comportar ningún riesgo, acababa con el usuario llamando al servicio de seguridad porque no podía abrir sus ficheros y comentando que le aparecía una imagen en la pantalla pidiéndole dinero por recuperar sus datos. Y en otros casos ni tan siquiera eso, porque se había infectado con un RAT o un troyano bancario y no era consciente de ello.

Existen métodos de redirección simples que se implementan directamente en el servidor web; son opciones que permiten gestionar las visitas a dicho sitio web y adaptar su comportamiento a las preferencias o características de los visitantes.

[Read more…]

Mercure – Facilitando la pesca

El phishing, aunque es uno de los vectores de ataque de los más antiguos, sigue siendo uno de los preferidos y más utilizados hoy en día por los ciberdelincuentes, ya que en la mayoría de los casos ataca directamente al eslabón más débil: el ser humano.

Por suerte, los mecanismos de defensa han avanzado lo suficiente como para ponerlo bastante difícil. Un claro ejemplo son los avanzados filtros antispam que incorporan hoy en día la mayoría de los clientes de correo electrónico. Pero como sabemos, la seguridad total no existe, por lo que los criminales siempre encuentran un medio para que el phishing sea todavía una técnica de ataque eficaz.

En esta entrada vamos a analizar la herramienta Mercure,  utilizada para llevar a cabo ataques de este tipo de una manera sencilla, y que en nuestro caso puede servirnos para poner a prueba el grado de concienciación de los usuarios de nuestra organización (con las autorizaciones correspondientes). Una de sus mayores bondades es que es Open Source y se encuentra escrita en Python, por lo que las modificaciones resultan bastante sencillas de realizar. Podemos descargarla desde su GitHub. Tenemos dos maneras de instalar Mercure, utilizando el típico git clone o desplegando el docker que nos facilita su creador. Cualquiera que elijamos se encuentra perfectamente detallada en su README.

[Read more…]

Recuperación de ficheros borrados con Scalpel

Recientemente, me encontraba terminando un script en bash, realizando pruebas para comprobar que estaba funcionando correctamente cuando, tras realizar unas modificaciones al script y volver a lanzarlo, comenzó a ejecutarse un borrado recursivo de los ficheros de la máquina, el temido ‘rm -rf‘. La típica ‘noobada‘ que esperas que nunca te ocurra sucedió.

Afortunadamente, el script se estaba ejecutando en una máquina virtual de pruebas como usuario no privilegiado, por tanto la máquina seguía estando operativa. Gracias a estas medidas de precaución pude comprobar el alcance de la broma y ver que todo el directorio /home del usuario se había borrado. Dicho directorio contenía el script que estaba escribiendo de modo que, se podría decir, que el script se había fagocitado a sí mismo, llevándose con él unas cuantas horas de trabajo.

[Read more…]

MOSH, mas allá del SSH

A día de hoy, no creo que sea necesario mencionar qué es el protocolo SSH (Secure Socket Shell) ya que sería realmente complicado vivir actualmente sin él. Por ello, se considera SSH a nivel global como la “mega” herramienta indispensable para cualquier labor de administración. Entre las ventajas de su uso podemos encontrar: acceso seguro a máquinas remotas, acceso a servicios en otras máquinas mediante la creación de túneles directos o reversos, creación de proxy socks, creación de canales seguros para la encapsulación de trafico de aplicaciones no seguras… etc.

Entre las inumerables ventajas de este protocolo, existe un punto que en ocasiones puede ser un gran inconveniente, el rendimiento de la conexión.

Para intentar dar solución a éste problema y añadir mejoras, surgió Mosh (mobile shell), aplicación que aporta diversas ventajas sobre la conexión SSH tradicional. Fue presentada en el USENIX Annual Technical Conference 2012 por Keith Winstein & Hari Balakrishnan, M.I.T. Computer Science and Artificial Intelligence Laboratory.

[Read more…]

Volvamos al Collins

En la actualidad, el tráfico http cada vez es menos visible para un analista de seguridad ya que ahora, en muchos casos, los servidores web obligan a usar https y por lo tanto, dejamos de tener mucha visibilidad.

En este aspecto, algunas organizaciones optan, o bien por “romper” el tráfico ssl gracias al uso de un certificado impuesto, o bien solo permiten acceso https para algunos servicios determinados. Algunos de estos servicios, como es el caso de Google, suelen estar permitidos.

Hablemos entonces, por ejemplo, del traductor de Google. Se me ocurrió la idea de hacer bypass a las conexiones a través de un traductor, en este caso de Google. [Read more…]

Actualización automática de reglas Snort con PulledPork

Nos encontramos en una época en la cual, cada día que pasa, se descubren nuevas vulnerabilidades software, y es muy probable que alguien con malas intenciones intente aprovecharse de estos fallos para realizarnos un nuevo tipo de ataque y que nuestros sistemas informáticos de seguridad no se percaten de dicha intrusión.

Por esta razón, es tan importante mantener todos nuestros sistemas de detección de intrusos (IDS) actualizados. En esta ocasión, se presenta una herramienta para la actualización de reglas del IDS Snort, llamada PulledPork.

PulledPork es un script escrito en Perl que descarga, combina, instala y actualiza conjuntos de reglas de varios sitios que serán usados por el IDS Snort. [Read more…]

Bro IDS tips and tricks

Como continuación del excelente post sobre Bro que publicó nuestro compañero Juan Manuel hace un tiempo, en el presente recopilamos diversos tips and tricks para dicha herramienta que esperamos que os sean de utilidad. Nos centraremos en la última versión estable, Bro 2.5, publicada en noviembre del pasado año 2016.

Captura sobre varios interfaces

En algunas ocasiones, el tráfico a monitorizar nos llega por varios interfaces de red diferentes; por ejemplo, en el caso de disponer de dos salidas a Internet. [Read more…]

Kypass para iOS. ¿Están mis contraseñas seguras?

Todos somos conocedores del valor de nuestras credenciales o contraseñas, esas llaves que nos dan acceso a parte de nuestra vida digital. No es extraño encontrarse durante los procesos de pentesting los típicos documentos “.txt”, Excel o Word con todos los passwords de acceso a los sistemas TI. Es más, cuando parte del proceso de intrusión se focaliza en el departamento financiero es habitual ver como un señor director contable guarda todas las contraseñas de acceso a las cuentas bancarias en un fichero de texto plano, adjuntando para mayor disfrute una copia escaneada de la tarjeta de coordenadas (ver Barbarities I: Banca electrónica).

Es por eso que siempre se recomienda el uso de aplicaciones de gestión de contraseñas que permitan almacenar de forma segura las llaves del reino. En este punto entraría ya en juego seleccionar, según criterios de confiabilidad si no te la quieres auditar tú), qué aplicación debe ser la encargada de cifrar nuestra información confidencial. Son numerosas las herramientas (de pago o de software libre) disponibles en el mercado y una de ellas puede ser la popular Keepass bajo licencia GNU. Según su página Web, el cifrado de la base de datos se realiza con un algoritmo AES o Twofish con un tamaño de bloque de 128bits y una longitud de clave de 256 bits, seems good.

Dada la popularidad que ha tomado esta herramienta, han surgido una serie de ports para diferentes operativos y dispositivos que, aprovechando el tirón de esta, tratan de hacer su negocio.

keepass-ios

keepass-ios-2En especial nos vamos a centrar en la aplicación de pago para iOS Kypass, que por el módico precio de 6,99€, promete dotar de un nivel de seguridad similar a “Fort Knox” a nuestras contraseñas.

Llegados a este punto, ¿qué requerimientos de seguridad le exigiríamos a un software de este tipo? Por ejemplo, ¿le exigiríamos que no realizara conexiones a Internet de forma no cifrada? Como por ejemplo…

POST http://www.kyuran.be

Aparentemente, estas peticiones se realizan de forma semanal a la web de los desarrolladores de la aplicación (invito al lector a visitarla). Os preguntaréis: ¿Para qué? ¿Para comprobar la versión y saber si se ha de actualizar? ¿Esto no se debería hacer a través del AppStore?

Veamos un poco más en detalle la información que remite. Pese a que las peticiones son de tipo POST, como parámetros en la URL vemos lo siguiente (separado para mejor lectura).

http://www.kyuran.be:3128/iphone/api.php?
UIDeviceName=iPhone+de+XXX
bundle=be.kyuran.kypass2
token=b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
s=10.0.2
v=3.7+(2764)
cmd=join

¿Para qué necesita una aplicación de almacenamiento de contraseñas remitir a los desarrolladores información como el nombre del teléfono, el nombre del paquete, el identificador único del terminal, la versión del operativo o el comando que ha de ejecutar contra el servidor (en este caso join)?

Destacar que como payload POST no se ha identificado el envío de otro tipo información pero quién sabe qué otros comandos permitirá el parámetro “cmd=” al margen de “join”.

Concluyendo, y como se ha comentado al principio del artículo, uno no dispone de todo el tiempo del mundo para auditar cada software que utiliza y por lo tanto entra en juego la confiabilidad basada en: el feeling que te pueda dar el desarrollador, si el código es libre o no, comentarios o popularidad de la herramienta dentro del mundo de la seguridad, etc.

Desde mi punto de vista personal, dada la criticidad de este tipo de software y basándome en esa comentada confiabilidad, optaría por otras soluciones de almacenamiento de contraseñas.