Volver a actualizaciones
Nuevo releaseAug 8, 2026

malwoverview v8.1.0

Malwoverview es una herramienta de primera respuesta para la caza de amenazas en VirusTotal, Hybrid Analysis, URLHaus, Polyswarm, Malshare, Alien Vault, Malpedia, Malware Bazaar, ThreatFox, Triage, IPInfo, Shodan, AbuseIPDB, GreyNoise, URLScan.io, Whois/RDAP, NIST y VulnCheck. Compatible con enriquecimiento mediante LLM, extracción de IOC, análisis con YARA y análisis de Android.

Compartir

Malwoverview

GitHub release (latest by date) GitHub last commit GitHub Release Date GitHub GitHub stars Twitter Follow Downloads Downloads/Total CodeQL

Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text

  Copyright (C)  2018-2026 Alexandre Borges (https://exploitreversing.com) 

  Este programa es software libre: puedes redistribuirlo y/o modificarlo
  bajo los términos de la Licencia Pública General de GNU publicada por
  la Free Software Foundation, ya sea la versión 3 de la Licencia, o
  (a tu elección) cualquier versión posterior.

  Este programa se distribuye con la esperanza de que sea útil,
  pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
  COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
  Licencia Pública General de GNU para más detalles.

  Vea la Licencia Pública General de GNU en <http://www.gnu.org/licenses/>.

Versión actual: 8.1.0 (Nombre en clave: Revolutions)

 Nota importante:  Malwoverview NO envía muestras a ningún endpoint de forma predeterminada,
 por lo que respeta posibles Acuerdos de No Divulgación (NDA). Existen opciones específicas
 que envían muestras explícitamente, pero estas opciones están explicadas en la ayuda.

ACERCA DE

Malwoverview.py es una herramienta de primera respuesta para threat hunting (caza de amenazas), que realiza un triaje inicial y rápido de muestras de malware, URLs, direcciones IP, dominios, familias de malware, IOCs y hashes. Además, Malwoverview es capaz de obtener informes de comportamiento dinámico y estático, enviar y descargar muestras desde varios endpoints. En pocas palabras, funciona como un cliente para las principales sandboxes existentes.

Esta herramienta tiene como objetivo:

  1. Determinar muestras de malware ejecutables similares (PE/PE+) según la tabla de importaciones (imphash) y agruparlas por diferentes colores (presta atención a la segunda columna de la salida). ¡Así que los colores importan!
  2. Mostrar información de hashes en los motores Virus Total, Hybrid Analysis, Malshare, Polyswarm, URLhaus, Alien Vault, Malpedia y ThreatCrowd.
  3. Determinar si las muestras de malware contienen overlay y, si lo deseas, extraerlo.
  4. Verificar archivos sospechosos en Virus Total, Hybrid Analysis y Polyswarm.
  5. Verificar URLs en los motores Virus Total, Malshare, Polyswarm, URLhaus y Alien Vault.
  6. Descargar muestras de malware desde los motores Hybrid Analysis, Malshare, URLHaus, Polyswarm y Malpedia.
  7. Enviar muestras de malware a VirusTotal, Hybrid Analysis y Polyswarm.
  8. Listar las últimas URLs sospechosas de URLHaus.
  9. Listar los últimos payloads de URLHaus.
  10. Buscar payloads específicos en Malshare.
  11. Buscar payloads similares (PE32/PE32+) en el motor Polyswarm.
  12. Clasificar todos los archivos de un directorio buscando información en Virus Total y Hybrid Analysis.
  13. Elaborar informes sobre un dominio sospechoso utilizando diferentes motores como VirusTotal, Malpedia y ThreatCrowd.
  14. Verificar paquetes APK directamente desde dispositivos Android contra Hybrid Analysis y Virus Total.
  15. Enviar paquetes APK directamente desde dispositivos Android a Hybrid Analysis y Virus Total.
  16. Mostrar URLs relacionadas con una etiqueta proporcionada por el usuario desde URLHaus.
  17. Mostrar payloads relacionados con una etiqueta (firma) desde URLHaus.
  18. Mostrar información sobre una dirección IP desde Virus Total, Alien Vault, Malpedia y ThreatCrowd.
  19. Mostrar información de direcciones IP, dominios y URLs desde Polyswarm.
  20. Realizar meta-búsquedas en la Red Polyswarm utilizando varios criterios: imphash, IPv4, dominio, URL y familia de malware.
  21. Obtener información de threat hunting desde AlienVault utilizando diferentes criterios.
  22. Obtener información de threat hunting desde Malpedia utilizando diferentes criterios.
  23. Obtener información de threat hunting desde Malware Bazaar utilizando diferentes criterios.
  24. Obtener información de IOC desde ThreatFox utilizando diferentes criterios.
  25. Obtener información de threat hunting desde Triage utilizando diferentes criterios.
  26. Obtener la evaluación de hashes de un archivo dado contra Virus Total.
  27. Enviar archivos grandes (>= 32 MB) a Virus Total.
  28. Malwoverview utiliza la API v.3 de Virus Total, por lo que ya no existe ninguna opción que use la v.2.
  29. Recuperar información sobre una dirección IP dada desde el servicio IPInfo.
  30. Recuperar información combinada sobre una dirección IP dada desde múltiples servicios.
  31. Ofrecer una opción extra para guardar cualquier archivo descargado en una ubicación central.
  32. Listar y buscar vulnerabilidades desde NIST mediante diferentes criterios.
  33. Consultar la base de datos de VulnCheck - nivel Community/Free.
  34. Obtener información de threat hunting desde Shodan utilizando diferentes criterios.
  35. Verificar la reputación de IP desde AbuseIPDB.
  36. Verificar la clasificación de IP desde GreyNoise (API comunitaria).
  37. Realizar consultas Whois/RDAP de dominios e IPs.
  38. Correlación de hashes entre servicios: VirusTotal, Hybrid Analysis, Triage y AlienVault.
  39. Verificación de hashes por lotes contra Malware Bazaar desde un archivo que contiene hashes.
  40. Verificación de hashes por lotes contra Hybrid Analysis desde un archivo que contiene hashes.
  41. Verificación de hashes por lotes contra Triage desde un archivo que contiene hashes.
  42. Escaneo de directorios contra Malware Bazaar, Hybrid Analysis y Triage.
  43. Extraer IOCs (hashes, IPs, URLs, dominios, CVEs) de archivos de texto.
  44. Escanear archivos o directorios con reglas YARA.
  45. Modo REPL interactivo para sesiones continuas de threat hunting.
  46. Formatos de salida estructurados JSON y CSV.
  47. Caché de resultados con TTL configurable (basado en SQLite).
  48. Soporte de proxies HTTP/HTTPS/SOCKS5 para todas las solicitudes de API.
  49. Mapeo de técnicas MITRE ATT&CK para informes de comportamiento.
  50. Modo panel TUI (interfaz de usuario de texto) con navegación basada en paneles.
  51. Obtener información de threat hunting desde URLScan.io: enviar URLs, recuperar resultados de escaneo y buscar escaneos.
  52. Enriquecimiento de amenazas impulsado por LLM: evaluación de riesgos generada por IA, mapeo MITRE ATT&CK y recomendaciones de analista añadidas a cualquier resultado de consulta. Soporta Claude, Gemini, OpenAI y Ollama (local).
  53. Verificación de IPs por lotes contra VirusTotal desde un archivo que contiene direcciones IP, mostrando una tabla resumen (Dirección IP, País, Propietario AS, Detección).
  54. Cazar en VirusTotal con reglas YARA: enviar y seguir trabajos Retrohunt, listar los archivos coincidentes, y crear y listar rulesets y notificaciones de Livehunt.
  55. Escanear con un directorio completo de reglas YARA, cada archivo compilado en su propio namespace.
  56. Buscar muestras de Malware Bazaar por nombre de regla YARA, y descargar y extraer el conjunto de reglas YARAify de abuse.ch.
  57. Descargar el conjunto completo de reglas YARA de Malpedia para un nivel TLP dado.
  58. Listar los tipos de archivo de MalShare vistos en las últimas 24 horas, y listar los hashes de cualquiera de esos tipos.
  59. Verificación de hashes por lotes contra URLHaus desde un archivo que contiene hashes.
  60. Pivotes de Transparencia de Certificados a través de crt.sh, sin clave API: enumerar los subdominios vistos en los certificados emitidos y listar los propios certificados.
  61. Inspeccionar, depurar y vaciar la caché local de resultados.
  62. El modo interactivo y la TUI alcanzan todos los servicios que alcanza la línea de comandos, y la TUI exporta sus resultados a json y csv.
  63. Triaje PE local de un archivo o directorio sin clave API, listando tipo de archivo, tamaño, overlay, tamaño del overlay y entropía, y resaltando los archivos por encima de un umbral de entropía.
  64. Los escaneos de Android calculan el hash de cada APK de un paquete, incluidos los APK divididos (split APKs), en lugar de solo el APK base.
  65. Verificación de firmas Authenticode sin clave API, informando si un binario está firmado y si la firma sigue siendo válida, y nombrando al firmante de un archivo manipulado.
  66. Cada firma incrustada de un binario con múltiples firmas se informa, cada una con su propio algoritmo de digest, certificado, huella digital y número de serie, de modo que un segundo firmante nunca queda oculto detrás del primero.
  67. La verificación de archivos de VirusTotal (-v 1) y el informe de hashes (-v 8) muestran el bloque de firma: si el certificado se verificó, las cadenas del firmante y del contrafirmante, la fecha de firma y cada certificado con su estado, algoritmo, fechas de validez, número de serie y huella digital.

COLABORADORES

  Alexandre Borges (https://github.com/alexandreborges) | propietario del proyecto y desarrollador principal
  Artur Marzano (https://github.com/Macmod) | co-desarrollador principal
  Corey Forman (https://github.com/digitalsleuth) | responsable de la integración con REMnux
  Christian Clauss (https://github.com/cclauss)

CÓMO CONTRIBUIR A ESTE PROYECTO

Desde la versión 6.0.0, existe una nueva rama llamada "dev". Todas las contribuciones y propuestas deben realizarse en esta rama "dev".

Los profesionales que quieran contribuir deben abrir un issue explicando su mejora propuesta y cómo haría mejor el proyecto. Una vez aceptada, estará autorizado(a) para enviar el PR, que será probado.

Una vez que todos los cambios se prueban, esta nueva versión de Malwoverview se replica a la rama master y se genera un nuevo paquete de Python.

INSTALACIÓN

Esta herramienta ha sido probada en REMnux, Ubuntu, Kali Linux, macOS y Windows. Malwoverview se puede instalar ejecutando el siguiente comando:

  * pip3.11 install git+https://github.com/alexandreborges/malwoverview
  
  o...
  
  * python -m pip install -U malwoverview
  

Si quieres instalar Malwoverview en macOS, tienes que ejecutar los siguientes comandos:

  * /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  * brew install libmagic
  * pip3 install urllib3==1.26.6
  * pip3 install -U malwoverview
  * Añade el directorio de binarios de Python a la variable PATH editando el archivo .bash_profile en tu directorio 
    de inicio. Ejemplo:

      export PATH=$PATH:/Users/alexandreborges/Library/Python/3.9/bin

  * Ejecuta: . ./.bash_profile

Si estás instalando Malwoverview en Windows, asegúrate de que las siguientes condiciones se cumplan
DESPUÉS de haber instalado Malwoverview:

  * python-magic NO está instalado. (pip show python-magic)
  * python-magic-bin SÍ está instalado. (pip show python-magic-bin)

Nota: ¡Se recomienda guardar el .malwapi.conf antes de cualquier actualización!

Características opcionales

Algunas características requieren dependencias opcionales. Instálalas según sea necesario:

  * Escaneo YARA:            pip install malwoverview[yara]
  * Verificación de firmas:  pip install malwoverview[signature]
  * Exportación de informes PDF: pip install malwoverview[pdf]
  * Panel TUI:               pip install malwoverview[tui]
  * Todas las opcionales:    pip install malwoverview[all]

APIs REQUERIDAS

Es posible empezar a usar Malwoverview sin insertar todas las APIs. Sin embargo, para usar todas las opciones de Malwoverview, debes insertar la API respectiva de los siguientes servicios: VirusTotal, Hybrid Analysis, URLHaus, Malshare, Polyswarm, Alien Vault, Malpedia, Triage, IPInfo, Malware Bazaar, ThreatFox, VulnCheck, Shodan, AbuseIPDB, GreyNoise y URLScan.io en el archivo de configuración .malwapi.conf, que debe estar presente (o crearse) en el directorio de inicio (/home/[usuario] o /root en Linux, y C:\Users[usuario] en Windows. Alternativamente, los usuarios pueden crear un archivo de configuración personalizado e indicarlo usando la opción -c.

Para destacar: si el archivo .malwapi.conf no existe en tu directorio de inicio, ¡debes crearlo!

  • Una nota especial sobre Alien Vault: es necesario suscribirse a los pulses en el sitio web de Alien Vault antes de usar la opción -n 1.

  • Una nota especial sobre Malshare y Shodan: ambos servicios requieren que su clave API se envíe en la propia URL, y ninguno documenta una alternativa de cabecera o de cuerpo de solicitud (el endpoint hashlookup de Malshare es un POST, pero la clave sigue viajando en la cadena de consulta). Malwoverview reemplaza estas dos claves con [REDACTED] en cada mensaje de error que imprime, para que no terminen en la salida que pegues en un informe de error, pero la clave sigue quedando registrada en los registros de acceso de esos servicios y en cualquier proxy que termine TLS entre tú y ellos. Trata ambas claves como expuestas al operador del servicio y rótalas como harías con cualquier otra credencial.

El archivo de configuración .malwapi.conf tiene el siguiente formato:

  [VIRUSTOTAL]
  VTAPI = 

  [HYBRID-ANALYSIS]
  HAAPI = 

  [MALSHARE]
  MALSHAREAPI = 

  [HAUSSUBMIT]
  HAUSSUBMITAPI =

  [POLYSWARM]
  POLYAPI = 

  [ALIENVAULT]
  ALIENAPI = 

  [MALPEDIA]
  MALPEDIAAPI =

  [TRIAGE]
  TRIAGEAPI =

  [IPINFO]
  IPINFOAPI =  
  
  [BAZAAR]
  BAZAARAPI = 

  [THREATFOX]
  THREATFOXAPI = 

  [VULNCHECK]
  VULNCHECKAPI =

  [URLHAUS]
  URLHAUSAPI =

  [SHODAN]
  SHODANAPI =

  [ABUSEIPDB]
  ABUSEIPDBAPI =

  [GREYNOISE]
  GREYNOISEAPI =

  [URLSCANIO]
  URLSCANIOAPI =

  [LLM]
  PROVIDER = claude
  CLAUDE_API_KEY =
  CLAUDE_MODEL = claude-opus-4-8
  GEMINI_API_KEY =
  OPENAI_API_KEY =
  OPENAI_MODEL = gpt-4o-mini
  OLLAMA_URL = http://localhost:11434
  OLLAMA_MODEL = llama3.1

Las APIs se pueden solicitar en los sitios web de los respectivos servicios:

  1. Virus Total (API comunitaria y de pago): https://www.virustotal.com/gui/join-us
  2. Hybrid Analysis: https://www.hybrid-analysis.com/signup
  3. Malshare: https://malshare.com/doc.php
  4. URLHaus: https://urlhaus.abuse.ch/api/#account
  5. Polyswarm: https://docs.polyswarm.io/consumers
  6. Alien Vault: https://otx.alienvault.com/api
  7. Malpedia: No ofrece registro abierto, pero puedes solicitar una cuenta de usuario directamente a través de Twitter (MD) o por correo electrónico de feedback. El usuario de Twitter de Malpedia es @malpedia.
  8. Malware Bazaar: https://bazaar.abuse.ch/api/#auth\_key
  9. ThreatFox: https://threatfox.abuse.ch/api/#auth\_key
  10. Triage: https://tria.ge/signup.
  11. IPInfo: https://ipinfo.io/
  12. VulnCheck: https://vulncheck.com/signin (Nivel Community/Free disponible)
  13. Shodan: https://account.shodan.io/register
  14. AbuseIPDB: https://www.abuseipdb.com/register
  15. GreyNoise: https://viz.greynoise.io/signup
  16. URLScan.io: https://urlscan.io/user/signup

Proveedores de enriquecimiento LLM (opcionales)

Malwoverview admite el enriquecimiento de amenazas impulsado por LLM mediante la bandera --enrich. Después de cualquier consulta, se añade una evaluación de amenazas generada por IA con nivel de riesgo, identificación de la familia de malware, mapeo MITRE ATT&CK y recomendaciones de analista.

Se admiten tres proveedores. Configura uno en la sección [LLM] de .malwapi.conf:

18. Anthropic Claude (de pago, mejor calidad)

  Mejores resultados para el análisis de inteligencia de amenazas. Identifica con precisión las familias
  de malware, mapea técnicas precisas de MITRE ATT&CK y proporciona recomendaciones
  accionables basadas en conocimiento real de amenazas.

  Configuración:
  a) Crea una cuenta de API en https://console.anthropic.com/ (separada de la
     suscripción de claude.ai)
  b) Ve a Settings → Billing → Add credit (mínimo $5, pago por uso)
  c) Ve a Settings → API Keys → Create Key
  d) Copia la clave (empieza con sk-ant-api03-...)
  e) Configura .malwapi.conf:

        [LLM]
        PROVIDER = claude
        CLAUDE_API_KEY = sk-ant-api03-your-key-here
        CLAUDE_MODEL = claude-opus-4-8

  CLAUDE_MODEL es opcional y por defecto usa claude-opus-4-8. Opciones comunes:
  - claude-opus-4-8    — Mejor calidad (predeterminado)
  - claude-sonnet-4-6  — Buen equilibrio entre calidad y coste
  - claude-haiku-4-5   — El más rápido y barato

  Coste: ~$0.02-0.04 por llamada de enriquecimiento usando el modelo Opus predeterminado (menos con
  Sonnet o Haiku). Con un crédito de $5 se obtienen aproximadamente 125-250 llamadas de enriquecimiento Opus.

