
딥러닝 모델 기반 DGA 생성 도메인 탐지
딥러닝 모델을 사용한 DGA 생성 도메인 탐지

저는 현재 개발에 Conda(Anaconda/Miniconda)를 사용하고 있지만, 포함된 requirements.txt를 사용하면 Pipenv나 virtualenv도 사용할 수 있을 것입니다.
conda:
conda env create -f environment.yml
conda activate degas
Pipenv:
pipenv install -r requirements.txt
pipenv shell
Virtualenv도 비슷하지만, 이제 Pipenv 대신 virtualenv를 사용할 이유는 정말로 없습니다.
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에서 약 1시간 30분이 걸립니다. 약 9 에포크를 실행한 후 조기 종료됩니다. 예를 들어 5 에포크만 실행해도 훈련 시간을 절반으로 줄이면서 좋은 정확도를 얻을 수 있습니다:
python degas/runner train-model --epochs 5 data/processed
이 프로젝트는 기본 딥러닝 라이브러리로 Tensorflow를 사용하므로, 추론(inference)에 이 프로젝트를 사용하는 권장 방법은 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 )의 첫 번째 결과였기 때문입니다.참고로 저는 이 이름을 Edgar Degas에서처럼 "de-gah"로 발음합니다. "모든 기체를 제거하다"라는 뜻의 "de-gas"가 아니라요.