Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
[**WhiteIntel**](https://whiteintel.io) je **pretraživač** pokretan **dark-web**-om koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti **kompromitovani** od strane **stealer malwares**.
Docker je **vodeća platforma** u **industriji kontejnerizacije**, koja prednjači u **kontinuiranoj inovaciji**. Omogućava jednostavno kreiranje i distribuciju aplikacija, od **tradicionalnih do futurističkih**, i osigurava njihovu **sigurnu implementaciju** u različitim okruženjima.
* [**containerd**](http://containerd.io): Ovo je **osnovni runtime** za kontejnere, zadužen za sveobuhvatno **upravljanje životnim ciklusom kontejnera**. To uključuje upravljanje **prenosom i skladištenjem slika**, pored nadgledanja **izvršavanja, praćenja i umrežavanja** kontejnera. **Detaljniji uvidi** o containerd-u su **dalje istraženi**.
* **container-shim** igra ključnu ulogu kao **posrednik** u upravljanju **headless kontejnerima**, preuzimajući bez problema od **runc** nakon što su kontejneri inicijalizovani.
* [**runc**](http://runc.io): Poznat po svojim **laganim i univerzalnim runtime** sposobnostima, runc je usklađen sa **OCI standardom**. Koristi se od strane containerd-a za **pokretanje i upravljanje kontejnerima** prema **OCI smernicama**, razvijajući se iz originalnog **libcontainer**.
* [**grpc**](http://www.grpc.io) je ključan za **olakšavanje komunikacije** između containerd-a i **docker-engine**, osiguravajući **efikasnu interakciju**.
* [**OCI**](https://www.opencontainers.org) je od suštinskog značaja za održavanje **OCI specifikacija** za runtime i slike, pri čemu su najnovije verzije Dockera **usaglašene sa OCI standardima za slike i runtime**.
**Containerd** je posebno razvijen da zadovolji potrebe platformi za kontejnere kao što su **Docker i Kubernetes**, između ostalog. Njegov cilj je da **pojednostavi izvršavanje kontejnera** na različitim operativnim sistemima, uključujući Linux, Windows, Solaris i druge, apstrahujući funkcionalnosti specifične za operativni sistem i sistemske pozive. Cilj Containerd-a je da uključi samo osnovne funkcije koje su potrebne njegovim korisnicima, te da teži da izostavi nepotrebne komponente. Međutim, potpuno ostvarenje ovog cilja se priznaje kao izazovno.
Ključna dizajnerska odluka je da **Containerd ne upravlja mrežom**. Mreža se smatra kritičnim elementom u distribuiranim sistemima, sa složenostima kao što su Softverski Definisana Mreža (SDN) i otkrivanje usluga koje se značajno razlikuju od jedne platforme do druge. Stoga, Containerd prepušta aspekte mreže da ih upravljaju platforme koje podržava.
Dok **Docker koristi Containerd** za pokretanje kontejnera, važno je napomenuti da Containerd podržava samo podskup funkcionalnosti Dockera. Konkretno, Containerd nema mogućnosti upravljanja mrežom prisutne u Docker-u i ne podržava direktno kreiranje Docker swarm-ova. Ova razlika naglašava fokusiranu ulogu Containerd-a kao okruženja za izvršavanje kontejnera, delegirajući specijalizovanije funkcionalnosti platformama sa kojima se integriše.
**Podman** je open-source motor za kontejnere koji se pridržava [Open Container Initiative (OCI) standarda](https://github.com/opencontainers), razvijen i održavan od strane Red Hat-a. Izdvaja se od Dockera sa nekoliko posebnih karakteristika, posebno svojom **arhitekturom bez demona** i podrškom za **kontejnere bez root privilegija**, omogućavajući korisnicima da pokreću kontejnere bez root privilegija.
Podman je dizajniran da bude kompatibilan sa Dockerovim API-jem, omogućavajući korišćenje Docker CLI komandi. Ova kompatibilnost se proteže na njegov ekosistem, koji uključuje alate kao što su **Buildah** za izgradnju slika kontejnera i **Skopeo** za operacije sa slikama kao što su push, pull i inspect. Više detalja o ovim alatima može se naći na njihovoj [GitHub stranici](https://github.com/containers/buildah/tree/master/docs/containertools).
* **Arhitektura**: Za razliku od Dockerovog modela klijent-server sa pozadinskim demonima, Podman funkcioniše bez demona. Ovaj dizajn znači da se kontejneri pokreću sa privilegijama korisnika koji ih pokreće, poboljšavajući bezbednost eliminisanjem potrebe za root pristupom.
* **Integracija sa Systemd**: Podman se integriše sa **systemd** za upravljanje kontejnerima, omogućavajući upravljanje kontejnerima kroz systemd jedinice. Ovo se razlikuje od Dockerove upotrebe systemd prvenstveno za upravljanje procesom Docker demona.
* **Kontejneri bez root privilegija**: Ključna karakteristika Podmana je njegova sposobnost da pokreće kontejnere pod privilegijama inicirajućeg korisnika. Ovaj pristup minimizira rizike povezane sa provalama u kontejnere osiguravajući da napadači dobiju samo privilegije kompromitovanog korisnika, a ne root pristup.
Podmanov pristup nudi sigurnu i fleksibilnu alternativu Dockera, naglašavajući upravljanje privilegijama korisnika i kompatibilnost sa postojećim Docker radnim tokovima.
Remote API se po defaultu pokreće na portu 2375 kada je omogućen. Usluga po defaultu neće zahtevati autentifikaciju, što omogućava napadaču da pokrene privilegovani docker kontejner. Korišćenjem Remote API-ja može se priključiti host / (root direktorijum) na kontejner i čitati/pisati datoteke iz okruženja hosta.
Ако можете **контактирати удаљени docker API помоћу `docker` команде** можете **извршити** било коју од **docker** [**команди раније** коментарисаних](2375-pentesting-docker.md#basic-commands) да бисте комуницирали са услугом.
Ako želite više informacija o ovome, više informacija je dostupno odakle sam kopirao komande: [https://securityboulevard.com/2019/02/abusing-docker-api-socket/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
Zloupotrebom ovoga je moguće pobjeći iz kontejnera, mogli biste pokrenuti slab kontejner na udaljenoj mašini, pobjeći iz njega i kompromitovati mašinu:
Ako ste unutar hosta koji koristi docker, možete [**pročitati ove informacije da pokušate da eskalirate privilegije**](../linux-hardening/privilege-escalation/#writable-docker-socket).
* Možete koristiti alat [https://github.com/docker/docker-bench-security](https://github.com/docker/docker-bench-security) da pregledate vašu trenutnu docker instalaciju.
* Možete koristiti alat [https://github.com/genuinetools/amicontained](https://github.com/genuinetools/amicontained) da proverite privilegije koje će kontejner imati kada se pokrene sa različitim sigurnosnim opcijama. Ovo je korisno da se zna koje su posledice korišćenja nekih sigurnosnih opcija za pokretanje kontejnera:
* Možete koristiti docker sliku [https://github.com/quay/clair](https://github.com/quay/clair) da skenira vaše druge docker slike i pronađe ranjivosti.
* Možete koristiti alat [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) da **pregledate vaš Dockerfile** i pronađete sve vrste pogrešnih konfiguracija. Svaka pogrešna konfiguracija će dobiti ID, možete pronaći ovde [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) kako da ispravite svaku od njih.
* Možete koristiti alat [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) da **pregledate vaš Dockerfile** i pronađete sve vrste pogrešnih konfiguracija.
* Možete koristiti alat [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) da **pregledate vaš Dockerfile** i pronađete sve vrste pogrešnih konfiguracija.
* Možete koristiti alat [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) da **pregledate vaš Dockerfile** i pronađete sve vrste pogrešnih konfiguracija.
* Možete koristiti alat [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) da detektujete **sumnjivo ponašanje u pokrenutim kontejnerima**.
* Obratite pažnju u sledećem delu kako **Falco kompajlira kernel modul i ubacuje ga**. Nakon toga, učitava pravila i **počinje da beleži sumnjive aktivnosti**. U ovom slučaju je detektovao 2 privilegovana kontejnera koja su pokrenuta, jedan od njih sa osetljivim montiranjem, i nakon nekoliko sekundi je detektovao kako je shell otvoren unutar jednog od kontejnera.
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) je **dark-web** pretraživač koji nudi **besplatne** funkcionalnosti za proveru da li je neka kompanija ili njeni klijenti bili **kompromitovani** od strane **stealer malwares**.
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.