
Malcom - Анализатор коммуникаций вредоносного ПО
Malcom — это инструмент, предназначенный для анализа сетевых коммуникаций системы с использованием графических представлений сетевого трафика и их перекрёстной сверки с известными источниками вредоносного ПО. Это удобно при анализе того, как определённые виды вредоносных программ пытаются взаимодействовать с внешним миром.
Malcom может помочь вам:
Цель Malcom — сделать анализ вредоносного ПО и сбор разведывательной информации быстрее, предоставив удобочитаемую версию сетевого трафика, исходящего от данного хоста или сети. Превращайте информацию о сетевом трафике в действенную разведывательную информацию быстрее.
Ознакомьтесь с вики для быстрого старта с несколькими хорошими скриншотами и учебным пособием по добавлению собственных лент.
Если вам нужна помощь или вы хотите внести свой вклад, присоединяйтесь к списку рассылки или попробуйте связаться с кем-нибудь в IRC (#malcom на freenode.net, там довольно тихо, но кто-нибудь всегда есть). Также вы можете написать мне в Twitter @tomchop_
Вот пример графа для хоста tomchop.me

Вид набора данных (отфильтровано только для отображения IP-адресов)

mongodb и redis-server запущены./malcom.py -c malcom.conf (или посмотрите опции с ./malcom.py --help)
** Для примера конфигурационного файла вы можете скопировать malcom.conf.example в malcom.conf
** Порт по умолчанию — 8080
** Альтернативно, запустите ленты из celery. См. раздел ленты для подробностей о том, как это сделать.Malcom написан на Python. При наличии необходимых библиотек вы сможете запустить его на любой платформе. Я настоятельно рекомендую использовать виртуальные окружения Python (virtualenv), чтобы не испортить системные библиотеки.
Следующее было протестировано на Ubuntu Server 14.04 LTS:
Установите git, python, библиотеки libevent, mongodb, redis и другие зависимости.
$ 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
Клонируйте Git-репозиторий:
$ git clone https://github.com/tomchop/malcom.git malcom
Создайте виртуальное окружение и активируйте его:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
Получите и установите 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
Всё ещё находясь в виртуальном окружении, установите необходимые пакеты Python из файла requirements.txt:
$ cd ../malcom
$ pip install -r requirements.txt
Для работы геолокации IP необходимо загрузить базу данных Maxmind и извлечь файл в каталог malcom/Malcom/auxiliary/geoIP. Вы можете получить бесплатную (и, следовательно, более или менее точную) базу данных Maxmind по следующей ссылке: 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
Запустите веб-сервер из каталога malcom, используя ./malcom.py. Для интерфейса прослушивания и портов смотрите ./malcom.py --help.
malcom.conf.example в malcom.conf и выполнить ./malcom.py -c malcom.confПо умолчанию Malcom попытается подключиться к локальному экземпляру mongodb и создать свою собственную базу данных с именем malcom. Если это вас устраивает, можете пропустить следующие шаги. В противном случае вам нужно отредактировать раздел database вашего файла malcom.conf.
По умолчанию Malcom будет использовать базу данных с именем malcom. Вы можете изменить это поведение, отредактировав файл malcom.conf и установив директиву name в разделе database по своему усмотрению.
[database]
...
name = my_malcom_database
...
По умолчанию Malcom попытается подключиться к localhost, но ваша база данных может находиться на другом сервере. Чтобы изменить это, просто установите директиву hosts. Вы можете использовать имена хостов или IPv4/v6 адреса (только не забудьте заключать IPv6-адреса в [ и ], например [::1]).
Если вы хотите использовать отдельную базу данных на хосте my.mongo.server, просто установите:
[database]
...
hosts = my.mongo.server
...
Вы также можете указать порт, который прослушивает mongod, указав его после имени/адреса вашего сервера, разделив их символом :
[database]
...
hosts = localhost:27008
...
А если вы используете ReplicaSet, объединяющий my.mongo1.server и my.mongo2.server, просто установите:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
Возможно, вы настроили свои экземпляры mongod таким образом, чтобы они требовали аутентификацию при подключении. В этом случае вам необходимо указать имя пользователя, которое драйвер будет использовать для подключения к вашему экземпляру mongod. Для этого просто добавьте директиву username в раздел database файла malcom.conf. Возможно, вам также потребуется установить пароль с помощью директивы password. Если у пользователя нет пароля, просто проигнорируйте (т.е. закомментируйте) директиву password.
[database]
...
username = my_user
password = change_me
...
Если пользователь не привязан к базе данных malcom, а к другой (например, к базе данных admin для администратора), вам нужно будет установить директиву authentication_database с именем этой базы данных.
[database]
...
authentication_database = some_other_database
...
При использовании реплика-сета вам может потребоваться убедиться, что вы подключены к правильному. Для этого добавьте директиву replset, чтобы заставить драйвер mongo проверить имя реплика-сета.
[database]
...
replset = my_mongo_replica
...