.. | ||
drozer-tutorial | ||
frida-tutorial | ||
adb-commands.md | ||
android-applications-basics.md | ||
android-burp-suite-settings.md | ||
android-task-hijacking.md | ||
apk-decompilers.md | ||
avd-android-virtual-device.md | ||
bypass-biometric-authentication-android.md | ||
content-protocol.md | ||
exploiting-a-debuggeable-applciation.md | ||
google-ctf-2018-shall-we-play-a-game.md | ||
inspeckage-tutorial.md | ||
install-burp-certificate.md | ||
intent-injection.md | ||
make-apk-accept-ca-certificate.md | ||
manual-deobfuscation.md | ||
react-native-application.md | ||
README.md | ||
reversing-native-libraries.md | ||
smali-changes.md | ||
spoofing-your-location-in-play-store.md | ||
tapjacking.md | ||
webview-attacks.md |
Pentesting de Aplicaciones Android
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 a tu empresa anunciada en HackTricks o descargar HackTricks en PDF consulta los PLANES DE SUSCRIPCIÓN!
- Consigue el merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección de NFTs exclusivos
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.
Únete al servidor de HackenProof Discord para comunicarte con hackers experimentados y cazadores de recompensas por errores!
Perspectivas de Hacking
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking
Noticias de Hacking en Tiempo Real
Mantente al día con el mundo del hacking de ritmo rápido a través de noticias e información en tiempo real
Últimos Anuncios
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones críticas de la plataforma
Únete a nosotros en Discord y comienza a colaborar con los mejores hackers hoy mismo!
Conceptos Básicos de Aplicaciones Android
Es altamente recomendable comenzar leyendo esta página para conocer sobre las partes más importantes relacionadas con la seguridad de Android y los componentes más peligrosos en una aplicación Android:
{% content-ref url="android-applications-basics.md" %} android-applications-basics.md {% endcontent-ref %}
ADB (Android Debug Bridge)
Esta es la herramienta principal que necesitas para conectarte a un dispositivo android (emulado o físico).
Te permite controlar tu dispositivo a través de USB o Red desde una computadora, copiar archivos de ida y vuelta, instalar y desinstalar aplicaciones, ejecutar comandos de shell, realizar copias de seguridad, leer logs y más.
Echa un vistazo a la siguiente lista de Comandos ADB para aprender a usar adb.
Smali
A veces es interesante modificar el código de la aplicación para acceder a información oculta (quizás contraseñas bien ofuscadas o indicadores). Entonces, podría ser interesante descompilar el apk, modificar el código y recompilarlo.
En este tutorial puedes aprender cómo descompilar y modificar el código Smali y recompilar el APK con la nueva funcionalidad. Esto podría ser muy útil como una alternativa para varias pruebas durante el análisis dinámico que se van a presentar. Entonces, ten siempre en cuenta esta posibilidad.
Otros trucos interesantes
- Suplantación de tu ubicación en Play Store
- Descargar APKs: https://apps.evozi.com/apk-downloader/, https://apkpure.com/es/, https://www.apkmirror.com/, https://apkcombo.com/es-es/apk-downloader/
- Extraer APK del dispositivo:
adb shell pm list packages
com.android.insecurebankv2
adb shell pm path com.android.insecurebankv2
package:/data/app/com.android.insecurebankv2-Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
Análisis Estático
Primero que nada, para analizar un APK debes echar un vistazo al código Java usando un descompilador.
Por favor, lee aquí para encontrar información sobre diferentes descompiladores disponibles.
Buscando Información Interesante
Simplemente echando un vistazo a las cadenas del APK puedes buscar contraseñas, URLs (https://github.com/ndelphit/apkurlgrep), claves api, cifrado, uuids de bluetooth, tokens y cualquier cosa interesante... busca incluso puertas traseras de ejecución de código o puertas traseras de autenticación (credenciales de administrador codificadas en la aplicación).
Firebase
Presta especial atención a las URLs de firebase y verifica si está mal configurado. Más información sobre qué es Firebase y cómo explotarlo aquí.
Comprensión Básica de la Aplicación - Manifest.xml, strings.xml
Usando cualquiera de los descompiladores mencionados aquí podrás leer el Manifest.xml. También podrías cambiar la extensión del archivo apk a .zip y descomprimirlo.
Leyendo el manifiesto puedes encontrar vulnerabilidades:
- Primero que nada, verifica si la aplicación es depurable. Un APK de producción no debería serlo (o otros podrán conectarse a él). Puedes verificar si una aplicación es depurable buscando en el manifiesto el atributo
debuggable="true"
dentro de la etiqueta <application Ejemplo:<application theme="@2131296387" debuggable="true"
- Aprende aquí cómo encontrar aplicaciones depurables en un teléfono y explotarlas
- Backup: El atributo
android:allowBackup
define si los datos de la aplicación pueden ser respaldados y restaurados por un usuario que ha habilitado la depuración usb. Si la bandera de respaldo está configurada como verdadera, permite a un atacante tomar el respaldo de los datos de la aplicación a través de adb incluso si el dispositivo no está rooteado. Por lo tanto, las aplicaciones que manejan y almacenan información sensible como detalles de tarjetas, contraseñas, etc., deberían tener esta configuración explícitamente establecida en falso porque por defecto está configurada en verdadero para prevenir tales riesgos. <application android:allowBackup="false"
- NetworkSecurity: La seguridad de red de la aplicación puede sobrescribir los valores predeterminados con
android:networkSecurityConfig="@xml/network_security_config"
. Un archivo con ese nombre puede ser colocado en res/xml. Este archivo configurará ajustes de seguridad importantes como pines de certificado o si permite tráfico HTTP. Puedes leer aquí más información sobre todas las cosas que se pueden configurar, pero revisa este ejemplo sobre cómo configurar tráfico HTTP para algunos dominios: <domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">formation-software.co.uk </domain></domain-config>
- Actividades Exportadas: Verifica las actividades exportadas dentro del manifiesto ya que esto podría ser peligroso. Más adelante en el análisis dinámico se explicará cómo puedes abusar de este comportamiento.
- Proveedores de Contenido: Si se está exponiendo un proveedor exportado, podrías ser capaz de acceder/modificar información interesante. En el análisis dinámico aprenderás cómo abusar de ellos.
- Verifica las configuraciones de FileProviders dentro del atributo
android:name="android.support.FILE_PROVIDER_PATHS"
. Lee aquí para aprender más sobre FileProviders. - Servicios Expuestos: Dependiendo de lo que el servicio esté haciendo internamente, las vulnerabilidades podrían ser explotadas. En el análisis dinámico aprenderás cómo abusar de ellos.
- Receptores de Broadcast: Aprenderás cómo posiblemente explotarlos durante el análisis dinámico.
- Esquema URL: Lee el código de la actividad que maneja el esquema y busca vulnerabilidades en la gestión de la entrada del usuario. Más información sobre qué es un esquema URL aquí.
- minSdkVersion, targetSDKVersion, maxSdkVersion: Indican las versiones de Android en las que la aplicación funcionará. Es importante tenerlas en cuenta porque desde una perspectiva de seguridad, soportar versiones antiguas permitirá que versiones de Android conocidas por ser vulnerables la ejecuten.
Leyendo resources.arsc/strings.xml puedes encontrar información interesante:
- Claves API
- Esquemas personalizados
- Otra información interesante que los desarrolladores guardan en este archivo
Tapjacking
Tapjacking es un ataque donde una aplicación maliciosa se lanza y se posiciona encima de una aplicación víctima. Una vez que oculta visiblemente la app víctima, su interfaz de usuario está diseñada de tal manera que engaña al usuario para interactuar con ella, mientras pasa la interacción a la aplicación víctima.
En efecto, está impidiendo que el usuario sepa que en realidad está realizando acciones en la aplicación víctima.
Encuentra más información en:
{% content-ref url="tapjacking.md" %} tapjacking.md {% endcontent-ref %}
Secuestro de Tareas
Una actividad con el launchMode
configurado en singleTask
sin ninguna taskAffinity
definida es vulnerable al secuestro de tareas. Esto significa que una aplicación puede ser instalada y si se lanza antes de la aplicación real podría secuestrar la tarea de la aplicación real (así el usuario estará interactuando con la aplicación maliciosa pensando que está usando la real).
Más información en:
{% content-ref url="android-task-hijacking.md" %} android-task-hijacking.md {% endcontent-ref %}
Almacenamiento de Datos Inseguro
Almacenamiento Interno
Los archivos creados en el almacenamiento interno son accesibles solo por la aplicación. Esta protección es implementada por Android y es suficiente para la mayoría de las aplicaciones. Pero los desarrolladores a menudo usan MODE_WORLD_READBALE
& MODE_WORLD_WRITABLE
para dar acceso a esos archivos a una aplicación diferente, pero esto no limita a otras aplicaciones (maliciosas) de acceder a ellos.
Durante el análisis estático verifica el uso de esos modos, durante el análisis dinámico verifica los permisos de los archivos creados (quizás algunos de ellos son legibles/escribibles a nivel mundial).
Más información sobre esta vulnerabilidad y cómo solucionarla aquí.
Almacenamiento Externo
Los archivos creados en el almacenamiento externo, como tarjetas SD, son legibles y escribibles globalmente. Debido a que el almacenamiento externo puede ser removido por el usuario y también modificado por cualquier aplicación, no debes almacenar información sensible usando almacenamiento externo.
Como con datos de cualquier fuente no confiable, debes realizar validación de entrada al manejar datos de almacenamiento externo. Recomendamos encarecidamente que no almacenes archivos ejecutables o archivos de clase en almacenamiento externo antes de la carga dinámica. Si tu aplicación recupera archivos ejecutables del almacenamiento externo, los archivos deben estar firmados y verificados criptográficamente antes de la carga dinámica.
Información tomada de aquí.
El almacenamiento externo se puede acceder en /storage/emulated/0
, /sdcard
, /mnt/sdcard
{% hint style="info" %} A partir de Android 4.4 (API 17), la tarjeta SD tiene una estructura de directorios que limita el acceso de una aplicación al directorio que es específicamente para esa aplicación. Esto evita que una aplicación maliciosa obtenga acceso de lectura o escritura a los archivos de otra aplicación. {% endhint %}
Datos Sensibles Almacenados en Texto Claro
- Preferencias Compartidas: Android permite a cada aplicación guardar fácilmente archivos xml en la ruta
/data/data/<packagename>/shared_prefs/
y a veces es posible encontrar información sensible en texto claro en esa carpeta. - Bases de Datos: Android permite a cada aplicación guardar fácilmente bases de datos sqlite en la ruta
/data/data/<packagename>/databases/
y a veces es posible encontrar información sensible en texto claro en esa carpeta.
TLS Roto
Aceptar Todos los Certificados
Por alguna razón a veces los desarrolladores aceptan todos los certificados incluso si por ejemplo el nombre del host no coincide con líneas de código como la siguiente:
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
Una buena manera de probar esto es intentar capturar el tráfico utilizando algún proxy como Burp sin autorizar el CA de Burp dentro del dispositivo. También, puedes generar con Burp un certificado para un nombre de host diferente y usarlo.
Criptografía Rota
Procesos de Gestión de Claves Deficientes
Algunos desarrolladores guardan datos sensibles en el almacenamiento local y los encriptan con una clave codificada/predecible en el código. Esto no debería hacerse ya que un poco de ingeniería inversa podría permitir a los atacantes extraer la información confidencial.
Uso de Algoritmos Inseguros y/o Obsoletos
Los desarrolladores no deberían usar algoritmos obsoletos para realizar verificaciones de autorización, almacenar o enviar datos. Algunos de estos algoritmos son: RC4, MD4, MD5, SHA1... Si se utilizan hashes para almacenar contraseñas, por ejemplo, se deben usar hashes resistentes a la fuerza bruta con sal.
Otras comprobaciones
- Se recomienda ofuscar el APK para dificultar el trabajo de ingeniería inversa a los atacantes.
- Si la aplicación es sensible (como las de bancos), debería realizar sus propias comprobaciones para ver si el móvil está rooteado y actuar en consecuencia.
- Si la aplicación es sensible (como las de bancos), debería comprobar si se está utilizando un emulador.
- Si la aplicación es sensible (como las de bancos), debería verificar su propia integridad antes de ejecutarse para comprobar si fue modificada.
- Usa APKiD para comprobar qué compilador/empaquetador/ofuscador se utilizó para construir el APK
Aplicación React Native
Lee la siguiente página para aprender cómo acceder fácilmente al código javascript de aplicaciones React:
{% content-ref url="react-native-application.md" %} react-native-application.md {% endcontent-ref %}
Aplicaciones Xamarin
Lee la siguiente página para aprender cómo acceder fácilmente al código C# de aplicaciones xamarin:
{% content-ref url="../xamarin-apps.md" %} xamarin-apps.md {% endcontent-ref %}
Aplicaciones Superempaquetadas
Según este artículo del blog, superempaquetado es un algoritmo de Meta que comprime el contenido de una aplicación en un solo archivo. El blog habla sobre la posibilidad de crear una aplicación que descomprima este tipo de aplicaciones... y una manera más rápida que implica ejecutar la aplicación y recopilar los archivos descomprimidos del sistema de archivos.
Análisis Estático Automatizado del Código
La herramienta mariana-trench es capaz de encontrar vulnerabilidades al escanear el código de la aplicación. Esta herramienta contiene una serie de fuentes conocidas (que indican a la herramienta los lugares donde la entrada está controlada por el usuario), sumideros (que indican a la herramienta lugares peligrosos donde la entrada maliciosa del usuario podría causar daños) y reglas. Estas reglas indican la combinación de fuentes-sumideros que señalan una vulnerabilidad.
Con este conocimiento, mariana-trench revisará el código y encontrará posibles vulnerabilidades en él.
Secretos Revelados
Una aplicación puede contener secretos (claves de API, contraseñas, URLs ocultas, subdominios...) dentro de ella que podrías descubrir. Podrías usar una herramienta como https://github.com/dwisiswant0/apkleaks
Eludir la Autenticación Biométrica
{% content-ref url="bypass-biometric-authentication-android.md" %} bypass-biometric-authentication-android.md {% endcontent-ref %}
Otras funciones interesantes
- Ejecución de código:
Runtime.exec(), ProcessBuilder(), código nativo:system()
- Enviar SMS:
sendTextMessage, sendMultipartTestMessage
- Funciones nativas declaradas como
native
:public native, System.loadLibrary, System.load
- Lee esto para aprender cómo revertir funciones nativas
Otros trucos
{% content-ref url="content-protocol.md" %} content-protocol.md {% endcontent-ref %}
Únete al servidor de HackenProof Discord para comunicarte con hackers experimentados y cazadores de recompensas por errores.
Perspectivas de Hacking
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking.
Noticias de Hacking en Tiempo Real
Mantente al día con el mundo del hacking a través de noticias e insights en tiempo real.
Últimos Anuncios
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones cruciales de la plataforma.
Únete a nosotros en Discord y comienza a colaborar con los mejores hackers hoy mismo.
Análisis Dinámico
Primero que nada, necesitas un entorno donde puedas instalar la aplicación y todo el entorno (certificado CA de Burp, Drozer y Frida principalmente). Por lo tanto, se recomienda encarecidamente un dispositivo rooteado (emulado o no).
Análisis Dinámico en Línea
Puedes crear una cuenta gratuita en: https://appetize.io/. Esta plataforma te permite subir y ejecutar APKs, por lo que es útil para ver cómo se comporta un apk.
Incluso puedes ver los registros de tu aplicación en la web y conectarte a través de adb.
Gracias a la conexión ADB puedes usar Drozer y Frida dentro de los emuladores.
Análisis Dinámico Local
Usando un emulador
- Android Studio (Puedes crear dispositivos x86 y arm, y según esto las últimas versiones x86 soportan bibliotecas ARM sin necesidad de un emulador arm lento).
- Aprende a configurarlo en esta página:
{% content-ref url="avd-android-virtual-device.md" %} avd-android-virtual-device.md {% endcontent-ref %}
- Genymotion (Versión gratuita: Personal Edition, necesitas crear una cuenta. Se recomienda descargar la versión CON VirtualBox para evitar posibles errores.)
- Nox (Gratis, pero no soporta Frida o Drozer).
{% hint style="info" %} Al crear un nuevo emulador en cualquier plataforma, recuerda que cuanto más grande sea la pantalla, más lento funcionará el emulador. Por lo tanto, selecciona pantallas pequeñas si es posible. {% endhint %}
Para instalar servicios de Google (como AppStore) en Genymotion necesitas hacer clic en el botón marcado en rojo de la siguiente imagen:
Además, ten en cuenta que en la configuración de la VM de Android en Genymotion puedes seleccionar modo de red Bridge (esto será útil si te conectarás a la VM de Android desde una VM diferente con las herramientas).
Usar un dispositivo físico
Necesitas activar las opciones de depuración y sería genial si puedes rootearlo:
- Ajustes.
- (Desde Android 8.0) Selecciona Sistema.
- Selecciona Acerca del teléfono.
- Presiona Número de compilación 7 veces.
- Regresa y encontrarás las Opciones de desarrollador.
Una vez que hayas instalado la aplicación, lo primero que debes hacer es probarla e investigar qué hace, cómo funciona y familiarizarte con ella.
Sugiero realizar este análisis dinámico inicial usando el análisis dinámico de MobSF + pidcat, para que podamos aprender cómo funciona la aplicación mientras MobSF captura una gran cantidad de datos interesantes que puedes revisar más tarde.
Fuga de Datos No Intencionada
Registro
A menudo, los desarrolladores dejan información de depuración públicamente. Por lo tanto, cualquier aplicación con permiso READ_LOGS
puede acceder a esos registros y obtener información sensible a través de ellos.
Mientras navegas por la aplicación, usa pidcat(Recomendado, es más fácil de usar y leer) o adb logcat para leer los registros creados y buscar información sensible.
{% hint style="warning" %}
Ten en cuenta que desde versiones posteriores a Android 4.0, las aplicaciones solo pueden acceder a sus propios registros. Por lo tanto, las aplicaciones no pueden acceder a los registros de otras aplicaciones.
De todos modos, todavía se recomienda no registrar información sensible.
{% endhint %}
Caché del Buffer de Copiar/Pegar
Android proporciona un marco basado en portapapeles para proporcionar la función de copiar y pegar en aplicaciones android. Pero esto crea un problema serio cuando alguna otra aplicación puede acceder al portapapeles que contiene datos sensibles. La función de Copiar/Pegar debe ser deshabilitada para la parte sensible de la aplicación. Por ejemplo, deshabilitar la copia de detalles de tarjetas de crédito.
Registros de Fallos
Si una aplicación se bloquea durante la ejecución y guarda registros en algún lugar, esos registros pueden ser de ayuda para un atacante, especialmente en casos en los que la aplicación android no se puede revertir. Entonces, evita crear registros cuando las aplicaciones se bloquean y si los registros se envían a través de la red, asegúrate de que se envíen a través de un canal SSL.
Como pentester, intenta echar un vistazo a estos registros.
Datos Analíticos Enviados a Terceros
La mayoría de las aplicaciones utilizan otros servicios en su aplicación como Google Adsense, pero a veces filtran algunos datos sensibles o datos que no se requieren enviar a ese servicio. Esto puede ocurrir debido a que el desarrollador no implementa la función correctamente. Puedes buscar interceptando el tráfico de la aplicación y ver si se envía algún dato sensible a terceros o no.
Bases de Datos SQLite
La mayoría de las aplicaciones utilizarán bases de datos SQLite internas para guardar información. Durante el pentest, echa un vistazo a las bases de datos creadas, los nombres de las tablas y columnas y todos los datos guardados porque podrías encontrar información sensible (lo que sería una vulnerabilidad).
Las bases de datos deben estar ubicadas en /data/data/el.nombre.del.paquete/databases
como /data/data/com.mwr.example.sieve/databases
Si la base de datos guarda información confidencial y está encriptada pero puedes encontrar la contraseña dentro de la aplicación, sigue siendo una vulnerabilidad.
Enumera las tablas usando .tables
y enumera las columnas de las tablas haciendo .schema <nombre_de_la_tabla>
Drozer (Explotar Actividades, Proveedores de Contenido y Servicios)
Drozer te permite asumir el papel de una aplicación Android e interactuar con otras aplicaciones. Puede hacer todo lo que una aplicación instalada puede hacer, como hacer uso del mecanismo de Comunicación entre Procesos (IPC) de Android e interactuar con el sistema operativo subyacente. Desde Guía de Drozer.
Drozer es una herramienta útil para explotar actividades exportadas, servicios exportados y Proveedores de Contenido como aprenderás en las siguientes secciones.
Explotando Actividades Exportadas
Lee esto si quieres recordar qué es una Actividad Android.
También recuerda que el código de una actividad comienza con el método onCreate
.
Elusión de autorización
Cuando una Actividad está exportada, puedes invocar su pantalla desde una aplicación externa. Por lo tanto, si una actividad con información sensible está exportada, podrías eludir los mecanismos de autenticación para acceder a ella.
Aprende cómo explotar actividades exportadas con Drozer.
También puedes iniciar una actividad exportada desde adb:
- El NombreDelPaquete es com.example.demo
- El NombreDeLaActividadExportada es com.example.test.MainActivity
adb shell am start -n com.example.demo/com.example.test.MainActivity
NOTA: MobSF detectará como malicioso el uso de singleTask/singleInstance como android:launchMode
en una actividad, pero debido a esto, aparentemente esto solo es peligroso en versiones antiguas (versiones de API < 21).
{% hint style="info" %} Ten en cuenta que un bypass de autorización no siempre es una vulnerabilidad, dependerá de cómo funcione el bypass y qué información se exponga. {% endhint %}
Fuga de información sensible
Las actividades también pueden devolver resultados. Si logras encontrar una actividad exportada y desprotegida que llame al método setResult
y devuelva información sensible, hay una fuga de información sensible.
Tapjacking
Si no se previene el tapjacking, podrías abusar de la actividad exportada para hacer que el usuario realice acciones inesperadas. Para más información sobre qué es Tapjacking sigue el enlace.
Explotación de Content Providers - Acceso y manipulación de información sensible
Lee esto si quieres recordar qué es un Content Provider.
Los content providers se utilizan básicamente para compartir datos. Si una app tiene content providers disponibles, podrías ser capaz de extraer datos sensibles de ellos. También es interesante probar posibles inyecciones SQL y Path Traversals ya que podrían ser vulnerables.
Aprende cómo explotar Content Providers con Drozer.
Explotación de Servicios
Lee esto si quieres recordar qué es un Servicio.
Recuerda que las acciones de un Servicio comienzan en el método onStartCommand
.
Un servicio es básicamente algo que puede recibir datos, procesarlos y devolver (o no) una respuesta. Entonces, si una aplicación está exportando algunos servicios, debes verificar el código para entender qué está haciendo y probarlo dinámicamente para extraer información confidencial, eludir medidas de autenticación...
Aprende cómo explotar Servicios con Drozer.
Explotación de Broadcast Receivers
Lee esto si quieres recordar qué es un Broadcast Receiver.
Recuerda que las acciones de un Broadcast Receiver comienzan en el método onReceive
.
Un broadcast receiver estará esperando por un tipo de mensaje. Dependiendo de cómo el receptor maneje el mensaje, podría ser vulnerable.
Aprende cómo explotar Broadcast Receivers con Drozer.
Explotación de Esquemas / Deep links
Puedes buscar deep links manualmente, usando herramientas como MobSF o scripts como este.
Puedes abrir un esquema declarado usando adb o un navegador:
{% code overflow="wrap" %}
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
{% endcode %}
Tenga en cuenta que puede omitir el nombre del paquete y el móvil llamará automáticamente a la aplicación que debería abrir ese enlace.
{% code overflow="wrap" %}
<!-- Browser regular link -->
<a href="scheme://hostname/path?param=value">Click me</a>
<!-- fallback in your url you could try the intent url -->
<a href="intent://hostname#Intent;scheme=scheme;package=your.package.name;S.browser_fallback_url=http%3A%2F%2Fwww.example.com;end">with alternative</a>
{% endcode %}
Código ejecutado
Para encontrar el código que se ejecutará en la App, ve a la actividad llamada por el deeplink y busca la función onNewIntent
.
Información sensible
Cada vez que encuentres un deep link verifica que no esté recibiendo datos sensibles (como contraseñas) a través de parámetros URL, porque cualquier otra aplicación podría suplantar el deep link y robar esos datos.
Parámetros en la ruta
También debes verificar si algún deep link está utilizando un parámetro dentro de la ruta de la URL como: https://api.example.com/v1/users/{username}
, en ese caso puedes forzar un path traversal accediendo a algo como: example://app/users?username=../../unwanted-endpoint%3fparam=value
.
Ten en cuenta que si encuentras los endpoints correctos dentro de la aplicación, podrías causar un Open Redirect (si parte de la ruta se usa como nombre de dominio), toma de control de cuenta (si puedes modificar los detalles de los usuarios sin token CSRF y el endpoint vulnerable usó el método correcto) y cualquier otra vulnerabilidad. Más información sobre esto aquí.
Más ejemplos
Un informe de bug bounty interesante sobre enlaces (/.well-known/assetlinks.json).
Protección Insuficiente de la Capa de Transporte
- Falta de Inspección de Certificados: La Aplicación Android no verifica la identidad del certificado presentado. La mayoría de las aplicaciones ignoran las advertencias y aceptan cualquier certificado autofirmado presentado. Algunas aplicaciones, en cambio, pasan el tráfico a través de una conexión HTTP.
- Negociación de Handshake Débil: La aplicación y el servidor realizan un handshake SSL/TLS pero usan un conjunto de cifrado inseguro que es vulnerable a ataques MITM. Por lo tanto, cualquier atacante puede descifrar fácilmente esa conexión.
- Fuga de Información Privada: La mayoría de las veces sucede que las aplicaciones hacen autenticación a través de un canal seguro pero el resto de la conexión a través de un canal no seguro. Eso no contribuye a la seguridad de la aplicación porque otros datos sensibles como la cookie de sesión o los datos del usuario pueden ser interceptados por un usuario malicioso.
De los 3 escenarios presentados vamos a discutir cómo verificar la identidad del certificado. Los otros 2 escenarios dependen de la configuración TLS del servidor y si la aplicación envía datos sin cifrar. El pentester debe verificar por sí mismo la configuración TLS del servidor (aquí) y detectar si cualquier información confidencial se envía por un canal no cifrado/vulnerable.
Más información sobre cómo descubrir y solucionar este tipo de vulnerabilidades aquí.
SSL Pinning
Por defecto, al realizar una conexión SSL, el cliente (app android) verifica que el certificado del servidor tenga una cadena de confianza verificable hasta un certificado de confianza (raíz) y coincida con el nombre de host solicitado. Esto conduce al problema de Ataques de Hombre en el Medio (MITM).
En el Pinnning de Certificados, una Aplicación Android contiene el certificado del servidor y solo transmite datos si se presenta el mismo certificado.
Se recomienda aplicar SSL Pinning para los sitios donde se va a enviar información sensible.
Inspección del tráfico HTTP
Primero que todo, deberías (debes) instalar el certificado del proxy que vas a usar, probablemente Burp. Si no instalas el certificado CA del proxy, probablemente no podrás ver el tráfico cifrado en el proxy.
Por favor, lee esta guía para aprender cómo instalar un certificado CA personalizado.
Para aplicaciones que apuntan al Nivel de API 24+ no es suficiente instalar el certificado CA de Burp en el dispositivo. Para eludir esta nueva protección necesitas modificar el archivo de Configuración de Seguridad de Red. Por lo tanto, podrías modificar este archivo para autorizar tu certificado CA o puedes leer esta página para un tutorial sobre cómo forzar a la aplicación a aceptar de nuevo todos los certificados instalados en el dispositivo.
SSL Pinning
Ya hemos discutido qué es SSL Pinning justo 2 párrafos antes. Cuando está implementado en una aplicación necesitarás eludirlo para inspeccionar el tráfico HTTPS o no lo verás.
Aquí voy a presentar algunas opciones que he usado para eludir esta protección:
- Modificar automáticamente el apk para eludir SSLPinning con apk-mitm. La mejor ventaja de esta opción es que no necesitarás root para eludir el SSL Pinning, pero necesitarás eliminar la aplicación y reinstalar la nueva, y esto no siempre funcionará.
- Podrías usar Frida (discutido más abajo) para eludir esta protección. Aquí tienes una guía para usar Burp+Frida+Genymotion: https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/
- También puedes intentar eludir automáticamente SSL Pinning usando objection:
objection --gadget com.package.app explore --startup-command "android sslpinning disable"
- También puedes intentar eludir automáticamente SSL Pinning usando análisis dinámico de MobSF (explicado más abajo)
- Si aún piensas que hay algún tráfico que no estás capturando puedes intentar redirigir el tráfico a burp usando iptables. Lee este blog: https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62
Vulnerabilidades web comunes
Ten en cuenta que en este paso debes buscar vulnerabilidades web comunes. Mucha información sobre vulnerabilidades web se puede encontrar en este libro, así que no las mencionaré aquí.
Frida
Kit de herramientas de instrumentación dinámica para desarrolladores, ingenieros inversos e investigadores de seguridad. Aprende más en www.frida.re.
Es increíble, puedes acceder a aplicaciones en ejecución y enganchar métodos en tiempo de ejecución para cambiar el comportamiento, cambiar valores, extraer valores, ejecutar código diferente...
Si quieres hacer pentesting a aplicaciones Android necesitas saber cómo usar Frida.
Aprende a usar Frida: Tutorial de Frida
Algunas "GUI" para acciones con Frida: https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security
Otras abstracciones basadas en Frida: https://github.com/sensepost/objection , https://github.com/dpnishant/appmon
Puedes encontrar algunos scripts de Frida increíbles aquí: https://codeshare.frida.re/
Volcado de Memoria - Fridump
Verifica si la aplicación está almacenando información sensible dentro de la memoria que no debería estar almacenando, como contraseñas o mnemónicos.
Usando Fridump3 puedes volcar la memoria de la app con:
# With PID
python3 fridump3.py -u <PID>
# With name
frida-ps -Uai
python3 fridump3.py -u "<Name>"
Esta acción volcará la memoria en la carpeta ./dump, y allí podrías usar grep con algo como:
{% code overflow="wrap" %}
strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+$"
Datos sensibles en Keystore
En Android, Keystore es el mejor lugar para almacenar datos sensibles, sin embargo, con suficientes privilegios aún es posible acceder a él. Como las aplicaciones tienden a almacenar aquí datos sensibles en texto claro, los pentests deben verificarlo como usuario root o alguien con acceso físico al dispositivo podría robar estos datos.
Incluso si una aplicación almacenó datos en el keystore, los datos deben estar cifrados.
Para acceder a los datos dentro del keystore puedes usar este script de Frida: https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
Bypass de Huellas Dactilares/Biométricos
Utilizando el siguiente script de Frida podría ser posible bypass la autenticación por huella dactilar que las aplicaciones Android podrían estar realizando para proteger ciertas áreas sensibles:
{% code overflow="wrap" %}
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
{% endcode %}
Imágenes de Fondo
Cuando pones una aplicación en segundo plano, Android almacena una instantánea de la aplicación para que, cuando se recupere en primer plano, comience a cargar la imagen antes de la aplicación para que parezca que la aplicación se cargó más rápido.
Sin embargo, si esta instantánea contiene información sensible, alguien con acceso a la instantánea podría robar esa información (nota que necesitas ser root para acceder a ella).
Las instantáneas suelen almacenarse en: /data/system_ce/0/snapshots
Android proporciona una manera de prevenir la captura de pantalla estableciendo el parámetro de diseño FLAG_SECURE. Al usar esta bandera, el contenido de la ventana se trata como seguro, evitando que aparezca en capturas de pantalla o que sea visto en pantallas no seguras.
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
Analizador de Aplicaciones Android
Esta herramienta podría ayudarte a gestionar diferentes herramientas durante el análisis dinámico: https://github.com/NotSoSecure/android_application_analyzer
Inyección de Intent
Esta vulnerabilidad se asemeja a Open Redirect en seguridad web. Dado que la clase Intent
es Parcelable
, objetos pertenecientes a esta clase pueden ser pasados como datos extra en otro objeto Intent
.
Muchos desarrolladores hacen uso de esta característica y crean componentes proxy (actividades, receptores de difusión y servicios) que toman un Intent incrustado y lo pasan a métodos peligrosos como startActivity(...)
, sendBroadcast(...)
, etc.
Esto es peligroso porque un atacante puede forzar a la app a lanzar un componente no exportado que no puede ser lanzado directamente desde otra app, o para conceder al atacante acceso a sus proveedores de contenido. WebView
también a veces cambia una URL de un string a un objeto Intent
, utilizando el método Intent.parseUri(...)
, y lo pasa a startActivity(...)
.
Inyecciones en el Lado del Cliente de Android y otros
Probablemente conozcas este tipo de vulnerabilidades de la Web. Debes tener especial cuidado con estas vulnerabilidades en una aplicación Android:
- SQL Injection: Cuando trates con consultas dinámicas o Content-Providers asegúrate de estar utilizando consultas parametrizadas.
- JavaScript Injection (XSS): Verifica que el soporte de JavaScript y Plugin esté desactivado para cualquier WebView (desactivado por defecto). Más información aquí.
- Local File Inclusion: Verifica que el acceso al sistema de archivos esté desactivado para cualquier WebView (activado por defecto)
(webview.getSettings().setAllowFileAccess(false);)
. Más información aquí. - Cookies eternas: En varios casos cuando la aplicación android termina la sesión la cookie no se revoca o incluso podría ser guardada en disco
- Secure Flag en cookies
Únete al servidor de HackenProof Discord para comunicarte con hackers experimentados y cazadores de recompensas por errores!
Perspectivas de Hacking
Interactúa con contenido que profundiza en la emoción y los desafíos del hacking
Noticias de Hacking en Tiempo Real
Mantente al día con el mundo del hacking de ritmo rápido a través de noticias e insights en tiempo real
Últimos Anuncios
Mantente informado con los lanzamientos de nuevas recompensas por errores y actualizaciones cruciales de la plataforma
Únete a nosotros en Discord y comienza a colaborar con los mejores hackers hoy mismo!
Análisis Automático
MobSF
Análisis estático
Evaluación de vulnerabilidades de la aplicación utilizando una agradable interfaz web. También puedes realizar análisis dinámico (pero necesitas preparar el entorno).
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
Tenga en cuenta que MobSF puede analizar aplicaciones Android (apk), IOS (ipa) y Windows (apx) (las aplicaciones de Windows deben analizarse desde un MobSF instalado en un host de Windows). Además, si crea un archivo ZIP con el código fuente de una aplicación Android o IOS (vaya a la carpeta raíz de la aplicación, seleccione todo y cree un archivo ZIP), también podrá analizarlo.
MobSF también permite diff/Compare análisis e integrar VirusTotal (necesitará configurar su clave API en MobSF/settings.py y habilitarlo: VT_ENABLED = TRUE
VT_API_KEY = <Su clave API>
VT_UPLOAD = TRUE
). También puede configurar VT_UPLOAD
en False
, entonces el hash será subido en lugar del archivo.
Análisis dinámico asistido con MobSF
MobSF también puede ser muy útil para el análisis dinámico en Android, pero en ese caso necesitará instalar MobSF y genymotion en su host (una VM o Docker no funcionará). Nota: Necesita iniciar primero una VM en genymotion y luego MobSF.
El analizador dinámico MobSF puede:
- Volcar datos de la aplicación (URLs, registros, portapapeles, capturas de pantalla hechas por usted, capturas de pantalla hechas por "Exported Activity Tester", correos electrónicos, bases de datos SQLite, archivos XML y otros archivos creados). Todo esto se hace automáticamente excepto las capturas de pantalla, necesita presionar cuando desee una captura de pantalla o necesita presionar "Exported Activity Tester" para obtener capturas de pantalla de todas las actividades exportadas.
- Capturar tráfico HTTPS
- Usar Frida para obtener información en tiempo de ejecución
Desde versiones de android > 5, iniciará automáticamente Frida y configurará ajustes globales de proxy para capturar tráfico. Solo capturará tráfico de la aplicación probada.
Frida
Por defecto, también usará algunos scripts de Frida para bypass SSL pinning, detección de root y detección de depurador y para monitorear APIs interesantes.
MobSF también puede invocar actividades exportadas, capturar capturas de pantalla de ellas y guardarlas para el informe.
Para iniciar las pruebas dinámicas presione el botón verde: "Start Instrumentation". Presione "Frida Live Logs" para ver los registros generados por los scripts de Frida y "Live API Monitor" para ver todas las invocaciones a métodos enganchados, argumentos pasados y valores devueltos (esto aparecerá después de presionar "Start Instrumentation").
MobSF también le permite cargar sus propios scripts de Frida (para enviar los resultados de sus scripts de Frida a MobSF use la función send()
). También tiene varios scripts preescritos que puede cargar (puede agregar más en MobSF/DynamicAnalyzer/tools/frida_scripts/others/
), solo seléctionelos, presione "Load" y presione "Start Instrumentation" (podrá ver los registros de esos scripts dentro de "Frida Live Logs").
Además, tiene algunas funcionalidades auxiliares de Frida:
- Enumerar Clases Cargadas: Imprimirá todas las clases cargadas
- Capturar Cadenas: Imprimirá todas las cadenas capturadas mientras usa la aplicación (muy ruidoso)
- Capturar Comparaciones de Cadenas: Podría ser muy útil. Mostrará las 2 cadenas que se están comparando y si el resultado fue Verdadero o Falso.
- Enumerar Métodos de Clase: Ponga el nombre de la clase (como "java.io.File") e imprimirá todos los métodos de la clase.
- Buscar Patrón de Clase: Buscar clases por patrón
- Rastrear Métodos de Clase: Rastrear una clase completa (ver entradas y salidas de todos los métodos de la clase). Recuerde que por defecto MobSF rastrea varios métodos interesantes de la API de Android.
Una vez que haya seleccionado el módulo auxiliar que desea usar, necesita presionar "Start Instrumentation" y verá todas las salidas en "Frida Live Logs".
Shell
MobSF también le ofrece una shell con algunos comandos de adb, comandos de MobSF y comandos comunes de shell en la parte inferior de la página de análisis dinámico. Algunos comandos interesantes:
help
shell ls
activities
exported_activities
services
receivers
Herramientas HTTP
Cuando se captura tráfico http, puedes ver una vista poco atractiva del tráfico capturado en el botón inferior "HTTP(S) Traffic" o una vista más agradable en el botón verde "Start HTTPTools". Desde la segunda opción, puedes enviar las solicitudes capturadas a proxies como Burp o Owasp ZAP.
Para hacerlo, enciende Burp --> desactiva Intercept --> en MobSB HTTPTools selecciona la solicitud --> presiona "Send to Fuzzer" --> selecciona la dirección del proxy (http://127.0.0.1:8080\).
Una vez que termines el análisis dinámico con MobSF, puedes presionar en "Start Web API Fuzzer" para fuzzear solicitudes http y buscar vulnerabilidades.
{% hint style="info" %} Después de realizar un análisis dinámico con MobSF, la configuración del proxy puede estar mal configurada y no podrás arreglarla desde la GUI. Puedes arreglar la configuración del proxy haciendo:
adb shell settings put global http_proxy :0
{% endhint %}
Análisis Dinámico Asistido con Inspeckage
Puedes obtener la herramienta desde Inspeckage.
Esta herramienta utiliza algunos Hooks para informarte qué está sucediendo en la aplicación mientras realizas un análisis dinámico.
{% content-ref url="inspeckage-tutorial.md" %} inspeckage-tutorial.md {% endcontent-ref %}
Yaazhini
Esta es una excelente herramienta para realizar análisis estático con una GUI
Qark
Esta herramienta está diseñada para buscar varias vulnerabilidades relacionadas con la seguridad en aplicaciones Android, ya sea en código fuente o APKs empaquetados. La herramienta también es capaz de crear un APK "Prueba-de-Concepto" desplegable y comandos ADB, para explotar algunas de las vulnerabilidades encontradas (Actividades expuestas, intents, tapjacking...). Al igual que con Drozer, no es necesario rootear el dispositivo de prueba.
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
qark --java path/to/parent/java/folder
qark --java path/to/specific/java/file.java
ReverseAPK
- Muestra todos los archivos extraídos para fácil referencia
- Descompila automáticamente archivos APK a formato Java y Smali
- Analiza AndroidManifest.xml para vulnerabilidades comunes y comportamiento
- Análisis estático del código fuente para vulnerabilidades comunes y comportamiento
- Información del dispositivo
- Intents
- Ejecución de comandos
- Referencias SQLite
- Referencias de registro
- Proveedores de contenido
- Receptores de difusión
- Referencias de servicios
- Referencias de archivos
- Referencias criptográficas
- Secretos codificados
- URL's
- Conexiones de red
- Referencias SSL
- Referencias WebView
reverse-apk relative/path/to/APP.apk
SUPER Android Analyzer
SUPER es una aplicación de línea de comandos que se puede usar en Windows, MacOS X y Linux, que analiza archivos .apk en busca de vulnerabilidades. Lo hace descomprimiendo los APKs y aplicando una serie de reglas para detectar dichas vulnerabilidades.
Todas las reglas están centradas en un archivo rules.json
, y cada empresa o probador podría crear sus propias reglas para analizar lo que necesiten.
Descarga los últimos binarios desde la página de descarga
super-analyzer {apk_file}
StaCoAn
StaCoAn es una herramienta crossplatform que ayuda a desarrolladores, cazadores de recompensas por errores y hackers éticos a realizar análisis de código estático en aplicaciones móviles*.
El concepto es que arrastres y sueltes tu archivo de aplicación móvil (un archivo .apk o .ipa) en la aplicación StaCoAn y esta generará un informe visual y portátil para ti. Puedes ajustar la configuración y las listas de palabras para obtener una experiencia personalizada.
Descargar última versión:
./stacoan
AndroBugs
AndroBugs Framework es un sistema de análisis de vulnerabilidades de Android que ayuda a desarrolladores o hackers a encontrar posibles vulnerabilidades de seguridad en aplicaciones Android.
Lanzamientos para Windows
python androbugs.py -f [APK file]
androbugs.exe -f [APK file]
Androwarn
Androwarn es una herramienta cuyo objetivo principal es detectar y advertir al usuario sobre posibles comportamientos maliciosos desarrollados por una aplicación Android.
La detección se realiza mediante el análisis estático del bytecode Dalvik de la aplicación, representado como Smali, con la biblioteca androguard
.
Esta herramienta busca comportamientos comunes de aplicaciones "malas" como: Exfiltración de identificadores de telefonía, Intercepción de flujos de audio/video, Modificación de datos PIM, Ejecución de código arbitrario...
python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
Marco de MARA
MARA es un Marco de Ingeniería Inversa y Análisis de Aplicaciones Móviles. Es una herramienta que reúne herramientas comúnmente utilizadas para la ingeniería inversa y análisis de aplicaciones móviles, para asistir en el pentesting de aplicaciones móviles contra las amenazas de seguridad móvil de OWASP. Su objetivo es facilitar y hacer más amigable esta tarea para desarrolladores de aplicaciones móviles y profesionales de la seguridad.
Es capaz de:
- Extraer código Java y Smali utilizando diferentes herramientas
- Analizar APKs usando: smalisca, ClassyShark, androbugs, androwarn, APKiD
- Extraer información privada del APK utilizando regexps.
- Analizar el Manifiesto.
- Analizar dominios encontrados utilizando: pyssltest, testssl y whatweb
- Desofuscar APK vía apk-deguard.com
Koodous
Útil para detectar malware: https://koodous.com/
Ofuscación/Desofuscación de código
Nota que dependiendo del servicio y configuración que uses para ofuscar el código, los secretos pueden o no quedar ofuscados.
ProGuard
ProGuard es una herramienta de línea de comandos de código abierto que reduce, optimiza y ofusca código Java. Es capaz de optimizar bytecode así como detectar y eliminar instrucciones no utilizadas. ProGuard es software libre y se distribuye bajo la Licencia Pública General de GNU, versión 2.
ProGuard se distribuye como parte del Android SDK y se ejecuta al construir la aplicación en modo de lanzamiento.
De: https://en.wikipedia.org/wiki/ProGuard_(software)
DexGuard
Encuentra una guía paso a paso para desofuscar el apk en https://blog.lexfo.fr/dexguard.html
(De esa guía) La última vez que verificamos, el modo de operación de Dexguard era:
- cargar un recurso como un InputStream;
- alimentar el resultado a una clase que hereda de FilterInputStream para desencriptarlo;
- realizar alguna ofuscación inútil para perder unos minutos de tiempo de un reversor;
- alimentar el resultado desencriptado a un ZipInputStream para obtener un archivo DEX;
- finalmente cargar el DEX resultante como un Recurso utilizando el método
loadDex
.
DeGuard
DeGuard revierte el proceso de ofuscación realizado por herramientas de ofuscación de Android. Esto permite numerosos análisis de seguridad, incluyendo inspección de código y predicción de bibliotecas.
Puedes subir un APK ofuscado a su plataforma.
Simplify
Es un desofuscador genérico de android. Simplify ejecuta virtualmente una app para entender su comportamiento y luego intenta optimizar el código para que se comporte de manera idéntica pero sea más fácil de entender para un humano. Cada tipo de optimización es simple y genérico, por lo que no importa el tipo específico de ofuscación utilizado.
APKiD
APKiD te da información sobre cómo se hizo un APK. Identifica muchos compiladores, empaquetadores, ofuscadores, y otras cosas extrañas. Es PEiD para Android.
Manual
Lea este tutorial para aprender algunos trucos sobre cómo revertir ofuscación personalizada
Laboratorios
Androl4b
AndroL4b es una máquina virtual de seguridad de Android basada en ubuntu-mate que incluye la colección de los últimos marcos, tutoriales y laboratorios de diferentes geeks de seguridad e investigadores para ingeniería inversa y análisis de malware.
OWASP
{% embed url="https://github.com/OWASP/owasp-mstg%0Ahttps://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06g-testing-network-communication" %}
Repositorios Git
https://github.com/riddhi-shree/nullCommunity/tree/master/Android
https://www.youtube.com/watch?v=PMKnPaGWxtg&feature=youtu.be&ab_channel=B3nacSec
Referencias
Para más información visite:
- https://appsecwiki.com/#/ Es una gran lista de recursos
- https://maddiestone.github.io/AndroidAppRE/ Curso rápido de Android
- https://manifestsecurity.com/android-application-security/
- https://github.com/Ralireza/Android-Security-Teryaagh
Para Probar
Únase al servidor de HackenProof Discord para comunicarse con hackers experimentados y cazadores de recompensas por errores.
Perspectivas de Hacking
Interactúe con contenido que profundiza en la emoción y los desafíos del hacking.
Noticias de Hacking en Tiempo Real
Manténgase al día con el mundo del hacking a través de noticias e información en tiempo real.
Últimos Anuncios
Manténgase informado con los lanzamientos de nuevas recompensas por errores y actualizaciones cruciales de la plataforma.
Únase a nosotros en Discord y comience a colaborar con los mejores hackers hoy mismo.
Aprenda hacking de AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!
Otras formas de apoyar a HackTricks:
- Si desea ver su empresa anunciada en HackTricks o descargar HackTricks en PDF Consulte los PLANES DE SUSCRIPCIÓN!
- Obtenga el merchandising oficial de PEASS & HackTricks
- Descubra La Familia PEASS, nuestra colección de NFTs exclusivos
- Únase al 💬 grupo de Discord o al grupo de telegram o sígame en Twitter 🐦 @carlospolopm.
- Comparta sus trucos de hacking enviando PRs a los repositorios de github de HackTricks y HackTricks Cloud.