DGA (Domain Generation Algorithms)는 많은 수의 도메인 이름을 주기적으로 동적으로 생성하는 알고리즘 클래스입니다. 일반적으로 도메인은 악성 행위자의 명령 및 제어 서버에 대한 콜백을 용이하게하기 위해 멀웨어 및 봇넷에서 랑데부 지점으로 사용됩니다. DGA를 사용하면 맬웨어가 하루에 수만 개의 도메인을 생성 할 수 있으며 대부분은 등록되지 않았습니다. 엄청난 수의 등록되지 않은 도메인이 등록 된 도메인을 가장하는 데 사용되어 감염된 봇넷이 서명 또는 IP 평판 기반 보안 탐지 시스템에 의한 탐지 및 억제를 피할 수 있습니다.
DGA를 사용하는 최초의 악성 코드 군은 2008 년 Kraken이었습니다. 그해 말에 Conflicker 웜은 DGA 전술을 악명 높이게 만들었습니다. 10 년이 지난 후에도 오늘날의 일부 네트워크에서 Conflicker 또는 그 변종 중 하나를 찾을 수 있습니다.
맬웨어의 확산이 증가함에 따라 DGA의 사용이 더욱 보편화되었습니다.
DGA 탐지의 목적
DGA 활동은 상당한 손상 지표이므로 네트워크에서 이러한 활동을 감지하는 것이 중요합니다. DGA 탐지에는 세 가지 수준이 있으며 각 후속 수준은 심각도 상승과 관련이 있습니다. 이후 수준에서의 탐지는 더 어렵지만 더 중요합니다.
DGA가 감지되면 하나 이상의 시스템이 DGA 기반 맬웨어에 감염되어 봇넷이 된 것입니다. 몇 가지 조치를 취해야합니다. 첫 번째 목표는 영향을받는 시스템을 식별하고 에스컬레이션을 방지하기 위해 적절하게 치료하거나 격리하는 것입니다.
다음 목표는 주어진 DGA 도메인 이름이 등록되었는지 여부를 확인하는 것입니다. 도메인이 등록되면 네트워크에 큰 위험을 초래하는 활성 명령 및 제어 서버가됩니다. 감염된 시스템 (현재 봇넷)은 이러한 서버를 사용하여 집에 전화를 걸어 악의적 인 공격자로부터 명령을받을 수 있습니다. 따라서 효과적인 DGA 탐지 시스템의 두 번째 구성 요소는 등록 된 도메인과 등록되지 않은 도메인을 구별하는 기능입니다.
예를 들어 DGA는 xyzwer1000, xyzwer1…에서 2 개의 도메인을 생성 할 수 있습니다. xyzwer1000에. 해커는 다른 500 개의 도메인이 아닌 xyzwer999과 같은 하나의 도메인 만 등록하면됩니다. 등록 된 도메인과 관련 IP를 식별 할 수있는 경우 해당 정보를 사용하여 대상 시스템과 Command & Control 서버 간의 통신 채널을 차단할 수 있습니다. 또한 정보는 네트워크의 모든 시스템에서 해당 서버로의 콜백을 차단하기 위해 다른 모든 예방 또는 탐지 시스템으로 전파되어야합니다.
DGA 탐지 시스템의 마지막이지만 가장 중요한 목표는 등록 된 도메인에서 콜백이 성공했는지 확인하고 감염된 시스템과 명령 및 제어 서버간에 연결이 이루어 졌는지 확인하는 것입니다. 이러한 활동이 감지되면 이미 일부 손상이 발생한 것일 수 있습니다. 네트워크의 맬웨어가 업데이트되었거나 새 맬웨어가 설치되었을 수 있습니다. 민감한 데이터가 유출되었을 수 있습니다.
DGA 감지는 어떻게 작동합니까?
DGA 활동은 일반적으로 XNUMX 가지 일반적인 단계로 네트워크 패킷을 캡처하고 분석하여 감지됩니다.
1 단계 – DNS 애플리케이션 감지
탐지는 DNS 요청 및 / 또는 응답 메시지를 통해 시작됩니다. DNS는 기본적인 인터넷 프로토콜이며 대부분의 방화벽에는 예약 된 포트 53에서 나가는 DNS 트래픽을 허용하는 정책이 있습니다. 그러나 해커는 포트 53을 이용하여 표준 DNS 메시지 형식을 따르지 않고 트래픽을 보낼 수 있습니다. 이 공격을 DNS 터널링이라고합니다. DNS 애플리케이션을보다 정확하게 식별하려면 DPI (Deep Packet Inspection) 엔진을 사용하는 것이 좋습니다.
2 단계 – 도메인 이름 추출
네트워크 애플리케이션이 DNS로 식별되면 DNS 쿼리 및 응답 메시지의 도메인 이름을 추출해야합니다. 올바른 도메인 이름을 추출하려면 DNS 메시지의 콘텐츠를 신중하게 구문 분석해야하며이 작업을 수행하려면 DPI 엔진이 필요합니다.
3 단계 – 모든 DGA 감지
DNS 메시지에서 추출 된 도메인에 대해 분석을 수행하여 DGA인지 확인해야합니다. 이것은 아마도 가장 복잡한 단계 일 것입니다. 문제는 거짓 양성과 거짓 음성을 모두 줄이는 것입니다. 탐지 메커니즘은 지난 10 년 이상에 걸쳐 극적으로 발전했습니다.
일부 메커니즘은 비교적 단순한 Shannon Entropy를 기반으로합니다.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
일부 메커니즘은 Hitb 컨퍼런스에서 Fyodor가 발표 한보다 정교한 Ngram을 기반으로합니다.
최근 기계 학습이 대중화됨에 따라 그 방법론이 DGA 감지에도 적용되었습니다. 기계 학습은 Ngrams, Shannon Entropy의 기능과 도메인 이름의 길이를 결합하여 결정에 영향을 줄 수 있습니다. 여러 기계 학습 모델이 시도되었습니다. 2014 년 Jay Jacobs가 그 과정을 설명하는 아주 좋은 블로그 포스트가 있습니다.
다음은 Markov Chain을 사용한 기계 학습을 기반으로 한 또 다른 오픈 소스 DGA 탐지기입니다.
https://github.com/exp0se/dga_detector
4 단계 – 등록 된 DGA 도메인 감지
DGA 도메인 이름이 등록되어 있는지 확인하려면 DNS 응답을 확인해야합니다. DNS 요청을 추적하는 것만으로는 충분하지 않습니다. 탐지 시스템은 정보 조각 간의 상관 관계를 촉진하기 위해 전체 트랜잭션을 추적해야합니다.
5 단계 – 등록 된 DGA 도메인에 대한 트래픽 감지
대부분의 기존 DGA 탐지 시스템이 도메인 이름이 DGA 도메인인지 탐지하는 데 집중할 때 가장 중요한 마지막 질문 인 등록 된 DGA 도메인으로 전송 된 트래픽이 있습니까? 이를 적시에 감지하려면 DGA 도메인 감지가 네트워크 트래픽 검사와 긴밀하게 결합되어야합니다. 결과는 손상이 발생하기 직전에 교통 검사 엔진에 다시 반영되어야합니다.
6 단계 – 등록 된 DGA 도메인에 대한 트래픽 차단
기술적으로 탐지의 일부는 아니지만 방화벽이나 IPS와 같은 방지 시스템과 통합 된 경우 등록 된 도메인에 대한 모든 트래픽을 차단하는 규칙을 즉시 삽입해야합니다.
훌륭한 DGA 감지 시스템은 5 단계를 모두 수행해야합니다. 우수한 DGA 감지 시스템에는 6 단계도 포함되어야합니다. 안타깝게도 오늘날 대부분의 DGA 감지 시스템은 3 단계 또는 4 단계에서 중단됩니다.
맺음말
DGA는 시그니처 또는 평판 기반 탐지 또는 방지 시스템으로 탐지하기 어렵 기 때문에 맬웨어 개발자에게 인기가 높습니다.
탐지를 수행하려면 지능형 탐지 시스템이 필요합니다. 우수한 DGA 탐지 시스템은 DNS 트랜잭션에서 도메인 이름 정보를 추출하고, DGA 상태를 탐지하기위한 철저한 분석을 수행하고, 의심되는 도메인의 등록 상태를 확인하고, 네트워크 트래픽 검사와 상호 연결하여 손상 수준을 평가하고, 이상적으로는 예방 시스템과 통합하여 추가를 방지해야합니다. 타협. 오탐과 오탐을 모두 줄이려면 기계 학습을 진지하게 고려해야합니다. 모든 단계에서 포괄적이고 포괄적 인 인텔리전스를 통해서만 위협을 진정으로 개선 할 수 있습니다.
리소스
Andrey Abakumove의 Github 저장소에는 도메인 이름 생성 알고리즘과 악성 도메인 이름 사전이 포함되어 있습니다.


