Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
malcom — Malcom - Анализатор коммуникаций вредоносного ПО | Kitploit
Инструменты/GitHubGitHub/tomchop/malcom
Сетевая криминалистикаАнализ вредоносных программРазведка угроз
GitHubtomchop/malcom

malcom

Malcom - Анализатор коммуникаций вредоносного ПО

Репозиторий
1.2k21618 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Malcom - Анализатор коммуникаций вредоносного ПО

Malcom — это инструмент, предназначенный для анализа сетевых коммуникаций системы с использованием графических представлений сетевого трафика и их перекрёстной сверки с известными источниками вредоносного ПО. Это удобно при анализе того, как определённые виды вредоносных программ пытаются взаимодействовать с внешним миром.

  • Что такое Malcom?
  • Краткое руководство
  • Установка
  • Параметры конфигурации
  • Экземпляр Docker
  • Краткое примечание о перехвате TLS
  • Окружение
  • Ленты
  • Технические характеристики
  • План развития
  • Отказ от ответственности
  • Лицензия

Что такое Malcom?

Malcom может помочь вам:

  • обнаруживать центральные серверы управления и контроля (C&C)
  • понимать пиринговые сети
  • наблюдать за инфраструктурами DNS fast-flux
  • быстро определить, является ли сетевой артефакт «известно-вредоносным»

Цель Malcom — сделать анализ вредоносного ПО и сбор разведывательной информации быстрее, предоставив удобочитаемую версию сетевого трафика, исходящего от данного хоста или сети. Превращайте информацию о сетевом трафике в действенную разведывательную информацию быстрее.

Ознакомьтесь с вики для быстрого старта с несколькими хорошими скриншотами и учебным пособием по добавлению собственных лент.

