
Malcom - Analizzatore di Comunicazioni di Malware
Malcom è uno strumento progettato per analizzare le comunicazioni di rete di un sistema utilizzando rappresentazioni grafiche del traffico di rete e confrontarle con fonti di malware note. Questo è utile quando si analizza come determinate specie di malware cercano di comunicare con il mondo esterno.
Malcom può aiutarti a:
L'obiettivo di Malcom è rendere l'analisi del malware e la raccolta di intelligence più veloci fornendo una versione leggibile del traffico di rete proveniente da un dato host o rete. Converti le informazioni sul traffico di rete in intelligence utilizzabile più rapidamente.
Consulta il wiki per una guida rapida con alcuni screenshot e un tutorial su come aggiungere i tuoi feed.
Se hai bisogno di aiuto o vuoi contribuire, sentiti libero di iscriverti alla mailing list o provare a contattare qualcuno su IRC (#malcom su freenode.net, è piuttosto silenzioso ma c'è sempre qualcuno in giro). Puoi anche contattarmi su Twitter @tomchop_
Ecco un esempio di grafico per l'host tomchop.me

Vista del dataset (filtrata per mostrare solo IP)

mongodb e redis-server siano in esecuzione./malcom.py -c malcom.conf (o visualizza le opzioni con ./malcom.py --help)
** Per un file di configurazione di esempio, puoi copiare malcom.conf.example in malcom.conf
** La porta predefinita è 8080
** In alternativa, esegui i feed da celery. Vedi la sezione feed per i dettagli su come fare.Malcom è scritto in Python. A condizione che tu abbia le librerie necessarie, dovresti essere in grado di eseguirlo su qualsiasi piattaforma. Raccomando vivamente l'uso di ambienti virtuali Python (virtualenv) per non sporcare le librerie di sistema.
Quanto segue è stato testato su Ubuntu server 14.04 LTS:
Installa git, python e le librerie libevent, mongodb, redis e altre dipendenze
$ 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
Clona il repository Git:
$ git clone https://github.com/tomchop/malcom.git malcom
Crea il tuo virtualenv e attivalo:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
Ottieni e installa 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
Sempre dal tuo virtualenv, installa i pacchetti Python necessari dal file requirements.txt:
$ cd ../malcom
$ pip install -r requirements.txt
Affinché la geolocalizzazione IP funzioni, devi scaricare il database Maxmind ed estrarre il file nella directory malcom/Malcom/auxiliary/geoIP. Puoi ottenere il database gratuito (e quindi più o meno accurato) di Maxmind dal seguente link: 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
Avvia il webserver dalla directory malcom usando ./malcom.py. Controlla ./malcom.py --help per l'interfaccia di ascolto e le porte.
malcom.conf.example in malcom.conf ed eseguire ./malcom.py -c malcom.confPer impostazione predefinita, Malcom proverà a connettersi a un'istanza mongodb locale e creerà il proprio database, chiamato malcom. Se per te va bene, puoi saltare i passaggi seguenti. Altrimenti, devi modificare la sezione database del tuo file malcom.conf.
Per impostazione predefinita, Malcom utilizzerà un database chiamato malcom. Puoi cambiare questo comportamento modificando il file malcom.conf e impostando la direttiva name nella sezione database a tuo piacimento.
[database]
...
name = my_malcom_database
...
Per impostazione predefinita, Malcom proverà a connettersi a localhost, ma il tuo database potrebbe trovarsi su un altro server. Per cambiare, imposta la direttiva hosts. Puoi usare nomi host o indirizzi IPv4/v6 (ricorda di racchiudere gli indirizzi IPv6 tra [ e ], ad esempio [::1]).
Se desideri utilizzare un database autonomo sull'host my.mongo.server, imposta:
[database]
...
hosts = my.mongo.server
...
Puoi anche specificare la porta su cui mongod è in ascolto indicandola dopo il nome/indirizzo del server, separata da :
[database]
...
hosts = localhost:27008
...
E se stai utilizzando un ReplicaSet che raggruppa my.mongo1.server e my.mongo2.server, imposta:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
Potresti aver configurato le tue istanze mongod per richiedere connessioni autenticate. In tal caso, devi impostare il nome utente che il driver dovrà usare per connettersi alla tua istanza mongod. Per farlo, aggiungi una direttiva username alla sezione database nel file malcom.conf. Potresti anche dover impostare la password con la direttiva password. Se l'utente non ha una password, ignora (cioè commenta) la direttiva password.
[database]
...
username = my_user
password = change_me
...
Se l'utente non è collegato al database malcom ma a un altro (ad esempio il database admin per un utente amministratore), dovrai impostare la direttiva authentication_database con il nome di quel database.
[database]
...
authentication_database = some_other_database
...
Quando si utilizza un replica set, potresti dover assicurarti di essere connesso a quello giusto. Per farlo, aggiungi la direttiva replset per forzare il driver mongo a verificare il nome del replicaset
[database]
...
replset = my_mongo_replica
...
Per impostazione predefinita, Malcom proverà a connettersi al nodo primario del replica set. Potresti aver bisogno/volete cambiarlo. Per cambiare questo comportamento, imposta la direttiva read_preference. Vedi la documentazione di Mongo per maggiori informazioni.