Hallo!
Vor kurzem stand ich vor der Aufgabe, das Auflösen von DNS-Namen in MacOS zu debuggen. Ich fand kein vollwertiges Material darüber, wie es genau passiert, ich musste die Informationen selbst sammeln.
Folgendes haben wir herausgefunden.
Für Aufgaben im Zusammenhang mit DNS in macOS ist ein Daemon namens mDNSResponder verantwortlich. Abenteuer ereigneten sich in seinem Leben - er wurde durch den entdeckten Dämon (Yosemite) ersetzt, der viel brach und viele Probleme verursachte. Ein Jahr später kam Apple zur Besinnung und gab (El Capitan) den bewährten mDNSResponder zurück, der sofort etwa 300 Fehler reparierte und Stabilität zurückgab.
mDNSResponder ist Teil von
Bonjour - einer Reihe von Technologien, die darauf abzielen, mit einem Gerät in einem Netzwerk zu arbeiten, ohne dass eine Konfiguration erforderlich ist. Dazu gehören die Suche nach Diensten, die automatische Zuweisung von Adressen und das Auflösen von Namen. Es ist Bonjour, das verwendet wird, wenn Sie Ihr iPhone herausnehmen und nach einem Apple TV oder Drucker suchen.
Bonjour hat Open Source Code bzw. mDNSResponder. Dies vereinfacht die Aufgabe, wenn Sie der ultimativen Wahrheit auf den Grund gehen und alles zeigen müssen, was verborgen ist. Das Archiv verfügt bereits über vorgefertigte Implementierungen für Windows, Posix und VxWorks.
Der Daemon verarbeitet UnicastDNS und MulticastDNS. UnicastDNS ist das übliche DNS, das wir gewohnt sind und kennen. MulticastDNS ist ein Protokoll zur Verwendung von DNS in lokalen Netzwerken, für das kein Server erforderlich ist. Wenn das Gerät jemanden finden muss - es sendet eine Frage - "Frage" Multicast-Paket und erhält eine Antwort vom Gerät mit dem angeforderten Namen (falls vorhanden). Das Protokoll selbst ist im gleichnamigen
RFC ausführlich beschrieben.
Es sind die Funktionen von MulticastDNS, die der
Responder - Software für Angriffe auf das lokale Netzwerk - missbraucht. Nach dem Start reagiert es heimtückisch auf alle mDNS-Anfragen und lockt ahnungslose Opfer in seine Fänge.
Es war ein Exkurs - und nun zur Hauptfrage - wie der aktuelle DNS-Cache und der allgemeine Status der DNS-Einstellungen angezeigt werden.
Wir führen also die folgenden Schritte aus:
- Im Terminal schreiben wir:
sudo log config --mode "private_data:on"
Mit diesem Befehl können wir die Ausgabe sehen, andernfalls wird sie unter dem privaten Stecker versteckt - Öffnen Sie die Konsole und wählen Sie unser Gerät aus:

und in den Filter schreiben wir mDNSResponder

- Wir führen im Terminal aus:
sudo killall -INFO mDNSResponder
- Öffnen Sie die Konsole wieder und erhalten Sie eine schöne Ausgabe, die wir nun ein wenig analysieren werden:

