Droidwatch dentro de tu asistente de IA

Analiza un APK sin salir del chat en el que ya estás. Pregunta «¿esta app es maliciosa?», suelta el fichero, y recibes un veredicto, el C2 del atacante si lo hay, y los hallazgos que importan.

Qué es

Un solo fichero de Python, sin dependencias. Sube la muestra, espera a que termine y te trae el resultado. Todo el análisis ocurre en nuestros servidores.

Es una decisión, no una limitación. Un agente que corra jadx y semgrep en tu portátil sólo ve lo que esas herramientas ven. «He visto diez mil muestras» no se improvisa: la inteligencia de amenazas, un modelo entrenado sobre un corpus y el histórico con el que se correlacionan campañas o viven en el servidor, o no existen.

Instalar

curl -fsSLO https://droidwatch.app/ci/claude-skill/droidwatch-skill.zip
unzip droidwatch-skill.zip -d ~/.claude/skills/
export DROIDWATCH_API_KEY=dw_...     # opcional

El zip trae una carpeta droidwatch/: las instrucciones de la skill (SKILL.md) y el cliente (scripts/droidwatch.py). Descomprímelo donde tu asistente busque sus skills; en Claude Code es ~/.claude/skills/. No hace falta nada más que Python 3.

Funciona sin clave, en modo anónimo y con límites. Es la forma de probarla antes de decidir nada.

La skill no está restringida por plan. Cualquiera puede usarla. Una clave no te da acceso: te sube los límites de la tabla de abajo.

Si quieres una, se crea en droidwatch.app → Mi perfil → Claves de API, con ámbito read + analyze. Con read only el servidor responde 403.

Límites

Cómo la uses Análisis/día Tamaño máx.
Sin clave (anónimo) 3 150 MB
Cuenta gratuita 5 200 MB
Pro (con clave dw_) 100 500 MB
Team 500 750 MB
Enterprise sin tope 1 GB

Usar

Tu asistente los ejecuta por ti. Para probarlos a mano, desde la carpeta droidwatch/:

python3 scripts/droidwatch.py analyze sospechoso.apk
python3 scripts/droidwatch.py summary <run_id>
python3 scripts/droidwatch.py lookup evil-c2.example.com

Un análisis tarda entre 1 y 10 minutos, según el tamaño del fichero.

Qué devuelve

JSON compacto: unos 8 KB, frente a los hasta 740 KB del informe completo. Así cabe en el contexto de un modelo y le sobra sitio para razonar.

Campo Qué es
veredicto Benign · Low Risk · Suspicious · High Risk · Malicious, con puntuación
hallazgos.graves Lo crítico y lo alto, ya ordenado por gravedad
iocs.c2 La infraestructura del atacante, descifrada de la muestra
attack Técnicas MITRE ATT&CK Mobile
masvs Nota de postura de seguridad, por categoría MASVS
defensas_runtime Si la muestra se defiende del análisis
sin_analizar Etapas que no llegaron a completarse
bloqueado_por_plan Secciones que el análisis sí produjo y que tu plan no incluye

Lo que no hace

Responde a «¿esto es malicioso y quién está detrás?», no a «¿tiene mi app alguna vulnerabilidad?». Para auditar tu propio código, ésta no es la herramienta.

Y no analizará algo que no tengas derecho a analizar.

Por qué importan los tres últimos campos

sin_analizar y las marcas de truncado existen para que un asistente no pueda darte una falsa tranquilidad. «No se encontró» y «no se pudo buscar» son dos frases distintas, y un resumen que esconde la diferencia es peor que no tener resumen. Las instrucciones de la skill obligan al modelo a decir de cuál de las dos se trata.

Lo mismo con defensas_runtime: si la muestra se cierra al detectar que la están instrumentando, un informe dinámico vacío no es prueba de inocencia; y el asistente te lo dirá.

Y lo mismo con bloqueado_por_plan. Autenticidad de app —typosquatting, comparación del icono con la ficha de Google Play, señales de reempaquetado— es una sección de pago, así que en un plan gratuito no se envía. Lo que el resumen no hace es fingir que no encontró nada: esos hallazgos siguen contando en hallazgos.total, y el campo dice cuántos son. Un candado que se ve es honesto; uno silencioso deja un informe que se lee como completo sin estarlo.