<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares de robo**.
El objetivo principal de WhiteIntel es combatir los secuestros de cuentas y los ataques de ransomware resultantes de malwares que roban información.
Docker es la **plataforma líder** en la industria de la **contenerización**, liderando la **innovación continua**. Facilita la creación y distribución sin esfuerzo de aplicaciones, desde las **tradicionales hasta las futuristas**, y asegura su **implementación segura** en diversos entornos.
* [**containerd**](http://containerd.io): Este es un **tiempo de ejecución central** para contenedores, encargado de la **gestión integral del ciclo de vida de un contenedor**. Esto implica el manejo de la **transferencia y almacenamiento de imágenes**, además de supervisar la **ejecución, monitoreo y redes** de contenedores. Se exploran **detalles más específicos** sobre containerd.
* El **container-shim** juega un papel crítico como **intermediario** en el manejo de **contenedores sin cabeza**, tomando el relevo de **runc** después de que los contenedores se inicializan.
* [**runc**](http://runc.io): Estimado por sus capacidades de **tiempo de ejecución de contenedores ligero y universal**, runc está alineado con el **estándar OCI**. Es utilizado por containerd para **iniciar y gestionar contenedores** según las **directrices OCI**, habiendo evolucionado desde el **libcontainer** original.
* [**grpc**](http://www.grpc.io) es esencial para **facilitar la comunicación** entre containerd y el **motor de Docker**, asegurando una **interacción eficiente**.
* El [**OCI**](https://www.opencontainers.org) es fundamental para mantener las **especificaciones OCI** para tiempo de ejecución e imágenes, siendo las últimas versiones de Docker **compatibles con los estándares de imagen y tiempo de ejecución de OCI**.
**Containerd** fue desarrollado específicamente para satisfacer las necesidades de plataformas de contenedores como **Docker y Kubernetes**, entre otras. Su objetivo es **simplificar la ejecución de contenedores** en varios sistemas operativos, incluidos Linux, Windows, Solaris y más, abstrayendo la funcionalidad específica del sistema operativo y las llamadas al sistema. El objetivo de Containerd es incluir solo las características esenciales requeridas por sus usuarios, esforzándose por omitir componentes innecesarios. Sin embargo, se reconoce que lograr este objetivo por completo es un desafío.
Una decisión de diseño clave es que **Containerd no maneja la red**. La red se considera un elemento crítico en los sistemas distribuidos, con complejidades como la Red Definida por Software (SDN) y el descubrimiento de servicios que varían significativamente de una plataforma a otra. Por lo tanto, Containerd deja que los aspectos de la red sean gestionados por las plataformas que soporta.
Mientras que **Docker utiliza Containerd** para ejecutar contenedores, es importante tener en cuenta que Containerd solo admite un subconjunto de las funcionalidades de Docker. Específicamente, Containerd carece de las capacidades de gestión de red presentes en Docker y no admite la creación de enjambres de Docker directamente. Esta distinción destaca el papel enfocado de Containerd como un entorno de tiempo de ejecución de contenedores, delegando funcionalidades más especializadas a las plataformas con las que se integra.
**Podman** es un motor de contenedores de código abierto que cumple con los estándares de la [Open Container Initiative (OCI)](https://github.com/opencontainers), desarrollado y mantenido por Red Hat. Se destaca de Docker por varias características distintivas, especialmente su **arquitectura sin demonio** y el soporte para **contenedores sin privilegios de root**, lo que permite a los usuarios ejecutar contenedores sin privilegios de root.
Podman está diseñado para ser compatible con la API de Docker, lo que permite el uso de comandos de CLI de Docker. Esta compatibilidad se extiende a su ecosistema, que incluye herramientas como **Buildah** para construir imágenes de contenedores y **Skopeo** para operaciones de imágenes como push, pull e inspect. Se pueden encontrar más detalles sobre estas herramientas en su [página de GitHub](https://github.com/containers/buildah/tree/master/docs/containertools).
* **Arquitectura**: A diferencia del modelo cliente-servidor de Docker con un demonio en segundo plano, Podman opera sin un demonio. Este diseño significa que los contenedores se ejecutan con los privilegios del usuario que los inicia, mejorando la seguridad al eliminar la necesidad de acceso de root.
* **Integración con systemd**: Podman se integra con **systemd** para gestionar contenedores, lo que permite la gestión de contenedores a través de unidades de systemd. Esto contrasta con el uso de systemd por parte de Docker principalmente para gestionar el proceso del demonio de Docker.
* **Contenedores sin privilegios de root**: Una característica fundamental de Podman es su capacidad para ejecutar contenedores bajo los privilegios del usuario que los inicia. Este enfoque minimiza los riesgos asociados con violaciones de contenedores al garantizar que los atacantes solo obtengan los privilegios del usuario comprometido, no el acceso de root.
El enfoque de Podman ofrece una alternativa segura y flexible a Docker, enfatizando la gestión de privilegios de usuario y la compatibilidad con los flujos de trabajo de Docker existentes.
Tenga en cuenta que dado que Podman tiene como objetivo admitir la misma API que Docker, puede utilizar los mismos comandos con Podman como con Docker, como:
El API remoto se ejecuta de forma predeterminada en el puerto 2375 cuando está habilitado. El servicio, por defecto, no requerirá autenticación, lo que permite a un atacante iniciar un contenedor de Docker privilegiado. Al utilizar el API remoto, se puede adjuntar hosts / (directorio raíz) al contenedor y leer/escribir archivos del entorno del host.
Si puedes **contactar el API remoto de docker con el comando `docker`** puedes **ejecutar** cualquiera de los **comandos de docker** [**previamente comentados**](2375-pentesting-docker.md#basic-commands) para interactuar con el servicio.
A veces verás **2376** disponible para el punto final de **TLS**. No he podido conectarme a él con el cliente de docker, pero es posible hacerlo con curl.
Si deseas obtener más información al respecto, puedes encontrar más detalles en el sitio desde donde copié los comandos: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
Abusando de esto es posible escapar de un contenedor, podrías ejecutar un contenedor débil en la máquina remota, escapar de él y comprometer la máquina:
Si te encuentras dentro de un host que está utilizando Docker, puedes [**leer esta información para intentar elevar privilegios**](../linux-hardening/privilege-escalation/#writable-docker-socket).
* Puedes usar la herramienta [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) para inspeccionar tu instalación actual de Docker.
* Puedes usar la herramienta [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) para conocer los privilegios que tendrá un contenedor al ejecutarse con diferentes opciones de seguridad. Esto es útil para comprender las implicaciones de usar ciertas opciones de seguridad para ejecutar un contenedor:
*`docker run --rm -it r.j3ss.co/amicontained`
*`docker run --rm -it --pid host r.j3ss.co/amicontained`
*`docker run --rm -it --security-opt "apparmor=unconfined" r.j3ss.co/amicontained`
* Puedes usar una imagen de Docker de [https://github.com/quay/clair](https://github.com/quay/clair) para escanear tus otras imágenes de Docker y encontrar vulnerabilidades.
* Puedes usar la herramienta [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) para **inspeccionar tu Dockerfile** y encontrar todo tipo de configuraciones incorrectas. A cada configuración incorrecta se le asignará un ID, puedes encontrar aquí [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) cómo corregir cada una de ellas.
* Puedes usar la herramienta [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) para **inspeccionar tu Dockerfile** y encontrar todo tipo de configuraciones incorrectas.
* Puedes usar la herramienta [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) para **inspeccionar tu Dockerfile** y encontrar todo tipo de configuraciones incorrectas.
* Puedes usar la herramienta [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) para **inspeccionar tu Dockerfile** y encontrar todo tipo de configuraciones incorrectas.
* Puedes usar la herramienta [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) para detectar **comportamientos sospechosos en contenedores en ejecución**.
* Observa en el siguiente fragmento cómo **Falco compila un módulo del kernel e lo inserta**. Después de eso, carga las reglas y **comienza a registrar actividades sospechosas**. En este caso, ha detectado 2 contenedores privilegiados iniciados, 1 de ellos con un montaje sensible, y después de algunos segundos detectó cómo se abrió una terminal dentro de uno de los contenedores.
mkdir: cannot create directory '/lib/modules/5.0.0-20-generic/kernel/extra': Read-only file system
cp: cannot create regular file '/lib/modules/5.0.0-20-generic/kernel/extra/falco-probe.ko': No such file or directory
depmod...
DKMS: install completed.
* Trying to load a dkms falco-probe, if present
falco-probe found and loaded in dkms
2021-01-04T12:03:20+0000: Falco initialized with configuration file /etc/falco/falco.yaml
2021-01-04T12:03:20+0000: Loading rules from file /etc/falco/falco_rules.yaml:
2021-01-04T12:03:22+0000: Loading rules from file /etc/falco/falco_rules.local.yaml:
2021-01-04T12:03:22+0000: Loading rules from file /etc/falco/k8s_audit_rules.yaml:
2021-01-04T12:03:24+0000: Starting internal webserver, listening on port 8765
2021-01-04T12:03:24.646959000+0000: Notice Privileged container started (user=<NA> command=container:db5dfd1b6a32 laughing_kowalevski (id=db5dfd1b6a32) image=ubuntu:18.04)
2021-01-04T12:03:24.664354000+0000: Notice Container with sensitive mount started (user=<NA> command=container:4822e8378c00 xenodochial_kepler (id=4822e8378c00) image=ubuntu:modified mounts=/:/host::true:rslave)
2021-01-04T12:03:24.664354000+0000: Notice Privileged container started (user=root command=container:4443a8daceb8 focused_brahmagupta (id=4443a8daceb8) image=falco:latest)
2021-01-04T12:04:56.270553320+0000: Notice A shell was spawned in a container with an attached terminal (user=root xenodochial_kepler (id=4822e8378c00) shell=bash parent=runc cmdline=bash terminal=34816 container_id=4822e8378c00 image=ubuntu)
[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda impulsado por la **dark web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**.
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).