DNS(도메인 이름 시스템)는 securitytut.com과 같은 사람에게 친숙한 URL을 183.33.24.13과 같은 IP 주소로 변환하는 프로토콜입니다. DNS 메시지는 각 통신의 시작으로만 사용되며 데이터 전송을 위한 것이 아니기 때문에 많은 조직에서 악의적인 활동에 대해 DNS 트래픽을 모니터링하지 않습니다. 결과적으로 DNS 기반 공격은 네트워크에 대해 실행될 경우 효과적일 수 있습니다. DNS 터널링은 그러한 공격 중 하나입니다.
DNS 터널링의 예는 다음과 같습니다.

공격자는 많은 오픈 소스 DNS 터널링 키트 중 하나를 신뢰할 수 있는 DNS 이름 서버(NS) 및 악성 페이로드에 통합합니다.
2. 공격자의 인프라에서 IP 주소(예: 1.2.3.4)를 할당하고 도메인 이름(예: attackdomain.com)을 등록하거나 재사용합니다. 레지스트라는 최상위 도메인(.com) 이름 서버에 attackordomain.com에 대한 요청을 1.2.3.4에 매핑된 DNS 레코드가 있는 ns.attackerdomain.com으로 보내도록 알립니다.
3. 공격자는 악성 페이로드로 시스템을 손상시킵니다. 원하는 데이터를 얻으면 페이로드는 짧은 문자열(3KJ242AIE9, P028X977W,...)로 나누어진 일련의 32자(0-9, AZ)로 데이터를 인코딩합니다.
4. 페이로드는 각 문자열을 도메인 이름의 일부(예: 3KJ242AIE9.attackerdomain.com)로 사용하여 공격자의 도메인에 대한 수천 개의 고유한 DNS 레코드 요청을 시작합니다. 공격자의 인내심과 은밀성에 따라 의심스러운 네트워크 활동을 피하기 위해 며칠 또는 몇 달에 걸쳐 요청 간격을 둘 수 있습니다. 5. 요청이 재귀 DNS 해석기로 전달됩니다. 해결하는 동안 요청은 공격자의 권한 있는 DNS 이름 서버로 전송됩니다. 6. 터널링 키트는 인코딩된 문자열을 구문 분석하고 유출된 데이터를 재구성합니다. 참조: https://learn-umbrella.cisco.com/i/775902-dns-tunneling/0
5. 요청이 재귀 DNS 해석기로 전달됩니다. 해결하는 동안 요청은 공격자의 권한 있는 DNS 이름 서버로 전송됩니다.
6. 터널링 키트는 인코딩된 문자열을 구문 분석하고 유출된 데이터를 재구성합니다.
도메인 이름의 일부(예: 3KJ242AIE9.attackerdomain.com). 공격자의 인내심과 은밀성에 따라 의심스러운 네트워크 활동을 피하기 위해 며칠 또는 몇 달에 걸쳐 요청 간격을 둘 수 있습니다. 5. 요청이 재귀 DNS 해석기로 전달됩니다. 해결하는 동안 요청은 공격자의 권한 있는 DNS 이름 서버로 전송됩니다. 6. 터널링 키트는 인코딩된 문자열을 구문 분석하고 유출된 데이터를 재구성합니다. 참조: https://learn-umbrella.cisco.com/i/775902-dns-tunneling/0