
Kubesploit è un server e agente Command & Control HTTP/2 post-exploitation cross-platform scritto in Golang, focalizzato su ambienti containerizzati.
Kubesploit è un server e agente di Command & Control HTTP/2 cross-platform per post-exploitation progettato specificamente per ambienti containerizzati, scritto in Golang e basato sul progetto Merlin di Russel Van Tuyl (@Ne0nd0g).
Durante la ricerca su Docker e Kubernetes, abbiamo notato che la maggior parte degli strumenti disponibili oggi sono orientati alla scansione passiva delle vulnerabilità nel cluster, e manca una copertura di vettori d'attacco più complessi.
Possono permetterti di vedere il problema, ma non di sfruttarlo. È importante eseguire l'exploit per simulare un attacco reale che sarà utilizzato per determinare la resilienza aziendale attraverso la rete.
Quando si esegue un exploit, si mette in pratica la gestione degli eventi informatici dell'organizzazione, cosa che non accade quando si eseguono scansioni per problemi del cluster.
Può aiutare l'organizzazione a imparare come operare quando si verificano attacchi reali, vedere se gli altri sistemi di rilevamento funzionano come previsto e quali modifiche dovrebbero essere apportate.
Volevamo creare uno strumento offensivo che soddisfacesse questi requisiti.
Ma avevamo un'altra ragione per creare uno strumento del genere. Avevamo già due strumenti open-source (KubiScan e kubeletctl) relativi a Kubernetes, e avevamo un'idea per altri. Invece di creare un progetto per ciascuno, abbiamo pensato che fosse meglio realizzare un nuovo strumento che centralizzasse i nuovi strumenti, ed è così che è nato Kubesploit.
Abbiamo cercato un open-source che fornisse le basi per un sistema cross-platform, e abbiamo trovato Merlin, scritto da Russel Van Tuyl (@Ne0nd0g), adatto a noi.
Il nostro obiettivo principale è contribuire a sensibilizzare sulla sicurezza degli ambienti containerizzati e migliorare le mitigazioni implementate nelle varie reti. Il tutto catturato attraverso un framework che fornisce gli strumenti adatti al lavoro dei team di PT e dei Red Team durante le loro attività in questi ambienti. Usare questi strumenti ti aiuterà a valutare i punti di forza di questi ambienti e ad apportare le modifiche necessarie per proteggerli.
Poiché l'infrastruttura C&C e agente era già stata realizzata da Merlin, abbiamo integrato Go interpreter ("Yaegi") per poter eseguire codice Golang dal server all'agente.
Ciò ci ha permesso di scrivere i nostri moduli in Golang, offrire maggiore flessibilità sui moduli e caricare dinamicamente nuovi moduli.
È un progetto in continua evoluzione e prevediamo di aggiungere in futuro altri moduli relativi a Docker e Kubernetes.
I moduli attualmente disponibili sono:
Breakout del container tramite mount
Breakout del container tramite docker.sock
Breakout del container tramite exploit CVE-2019-5736
Scansione delle vulnerabilità note del cluster Kubernetes
Scansione delle porte con focus sui servizi Kubernetes
Scansione dei servizi Kubernetes dall'interno del container
kubeletctl leggero contenente le seguenti opzioni:
Breakout con cGroup
Breakout con modulo del kernel
Var log escape
Deepce: enumerazione Docker (progetto Open-Source integrato come modulo)
Test di vulnerabilità: verifica a quali exploit di kubesploit il tuo container è vulnerabile
Per informazioni dettagliate sui moduli, consulta la pagina WiKi
Abbiamo creato un ambiente Kubernetes dedicato su KillerCoda per farti sperimentare con Kubesploit.
È una simulazione completa con una serie di istruzioni automatizzate su come usare Kubesploit. Ti invitiamo a esplorarlo.
Avvia il server:
./kubesploitServer
Avvia l'agente:
./agent -url https://<server_ip>:443 &

Per compilare questo progetto, esegui il comando make dalla cartella principale.
NOTA: Attualmente dovrai usare Golang 1.18 o Go 1.19 (le ultime 2 major release) in base ai requisiti Golang di traefik/yaegi v0.14.3.
Per eseguire una build rapida per Linux, puoi eseguire:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
Per eseguire il server usando un container, devi far sì che il server Kubesploit ascolti sull'interfaccia 0.0.0.0 (e non 127.0.0.1).
Puoi aggiornare il campo dell'interfaccia nel file config.yaml.
nota: assicurati di mappare le porte tra host e container (la porta predefinita è
443e può essere configurata anche in config.yaml)
Abbiamo creato regole YARA che aiuteranno a rilevare i binari di Kubesploit. Le regole sono scritte nel file kubesploit.yara.
Ogni modulo Go caricato nell'agente viene registrato all'interno della macchina vittima.
Abbiamo creato una mappa MITRE dei vettori d'attacco utilizzati da Kubesploit.
Per ogni modulo creato, abbiamo scritto la sua descrizione e come difendersi da esso.
Tutto è riassunto nel file MITIGATION.md.
Accogliamo con favore contributi di tutti i tipi a questo repository.
Per istruzioni su come iniziare e descrizioni
dei nostri flussi di lavoro di sviluppo, consulta la nostra guida per contribuire.
Ringraziamo Russel Van Tuyl (@Ne0nd0g) per aver creato Merlin come open-source che ci ha permesso di costruire Kubesploit sopra di esso.
Ringraziamo anche Traefik Labs (@traefik) per aver creato Go interpreter ("Yaegi") che ci ha permesso di eseguire facilmente i moduli Golang su un agente remoto.
Copyright (c) 2021 CyberArk Software Ltd. Tutti i diritti riservati.
Questo repository è concesso in licenza con la licenza GPL-3.0.
Per il testo completo della licenza vedi LICENSE.
Per ulteriori commenti, suggerimenti o domande, puoi contattare Eviatar Gerzi (@g3rzi) di CyberArk Labs o aprire un issue. Puoi trovare altri progetti sviluppati da noi su https://github.com/cyberark/.