DGA(Domain Generation Algorithm)

DGA(Domain Generation Algorithm)봇넷멀웨어C&C 서버(Command & Control)와 통신하기 위해 사용하는 고급 은닉 기술입니다. 보안 전문가나 침해 대응팀(Blue Team)에게도 매우 중요한 분석 포인트입니다.

📌 DGA(Domain Generation Algorithm)란?

DGA는 감염된 악성코드(봇)가 특정 알고리즘에 따라 주기적으로 생성되는 도메인들에 접속하여 C&C 서버를 찾는 방식입니다.

※ C&C서버 : C&C는 멀웨어나 봇넷이 작동하는 핵심 컨트롤 센터로, 공격자가 감염된 디바이스를 원격으로 조작하기 위한 지휘 본부

✅ 왜 사용하는가?

  • C&C 서버 주소가 하드코딩되어 있으면, 도메인을 차단하거나 폐쇄하면 멀웨어 통신이 끊깁니다.
  • 이를 피하기 위해 C&C 도메인을 계속 바꿔가며 접속하려고 만든 것이 DGA입니다.

🧠 DGA 작동 방식 (개념도)

악성코드 내부:
하루에 1000개의 도메인 생성 (ex: ajdka123.com, lskdf098.biz, ...)

→ 해당 도메인에 접속 시도

→ 그 중 1개라도 C&C 서버가 등록되었으면 접속 성공!

→ 명령 수신 및 데이터 탈취 수행

📌 공격자는 그 중 일부 도메인만 실제로 등록해두기 때문에, 탐지와 차단이 매우 어려워집니다.

🛠️ DGA의 주요 유형

유형설명예시
시간 기반(Time-based)날짜, 시간 등을 기반으로 도메인 생성20250330abc.com
랜덤 기반(Randomized)난수 생성기 기반으로 도메인 구성xj29ql1.com
사전 기반(Dictionary-based)단어 조합을 섞어 생성bigcatfast.net
혼합형(Mixed)위 방법을 조합하여 생성다양한 예측불가 도메인
ML 기반최근엔 AI/ML로 자연스러운 도메인을 생성secure-connect-login.com (정상처럼 보임)

🔥 유명한 DGA 기반 봇넷 사례

봇넷DGA 특징설명
Conficker시간 기반 DGA하루 250개 도메인 생성
Zeus사전 기반 DGA자연어 조합 도메인 사용
Bebloh시간 + 랜덤 조합난수 기반 패턴
Necurs매우 복잡한 DGA 사용광고 사기, 스팸 유포
BianLian모바일 기반 DGA안드로이드 악성코드

🔍 탐지 기법

탐지 방법설명
도메인 패턴 분석비정상적 길이, 문자 조합, TTL 등
기계 학습 모델정상/비정상 도메인을 학습하여 분류
NXDOMAIN 응답 모니터링감염된 클라이언트는 실패 도메인(NXDOMAIN)에 많이 접속
피해지표 기반 차단 (IOC)유명한 DGA 패턴 리스트 블랙리스트화

💡 실전 예시 (Python 코드)

# 날짜 기반 DGA 예시
import datetime
import hashlib

def generate_domain(date):
seed = date.strftime('%Y%m%d')
h = hashlib.md5(seed.encode()).hexdigest()
return h[:10] + ".com"

today = datetime.date.today()
print(generate_domain(today)) # 예: "e3c5a1b7d2.com"

이와 같은 구조로 하루 수백 개의 도메인을 생성해놓고, 공격자는 단 한 개만 등록해도 통신이 성립됩니다.

🛡️ 방어/대응 전략

  • DNS 로그 모니터링 및 머신러닝 기반 도메인 분석
  • DGA 도메인 예측 및 사전 등록(도메인 싱크홀링)
  • IDS/IPS를 통한 DGA 탐지 룰 적용 (ex: Suricata, Snort)
  • 보안 솔루션에서 제공하는 DGA 탐지 기능 활성화

🧠 요약

항목내용
DGA 목적C&C 탐지 우회, 지속적 통신 유지
원리알고리즘 기반 도메인 생성 후 접속 시도
장점도메인 블랙리스트 무력화
탐지법도메인 패턴 분석, NXDOMAIN, ML 탐지
대응책싱크홀링, DNS 필터링, 예측/분석 모델 구축

Leave a Comment