2375, 2376 Pentesting Docker
WhiteIntel je dark-web pretraživač koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici kompromitovani od strane malvera za krađu podataka.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomware-a koji proizilaze iz malvera za krađu informacija.
Možete posetiti njihovu veb stranicu i isprobati njihovu mašinu za besplatno na:
Osnove Docker-a
Šta je
Docker je vodeća platforma u industriji kontejnerizacije, predvodeći kontinuiranu inovaciju. Omogućava jednostavno kreiranje i distribuciju aplikacija, obuhvatajući tradicionalne do futurističke, i obezbeđuje njihovo sigurno implementiranje u različitim okruženjima.
Osnovna arhitektura Docker-a
containerd: Ovo je osnovno izvršno okruženje za kontejnere, zaduženo za sveobuhvatno upravljanje životnim ciklusom kontejnera. To uključuje rukovanje transferom i skladištenjem slika, kao i nadgledanje izvršavanja, praćenja i umrežavanja kontejnera. Detaljnije uvide o containerd-u dalje istražujemo.
Container-shim igra ključnu ulogu kao posrednik u rukovanju glavoboljnim kontejnerima, besprekorno preuzimajući od runc-a nakon što su kontejneri inicijalizovani.
runc: Poštovan zbog svojih mogućnosti laganog i univerzalnog izvršnog okruženja kontejnera, runc je usklađen sa OCI standardom. Koristi ga containerd za pokretanje i upravljanje kontejnerima prema OCI smernicama, evoluirajući iz originalnog libcontainer-a.
grpc je ključan za olakšavanje komunikacije između containerd-a i docker-engine, osiguravajući efikasnu interakciju.
OCI je ključan za održavanje OCI specifikacija za izvršno okruženje i slike, pri čemu su najnovije verzije Docker-a usaglašene sa OCI standardima za sliku i izvršno okruženje.
Osnovne komande
Containerd
Containerd je posebno razvijen da zadovolji potrebe platformi za kontejnere poput Docker-a i Kubernetes-a, među ostalima. Cilj mu je simplifikacija izvršavanja 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 potrebne njegovim korisnicima, teži da izostavi nepotrebne komponente. Međutim, postizanje ovog cilja u potpunosti se smatra izazovnim.
Ključna dizajnerska odluka je da Containerd ne upravlja mrežom. Mreženje se smatra ključnim elementom u distribuiranim sistemima, sa kompleksnostima poput definisanja mreže softverom (SDN) i otkrivanja servisa koje se značajno razlikuju od jedne platforme do druge. Stoga, Containerd ostavlja upravljanje mrežom da ga upravljaju platforme koje podržava.
Iako Docker koristi Containerd za pokretanje kontejnera, važno je napomenuti da Containerd podržava samo podskup funkcionalnosti Docker-a. Konkretno, Containerd nema mogućnosti upravljanja mrežom prisutne u Docker-u i ne podržava direktno kreiranje Docker rojeva. Ova razlika ističe fokusiranu ulogu Containerd-a kao okruženja za izvršavanje kontejnera, prepuštajući specijalizovanije funkcionalnosti platformama sa kojima se integriše.
Podman
Podman je open-source kontejnerski motor koji se pridržava Open Container Initiative (OCI) standarda, razvijen i održavan od strane Red Hata. Ističe se od Docker-a nekoliko različitih karakteristika, posebno svojom arhitekturom bez demona i podrškom za rootless kontejnere, omogućavajući korisnicima da pokreću kontejnere bez privilegija root korisnika.
Podman je dizajniran da bude kompatibilan sa Docker-ovim API-jem, omogućavajući korišćenje Docker CLI komandi. Ova kompatibilnost se proširuje na njegov ekosistem, koji uključuje alate poput Buildah za izgradnju kontejnerskih slika i Skopeo za operacije sa slikama poput push, pull i inspect. Više detalja o ovim alatima možete pronaći na njihovoj GitHub stranici.
Ključne Razlike
Arhitektura: Za razliku od Docker-ovog modela klijent-server sa pozadinskim demonom, Podman funkcioniše bez demona. Ovaj dizajn znači da kontejneri pokreću sa privilegijama korisnika koji ih pokreće, poboljšavajući sigurnost eliminacijom potrebe za pristupom root korisnika.
Systemd Integracija: Podman se integriše sa systemd-om za upravljanje kontejnerima, omogućavajući upravljanje kontejnerima putem systemd jedinica. Ovo se razlikuje od Docker-a koji koristi systemd uglavnom za upravljanje Docker demon procesom.
Rootless Kontejneri: Ključna karakteristika Podman-a je njegova sposobnost pokretanja kontejnera pod privilegijama korisnika koji ih pokreće. Ovaj pristup minimizira rizike povezane sa probijanjem kontejnera osiguravajući da napadači dobiju samo privilegije kompromitovanog korisnika, a ne pristup root korisniku.
Pristup Podman-a nudi sigurnu i fleksibilnu alternativu Docker-u, naglašavajući upravljanje privilegijama korisnika i kompatibilnost sa postojećim Docker radnim tokovima.
Imajte na umu da kako podman ima za cilj podržati isti API kao docker, možete koristiti iste komande sa podman-om kao sa docker-om kao što su:
Osnovne informacije
Udaljeni API se podrazumevano pokreće na portu 2375 kada je omogućen. Usluga podrazumevano ne zahteva autentifikaciju, što omogućava napadaču da pokrene privilegovan Docker kontejner. Korišćenjem udaljenog API-ja moguće je povezati hostove / (korenski direktorijum) sa kontejnerom i čitati/pisati fajlove u okruženju hosta.
Podrazumevani port: 2375
Enumeracija
Ručno
Imajte na umu da za enumeraciju docker API-ja možete koristiti docker
komandu ili curl
kao u sledećem primeru:
Ako možete kontaktirati udaljeni docker API pomoću docker
komande možete izvršiti bilo koju od docker prethodno komentarisanih komandi kako biste komunicirali sa servisom.
Možete export DOCKER_HOST="tcp://localhost:2375"
i izbeći korišćenje -H
parametra sa docker komandom
Brzo eskaliranje privilegija
Curl
Ponekad ćete videti 2376 otvoren za TLS krajnju tačku. Nisam uspeo da se povežem sa njom pomoću docker klijenta, ali je moguće to uraditi sa curl-om.
Ako želite više informacija o ovome, više informacija je dostupno tamo odakle sam kopirao komande: https://securityboulevard.com/2019/02/abusing-docker-api-socket/
Automatski
Kompromitovanje
Na sledećoj stranici možete pronaći načine za izlazak iz docker kontejnera:
pageDocker SecurityZloupotrebom ovoga je moguće izaći iz kontejnera, pokrenuti slab kontejner na udaljenoj mašini, izaći iz njega i kompromitovati mašinu:
Eskalacija privilegija
Ako se nalazite unutar hosta koji koristi Docker, možete pročitati ove informacije kako biste pokušali da povećate privilegije.
Otkrivanje tajni u pokrenutim Docker kontejnerima
Proverite env (sekciju sa okruženjskim promenljivama) za tajne informacije i možda pronađete:
Lozinke.
IP adrese.
Portove.
Putanje.
Ostalo... .
Ako želite da izvučete fajl:
Osiguravanje vašeg Dockera
Osiguravanje instalacije i korišćenja Dockera
Možete koristiti alat https://github.com/docker/docker-bench-security da pregledate vašu trenutnu docker instalaciju.
./docker-bench-security.sh
Možete koristiti alat https://github.com/kost/dockscan da pregledate vašu trenutnu docker instalaciju.
dockscan -v unix:///var/run/docker.sock
Možete koristiti alat https://github.com/genuinetools/amicontained da vidite privilegije koje će kontejner imati kada se pokrene sa različitim sigurnosnim opcijama. Ovo je korisno kako biste znali posledice korišćenja određenih sigurnosnih opcija za pokretanje kontejnera:
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
Osiguravanje Docker slika
Možete koristiti docker sliku https://github.com/quay/clair da skenira vaše druge docker slike i pronađe ranjivosti.
docker run --rm -v /root/clair_config/:/config -p 6060-6061:6060-6061 -d clair -config="/config/config.yaml"
clair-scanner -c http://172.17.0.3:6060 --ip 172.17.0.1 ubuntu-image
Osiguravanje Dockerfile-ova
Možete koristiti alat https://github.com/buddy-works/dockerfile-linter da pregledate vaš Dockerfile i pronađete sve vrste netačnih konfiguracija. Svaka netačna konfiguracija će dobiti ID, možete pronaći ovde https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md kako da ispravite svaku od njih.
dockerfilelinter -f Dockerfile
Možete koristiti alat https://github.com/replicatedhq/dockerfilelint da pregledate vaš Dockerfile i pronađete sve vrste netačnih konfiguracija.
dockerfilelint Dockerfile
Možete koristiti alat https://github.com/RedCoolBeans/dockerlint da pregledate vaš Dockerfile i pronađete sve vrste netačnih konfiguracija.
dockerlint Dockerfile
Možete koristiti alat https://github.com/hadolint/hadolint da pregledate vaš Dockerfile i pronađete sve vrste netačnih konfiguracija.
hadolint Dockerfile
Logovanje sumnjive aktivnosti
Možete koristiti alat https://github.com/falcosecurity/falco da otkrijete sumnjivo ponašanje u pokrenutim kontejnerima.
Obratite pažnju u sledećem odeljku kako Falco kompajlira jezgro modula i ubacuje ga. Nakon toga, učitava pravila i počinje da loguje sumnjive aktivnosti. U ovom slučaju je otkriveno da su pokrenuta 2 privilegovana kontejnera, od kojih je jedan imao osetljiv mount, i nakon nekoliko sekundi je otkriveno kako je shell otvoren unutar jednog od kontejnera.
Praćenje Docker-a
Možete koristiti auditd da biste pratili Docker.
Reference
WhiteIntel je pretraživač pokretan dark-web-om koji nudi besplatne funkcionalnosti za proveru da li je kompanija ili njeni korisnici ugroženi od malvera koji krade podatke.
Primarni cilj WhiteIntel-a je borba protiv preuzimanja naloga i napada ransomvera koji proizilaze iz malvera koji krade informacije.
Možete posetiti njihovu veb lokaciju i isprobati njihovu mašinu za besplatno na:
Last updated