DNS 터널링 (DNS Tunneling)
한 줄 정의: DNS 프로토콜의 질의·응답 메시지 안에 다른 데이터를 은닉해 전송함으로써, DNS를 우회 통신 채널로 악용하는 기법입니다.
쉽게 풀면
회사 출입 시스템에서 명함만 확인하는 검문소가 있다고 할 때, 명함 뒷면에 몰래 비밀 쪽지를 적어 통과시키는 것과 비슷합니다. DNS는 원래 도메인 이름을 IP 주소로 바꿔주는 단순한 조회 기능만 하는데, 많은 방화벽이 DNS 트래픽은 잘 검사하지 않고 통과시키는 경향이 있습니다. 공격자는 이 허점을 이용해 DNS 질의와 응답 안에 실제로는 파일이나 명령 데이터를 숨겨 몰래 주고받습니다.
왜 중요한가
DNS 터널링은 방화벽 우회, 데이터 유출(exfiltration), 명령제어(C2) 채널 구축 등에 악용될 수 있어, 네트워크 이상 탐지와 DNS 트래픽 분석 연구에서 중요한 사례로 다뤄집니다. 탐지가 어려운 은닉 통신 기법의 대표 예시로도 자주 인용됩니다.
논문에서는 이렇게 쓰입니다
"제안 시스템은 DNS 질의의 엔트로피와 요청 빈도를 분석하여 DNS 터널링을 통한 은닉 통신을 탐지한다."
정상적인 DNS 조회와 다른 통계적 특징을 이용해 몰래 숨긴 통신을 찾아낸다는 뜻입니다.
"공격자는 DNS 터널링을 이용하여 방화벽에 차단되지 않은 채 내부 데이터를 외부로 유출하였다."
방화벽이 DNS 트래픽을 잘 막지 않는 점을 악용해 데이터를 몰래 빼돌렸다는 사례입니다.
조금 더 깊게 보면
DNS 터널링은 통상 도메인 이름의 서브도메인 부분에 인코딩된 데이터를 담아 질의를 보내고, 응답의 TXT나 CNAME 레코드 등을 통해 데이터를 되돌려받는 방식으로 동작합니다. 탐지는 비정상적으로 긴 도메인 이름, 높은 질의 빈도, 특이한 문자 분포(엔트로피) 등을 분석하는 방법이 흔히 사용됩니다.
주의할 점
정상적인 클라우드 서비스나 CDN도 다소 특이한 DNS 패턴을 보일 수 있어, 단순 통계만으로 터널링 여부를 단정하면 오탐이 발생할 수 있습니다.