0Pricing
Cyber Security Academy · 강의

DNS 터널링과 정보 유출

DNS를 통해 데이터를 몰래 반출하는 방법

DNS 터널링과 정보 유출은(는) CoddyKit의 무료 Cyber Security Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cyber Security Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

DNS로 데이터 몰래 전송하기

DNS 터널링은 임의의 데이터를 DNS 질의와 응답 안에 인코딩하여 이름 시스템을 은밀한 통신 채널로 바꿉니다. 거의 모든 네트워크에서 DNS가 경계 밖으로 나갈 수 있기 때문에, DNS는 데이터 유출과 명령 및 제어(C2)에 자주 사용되는 경로입니다.

방화벽이 모든 것을 차단하더라도 리졸버가 여전히 응답한다면, 공격자는 DNS를 통해 완전한 양방향 채널을 구축할 수 있습니다.

채널 작동 방식

공격자는 예를 들어 tunnel.evil.com과 같은 도메인의 권한 있는 이름 서버를 제어합니다. 침투 프로그램은 질의의 서브도메인(왼쪽 레이블)에 외부로 보낼 데이터를 인코딩합니다.

  • 데이터는 <base32-chunk>.tunnel.evil.com 형식으로 전송됩니다.
  • 권한 있는 서버는 TXT, CNAME 또는 NULL 레코드 안에 명령을 넣어 반환합니다.

각 질의와 응답의 쌍에는 작은 페이로드 조각이 들어갑니다.

ZXhmaWx0cmF0ZWQtc2VjcmV0.tunnel.evil.com
# Encoded chunk smuggled in the query label

인코딩 방식

DNS 레이블은 대소문자를 구분하지 않고 길이 제한이 있으므로, 이진 데이터는 일반적으로 Base32로 인코딩합니다(Base64는 대소문자가 섞이고 안전하지 않은 문자를 사용합니다). 다음 제약을 지켜야 합니다.

  • 각 레이블은 최대 63자입니다.
  • 전체 이름은 최대 255자입니다.
  • 따라서 각 질의에는 기껏해야 수백 바이트만 담을 수 있습니다.

처리량이 낮기 때문에 DNS를 통한 유출은 느리고 질의가 많으며, 그만큼 탐지하기도 쉽습니다.

사용되는 레코드 유형

서로 다른 레코드 유형을 사용하면 하향 데이터 용량을 극대화할 수 있습니다.

  • TXT — 큰 자유 형식 텍스트 페이로드를 담으며, C2 응답의 주력으로 사용됩니다.
  • NULL — 원시 바이트를 담으며, iodine과 같은 오래된 도구에서 사용됩니다.
  • CNAME / MX — 중간 정도의 용량을 제공하고 정상적인 트래픽에 섞이기 쉽습니다.
  • A / AAAA — 용량은 작지만 매우 흔하여 눈에 잘 띄지 않습니다.

흔히 사용되는 도구

탐지할 때 알아두어야 할 잘 알려진 터널링 도구는 다음과 같습니다.

  • iodine — NULL/TXT 레코드를 사용하여 IP를 DNS로 전달하는 터널을 만듭니다.
  • dnscat2 — DNS를 통한 암호화된 C2 채널입니다.
  • DNSExfiltrator — 단계적으로 파일을 유출합니다.
  • Cobalt Strike DNS 비콘 — 레드 팀 활동과 실제 침투에서 흔히 사용됩니다.

이러한 도구는 알아볼 수 있는 질의 패턴과 엔트로피 특성을 남깁니다.

저속 및 고속 모드

공격자는 터널을 조정합니다. 저속·저빈도 프로필은 트래픽량 임계값을 피하기 위해 분당 몇 개의 질의만 보내며, 자격 증명이나 키와 같은 작은 비밀 정보를 은밀하게 유출하는 데 적합합니다.

고처리량 프로필은 대화형 C2나 대량 전송을 위해 질의 수를 최대화하는 대신 은밀성을 희생하고 속도를 높입니다. 탐지 로직은 이 두 극단을 모두 포착해야 합니다.

탐지 신호: 엔트로피

인코딩된 서브도메인은 무작위 문자열처럼 보이므로 자연스러운 도메인 이름보다 엔트로피가 높습니다. 레이블별 섀넌 엔트로피를 계산하는 것은 강력한 경험적 탐지 방법입니다.

