martes, 8 de mayo de 2018

Docker en el mundo de la ciberseguridad.

¿Qué es Docker?

Image result for docker
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de Virtualización a nivel de sistema operativo en Linux. Docker utiliza características de aislamiento de recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces) para permitir que "contenedores" independientes se ejecuten dentro de una sola instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.

Resumiendo Docker, es parecido a usar maquina virtuales pero eliminando la capa de emulación de la virtualizaciones convencionales.

Docker CE (community edition) vs Docker EE (enterprise edition)

Docker CE:

Docker Community Edition (CE) es el nuevo nombre para los productos Docker gratuitos. Docker CE se ejecuta en Linux (CentOS, Debian, Fedora y Ubuntu), Mac, Windows 10, AWS y Azure. Además está disponible en la Docker Store. Docker CE incluye la plataforma Docker completa y es ideal para desarrolladores y equipos de operaciones de que comienzan a construir aplicaciones en contenedores.

    Edge: Se libera cada mes y solo proporciona soporte a bugs y fallos de seguridad durante el mes en curso. 

    Stable: Se libera cada tres meses y tiene cuatro meses de soporte.

Docker EE:

Docker Enterprise Edition viene en tres versiones: básica, estándar y avanzada. La edición Basic viene con la plataforma Docker, soporte y certificación, mientras que la versión Standard y Advanced agrega características adicionales como administración de contenedores (Docker Datacenter) y Docker Security Scanning. 

· Basic: La plataforma Docker para infraestructura certificada, con soporte de Docker Inc. y Contenedores y complementos certificados de Docker Store. 

· Standard: Agrega administración avanzada de imágenes y contenedores, integración de usuarios LDAP / AD y control de acceso basado en roles (Docker Datacenter). 

· Advanced: Agrega Docker Security Scanning y monitoreo continuo de vulnerabilidades.

Docker Toolbox, el amigo de Windows y Mac.

Interhack y yo os recomendamos utilizar Docker bajo Linux, pero cada uno es libre de hacer lo que quiera o no ;) (usa Linux jejeje). Si eres de los que te gusta vivir la vida a tope y has decidido instalar Docker en Windows, entonces voy a presentarte a Docker Toolbox, pero antes hablemos del porque.

Cuando instalamos Docker bajo Windows uno de los requisitos es disponer y habilitar Microsoft Hyper-V. Hyper-v es un hipervisor nativo, que puede crear máquinas virtuales en sistemas x86-64 con Windows. Este esta incluido en las versiones de 64 bits de las ediciones Professional, Enterprise y Education de Windows 8, y en las versiones superiores. Así como en las versiones de servidor. Pero no está disponible en la edición Windows Home.

Entonces, si mi versión de Windows es anterior a la 8, ¿no puedo instalar Docker?, ¿me estas diciendo que no puedo tener instalado Docker y Virtual Box? La respuesta es "NO", no puedes instalar Docker en versiones anteriores a Windows 8. Y tampoco puedes tener instalado Docker y Virtual Box a la vez.

Qué no cunda el pánico, Docker nació antes que Windows 8, y por ello, lanzaron Docker Toolbox (requiere Virtual Box). Herramienta que hace posible utilizar el hypervisor de Virtual Box en Docker. Por lo que, ya podemos usar  Docker en sistemas Windows y Mac antiguos. Y si, como has comprobado, esto también hace posible utilizar Docker y Virtual Box a la vez.

Utilizar Docker bajo Linux es más limpio, ya que no requiere de ningún software adicional. Y si además utilizamos KVM (Kernel-based Virtual Machine), las máquinas virtuales se estarán gestionando casi como de un proceso del sistema se tratara, ganando en rendimiento. Pues los hypervisores toman parte del control del hardware (planificación de la CPU, protección de la memoria ram, control del tiempo de ejecución, gestión de interrupciones, etc.).

