<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
**AppArmor** es una mejora del kernel para confinar **programas** a un conjunto **limitado** de **recursos** con **perfiles por programa**. Los perfiles pueden **permitir****capacidades** como acceso a la red, acceso a sockets en bruto y el permiso para leer, escribir o ejecutar archivos en rutas coincidentes.
* **Enforcement**: Los perfiles cargados en modo de enforcement resultarán en la **aplicación de la política** definida en el perfil **así como en la notificación** de intentos de violación de la política (ya sea a través de syslog o auditd).
* **Complain**: Los perfiles en modo de complain **no aplicarán la política**, sino que **notificarán** intentos de **violación** de la política.
AppArmor se diferencia de otros sistemas MAC en Linux: es **basado en rutas**, permite la mezcla de perfiles en modos de enforcement y complain, utiliza archivos de inclusión para facilitar el desarrollo y tiene una barrera de entrada mucho más baja que otros sistemas MAC populares.
Los perfiles de apparmor suelen guardarse en _**/etc/apparmor.d/**_\
Con `sudo aa-status` podrás listar los binarios que están restringidos por algún perfil. Si cambias el carácter "/" por un punto en la ruta de cada binario listado, obtendrás el nombre del perfil de apparmor dentro de la carpeta mencionada.
* Para indicar el ejecutable afectado, se permiten **rutas absolutas y comodines** (para la expansión de nombres de archivos) para especificar archivos.
* Para indicar el acceso que tendrá el binario sobre **archivos**, se pueden utilizar los siguientes **controles de acceso**:
* **r** (lectura)
* **w** (escritura)
* **m** (mapear en memoria como ejecutable)
* **k** (bloqueo de archivos)
* **l** (creación de enlaces duros)
* **ix** (para ejecutar otro programa con la nueva política heredada)
* **Px** (ejecutar bajo otro perfil, después de limpiar el entorno)
* **Cx** (ejecutar bajo un perfil hijo, después de limpiar el entorno)
* **Ux** (ejecutar sin restricciones, después de limpiar el entorno)
* Se pueden definir **Variables** en los perfiles y pueden ser manipuladas desde fuera del perfil. Por ejemplo: @{PROC} y @{HOME} (añadir #include \<tunables/global> al archivo de perfil)
* **Se admiten reglas de denegación para anular reglas de permiso**.
Para empezar a crear un perfil fácilmente, apparmor puede ayudarte. Es posible hacer que **apparmor inspeccione las acciones realizadas por un binario y luego te permita decidir qué acciones quieres permitir o denegar**.\
Luego, en la primera consola presiona "**s**" y luego en las acciones grabadas indica si quieres ignorar, permitir o lo que sea. Cuando hayas terminado presiona "**f**" y el nuevo perfil se creará en _/etc/apparmor.d/path.to.binary_
Tenga en cuenta que por defecto en un perfil creado no se permite nada, por lo que todo está denegado. Necesitará agregar líneas como `/etc/passwd r,` para permitir que el binario lea `/etc/passwd` por ejemplo.
Por defecto, se genera el **perfil Apparmor docker-default** desde [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
* **No se define ninguna capacidad** (Sin embargo, algunas capacidades provendrán de incluir reglas base básicas, por ejemplo, #include \<abstractions/base>)
* **No está permitido escribir** en ningún archivo de **/proc**
Tenga en cuenta que **apparmor bloqueará incluso los privilegios de capacidades** otorgados al contenedor por defecto. Por ejemplo, será capaz de **bloquear el permiso para escribir dentro de /proc incluso si se otorga la capacidad SYS_ADMIN** porque por defecto el perfil de apparmor de docker niega este acceso:
Tenga en cuenta que, por defecto, **AppArmor** también **prohibirá que el contenedor monte** carpetas desde el interior, incluso con la capacidad de SYS_ADMIN.
Tenga en cuenta que puede **añadir/eliminar****capacidades** al contenedor de docker (esto seguirá estando restringido por métodos de protección como **AppArmor** y **Seccomp**):
Por lo general, cuando **descubre** que tiene una **capacidad privilegiada** disponible **dentro** de un contenedor de **docker****pero** alguna parte del **exploit no funciona**, esto se deberá a que el **apparmor de docker estará impidiéndolo**.
En el extraño caso de que puedas **modificar el perfil de apparmor de docker y recargarlo**, podrías eliminar las restricciones y "evitarlas".
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).