
Malcom - Malware-Kommunikationsanalysator
Malcom ist ein Werkzeug, das entwickelt wurde, um die Netzwerkkommunikation eines Systems mittels grafischer Darstellungen des Netzwerkverkehrs zu analysieren und mit bekannten Malware-Quellen abzugleichen. Dies ist nützlich bei der Analyse, wie bestimmte Malware-Arten versuchen, mit der Außenwelt zu kommunizieren.
Malcom kann Ihnen helfen:
Das Ziel von Malcom ist es, Malware-Analyse und Nachrichtenbeschaffung schneller zu machen, indem eine menschenlesbare Version des von einem bestimmten Host oder Netzwerk ausgehenden Netzwerkverkehrs bereitgestellt wird. Wandeln Sie Netzwerkverkehrsinformationen schneller in umsetzbare Erkenntnisse um.
Schauen Sie sich das wiki für einen Schnellstart mit einigen schönen Screenshots und ein Tutorial zum Hinzufügen eigener Feeds an.
Wenn Sie Hilfe benötigen oder einen Beitrag leisten möchten, können Sie gerne der Mailingliste beitreten oder versuchen, jemanden im IRC zu erreichen (#malcom on freenode.net, es ist ziemlich ruhig, aber es ist immer jemand da). Sie können mich auch auf Twitter kontaktieren @tomchop_
Hier ist ein Beispielgraph für den Host tomchop.me

Datensatzansicht (gefiltert, um nur IPs anzuzeigen)

mongodb und redis-server laufen./malcom.py -c malcom.conf (oder sehen Sie Optionen mit ./malcom.py --help)
** Für eine Beispielkonfigurationsdatei können Sie malcom.conf.example nach malcom.conf kopieren
** Standardport ist 8080
** Alternativ können Sie die Feeds von celery aus ausführen. Siehe den Abschnitt Feeds für Details zur Vorgehensweise.Malcom ist in Python geschrieben. Vorausgesetzt, Sie haben die notwendigen Bibliotheken, sollten Sie es auf jeder Plattform ausführen können. Ich empfehle dringend die Verwendung von Python-Virtualenvs (virtualenv), um Ihre Systembibliotheken nicht zu beeinträchtigen.
Das Folgende wurde auf Ubuntu Server 14.04 LTS getestet:
Installieren Sie git, python und libevent-Bibliotheken, mongodb, redis und andere Abhängigkeiten
$ 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
Klonen Sie das Git-Repository:
$ git clone https://github.com/tomchop/malcom.git malcom
Erstellen Sie Ihre virtuelle Umgebung und aktivieren Sie sie:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
Holen und installieren Sie 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
Installieren Sie aus Ihrer virtuellen Umgebung die notwendigen Python-Pakete aus der Datei requirements.txt:
$ cd ../malcom
$ pip install -r requirements.txt
Damit die IP-Geolokalisierung funktioniert, müssen Sie die Maxmind-Datenbank herunterladen und die Datei in das Verzeichnis malcom/Malcom/auxiliary/geoIP extrahieren. Sie können Maxminds kostenlose (und daher mehr oder weniger genaue) Datenbank über den folgenden Link beziehen: 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
Starten Sie den Webserver aus dem malcom-Verzeichnis mit ./malcom.py. Überprüfen Sie ./malcom.py --help für die Lauschschnittstelle und Ports.
malcom.conf.example nach malcom.conf kopieren und ./malcom.py -c malcom.conf ausführenStandardmäßig versucht Malcom, eine Verbindung zu einer lokalen MongoDB-Instanz herzustellen und eine eigene Datenbank namens malcom zu erstellen. Wenn dies für Sie in Ordnung ist, können Sie die folgenden Schritte überspringen. Andernfalls müssen Sie den Abschnitt database Ihrer malcom.conf-Datei bearbeiten.
Standardmäßig verwendet Malcom eine Datenbank namens malcom. Sie können dieses Verhalten ändern, indem Sie die malcom.conf-Datei bearbeiten und die Direktive name im Abschnitt database nach Ihren Wünschen einstellen.
[database]
...
name = my_malcom_database
...
Standardmäßig versucht Malcom, eine Verbindung zu localhost herzustellen, aber Ihre Datenbank könnte sich auf einem anderen Server befinden. Um dies zu ändern, setzen Sie einfach die Direktive hosts. Sie können Hostnamen oder IPv4/v6-Adressen verwenden (denken Sie daran, Ihre IPv6-Adressen zwischen [ und ] zu setzen, z.B. [::1]).
Wenn Sie eine eigenständige Datenbank auf dem Host my.mongo.server verwenden möchten, setzen Sie einfach:
[database]
...
hosts = my.mongo.server
...
Sie können auch den Port angeben, auf dem mongod lauscht, indem Sie ihn nach dem Namen/der Adresse Ihres Servers, getrennt durch ein :, angeben:
[database]
...
hosts = localhost:27008
...
Und wenn Sie ein ReplicaSet verwenden, das my.mongo1.server und my.mongo2.server gruppiert, setzen Sie einfach:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
Sie haben möglicherweise Ihre mongod-Instanzen so konfiguriert, dass sie authentifizierte Verbindungen erzwingen. In diesem Fall müssen Sie den Benutzernamen festlegen, den der Treiber verwenden muss, um eine Verbindung zu Ihrer mongod-Instanz herzustellen. Fügen Sie dazu einfach eine Direktive username im Abschnitt database der malcom.conf-Datei hinzu. Möglicherweise müssen Sie auch das Passwort mit der Direktive password festlegen. Wenn der Benutzer kein Passwort hat, ignorieren Sie (d.h. kommentieren Sie) die Direktive password.
[database]
...
username = my_user
password = change_me
...
Wenn der Benutzer nicht mit der malcom-Datenbank verknüpft ist, sondern mit einer anderen (z.B. der admin-Datenbank für einen Admin-Benutzer), müssen Sie die Direktive authentication_database mit dem Namen dieser Datenbank setzen.
[database]
...
authentication_database = some_other_database
...