19. Google Gemini (requiere facturación)

  Resultados de buena calidad. Requiere una cuenta de facturación de Google Cloud.

  Configuración:
  a) Ve a https://aistudio.google.com/apikeys
  b) Inicia sesión con tu cuenta de Google
  c) Haz clic en Create API Key → copia la clave
  d) Habilita la facturación: haz clic en el enlace del proyecto junto a tu clave → Google Cloud
     Console → Billing → Link a billing account
  e) Configura .malwapi.conf:

        [LLM]
        PROVIDER = gemini
        GEMINI_API_KEY = your-gemini-key-here
        GEMINI_MODEL = gemini-2.0-flash

  Nota: El nivel gratuito tiene un límite de frecuencia bajo (2-5 solicitudes por minuto). Para
  límites más altos, habilita la facturación de pago por uso.

20. OpenAI (de pago)

  Resultados de buena calidad usando modelos GPT. Requiere una cuenta de OpenAI con
  créditos de API.

  Configuración:
  a) Crea una cuenta en https://platform.openai.com/signup
  b) Ve a https://platform.openai.com/api-keys → Create new secret key
  c) Añade facturación en https://platform.openai.com/settings/organization/billing
  d) Configura .malwapi.conf:

        [LLM]
        PROVIDER = openai
        OPENAI_API_KEY = sk-your-key-here
        OPENAI_MODEL = gpt-4o-mini

  Modelos disponibles:
  - gpt-4o-mini  — El más barato (~$0.002 por enriquecimiento), buena calidad (predeterminado)
  - gpt-4o       — Mejor calidad (~$0.01 por enriquecimiento)

21. Ollama (gratuito, local, privado)

  Se ejecuta completamente en tu máquina. No necesita clave API y ningún dato sale de tu
  sistema. Adecuado para entornos donde no está permitido enviar datos de amenazas a APIs
  en la nube. La calidad depende del modelo elegido.

  Configuración:
  a) Descarga e instala Ollama desde https://ollama.com/download
     (disponible para Windows, Linux y macOS)
  b) Abre una terminal y descarga un modelo:

        ollama pull qwen2.5:14bModelos recomendados:
     - qwen2.5:14b  — Mejor calidad con un tamaño razonable (9 GB, necesita 16 GB de RAM)
     - llama3.1:8b  — Buena calidad, más pequeño (5 GB, necesita 8 GB de RAM)
     - llama3.1:70b — Excelente calidad, grande (40 GB, necesita 48 GB de RAM)

  c) Ollama se inicia automáticamente y sirve en http://localhost:11434
  d) Configura .malwapi.conf:

        [LLM]
        PROVIDER = ollama
        OLLAMA_URL = http://localhost:11434
        OLLAMA_MODEL = qwen2.5:14b

  Rendimiento: una GPU con 12+ GB de VRAM proporciona respuestas rápidas (5-10 s).
  Solo con CPU es más lento (30-60 s) pero funcional. Los modelos más grandes (14b, 70b)
  requieren más VRAM y pueden agotar el tiempo de espera en CPU si no hay suficiente memoria
  disponible. El modelo llama3.1:8b se recomienda para máquinas con
  memoria de GPU limitada (6 GB o menos).

Tiempos de respuesta esperados:

  - API de Claude:  3-8 segundos
  - API de Gemini:  3-8 segundos
  - Ollama (GPU con VRAM suficiente): 5-15 segundos
  - Ollama (solo CPU, modelo 8b): 30-60 segundos
  - Ollama (solo CPU, modelo 14b+): 60-300 segundos

Ejemplos de uso:

  # CLI: añade --enrich a cualquier consulta
  malwoverview -v 8 -V <hash> --enrich
  malwoverview -ip 1 -IP 8.8.8.8 --enrich
  malwoverview --correlate-hash <hash> --enrich

  # REPL interactivo: activa/desactiva el enriquecimiento o cambia de proveedor
  malwoverview --interactive
  malwoverview> set enrich on                    # usa el proveedor de la configuración
  malwoverview> set enrich claude                # cambia a Claude
  malwoverview> set enrich ollama                # cambia a Ollama
  malwoverview> set enrich openai                # cambia a OpenAI
  malwoverview> set enrich off                   # desactiva el enriquecimiento
  malwoverview> vt hash <hash>                   # análisis de malware + enriquecimiento
  malwoverview> nist cve CVE-2024-3400           # consulta de CVE + enriquecimiento
  malwoverview> vulncheck cve CVE-2024-3400      # VulnCheck + enriquecimiento

  # TUI: haz clic en el botón Enrich para alternar entre proveedores
  #   Enrich (OFF) → claude → gemini → openai → ollama → OFF
  #   Botón verde  = proveedor activo y configurado
  #   Botón amarillo = proveedor seleccionado pero falta la clave API
  #   Botón por defecto = enriquecimiento deshabilitado
  malwoverview --tui

Nota sobre las solicitudes de API a MALPEDIA:

El servicio y la aceptación se basan en la revisión de la comunidad. Por lo tanto, se recomienda enviar una solicitud de API desde tu dirección de correo electrónico empresarial y NO desde una pública/gratuita (Gmail, Outlook, etc.). Además, sería ideal que proporcionaras más información sobre ti (cuenta de LinkedIn, X/Twitter, Mastodon, BlueSky, etc.), ya que esto facilitaría la verificación de tu identidad, perfil profesional y legitimidad, acelerando la aprobación de tu solicitud.


Nota sobre Triage:

Cada operación de Triage se basa en el ID de Triage de cada artefacto, por lo que necesitas usar "-x 1 -X <attribute>:<value>" para buscar el ID correcto del artefacto y luego usar esta información de ID con las opciones restantes de Triage (-x [2-7]) para obtener más información de threat hunting del endpoint de Triage.


Nota sobre URLHaus, Malware Bazaar y Threat Fox:

A partir de la segunda mitad de 2025, se requerirá una clave de autenticación (API) para utilizar los servicios de URLHaus, Malware Bazaar y Threat Fox.


Nota sobre el color de fondo del terminal:

Malwoverview fue escrito para producir resultados para un fondo de terminal oscuro. Sin embargo, existe la opción -o 0 que cambia y adapta los colores de salida para un fondo claro.


Para comprobar la instalación, ejecuta:

   malwoverview --help
   

Hay más información disponible en:

   (Repositorio PYPI.org) https://pypi.org/project/malwoverview/
   (Github) https://github.com/alexandreborges/malwoverview

Si quieres realizar la instalación manual (normalmente no es necesaria), se deben ejecutar unos pocos pasos, como se muestra en la siguiente subsección.

INSTALACIÓN MANUAL (REMnux y Ubuntu)

  1. Python versión 3.11 o posterior (¡¡¡Solo Python 3.x !!! NO funciona con Python 2.7)

    $ apt-get install python3.11  (por ejemplo)
    
  2. Python-magic.

    Para instalar el paquete python-magic puedes ejecutar el siguiente comando:

    $ pip3.11 install python-magic
    

    O puedes compilarlo desde el repositorio de github:

    $ git clone https://github.com/ahupp/python-magic
    $ cd python-magic/
    $ python3.11 setup.py build
    $ python3.11 setup.py install
    

    Como hay problemas serios relacionados con las dos versiones existentes del paquete python-magic, se recomienda instalarlo desde Github (segundo procedimiento anterior) y copiar el archivo magic.py al MISMO directorio de la herramienta malwoverview.

  3. Instala todos los paquetes de Python necesarios:

    $ pip3.11 install -r requirements.txt
    
    O
    
    $ pip3.11 install -U pefile
    $ pip3.11 install -U colorama
    $ pip3.11 install -U simplejson
    $ pip3.11 install -U python-magic
    $ pip3.11 install -U requests
    $ pip3.11 install -U validators
    $ pip3.11 install -U geocoder
    $ pip3.11 install -U polyswarm-api
    $ pip3.11 install -U pathlib
    $ pip3.11 install -U configparser
    
  4. Para comprobar un móvil Android necesitas instalar la herramienta "adb":

    $ sudo apt get install adb
    

    PD: antes de probar las opciones de Android, comprueba:

    * Si la herramienta adb está listada en la variable de entorno PATH.
    * Si el sistema tiene acceso autorizado al dispositivo mediante "adb devices -l"
    

AYUDA

usage: python malwoverview.py -c -d -o <0|1> -v <1-20> -V -a <1-13> -A -l <1-8> -L <hash|file type> -j <1-8> -J -p <1-8> -P -y <1-5> -Y -n <1-5> -N -m <1-9> -M -b <1-15> -B -x <1-9> -X -ip <1-8> -IP -O --nist <1-5> --NIST -vc <1-8> -VC -s <1-2> -S -ab <1> -AB -gn <1> -GN -wh <1-2> -WH -ct <1-2> -CT -u <1-5> -U --correlate-hash --extract-iocs <file|url> --yara --yara-target --peinfo <file|directory> --entropy-threshold --sigcheck <file|directory> --no-signature --sig-verify-mode <any|first|all|best> --output-format text|json|csv --proxy --quiet --verbose --no-cache --cache-ttl --cache-stats --prune-cache --clear-cache --no-resolve --defang --no-ioc-filter --report html|pdf --interactive --tui --attack-map

Malwoverview es una herramienta de primera respuesta para threat hunting escrita por Alexandre Borges.

OPCIONES DE MALWARE: Opciones de consulta de análisis e inteligencia de malware

-h, --help

	+ muestra este mensaje de ayuda y sale

-c CONFIG FILE, --config CONFIG FILE

	+ Usa un archivo de configuración personalizado para especificar las API.

-d DIRECTORY, --directory DIRECTORY

	+ Especifica el directorio que contiene las muestras de malware que se comprobarán contra VIRUS TOTAL.
	+ Usa la opción -D para decidir si estás usando una API VT pública o una API VT 
	Premium.

-o BACKGROUND, --background BACKGROUND

	+ Adapta los colores de salida a un terminal con fondo de color claro. 
	+ El valor predeterminado es terminal con fondo de color oscuro.

-v VIRUSTOTAL, --virustotal_option VIRUSTOTAL

	+ -v 1: dado un archivo mediante la opción -V, consulta la base de datos de VIRUS TOTAL (API v.3)
		  para obtener el informe del archivo dado a través de la opción -V.
	+ v 2: muestra un informe antivirus para un archivo dado usando la opción -V (API v.3);
	+ v 3: igual que -v2, pero también se muestran el IAT y el EAT del binario (API v.3); 
	+ v 4: extrae el overlay; 
	+ v 5: envía una URL al escaneo de VT; 
	+ v 6: envía una dirección IP a Virus Total; 
	+ v 7: esta opción obtiene un informe sobre el dominio proporcionado de Virus Total; 
	+ v 8: verifica un hash dado contra Virus Total; 
	+ v 9: envía una muestra a VT (hasta 32 MB). Usa una barra diagonal para especificar el 
		   archivo de destino en sistemas Windows. Requiere pasar el archivo de muestra con la opción -V; 
	+ -v 10: verifica hashes de un archivo proporcionado mediante la opción -V. Esta opción usa 
			la API pública de VT v.3;
	+ -v 11: verifica hashes de un archivo proporcionado mediante la opción -V. Esta opción usa 
			la API Premium v.3; 
	+ -v 12: muestra información de comportamiento de una muestra dado un hash mediante la opción -V. 
			Esta opción usa la API de VT v.3; -v 13: envía archivos GRANDES (más de 32 MB)
			a VT usando la API v.3;
	+ -v 14: envía un trabajo Retrohunt usando el archivo de reglas YARA o el directorio de reglas 
			proporcionado con -V (VT escanea las muestras que recibió durante los últimos meses 
			contra las reglas);
	+ -v 15: lista tus trabajos Retrohunt, opcionalmente filtrados por un estado pasado 
			a través de -V (starting, running, aborting, aborted o finished);
	+ -v 16: muestra el estado y el progreso del trabajo Retrohunt cuyo id se 
			proporciona con -V;
	+ -v 17: lista los archivos que coinciden con el trabajo Retrohunt cuyo id se proporciona con -V;
	+ -v 18: crea un ruleset de Livehunt a partir del archivo de reglas YARA o directorio de reglas 
			proporcionado con -V (VT entonces compara cada nuevo envío contra él);
	+ -v 19: lista tus rulesets de Livehunt;
	+ -v 20: lista tus notificaciones de Livehunt. Las opciones 14 a 20 necesitan una clave de VT con 
			privilegios premium (empresariales);

-V VIRUSTOTAL_ARG, --virustotal_arg VIRUSTOTAL_ARG

	+ Proporciona el argumento para la opción -v. Si "-v 1" a "-v 4" entonces -V debe ser
	una ruta de archivo; Si "-v 5" entonces -V debe ser una URL; Si "-v 6" entonces -V debe
	ser una dirección IP; Si "-v 7" entonces -V debe ser un dominio; Si "-v 8" entonces
	-V debe ser un hash (MD5/SHA1/SHA256); Si "-v 9" o "-v 13" entonces -V debe
	ser una ruta de archivo para enviar; Si "-v 10" o "-v 11" entonces -V debe ser un archivo
	que contenga hashes (uno por línea); Si "-v 12" entonces -V debe ser un hash para
	análisis de comportamiento; Si "-v 14" o "-v 18" entonces -V debe ser un archivo de reglas YARA
	o un directorio de reglas; Si "-v 15" entonces -V puede ser un estado de trabajo;
	Si "-v 16" o "-v 17" entonces -V debe ser un id de trabajo Retrohunt.

-a HYBRID_ANALYSIS, --hybrid_option HYBRID_ANALYSIS

	+ Este parámetro obtiene informes de HYBRID ANALYSIS, descarga muestras y envía
	muestras para ser analizadas. 
	+ Los valores posibles son: 
		+ 1: obtiene un informe para un hash o muestra dado de un entorno Windows 7 de 32 bits; 
		+ 2: obtiene un informe para un hash o muestra dado de un entorno Windows 7 de 32 bits 
		(soporte HWP); 
		+ 3: obtiene un informe para un hash o muestra dado de un entorno Windows de 64 bits; 
		+ 4: obtiene un informe para un hash o muestra dado de un entorno Android; 
		+ 5: obtiene un informe para un hash o muestra dado de un entorno Linux de 64 bits; 
		+ 6: envía una muestra a un entorno Windows 7 de 32 bits; 
		+ 7. envía una muestra a un entorno Windows 7 de 32 bits con soporte HWP; 
		+ 8. envía una muestra a un entorno Windows 7 de 64 bits;
		+ 9. envía una muestra a un entorno Android; 
		+ 10. envía una muestra a un entorno Linux de 64 bits;
		+ 11. descarga la muestra para un hash dado (la muestra almacenada es la misma 
		independientemente del entorno sandbox, por lo que una sola opción 
		reemplaza las antiguas opciones 11 a 15); 
		+ 12. comprobación de hashes por lotes desde un archivo (un hash por línea); 
		+ 13. escaneo de directorio: calcula SHA256 para cada archivo y lo comprueba 
		contra Hybrid Analysis.

