보안

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 필터링, 예측/분석 모델 구축

zerg96

Recent Posts

노트북(윈도우)에서 아이폰 유선 테더링 하기

윈도우 운영체제의 노트북에서는 iPhone 유선 테더링이 잘 안되는 경우가 많습니다. 보통 iPhone의 드라이버가 설치가 안되있어서인…

3일 ago

오라클 래치(Latch)

오라클 데이터베이스의 성능을 논할 때, 내부적으로 발생하는 경합(Contention)은 피할 수 없는 주제다. 특히 다수의 프로세스가…

7일 ago

사장님도 3표, 나도 3표? ‘3%룰’ 완전 정복!

안녕하세요, 혹시 이런 생각해 본 적 없으신가요? "내가 투자한 회사는 누가 감시하고, 어떻게 운영될까?" 오늘은…

3주 ago

Vector Store(벡터 스토어)

'벡터 스토어' 완벽 가이드: AI 시대, 데이터의 새로운 심장을 만나다 IT 업계는 인공지능(AI)이라는 거대한 패러다임의…

3주 ago

Gemini CLI (재미나이 CLI)

1. Gemini CLI란 무엇인가요? Gemini CLI는 터미널 환경에서 직접 Gemini 모델과 상호작용할 수 있도록 만들어진…

3주 ago

과적합 (overfitting)

과적합은 머신러닝에서 학습용데이터를 과하게 학습하여, 실제데이터를 예측하지 못하는 현상을 말합니다. 인공지능(AI)의 학습 방법은 우리가 시험공부를…

1개월 ago