Scapy: Ausführliche Erklärung von DNS-Datenpaketen

DNS ist in Query Request und Query Response unterteilt, und die Nachrichtenstruktur von Request und Response ist grundsätzlich gleich. Das DNS-Paketformat ist in der Abbildung dargestellt.

      630f30f2510d46dda2fe3a38d95598c9.png

Die obige Abbildung zeigt das Paketformat von DNS. Darunter sind die sechs Felder Transaktions-ID, Flag, Fragenanzahl, Antwort-Ressourcendatensatznummer, maßgeblicher Nameserver-Zähler und zusätzliche Ressourcendatensatznummer DNS-Nachrichtenkopfzeilen mit insgesamt 12 Bytes.

Das gesamte DNS-Format ist hauptsächlich in drei Teile unterteilt, nämlich den Teil mit der Grundstruktur, den Problemteil und den Ressourcendatensatzteil. Der Inhalt und die Bedeutung jedes Teils werden im Folgenden im Detail vorgestellt.

Teil Infrastruktur

Der grundlegende Strukturteil der DNS-Nachricht bezieht sich auf den Nachrichtenkopf, wie in der Abbildung gezeigt.

 bf4c98f1f4b04aa4a3b7f9c047fe59b1.png

Die Bedeutung der einzelnen Felder in diesem Abschnitt ist wie folgt.

  • Transaktions-ID: die ID der DNS-Nachricht. Der Wert dieses Felds ist für die Anforderungsnachricht und die entsprechende Antwortnachricht gleich. Es kann verwendet werden, um zu unterscheiden, auf welche Anfrage die DNS-Antwortnachricht antwortet.
  • Flag: Das Flag-Feld im DNS-Paket.
  • Issue Count: Die Anzahl der DNS-Abfrageanforderungen.
  • Answer Resource Records: Die Anzahl der DNS-Antworten.
  • Anzahl der autoritativen Nameserver: Die Anzahl der autoritativen Nameserver.
  • Additional Resource Records: Die Anzahl der zusätzlichen Datensätze (die Anzahl der IP-Adressen, die autoritativen Nameservern entsprechen).


Das Flaggenfeld im Abschnitt Infrastruktur ist weiter in mehrere Felder unterteilt, wie in der Abbildung gezeigt.

 cdbc3d14327e4218baa48a164214cb2d.png

         In scapy, normalerweise ein DNS-Paket, sendet der Client ein DNSQR-Anforderungspaket und der Server sendet ein DNSRR-Antwortpaket. Ein DNSQR enthält den Auflösungsdomänennamen qname, den Auflösungstyp qtype und die Auflösungsklasse qclass. Ein DNSRR umfasst Auflösungsdomänenname rrname, Typtyp, Auflösungstyp rtype, TTL und so weiter.

Verwenden Sie die ls-Funktion, um die Struktur des DNS-Pakets wie folgt anzuzeigen:

length     : ShortField (Cond)                   = None            ('None')
id         : ShortField                          = 0               ('0')
qr         : BitField  (1 bit)                   = 0               ('0')
opcode     : BitEnumField                        = 0               ('0')
aa         : BitField  (1 bit)                   = 0               ('0')
tc         : BitField  (1 bit)                   = 0               ('0')
rd         : BitField  (1 bit)                   = 1               ('1')
ra         : BitField  (1 bit)                   = 0               ('0')
z          : BitField  (1 bit)                   = 0               ('0')
ad         : BitField  (1 bit)                   = 0               ('0')
cd         : BitField  (1 bit)                   = 0               ('0')
rcode      : BitEnumField                        = 0               ('0')
qdcount    : DNSRRCountField                     = 0               ('None')
ancount    : DNSRRCountField                     = 0               ('None')
nscount    : DNSRRCountField                     = 0               ('None')
arcount    : DNSRRCountField                     = 0               ('None')
qd         : DNSQRField                          = None            ('None')
an         : DNSRRField                          = None            ('None')
ns         : DNSRRField                          = None            ('None')
ar         : DNSRRField                          = None            ('None')
 

Geparst wie folgt:

Länge:

        Gibt die gesamte DNS-Datenlänge mit Ausnahme des von length belegten Teils an, der zwei Bytes belegt. Dieses Flag existiert nur in TCP-Anforderungspaketen.

Ausweis:

        Die ID des DNS-Pakets. Der Wert dieses Felds ist für die Anforderungsnachricht und die entsprechende Antwortnachricht gleich. Es kann verwendet werden, um zu unterscheiden, auf welche Anfrage die DNS-Antwortnachricht antwortet.

qr:

        Anfrage-/Antwort-Flag-Informationen abfragen. 0 für eine Anfrage, 1 für eine Antwort.

