
바이그램 빈도 분석을 이용한 DGA 도메인 탐지
더욱 많은 멀웨어가 고급 차단 회피 기술과 함께 만들어지고 있습니다. 가장 널리 사용되는 기술 중 하나는 주기적으로 C&C 서버에 접촉할 도메인 집합을 생성하는 DGA(Domain Generation Algorithm)를 사용하는 것입니다. 이러한 DGA 도메인의 대부분은 무작위 영숫자 문자열을 생성하며, 이는 표준 도메인과 구조적으로 크게 다릅니다. 도메인 내 바이그램 집합이 Alexa 상위 1M에서 발생하는 빈도를 확인함으로써, 도메인이 무작위 문자열로 구성되었는지 또는 합법적인 사람이 읽을 수 있는 도메인인지 탐지할 수 있었습니다. 도메인이 Alexa 상위 1M 내에서 거의 발생하지 않는 저빈도 바이그램으로 거의 전적으로 구성된 경우, 해당 도메인은 무작위 문자열일 가능성이 더 높습니다. 모음과 자음의 바이그램이 가장 빈번하게 발생한 반면, 문자와 정수의 바이그램은 가장 적게 발생했습니다. 이 스크립트는 100,000개의 GameoverZeus 도메인에 대해 실행되었으며, 도메인 화이트리스트를 적용하지 않은 상태에서 탐지율 100%, Alexa 상위 1M에 대한 오탐률 8%를 기록했습니다.
이 시스템은 Ubuntu와 RaspberryPi에서 테스트되었습니다. 현재 RaspberryPi를 Bind9을 사용하는 DNS 서버로 설정했습니다. DGA-Detection 스크립트도 RaspberryPi에서 실행되며 요청을 읽습니다. 그런 다음 요청을 처리하여 잠재적인 DGA인지 여부를 판단합니다.
git clone https://github.com/philarkwright/DGA-Detection.git
cd DGA-Detection
chmod +x install.sh
./install.sh
sudo python dga_detection.py
nohup sudo python dga-detection.py -o 2 -i <인터페이스>
install.sh 파일을 실행할 때 git:// 프로토콜이 포트 9418을 사용하므로 방화벽이 이 포트에 대한 아웃바운드 연결을 허용하는지 확인해야 합니다.
이 프로젝트는 아직 개발 중입니다.
홈 네트워크에서 네트워크 수준으로 스크립트를 실행하는 동안 Google Chrome에서 특정 Google 검색을 수행하면 DGA 도메인으로 보이는 여러 경고가 발생하는 것을 발견했습니다. 일반적으로 중국어(도메인에 gibberish 문자열을 사용하기 때문) 사이트를 방문하지 않더라도 Google Chrome이 이를 사전 로드 및 가져와 경고를 발생시킵니다.
참고: 화이트리스트 기능은 Alexa Top 1m을 사용합니다.
Twitter @philarkwright로 연락주세요.