AppArmor
WhiteIntel è 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.
Il loro obiettivo principale di WhiteIntel è combattere i takeover di account e gli attacchi ransomware derivanti da malware che rubano informazioni.
Puoi visitare il loro sito web e provare il loro motore gratuitamente su:
Informazioni di Base
AppArmor è un miglioramento del kernel progettato per limitare le risorse disponibili ai programmi attraverso profili per programma, implementando efficacemente il Controllo di Accesso Obbligatorio (MAC) legando gli attributi di controllo degli accessi direttamente ai programmi anziché agli utenti. Questo sistema opera caricando i profili nel kernel, di solito durante l'avvio, e questi profili indicano a quali risorse un programma può accedere, come connessioni di rete, accesso a socket grezzi e autorizzazioni sui file.
Ci sono due modalità operative per i profili di AppArmor:
Modalità di Applicazione: Questa modalità applica attivamente le politiche definite all'interno del profilo, bloccando azioni che violano queste politiche e registrando qualsiasi tentativo di violarle attraverso sistemi come syslog o auditd.
Modalità di Lamentele: A differenza della modalità di applicazione, la modalità di lamentele non blocca le azioni che vanno contro le politiche del profilo. Invece, registra questi tentativi come violazioni di politica senza applicare restrizioni.
Componenti di AppArmor
Modulo Kernel: Responsabile dell'applicazione delle politiche.
Politiche: Specificano le regole e le restrizioni per il comportamento del programma e l'accesso alle risorse.
Parser: Carica le politiche nel kernel per l'applicazione o la segnalazione.
Utilità: Questi sono programmi in modalità utente che forniscono un'interfaccia per interagire e gestire AppArmor.
Percorso dei Profili
I profili di AppArmor sono di solito salvati in /etc/apparmor.d/
Con sudo aa-status
sarai in grado di elencare i binari che sono limitati da qualche profilo. Se puoi cambiare il carattere "/" con un punto del percorso di ogni binario elencato e otterrai il nome del profilo di apparmor all'interno della cartella menzionata.
Ad esempio, un profilo apparmor per /usr/bin/man sarà situato in /etc/apparmor.d/usr.bin.man
Comandi
Creazione di un profilo
Per indicare l'eseguibile interessato, sono consentiti percorsi assoluti e caratteri jolly (per il file globbing) per specificare i file.
Per indicare l'accesso che il binario avrà sui file possono essere utilizzati i seguenti controlli di accesso:
r (lettura)
w (scrittura)
m (mappatura in memoria come eseguibile)
k (blocco del file)
l (creazione di collegamenti rigidi)
ix (per eseguire un altro programma con il nuovo programma che eredita la policy)
Px (eseguire sotto un altro profilo, dopo aver pulito l'ambiente)
Cx (eseguire sotto un profilo figlio, dopo aver pulito l'ambiente)
Ux (eseguire senza vincoli, dopo aver pulito l'ambiente)
Le variabili possono essere definite nei profili e possono essere manipolate dall'esterno del profilo. Ad esempio: @{PROC} e @{HOME} (aggiungere #include <tunables/global> al file del profilo)
Le regole di negazione sono supportate per sovrascrivere le regole di autorizzazione.
aa-genprof
Per iniziare facilmente a creare un profilo, apparmor può aiutarti. È possibile fare in modo che apparmor ispezioni le azioni eseguite da un binario e quindi ti permetta di decidere quali azioni desideri consentire o negare. Basta eseguire:
Quindi, in una console diversa esegui tutte le azioni che di solito eseguirebbe il binario:
Quindi, nella prima console premi "s" e poi nelle azioni registrate indica se vuoi ignorare, consentire o altro. Quando hai finito premi "f" e il nuovo profilo verrà creato in /etc/apparmor.d/percorso.per.binario
Utilizzando i tasti freccia puoi selezionare cosa desideri consentire/negare/altro
aa-easyprof
Puoi anche creare un modello di un profilo apparmor di un binario con:
Si noti che per impostazione predefinita in un profilo creato nulla è consentito, quindi tutto è negato. Sarà necessario aggiungere righe come /etc/passwd r,
per consentire la lettura binaria di /etc/passwd
, ad esempio.
Puoi quindi applicare il nuovo profilo con
Modifica di un profilo dai log
Il seguente strumento leggerà i log e chiederà all'utente se desidera permettere alcune delle azioni proibite rilevate:
Usando i tasti freccia puoi selezionare cosa desideri consentire/negare/o qualsiasi altra azione
Gestione di un Profilo
Registri
Esempio di registri AUDIT e DENIED da /var/log/audit/audit.log dell'eseguibile service_bin
:
Puoi ottenere queste informazioni anche utilizzando:
Apparmor in Docker
Nota come il profilo docker-profile di docker venga caricato per impostazione predefinita:
Di default il profilo Apparmor docker-default è generato da https://github.com/moby/moby/tree/master/profiles/apparmor
Sommario del profilo docker-default:
Accesso a tutta la rete
Nessuna capacità è definita (Tuttavia, alcune capacità verranno incluse dalle regole di base di base, ad es. #include <abstractions/base>)
Scrittura su qualsiasi file /proc non è permessa
Altre sottodirectory/file di /proc e /sys sono negati accesso in lettura/scrittura/blocco/link/esecuzione
Montaggio non è permesso
Ptrace può essere eseguito solo su un processo confinato dallo stesso profilo apparmor
Una volta che avvii un container docker dovresti vedere l'output seguente:
Nota che apparmor bloccherà persino i privilegi delle capabilities concessi al container per impostazione predefinita. Ad esempio, sarà in grado di bloccare il permesso di scrittura all'interno di /proc anche se la capability SYS_ADMIN è stata concessa perché per impostazione predefinita il profilo apparmor di docker nega questo accesso:
Devi disabilitare apparmor per eludere le sue restrizioni:
Nota che per impostazione predefinita AppArmor vieterà anche al container di montare cartelle dall'interno anche con la capacità SYS_ADMIN.
Nota che puoi aggiungere/rimuovere capacità al container docker (questo sarà comunque limitato da metodi di protezione come AppArmor e Seccomp):
--cap-add=SYS_ADMIN
aggiunge la capacitàSYS_ADMIN
--cap-add=ALL
aggiunge tutte le capacità--cap-drop=ALL --cap-add=SYS_PTRACE
rimuove tutte le capacità e aggiunge soloSYS_PTRACE
Di solito, quando ti accorgi di avere una capacità privilegiata disponibile all'interno di un container docker ma una parte dell'exploit non funziona, questo sarà perché AppArmor di docker lo sta impedendo.
Esempio
(Esempio da qui)
Per illustrare la funzionalità di AppArmor, ho creato un nuovo profilo Docker "mydocker" con la seguente riga aggiunta:
Per attivare il profilo, dobbiamo fare quanto segue:
Per elencare i profili, possiamo eseguire il seguente comando. Il comando qui sotto elenca il mio nuovo profilo AppArmor.
Come mostrato di seguito, otteniamo un errore quando cerchiamo di modificare "/etc/" poiché il profilo di AppArmor impedisce l'accesso in scrittura a "/etc".
AppArmor Docker Bypass1
È possibile trovare quale profilo apparmor sta eseguendo un contenitore utilizzando:
Quindi, puoi eseguire la seguente riga per trovare il profilo esatto in uso:
Bypass di AppArmor Docker
AppArmor è basato sui percorsi, ciò significa che anche se potrebbe essere protettivo nei confronti dei file all'interno di una directory come /proc
, se puoi configurare come verrà eseguito il container, potresti montare la directory proc dell'host all'interno di /host/proc
e questa non sarà più protetta da AppArmor.
Bypass di AppArmor Shebang
In questo bug puoi vedere un esempio di come anche se stai impedendo a perl di essere eseguito con determinate risorse, se crei semplicemente uno script shell specificando nella prima riga #!/usr/bin/perl
e esegui direttamente il file, sarai in grado di eseguire ciò che desideri. Esempio:
WhiteIntel è 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.
Il loro obiettivo principale di WhiteIntel è combattere le violazioni degli account e gli attacchi ransomware derivanti da malware che rubano informazioni.
Puoi visitare il loro sito web e provare il loro motore gratuitamente su:
Last updated