Operationscode:

        Operationscode.

        0Es ist eine normale DNS-Anfrage (Standardabfrage), 1 ist eine rDNS-Anfrage (umgekehrte Abfrage), 2 ist eine Serverstatusanfrage, 3 ist bedeutungslos, 4 ist eine Benachrichtigung (Notify),

5 ist Update und 6 bis 15 sind reserviert.

aa:

        Autorisierungsantwort. Dieses Feld ist in der Antwortnachricht gültig. Ein Wert von 1 bedeutet, dass der Nameserver autorisierend ist, ein Wert von 0 bedeutet, dass er nicht autorisierend ist.

TC:

       Gibt an, ob es abgeschnitten ist. 0 bedeutet keine Kürzung. 1 gibt an, dass die Antwort 512 Byte überschritten hat und abgeschnitten wurde, sodass nur die ersten 512 Byte zurückgegeben wurden.

rd:

       Rekursion erwarten. Dieses Feld kann in der Abfrage festgelegt und in der Antwort zurückgegeben werden. Wenn 1 dem Nameserver mitteilt, dass er diese Abfrage verarbeiten muss, wird diese Methode als rekursive Abfrage bezeichnet. Wenn dieses Bit 0 ist und der angeforderte Nameserver keine maßgebliche Antwort hat, gibt er eine Liste anderer Nameserver zurück, die die Anfrage beantworten können. Dieser Ansatz wird als iterative Abfrage bezeichnet.

Ra:

        Rekursion ist verfügbar. Dieses Feld erscheint nur in der Antwortnachricht. Wenn der Wert 1 ist, bedeutet dies, dass der Server rekursive Abfragen unterstützt.

z:

        Reserviertes Feld, MUSS in allen Request- und Reply-Nachrichten den Wert 0 haben.

Anzeige:

        0 bedeutet, dass der antwortende Server die digitale DNSSEC-Signatur in Bezug auf die Anfrage nicht verifiziert hat, 1 bedeutet, dass der antwortende Server die digitale DNSSEC-Signatur in Bezug auf die Anfrage verifiziert hat.

CD:

        0 gibt an, dass der Server relevante digitale DNSSEC-Signaturen verifiziert hat, und 1 gibt an, dass der Server relevante digitale DNSSEC-Signaturen nicht verifiziert hat.

Code:

        Das Rückgabecodefeld gibt den Fehlerstatus der Antwort an.

        0 ist normal

        1 bedeutet, dass das Format der Nachricht falsch ist (Formatfehler) und der Server die angeforderte Nachricht nicht verstehen kann.

        2 bedeutet, dass der Domain Name Server ausfällt (Server Failure), da der Server die Anfrage nicht verarbeiten kann.

        3 ist ein Namensfehler (Namensfehler), der nur für den autorisierten Domänennamensauflösungsserver von Bedeutung ist und anzeigt, dass der aufgelöste Domänenname nicht existiert.

        4 gibt an, dass der Abfragetyp nicht unterstützt wird (Not Implemented), dh der Domänennamenserver unterstützt den Abfragetyp nicht.

        5 ist Verweigert, weigert sich der Server im Allgemeinen aufgrund der festgelegten Richtlinie, eine Antwort zu geben, z. B. möchte der Server einigen Anfragenden keine Antwort geben.

        6 wurde für den Domänennamen angezeigt, sollte jedoch nicht angezeigt werden.

        7 existiert für den Satz RR, sollte aber nicht existieren.

        8 für die Menge RR existiert nicht, sollte aber existieren

        9 ist der Server nicht der autoritative Server in diesem Bereich

        10 für den Namen ist nicht in der Zone enthalten

        11 bis 15, reserviert

        16 ist falsche OPT-Version oder ungültige TSIG-Signatur

        17 ist ein unbekannter Schlüssel

        18 für die Unterschrift nicht innerhalb des Zeitrahmens

        19 ist falscher TKEY-Modus

        20 für doppelte Schlüsselnamen

        21 bedeutet, dass der Algorithmus nicht unterstützt

        22 für falsches Abschneiden

        23 bis 3840 reserviert

        3841 bis 4095 für den privaten Gebrauch

        4096 bis 65534 reserviert

qdcount:

        Die Anzahl der DNS-Suchanfragen.

Konto:

        Die Anzahl der DNS-Suchanfragen.

Anzahl:

        Die Anzahl der autoritativen Nameserver.

arcount:

        Die Anzahl der zusätzlichen Datensätze (die Anzahl der IP-Adressen, die autoritativen Nameservern entsprechen).

qd:

        Der DNS-Auflösungsteil sollte in der DNSQR-Klasse übergeben werden

ein:

        Es ist der Antwortteil der DNS-Auflösung, der DNSRR-Klasse.

ns:

        Autorisierende Nameserverzone.

ar:

       Bereich Zusatzinformationen.