-A SUBMIT_HA, --ha_arg SUBMIT_HA

	+ Proporciona el argumento para la opción -a de HYBRID ANALYSIS. Si "-a 1" a
	"-a 5" entonces -A debe ser un hash o una ruta de archivo (detección automática); Si "-a 6"
	a "-a 10" entonces -A debe ser una ruta de archivo para enviar; Si "-a 11" entonces -A
	debe ser un hash para descargar; Si "-a 12" entonces -A debe ser un archivo
	que contenga hashes (uno por línea); Si "-a 13" entonces -A debe ser una ruta de directorio
	para escanear.

-D VT_PUBLIC_PREMIUM, --vtpubpremium VT_PUBLIC_PREMIUM

	+ Esta opción debe usarse con la opción -d. 
	+ Valores posibles: 
		+ <0> usa la API Premium de VT v3 (predeterminada); 
		+ <1> usa la API pública de VT v3.
		
-l MALSHARE_HASHES, --malsharelist MALSHARE_HASHES

	+ Esta opción descarga una muestra y muestra hashes de un tipo específico
	de las últimas 24 horas del repositorio MALSHARE. 
	+ Los valores posibles son: 
		+ 1: Descargar una muestra; 
		+ 2: PE32 (predeterminado) ; 
		+ 3: ELF ; 
		+ 4: Java; 
		+ 5: PDF ; 
		+ 6: Listar los tipos de archivo disponibles en las últimas 24 horas (y cuántas 
		muestras de cada uno); 
		+ 7: Lista de hashes de las últimas 24 horas; 
		+ 8: Listar hashes del tipo de archivo proporcionado con -L (usa -l 6 para descubrir 
		los tipos de archivo válidos).

-L MALSHARE_HASH_SEARCH, --malshare_hash MALSHARE_HASH_SEARCH

	+ Proporciona un hash como argumento para descargar una muestra del repositorio 
	MALSHARE (-l 1) o, cuando se usa con -l 8, el tipo de archivo cuyos hashes 
	deben listarse.
	
-j HAUS_OPTION, --haus_option HAUS_OPTION

	+ Esta opción obtiene información de URLHaus dependiendo del valor pasado como argumento: 
		+ 1: descarga la muestra dada; 
		+ 2: consulta información sobre un 
		hash proporcionado ; 
		+ 3: busca información sobre una URL dada; 
		+ 4: busca una URL maliciosa por una etiqueta dada (distingue mayúsculas/minúsculas); 
		+ 5: busca payloads dada una etiqueta; 
		+ 6: recupera una lista de enlaces descargables a payloads recientes; 
		+ 7: recupera una lista de URL maliciosas recientes; 
		+ 8: comprobación de hashes por lotes desde un archivo (un hash por línea).

-J HAUS_ARG, --haus_arg HAUS_ARG

	+ Proporciona el argumento para la opción -j de URLHaus. Si "-j 1" entonces -J debe
	ser un hash SHA256 para descargar la muestra; Si "-j 2" entonces -J debe ser un
	hash (MD5/SHA1/SHA256) para buscar; Si "-j 3" entonces -J debe ser una URL para
	comprobar; Si "-j 4" entonces -J debe ser una etiqueta (distingue mayúsculas/minúsculas); Si "-j 5" entonces
	-J debe ser un nombre de firma.

-p POLY_OPTION, --poly_option POLY_OPTION

	+ (Solo para Linux) Esta opción está relacionada con las operaciones de POLYSWARM:
		+ 1. busca información relacionada con un hash dado proporcionado mediante la opción -P; 
		+ 2. envía una muestra proporcionada por la opción -P para ser analizada por el motor de Polyswarm ; 
		+ 3. Descarga una muestra de Polyswarm proporcionando el hash a través de la opción -P.
		Atención: Polyswarm impone un máximo de 20 muestras por mes; 
		+ 4. busca muestras similares dado un archivo de muestra mediante la opción -P;
		+ 5. busca muestras relacionadas con una dirección IP proporcionada a través de la opción -P; 
		+ 6. busca muestras relacionadas con un dominio dado proporcionado por la opción -P; 
		+ 7. busca muestras relacionadas con una URL proporcionada a través de la opción -P; 
		+ 8. busca muestras relacionadas con una familia de malware dada proporcionada por la opción -P.

-P POLYSWARM_ARG, --poly_arg POLYSWARM_ARG

	+ (Solo para Linux) Proporciona un argumento para la opción -p de POLYSWARM.

-y ANDROID_OPTION, --android_option ANDROID_OPTION

	+ Esta opción de ANDROID tiene múltiples valores posibles: 
		+ <1>: Comprueba todos los paquetes APK de terceros del dispositivo Android conectado por USB 
		contra Hybrid Analysis usando múltiples hilos. Notas: el dispositivo Android no 
		necesita estar rooteado y el sistema debe tener la herramienta adb en la variable 
		de entorno PATH; 
		+ <2>: Comprueba todos los paquetes APK de terceros del dispositivo Android conectado por USB
		contra VirusTotal usando la API pública (más lento debido al retraso de 60 segundos por cada 
		4 hashes). Notas: el dispositivo Android no necesita estar rooteado y el sistema 
		debe tener la herramienta adb en la variable de entorno PATH; 
		+ <3>: Comprueba todos los paquetes APK de terceros del dispositivo Android conectado por USB 
		contra VirusTotal usando múltiples hilos (solo para Virus API privada). Notas: el 
		dispositivo Android no necesita estar rooteado y el sistema debe tener la herramienta adb 
		en la variable de entorno PATH; 
		+ <4> Envía un APK de terceros desde tu dispositivo Android conectado por USB a 
		Hybrid Analysis; 
		+ 5. Envía un APK de terceros desde tu dispositivo Android conectado por USB a Virus-Total.

-Y ANDROID_ARG, --android_arg ANDROID_ARG

	+ Esta opción proporciona el argumento para -y de ANDROID.

-n ALIENVAULT, --alienvault ALIENVAULT

	+ Comprueba múltiples informaciones de ALIENVAULT. Los valores posibles son: 
		+ 1: Obtener los pulses suscritos; 
		+ 2: Obtener información sobre una dirección IP; 
		+ 3: Obtener información sobre un dominio; 
		+ 4: Obtener información sobre un hash; 
		+ 5: Obtener información sobre una URL.

-N ALIENVAULT_ARGS, --alienvaultargs ALIENVAULT_ARGS

	+ Proporciona el argumento para la opción -n de ALIENVAULT. Si "-n 1" entonces -N
	debe ser el número de pulses suscritos a recuperar; Si "-n 2" entonces -N
	debe ser una dirección IP; Si "-n 3" entonces -N debe ser un dominio; Si "-n 4"
	entonces -N debe ser un hash (MD5/SHA256); Si "-n 5" entonces -N debe ser una URL.

-m MALPEDIA, --malpedia MALPEDIA

	+ Esta opción está relacionada con MALPEDIA y presenta diferentes significados dependiendo del 
	valor elegido. Así:
		+ 1: Listar la meta información de todas las familias; 
		+ 2: Listar todos los IDs de actores; 
		+ 3: Listar todos los payloads disponibles organizados por familia de Malpedia; 
		+ 4: Obtener meta información de un actor específico, por lo que es necesario usar 
		la opción -M. Además, intenta confirmar el ID de actor correcto ejecutando
		malwoverview con la opción -m 3; 
		+ 5: Listar todos los IDs de familias; 
		+ 6: Obtener meta-información de una familia específica, por lo que es necesario 
		usar la opción -M. Además, intenta confirmar el ID de familia correcto 
		ejecutando malwoverview con la opción -m 5; 
		+ 7: Obtener una muestra de malware de malpedia (formato zip -- contraseña: infected). 
		Es necesario especificar el hash solicitado mediante la opción -M;
		+ 8: Obtener un archivo zip que contiene reglas Yara para una familia específica 
		(obtén las posibles familias usando -m 5), el cual debe especificarse mediante la opción -M; 
		+ 9: Obtener un archivo zip que contiene el ruleset completo de Yara de Malpedia para un 
		nivel TLP, que debe proporcionarse con -M como uno de tlp_white, tlp_green, 
		tlp_amber o auto (las formas cortas white, green y amber también son 
		aceptadas). Combínalo con --yara para escanear con las reglas descargadas.

-M MALPEDIAARG, --malpediarg MALPEDIAARG

	+ Proporciona el argumento para la opción -m de MALPEDIA. Si "-m 4" entonces -M debe
	ser un nombre de actor (confirma con -m 2); Si "-m 6" entonces -M debe ser un
	nombre de familia (confirma con -m 5); Si "-m 7" entonces -M debe ser un hash para
	descargar la muestra; Si "-m 8" entonces -M debe ser un nombre de familia para obtener
	reglas YARA.

-b BAZAAR, --bazaar BAZAAR+ Comprueba múltiples informaciones de MALWARE BAZAAR y THREATFOX. Los posibles 
	valores son: 
		+ 1: (Bazaar) Consulta información sobre una muestra de hash de malware; 
		+ 2: (Bazaar) Obtiene información y una lista de muestras de malware asociadas 
		y según una etiqueta específica; 
		+ 3: (Bazaar) Obtiene una lista de muestras de malware según un imphash dado; 
		+ 4: (Bazaar) Consulta las últimas muestras de malware; 
		+ 5: (Bazaar) Descarga una muestra de malware de Malware Bazaar proporcionando 
		un hash SHA256. La muestra descargada se comprime con la siguiente 
		contraseña: infected; 
		+ 6: (ThreatFox) Obtiene el conjunto de datos IOC actual de los últimos x días 
		mediante la opción -B (máximo de 7 días); 
		+ 7: (ThreatFox) Busca el IOC especificado en ThreatFox mediante la opción -B; 
		+ 8: (ThreatFox) Busca IOCs según la etiqueta especificada mediante la opción -B; 
		+ 9: (ThreatFox) Busca IOCs según la familia de malware especificada mediante 
		la opción -B; 
		+ 10. (ThreatFox) Lista todas las familias de malware disponibles.
		+ 11: (Bazaar) Verificación de hash por lotes desde un archivo (un hash por 
		línea) contra Malware Bazaar;
		+ 12: (Bazaar) Escaneo de directorio — calcula el SHA256 de cada archivo en un 
		directorio y lo verifica contra Malware Bazaar;
		+ 13: (Bazaar) Busca muestras que coincidan con el nombre de regla YARA 
		proporcionado por la opción -B. Los nombres de regla se enumeran al final de un 
		informe de hash (-b 1), y también son los nombres de regla dentro del conjunto 
		YARAify descargado con -b 14 y extraído con -b 15;
		+ 14: (YARAify) Descarga el conjunto de reglas YARAify (abuse.ch), que es el 
		conjunto de reglas detrás de Malware Bazaar;
		+ 15: (YARAify) Extrae el conjunto de reglas YARAify descargado a un directorio 
		de reglas que se puede proporcionar a --yara.

-B BAZAAR_ARG, --bazaararg BAZAAR_ARG

	+ Proporciona un argumento a la opción -b de MALWARE BAZAAR y THREAT FOX:
		+ "-b 1" indica que el argumento de -B debe ser un hash y se recuperará un 
		informe sobre la muestra; 
		+ "-b 2" indica que el argumento de -B debe ser una etiqueta de malware y se 
		mostrarán las últimas muestras que coincidan con esta etiqueta; 
		+ "-b 3" significa que el argumento proporcionado por -M debe ser un imphash y 
		se mostrarán las últimas muestras que coincidan con este imphash; 
		+ "-b 4" significa que el argumento proporcionado por -M debe ser "100 o time", 
		donde "100" enumera las últimas "100 muestras" y "time" enumera las últimas 
		muestras añadidas a Malware Bazaar en los últimos 60 minutos; 
		+ "-b 5" significa que la muestra se descargará y el argumento de -B debe ser 
		un hash SHA256 de la muestra que deseas descargar de Malware Bazaar; 
		+ "-b 6" indica que se recuperará una lista de IOCs y el valor de -B es el 
		número de DÍAS para filtrar dichos IOCs. El tiempo máximo es 7 (días); 
		+ "-b 7" indica que el argumento de -B es el IOC que deseas buscar; 
		+ "-b 8" indica que el argumento de -B es la ETIQUETA del IOC que deseas 
		buscar; 
		+ "-b 9" indica que el argumento de -B es la familia de malware para la que 
		deseas buscar IOCs;
		
-x TRIAGE, --triage TRIAGE

	+ Proporciona información de TRIAGE según el valor especificado: 
		+ 1: esta opción obtiene la información general de la muestra proporcionando 
		un argumento con la opción -X en los siguientes formatos posibles: 
			- sha256:<value>
			- sha1:<value>
			- md5:<value>
			- family:<value>
			- score:<value>
			- tag:<value>
			- url:<value>
			- wallet:<value>
			- ip:<value>; 
			
		+ 2: Obtiene un informe resumido para un ID de Triage dado (obtenido de la 
		opción -x 1); 
		+ 3: Envía una muestra para análisis; 
		+ 4: Envía una muestra a través de una URL para análisis; 
		+ 5: Descarga la muestra especificada por el ID de Triage; 
		+ 6: Descarga el archivo pcapng de la muestra asociada al ID de Triage dado; 
		+ 7: Obtiene un informe dinámico para el ID de Triage dado (obtenido de la 
		opción -x 1);
		+ 8: Verificación de hash por lotes desde un archivo (un hash por línea) 
		contra Triage;
		+ 9: Escaneo de directorio — calcula el SHA256 de cada archivo en un directorio 
		y lo verifica contra Triage.

-X TRIAGE_ARG, --triagearg TRIAGE_ARG

	+ Proporciona un argumento para la opción -x de TRIAGE. Si "-x 1", entonces -X 
	debe ser una consulta de búsqueda (p. ej., sha256:<hash>, family:<name>, tag:<tag>, 
	ip:<ip>); Si "-x 2", entonces -X debe ser un ID de muestra de Triage (obtenido de 
	-x 1); Si "-x 3", entonces -X debe ser una ruta de archivo a enviar; Si "-x 4", 
	entonces -X debe ser una URL a enviar; Si "-x 5" o "-x 6", entonces -X debe ser 
	un ID de muestra de Triage para descargar; Si "-x 7", entonces -X debe ser un ID 
	de muestra de Triage para el informe dinámico; Si "-x 8", entonces -X debe ser un 
	archivo que contenga hashes (uno por línea); Si "-x 9", entonces -X debe ser una 
	ruta de directorio a escanear.

  -O OUTPUTDIR, --output-dir OUTPUTDIR
        
        + Establece el directorio de salida para todas las descargas de muestras.
  
  -ip IP, --ip IP

  + Obtiene información de IP de diversas fuentes. Los posibles valores son:
        + 1: Obtiene detalles de una dirección IP proporcionada con -IP desde IPInfo;
        + 2: Eliminado en 8.1.0 (BGPView cerró);
        + 3: Obtiene detalles de una dirección IP proporcionada con -IP desde todos 
        los servicios de inteligencia disponibles (VirusTotal/Alienvault);
        + 4: Obtiene detalles de una dirección IP desde Shodan;
        + 5: Obtiene detalles de una dirección IP desde AbuseIPDB;
        + 6: Obtiene detalles de una dirección IP desde GreyNoise;
        + 7: Obtiene detalles de una dirección IP desde todos los servicios 
        (exhaustivo);
        + 8: Verifica por lotes direcciones IP desde un archivo (una por línea) 
        contra VirusTotal y muestra una tabla resumen (Dirección IP, País, Propietario 
        AS, Detección). Usa -D para elegir entre la API de VT Pública (-D 1) y Premium 
        (-D 0, predeterminada).

  -IP IPARG, --iparg IPARG

        + Proporciona un argumento para la opción -ip. Para -ip 1 a 7 debe ser una 
        dirección IP válida (IPv4 o IPv6); para -ip 8 debe ser un archivo que 
        contenga direcciones IP (una por línea).

