Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

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

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

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
malcom — Malcom - Analizador de Comunicaciones de Malware | Kitploit
Herramientas/GitHubGitHub/tomchop/malcom
Forensia de RedAnálisis de MalwareInteligencia de Amenazas
GitHubtomchop/malcom

malcom

Malcom - Analizador de Comunicaciones de Malware

Ver Repositorio
1.2k21611hace 8 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Malcom - Analizador de Comunicación de Malware

Malcom es una herramienta diseñada para analizar la comunicación de red de un sistema utilizando representaciones gráficas del tráfico de red y cotejarlas con fuentes de malware conocidas. Esto resulta útil al analizar cómo ciertas especies de malware intentan comunicarse con el exterior.

  • ¿Qué es Malcom?
  • Guía rápida
  • Instalación
  • Opciones de configuración
  • Instancia Docker
  • Nota rápida sobre la interceptación TLS
  • Entorno
  • Feeds
  • Especificaciones técnicas
  • Hoja de ruta
  • Descargo de responsabilidad
  • Licencia

¿Qué es Malcom?

Malcom puede ayudarle a:

  • detectar servidores centrales de comando y control (C&C)
  • comprender redes peer-to-peer
  • observar infraestructuras DNS fast-flux
  • determinar rápidamente si un artefacto de red es 'conocido-malo'

El objetivo de Malcom es hacer que el análisis de malware y la recopilación de inteligencia sean más rápidos al proporcionar una versión legible para humanos del tráfico de red originado desde un host o red determinados. Convierta la información del tráfico de red en inteligencia procesable más rápido.

Consulte la wiki para obtener una guía de inicio rápido con algunas capturas de pantalla y un tutorial sobre cómo agregar sus propios feeds.