DNS-Auflösungstyp

1. Eine Rekordanalyse

        Wählen Sie „A" für den Datensatztyp und geben Sie die IP-Adresse des Hosts ein, die vom Speicherplatzanbieter für den Datensatzwert bereitgestellt wird. Die MX-Priorität muss nicht festgelegt werden, und die TTL kann auf den Standardwert 3600 festgelegt werden.

 

2. CNAME-Eintragsanalyse

        Die Methode der Auflösungseinstellung des CNAME-Typs ist im Grunde die gleiche wie die des A-Datensatztyps, bei dem der Datensatztyp in „CNAME“ geändert wird und der Datensatzwert mit der Serverhostadresse gefüllt wird.

 

3.MX-Datensatzanalyse

        Das Parsing von MX-Einträgen wird für das Parsing von Postfächern verwendet. Wählen Sie MX als Datensatztyp, wählen Sie Allgemein als Leitungstyp oder fügen Sie gleichzeitig drei Datensätze mit dem Leitungstyp China Telecom, Netcom und Education Network hinzu, geben Sie die Server-IP-Adresse oder Alias-Adresse ein, die vom Postamtsanbieter bereitgestellt wird Legen Sie für den Datensatzwert die Standard-TTL auf 3600 fest und legen Sie die MX-Priorität fest. Geben Sie die vom Post-Office-Anbieter geforderten Daten ein, oder legen Sie standardmäßig 10 fest. Wenn mehrere MX-Datensätze vorhanden sind, sollte die Priorität auf unterschiedliche Daten festgelegt werden.

        Diese Auflösungstypen sind die Inhalte von DNSQR.qtype und DNSRR.type

DNSQR-Klassenauflösung

Diese Klasse enthält Folgendes

qname:

        Abfragename, im Allgemeinen der abzufragende Domänenname und manchmal eine IP-Adresse, die für die Rückwärtssuche verwendet wird. Zum Beispiel www.sina.com. Es besteht aus einer oder mehreren Sequenzen von Identifikatoren. Der Zählwert der Anzahl der ersten Bytes jedes Bezeichners, um die Länge des Bezeichners anzugeben, und jeder Name endet mit 0. Die Anzahl der Zählbytes muss zwischen 0 und 63 liegen. Dieses Feld benötigt keine Füllbytes.
qtyp:

        Der von der DNS-Abfrage angeforderte Ressourcentyp. Üblicherweise ist der Abfragetyp Typ A, was bedeutet, dass die zugehörige IP-Adresse aus dem Domainnamen bezogen wird. Einzelheiten siehe oben.
QKlasse:

        Adresstyp, normalerweise eine Internetadresse, mit dem Wert 1.

DNSRR-Klassenauflösung

Diese Klasse enthält Folgendes

rranme:

       Domänenname, bezieht sich auf den vom DNS angeforderten Domänennamen. Das heißt, der qname in der gesendeten DNSQR-Klasse.

Typ:

       Der Typ des Ressourceneintrags, der dem Wert des Abfragetyps im Abschnitt „Frage“ entspricht. Das heißt, der qtype in der gesendeten DNSQR-Klasse.

Klasse:

        Adresstyp, derselbe wie der Abfrageklassenwert im Frageabschnitt.

ttl:

        Die Überlebenszeit in Sekunden stellt den Lebenszyklus des Ressourceneintrags dar. Sie wird im Allgemeinen verwendet, wenn das Adressauflösungsprogramm den Ressourceneintrag abruft und entscheidet, die zwischengespeicherte Datenzeit zu speichern und zu verwenden. Es kann auch die Stabilität des Ressourceneintrags anzeigen, und stabilen Informationen wird ein großer Wert zugewiesen.

rdlen:

        Die Länge der Ressourcendaten.

Daten:

        Bezieht sich auf den Datenteil, der sich auf den Typ im DNS-Eintrag bezieht und die Daten der relevanten Ressourceneinträge angibt, die gemäß den Anforderungen des Abfragesegments zurückgegeben werden . Zum Beispiel für die IPv4-Adresse im A-Eintrag von DNS oder den Hostnamen und seine Priorität im MX-Eintrag.

Verweise:

Feldanalyse des Python-Scapy-DNS-Pakets – Queen Idler – Blog Park

Verwenden von scapy zum Simulieren eines DNS-Amplifikationsangriffs – Capricorn.python – 博客园

Python verwendet Scapy, um den DNS-Verkehr zu manipulieren – lyshark – 博客园

"Ungültige Rdata" im DNS

Analyse des DNS-Nachrichtenformats (sehr detailliert)

Eine kurze Analyse von DNS-Flags - imlonghao

 

 

 

 

 

Acho que você gosta

Origin blog.csdn.net/m0_71713477/article/details/128688373
Recomendado
Clasificación