AppArmor
WhiteIntel to dark-web napędzona wyszukiwarka, która oferuje darmowe 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 za darmo na:
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 ładowanie 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 zasady zdefiniowane w profilu, 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: Ładuje 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żka 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 tworzenia plików globbingowych) do określania plików.
Aby wskazać dostęp, jaki będzie miała binarka do plików, można użyć następujących kontroli dostępu:
r (odczyt)
w (zapis)
m (mapowanie pamięci jako wykonywalne)
k (blokowanie pliku)
l (tworzenie twardych łączy)
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)
Zasady odmowy są obsługiwane do zastępowania zasad zezwalania.
aa-genprof
Aby łatwo rozpocząć tworzenie profilu, apparmor może ci pomóc. Możliwe jest spowodowanie, że apparmor przeanalizuje działania wykonywane przez binarkę, a następnie pozwoli ci zdecydować, 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 odrzucane. 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ć/zakazać/cokolwiek innego
Zarządzanie profilem
Dzienniki
Przykład AUDIT i DENIED logów z /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 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ć uruchomiony tylko na procesie, który jest ograniczony przez ten sam profil apparmor
Po uruchomieniu kontenera dockerowego powinieneś zobaczyć poniższy wynik:
Zauważ, że apparmor zablokuje nawet przyznane domyślnie uprawnienia do możliwości kontenera. Na przykład będzie można zablokować uprawnienie do zapisu wewnątrz /proc nawet jeśli uprawnienie SYS_ADMIN jest przyznane, ponieważ domyślny profil apparmor dla dockera blokuje 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 dockerowego (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
usuwa wszystkie uprawnienia i dodaje tylkoSYS_PTRACE
Zazwyczaj, gdy zauważysz, że masz uprawnienie zwiększone dostępne wewnątrz kontenera dockerowego, 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 Dockerowy "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 do „/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:
AppArmor Docker Bypass2
AppArmor działa na podstawie ścieżek, oznacza to, że nawet jeśli może 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.
AppArmor Shebang Bypass
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 wykonasz 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