Si necesita ayuda o desea contribuir, no dude en unirse a la lista de correo o intente contactar a alguien en IRC (#malcom en freenode.net, está bastante tranquilo pero siempre hay alguien cerca). También puede contactarme en Twitter @tomchop_

Aquí hay un ejemplo de gráfico para el host tomchop.me nodes-tomchop.png

Vista del conjunto de datos (filtrada para mostrar solo IPs) dataset-view.png

Guía rápida

  • Instalar
  • Asegúrese de que mongodb y redis-server estén ejecutándose
  • Eleve sus privilegios a root (sí, lo sé, consulte el descargo de responsabilidad)
  • Inicie el servidor web usando la configuración predeterminada con ./malcom.py -c malcom.conf (o vea las opciones con ./malcom.py --help) ** Para un archivo de configuración de ejemplo, puede copiar malcom.conf.example a malcom.conf ** El puerto predeterminado es 8080 ** Alternativamente, ejecute los feeds desde celery. Consulte la sección feeds para obtener detalles sobre cómo hacer esto.

Instalación

Malcom está escrito en Python. Siempre que tenga las bibliotecas necesarias, debería poder ejecutarlo en cualquier plataforma. Recomiendo encarecidamente el uso de entornos virtuales de Python (virtualenv) para no estropear las bibliotecas de su sistema.

Lo siguiente fue probado en Ubuntu Server 14.04 LTS:

  • Instale git, python y libevent libs, mongodb, redis, y otras dependencias

    root@kitploit:~
      $ sudo apt-get install build-essential git python-dev libevent-dev mongodb libxml2-dev libxslt-dev zlib1g-dev redis-server libffi-dev libssl-dev python-virtualenv
    
  • Clone el repositorio Git:

    root@kitploit:~
      $ git clone https://github.com/tomchop/malcom.git malcom
    
  • Cree su virtualenv y actívelo:

    root@kitploit:~
      $ cd malcom
      $ virtualenv env-malcom
      $ source env-malcom/bin/activate
    
  • Obtenga e instale scapy:

    root@kitploit:~
      $ cd .. 
      $ wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
      $ tar xvzf scapy-latest.tar.gz
      $ cd scapy-2.1.0
      $ python setup.py install
    
  • Aún desde su virtualenv, instale los paquetes de Python necesarios desde el archivo :

Opciones de configuración

Base de datos

De forma predeterminada, Malcom intentará conectarse a una instancia local de mongodb y creará su propia base de datos, llamada malcom. Si esto está bien para usted, puede omitir los siguientes pasos. De lo contrario, debe editar la sección database de su archivo malcom.conf.

Establecer otro nombre para su base de datos Malcom

De forma predeterminada, Malcom usará una base de datos llamada malcom. Puede cambiar este comportamiento editando el archivo malcom.conf y estableciendo la directiva name de la sección database a su gusto.

root@kitploit:~
    [database]
    ...
    name = my_malcom_database
    ...
Base(s) de datos remota(s)

De forma predeterminada, Malcom intentará conectarse a localhost, pero su base de datos puede estar en otro servidor. Para cambiar esto, simplemente establezca la directiva hosts. Puede usar nombres de host o direcciones IPv4/v6 (solo tenga en cuenta que debe encerrar las direcciones IPv6 entre [ y ], por ejemplo, [::1]).

Si desea usar una base de datos independiente en el host my.mongo.server, simplemente establezca:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo.server
    ...

También puede especificar el puerto en el que mongod está escuchando especificándolo después del nombre/dirección de su servidor, separado con :

root@kitploit:~
    [database]
    ...
    hosts = localhost:27008
    ...

Y si está usando un ReplicaSet que agrupa my.mongo1.server y my.mongo2.server, simplemente establezca:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo1.server,my.mongo2.server
    ...
Usar autenticación

Es posible que haya configurado sus instancias de mongod para exigir conexiones autenticadas. En ese caso, debe establecer el nombre de usuario que el controlador deberá usar para conectarse a su instancia de mongod. Para hacer esto, simplemente agregue una directiva username a la sección database en el archivo malcom.conf. También es posible que deba establecer la contraseña con la directiva password. Si el usuario no tiene contraseña, simplemente ignore (es decir, comente) la directiva password.

root@kitploit:~
    [database]
    ...
    username = my_user
    password = change_me
    ...

Si el usuario no está vinculado a la base de datos malcom sino a otra (por ejemplo, la base de datos admin para un usuario administrador), deberá establecer la directiva authentication_database con el nombre de esa base de datos.

root@kitploit:~
    [database]
    ...
    authentication_database = some_other_database
    ...
Caso de un conjunto de réplicas

Al usar un conjunto de réplicas, es posible que deba asegurarse de estar conectado al correcto. Para eso, simplemente agregue la directiva replset para forzar al controlador de mongo a verificar el nombre del conjunto de réplicas

root@kitploit:~
    [database]
    ...
    replset = my_mongo_replica
    ...

De forma predeterminada, Malcom intentará conectarse al nodo primario del conjunto de réplicas. Es posible que necesite/quiera cambiar eso. Para cambiar ese comportamiento, simplemente establezca la directiva read_preference. Consulte la documentación de mongo para obtener más información.

root@kitploit:~
    [database]
    ...
    read_preference = NEAREST
    ...

Las preferencias de lectura admitidas son:

  • PRIMARY
  • PRIMARY_PREFERRED
  • SECONDARY
  • SECONDARY_PREFERRED
  • NEAREST

Instancia Docker

La forma más rápida de comenzar es extraer la imagen Docker del repositorio público de Docker. Para extraer compilaciones Docker más antiguas y estables, use tomchop/malcom en lugar de tomchop/malcom-automatic.

root@kitploit:~
    $ sudo docker pull tomchop/malcom-automatic
    $ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic

Conectarse a http://<docker_host>:8080/ debería ponerlo en marcha.

Nota rápida sobre la interceptación TLS

Malcom ahora admite la interceptación TLS. Para que esto funcione, debe generar algunas claves en Malcom/networking/tlsproxy/keys. Consulte el archivo KEYS.md allí para obtener más información sobre cómo hacer esto.

Asegúrese también de tener IPtables (ya debería tenerlo) y permisos para hacer reenvío de puertos con él (generalmente necesita ser root para eso).

Puede hacer esto usando el conveniente script forward_port.sh. Por ejemplo, para interceptar todas las comunicaciones TLS hacia el puerto 443, use forward_port.sh 443 9999. Luego, deberá indicarle a malcom que ejecute un proxy de interceptación en el puerto 9999.

Espere que este proceso se automatice en versiones futuras.

Entorno

Malcom fue diseñado y probado en una máquina virtual Ubuntu Server 14.04 LTS.

Si está acostumbrado a hacer análisis de malware, probablemente ya tenga montones de máquinas virtuales ejecutándose en un sistema operativo anfitrión. Simplemente instale Malcom en una nueva VM y enrute las conexiones de sus otras VM a través de Malcom. Use enable_routing.sh para activar el enrutamiento/NAT en la VM donde se ejecuta Malcom. Necesitará agregar una tarjeta de red adicional al sistema operativo invitado.

Mientras reciba datos de red de capa 3, Malcom puede desplegarse en cualquier lugar. Aunque no se recomienda usarlo en redes de alta disponibilidad (no fue diseñado para ser rápido, consulte el descargo de responsabilidad), puede tenerlo ejecutándose al final del puerto espejo de su switch o en su puerta de enlace.

Feeds

Para lanzar una instancia de Malcom que SOLO obtenga información de los feeds, ejecute Malcom con la opción --feeds o ajuste el archivo de configuración.

Su base de datos debería poblarse automáticamente. Si puede profundizar en el código, agregar feeds es bastante sencillo (asumiendo que genera objetos Evil). Puede encontrar un feed de ejemplo en /feeds/zeustracker. Un tutorial más detallado está disponible aquí.

También puede usar celery para ejecutar feeds. Asegúrese de que celery esté instalado ejecutando $ pip install celery desde su virtualenv. Luego puede usar celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12 para lanzar el proceso de alimentación con 12 trabajadores simultáneos.

Especificaciones técnicas

Malcom fue escrito mayormente desde cero, en Python. Utiliza los siguientes frameworks para funcionar:

  • flask - un framework web ligero de Python
  • mongodb - una base de datos NoSQL. Se interconecta con Python mediante pymongo
  • redis - un almacén avanzado de clave-valor en memoria
  • d3js - una biblioteca JavaScript que produce impresionantes gráficos dirigidos por fuerza (https://github.com/mbostock/d3/wiki/Gallery)
  • bootstrap - un framework CSS que eventualmente matará el diseño web, pero hace que sea extremadamente fácil "webizar" rápidamente aplicaciones que solo funcionarían a través de un símbolo del sistema.

Hoja de ruta

Colaboración - La dirección principal que quiero que tome esta herramienta es que se vuelva colaborativa. Tengo algunas ideas para esto, y creo que se volverá 100 veces más útil una vez que se implemente el intercambio de datos.

Extensibilidad - La otra cosa que quiero incluir en la herramienta es la capacidad de extenderla más fácilmente. No tengo las mismas necesidades que todos los demás, y esta herramienta fue concebida pensando en mis necesidades. Ahora puede personalizar Malcom agregando nuevos feeds.

Una vez que la colaboración y la extensión estén en marcha, creo que esto será útil para más de un respondedor de incidentes. :-)

Descargo de responsabilidad

Esta herramienta fue codificada durante mi tiempo libre. Como una gran cantidad de herramientas que descargamos y usamos a diario, no recomendaría usarla en un entorno de producción donde la estabilidad y confiabilidad de los datos sean IMPRESCINDIBLES.

  • Puede estar rota, tener brechas de seguridad (ejecutarla como root en entornos no controlados probablemente no sea una buena idea), o no funcionar en absoluto.
  • Está escrita en Python, así que no espere que sea ultra rápida o que maneje grandes cantidades de datos fácilmente.
  • No soy programador, así que no espere ver hermoso código pitónico en todas partes. Ni muchos comentarios.

Está en etapas tempranas de desarrollo, lo que significa "funciona para mí". Eres libre de compartirlo, mejorarlo, solicitar pull requests.

Licencia

Malcom - Malware communications analyzer Copyright (C) 2013 Thomas Chopitea

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Tenga en cuenta que Redis, MongoDB, d3js, Maxmind y Bootstrap (y otras bibliotecas de terceros incluidas en Malcom) pueden tener sus propias licencias compatibles con GPL.

Descargar herramienta
requirements.txt
root@kitploit:~
  $ cd ../malcom
  $ pip install -r requirements.txt
  • Para que la geolocalización IP funcione, debe descargar la base de datos de Maxmind y extraer el archivo en el directorio malcom/Malcom/auxiliary/geoIP. Puede obtener la base de datos gratuita de Maxmind (y por lo tanto más o menos precisa) desde el siguiente enlace: http://dev.maxmind.com/geoip/geoip2/geolite2/:

    root@kitploit:~
      $ cd Malcom/auxiliary/geoIP
      $ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
      $ gunzip -d GeoLite2-City.mmdb.gz
      $ mv GeoLite2-City.mmdb GeoIP2-City.mmdb
    
  • Lance el servidor web desde el directorio malcom usando ./malcom.py. Consulte ./malcom.py --help para conocer la interfaz y los puertos de escucha.

    • Para empezar, puede copiar el archivo malcom.conf.example a malcom.conf y ejecutar ./malcom.py -c malcom.conf