<summary><strong>Impara l'hacking AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**Gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
[**WhiteIntel**](https://whiteintel.io) è un motore di ricerca alimentato dal **dark web** che offre funzionalità **gratuite** per verificare se un'azienda o i suoi clienti sono stati **compromessi** da **malware ruba-informazioni**.
Docker è la **piattaforma all'avanguardia** nell'industria della **containerizzazione**, guidando **innovazioni continue**. Agevola la creazione e la distribuzione senza sforzo di applicazioni, spaziando da quelle **tradizionali a quelle futuristiche**, e garantisce il loro **deployment sicuro** in ambienti diversi.
* [**containerd**](http://containerd.io): Questo è un **runtime core** per i container, incaricato della **gestione completa del ciclo di vita di un container**. Questo include la gestione del **trasferimento e dello storage delle immagini**, oltre a supervisionare l'**esecuzione, il monitoraggio e la rete** dei container. **Ulteriori approfondimenti** su containerd sono **ulteriormente esplorati**.
* Il **container-shim** svolge un ruolo critico come **intermediario** nella gestione dei **container headless**, prendendo il controllo in modo fluido da **runc** dopo che i container sono inizializzati.
* [**runc**](http://runc.io): Stimato per le sue capacità di **runtime container leggero e universale**, runc è allineato allo **standard OCI**. Viene utilizzato da containerd per **avviare e gestire i container** secondo le **linee guida OCI**, essendo evoluto dall'originale **libcontainer**.
* [**grpc**](http://www.grpc.io) è essenziale per **facilitare la comunicazione** tra containerd e il **docker-engine**, garantendo un'**interazione efficiente**.
* L'[**OCI**](https://www.opencontainers.org) è fondamentale per mantenere le **specifiche OCI** per il runtime e le immagini, con le ultime versioni di Docker che sono **conformi sia agli standard OCI per le immagini che per il runtime**.
**Containerd** è stato sviluppato specificamente per soddisfare le esigenze delle piattaforme di container come **Docker e Kubernetes**, tra gli altri. Il suo obiettivo è **semplificare l'esecuzione dei container** su vari sistemi operativi, tra cui Linux, Windows, Solaris e altri, astraiendo la funzionalità specifica del sistema operativo e le chiamate di sistema. L'obiettivo di Containerd è quello di includere solo le funzionalità essenziali richieste dai suoi utenti, cercando di omettere componenti non necessarie. Tuttavia, raggiungere completamente questo obiettivo è considerato una sfida.
Una decisione progettuale chiave è che **Containerd non gestisce la rete**. La rete è considerata un elemento critico nei sistemi distribuiti, con complessità come Software Defined Networking (SDN) e discovery dei servizi che variano significativamente da una piattaforma all'altra. Pertanto, Containerd lascia che gli aspetti della rete siano gestiti dalle piattaforme che supporta.
Mentre **Docker utilizza Containerd** per eseguire i container, è importante notare che Containerd supporta solo una parte delle funzionalità di Docker. In particolare, Containerd manca delle capacità di gestione della rete presenti in Docker e non supporta la creazione di Docker swarms direttamente. Questa distinzione sottolinea il ruolo focalizzato di Containerd come ambiente di runtime per i container, delegando funzionalità più specializzate alle piattaforme con cui si integra.
**Podman** è un motore di container open-source che aderisce agli standard dell'[Open Container Initiative (OCI)](https://github.com/opencontainers), sviluppato e mantenuto da Red Hat. Si distingue da Docker per diverse caratteristiche, in particolare la sua **architettura senza daemon** e il supporto ai **container senza privilegi di root**, che consentono agli utenti di eseguire container senza privilegi di root.
Podman è progettato per essere compatibile con l'API di Docker, consentendo l'uso dei comandi CLI di Docker. Questa compatibilità si estende al suo ecosistema, che include strumenti come **Buildah** per la creazione di immagini di container e **Skopeo** per operazioni sulle immagini come push, pull e inspect. Ulteriori dettagli su questi strumenti possono essere trovati sulla loro [pagina GitHub](https://github.com/containers/buildah/tree/master/docs/containertools).
* **Architettura**: A differenza del modello client-server di Docker con un daemon in background, Podman funziona senza un daemon. Questo design significa che i container vengono eseguiti con i privilegi dell'utente che li avvia, migliorando la sicurezza eliminando la necessità di accesso di root.
* **Integrazione con systemd**: Podman si integra con **systemd** per gestire i container, consentendo la gestione dei container tramite unità systemd. Questo contrasta con l'uso di systemd da parte di Docker principalmente per gestire il processo del daemon Docker.
* **Container senza privilegi di root**: Una caratteristica fondamentale di Podman è la sua capacità di eseguire container con i privilegi dell'utente che li avvia. Questo approccio riduce al minimo i rischi associati alle violazioni dei container garantendo che gli attaccanti ottengano solo i privilegi dell'utente compromesso, non l'accesso di root.
L'approccio di Podman offre un'alternativa sicura e flessibile a Docker, enfatizzando la gestione dei privilegi degli utenti e la compatibilità con i flussi di lavoro di Docker esistenti.
L'API remota è in esecuzione per impostazione predefinita sulla porta 2375 quando abilitata. Il servizio per impostazione predefinita non richiederà autenticazione, consentendo a un attaccante di avviare un container Docker privilegiato. Utilizzando l'API remota è possibile collegare gli host / (directory root) al container e leggere/scrivere file dell'ambiente dell'host.
Se riesci a **contattare l'API remota di Docker con il comando `docker`** puoi **eseguire** qualsiasi dei **comandi Docker** [**precedentemente** commentati](2375-pentesting-docker.md#basic-commands) per interagire con il servizio.
Se desideri ulteriori informazioni su questo argomento, puoi trovarne di più nel sito da cui ho copiato i comandi: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
Abusando di questo è possibile uscire da un container, potresti eseguire un container debole nella macchina remota, uscirne e compromettere la macchina:
Se ti trovi all'interno di un host che sta utilizzando Docker, potresti [**leggere queste informazioni per provare ad elevare i privilegi**](../linux-hardening/privilege-escalation/#writable-docker-socket).
* Puoi utilizzare lo strumento [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) per ispezionare la tua attuale installazione di Docker.
* Puoi utilizzare lo strumento [https://github.com/kost/dockscan](https://github.com/kost/dockscan) per ispezionare la tua attuale installazione di Docker.
* Puoi utilizzare lo strumento [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) per verificare i privilegi che un container avrà quando viene eseguito con diverse opzioni di sicurezza. Questo è utile per conoscere le implicazioni dell'utilizzo di alcune opzioni di sicurezza per eseguire un container:
* Puoi utilizzare un'immagine Docker di [https://github.com/quay/clair](https://github.com/quay/clair) per eseguire la scansione delle tue altre immagini Docker e individuare vulnerabilità.
* Puoi utilizzare lo strumento [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) per **ispezionare il tuo Dockerfile** e trovare tutti i tipi di misconfigurazioni. Ogni misconfigurazione verrà assegnata un ID, puoi trovare qui [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) come risolvere ciascuna di esse.
* Puoi utilizzare lo strumento [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) per **ispezionare il tuo Dockerfile** e trovare tutti i tipi di misconfigurazioni.
* Puoi utilizzare lo strumento [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) per **ispezionare il tuo Dockerfile** e trovare tutti i tipi di misconfigurazioni.
* Puoi utilizzare lo strumento [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) per **ispezionare il tuo Dockerfile** e trovare tutti i tipi di misconfigurazioni.
* Puoi utilizzare lo strumento [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) per rilevare **comportamenti sospetti nei container in esecuzione**.
* Nota nel seguente blocco come **Falco compila un modulo del kernel e lo inserisce**. Dopo di che, carica le regole e **inizia a registrare attività sospette**. In questo caso ha rilevato 2 container privilegiati avviati, di cui uno con un mount sensibile, e dopo alcuni secondi ha rilevato l'apertura di una shell all'interno di uno dei container.
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) è un motore di ricerca alimentato dal **dark web** che offre funzionalità **gratuite** per verificare se un'azienda o i suoi clienti sono stati **compromessi** da **malware ruba-informazioni**.
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**