
EXIST — это веб-приложение для агрегирования и анализа данных о киберугрозах.
⚠️ Этот репозиторий не поддерживается / архивирован. Проблемы безопасности не будут исправлены.
EXIST — веб-приложение для агрегации и анализа CTI (информации о киберугрозах).
EXIST написан с использованием следующего ПО:
EXIST — это веб-приложение для агрегации CTI, которое помогает операторам безопасности расследовать инциденты на основе связанных индикаторов.
EXIST автоматически получает данные из нескольких CTI-сервисов и Twitter через их API и фиды. Вы можете выполнять перекрёстный поиск индикаторов через веб-интерфейс и API.
Если у вас есть серверы, регистрирующие сетевое поведение клиентов (например, логи DNS и HTTP-прокси и т. д.), вы сможете анализировать логи, сопоставляя их с данными в EXIST. Если вы реализуете некоторые программы с использованием API, вы сможете реализовать автоматизированный центр управления безопасностью на основе CTI.

Просто введите домен в форму поиска.

Просто введите URL в форму поиска.

Просто добавьте ключевые слова в Threat Hunter или Twitter Hunter.

Tracker автоматически собирает потоки данных из нескольких CTI-сервисов.
Hunter позволяет задавать запросы для сбора данных из нескольких CTI-сервисов и Twitter.
Lookup извлекает информацию, связанную с конкретными данными (например, IP-адрес, домен), из нескольких интернет-сервисов (например, whois).
Инструмент для аннотирования твитов из Twitter Tracker.
Предоставляет данные, хранящиеся в базе данных EXIST, через веб-API.
Далее я предполагаю окружение CentOS 7 или Ubuntu 18.04 LTS. При развёртывании в другой среде действуйте на свой страх и риск.
$ sudo pip install -r requirements.txt
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
$ sudo yum install MariaDB-server MariaDB-client
$ sudo apt install mariadb-server mariadb-client
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
.env по образцу .env.example. И отредактируйте в соответствии с настройками вашей БД.Секретный ключ для Django должен быть записан в файл .env.
Сначала запустите генератор ключей:
$ python keygen.py
(example)> 70mm6h)()h3r&*b9xq$e52=-7($p=5983gfoyz%$d-j-gd7u5@
и запишите секретный ключ в файл .env:
...
# EXIST Application Settings
EXIST_SECRET_KEY="70mm6h)()h3r&*b9xq$e52=-7($p=5983gfoyz%$d-j-gd7u5@"
...
$ python manage.py makemigrations exploit reputation threat threat_hunter twitter twitter_hunter news news_hunter vuln
$ python manage.py migrate
Reputation Tracker использует Redis в качестве серверной части кеша для Celery.
$ sudo yum install redis
$ sudo systemctl start redis
$ sudo systemctl enable redis
$ sudo apt install redis-server
$ sudo systemctl start redis-server
$ sudo systemctl enable redis-server
Reputation Tracker использует Celery как асинхронную очередь задач.
# Name of nodes to start
# here we have a single node
CELERYD_NODES="w1"
# or we could have three nodes:
#CELERYD_NODES="w1 w2 w3"
# Absolute or relative path to the 'celery' command:
CELERY_BIN="/path/to/your/celery"
# App instance to use
# comment out this line if you don't use an app
CELERY_APP="intelligence"
# or fully qualified:
#CELERY_APP="proj.tasks:app"
# How to call manage.py
CELERYD_MULTI="multi"
# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=8"
# - %n will be replaced with the first part of the nodename.
# - %I will be replaced with the current child process index
# and is important when using the prefork pool to avoid race conditions.
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_LOG_LEVEL="INFO"
/etc/systemd/system/celery.service. Также необходимо указать путь к вашему конфигурационному файлу Celery в EnvironmentFile.[Unit]
Description=Celery Service
After=network.target
[Service]
Type=forking
User=YOUR_USER
Group=YOUR_GROUP
EnvironmentFile=/etc/sysconfig/celery
WorkingDirectory=/path/to/your/exist
ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
-A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
--logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
--pidfile=${CELERYD_PID_FILE}'
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \
-A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
--logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
[Install]
WantedBy=multi-user.target
$ sudo mkdir /var/log/celery; sudo chown YOUR_USER:YOUR_GROUP /var/log/celery
$ sudo mkdir /var/run/celery; sudo chown YOUR_USER:YOUR_GROUP /var/run/celery
#Type Path Mode UID GID Age Argument
d /var/run/celery 0755 YOUR_USER YOUR_GROUP -
$ sudo systemctl start celery.service
$ sudo systemctl enable celery.service
$ python manage.py runserver 0.0.0.0:8000
Примечание: Рекомендую использовать Nginx и uWSGI при запуске в производственной среде.
Скрипты для вставки фидов в базу данных находятся в scripts/insert2db/*/insert2db.py.
$ python scripts/insert2db/reputation/insert2db.py
$ python scripts/insert2db/twitter/insert2db.py
$ python scripts/insert2db/exploit/insert2db.py
$ python scripts/insert2db/threat/insert2db.py
$ python scripts/insert2db/news/insert2db.py
$ python scripts/insert2db/vuln/insert2db.py
Примечание: Для автоматизации сбора информации добавьте их в cron.
Twitter Hunter может обнаруживать твиты, содержащие определённые ключевые слова и идентификаторы пользователей. При необходимости вы можете отправлять уведомления в Slack.
Threat Hunter может обнаруживать события угроз, содержащие определённые ключевые слова. При необходимости вы можете отправлять уведомления в Slack.
EXIST использует VirusTotal API.
Примечание: Вы получите больше информации, если у вас есть приватный API-ключ.
Lookup IP / Domain использует GeoLite2 Database.
Lookup URL использует wkhtmltopdf и Xvfb.
$ sudo yum install xorg-x11-server-Xvfb
Если вы разворачиваете EXIST на Ubuntu 18.04 LTS, вы можете установить эти пакеты с помощью apt.
$ sudo apt install wkhtmltopdf xvfb
Инструмент аннотирования для создания обучающих данных для твитов. Этот инструмент предназначен для исследователей машинного обучения.



Пожалуйста, напишите нам, если вы обнаружите какие-либо уязвимости.
Этот продукт включает данные GeoLite2, созданные MaxMind, доступные на https://www.maxmind.com.
MIT License © Cybersecurity Laboratory, NICT