Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
kavanoz — Desempaquetando estáticamente malware bancario común de Android. | Kitploit
Herramientas/GitHubGitHub/eybisi/kavanoz
Seguridad AndroidAnálisis EstáticoHerramientas de Cifrado/DescifradoIngeniería InversaAnálisis de MalwareSeguridad MóvilArchived
GitHubeybisi/kavanoz

kavanoz

Desempaquetando estáticamente malware bancario común de Android.

Ver Repositorio
159207hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

🫙 kavanoz 🫙

Kavanoz (frasco en turco) es una herramienta para desempaquetar estáticamente malware bancario común de Android. ¿Alguna vez quisiste obtener el payload de un malware empaquetado sin ejecutar un emulador de Android? Yo tampoco :) Pero aquí tienes una herramienta de todos modos.

👀 Instalación

root@kitploit:~
pip install kavanoz

Para instalar desde el código fuente, clona el repositorio y haz una instalación editable con -e. Esto significa que si editas o añades nuevos plugins al proyecto, se usarán sin necesidad de reinstalar.

root@kitploit:~
git clone https://github.com/eybisi/kavanoz.git
cd kavanoz
pip install -e .

⚡ Uso

desde la línea de comandos

root@kitploit:~
kavanoz /tmp/filepath

Puedes usar el parámetro -vvv para imprimir registros detallados (verbose). (útil para depurar plugins)

como biblioteca de Python

root@kitploit:~
from kavanoz.core import Kavanoz
from kavanoz import utils

utils.set_log("DEBUG")
k = Kavanoz(apk_path="tests/test_apk/coper.apk")
for plugin_result in k.get_plugin_results():
    if plugin_result["status"] == "success":
        print("Unpacked")
        print(plugin_result)
        break

🐍 Scripts:

  • rc4.py Archivo de asset cifrado genérico con rc4. El script cubre múltiples versiones.
  • old_rc4.py Otro archivo de asset cifrado genérico con rc4.
  • subapp.py Descifrado de archivo con clave derivada de la variable ProtectKey del archivo Manifest
  • multidex.py Cargador tipo multidex con archivo empaquetado inflado. (compresión zlib)
  • coper.py Extrae la clave rc4 de la librería nativa con emulación (AndroidNativeEmu)
  • moqhao.py Emulación para el desempaquetado de moqhau.
  • sesdex.py
  • simple_aes.py
  • simple_xor.py
  • simple_xor2.py
  • simple_xor_zlib.py
  • subapp.py Descifra el asset con el nombre del paquete

⚙️ Desarrollo

Asegúrate de instalar kavanoz como editable (con -e). Para añadir nuevos plugins, crea un nuevo archivo en la carpeta loader. Extiende la clase Unpacker del archivo unpack_plugin.py. Define la función start_decrypt con tu implementación.

root@kitploit:~
def start_decrypt(self, apk_object: APK, dexes: "list[DEX]"):

Añade la siguiente función para hacer una salida temprana del plugin.

root@kitploit:~
def lazy_check(self,apk_object:APK, dexes: "list[DEX]"):

Si la extracción es exitosa, asigna self.decrypted_payload_path con la ruta del archivo extraído. Puedes usar las funciones auxiliares de la clase unpacker:

  • get_array_data
  • get_smali
  • find_method(class_name,method_name,descriptor="")
  • check_and_write_file(file_data) : comprueba si el archivo tiene cabeceras dex, zip y zlib y escribe el dex desempaquetado con el nombre : "external-{m[:8]}.dex"

Asegúrate de ejecutar python -m unittest antes de abrir un PR. Para obtener los archivos APK de prueba, usa el comando git lfs pull.

📖 Consejos

  • self.dexes contiene objetos dex. Puedes obtener la clase con dex.get_class(smali_annotation_of_class).
  • Puedes usar la función get_smali y pasar el objeto del método objetivo para obtener la representación smali del método objetivo. Luego aplica algo de regex para obtener datos del smali. Hay muchas regex definidas en el archivo smali_regexes.py para consultar.
  • La mayoría de las veces los packers usan archivos de la carpeta de assets. Puedes obtener los archivos con self.apk_object.get_files()
  • La mayoría de las veces los packers usan la clase Application para iniciar la secuencia de desempaquetado. Usa application = self.apk_object.get_attribute_value("application", "name") para obtener la clase de aplicación definida en el archivo manifest.

Gracias:

apkdetect.com por las muestras únicas con las que trabajar.

Descargar herramienta