
Malcom - Analizador de Comunicaciones 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.
Malcom puede ayudarle a:
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

Vista del conjunto de datos (filtrada para mostrar solo IPs)

mongodb y redis-server estén ejecutándose./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.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
$ 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:
$ git clone https://github.com/tomchop/malcom.git malcom
Cree su virtualenv y actívelo:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
Obtenga e instale scapy:
$ 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 :
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.
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.
[database]
...
name = my_malcom_database
...
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:
[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 :
[database]
...
hosts = localhost:27008
...
Y si está usando un ReplicaSet que agrupa my.mongo1.server y my.mongo2.server, simplemente establezca:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
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.
[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.
[database]
...
authentication_database = some_other_database
...
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
[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.
[database]
...
read_preference = NEAREST
...
Las preferencias de lectura admitidas son:
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.
$ 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.
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.
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.
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.
Malcom fue escrito mayormente desde cero, en Python. Utiliza los siguientes frameworks para funcionar:
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. :-)
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.
Está en etapas tempranas de desarrollo, lo que significa "funciona para mí". Eres libre de compartirlo, mejorarlo, solicitar pull requests.
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.
requirements.txt $ 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/:
$ 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.
malcom.conf.example a malcom.conf y ejecutar ./malcom.py -c malcom.conf