정상적인 이름은 발음할 수 있고 엔트로피가 낮은 문자열에 가까운 반면, xj4k9d2mq7zp1.tunnel.evil.com은 눈에 띕니다. 서브도메인 엔트로피가 조정된 임계값을 초과하는 도메인에 표시를 남기십시오.

탐지 신호: 양과 길이

다른 행동 지표는 다음과 같습니다.

  • 한 호스트에서 단일 도메인으로 보내는 질의 수가 비정상적으로 많음
  • 255바이트 제한에 가까운 긴 질의 이름
  • TXT 또는 NULL 레코드를 불균형적으로 많이 사용함
  • 하나의 상위 도메인 아래에 고유한 서브도메인이 많음(고유값 수가 많음)
  • 생성된 지 얼마 되지 않았거나 평판이 낮은 도메인으로 질의함
# Top talkers by unique subdomain count per parent domain
sort dns.log | awk '{print $domain}' | sort | uniq -c | sort -rn | head

외부 송신 필터링이 도움이 되는 이유

엔드포인트가 인터넷으로 DNS에 직접 연결해서는 안 됩니다. 모든 클라이언트를 내부 리졸버를 거치게 하고 방화벽에서 외부로 나가는 UDP/TCP 53을 차단하십시오.

이렇게 하면 DNS가 통제된 병목 지점을 통과하므로 해당 지점에서 로그를 기록하고 검사하며 위협 인텔리전스를 적용할 수 있습니다. 또한 8.8.8.8과 같은 외부 리졸버 주소를 직접 지정한 침투 프로그램도 차단할 수 있습니다.

다층 완화책

터널링을 차단하려면 여러 통제를 결합하십시오.

  • 이름 해석을 중앙화하고 외부 포트 53에 대한 직접 연결을 차단합니다.
  • 평판 피드가 연결된 DNS 방화벽 / RPZ를 배포합니다.
  • 엔트로피, 질의 길이, NXDOMAIN 비율, 도메인별 고유값 수에 대해 경고를 생성합니다.
  • 가능한 경우 질의 속도를 제한하고 질의 크기에 상한을 설정합니다.
  • 터널링을 HTTPS 안에 숨기는 알 수 없는 엔드포인트로의 DoH 사용을 감시합니다.

DoH: 탐지 사각지대

HTTPS를 통한 DNS는 질의를 TLS로 감싸 443으로 전송하므로 기존 포트 53 모니터링으로는 아무것도 보이지 않습니다. 악성 엔드포인트로 DoH를 사용하는 침투 프로그램은 수동 DNS 기록에 흔적을 남기지 않고 데이터를 터널링할 수 있습니다.

승인된 DoH 리졸버로만 엔드포인트를 고정하고, 관리되는 장치에서 알려진 공용 DoH IP 주소와 호스트 이름을 차단하며, TLS SNI와 대상 평판을 검사하여 완화하십시오.

빠른 점검

탐지 감각을 점검해 보십시오.

요약

DNS 터널링은 질의 서브도메인과 응답 레코드(TXT, NULL, CNAME)를 악용하여 유출과 C2를 위한 은밀한 채널을 만듭니다. 처리량이 낮아 느리지만 은밀합니다. iodine과 dnscat2 같은 도구는 알아볼 수 있는 패턴을 남깁니다.

엔트로피, 질의 길이, 양, 고유값 수 분석으로 탐지하고, 중앙 집중식 리졸버, 외부 송신 필터링, DNS 방화벽/RPZ, DoH 통제로 예방하십시오. 다음으로 DNSSEC와 필터링이 이름 시스템 전체를 어떻게 방어하는지 살펴보겠습니다.

자주 묻는 질문

“DNS 터널링과 정보 유출” 강의는 무료인가요?

네 — “DNS 터널링과 정보 유출” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cyber Security Academy 강의 전체를 잠금 해제할 수 있습니다. Cyber Security Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“DNS 터널링과 정보 유출”에서 뭘 배우나요?

DNS를 통해 데이터를 몰래 반출하는 방법 브라우저에서 직접 실행하는 실습 코드로 Cyber Security Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cyber Security Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cyber Security Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“DNS 터널링과 정보 유출” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cyber Security Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cyber Security Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. DNS의 작동 원리와 위험
  2. DNS 스푸핑과 캐시 포이즈닝
  3. DNS 터널링과 정보 유출
  4. DNSSEC와 DNS 필터링
← Cyber Security Academy(으)로 돌아가기