Если вам нужна помощь или вы хотите внести свой вклад, присоединяйтесь к списку рассылки или попробуйте связаться с кем-нибудь в IRC (#malcom на freenode.net, там довольно тихо, но кто-нибудь всегда есть). Также вы можете написать мне в Twitter @tomchop_

Вот пример графа для хоста tomchop.me nodes-tomchop.png

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

Краткое руководство

  • Установите
  • Убедитесь, что mongodb и redis-server запущены
  • Повысьте свои привилегии до root (да, я знаю, см. отказ от ответственности)
  • Запустите веб-сервер, используя конфигурацию по умолчанию с ./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 и другие зависимости.

    root@kitploit:~
      $ 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-репозиторий:

    root@kitploit:~
      $ git clone https://github.com/tomchop/malcom.git malcom
    
  • Создайте виртуальное окружение и активируйте его:

    root@kitploit:~
      $ cd malcom
      $ virtualenv env-malcom
      $ source env-malcom/bin/activate
    
  • Получите и установите scapy:

    root@kitploit:~
      $ 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
    

Параметры конфигурации

База данных

По умолчанию Malcom попытается подключиться к локальному экземпляру mongodb и создать свою собственную базу данных с именем malcom. Если это вас устраивает, можете пропустить следующие шаги. В противном случае вам нужно отредактировать раздел database вашего файла malcom.conf.

Установка другого имени для вашей базы данных Malcom

По умолчанию Malcom будет использовать базу данных с именем malcom. Вы можете изменить это поведение, отредактировав файл malcom.conf и установив директиву name в разделе database по своему усмотрению.

root@kitploit:~
    [database]
    ...
    name = my_malcom_database
    ...
Удаленная(ые) база(ы) данных

По умолчанию Malcom попытается подключиться к localhost, но ваша база данных может находиться на другом сервере. Чтобы изменить это, просто установите директиву hosts. Вы можете использовать имена хостов или IPv4/v6 адреса (только не забудьте заключать IPv6-адреса в [ и ], например [::1]).

Если вы хотите использовать отдельную базу данных на хосте my.mongo.server, просто установите:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo.server
    ...

Вы также можете указать порт, который прослушивает mongod, указав его после имени/адреса вашего сервера, разделив их символом :

root@kitploit:~
    [database]
    ...
    hosts = localhost:27008
    ...

А если вы используете ReplicaSet, объединяющий my.mongo1.server и my.mongo2.server, просто установите:

root@kitploit:~
    [database]
    ...
    hosts = my.mongo1.server,my.mongo2.server
    ...
Использование аутентификации

Возможно, вы настроили свои экземпляры mongod таким образом, чтобы они требовали аутентификацию при подключении. В этом случае вам необходимо указать имя пользователя, которое драйвер будет использовать для подключения к вашему экземпляру mongod. Для этого просто добавьте директиву username в раздел database файла malcom.conf. Возможно, вам также потребуется установить пароль с помощью директивы password. Если у пользователя нет пароля, просто проигнорируйте (т.е. закомментируйте) директиву password.

root@kitploit:~
    [database]
    ...
    username = my_user
    password = change_me
    ...

Если пользователь не привязан к базе данных malcom, а к другой (например, к базе данных admin для администратора), вам нужно будет установить директиву authentication_database с именем этой базы данных.

root@kitploit:~
    [database]
    ...
    authentication_database = some_other_database
    ...
Случай реплика-сета

При использовании реплика-сета вам может потребоваться убедиться, что вы подключены к правильному. Для этого добавьте директиву replset, чтобы заставить драйвер mongo проверить имя реплика-сета.

root@kitploit:~
    [database]
    ...
    replset = my_mongo_replica
    ...

По умолчанию Malcom попытается подключиться к первичному узлу реплика-сета. Возможно, вам потребуется/захочется изменить это. Чтобы изменить это поведение, просто установите директиву read_preference. Смотрите документацию mongo для получения дополнительной информации.

root@kitploit:~
    [database]
    ...
    read_preference = NEAREST
    ...

Поддерживаемые предпочтения чтения:

  • PRIMARY
  • PRIMARY_PREFERRED
  • SECONDARY
  • SECONDARY_PREFERRED
  • NEAREST

Экземпляр Docker

Самый быстрый способ начать работу — загрузить образ Docker из публичного репозитория Docker. Чтобы загрузить более старые, более стабильные сборки Docker, используйте tomchop/malcom вместо tomchop/malcom-automatic.

root@kitploit:~
    $ sudo docker pull tomchop/malcom-automatic
    $ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic

Подключение к http://<docker_host>:8080/ должно помочь вам начать.

Краткое примечание о перехвате TLS

Malcom теперь поддерживает перехват TLS. Для этого необходимо сгенерировать несколько ключей в каталоге Malcom/networking/tlsproxy/keys. Смотрите файл KEYS.md в этом каталоге для получения дополнительной информации о том, как это сделать.

Убедитесь, что у вас также есть IPtables (они уже должны быть) и разрешения для перенаправления портов с их помощью (обычно для этого нужны права root). Вы можете сделать это с помощью удобного скрипта forward_port.sh. Например, чтобы перехватывать весь TLS-трафик к порту 443, используйте forward_port.sh 443 9999. Затем вам нужно будет указать malcom запустить прокси-сервер перехвата на порту 9999.

Ожидается, что этот процесс будет автоматизирован в будущих версиях.

Окружение

Malcom был спроектирован и протестирован на виртуальной машине Ubuntu Server 14.04 LTS.

Если вы привыкли заниматься анализом вредоносного ПО, у вас, вероятно, уже есть множество виртуальных машин, работающих на хост-ОС. Просто установите Malcom на новую виртуальную машину и направьте соединения других виртуальных машин через Malcom. Используйте enable_routing.sh для активации маршрутизации/NAT на виртуальной машине, на которой работает Malcom. Вам нужно будет добавить дополнительную сетевую карту гостевой ОС.

Пока Malcom получает сетевые данные уровня 3, его можно развернуть где угодно. Хотя не рекомендуется использовать его в высокодоступных сетях (он не был спроектирован для быстрой работы, см. отказ от ответственности), вы можете запустить его на конце зеркального порта вашего коммутатора или на шлюзе.

Ленты

Чтобы запустить экземпляр Malcom, который ТОЛЬКО получает информацию из лент, запустите Malcom с опцией --feeds или настройте конфигурационный файл.

Ваша база данных должна заполняться автоматически. Если вы готовы углубиться в код, добавление лент довольно прямолинейно (при условии, что вы создаёте объекты Evil). Пример ленты можно найти в /feeds/zeustracker. Более подробное руководство доступно здесь.

Вы также можете использовать celery для запуска лент. Убедитесь, что celery установлен, выполнив $ pip install celery из вашего виртуального окружения. Затем вы можете использовать celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12 для запуска процесса питания ленты с 12 одновременными рабочими процессами.

Технические характеристики

Malcom был написан в основном с нуля на Python. Для работы он использует следующие фреймворки:

  • flask — легковесный веб-фреймворк на Python
  • mongodb — база данных NoSQL. Взаимодействует с Python через pymongo
  • redis — продвинутое хранилище ключей и значений в памяти
  • d3js — библиотека JavaScript, создающая потрясающие графы с силовой ориентацией (https://github.com/mbostock/d3/wiki/Gallery)
  • bootstrap — CSS-фреймворк, который в конечном итоге убьёт веб-дизайн, но чрезвычайно упрощает быструю «вебизацию» приложений, которые работали бы только через командную строку.

План развития

Совместная работа — основное направление, в котором я хочу развить этот инструмент, это сделать его совместным. У меня есть несколько идей по этому поводу, и я думаю, что он станет в 100 раз полезнее, как только будет реализован обмен данными.

Расширяемость — другая вещь, которую я хочу включить в инструмент, это возможность легче его расширять. У меня не такие потребности, как у всех остальных, и этот инструмент создавался с учётом моих потребностей. Теперь вы можете настраивать Malcom, добавляя новые ленты.

Как только совместная работа и расширение заработают, я думаю, это будет полезно не одному реагирующему на инциденты. :-)

Отказ от ответственности

Этот инструмент был написан в моё свободное время. Как и огромное количество инструментов, которые мы ежедневно скачиваем и используем, я бы не рекомендовал использовать его в производственной среде, где стабильность и надёжность данных являются ОБЯЗАТЕЛЬНЫМИ.

  • Он может быть сломан, иметь пробелы в безопасности (запуск от root в неконтролируемых средах, вероятно, не лучшая идея) или вообще не работать.
  • Он написан на Python, так что не ожидайте, что он будет сверхбыстрым или легко обрабатывать огромные объёмы данных.
  • Я не программист, так что не ожидайте увидеть красивый питонический код повсюду. Или множество комментариев.

Он находится на ранних стадиях разработки, то есть «работает у меня». Вы можете свободно делиться им, улучшать его, запрашивать pull request'ы.

Лицензия

Malcom - анализатор коммуникаций вредоносного ПО Copyright (C) 2013 Thomas Chopitea

Эта программа является свободным программным обеспечением: вы можете распространять её и/или изменять её на условиях Стандартной общественной лицензии GNU в том виде, в каком она опубликована Фондом свободного программного обеспечения; либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.

Эта программа распространяется в надежде, что она будет полезной, но БЕЗ ВСЯКИХ ГАРАНТИЙ; даже без подразумеваемой гарантии КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. Подробнее см. Стандартную общественную лицензию GNU.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если это не так, см. http://www.gnu.org/licenses/.

Обратите внимание, что Redis, MongoDB, d3js, Maximind и Bootstrap (а также другие сторонние библиотеки, включённые в Malcom) могут иметь свои собственные лицензии, совместимые с GPL.

Скачать инструмент

Всё ещё находясь в виртуальном окружении, установите необходимые пакеты Python из файла requirements.txt:

root@kitploit:~
  $ cd ../malcom
  $ pip install -r requirements.txt
  • Для работы геолокации IP необходимо загрузить базу данных Maxmind и извлечь файл в каталог malcom/Malcom/auxiliary/geoIP. Вы можете получить бесплатную (и, следовательно, более или менее точную) базу данных Maxmind по следующей ссылке: http://dev.maxmind.com/geoip/geoip2/geolite2/:

    root@kitploit:~
      $ 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