-s SHODAN, --shodan SHODAN

	+ Opciones de SHODAN:
		+ 1: Consulta de IP;
		+ 2: Consulta de búsqueda.

-S SHODAN_ARG, --shodanarg SHODAN_ARG

	+ Proporciona un argumento para la opción -s de SHODAN. Si "-s 1", entonces -S 
	debe ser una dirección IP; Si "-s 2", entonces -S debe ser una consulta de 
	búsqueda (p. ej., "apache", "port:22 country:BR").

-ab ABUSEIPDB, --abuseipdb ABUSEIPDB

	+ Opciones de ABUSEIPDB:
		+ 1: Comprueba la reputación de una IP.

-AB ABUSEIPDB_ARG, --abuseipdbarg ABUSEIPDB_ARG

	+ Proporciona una dirección IP para la opción -ab de ABUSEIPDB.

-gn GREYNOISE, --greynoise GREYNOISE

	+ Opciones de GREYNOISE:
		+ 1: Comprobación rápida de IP (API comunitaria).

-GN GREYNOISE_ARG, --greynoisearg GREYNOISE_ARG

	+ Proporciona una dirección IP para la opción -gn de GREYNOISE.

-wh WHOIS, --whois WHOIS

	+ Opciones de WHOIS:
		+ 1: Consulta whois de dominio;
		+ 2: Consulta whois/RDAP de IP.

-WH WHOIS_ARG, --whoisarg WHOIS_ARG

	+ Proporciona un argumento para la opción -wh de WHOIS. Si "-wh 1", entonces -WH 
	debe ser un nombre de dominio; Si "-wh 2", entonces -WH debe ser una dirección IP.

-ct CRTSH, --crtsh CRTSH

	+ Consulta los registros de transparencia de certificados a través de crt.sh, que 
	no requiere clave de API. Valores posibles:
		+ 1: enumera los nombres DNS distintos que aparecen en los certificados 
		emitidos para el dominio proporcionado con -CT, lo cual es una forma económica 
		de enumerar subdominios. Los nombres que pertenecen a otros dominios, que 
		aparecen porque un certificado puede cubrir varios inquilinos, se cuentan y se 
		informan por separado;
		+ 2: enumera los propios certificados (identificador, emisor, nombre común y 
		fechas de validez, del más reciente al más antiguo).

-CT CRTSH_ARG, --crtsharg CRTSH_ARG

	+ Proporciona el nombre de dominio consultado por la opción -ct.

-u URLSCANIO, --urlscanio URLSCANIO

	+ Opciones de URLSCAN.IO:
		+ 1: Envía una URL para escaneo;
		+ 2: Obtiene el resultado del escaneo por UUID;
		+ 3: Busca escaneos usando la sintaxis de consulta de Elasticsearch 
		(p. ej., "page.server:nginx", "task.tags:phishing");
		+ 4: Busca escaneos por dominio;
		+ 5: Busca escaneos por IP.

-U URLSCANIO_ARG, --urlscanioarg URLSCANIO_ARG

	+ Proporciona un argumento para la opción -u de URLSCAN.IO. Si "-u 1", entonces 
	-U debe ser una URL a enviar para escaneo; Si "-u 2", entonces -U debe ser un UUID 
	(obtenido de -u 1); Si "-u 3", entonces -U debe ser una consulta de Elasticsearch 
	(p. ej., "page.server:nginx", "task.tags:phishing"); Si "-u 4", entonces -U debe 
	ser un dominio; Si "-u 5", entonces -U debe ser una dirección IP.

--correlate-hash HASH

	+ Correlación de hash entre servicios: consulta un hash en VirusTotal, Hybrid 
	Analysis, Triage y AlienVault generando un informe consolidado.

--extract-iocs SOURCE

	+ Extrae IOCs (hashes, IPs, URLs, dominios, correos electrónicos, CVEs) de un 
	archivo (.txt, .pdf, .eml) o URL (http/https).
	La extracción de PDF requiere: pip install malwoverview[pdf]

--yara RULES_FILE

	+ Archivo de reglas YARA a utilizar para el escaneo. Debe usarse con --yara-target.
	Requiere: pip install malwoverview[yara]

--yara-target TARGET

	+ Archivo o directorio a escanear con reglas YARA.

--peinfo TARGET

	+ Triage PE local de un archivo o directorio (sin clave de API): tipo de archivo, 
	tamaño, overlay, tamaño del overlay y entropía. Los directorios se escanean 
	recursivamente. La entropía es la mayor entropía de sección PE, o la entropía 
	Shannon de todo el archivo para archivos que no son PE.

--entropy-threshold VALUE

	+ Valor de entropía con el que --peinfo resalta un archivo como empaquetado o 
	cifrado. Predeterminado: 7.0

--sigcheck TARGET

	+ Comprueba la firma Authenticode de un archivo o directorio (sin clave de API): 
	estado, firmante, emisor, fechas del certificado, algoritmo de resumen, huella 
	digital del certificado y número de serie. El estado puede ser VALID, TAMPERED, 
	UNTRUSTED, EXPIRED, MALFORMED, INVALID, NONE (sin firma incrustada), PRESENT (hay 
	una firma pero no se verificó) o N/A (no es un archivo PE). Solo se leen las 
	firmas incrustadas: un archivo informado como NONE puede seguir estando firmado 
	mediante un catálogo de Windows.
	La verificación completa requiere: pip install malwoverview[signature]

	VALID significa que el archivo sigue coincidiendo con el certificado con el que se 
	firmó. No es un veredicto sobre el archivo: los certificados de firma se roban, se 
	usan indebidamente y se emiten por error, y el malware ha llevado firmas válidas de 
	Microsoft. Una firma incrustada se almacena en el overlay, por lo que un archivo 
	firmado siempre informa de una y ese overlay no es una carga útil añadida.

	La revocación de certificados no se comprueba. No se realiza ninguna solicitud de 
	red, por lo que un archivo firmado con un certificado que se revocó posteriormente 
	sigue informando VALID.

	Una firma permanece VALID después de que su certificado expire cuando lleva una 
	contrafirma, porque la contrafirma demuestra que el archivo se firmó mientras el 
	certificado seguía siendo válido. Así es como se supone que funciona Authenticode, 
	y el informe lo indica cuando ocurre: una fecha de caducidad en el pasado junto a 
	VALID no es una contradicción.

	Un archivo puede llevar más de una firma incrustada, normalmente SHA-1 para 
	compatibilidad más SHA-256, y los firmantes frecuentemente difieren. La columna 
	Signer muestra una de ellas y marca las demás como (+N); ejecutar --sigcheck sobre 
	un solo archivo enumera cada firma con su propio algoritmo de resumen, certificado, 
	huella digital y número de serie.

--no-signature

	+ Omite la verificación de firma en --peinfo y --sigcheck, informando solo si hay 
	una firma presente. Útil en directorios grandes.

--sig-verify-mode MODE

	+ Qué firma incrustada decide el estado de un archivo con múltiples firmas: any, 
	first, all o best. Predeterminado: best

	best sigue la firma realizada con el algoritmo de resumen más fuerte, que es el 
	que Windows reconoce. first sigue el orden del archivo, coincidiendo con 
	sigcheck.exe. all requiere que todas las firmas se verifiquen, y any acepta el 
	archivo cuando una sola lo hace. La elección importa: entre 517 controladores con 
	múltiples firmas, 37 cambian de estado según esta configuración, y any informa 
	VALID en 21 archivos que first rechaza.

--attack-map

	+ Habilita el mapeo de técnicas MITRE ATT&CK para informes de comportamiento.

GENERAL OPTIONS: Opciones de formato de salida, proxy, caché y verbosidad

--output-format text|json|csv

	+ Formato de salida: text (predeterminado, terminal con colores), json o csv.

