AppArmor
WhiteIntel to silnik wyszukiwania zasilany dark webem, który oferuje bezpłatne funkcje do sprawdzania, czy firma lub jej klienci zostali skompromitowani przez złośliwe oprogramowanie kradnące dane.
Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.
Możesz sprawdzić ich stronę internetową i wypróbować ich silnik bezpłatnie pod adresem:
Podstawowe informacje
AppArmor to usprawnienie jądra zaprojektowane do ograniczania zasobów dostępnych dla programów poprzez profile dla poszczególnych programów, efektywnie wprowadzające Kontrolę Dostępu Ograniczonego (MAC), wiążąc atrybuty kontroli dostępu bezpośrednio z programami, a nie z użytkownikami. Ten system działa poprzez wczytywanie profili do jądra, zazwyczaj podczas uruchamiania, a te profile określają, do jakich zasobów program może uzyskać dostęp, takich jak połączenia sieciowe, dostęp do gniazd surowych i uprawnienia do plików.
Istnieją dwa tryby operacyjne profili AppArmor:
Tryb Egzekwowania: Ten tryb aktywnie egzekwuje zdefiniowane w profilu zasady, blokując działania, które naruszają te zasady, i rejestrując wszelkie próby ich naruszenia za pośrednictwem systemów takich jak syslog lub auditd.
Tryb Skargi: W odróżnieniu od trybu egzekwowania, tryb skargi nie blokuje działań sprzecznych z zasadami profilu. Zamiast tego rejestruje te próby jako naruszenia zasad bez egzekwowania ograniczeń.
Składniki AppArmor
Moduł jądra: Odpowiedzialny za egzekwowanie zasad.
Zasady: Określają zasady i ograniczenia zachowania programu oraz dostępu do zasobów.
Parser: Wczytuje zasady do jądra w celu egzekwowania lub raportowania.
Narzędzia: Są to programy w trybie użytkownika, które zapewniają interfejs do interakcji z AppArmor i zarządzania nim.
Ścieżki profili
Profile AppArmor zazwyczaj są zapisywane w /etc/apparmor.d/
Za pomocą sudo aa-status
będziesz mógł wyświetlić listę binarnych plików, które są ograniczone przez jakiś profil. Jeśli zmienisz znak "/" na kropkę w ścieżce każdego wymienionego binarnego pliku, otrzymasz nazwę profilu apparmor wewnątrz wspomnianego folderu.
Na przykład profil apparmor dla /usr/bin/man będzie znajdował się w /etc/apparmor.d/usr.bin.man
Komendy
Tworzenie profilu
Aby wskazać dotknięty plik wykonywalny, dozwolone są ścieżki bezwzględne i symbole wieloznaczne (do globowania plików).
Aby wskazać dostęp, który będzie miał binarny plik do plików, można użyć następujących kontroli dostępu:
r (odczyt)
w (zapis)
m (mapowanie pamięci jako plik wykonywalny)
k (blokowanie pliku)
l (tworzenie twardych dowiązań)
ix (wykonanie innego programu z nowym programem dziedziczącym politykę)
Px (wykonanie pod innym profilem, po wyczyszczeniu środowiska)
Cx (wykonanie pod profilem potomnym, po wyczyszczeniu środowiska)
Ux (wykonanie bez ograniczeń, po wyczyszczeniu środowiska)
Zmienne mogą być zdefiniowane w profilach i mogą być manipulowane spoza profilu. Na przykład: @{PROC} i @{HOME} (dodaj #include <tunables/global> do pliku profilu)
Reguły odrzucania są obsługiwane do zastępowania reguł zezwalania.
aa-genprof
Aby łatwo rozpocząć tworzenie profilu, apparmor może ci pomóc. Możliwe jest zlecanie apparmorowi inspekcji działań wykonywanych przez binarny plik, a następnie decydowanie, które działania chcesz zezwolić lub zabronić. Wystarczy uruchomić:
Następnie w innej konsoli wykonaj wszystkie czynności, które zwykle wykonuje plik binarny:
Następnie w pierwszej konsoli naciśnij "s", a następnie w zarejestrowanych działaniach wskaż, czy chcesz zignorować, zezwolić, czy cokolwiek innego. Gdy skończysz, naciśnij "f", a nowy profil zostanie utworzony w /etc/apparmor.d/path.to.binary
Korzystając z klawiszy strzałek, możesz wybrać, co chcesz zezwolić/odmówić/cokolwiek innego
aa-easyprof
Możesz również utworzyć szablon profilu apparmor dla binarnego pliku za pomocą:
Zauważ, że domyślnie w utworzonym profilu nic nie jest dozwolone, więc wszystko jest blokowane. Będziesz musiał dodać linie takie jak /etc/passwd r,
aby pozwolić na odczyt binarny /etc/passwd
na przykład.
Następnie możesz narzucić nowy profil za pomocą
Modyfikowanie profilu z logów
Następujące narzędzie odczyta logi i zapyta użytkownika, czy chce zezwolić na niektóre z wykrytych zabronionych akcji:
Za pomocą klawiszy strzałek możesz wybrać, co chcesz zezwolić/zablokować/cokolwiek innego
Zarządzanie profilem
Dzienniki
Przykład logów AUDIT i DENIED z pliku /var/log/audit/audit.log dla wykonywalnego pliku service_bin
:
Możesz również uzyskać tę informację, korzystając z:
Apparmor w Dockerze
Zauważ, że profil docker-profile dla Dockera jest domyślnie załadowany:
Domyślny profil Apparmor docker-default jest generowany z https://github.com/moby/moby/tree/master/profiles/apparmor
Podsumowanie profilu docker-default:
Dostęp do całej sieci
Nie zdefiniowano żadnych uprawnień (Jednakże niektóre uprawnienia zostaną uwzględnione poprzez dołączenie podstawowych reguł bazowych, tj. #include <abstractions/base>)
Zapisywanie do dowolnego pliku /proc jest nie dozwolone
Inne podkatalogi/pliki z /proc i /sys mają zabroniony dostęp do odczytu/zapisu/blokady/linkowania/wykonania
Montowanie jest nie dozwolone
Ptrace może być uruchomione tylko na procesie, który jest ograniczony przez ten sam profil apparmor
Po uruchomieniu kontenera dockerowego powinieneś zobaczyć następujący wynik:
Zauważ, że apparmor zablokuje nawet przyznane domyślnie uprawnienia do możliwości kontenera. Na przykład będzie w stanie zablokować uprawnienie do zapisu wewnątrz /proc nawet jeśli przyznano uprawnienie SYS_ADMIN, ponieważ domyślny profil apparmor dla dockera odrzuca ten dostęp:
Musisz wyłączyć apparmor, aby ominąć jego ograniczenia:
Zauważ, że domyślnie AppArmor również zabrania kontenerowi montowania folderów od wewnątrz nawet z uprawnieniami SYS_ADMIN.
Zauważ, że możesz dodać/usunąć uprawnienia do kontenera docker (to nadal będzie ograniczone przez metody ochrony takie jak AppArmor i Seccomp):
--cap-add=SYS_ADMIN
dodaje uprawnienieSYS_ADMIN
--cap-add=ALL
dodaje wszystkie uprawnienia--cap-drop=ALL --cap-add=SYS_PTRACE
odrzuca wszystkie uprawnienia i dodaje tylkoSYS_PTRACE
Zazwyczaj, gdy zauważysz, że masz uprawnienie zwiększone dostępne wewnątrz kontenera docker, ale część exploita nie działa, może to być spowodowane tym, że AppArmor docker mu przeszkadza.
Przykład
(Przykład z tutaj)
Aby zilustrować funkcjonalność AppArmor, utworzyłem nowy profil Docker "mydocker" z dodaną następującą linią:
Aby aktywować profil, musimy wykonać następujące czynności:
Aby wyświetlić profile, możemy użyć następującej komendy. Poniższa komenda wyświetla mój nowy profil AppArmor.
Jak pokazano poniżej, otrzymujemy błąd podczas próby zmiany „/etc/”, ponieważ profil AppArmor uniemożliwia dostęp do zapisu w „/etc”.
Bypass1 AppArmor Docker
Możesz sprawdzić, który profil apparmor uruchamia kontener za pomocą:
Następnie możesz uruchomić poniższą komendę, aby znaleźć dokładny profil używany:
Bypass2 AppArmor Docker
AppArmor działa na podstawie ścieżek, oznacza to, że nawet jeśli chroni pliki wewnątrz katalogu takiego jak /proc
, jeśli możesz skonfigurować sposób uruchamiania kontenera, możesz zamontować katalog proc hosta wewnątrz /host/proc
i nie będzie on już chroniony przez AppArmor.
Bypass Shebang AppArmor
W tym błędzie możesz zobaczyć przykład, jak nawet jeśli uniemożliwiasz uruchomienie perla z pewnymi zasobami, jeśli po prostu utworzysz skrypt powłoki określając w pierwszej linii #!/usr/bin/perl
i uruchomisz plik bezpośrednio, będziesz mógł wykonać cokolwiek chcesz. Na przykład:
WhiteIntel to wyszukiwarka zasilana przez dark web, która oferuje darmowe funkcje do sprawdzenia, czy firma lub jej klienci zostali skompromitowani przez złośliwe oprogramowanie kradnące dane.
Ich głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.
Możesz odwiedzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:
Last updated