<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
AppArmor to **uaktualnienie jądra zaprojektowane w celu ograniczenia zasobów dostępnych dla programów poprzez profile dla poszczególnych programów**, efektywnie wprowadzając kontrolę dostępu wymuszaną (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.
- **Tryb egzekwowania**: Ten tryb aktywnie egzekwuje zasady zdefiniowane w profilu, blokując działania naruszające te zasady i rejestrując wszelkie próby ich naruszenia za pomocą systemów takich jak syslog lub auditd.
- **Tryb skarg**: W przeciwieństwie do trybu egzekwowania, tryb skarg nie blokuje działań sprzecznych z zasadami profilu. Zamiast tego rejestruje te próby jako naruszenia zasad bez egzekwowania ograniczeń.
Profile AppArmor zazwyczaj są zapisywane w _**/etc/apparmor.d/**_\
Za pomocą polecenia `sudo aa-status` można wyświetlić listę binarnych plików, które są ograniczone przez jakiś profil. Jeśli można zmienić znak "/" na kropkę w ścieżce każdego wymienionego pliku binarnego, otrzyma się nazwę profilu apparmor w wymienionym folderze.
* Aby wskazać dotknięty plik wykonywalny, dozwolone są **ścieżki bezwzględne i symbole wieloznaczne** (dla globbingu plików) w celu określenia plików.
* Aby wskazać dostęp, jaki będzie miał program binarny 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 plików)
* **l** (tworzenie twardych dowiązań)
* **ix** (wykonanie innego programu z nowym programem dziedziczącym politykę)
* **Px** (wykonanie w ramach innego profilu po wyczyszczeniu środowiska)
* **Cx** (wykonanie w ramach profilu potomnego po wyczyszczeniu środowiska)
* **Ux** (wykonanie bez ograniczeń po wyczyszczeniu środowiska)
* **Zmienne** mogą być definiowane w profilach i mogą być manipulowane spoza profilu. Na przykład: @{PROC} i @{HOME} (dodaj #include \<tunables/global> do pliku profilu)
* **Zasady odrzucania są obsługiwane w celu zastąpienia zasad zezwalania**.
Aby łatwo rozpocząć tworzenie profilu, można skorzystać z narzędzia apparmor. Możliwe jest sprawienie, żeby **apparmor zbadał działania wykonywane przez program binarny, a następnie pozwolił Ci zdecydować, które działania chcesz zezwolić lub odrzucić**.\
Następnie, w pierwszej konsoli naciśnij "**s**", a następnie w zarejestrowanych działaniach wskaż, czy chcesz zignorować, zezwolić, czy cokolwiek innego. Po zakończeniu naciśnij "**f**", a nowy profil zostanie utworzony w _/etc/apparmor.d/path.to.binary_
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 umożliwić odczyt binarny `/etc/passwd` na przykład.
Domyślnie **profil Apparmor docker-default** jest generowany z [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
Zauważ, że **apparmor domyślnie blokuje uprawnienia capabilities** przyznane kontenerowi. 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:
Zauważ, że możesz **dodawać/usuwać****uprawnienia** dla kontenera Docker (to nadal będzie ograniczone przez metody ochrony takie jak **AppArmor** i **Seccomp**):
Zazwyczaj, gdy **zauważysz**, że masz **uprawnienia zwiększające** dostępność **wewnątrz** kontenera **docker**, ale **część ataku nie działa**, oznacza to, że **apparmor docker** to uniemożliwia.
**AppArmor działa na podstawie ścieżek**, co oznacza, ż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 z hosta wewnątrz **`/host/proc`**, a nie będzie już chroniony przez AppArmor.
W [**tym błędzie**](https://bugs.launchpad.net/apparmor/+bug/1911431) 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:
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.