
Malcom - Analisador de Comunicações de Malware
Malcom é uma ferramenta projetada para analisar a comunicação de rede de um sistema usando representações gráficas do tráfego de rede e referenciá-las com fontes conhecidas de malware. Isso é útil ao analisar como certas espécies de malware tentam se comunicar com o mundo exterior.
Malcom pode ajudá-lo a:
O objetivo do Malcom é tornar a análise de malware e a coleta de inteligência mais rápidas, fornecendo uma versão legível por humanos do tráfego de rede originado de um determinado host ou rede. Converta informações de tráfego de rede em inteligência acionável mais rapidamente.
Verifique a wiki para um Quickstart com algumas capturas de tela e um tutorial sobre como adicionar seus próprios feeds.
Se precisar de ajuda ou quiser contribuir, sinta-se à vontade para se juntar à lista de e-mails ou tente encontrar alguém no IRC (#malcom no freenode.net, é bem tranquilo, mas sempre tem alguém por perto). Você também pode me encontrar no twitter @tomchop_
Aqui está um exemplo de gráfico para o host tomchop.me

Visualização do conjunto de dados (filtrado para mostrar apenas IPs)

mongodb e redis-server estejam em execução./malcom.py -c malcom.conf (ou veja as opções com ./malcom.py --help)
** Para um arquivo de configuração de exemplo, você pode copiar malcom.conf.example para malcom.conf
** A porta padrão é 8080
** Alternativamente, execute os feeds a partir do celery. Veja a seção feeds para detalhes de como fazer isso.Malcom é escrito em Python. Desde que você tenha as bibliotecas necessárias, deve ser capaz de executá-lo em qualquer plataforma. Recomendo fortemente o uso de ambientes virtuais Python (virtualenv) para não bagunçar as bibliotecas do seu sistema.
O seguinte foi testado no Ubuntu Server 14.04 LTS:
Instale as bibliotecas git, python e libevent, mongodb, redis e outras dependências
$ 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 o repositório Git:
$ git clone https://github.com/tomchop/malcom.git malcom
Crie seu virtualenv e ative-o:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
Obtenha e instale o 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
Ainda no seu virtualenv, instale os pacotes Python necessários do arquivo requirements.txt:
$ cd ../malcom
$ pip install -r requirements.txt
Para que a geolocalização IP funcione, você precisa baixar o banco de dados Maxmind e extrair o arquivo para o diretório malcom/Malcom/auxiliary/geoIP. Você pode obter o banco de dados gratuito (e portanto mais ou menos preciso) da Maxmind no seguinte 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
Inicie o servidor web a partir do diretório malcom usando ./malcom.py. Verifique ./malcom.py --help para interface e portas de escuta.
malcom.conf.example para malcom.conf e executar ./malcom.py -c malcom.confPor padrão, o Malcom tentará se conectar a uma instância local do MongoDB e criar seu próprio banco de dados, chamado malcom. Se isso for suficiente para você, pode pular as etapas seguintes. Caso contrário, você precisa editar a seção database do seu arquivo malcom.conf.
Por padrão, o Malcom usará um banco de dados chamado malcom. Você pode alterar esse comportamento editando o arquivo malcom.conf e definindo a diretiva name na seção database de acordo com sua preferência.
[database]
...
name = my_malcom_database
...
Por padrão, o Malcom tentará se conectar a localhost, mas seu banco de dados pode estar em outro servidor. Para alterar isso, basta definir a diretiva hosts. Você pode usar nomes de host ou endereços IPv4/v6 (lembre-se de colocar endereços IPv6 entre [ e ], por exemplo, [::1]).
Se você quiser usar um banco de dados independente no host my.mongo.server, basta definir:
[database]
...
hosts = my.mongo.server
...
Você também pode especificar a porta em que o mongod está ouvindo, especificando-a após o nome/endereço do servidor, separado por :
[database]
...
hosts = localhost:27008
...
E se você estiver usando um ReplicaSet que agrupa my.mongo1.server e my.mongo2.server, basta definir:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
Você pode ter configurado suas instâncias mongod para exigir conexões autenticadas. Nesse caso, você precisa definir o nome de usuário que o driver deverá usar para se conectar à sua instância mongod. Para fazer isso, adicione uma diretiva username à seção database no arquivo malcom.conf. Você também pode precisar definir a senha com a diretiva password. Se o usuário não tiver senha, basta ignorar (ou seja, comentar) a diretiva password.
[database]
...
username = my_user
password = change_me
...
Se o usuário não estiver vinculado ao banco de dados malcom, mas a outro (por exemplo, o banco de dados admin para um usuário administrador), você precisará definir a diretiva authentication_database com o nome desse banco de dados.
[database]
...
authentication_database = some_other_database
...
Ao usar um replica set, pode ser necessário garantir que você está conectado ao conjunto correto. Para isso, basta adicionar a diretiva replset para forçar o driver do MongoDB a verificar o nome do replicaset.
[database]
...
replset = my_mongo_replica
...