--proxy URL

	+ URL de proxy HTTP/HTTPS/SOCKS5 (p. ej., socks5://127.0.0.1:9050).

--quiet

	+ Suprime el banner y la salida cosmética.

--verbose

	+ Muestra información de depuración (URLs de solicitudes, tiempos, etc.).

--no-cache

	+ Desactiva el almacenamiento en caché de resultados.

--cache-ttl SECONDS

	+ Tiempo de vida de la caché en segundos (predeterminado: 3600).

--cache-stats

	+ Muestra la ubicación de la caché de resultados local, cuántas entradas 
	contiene, cuántas de ellas están expiradas según el --cache-ttl actual y su 
	tamaño en disco. Luego sale.

--prune-cache

	+ Elimina solo las entradas expiradas de la caché de resultados local (según 
	--cache-ttl) y sale.

--clear-cache

	+ Elimina todas las entradas de la caché de resultados local y sale.

--no-resolve

	+ No resuelve ni geolocaliza los nombres de host encontrados en los resultados. Al 
	listar un feed (por ejemplo, las listas de payloads y etiquetas de URLHaus), 
	normalmente tu host consulta cada URL que muestra, lo que indica al operador de 
	esa infraestructura que está siendo investigada. Con esta opción, la columna de 
	ubicación muestra "Not Resolved" en su lugar.

--defang

	+ Imprime los IOCs enumerados por --extract-iocs en forma desarmada 
	(hxxp://example[.]com), para que puedan copiarse en un informe o ticket sin que se 
	vuelvan clicables. Se aplica solo a esa lista y cambia únicamente la salida: las 
	consultas se siguen haciendo con los valores reales.

--no-ioc-filter

	+ Desactiva el filtrado de ruido que --extract-iocs aplica por defecto. 
	Normalmente, los bloques <script>, <style> y <svg> de una página HTML se omiten, 
	un dominio solo se informa cuando su última etiqueta es un dominio de nivel 
	superior real, y los enlaces de vuelta al sitio de origen o a elementos conocidos 
	de la página (analíticas, fuentes, botones sociales) se descartan. Con esta 
	opción, en su lugar se informa cada coincidencia de regex en la fuente sin 
	procesar.

--report html|pdf

	+ Genera un informe en el formato especificado.
	La exportación a PDF requiere: pip install malwoverview[pdf]

--report-file PATH

	+ Ruta de salida para el informe generado.

--interactive

	+ Lanza el modo REPL interactivo.

--tui

	+ Lanza el modo de panel TUI (interfaz de usuario de texto) con selector de 
	servicios, entrada de consultas y panel de resultados desplazable.
	Requiere: pip install malwoverview[tui]

--enrich

	+ Habilita el enriquecimiento de resultados con LLM. Añade una evaluación de 
	amenazas generada por IA después de cada resultado de consulta. Funciona con todos 
	los tipos de consulta, incluyendo búsquedas de hash de malware, comprobaciones de 
	reputación de IP, búsquedas de CVE (NIST y VulnCheck) y correlación entre 
	servicios. Utiliza el proveedor configurado en la sección [LLM] de .malwapi.conf, 
	o anulado con --llm. Proveedores soportados:
	  - claude:  API de Anthropic Claude (mejor calidad, de pago)
	  - gemini:  API de Google Gemini (requiere facturación)
	  - openai:  API de OpenAI (de pago, modelos GPT)
	  - ollama:  Instancia local de Ollama (gratuita, privada)

--llm PROVIDER

	+ Anula el proveedor de LLM para el enriquecimiento (usar con --enrich).
	  Ejemplos:
	    malwoverview -v 8 -V <hash> --enrich --llm claude
	    malwoverview --nist 2 --NIST CVE-2024-3400 --enrich --llm claude
	    malwoverview -vc 3 -VC CVE-2024-3400 --enrich --llm ollama

VULNERABILITY OPTIONS: Opciones de consulta a bases de datos de vulnerabilidades

  NIST CVE Database Query:
  Opciones de consulta para la base de datos de CVE de NIST (el tipo de consulta y el 
  valor son obligatorios; las demás opciones son opcionales)

  --nist NIST_OPTION,   Tipo de consulta: 1=Búsqueda de CPE/Producto, 2=Búsqueda por 
                        ID de CVE, 3=Severidad CVSS v3, 4=Búsqueda por palabra clave, 
                        5=Búsqueda por ID de CWE
  --NIST NIST_ARG       Valor de búsqueda (el formato depende del tipo de consulta)
  --time YEARS          Limita los resultados a los últimos N años
  --rpp NUM             Resultados por página (predeterminado: 100, máximo: 2000)
  --startindex NUM      Índice de inicio de paginación (predeterminado: 0)
  --ncves NUM           Limita la salida a los primeros N CVEs

  VulnCheck Database Query:
  Opciones de consulta para la base de datos de vulnerabilidades de VulnCheck (nivel 
  Community/Gratuito)

-vc VULNCHECK_OPTION, --vulncheck VULNCHECK_OPTION

	+ Tipo de consulta: 1: Lista los índices disponibles; 
	2: Obtiene KEV (Known Exploited Vulnerabilities); 
	3: Busca CVE en KEV; 
	4: Obtiene el enlace de respaldo de KEV; 
	5: Lista CVEs de MITRE; 
	6: Lista CVEs de NIST NVD2; 
	7: Busca CVE en MITRE; 
	8: Busca CVE en NIST NVD2.

-VC VULNCHECK_ARG, --VULNCHECK VULNCHECK_ARG

	+ Valor de búsqueda (ID de CVE para las opciones 3/7/8, máximo de resultados para 
	las opciones 2/5/6, p. ej., 50).

SUBCOMANDOS

A partir de la versión 8.0, Malwoverview admite una sintaxis alternativa de subcomandos junto a la sintaxis tradicional basada en opciones. Ambas sintaxis son totalmente compatibles y producen resultados idénticos.

Subcomandos disponibles:

  vt          Operaciones de VirusTotal (file, av, hash, url, ip, domain, submit, behavior, batch)
  ha          Operaciones de Hybrid Analysis (report, submit, download, batch, dir)
  bazaar      Operaciones de Malware Bazaar (hash, tag, download, batch, dir)
  triage      Operaciones de Triage (search, summary, submit, dynamic, batch, dir)
  urlhaus     Operaciones de URLHaus (hash, url, tag, download, batch)
  ip          Consultas de direcciones IP (info, shodan, abuse, greynoise, all, batch)
  whois       Consultas Whois/RDAP (domain, ip)
  shodan      Operaciones de Shodan (ip, search)
  correlate   Correlación entre servicios (hash)
  extract     Extracción de IOCs de archivos o URLs
  yara        Escaneo con reglas YARA
  nist        Consultas a la base de datos de CVE de NIST
  vulncheck   Consultas a la base de datos de VulnCheck

Ejemplos de subcomandos (equivalentes a la sintaxis basada en opciones):

  # These pairs are equivalent:
  malwoverview vt hash <sha256>                     # same as: malwoverview -v 8 -V <sha256>
  malwoverview vt behavior <sha256>                 # same as: malwoverview -v 12 -V <sha256>
  malwoverview ha report <hash> --env 3             # same as: malwoverview -a 3 -A <hash>
  malwoverview ha batch <hashfile>                  # same as: malwoverview -a 12 -A <hashfile>
  malwoverview bazaar hash <sha256>                 # same as: malwoverview -b 1 -B <sha256>
  malwoverview bazaar batch <hashfile>              # same as: malwoverview -b 11 -B <hashfile>
  malwoverview bazaar dir <directory>               # same as: malwoverview -b 12 -B <directory>
  malwoverview triage search sha256:<value>         # same as: malwoverview -x 1 -X sha256:<value>
  malwoverview triage batch <hashfile>              # same as: malwoverview -x 8 -X <hashfile>
  malwoverview ip all <ipaddr>                      # same as: malwoverview -ip 7 -IP <ipaddr>
  malwoverview ip shodan <ipaddr>                   # same as: malwoverview -ip 4 -IP <ipaddr>
  malwoverview ip batch <ipfile>                    # same as: malwoverview -ip 8 -IP <ipfile>
  malwoverview whois domain <domain>                # same as: malwoverview -wh 1 -WH <domain>
  malwoverview correlate hash <sha256>              # same as: malwoverview --correlate-hash <sha256>
  malwoverview extract <file|url>                    # same as: malwoverview --extract-iocs <file|url>
  malwoverview yara <rules> <target>                # same as: malwoverview --yara <rules> --yara-target <target>
  malwoverview nist 2 CVE-2021-44228               # same as: malwoverview --nist 2 --NIST CVE-2021-44228

Usa --help con cualquier subcomando para más detalles:

  malwoverview vt --help
  malwoverview ip --help
  malwoverview ha report --help

EJEMPLOS

OPCIONES DE MALWARE:malwoverview -d /home/remnux/malware/windows_2/

  malwoverview -v 1 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
  malwoverview -v 2 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
  malwoverview -v 3 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
  malwoverview -v 4 -V 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe,
  malwoverview -v 5 -V http://jamogames.com/templates/JLHk/
  malwoverview -v 6 -V 185.220.100.243
  malwoverview -v 7 -V xurl.es
  malwoverview -v 8 -V ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
  malwoverview -v 9 -V cc2d791b16063a302e1ebd35c0e84e6cf6519e90bb710c958ac4e4ddceca68f7.exe
  malwoverview -v 10 -V /home/remnux/malware/hash_list_3.txt
  malwoverview -v 11 -V /home/remnux/malware/hash_list_3.txt
  malwoverview -v 12 -V 9d26e19b8fc5819b634397d48183637bacc9e1c62d8b1856b8116141cb8b4000
  malwoverview -v 13 -V /largefiles/4b3b46558cffe1c0b651f09c719af2779af3e4e0e43da060468467d8df445e93
  malwoverview -v 14 -V /home/remnux/rules/apt_rules.yar
  malwoverview -v 14 -V /home/remnux/rules/
  malwoverview -v 15
  malwoverview -v 16 -V 1712345678-abcdef0123456789
  malwoverview -v 17 -V 1712345678-abcdef0123456789
  malwoverview -v 18 -V /home/remnux/rules/livehunt.yar
  malwoverview -v 19
  malwoverview -v 20
  malwoverview -a 1 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
  malwoverview -a 1 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8.exe
  malwoverview -a 2 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
  malwoverview -a 3 -A 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
  malwoverview -a 4 -A malware1.apk
  malwoverview -a 4 -A 82eb6039cdda6598dc23084768e18495d5ebf3bc3137990280bc0d9351a483eb
  malwoverview -a 5 -A 2b03806939d1171f063ba8d14c3b10622edb5732e4f78dc4fe3eac98b56e5d46
  malwoverview -a 5 -A 2b03806939d1171f063ba8d14c3b10622edb5732e4f78dc4fe3eac98b56e5d46.elf
  malwoverview -a 6 -A 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
  malwoverview -a 7 -A 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
  malwoverview -a 8 -A 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
  malwoverview -a 9 -A malware_7.apk
  malwoverview -a 10 -A 925f649617743f0640bdfff4b6b664b9e12761b0e24bbb99ca72740545087ad2.elf
  malwoverview -a 11 -A cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
  malwoverview -a 12 -A /home/remnux/malware/hash_list.txt
  malwoverview -a 13 -A /home/remnux/malware/samples/
  malwoverview -l 1 -L d3dcc08c9b955cd3f68c198e11d5788869d1b159dc8014d6eaa39e6c258123b0
  malwoverview -l 2
  malwoverview -l 3
  malwoverview -l 4
  malwoverview -l 5
  malwoverview -l 6
  malwoverview -l 8 -L PE32
  malwoverview -j 1 -J 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
  malwoverview -j 2 -J 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
  malwoverview -j 3 -J https://unada.us/acme-challenge/3NXwcYNCa/
  malwoverview -j 4 -J Qakbot
  malwoverview -j 5 -J Emotet
  malwoverview -j 5 -J Icedid
  malwoverview -j 6
  malwoverview -j 7
  malwoverview -j 8 -J /home/remnux/malware/hash_list.txt
  malwoverview -p 1 -P 1999ba265cd51c94e8ae3a6038b3775bf9a49d6fe57d75dbf1726921af8a7ab2
  malwoverview -p 2 -P 301524c3f959d2d6db9dffdf267ab16a706d3286c0b912f7dda5eb42b6d89996.exe
  malwoverview -p 3 -P 68c11ef39769674123066bcd52e1d687502eb6c4c0788b4f682e8d31c15e5306
  malwoverview -p 4 -P 68c11ef39769674123066bcd52e1d687502eb6c4c0788b4f682e8d31c15e5306.exe
  malwoverview -p 5 -P 188.40.75.132
  malwoverview -p 6 -P covid19tracer.ca
  malwoverview -p 7 -P http://ksahosting.net/wp-includes/utf8.php
  malwoverview -p 8 -P Qakbot
  malwoverview -y 1
  malwoverview -y 2
  malwoverview -y 3
  malwoverview -y 4 -Y com.spaceship.netprotect
  malwoverview -y 5 -Y com.mwr.dz
  malwoverview -v 1 -V 368afeda7af69f329e896dc86e9e4187a59d2007e0e4b47af30a1c117da0d792.apk
  malwoverview -n 1 -N 10
  malwoverview -n 2 -N 176.57.215.100
  malwoverview -n 3 -N threesmallhills.com
  malwoverview -n 4 -N 6d1756aa6b45244764409398305c460368d64ff9 -o 0
  malwoverview -n 5 -N http://ksahosting.net/wp-includes/utf8.php
  malwoverview -m 1 | more
  malwoverview -m 2 | more
  malwoverview -m 3 | more 
  malwoverview -m 4 -M apt41 | more
  malwoverview -m 5 | more 
  malwoverview -m 6 -M win.qakbot
  malwoverview -m 7 -M 3d375d0ead2b63168de86ca2649360d9dcff75b3e0ffa2cf1e50816ec92b3b7d 
  malwoverview -m 8 -M win.qakbot
  malwoverview -m 9 -M tlp_white
  malwoverview -m 9 -M tlp_green
  malwoverview -b 1 -B c9d7b5d06cd8ab1a01bf0c5bf41ef2a388e41b4c66b1728494f86ed255a95d48
  malwoverview -b 2 -B Revil | more
  malwoverview -b 3 -B f34d5f2d4577ed6d9ceec516c1f5a744
  malwoverview -b 4 -B 100 
  malwoverview -b 4 -B time | more
  malwoverview -b 5 -B bda50ff249b947617d9551c717e78131ed32bf77db9dc5b7591d3e1af6cb2f1a
  malwoverview -b 6 -B 3 | more
  malwoverview -b 7 -B 193.150.103.37:21330
  malwoverview -b 8 -B Magecart | more
  malwoverview -b 9 -B "Cobalt Strike"
  malwoverview -b 10 | more
  malwoverview -x 1 -X score:10 | more
  malwoverview -x 1 -X 71382e72d8fb3728dc8941798ab1c180493fa978fd7eadc1ab6d21dae0d603e2
  malwoverview -x 2 -X 220315-qxzrfsadfl
  malwoverview -x 3 -X cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
  malwoverview -x 4 -X http://ztechinternational.com/Img/XSD.exe
  malwoverview -x 5 -X 220315-xmbp7sdbel
  malwoverview -x 6 -X 220315-xmbp7sdbel
  malwoverview -x 7 -X 220315-xmbp7sdbel
  malwoverview -ip 1 -IP 8.8.8.8
  malwoverview -ip 3 -IP 8.8.8.8
  malwoverview -b 5 -B <hash> -O <directory>
  malwoverview -b 11 -B /home/remnux/malware/hash_list.txt
  malwoverview -b 12 -B /home/remnux/malware/samples/
  malwoverview -b 13 -B Windows_Trojan_Emotet
  malwoverview -b 14
  malwoverview -b 15
  malwoverview -x 8 -X /home/remnux/malware/hash_list.txt
  malwoverview -x 9 -X /home/remnux/malware/samples/
  malwoverview -ip 4 -IP 8.8.8.8
  malwoverview -ip 5 -IP 8.8.8.8
  malwoverview -ip 6 -IP 8.8.8.8
  malwoverview -ip 7 -IP 8.8.8.8
  malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt
  malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt -D 1
  malwoverview -s 1 -S 8.8.8.8
  malwoverview -s 2 -S "apache"
  malwoverview -ab 1 -AB 185.220.100.243
  malwoverview -gn 1 -GN 185.220.100.243
  malwoverview -wh 1 -WH example.com
  malwoverview -wh 2 -WH 8.8.8.8
  malwoverview -ct 1 -CT iana.org
  malwoverview -ct 2 -CT iana.org
  malwoverview -u 1 -U https://example.com
  malwoverview -u 2 -U 019ce889-ab8d-768b-894e-3e5bf5401f8d
  malwoverview -u 3 -U task.tags:phishing
  malwoverview -u 4 -U example.com
  malwoverview -u 5 -U 8.8.8.8
  malwoverview --correlate-hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
  malwoverview --extract-iocs /home/remnux/malware/report.txt
  malwoverview --extract-iocs /home/remnux/malware/report.pdf
  malwoverview --extract-iocs https://example.com/threat-report.html
  malwoverview --yara /home/remnux/rules/malware.yar --yara-target /home/remnux/malware/samples/
  malwoverview --yara /home/remnux/rules/ --yara-target /home/remnux/malware/samples/
  malwoverview --peinfo /home/remnux/malware/samples/
  malwoverview --peinfo /home/remnux/malware/dropper.exe
  malwoverview --peinfo /home/remnux/malware/samples/ --entropy-threshold 7.5
  malwoverview --peinfo /home/remnux/malware/samples/ --output-format csv
  malwoverview --peinfo /home/remnux/malware/samples/ --no-signature
  malwoverview --sigcheck /home/remnux/malware/suspicious.exe
  malwoverview --sigcheck /home/remnux/malware/samples/
  malwoverview --sigcheck /home/remnux/malware/samples/ --output-format json
  malwoverview --sigcheck /home/remnux/malware/samples/ --sig-verify-mode all
  malwoverview --interactive
  malwoverview --tui
  malwoverview -v 8 -V <hash> --output-format json
  malwoverview -ip 3 -IP 8.8.8.8 --proxy socks5://127.0.0.1:9050
  malwoverview -v 12 -V <hash> --attack-map
  malwoverview -a 1 -A <hash> --attack-map
  malwoverview --correlate-hash <hash> --attack-map

  # Caché local de resultados
  malwoverview --cache-stats
  malwoverview --prune-cache
  malwoverview --clear-cache

  # Descarga el conjunto de reglas de YARAify y escanea con él (-b 15 extrae en
  # <directorio de salida>/yaraify-rules, así que usa el mismo -O en ambos pasos)
  malwoverview -b 14 -O /home/remnux/rules
  malwoverview -b 15 -O /home/remnux/rules
  malwoverview --yara /home/remnux/rules/yaraify-rules --yara-target /home/remnux/malware/samples/

  # Conjunto de reglas de Malpedia (-m 9 guarda malpedia_yara_<level>.zip; extráelo primero)
  malwoverview -m 9 -M tlp_white -O /home/remnux/rules
  unzip /home/remnux/rules/malpedia_yara_tlp_white.zip -d /home/remnux/rules/malpedia
  malwoverview --yara /home/remnux/rules/malpedia --yara-target /home/remnux/malware/samples/

  # Enriquecimiento con LLM (añade la evaluación de amenazas por IA a cualquier consulta)
  malwoverview -v 8 -V <hash> --enrich                    # usa el proveedor de la configuración
  malwoverview -v 8 -V <hash> --enrich --llm claude       # anular: usar Claude
  malwoverview -v 8 -V <hash> --enrich --llm ollama       # anular: usar Ollama
  malwoverview -v 8 -V <hash> --enrich --llm openai       # anular: usar OpenAI
  malwoverview -ip 1 -IP 8.8.8.8 --enrich
  malwoverview --correlate-hash <hash> --enrich
  malwoverview --nist 2 --NIST CVE-2024-3400 --enrich     # Enriquecimiento de CVE (NIST)
  malwoverview -vc 3 -VC CVE-2024-3400 --enrich           # Enriquecimiento de CVE (VulnCheck)
  malwoverview --nist 4 --NIST palo alto --enrich          # búsqueda por palabra clave + enriquecimiento

SINTAXIS DE SUBCOMANDOS (alternativa a los indicadores):

  # VirusTotal
  malwoverview vt hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
  malwoverview vt file 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
  malwoverview vt av 95a8370c36d81ea596d83892115ce6b90717396c8f657b17696c7eeb2dba1d2e.exe
  malwoverview vt url http://jamogames.com/templates/JLHk/
  malwoverview vt ip 185.220.100.243
  malwoverview vt domain xurl.es
  malwoverview vt submit cc2d791b16063a302e1ebd35c0e84e6cf6519e90bb710c958ac4e4ddceca68f7.exe
  malwoverview vt behavior 9d26e19b8fc5819b634397d48183637bacc9e1c62d8b1856b8116141cb8b4000
  malwoverview vt batch /home/remnux/malware/hash_list_3.txt
  malwoverview vt batch /home/remnux/malware/hash_list_3.txt --public

  # Hybrid Analysis
  malwoverview ha report 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8
  malwoverview ha report 2e1fcadbac81296946930fe3ba580fd0b1aca11bc8ffd7cefa19dea131274ae8 --env 3
  malwoverview ha submit 47eccaaa672667a9cea23e24fd702f7b3a45cbf8585403586be474585fd80243.exe
  malwoverview ha download cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
  malwoverview ha batch /home/remnux/malware/hash_list.txt
  malwoverview ha dir /home/remnux/malware/samples/

  # Malware Bazaar
  malwoverview bazaar hash c9d7b5d06cd8ab1a01bf0c5bf41ef2a388e41b4c66b1728494f86ed255a95d48
  malwoverview bazaar tag Revil | more
  malwoverview bazaar download bda50ff249b947617d9551c717e78131ed32bf77db9dc5b7591d3e1af6cb2f1a
  malwoverview bazaar batch /home/remnux/malware/hash_list.txt
  malwoverview bazaar dir /home/remnux/malware/samples/

  # Triage
  malwoverview triage search score:10 | more
  malwoverview triage search sha256:71382e72d8fb3728dc8941798ab1c180493fa978fd7eadc1ab6d21dae0d603e2
  malwoverview triage summary 220315-qxzrfsadfl
  malwoverview triage submit cd856b20a5e67a105b220be56c361b21aff65cac00ed666862b6f96dd190775e
  malwoverview triage dynamic 220315-xmbp7sdbel
  malwoverview triage batch /home/remnux/malware/hash_list.txt
  malwoverview triage dir /home/remnux/malware/samples/

  # URLHaus
  malwoverview urlhaus hash 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6
  malwoverview urlhaus url https://unada.us/acme-challenge/3NXwcYNCa/
  malwoverview urlhaus tag Qakbot
  malwoverview urlhaus download 7c99d644cf39c14208df6d139313eaf95123d569a9206939df996cfded6924a6

  # Consultas de IP
  malwoverview ip info 8.8.8.8
  malwoverview ip shodan 8.8.8.8
  malwoverview ip abuse 185.220.100.243
  malwoverview ip greynoise 185.220.100.243
  malwoverview ip all 8.8.8.8

  # Shodan (independiente)
  malwoverview shodan ip 8.8.8.8
  malwoverview shodan search "apache"

  # Whois
  malwoverview whois domain example.com
  malwoverview whois ip 8.8.8.8

  # Correlación entre servicios
  malwoverview correlate hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585

  # Extracción de IOC (texto, PDF, correo electrónico o URL)
  malwoverview extract /home/remnux/malware/report.txt
  malwoverview extract /home/remnux/malware/report.pdf
  malwoverview extract https://example.com/threat-report.html

  # Escaneo con YARA
  malwoverview yara /home/remnux/rules/malware.yar /home/remnux/malware/samples/

  # Consultas de CVE en NIST
  malwoverview nist 1 "windows" --ncves 50
  malwoverview nist 2 CVE-2021-44228
  malwoverview nist 3 CRITICAL --ncves 50
  malwoverview nist 4 "remote code execution" --ncves 50

  # Consultas de VulnCheck
  malwoverview vulncheck 2 30
  malwoverview vulncheck 3 CVE-2021-44228

  # Subcomandos combinados con opciones globales
  malwoverview vt hash <sha256> --output-format json
  malwoverview ip all 8.8.8.8 --proxy socks5://127.0.0.1:9050
  malwoverview vt behavior <sha256> --attack-map

MODO INTERACTIVO (--interactive):

  malwoverview --interactive

  # Dentro del prompt (escribe "help" para ver la lista completa):
  vt hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585
  vt file /home/remnux/malware/sample.exe
  vt behavior 9d26e19b8fc5819b634397d48183637bacc9e1c62d8b1856b8116141cb8b4000
  vt batch /home/remnux/malware/hash_list.txt
  vt retrohunt submit /home/remnux/rules/
  vt retrohunt list
  vt retrohunt status 1712345678-abcdef0123456789
  vt livehunt notifications
  bazaar yara Windows_Trojan_Emotet
  bazaar yaradownload
  bazaar yaraextract
  bazaar dir /home/remnux/malware/samples/
  urlhaus batch /home/remnux/malware/hash_list.txt
  urlhaus payloads
  triage submit /home/remnux/malware/sample.exe
  triage pcap 220315-xmbp7sdbel
  malpedia ruleset tlp_white
  malpedia meta emotet
  malshare types
  malshare type PE32
  hybrid file /home/remnux/malware/sample.exe
  hybrid dir /home/remnux/malware/samples/
  threatfox malwarelist
  ip batch /home/remnux/malware/ip_list.txt
  ip multi 8.8.8.8
  ip all 8.8.8.8
  crtsh subdomains iana.org
  crtsh certs iana.org
  android ha
  android sendvt com.example.app
  yara /home/remnux/rules/ /home/remnux/malware/samples/
  iocs /home/remnux/malware/report.pdf
  peinfo /home/remnux/malware/samples/
  peinfo /home/remnux/malware/samples/ 7.5
  sigcheck /home/remnux/malware/suspicious.exe
  cache stats
  cache prune
  set attack on
  set enrich claude
  export json
  export csv results.csv          # la ruta de exportación debe estar dentro del directorio actual

MODO TUI (--tui):

  malwoverview --tui

  # Elige un servicio en el panel izquierdo, escribe la consulta y pulsa Enter.
  # F3 copia el resultado, F4 extrae un ID de él, F5 exporta los
  # resultados recopilados a json, F6 los exporta a csv, Ctrl+L limpia.
  # Ctrl+V (o Shift+Insert) pega el portapapeles en el cuadro de consulta desde
  # cualquier lugar del panel, por lo que se puede pegar un hash sin hacer clic
  # primero en el cuadro.
  # La lista de teclas se imprime sobre los resultados y se vuelve a escribir cada
  # vez que se limpia el panel, lo que incluye el inicio de cada búsqueda.
  # Mientras el cuadro de consulta tiene el foco, salir es Ctrl+Q, porque la propia Q
  # debe seguir siendo escribible.

OPCIONES DE VULNERABILIDADES:

  # Buscar vulnerabilidades de Windows
  malwoverview --nist 1 --NIST "windows" --ncves 50

  # Buscar vulnerabilidades de Apache
  malwoverview --nist 1 --NIST "apache" --ncves 30

  # Buscar vulnerabilidades de Chrome
  malwoverview --nist 1 --NIST "chrome" --ncves 25

  # Buscar vulnerabilidades de Chromium
  malwoverview --nist 1 --NIST "chromium" --ncves 25

  # Buscar vulnerabilidades de Linux
  malwoverview --nist 1 --NIST "linux" --ncves 25

  # Buscar vulnerabilidades de MacOS
  malwoverview --nist 1 --NIST "MacOS" --ncves 25

  # Buscar la vulnerabilidad Log4Shell
  malwoverview --nist 2 --NIST "CVE-2021-44228" 

  # Buscar la vulnerabilidad ProxyShell
  malwoverview --nist 2 --NIST "CVE-2021-34473" 

  # Buscar la vulnerabilidad Spring4Shell
  malwoverview --nist 2 --NIST "CVE-2022-22965" 

  # Buscar vulnerabilidades de severidad CRÍTICA
  malwoverview --nist 3 --NIST "CRITICAL" --ncves 50

  # Buscar vulnerabilidades de severidad ALTA
  malwoverview --nist 3 --NIST "HIGH" --ncves 40

  # Buscar vulnerabilidades de severidad MEDIA
  malwoverview --nist 3 --NIST "MEDIUM" --ncves 30

  # Buscar vulnerabilidades de omisión de autenticación
  malwoverview --nist 4 --NIST "authentication bypass" --ncves 30

  # Buscar vulnerabilidades de ejecución remota de código (RCE)
  malwoverview --nist 4 --NIST "remote code execution" --ncves 50

  # Buscar vulnerabilidades de inyección SQL
  malwoverview --nist 4 --NIST "sql injection" --ncves 25

  # Buscar vulnerabilidades de path traversal (CWE-22)
  malwoverview --nist 5 --NIST "CWE-22" --ncves 30

  # Buscar vulnerabilidades de inyección SQL (CWE-89)
  malwoverview --nist 5 --NIST "CWE-89" ---ncves 40

  # Buscar vulnerabilidades de Cross-Site Scripting (CWE-79)
  malwoverview --nist 5 --NIST "CWE-79" --ncves 35

  # Listar los índices disponibles de VulnCheck (nivel Community/Gratuito)
  malwoverview -vc 1

  # Obtener Known Exploited Vulnerabilities (KEV) - 30 resultados
  malwoverview -vc 2 -VC 30

  # Obtener Known Exploited Vulnerabilities (KEV) - 100 resultados
  malwoverview -vc 2 -VC 100

  # Buscar un CVE específico en la base de datos KEV
  malwoverview -vc 3 -VC CVE-2021-44228

  # Buscar un CVE específico en la base de datos KEV 
  malwoverview -vc 3 -VC CVE-2022-22965

  # Obtener enlace de descarga de respaldo para el conjunto de datos KEV de VulnCheck
  malwoverview -vc 4

  # Listar CVEs recientes de la base de datos de MITRE
  malwoverview -vc 5

  # Listar CVEs recientes de la base de datos de MITRE - 20 resultados
  malwoverview -vc 5 -VC 20

  # Listar CVEs recientes de la base de datos NIST NVD2
  malwoverview -vc 6

  # Listar CVEs recientes de la base de datos NIST NVD2 - 50 resultados
  malwoverview -vc 6 -VC 50

  # Buscar un CVE específico en la base de datos de MITRE (registros oficiales de CVE)
  malwoverview -vc 7 -VC CVE-2024-21412

  # Buscar un CVE específico en NIST NVD2 (puntuaciones CVSS, CWE, estado CISA KEV)
  malwoverview -vc 8 -VC CVE-2024-21412

QUÉ HAY DE NUEVO EN 8.1.0, CON EJEMPLOSTodo lo que esta versión añade o cambia, como comandos que puedes ejecutar. La versión narrativa de la misma lista es el bloque 8.1.0 en HISTORY, más abajo.

1. Opciones que cambiaron de número (lee esto primero)

El único cambio incompatible. Las cinco opciones de descarga de Hybrid Analysis hacían lo mismo, así que se fusionaron en una y las dos opciones posteriores bajaron:

  # Download a sample from Hybrid Analysis  (was -a 11, -a 12, -a 13, -a 14 or -a 15)
  malwoverview -a 11 -A 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979

  # Batch hash check from a file            (was -a 16)
  malwoverview -a 12 -A /home/remnux/malware/hashes.txt

  # Scan every file in a directory          (was -a 17)
  malwoverview -a 13 -A /home/remnux/malware/samples/

Todas las demás opciones mantuvieron su número. Todos los números nuevos son aditivos.

2. Análisis local sin clave de API y sin petición de red

  # Triage a directory: type, size, overlay, overlay size, entropy, signature
  malwoverview --peinfo /home/remnux/malware/samples/

  # Lower the bar for what counts as packed or encrypted (default 7.0)
  malwoverview --peinfo /home/remnux/malware/samples/ --entropy-threshold 6.5

  # Skip signature verification on a large sweep
  malwoverview --peinfo /home/remnux/malware/samples/ --no-signature

  # YARA now accepts a whole rules directory, scanned recursively
  malwoverview --yara /home/remnux/rules/ --yara-target /home/remnux/malware/samples/

3. Authenticode: ¿está firmado y es válida la firma?

  # One file: status, signer, issuer, certificate dates, thumbprint, serial
  malwoverview --sigcheck /home/remnux/malware/suspicious.exe

  # A whole directory, one row per file
  malwoverview --sigcheck /home/remnux/malware/samples/

Un archivo puede llevar varias firmas incrustadas — normalmente SHA-1 por compatibilidad más SHA-256 — y los firmantes suelen ser diferentes. La tabla marca las adicionales como (+N); ejecuta la forma de un solo archivo para listarlas todas. Qué firma decide el estado es seleccionable:

  # Strongest digest decides (default, and what Windows honours)
  malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode best

  # First in file order decides (what sigcheck.exe reports)
  malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode first

  # Every signature must verify (strictest)
  malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode all

  # Any one signature verifying is enough (most permissive)
  malwoverview --sigcheck /home/remnux/malware/driver.sys --sig-verify-mode any

Los propios datos de firma de VirusTotal también se muestran ahora, de modo que una consulta de hash informa de la cadena de firmantes, la fecha de firma y la huella digital de cada certificado:

  # Signature block from VirusTotal, by hash
  malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979

  # Same block when checking a local file
  malwoverview -v 1 -V /home/remnux/malware/suspicious.exe

4. Transparencia de certificados a través de crt.sh (sin clave de API)

  # Distinct DNS names seen in certificates issued for a domain
  malwoverview -ct 1 -CT example.com

  # The certificates themselves: identifier, issuer, common name, validity
  malwoverview -ct 2 -CT example.com

5. VirusTotal Retrohunt y Livehunt (requiere una clave empresarial)

  # Submit a Retrohunt job from a rules file or a rules directory
  malwoverview -v 14 -V /home/remnux/rules/hunting.yar

  # List your Retrohunt jobs, optionally filtered by status
  malwoverview -v 15
  malwoverview -v 15 -V finished

  # Status and progress of one job, then the files it matched
  malwoverview -v 16 -V 1234abcd-5678-90ef-1234-567890abcdef
  malwoverview -v 17 -V 1234abcd-5678-90ef-1234-567890abcdef

  # Create a Livehunt ruleset, list your rulesets, list notifications
  malwoverview -v 18 -V /home/remnux/rules/livehunt.yar
  malwoverview -v 19
  malwoverview -v 20

6. Más lugares para obtener reglas YARA y cómo pivotar sobre ellas

Una consulta de hash ahora lista las reglas YARA que coincidieron con la muestra, que es de donde sale el nombre de la regla para el siguiente comando:

  # 1. look a sample up: the report ends with the rules that matched it
  malwoverview -b 1 -B 3b89db05cd1e6283a5d23e32eb6a6c17d92953c80c93befa194a0c93a633c1b5

          tags:         elf Mirai upx-dec
          yara rules:
                        ELF_Mirai
                        linux_generic_ipv6_catcher
                        unixredflags3

  # 2. take one of those names and pull every other sample it matched
  malwoverview -b 13 -B ELF_Mirai

Los nombres de las reglas también viven en los propios conjuntos de reglas, que se pueden descargar y leer localmente:

  # Download the YARAify rule set from abuse.ch, then extract it.
  # Both use -O for the working directory; -b 15 finds the archive there.
  malwoverview -b 14 -O /home/remnux/rules/
  malwoverview -b 15 -O /home/remnux/rules/

El archivo llega como /home/remnux/rules/yaraify-rules.zip y se extrae en /home/remnux/rules/yaraify-rules/, un archivo .yar por regla. Ese directorio es el destino de --yara, y sus nombres de archivo son los nombres de las reglas:

  malwoverview --yara /home/remnux/rules/yaraify-rules/ --yara-target /home/remnux/malware/samples/

Un conjunto de reglas recopilado de muchos autores no compila correctamente contra todas las versiones de YARA. Los archivos con errores de sintaxis se listan y se omiten, y el escaneo se ejecuta con el resto: una ejecución del conjunto anterior compiló 548 de 557 archivos.

  # The complete Malpedia YARA ruleset for a TLP level
  malwoverview -m 9 -M white

7. Opciones que estaban rotas y ahora funcionan

  # -m 1 returned the family list; it now returns family meta information
  malwoverview -m 1

  # -l 6 lists the file types seen in the last 24 hours, -l 8 lists one of them
  malwoverview -l 6
  malwoverview -l 8 -L PE32

  # -ip 3 and -ip 7 used to be identical; -ip 3 is VirusTotal + OTX,
  # -ip 7 queries every configured service (IPInfo was never reached)
  malwoverview -ip 3 -IP 8.8.8.8
  malwoverview -ip 7 -IP 8.8.8.8

  # -j 8 (URLhaus batch hash check) was unreachable
  malwoverview -j 8 -J /home/remnux/malware/hashes.txt

8. Salida legible por máquina para todas las opciones

json y csv ahora funcionan en toda la herramienta en lugar de en un tercio de ella:

  malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979 --output-format json
  malwoverview --sigcheck /home/remnux/malware/samples/ --output-format csv
  malwoverview -b 6 -B 3 --output-format json

  # LLM enrichment reaches json and csv too, as a typed record
  malwoverview -v 8 -V 495c7e5513fa7766c236e76d8520139139fc4ad7203ddcb2ccdae17bdb691979 --enrich --output-format json

9. Mantener una consulta silenciosa y la salida segura para pegar

  # Do not resolve attacker-controlled hostnames to IP addresses
  malwoverview -j 2 -J http://malicious.example.com/payload.bin --no-resolve

  # Defang the extracted IOCs so the list can be pasted into a ticket
  malwoverview --extract-iocs /home/remnux/malware/report.txt --defang

  # The source can equally be a URL, so a published report can be read and
  # its IOCs defanged in one step
  malwoverview --extract-iocs https://example.com/threat-report.html --defang

  # A vendor blog is mostly navigation, analytics and minified JavaScript, so
  # the extractor skips <script>, <style> and <svg>, drops links back to the
  # source site and to known page furniture, and only reports a domain whose
  # last label is a real top-level domain
  malwoverview --extract-iocs https://www.fortinet.com/blog/threat-research/dprk-related-campaigns-with-lnk-and-github-c2

  # Turn all of that off and report every regex match in the raw source
  malwoverview --extract-iocs https://example.com/threat-report.html --no-ioc-filter

10. Control de caché

  malwoverview --cache-stats
  malwoverview --prune-cache
  malwoverview --clear-cache

11. Ambas superficies interactivas alcanzan todos los servicios

  # Command-line REPL
  malwoverview --interactive

  # Full-screen dashboard: 111 services, Ctrl+V pastes, F5 exports json,
  # F6 exports csv
  malwoverview --tui

QUÉ HAY DE NUEVO EN 8.0.0 A 8.0.5, CON EJEMPLOS

8.0.0 añadió mucho de una vez, así que los comandos están agrupados aquí por su finalidad en lugar de por número de opción. 8.0.1 a 8.0.5 fueron principalmente correcciones y están al final. Cuando 8.1.0 cambió posteriormente un número de opción, el comando siguiente usa el número actual e indica cuál era antes.

1. Cinco servicios nuevos

  # URLScan.io (-u): submit a URL, fetch a result by id, search,
  # then look up a domain or an IP
  malwoverview -u 1 -U https://example.com
  malwoverview -u 2 -U 019ce889-ab8d-768b-894e-3e5bf5401f8d
  malwoverview -u 3 -U task.tags:phishing
  malwoverview -u 4 -U example.com
  malwoverview -u 5 -U 8.8.8.8

  # Shodan (-s): a single IP, or a search query
  malwoverview -s 1 -S 8.8.8.8
  malwoverview -s 2 -S "apache"

  # AbuseIPDB (-ab): IP reputation
  malwoverview -ab 1 -AB 185.220.100.243

  # GreyNoise (-gn): background internet noise, or aimed at you?
  malwoverview -gn 1 -GN 185.220.100.243

  # Whois / RDAP (-wh): a domain, then an IP
  malwoverview -wh 1 -WH example.com
  malwoverview -wh 2 -WH 8.8.8.8

Los nuevos servicios de IP también son accesibles desde -ip, de modo que una misma dirección puede consultarse servicio por servicio, o a través de todos a la vez:

  malwoverview -ip 4 -IP 8.8.8.8
  malwoverview -ip 5 -IP 8.8.8.8
  malwoverview -ip 6 -IP 8.8.8.8
  malwoverview -ip 7 -IP 8.8.8.8

2. Un mismo hash en varios servicios con un solo comando

  malwoverview --correlate-hash ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585

3. Comprobaciones de hash por lotes y escaneos de directorios

  # Malware Bazaar: a file of hashes, then a directory of samples
  malwoverview -b 11 -B /home/remnux/malware/hash_list.txt
  malwoverview -b 12 -B /home/remnux/malware/samples/

  # Hybrid Analysis (8.0.0 numbered these -a 16 and -a 17)
  malwoverview -a 12 -A /home/remnux/malware/hash_list.txt
  malwoverview -a 13 -A /home/remnux/malware/samples/

  # Triage
  malwoverview -x 8 -X /home/remnux/malware/hash_list.txt
  malwoverview -x 9 -X /home/remnux/malware/samples/

4. Extracción de IOCs y escaneo con YARA

  # Pull hashes, IPs, URLs, domains, emails and CVEs out of a report
  malwoverview --extract-iocs /home/remnux/malware/report.txt
  malwoverview --extract-iocs /home/remnux/malware/report.pdf
  malwoverview --extract-iocs https://example.com/threat-report.html

  # Scan samples with YARA rules
  malwoverview --yara /home/remnux/rules/malware.yar --yara-target /home/remnux/malware/samples/

5. Enriquecimiento con LLM de cualquier resultado

  # Provider taken from the [LLM] section of .malwapi.conf
  malwoverview -v 8 -V <hash> --enrich

  # Override it per run: claude, gemini, openai or ollama
  malwoverview -v 8 -V <hash> --enrich --llm claude
  malwoverview --nist 2 --NIST CVE-2024-3400 --enrich --llm gemini

6. Salida estructurada, informes y mapeo ATT&CK

  malwoverview -v 8 -V <hash> --output-format json
  malwoverview -ip 1 -IP 8.8.8.8 --output-format csv

  malwoverview -v 12 -V <hash> --attack-map

  malwoverview -v 8 -V <hash> --report html --report-file /home/remnux/report.html
  malwoverview -v 8 -V <hash> --report pdf --report-file /home/remnux/report.pdf

7. Caché, proxy y verbosidad

  malwoverview -v 8 -V <hash> --no-cache
  malwoverview -v 8 -V <hash> --cache-ttl 86400
  malwoverview -ip 3 -IP 8.8.8.8 --proxy socks5://127.0.0.1:9050
  malwoverview -v 8 -V <hash> --quiet
  malwoverview -v 8 -V <hash> --verbose

8. Dos superficies interactivas

  malwoverview --interactive
  malwoverview --tui

9. Lo que 8.0.1 a 8.0.5 corrigieron, como comandos

  # 8.0.1: these take a file path again, not only a hash
  malwoverview -v 1 -V /home/remnux/malware/suspicious.exe
  malwoverview -a 1 -A /home/remnux/malware/suspicious.exe
  malwoverview -l 1 -L ab4d6a82cafc92825a0b88183325855f0c44920da970b42c949d5d5ffdcc0585

  # 8.0.2: batch IP check against VirusTotal, Premium then Public API
  malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt
  malwoverview -ip 8 -IP /home/remnux/malware/ip_list.txt -D 1

  # 8.0.2: Android scans work on current devices again, hashing with SHA256
  malwoverview -y 1
  malwoverview -y 2

  # 8.0.3 and 8.0.4: Claude enrichment works again and is rendered with colour
  malwoverview -v 8 -V <hash> --enrich --llm claude

  # 8.0.5: overlay and entropy in the directory check and the hash report
  malwoverview -d /home/remnux/malware/samples/
  malwoverview -v 8 -V <hash>

HISTORIAL

Versión 8.1.0:

  This version adds YARA hunting and local PE triage, repairs options
  that did not do what they announced, and includes a set of security
  fixes.

  ATTENTION: two options changed number. The five Hybrid Analysis download
  options (-a 11 to -a 15) are now a single option, -a 11. The batch hash
  check moved to -a 12 (it was -a 16) and the directory scan to -a 13 (it
  was -a 17). Nothing else changed number.

  NEW OPTIONS

        * --sigcheck: Authenticode signature checking of a file or a
          directory, with no API key and no network request. Reports VALID,
          TAMPERED, UNTRUSTED, EXPIRED, MALFORMED, INVALID, NONE or N/A with
          the signer, issuer and certificate dates. Every embedded signature
          is listed, each with its own digest algorithm, thumbprint and
          serial number. Verification needs
          pip install malwoverview[signature]; without it the status is
          PRESENT or NONE.

        * --sig-verify-mode any|first|all|best: which signature decides the
          status of a multi-signed file. Default best.

        * --no-signature: skips signature verification on large directories.

        * --peinfo and --entropy-threshold: local PE triage of a file or
          directory, listing file type, size, overlay, overlay size, entropy
          and signature status, highlighting files at or above the threshold
          (default 7.0). Recursive, no API key.

        * -ct 1|2 and -CT: Certificate Transparency through crt.sh, no API
          key. -ct 1 lists the DNS names seen in certificates issued for a
          domain, -ct 2 lists the certificates.

        * -v 14 to -v 20: VirusTotal Retrohunt and Livehunt. Submit a job,
          list jobs, follow a job, list matched files, create a ruleset, list
          rulesets and list notifications. Requires a premium key.

        * -b 13, -b 14 and -b 15: Malware Bazaar search by YARA rule name,
          and download and extraction of the YARAify rule set.

        * -m 9: download of the Malpedia YARA ruleset for a TLP level.

        * -l 8: lists the hashes of a MalShare file type given with -L.

        * -j 8: URLHaus batch hash check, which no option reached before.

        * --cache-stats, --prune-cache and --clear-cache.

        * --no-resolve: does not resolve or geolocate the host names shown by
          -j 2 and -j 3.

        * --defang: prints the IOCs listed by --extract-iocs as
          hxxp://example[.]com. Output only.

        * --no-ioc-filter: turns off the --extract-iocs noise filtering and
          reports every regex match in the raw source.

        * --yara now accepts a directory of rules, each file compiled in its
          own namespace. A file that fails to compile is reported and
          skipped.

  REPAIRED OPTIONS

        * -m 1 called the same endpoint as -m 5. It now retrieves the family
          meta information and accepts an optional filter with -M.

        * -l 6 was labelled "Composite(OLE)" and listed PDF samples. It now
          lists the file types seen in the last 24 hours with a count.

        * -ip 3 and -ip 7 produced identical output. -ip 3 now queries
          VirusTotal and AlienVault only; -ip 7 queries every remaining
          service, including IPInfo.

        * -l 1 wrote a zero byte file for every sample and reported success.
          Redirects are followed and an empty body is refused.

        * -a 6 to -a 10 and -y 4 always failed with "Requested URI - Not
          Found". Hybrid Analysis requests no longer go through the www host,
          whose redirect dropped the upload.

        * -b 14 answered HTTP 301. The rule set is fetched from the working
          address with the abuse.ch Auth-Key.

        * -v 20 reads the Livehunt notifications from the
          hunting_notification_files endpoint, which carries the sha256.

        * -b 6, -m 4 and the other options that consume an argument now
          require it. Eight of them stopped with a raw TypeError when it was
          omitted.

        * -A now accepts a native Windows path (-a 1 to -a 5), which was
          rejected as "Input contains invalid characters".

        * --report html, --report pdf and --enrich now work for
          --correlate-hash, --extract-iocs and --yara, which produced no
          report.

        * The Malpedia sample and rule downloads no longer end the program
          before the report and the json/csv export.

        * The validated form of every argument is now the one used. A URL
          written as hxxp://example[.]com was sent to the service still
          defanged, and paths such as ~/samples were not expanded.

        * -ip 2 (BGPView) is removed: its domain no longer resolves. The
          number is kept and reports the removal, pointing at -ip 1 and
          -ip 7. No other -ip number changed.

        * --defang is documented as applying to --extract-iocs only, which is
          the only option that reads it.

  NEW BEHAVIOUR

        * -y 1, -y 2 and -y 3 hash every APK of a package instead of the base
          APK alone. On the test device a scan went from 35 to 79 APKs.
          -y 4 and -y 5 report when the selected package is a split APK.

        * -b 1 lists the YARA rules that matched the sample, so a name can be
          passed to -b 13.

        * -v 1 and -v 8 show the signature block VirusTotal already returned:
          whether it verified, the signer and counter signer chains, the
          signing date and every certificate with its status, algorithm,
          dates, serial number and thumbprint.

        * --sigcheck and --peinfo report the certificate thumbprint, serial
          number and digest algorithm, in the report and in json and csv.

        * --extract-iocs no longer reports a web page's own code. On a vendor
          blog it returned 855 IOCs, 743 of them "domains" produced by
          minified JavaScript. Script, style, svg and noscript blocks are
          skipped, a domain is reported only when its last label is a real
          top-level domain, and links back to the source site and to page
          furniture are dropped: 855 IOCs became 16, keeping every sample
          hash and the command-and-control URLs. Suppression is counted and
          reported. Code-hosting, paste and messaging services are never
          suppressed.* --extract-iocs nombra el host y el tipo de fallo cuando una descarga
          falla, en lugar de imprimir la excepción cruda de urllib3.

        * Un 404 de GreyNoise Community se notifica como lo que es, que la
          dirección no es un escáner de internet, en lugar de como un error.

        * Un fallo de red ya no llega al usuario como un traceback de Python.
          43 bloques try solo capturaban ValueError, por lo que un error de
          conexión escapaba sin capturar. El host notificado se toma de la
          URL analizada, nunca del texto de la excepción.

        * Un fallo de TLS se explica: un handshake que se completa y luego
          se cierra, un certificado que falla la verificación, un puerto que
          responde sin TLS y un handshake rechazado reciben cada uno su
          propia línea. El texto de la excepción se lee pero nunca se
          imprime.

        * crt.sh usa una política de reintentos paciente (5 reintentos, 2
          segundos de backoff) porque responde a la misma URL con 200, 404 o
          502 a segundos de distancia. Todos los demás servicios mantienen la
          política anterior.

        * El HTTP 429 ahora se reintenta, como máximo tres veces, respetando
          ambas formas de Retry-After y sin esperar nunca más de 300
          segundos. Las subidas de muestras no se reintentan.

        * El cálculo de entropía lee el archivo en bloques en lugar de
          cargarlo entero. El valor notificado no cambia.

        * El escáner YARA ya no cambia el directorio de trabajo del proceso
          mientras compila las reglas.

        * La coincidencia de --attack-map es exacta en lugar de una búsqueda
          de subcadena, que había atribuido técnicas no relacionadas (una
          etiqueta vacía coincidía con las 691). Se extiende a los informes
          de Hybrid Analysis y a --correlate-hash.

        * A --enrich se le envían los registros recopilados en lugar del
          texto extraído del terminal, y ahora funciona con --output-format
          json y csv, donde antes se ignoraba silenciosamente.

        * Cada opción ahora produce registros para --output-format json y
          csv. Antes solo lo hacía un tercio de ellas.

        * Los resultados de MalShare se incluyen en json y csv.

        * Las secciones [INQUEST] y [VIRUSEXCHANGE] se eliminan de
          .malwapi.conf y del código que hay detrás de ellas.

        * La versión mínima de Python es 3.10, y los classifiers anuncian
          3.10 a 3.13.

  MODOS INTERACTIVO Y GRÁFICO

        * --interactive gana todos los comandos que antes solo tenía la línea
          de comandos: los informes de VirusTotal, subidas, informe de
          comportamiento, comprobación por lotes, Retrohunt y Livehunt; el
          imphash de Malware Bazaar, descarga, lote, directorio, búsqueda de
          reglas YARA y conjunto de reglas de YARAify; la descarga de
          payloads de URLHaus, búsqueda de firmas, lista de payloads,
          comprobación por lotes y feed; las submissions de Triage,
          descargas, informe dinámico, comprobaciones por lotes y de
          directorio; la meta de familias de Malpedia, lista de payloads y
          conjunto de reglas; los listados de tipos de archivo de MalShare;
          la submission de Hybrid Analysis, comprobaciones por lotes y de
          directorio; la lista de familias de ThreatFox; las consultas por
          lotes de IP y multiservicio; y crtsh, android, yara, iocs y cache.
          ATT&CK se conmuta con "set attack on|off".

        * --tui se reconstruye sobre el código de módulo usado por la línea
          de comandos en lugar de sobre su propia copia de cada llamada de
          servicio: 3013 líneas se convirtieron en 818, y la lista de
          servicios pasó de 37 a 111 entradas. Los resultados se exportan
          con F5 (json) y F6 (csv), algo que antes no soportaba en absoluto.

        * El pegado de --tui está corregido. Un hash pegado antes de hacer
          clic en el cuadro de consulta se descartaba sin mensaje, porque
          solo el widget enfocado recibe un pegado y el panel inicia en la
          lista de servicios. Ahora el pegado se captura en toda la ventana.

        * --tui gana Ctrl+V y Shift+Insert, que leen el portapapeles
          directamente para terminales que nunca envían un pegado. No se
          necesita ningún paquete de terceros.

        * La lista de teclas de --tui se vuelve a escribir cada vez que se
          limpia el panel de resultados, y se construye a partir de los
          propios enlaces de teclas. La barra de teclas mantiene Quit (como
          Ctrl+Q) y Paste mientras el cuadro de consulta tiene el foco, y sus
          etiquetas ya no repiten la tecla.

  INFORMES

        * --peinfo y --sigcheck ajustan sus columnas a los archivos que se
          están escaneando y nunca acortan el nombre de archivo, que
          comúnmente es el SHA256. Type y Signer permanecen limitados; un
          valor acortado lo es solo en pantalla.

        * Cada columna de tabla se mide en celdas de terminal en lugar de
          caracteres, por lo que un asunto de certificado CJK o un nombre de
          archivo ya no desalinean las columnas. El truncamiento se detiene
          en un límite de carácter.

        * Las reglas de una tabla ahora equivalen a la suma de sus columnas,
          los encabezados de columna y las reglas son neutros, una celda
          vacía lee n/a y el cierre cuenta con "[+] ". Aplicado a -j 8, -a
          12, -a 13, -b 11, -b 12, -b 13, -x 8, -x 9, -l 6, -s 2, -u 3,
          --yara, --peinfo y --sigcheck, cuyas reglas discrepaban de sus
          columnas por hasta 51 caracteres.

        * El mismo tratamiento se completó en todos los informes restantes.
          Ninguna regla se escribe ya como un número fijo: cada una se
          obtiene de un ancho con nombre o del encabezado bajo el que se
          encuentra, por lo que el título, la regla y las columnas ya no
          pueden discrepar. 88 reglas en 19 archivos, llegando a todos los
          servicios que consulta la herramienta.

        * 38 títulos de informes se rellenaban con 28 espacios finales,
          poniendo la línea del título más allá de la regla que tiene debajo.
          Invisible en pantalla y visible en cuanto la salida se canaliza,
          redirige o copia.

        * -b 6 a -b 10: los valores largos se ajustan al ancho del informe.
          Una URL de referencia o una lista de alias unida por comas ocupaba
          hasta 137 columnas bajo una regla de 100 columnas; en una ejecución
          de -b 6, 52 de 5936 líneas lo hacían.

        * -j 2 a -j 7: cada informe se dibuja con un ancho tomado de las
          columnas que realmente imprime, reemplazando los seis números
          diferentes (100, 104, 126, 130, 136 y 146) usados antes. -j 2
          también ajusta su columna de URL a partir de la respuesta y ya no
          imprime su encabezado dos veces.

        * -l 1 y -l 8 son tablas. El encabezado anunciaba tres columnas
          centradas a 75, 38 y 8 bajo una regla de 126, mientras que las
          filas siguientes imprimían "sha256: ... md5: ... type: ...", por lo
          que los encabezados no se alineaban con nada. Un error de MalShare
          ya no se imprime debajo de un encabezado que promete resultados
          que nunca llegan.

        * -ct 1 y -ct 2: el encabezado del informe se dibuja al ancho de la
          tabla que presenta, y las líneas de estado, error y recuento se
          ajustan a él como avisos con viñetas en lugar de sobrepasarlo.

        * -a 12 y -a 13: un hash que Hybrid Analysis nunca ha visto producía
          una fila en blanco y ahora lee not found, que es distinto del
          veredicto "unknown". Un fallo de HTTP se notifica como tal. -a 13
          ya no corta cada nombre de archivo a 40 caracteres.

        * -j 8: la columna Status mostraba la respuesta cruda, por lo que un
          acierto leía "ok". Ahora lee found, not found, invalid hash o bad
          request. La columna de hash sigue a los hashes del archivo.

        * -x 8 y -x 9: el nombre de archivo y las etiquetas se cortaban con
          un slice simple y ahora se truncan con puntos suspensivos, y la
          puntuación se colorea según el valor.

        * -b 11 y -b 12: la columna Signature tiene 17 columnas y una muestra
          desconocida lee n/a en lugar de dejar un hueco.

        * -s 2 es una tabla en lugar de cuatro líneas etiquetadas por host,
          cien bloques para una consulta. Las columnas son IP, Port, Country,
          Product, Vulns y Organization. El banner crudo se reemplaza por
          Product, que es lo que Shodan parseó del banner o del encabezado
          Server; el banner completo sigue llegando a json y csv. Vulns es el
          número de CVEs que Shodan lista contra el host.

        * -u 3: la columna Score siempre era cero, porque el endpoint de
          búsqueda no devuelve veredictos en absoluto y el código
          predeterminaba el valor; los registros json y csv llevaban
          "malicious": "False" para cada resultado de una consulta de
          phishing. Ambos campos han desaparecido, reemplazados por Age(d),
          la antigüedad del dominio en días, coloreada según el valor. Las
          celdas se truncan con puntos suspensivos en lugar de cortarse, y la
          columna IP ya no parte una dirección IPv6 por la mitad.

        * -u 2: el veredicto, la puntuación, las categorías, las etiquetas y
          las marcas se resaltan en lugar de dibujarse como el tipo MIME, los
          valores se ajustan en lugar de salirse de la pantalla, y las fechas
          del certificado se muestran como UTC en lugar de segundos epoch
          crudos. El título de la página ya no se corta a 80 caracteres.

        * -u 1: la nota de cierre se prefija con "[+] ", se dibuja como un
          aviso en lugar de como un campo más, y lleva el UUID del escaneo
          recién enviado para que el comando de recuperación se pueda copiar.

        * --correlate-hash, -wh 1 y -wh 2 ajustan sus valores, con las
          continuaciones alineadas bajo la primera línea. Un estado WHOIS
          alcanzaba 187 columnas bajo una regla de 100, y los IDs ATT&CK de
          un conjunto de pulsos alcanzaban 200. El SHA512 se divide entre
          líneas; los registros mantienen cada valor en una sola línea.

        * --yara ya no imprime los errores de compilación por archivo, que
          son una propiedad del conjunto de reglas más que de las muestras y
          empujaban el informe fuera de la pantalla. El recuento permanece en
          el resumen y el detalle está disponible con --verbose. Las
          columnas File y Rule se dimensionan a partir de su contenido,
          porque cortar cualquiera de ellas rompe el enlace de vuelta a la
          muestra o a la regla.

        * El bloque de certificado de -v 1 y -v 8 se ajusta a 120 columnas.
          Un estado es una oración por problema unida con comas y alcanzaba
          233 caracteres en una línea.

        * La salida de --enrich se ajusta al ancho de la regla que tiene
          encima, con las continuaciones indentadas bajo un marcador de
          lista. Los registros json y csv mantienen la respuesta sin ajustar.

        * -y 1 notifica su inventario APK al final de la tabla en lugar de
          encima de ella, prefijado con "[+] " en el color neutro. Las filas
          las imprime un hilo por paquete y esos hilos nunca se unían fuera
          de Windows, por lo que la línea ahora se imprime después de que se
          unen. -y 2 y -y 3 se tratan de la misma manera.

        * -ip 3 y -ip 7: las dos notas de referencias cruzadas se prefijan
          con "[+] ", donde antes se leían como parte de los datos que tienen
          encima.

        * Un archivo de reglas YARA que se omite ahora informa del motivo. La
          ruta ocupaba toda la línea y la razón se cortaba.

        * La salida json y csv de --correlate-hash, --extract-iocs y --yara
          ya no comienza con una línea en blanco.

        * Los informes ya no se imprimen en la salida estándar junto con el
          json o el csv, lo que hacía imposible parsear el resultado, y
          veintinueve funciones ya no terminan el programa antes de la
          exportación. El texto va al error estándar cuando un comando no
          produce ningún registro, de modo que un fallo se puede distinguir
          de un resultado vacío.

        * El csv escrito en la salida estándar en Windows ya no sigue cada
          fila con una en blanco, y tanto el json como el csv se escriben en
          UTF-8 en lugar de la codificación de la consola.

        * El csv escrito por "export csv" en el modo interactivo ya no
          termina cada línea con dos retornos de carro en Windows.

        * Un certificado que contiene caracteres que la consola no puede
          representar ya no termina la ejecución con UnicodeEncodeError.

        * Una secuencia de escape inválida en la búsqueda de familias de
          PolySwarm ya no emite un SyntaxWarning.

        * Una caché ATT&CK truncada o corrupta ya no falla con "Error while
          connecting to Virus Total!". Se detecta, se descarga de nuevo y se
          escribe atómicamente.

        * Una submission de Hybrid Analysis rechazada ya no se detiene con un
          KeyError; se imprime la razón dada por el servicio.

        * 43 manejadores alrededor de una petición solo capturaban ValueError,
          por lo que un fallo de red aún podía llegar al usuario como un
          traceback de Python. Ahora también capturan los errores de petición
          y nombran el servicio y el host. El mensaje nunca contiene el texto
          de la excepción, porque MalShare y Shodan llevan la clave API en la
          URL.

        * Siete de esos manejadores en URLHaus eran inalcanzables: un
          manejador más amplio por encima de ellos capturaba el fallo primero,
          no imprimía nada y salía. -j 7 contra un servicio inalcanzable
          imprimía un encabezado, una regla y nada más, lo que se lee
          exactamente como una búsqueda que no encontró nada.

        * --defang ahora también desactiva la línea Source del informe de
          extracción de IOC, de modo que todo el informe se puede pegar en
          algún lugar seguro. Una ruta de archivo local se deja intacta, y el
          registro exportado mantiene el valor real en ambos casos.

        * La lista SUBCOMMANDS en este archivo anunciaba "ip bgp", eliminado
          en esta versión, omitía "ip batch" y "urlhaus batch", y listaba un
          subcomando urlscanio que nunca ha existido. URLScan.io es accesible
          a través de -u.

  COLORES

        * Sobre un fondo claro ya no se usa ni cian ni azul claro, solo azul.
          Sobre un fondo oscuro ambos siguen en uso. Esto cambió 298 lugares
          en 16 archivos, incluido el color compartido de info().

        * Una auditoría de todo el paquete encontró 26 lugares más que
          rompían la regla, algunos dentro de una prueba de fondo y algunos
          coloreados una vez para ambos fondos. El verde sobre oscuro ahora
          es verde claro.

        * El color neutro nunca se aplicaba en Windows con un fondo oscuro:
          se escribía como una secuencia de escape extendida de 256 colores,
          que el conversor colorama solo entiende como códigos básicos, por
          lo que se descartaba y el color anterior permanecía en vigor. Cada
          regla de tabla, encabezado de columna y aviso con viñetas se veía
          afectado.

        * -x 8 y -x 9: la columna Tags es azul claro sobre oscuro y azul
          sobre claro. Usaba el mismo tono que la columna Hash a su lado.

        * -b 1: las etiquetas de campo son cian claro sobre oscuro y azul
          sobre claro, coincidiendo con todos los demás informes; el fondo
          claro usaba verde.

        * -j 8: la columna de hash es púrpura claro sobre oscuro y azul
          sobre claro. La columna de estado es gris hasta que hay algo que
          notificar.

        * -ab 1: las etiquetas de campo son azul claro sobre oscuro y azul
          sobre claro.

        * -y 1: la columna Package es azul claro sobre oscuro.

        * -y 2 y -y 3: la columna Hash es rosa sobre oscuro y púrpura sobre
          claro.

        * -s 2: la columna Product es azul claro sobre oscuro y cian sobre
          claro.

  Los cambios siguientes son correcciones de seguridad. Ninguno de ellos
  cambia ninguna sintaxis de comando.

        * Corrige la inyección de secuencias de escape de terminal
          provenientes de las respuestas de los servicios (ALTA). Los campos
          controlados por el atacante impresos en el terminal (los datos de
          comportamiento y nombres de muestra de VirusTotal, los nombres de
          archivo, firmas y etiquetas de Malware Bazaar y URLHaus, los
          nombres y descripciones de pulsos de AlienVault OTX, los campos de
          ThreatFox y Hybrid Analysis) podían mover el cursor y sobrescribir
          un veredicto ya impreso, establecer el título de la ventana,
          escribir en el portapapeles o limpiar la pantalla. Cada respuesta
          JSON ahora se sanitiza en cuanto se parsea.

        * Corrige la misma inyección de secuencias de escape en el modo
          gráfico (ALTA). --tui parseaba las respuestas de los servicios en
          dieciséis lugares, ninguno de ellos sanitizado. Ya no parsea
          ninguna respuesta.

        * Corrige la inyección de secuencias de escape de terminal
          provenientes de la línea de comandos y de los archivos de entrada
          (MEDIA). -B, -X, -TR, -S, -M, -L, -NIST y los demás argumentos de
          texto libre aceptaban ESC, el CSI de 8 bits y la tecla de retroceso,
          y los validadores devolvían un valor rechazado al terminal sin
          limpiarlo antes. Esto afectaba solo a Linux y macOS.

        * Corrige la inyección de secuencias de escape de terminal desde
          tres fuentes más (MEDIA): los valores extraídos por --extract-iocs,
          cuyo patrón de URL excluía los espacios en blanco pero no los demás
          caracteres de control; los campos WHOIS, que llegan como texto
          plano escrito por el registrador y el registrante; y el sha256 leído
          de un dispositivo Android conectado por USB, que ahora se comprueba
          contra una allowlist de 64 caracteres hexadecimales.

        * Corrige una denegación de servicio en --extract-iocs (MEDIA). El
          manejo de HTML eliminaba los bloques script, style, svg y comment
          con una expresión regular perezosa, que es cuadrática cuando la
          etiqueta de apertura nunca se cierra: 50.000 etiquetas script sin
          cerrar en 400 KB tardaban 158 segundos, y la opción lee hasta 10 MB
          de una URL. Los bloques ahora se eliminan con un único escaneo
          hacia adelante.

        * Corrige una posible denegación de servicio en la extracción de IOC
          (BAJA/MEDIA): las expresiones regulares de dominio y correo podían
          tardar muchísimo en un documento manipulado. El texto ahora se
          divide en tokens limitados antes de la coincidencia, y los IOC
          extraídos no cambian.

        * Corrige la inyección de fórmulas CSV en los informes exportados
          (MEDIA). Los valores que comienzan con "=", "+", "-", "@" o una
          tabulación se ejecutaban como fórmulas en Excel y LibreOffice.
          Ahora se prefijan con una comilla simple y se eliminan los saltos
          de línea incrustados.

        * Corrige la inyección de fórmulas CSV en la fila de encabezado de
          los informes exportados (BAJA). Los nombres de columna se toman de
          la respuesta del servicio y se escribían sin la protección
          anterior.

        * Corrige las secuencias de escape que llegaban al terminal a través
          de un mensaje de error en los modos interactivo y gráfico (BAJA).
          Ambos imprimían el texto de una excepción no manejada sin
          limpiarlo.

        * Corrige el DNS rebinding en --extract-iocs (MEDIA). La dirección
          que se validaba ahora es la dirección a la que se conecta, mientras
          que el nombre de host se mantiene en el encabezado Host y en el SNI
          TLS. Los nombres de host que no se pueden resolver se rechazan. Las
          peticiones hechas a través de un proxy no se fijan.

        * Corrige una omisión de la protección de direcciones privadas
          mediante direcciones IPv6 mapeadas a IPv4 como ::ffff:127.0.0.1
          (MEDIA). Las direcciones multicast y no especificadas también se
          rechazan ahora.* Corrige la exposición de claves de API en los mensajes de error (MEDIO). Las
          claves de Malshare y Shodan se reemplazan por [REDACTED], y los
          errores de conexión de Malshare se manejan en lugar de lanzar una
          excepción.

        * Añade un tiempo de espera predeterminado de 15 segundos para conectar y 180 segundos para
          leer en cada solicitud HTTP que no establezca el suyo propio (MEDIO).

        * Deja de enviar la ruta local completa de la muestra a VirusTotal
          (BAJO/MEDIO). Solo se envía el nombre del archivo con -v 9.

        * Rechaza las rutas APK que contengan ".." durante los escaneos de Android (BAJO).

        * Sanea el nombre de archivo utilizado en el envío a Triage (BAJO).

        * Elimina todas las secuencias de escape de la salida del enriquecimiento LLM y
          ya no solo las de color (BAJO).

        * Avisa cuando .malwapi.conf es legible por otros usuarios y sugiere
          "chmod 600" (Linux y macOS).

Versión 8.0.5:

  Esta versión:

        * Añade informes de overlay y entropía a las opciones de VirusTotal: la
          comprobación de directorio (-d) gana una columna "Overlay" (SÍ/NO, o N/A para
          archivos que no son PE) y una columna "Ent" (0.00 a 8.00), el informe de archivo
          (-v 1/2/3) gana el overlay, su tamaño en KB/MB y la entropía,
          y el informe de hash (-v 8) gana el overlay y el tamaño obtenidos de
          los datos pe_info de VirusTotal sin descargar la muestra. La entropía
          es la entropía por sección más alta del PE, la mejor señal para
          secciones empaquetadas o cifradas, con respaldo a la entropía de
          Shannon de todo el archivo para archivos que no son PE. "AV Detection" se renombra a
          "AV" y la tabla de -d se realinea.

Versión 8.0.4:

  Esta versión:

        * Renderiza el informe de enriquecimiento LLM con color en lugar de
          Markdown sin procesar: los encabezados y los términos clave en
          **negrita** se resaltan y se eliminan los símbolos de marcado. Sobre
          un fondo oscuro, el texto del cuerpo usa un tono casi blanco mientras
          que los encabezados mantienen sus acentos azul/morado/cian. La CLI,
          el REPL y la TUI comparten el motor de renderizado, y los prompts
          piden al modelo esa estructura para que se mantenga coherente.

Versión 8.0.3:

  Esta versión:

        * Corrige el enriquecimiento LLM de Claude (Anthropic), que fallaba en
          cada llamada porque el nombre del modelo estaba fijado a un modelo
          retirado. Ahora se establece mediante CLAUDE_MODEL en la sección [LLM]
          de .malwapi.conf, junto con GEMINI_MODEL / OPENAI_MODEL /
          OLLAMA_MODEL, y el valor predeterminado es claude-opus-4-8. Claude
          también es ahora el proveedor predeterminado, y la corrección cubre
          la CLI, el REPL y la TUI.

Versión 8.0.2:

  Esta versión:

        * Introduce una comprobación de IP por lotes contra VirusTotal (-ip 8 / "ip
          batch"), que lee una dirección IP por línea de un archivo e
          imprime la dirección IP, el país, el propietario de AS y la proporción
          de detección. Use -D 1 para la API pública, que espera 61 s cada 4 IP
          para respetar el límite de tasa, o -D 0 para Premium (predeterminado).

        * Corrige las opciones de escaneo de dispositivos Android (-y 1, -y 2 y -y 3), que
          habían dejado de funcionar en las versiones actuales de Android. El

Read more

Categorías