Der Status der DNS-Einstellungen ist eine große Leinwand, die in Abschnitte unterteilt ist. Das interessanteste von ihnen:
Cache - Der DNS-Cache wird hier direkt gespeichert:
------------ Cache ------------- Slt Q TTL if U Type rdlen 3 4290 en0 + PTR 33 _companion-link._tcp.local. PTR VMAC._companion-link._tcp.local. 3 4273 en0 + PTR 37 _companion-link._tcp.local. PTR VMAC\032(2)._companion-link._tcp.local. 6 107951 -U- - Addr 0 isafronov-G8WP. Addr 6 107951 -U- SOA 64 . SOA a.root-servers.net. nstld.verisign-grs.com. 2019011700 1800 900 604800 86400 6 107951 -U- - AAAA 0 isafronov-G8WP. AAAA 6 107951 -U- SOA 64 . SOA a.root-servers.net. nstld.verisign-grs.com. 2019011700 1800 900 604800 86400 9 763 -U- CNAME 37 1-courier.push.apple.com. CNAME 1.courier-push-apple.com.akadns.net. 13 8819 -U- CNAME 22 ax.itunes.apple.com.edgesuite.net. CNAME a1108.gi3.akamai.net.
Der Inhalt der Datei / etc / hosts - nur für den Fall:
--------- /etc/hosts --------- State Interface KnownUnique LO 4 localhost. Addr 127.0.0.1 KnownUnique LO 16 localhost. AAAA ::1 KnownUnique LO 4 vmware-localhost. Addr 127.0.0.1 KnownUnique LO 16 vmware-localhost. AAAA ::1 KnownUnique LO 4 broadcasthost. Addr 255.255.255.255
MDNS-Statistiken - doppelte Namen, Anzahl der Pakete, Schnittstellenereignisse:
--- MDNS Statistics --- Name Conflicts 0 KnownUnique Name Conflicts 0 Duplicate Query Suppressions 2045 KA Suppressions 0 KA Multiple Packets 0 Poof Cache Deletions 203 -------------------------------- Multicast packets Sent 8211 Multicast packets Received 22382 Remote Subnet packets 1 QU questions received 25960 Normal multicast questions 62197 Answers for questions 4259 Unicast responses 0 Multicast responses 0 Unicast response Demotions 0 -------------------------------- Sleeps 181 Wakeups 182 Interface UP events 665 Interface UP Flap events 48 Interface Down events 817 Interface DownFlap events 16 Cache refresh queries 2876 Cache refreshed 28935 Wakeup on Resolves 0
Liste der Netzwerkschnittstellen:
------ Network Interfaces ------ Struct addr Registered MAC BSSID Interface Address 00007FA2FD834E00 11, 00007FA2FD834E00, v6 utun0 00:00:00:00:00:00 00:00:00:00:00:00 Active A fe80::ebfb:c666:8f7b:62ed 00007FA2FF01B800 9, 00007FA2FF01B800, v6 awdl0 DE:14:B1:E7:21:33 00:00:00:00:00:00 Active v6 AM fe80::dc14:b1ff:fee7:2133 00007FA2FD829C00 7, 0000000000000000, v4 en0 F4:5C:89:8E:9D:C1 E4:8D:8C:61:7F:5D 192.168.1.73 dormant for 1943 seconds 00007FA2FD00C200 13, 00007FA2FD00C200, v4 en5 42:4D:7F:A3:50:1B 00:00:00:00:00:00 Active v4 AM 169.254.150.120 00007FA2FE008C00 7, 00007FA2FE008C00, v4 en0 F4:5C:89:8E:9D:C1 E4:8D:8C:61:7F:5C Active v4 AM p 192.168.1.73
Liste der DNS-Server:
--------- DNS Servers(2) ---------- DNS Server . en0 127.0.0.1:53 0 Unscoped 30 18283 v4 v6 !cell !exp !clat46 !DNSSECAware DNS Server . en0 127.0.0.1:53 0 InterfaceScoped 30 18291 v4 v6 !cell !exp !clat46 !DNSSECAware v4answers 1 v6answers 1 Last DNS Trigger: 140697 ms ago
Die Welt der internen und externen Interaktionen der MacOS-Subsysteme ist riesig und voller Geheimnisse. Die Arbeit mit Domainnamen ist nur ein kleiner Teil davon. Zur weiteren Lektüre empfehle ich:
- Apple White Papers
- Explorer Malware- Blog und * OS-Enthusiast Patrick Wardle
- Forscherseite und Bücher und Praxis * OS Johnatan Levin