
Обнаружение DGA-сгенерированных доменов с помощью моделей глубокого обучения
Обнаружение DGA-генерированных доменов с использованием моделей глубокого обучения

В настоящее время я использую Conda (Anaconda/Miniconda) для разработки, но вы также можете использовать Pipenv или virtualenv с прилагаемым файлом requirements.txt.
conda:
conda env create -f environment.yml
conda activate degas
Pipenv:
pipenv install -r requirements.txt
pipenv shell
Virtualenv аналогичен, но больше нет причин использовать virtualenv вместо Pipenv.
В директорию models добавлена обученная модель. Если вы хотите обучить свою собственную, сначала необходимо загрузить обучающие данные из S3:
python degas/runner download-data
Обработайте данные в простой CSV-формат, который ожидает построитель модели:
python degas/runner process-data data/raw data/processed
Эти шаги нужно выполнить только один раз, если вы не изменяете обучающие данные.
Чтобы затем переобучить модель на сгенерированном наборе данных, сначала установите tensorflow-gpu, используя ваш любимый менеджер пакетов (conda install tensorflow-gpu или pip install tensorflow-gpu), чтобы обучение ускорялось на GPU.
Затем выполните:
python degas/runner train-model data/processed
Выполните python degas/runner train-model --help, чтобы увидеть некоторые доступные параметры настройки.
Это занимает около полутора часов на GTX 1070. Он выполняет около 9 эпох, после чего прерывается; вы потенциально можете запустить его, скажем, на 5 эпох и всё равно получить хорошую точность при вдвое меньшем времени обучения:
python degas/runner train-model --epochs 5 data/processed
Поскольку этот проект использует Tensorflow в качестве базовой библиотеки глубокого обучения, рекомендуемый способ использования для инференса — это Tensorflow Serving.
Вы сможете его запустить с помощью:
docker run -p 8501:8501 \
--mount type=bind,source=models/degas,target=/models/degas\
-e MODEL_NAME=degas -t tensorflow/serving
Смотрите документацию Tensorflow Serving для получения дополнительной информации о доступных параметрах.
Почему глубокое обучение для этой задачи? Потому что оно хорошо работает и его несложно реализовать. Из Byu et al, 2018:
"Глубокие нейронные сети недавно появились в литературе по обнаружению DGA (Woodbridge et al., 2016; Saxe & Berlin, 2017; Yu et al., 2017). Они значительно превосходят традиционные методы машинного обучения по точности, ценой увеличения сложности обучения модели и необходимости больших наборов данных."
Поскольку доступно много данных для обучения, создание модели глубокого обучения так же просто или даже проще, чем альтернативы.
https://openreview.net/forum?id=BJLmN8xRW¬eId=BJLmN8xRW http://faculty.washington.edu/mdecock/papers/byu2018a.pdf
egrep -i '^d.*g.*a.* /usr/share/dict/words )Для справки: я произношу его "de-gah", как Эдгар Дега, а не "de-gas", как "удалить весь газ".