A continuación dejo las ventajas y desventajas de cada uno, extraídas del siguiente post (http://softwarelibre.deusto.es/virtualizacion-basada-en-linux-frente-a-hypervisor/) - copio y pego por que no sabría hacerlo mejor ;) gracias Pablo Garaizar Sagarminaga -:

Ventajas de Hypervisor
  • El sistema está controlado por un pequeño fragmento de software, lo suficientemente pequeño para ser auditado por cuestiones de seguridad..
    • Refutación: en la práctica, el código que vive en domain 0 necesita ser auditado también, así que el software no es tan pequeño finalmente.
  • El hypervisor utiliza un espacio de direcciones virtuales pequeño, detalle importante en sistemas de 32 bits.
  • Se puede ejecutar exactamente el mismo núcleo en el Sistema Operativo hyesped (domain 0) y en los Sistemas Operativos invitados.
    • Refutación: Esta ventaja está desapareciendo con coopvirt o la infraestructura paravirt ops.
  • El mismo hypervisor puede ser usado para múltiples Sistemas Operativos.
    • Por ejemplo, usar Linux o FreeBSD como SO huesped, con el mismo software de virtualización.
    • Refutación: con VMI o un interfaz coopvirt limpio, esto también se puede hacer sin un hypervisor.
Ventajas de los sistemas Linux based
  • El software de virtualización puede ser más pequeño, porque comparte más funcionalidades con el núcleo de Linux.
  • Funcionalidades del SO de muy bajo nivel como kexec+kdump simplemente funcionan, sin necesitar soporte en el hypervisor.
    • Esto incluye cosas como el escalado de frecuencia en la CPU, o suspender/recuperar en los portátiles, que actualmente no funcionan en Xen.
  • Lo mismo ocurre para otro soporte de hardware que necesitaría soporte de hypervisor como pmtimer o algunas funcionalidades de ACPI.
  • Ubicuidad: una vez que la tecnología de virtualización basada en Linux esté en el núcleo principal (kernel.org), podrá ser habilitada de forma muy sencilla por las distribuciones de Linux.

Docker en el día a día de la seguridad informática.

Bien, después de esta larga introducción, vamos a ver en que nos puede ser útil Docker en nuestro día a día con respecto a la seguridad y un pentesting. Para ello, voy a dejar una lista a continuación:

a) El primer motivo, mantener limpio nuestra sistema, pues podemos ejecutar software, código o ejecutar scripts en entornos aislados y controlados, sin que afecte a nuestra sistema host.

b) Segundo, si "dokerizamos" la herramienta, código o lo que corresponda, haremos esta multiplataforma, ya que Docker esta disponible para Linux, Mac y Windows.

c) Si no disponemos de una máquina con Linux, podemos "virtualizar" una utilizando un contenedor de Docker con un sistema operativo Linux como imagen base.

d) A la hora de utilizar las típicas herramientas de seguridad, como por ejemplo empire o meterpreter, recurrimos a Kali Linux. Ahora bien, ¿y si no necesito tantas herramientas? La solución pasa por crear imágenes de Docker con cada una de las herramientas que necesitemos, y cuando necesitemos ejecutarla, simplemente la levantamos en un contenedor y listo. De esta forma, no necesitamos cargar múltiples herramientas que no vamos a utilizar, ahorramos en recursos hardware (CPU, memoria ram, almacenamiento, etc.), y lo mejor de todo, podemos personalizar la herramienta con nuestras propias necesidades.

e) Por último, podemos recrear un entorno, generar posibles ataques, y una vez estén afinados lanzarlos en el entorno de producción, reduciendo los daños colaterales y controlando en todo momento las acciones llevadas a cabo durante el pentesting.


Como has podido comprobar, los limites con Docker los pone la imaginación. Esperamos que os haya gustado este post. Si es así, y queréis que hablemos más sobre Docker y su aplicación en el campo de la seguridad, apoyarnos y hacérnoslo saber. Al igual que podéis dejarnos sugerencias, comentarios y dudas a través de las redes sociales.

Un saludo.

@jortfal :) Hacking & Programming with a Smile!

0 comentarios:

Publicar un comentario