시스템 보안 · 취약점 › E. 중요 정보 접근 로그 분석 · 33/50편 (전체 233/450)
학습 단계: 데이터 유출(exfiltration) 징후
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
DNS는 거의 모든 방화벽이 허용하므로, 공격자는 DNS 쿼리에 데이터를 인코딩해 실어 유출합니다. 데이터를 서브도메인에 담아 공격자 DNS 서버로 쿼리하면, 방화벽을 우회한 은닉 채널이 됩니다.
DNS 터널링 유출 원리
데이터 → base32/hex 인코딩 → 서브도메인
쿼리: <encoded-data>.attacker-domain.com
예: MFRGG.ZDFMZ.attacker.com (데이터 조각)
공격자 DNS 서버가 쿼리에서 데이터 복원
특징: 비정상적으로 긴 서브도메인, 높은 쿼리 빈도,
한 도메인에 대한 다수 고유 쿼리
DNS 터널은 정상 DNS와 섞여 은밀하지만, 쿼리 길이·빈도·고유 서브도메인 수의 통계적 이상으로 탐지됩니다.
| DNS 터널 지표 | 정상 | 터널링 |
|---|---|---|
| 서브도메인 길이 | 짧음 | 매우 김(인코딩) |
| 쿼리 빈도 | 낮음 | 높음(연속) |
| 고유 서브도메인 | 적음 | 많음(데이터 조각) |
| 쿼리 타입 | A/AAAA | TXT/NULL 많음 |
| 도메인 | 알려진 | 생소·신규 |
# DNS 터널링 유출 탐지 (분석 방법)
# DNS 쿼리 로그에서 긴 서브도메인(인코딩 의심)
sudo grep -oE 'query: [a-zA-Z0-9._-]{50,}' /var/log/named/query.log 2>/dev/null | tail
# 한 도메인에 대한 고유 서브도메인 수(터널 지표)
sudo grep 'query:' /var/log/named/query.log 2>/dev/null | grep -oE '[a-z0-9-]+\.[a-z]+\.[a-z]+$' | sort | uniq -c | sort -rn | head
$ (긴 서브도메인) (없음)
$ (도메인별 쿼리) 정상 도메인에 소수 쿼리(google·업데이트 등)
DNS 쿼리가 정상 길이·빈도이고, 한 도메인에 과도한 고유 서브도메인이 없는 상태가 정상입니다.
$ (긴 서브도메인)
query: MFRGGZDFMZXWYZLTMVZXG5DJMQ.NFXG.attacker.com (인코딩 데이터)
$ (도메인별 쿼리)
850 attacker.com (850개 고유 서브도메인 — 데이터 조각)
DNS 터널링 유출 흐름입니다(가상의 예시).
[데이터] all.tgz
↓ (조각+인코딩)
[쿼리] <조각1>.attacker.com, <조각2>.attacker.com ...
↓ (방화벽 허용 DNS로 우회)
[공격자 DNS] 쿼리에서 조각 복원 → 데이터 재조립
↓
[유출 완료] 은닉 채널로 데이터 외부 반출
| 지표 | 터널 신호 |
|---|---|
| 서브도메인 길이 | 50자+ |
| 고유 쿼리 수 | 수백~수천 |
| 쿼리 타입 | TXT/NULL |
| 도메인 | 단일 생소 |
긴 인코딩 서브도메인과 한 도메인의 대량 고유 쿼리가 DNS 터널의 결정적 지표입니다.
<!-- 실습 예시 룰: 적용 전 wazuh-logtest 및 테스트 환경 검증 필요 -->
<group name="local,syssec_e,exfiltration,">
<!-- 비정상적으로 긴 DNS 서브도메인(인코딩 데이터) -->
<rule id="104320" level="12">
<decoded_as>named</decoded_as>
<field name="query" type="pcre2">^[a-zA-Z0-9+/=_-]{50,}\.</field>
<description>DNS 터널링 의심(긴 인코딩 서브도메인)</description>
<mitre><id>T1048.001</id><id>T1071.004</id></mitre>
</rule>
</group>
도메인별 고유 쿼리 수 급증은 ELK 집계로 보완합니다. DNS 로그(named/dnsmasq) 수집이 전제입니다.
| DNS 터널 지표 | 신호 |
|---|---|
| 서브도메인 길이 | 50자+(인코딩) |
| 고유 쿼리 수 | 수백~수천 |
| 쿼리 타입 | TXT/NULL |
| 도메인 | 단일 생소 |
| 면접 포인트 | "DNS 터널은 방화벽 우회 은닉 유출 — 긴 서브도메인+다수 고유 쿼리로 탐지" |
다음 편 234. 중요 정보 접근 — ICMP·비표준 채널 유출 탐지 에서는 ICMP·비표준 채널 유출을 다루는 ICMP·비표준 채널 유출 탐지를 다룹니다.
이전 편: 232. 중요 정보 접근 — 외부 전송(아웃바운드) 유출 탐지
📚 시리즈 전체 보기: 시스템 보안 · 취약점