Lesenotizen zu „Eye of the Gods: Nmap Network Security Audit Technology Secret“.

Lesenotizen zu „Eye of the Gods: Nmap Network Security Audit Technology Secret“.

Autor: Li Huafeng

◆ Vorwort

NSE ist eine revolutionäre Innovation in Nmap. Durch die leistungsstarke Skript-Engine (NSE) von Nmap kann jeder Benutzer seinen eigenen Code zu Nmap hinzufügen, was Nmap zu einem leistungsstarken Tool macht, mit dem Benutzer Funktionen frei anpassen können.

◆ 2.1 Einführung in die Active Host Discovery-Technologie

Wenn Sie wissen möchten, ob ein Host im Netzwerk aktiv ist, können Sie auch diese Methode „An die Tür klopfen“ verwenden. In der Realität müssen Sie jedoch die Form des Sendens von Datenpaketen anstelle der Aktion „An die Tür klopfen“ verwenden Das heißt, die aktive Host-Erkennungstechnologie sendet tatsächlich Datenpakete an den Zielcomputer. Wenn der andere Host diese Datenpakete empfängt und eine Antwort gibt, kann festgestellt werden, dass dieser Host ein aktiver Host ist.

◆ 2.3 Aktive Host-Erkennungstechnologie basierend auf dem ARP-Protokoll

Das Prinzip der auf dem ARP-Protokoll basierenden Active Host Discovery-Technologie lautet: Wenn Sie wissen möchten, ob der Host mit der IP-Adresse *. . . * im selben Netzwerksegment ein aktiver Host ist, müssen Sie lediglich eine ARP-Anfrage erstellen Paket und senden Sie es. Wenn Sie eine Antwort erhalten, ist der Host aktiv.

◆ 2.4 Aktive Host-Erkennungstechnologie basierend auf dem ICMP-Protokoll

Eine Abfragenachricht wird durch ein Paar aus Anfrage und Antwort definiert. Das heißt, um einige Informationen zu erhalten, kann Host A ein ICMP-Paket an Host B senden, und Host B gibt nach Erhalt des Pakets eine Antwort.

Zu den für die Verwendung in ICMP geeigneten Abfragenachrichten gehören die folgenden drei Typen. 1. Antwortanforderung und Antwort werden verwendet, um zu testen, ob die Verbindung am Sende- und Empfangsende und das TCP/IP-Protokoll des Zielhosts normal sind. Solange es empfangen wird, ist es normal. Wir verwenden den Ping-Befehl in unserem täglichen Leben am häufigsten. Mithilfe der Antwortanforderung und der Antwort sendet Host A eine ICMP-Nachricht an Host B. Wenn unterwegs keine Anomalie auftritt (z. B. vom Router verworfen), tut dies das Ziel Wenn ein Host nicht auf ICMP reagiert oder die Übertragung fehlschlägt, gibt Host B eine ICMP-Nachricht zurück, die angibt, dass Host B ein aktiver Host ist. 2. Zeitstempelanfragen und -antworten Mit der ICMP-Zeitstempelanfrage kann ein System ein anderes System nach der aktuellen Zeit fragen. Der vorgeschlagene zurückgegebene Wert ist die Anzahl der Millisekunden seit Mitternacht in der koordinierten Weltzeit (UTC) (frühe Referenzhandbücher betrachten UTC als Greenwich Mean Time). Wenn Sie wissen möchten, ob Host B online ist, können Sie auch eine ICMP-Zeitstempelanfrage an Host B senden. Wenn Sie eine Antwort erhalten, kann Host B als online betrachtet werden. Dabei kommt es natürlich nicht auf den Inhalt des Datenpakets an, sondern darauf, ob eine Antwort eingegangen ist. 3. Adressmaskenanforderung und Antwort Die ICMP-Adressmaskenanforderung wird vom Quellhost gesendet und für das festplattenlose System verwendet, um während des Startvorgangs eine eigene Subnetzmaske zu erhalten. Viele Leute hier denken vielleicht, dass unser System die meiste Zeit kein festplattenloses System ist. Ist diese Technologie nutzlos? Obwohl der RFC besagt, dass ein System keine Antworten auf Adressmasken senden kann, es sei denn, es ist ein autorisierter Agent für die Adressmaske (um ein autorisierter Agent zu sein, muss es speziell für das Senden dieser Antworten konfiguriert sein). Die meisten Hosts senden jedoch eine Antwort, wenn sie eine Anfrage erhalten. Wenn Sie wissen möchten, ob Host B online ist, können Sie auch eine ICMP-Maskenadressenanforderung an Host B senden. Wenn Sie eine Antwort erhalten, kann Host B als online betrachtet werden.

◆ 2.5 Aktive Host-Erkennungstechnologie basierend auf dem TCP-Protokoll

In Nmap gibt es zwei häufig verwendete TCP-Protokoll-Scan-Methoden, nämlich TCP-SYN-Scannen und TCP-ACK-Scannen. Diese beiden Scan-Methoden werden tatsächlich mithilfe des Drei-Wege-Handshakes von TCP implementiert.

Nach dem Senden eines SYN-Pakets bedeutet dies, dass der Zielhost aktiv ist, solange ein Paket empfangen wird, unabhängig davon, ob es sich um ein SYN/ACK-Paket oder ein RST-Paket handelt. Wenn keine Pakete empfangen werden, bedeutet dies, dass der Zielhost nicht online ist.

Nach dem Empfang dieses Datenpakets stellt der Host, auf dem sich Nmap befindet, keine wirkliche Verbindung mit dem Zielhost her, da der Zweck nur darin besteht, festzustellen, ob der Zielhost ein aktiver Host ist. Daher muss diese Verbindung beendet werden. Die Methode Das Beenden der Verbindung im TCP-Protokoll besteht darin, dem Zielhost ein RST-Paket zu senden.

Nmap sendet direkt ein TCP/ACK-Paket an den Zielhost. Der Zielhost kann offensichtlich nicht verstehen, was vor sich geht, und natürlich ist es unmöglich, erfolgreich eine TCP-Verbindung herzustellen. Daher kann er nur ein Paket mit dem RST-Flag an senden Der Host, auf dem sich Nmap befindet, zeigt an, dass diese TCP-Verbindung nicht hergestellt werden konnte

Nachdem Nmap das Datenpaket gesendet hatte, erhielt es keine Antwort. Derzeit gibt es zwei Möglichkeiten: Zum einen wurde das Datenpaket vom Sicherheitsmechanismus der anderen Partei herausgefiltert, da das Ziel das Datenpaket überhaupt nicht erhalten hat und das andere ist: Der Zielhost ist kein aktiver Host. Nmap urteilt normalerweise nach der zweiten Situation, die zu einer falschen Schlussfolgerung führt: Das Ziel ist kein aktiver Host.

◆ 2.6 Aktive Host-Erkennungstechnologie basierend auf dem UDP-Protokoll

Wenn ein UDP-Port ein UDP-Paket empfängt und geschlossen ist, wird ein nicht erreichbares ICMP-Port-Paket an die Quelle zurückgesendet. Wenn er geöffnet ist, wird das Paket ignoriert, d. h. es wird verworfen, ohne dass Informationen zurückgegeben werden.

Der Nachteil besteht darin, dass die Zuverlässigkeit der Scanergebnisse relativ gering ist. Denn wenn ein UDP-Paket gesendet, aber keine Antwort empfangen wird, kann dies daran liegen, dass der UDP-Port offen ist, oder dass das Paket während der Übertragung verloren gegangen ist. Außerdem ist das Scannen langsam. Der Grund dafür ist, dass RFC1812 die Generierungsgeschwindigkeit von ICMP-Fehlermeldungen einschränkt. Linux begrenzt beispielsweise die Generierungsrate von ICMP-Nachrichten auf 80 alle 4 Sekunden. Wenn diese Grenze überschritten wird, wird eine Viertelsekunde lang pausiert.

TCP muss die offenen Ports des Zielhosts scannen, während UDP die geschlossenen Ports des Zielhosts scannen muss. Während des Scanvorgangs müssen häufig verwendete UDP-Protokollports wie DNS (Port 53) und SNMP (161) vermieden werden. Daher ist es beim Scannen am besten, einen Port mit einem relativ großen Wert auszuwählen, z. B. 35462.

◆ 2.7 Aktive Host-Erkennungstechnologie basierend auf dem SCTP-Protokoll

Das SCTP-Protokoll erfüllt die gleichen Aufgaben wie TCP. Aber es gibt einen großen Unterschied zwischen den beiden. Erstens wird das TCP-Protokoll im Allgemeinen für Verbindungen mit einer Adresse verwendet, während SCTP für Verbindungen mit mehreren Adressen verwendet werden kann. Zweitens basiert das TCP-Protokoll auf Byteströmen und SCTP auf Nachrichtenströmen. TCP kann nur einen Stream unterstützen, während eine SCTP-Verbindung (Assoziation) mehrere Streams (Stream) gleichzeitig unterstützen kann. Schließlich wird der Aufbau einer TCP-Verbindung durch einen Drei-Wege-Handshake erreicht, während SCTP durch einen Vier-Wege-Handshake-Mechanismus erreicht wird, wodurch Angriffe wirksam vermieden werden können. Bei SCTP verwendet der Client eine INIT-Nachricht, um eine Verbindung herzustellen, und der Server antwortet mit einer INIT-ACK-Nachricht, die ein Cookie (den eindeutigen Kontext, der die Verbindung identifiziert) enthält. Der Client antwortet dann mit einer COOKIE-ECHO-Nachricht, die das vom Server gesendete Cookie enthält. Der Server sollte Ressourcen für diese Verbindung zuweisen und darauf antworten, indem er eine COOKIE-ACK-Nachricht an den Client sendet.

◆ 2.10 Analyse der Host Discovery-Technologie

Nmap bietet die Option –packet-trace, mit der Sie beobachten können, welche Pakete Nmap sendet und welche Pakete es empfängt. Mit dieser Forschungsmethode können Sie ein tieferes Verständnis des Funktionsprinzips von Nmap erlangen.

Wenn Nmap die Hosterkennung durchführt, ermittelt Nmap unabhängig von der von Ihnen angegebenen Methode zunächst, ob sich der Zielhost im selben Subnetz wie er selbst befindet. Wenn sie sich im selben Subnetz befinden, verwendet Nmap direkt die Scanmethode des ARP-Protokolls und nicht die Methode, die Sie angeben.

◆ 3.2 Klassifizierung von Häfen

Bekannter Port: Dieser Porttyp ist der am häufigsten verwendete Port und wird daher auch als „häufig verwendeter Port“ bezeichnet. Die verwendeten Ports von 0 bis 1024 sind bekannte Ports. Normalerweise wurden diese Ports explizit mit dem Protokoll eines bestimmten Dienstes verknüpft und sollten im Allgemeinen nicht geändert werden. Beispielsweise führt der bekannte Port 80 immer die HTTP-Kommunikation aus, und Telnet gilt immer für Port 23. Die Funktionen dieser Ports sind grundsätzlich vereinbart, so dass sie nicht von anderen Programmen genutzt werden.

Registrierter Port: Dieser Teil der Portnummer reicht von 1025 bis 49151. Sie sind normalerweise mit einigen Diensten verbunden, es gibt jedoch keine klare Regelung, und je nach tatsächlicher Situation können unterschiedliche Programme definiert werden.

Dynamischer und/oder privater Port (dynamischer und/oder privater Port): Dieser Teil des Portnummernbereichs reicht von 49152 bis 65535. Im Allgemeinen sollten gängige Dienste diese Ports nicht verwenden. Da diese Ports jedoch nicht leicht aufzufallen sind, lieben einige Programme, insbesondere einige Trojaner oder Virenprogramme, diese Ports sehr.

◆ 3.4 Verschiedene Port-Scan-Techniken in Nmap

Zuerst sendet Nmap ein SYN-Paket, das eine Verbindung zu einem Port des Zielhosts anfordert, und der Zielcomputer antwortet mit SYN/ACK, nachdem er das SYN-Paket empfangen hat, und Nmap sendet ein RST-Paket, um die Trennung anzufordern, nachdem er das SYN/ empfangen hat. ACK. Offene Verbindung statt ACK-Antwort. Auf diese Weise wird der Drei-Wege-Handshake nicht abgeschlossen und es kann keine normale TCP-Verbindung hergestellt werden. Daher wird dieser Scan nicht im Systemprotokoll aufgezeichnet. Diese Scantechnik hinterlässt im Allgemeinen keine Scanspuren auf dem Zielhost.

Diese Scan-Methode ist dem SYN-Scannen tatsächlich sehr ähnlich, mit der Ausnahme, dass diese Scan-Methode den TCP-Drei-Wege-Handshake abschließt.

Die Geschwindigkeit des UDP-Scannens ist recht langsam

Während des Scanvorgangs kann es sein, dass der Status einiger Ports gefiltert wird. Der tatsächliche Status dieser Ports kann offen oder geschlossen sein. Um die tatsächlich geöffneten Ports dieser Ports zu finden, deren Status gefiltert wird, sind weitere Tests erforderlich

Nmap sendet eine UDP-Prüfung an jeden offenen|gefilterten Port. Wenn der Zielport auf eine Prüfung antwortet, wird der Status in „Offen“ geändert

Die TCP-FIN-Scan-Methode sendet ein FIN-Paket an den Zielport

Die TCP-NULL-Scan-Methode besteht darin, ein Paket, das keine Flags enthält, an den Zielport zu senden

Die TCP-XMAS-Tree-Scanmethode besteht darin, ein Paket mit FIN-, URG- und PUSH-Flags an den Zielport zu senden

Diese Scanmethode ist sehr durchdacht: Während des gesamten Scanvorgangs muss der Scanner keine Datenpakete an den Zielhost senden.

Das Prinzip dieser Abtastung wird im Folgenden beschrieben. Schritt 1: Ermitteln Sie den IP-ID-Wert des Drittanbieters und zeichnen Sie ihn auf. Schritt 2: Erstellen Sie ein Datenpaket, dessen Quelladresse ein Drittanbieter-Host auf diesem Computer ist, und senden Sie das Datenpaket an den Ziel-Host-Port. Abhängig vom Status des Ziel-Ports kann der Ziel-Host den IP-ID-Wert verursachen der Drittanbieter-Host zu erhöhen. Schritt 3: Kommen Sie zurück und überprüfen Sie den IP-ID-Wert des Drittanbieter-Hosts. Vergleichen Sie die beiden Werte. Zu diesem Zeitpunkt sollte der IP-ID-Wert des Drittanbieter-Hosts um 1 bis 2 erhöht werden. Wenn er nur um 1 erhöht wird, bedeutet dies, dass der Drittanbieter-Host in diesem Zeitraum keine Datenpakete gesendet hat. In diesem Fall , wird davon ausgegangen, dass der Port des Zielhosts geschlossen ist. Wenn 2 hinzugefügt wird, bedeutet dies, dass der Drittanbieter-Host in diesem Zeitraum Datenpakete nach außen gesendet hat, was bedeutet, dass der Port des Ziel-Hosts geöffnet ist.

Durch die Leerlauf-Scan-Methode wird die Adresse des Drittanbieters im Protokoll des Zielhosts aufgezeichnet

Normalerweise dauert ein SYN-Scan nur wenige Sekunden, während der Idle-Scan viel länger als diese Zeit dauert. Ein weiterer Punkt ist, dass der Breitbandanbieter in vielen Fällen den Versand gefälschter Datenpakete nicht zulässt. Und der wichtigste Punkt ist, dass Sie beim Scannen im Leerlauf einen funktionierenden Drittanbieter-Host finden müssen

Zunächst muss die Methode zur Generierung der IP-ID dieses Drittanbieter-Hosts insgesamt erhöht werden. Anstatt bei jeder Kommunikation von selbst zu beginnen, ist es am besten, untätig zu bleiben, da dies zu einer großen Menge irrelevanten Datenverkehrs führt zu äußerst verwirrenden Ergebnissen. Ideal ist natürlich auch die Verzögerung zwischen Host und Dritthost.

Wie kann man also prüfen, ob ein Hoster als Dritthoster geeignet ist? Die erste Methode besteht darin, beim Scannen eines Hosts einen Port-Scan und eine Betriebssystemerkennung durchzuführen und den ausführlichen Modus (-v) zu starten. Das Betriebssystem erkennt die IP-ID-Wachstumsmethode. Wenn der Rückgabewert „IP-ID-Sequenzgenerierung“ lautet: Inkrementell“, was eine gute Nachricht ist. Sie müssen jedoch sicherstellen, dass viele Systeme tatsächlich für jede Kommunikation eine IP-ID öffnen. Darüber hinaus ist diese Methode nicht anwendbar, wenn dieser Host viel mit der Außenwelt kommuniziert. Die zweite Methode besteht darin, das ipidseq NSE-Skript auszuführen.

◆ 4.2 Einführung in den Fingerabdruck des Betriebssystems

Methoden zur Fernbestimmung des Betriebssystems eines Zielcomputers können im Allgemeinen in zwei Kategorien unterteilt werden. ▯ Passive Methode: Senden Sie keine Datenpakete an das Zielsystem, sondern sammeln Sie mithilfe verschiedener Paketerfassungstools die durch das Netzwerk fließenden Datenpakete und ermitteln Sie dann aus diesen Paketen die Betriebssysteminformationen des Zielcomputers. ▯ Aktive Methode: Bedeutet, dass der Client aktiv Informationen an den Remote-Host sendet. Der Remote-Host antwortet im Allgemeinen auf die Informationen und antwortet mit einigen Informationen. Der Absender kann das Betriebssystem des Remote-Hosts kennen, indem er die zurückgegebenen Informationen analysiert. Typ. Bei diesen Informationen kann es sich um Informationen handeln, die über normale Netzwerkprogramme wie Telnet, FTP usw. mit dem Host ausgetauscht werden, oder um einige sorgfältig erstellte, normale oder unvollständige Datenpakete.

Nmap verwendet keinen reaktiven Ansatz. Der proaktive Ansatz in Nmap verwendet Betriebssystem-Fingerprinting-Pakete mit bis zu 15 Sonden.

Der Teil von Nmap, der das Paket anpasst, umfasst Fenstergröße, Fensterfeld, Fragmentierungskennung, Zeitstempel, Sequenznummer und andere Details, wie z. B. TTL.

◆ 4.5 So verwenden Sie Nmap für die Diensterkennung

Nmap bietet präzisere Dienst- und Versionserkennungsoptionen, die durch Hinzufügen der Option -sV erkannt werden können.

Die Nmap-service-probes-Datenbank enthält passende Ausdrücke zum Abfragen von Probe-Nachrichten verschiedener Dienste und zum Parsen und Identifizieren von Antworten. Das Versionserkennungsprogramm vergleicht das Erkennungsergebnis mit dem Inhalt in der Nmap-service-probes-Datenbank und kann bei erfolgreicher Übereinstimmung mit einem davon den spezifischen Dienst bestätigen, der auf dem Zielport ausgeführt wird.

◆ 6.1 Nmaps Tarntechnologie

Von Nmap gesendete Probe-Pakete können mit der Option -f fragmentiert werden. Auf diese Weise wird das ursprüngliche Datenpaket in mehrere Teile aufgeteilt und die Abwehrmechanismen des Zielnetzwerks, wie Paketfilterung, Firewall usw., erschweren die Erkennung dieser Datenpakete.

Anhand der Daten, die durch die Erfassung von Paketen mit Wireshark gewonnen wurden, ist deutlich zu erkennen, dass eine große Anzahl von Paketen fragmentierte IP-Protokollkennungen enthält. Dies zeigt, dass es sich bei diesen Datenpaketen um fragmentierte Nachrichten handelt.
Fügen Sie hier eine Bildbeschreibung ein

Die Maximum Transmission Unit (MTU) bezieht sich auf die maximale Paketgröße (in Bytes), die eine bestimmte Schicht eines Kommunikationsprotokolls passieren kann. Im Allgemeinen beträgt der MTU-Wert von Ethernet standardmäßig 1500 Byte. Dies bedeutet, dass, wenn die Protokollschicht des Absenders eine Datennachricht mit einer Länge von 2008 Byte an die IP-Schicht sendet, die Nachricht nach dem Hinzufügen eines 20-Byte-IP-Headers hinzugefügt wird. Die Gesamtlänge des IP-Pakets beträgt 2028 Bytes, da 2028 größer als 1500 ist, sodass das Datenpaket fragmentiert wird

Verwenden Sie die Option --mtu in Nmap, um die Größe der MTU anzugeben

Verwenden Sie auch Wireshark, um das gesendete Datenpaket zu erfassen und die Details anzuzeigen. Die Länge des Datenfelds im erfassten Datenpaket beträgt 16 Byte, wie in der Abbildung dargestellt. Es ist ersichtlich, dass die Größe des Datenbereichs jedes gesendeten Pakets auf 16 Byte geändert wurde.
Fügen Sie hier eine Bildbeschreibung ein

Nmap unterstützt die Verwendung von Decoy-Hosts. Verwenden Sie beim Scannen die Option -D, um Decoy-Hosts anzugeben, und verwenden Sie Kommas, um jede Decoy-IP-Adresse zu trennen. Sie können auch Ihre eigene echte IP als Decoy verwenden. Sie können die ME-Option für Ihre verwenden eigene IP-Adresse. Einige gängige Port-Scan-Detektoren (z. B. der hervorragende scanlogd von Solar Designer) melden diese echte IP nicht, wenn die ME-Option an Position 6 oder höher verwendet wird. Wenn Sie die ME-Option nicht verwenden, platziert Nmap die echte IP an einem zufälligen Ort.

Die Decoy-Host-Option kann während des ersten Ping-Scans verwendet werden (ICMP, SYN, ACK usw.) Bei der Versionserkennung oder dem Scannen von TCP-Verbindungen ist die Option „Decoy Host“ jedoch ungültig

Verwenden Sie Wireshark, um die gesendeten Datenpakete zu erfassen. Die erfassten Datenpakete sind in der Abbildung dargestellt. Anhand der von Wireshark erfassten Täuschungspakete können wir erkennen, dass Nmap eine große Anzahl von Täuschungshosts gefälscht hat, um das Ziel zu scannen
Fügen Sie hier eine Bildbeschreibung ein

Bei der Netzwerksicherheitskontrolle gibt es eine Zugriffskontrolllistentechnologie. Diese Technologie basiert hauptsächlich auf IP-Adressen und Ports, um Datenpakete einzuschränken. Wenn beispielsweise sichergestellt werden muss, dass die DNS- und FTP-Protokolle normal funktionieren, beachten Sie, dass DNS-Antworten von manchmal stammen Port 53, FTP-Verbindungen kommen von Port 20, ein Fehler, den viele unerfahrene Administratoren machen, da sie oft Daten von diesen Ports direkt in das Netzwerk zulassen.

Nmap bietet die Optionen -g und --source-port (die identisch sind), um die oben genannten Schwachstellen auszunutzen. Solange der Objekterkennungsmechanismus eine Portnummer vergisst, kann Nmap Daten von diesem Port senden.

Verwenden Sie auch Wireshark, um die gesendeten Datenpakete zu erfassen. Die erfassten Datenpakete sind in der Abbildung dargestellt. Sie können den Quellport über das Feld „Quellport“ anzeigen.
Fügen Sie hier eine Bildbeschreibung ein

Standardmäßig enthält das von Nmap gesendete Paket nur den Header und der Inhaltsteil ist leer, sodass die Größe des TCP-Pakets nur 40 Byte und die ICMP-ECHO-Anfrage nur 28 Byte beträgt. Diese Art von Nachricht mit leerem Inhalt kann vom Erkennungsmechanismus des Zielnetzwerks leicht gefunden werden. Wenn also versucht wird, den Erkennungsmechanismus dieser Zielnetzwerke zu passieren, kann dem Datenpaket eine bestimmte Anzahl zufälliger Bytes angehängt werden

Geben Sie die Länge des Datenteils des Pakets in Zenmap auf 25 an
Fügen Sie hier eine Bildbeschreibung ein

Verwenden Sie Wireshark, um die Länge des Datenteils des gesendeten Pakets anzuzeigen
Fügen Sie hier eine Bildbeschreibung ein

Wenn Sie einfach die Zeichenfolge „0“ verwenden, wählt Nmap eine völlig zufällige MAC-Adresse. Wenn das angegebene Zeichen eine durch Semikolons getrennte gerade Hexadezimalzahl ist, verwendet Nmap diese MAC-Adresse. Wenn es sich um eine Hexadezimalzahl kleiner als 12 handelt, füllt Nmap die verbleibenden 6 Bytes zufällig auf. Wenn der Parameter nicht 0 oder eine hexadezimale Zeichenfolge ist, sucht Nmap den Namen des Anbieters über Nmap-mac-Präfixe (Groß-/Kleinschreibung beachten) und wenn eine Übereinstimmung gefunden wird, verwendet Nmap die OUI des Anbieters (3-Byte-Präfix). ) und fülle es zufällig mit den restlichen 3 Bytes.

◆ 9.8 Lua-Coroutine

Der Hauptunterschied zwischen Threads und Coroutinen besteht darin, dass ein Programm mit mehreren Threads mehrere Threads gleichzeitig ausführen kann, während Coroutinen zum Ausführen miteinander zusammenarbeiten müssen. Es läuft jeweils nur eine Coroutine, und die laufende Coroutine wird nur dann angehalten, wenn sie ausdrücklich dazu aufgefordert wird.

  1. coroutine.create() Mit dieser Methode wird eine Coroutine erstellt. Die Funktion, die mehrere Threads ausführen soll, wird als Parameter verwendet und der Rückgabewert ist eine Coroutine.
  2. coroutine.resume() Diese Methode dient zum Abschließen des Coroutine-Neustartvorgangs und wird in Verbindung mit create verwendet.
  3. Die Methode coroutine.yield() wird verwendet, um den Suspendierungsvorgang der Coroutine zu implementieren und die Coroutine in den Suspendierungszustand zu versetzen.
  4. coroutine.status() Diese Methode wird verwendet, um den Status von Coroutine anzuzeigen. Es gibt drei Coroutine-Zustände: tot, suspendiert und ausgeführt.
  5. Die Methode coroutine.wrap() erstellt eine Coroutine, um eine Funktion zurückzugeben. Sobald diese Funktion aufgerufen wird, gelangt sie in die Coroutine, die dieselbe Funktion wie create hat.
  6. coroutine.running() Diese Methode gibt die laufende Coroutine zurück. Eine Coroutine ist ein Thread. Bei Verwendung von „Running“ wird die Thread-Nummer der aktuell ausgeführten Coroutine zurückgegeben.

◆ 9.9 Kommentare und Dummy-Variablen in der Lua-Sprache

Bei Verwendung von Symbolen --entspricht die Funktionalität der in C //, zum Beispiel:--这是一个单行的注释

Verwenden Sie --[[ 注释的内容 ]], die Funktion entspricht der in der C-Sprache /**/, zum Beispiel:--[[ 这是一个多行的 注释 ]]

Wenn Sie nur string.findden zweiten Wert zurückgeben möchten, können Sie eine Dummy-Variable (z. B. einen Unterstrich) verwenden, um den nicht benötigten Wert zu speichern und zu verwerfen.Local _, s = string.find("hello ", " ll ")

◆ 12.1 Diensterkennungsmodus in NSE

Ein vollständiger Serviceerkennungsprozess umfasst die folgenden Schritte. Schritt 1: Wenn der Status des Zielports geöffnet ist, wird eine Sonde vom Typ NULL an diesen Port gesendet. Diese Art von Sonde beinhaltet eine Anforderung zum Öffnen einer Verbindung, und dann wartet Nmap auf eine Antwort vom Zielport. Nach Erhalt der Antwort vergleicht Nmap die Antwort mit verschiedenen Fingerabdruckdaten in der Datenbank, um einen Softmatch oder Hardmatch zu generieren. Wenn das Matching-Ergebnis Softmatch ist, sendet Nmap zusätzliche Tests. Schritt 2: Wenn die NULL-Probe die Dienstinformationen des Ziels nicht erkennen kann, werden die in der Nmap-service-probes-Datei gespeicherten Sonden vom Typ TCP und UDP an das Ziel gesendet. Dieser Prozess ist dem Erkennungsprozess von NULL-Zeigern sehr ähnlich. Der kleine Unterschied besteht darin, dass diese beiden Arten von Sonden nicht leer sind und eine Zeichenfolge als Nutzlast enthalten. Wie bereits erwähnt, werden die von diesen Sonden generierten Antworten auch mit bekannten Fingerabdruckdaten in der Datenbank verglichen. Schritt 3: Wenn keine dieser beiden Phasen Ergebnisse liefert, sendet Nmap eine spezielle Art von Probe. Diese Phase ist optimiert, um die Anzahl der gesendeten Probes zu minimieren und so eine übermäßige Belastung des Netzwerks zu vermeiden. Schritt 4: Die gesendete Sonde erkennt, ob der SSL-Dienst auf dem Ziel ausgeführt wird. Wenn der Dienst erkannt wird, wird der Dienstscan neu gestartet, um den Dienst zu erkennen. Schritt 5: Senden Sie eine Reihe von Tests, um festzustellen, ob das Ziel RPC-basierte Dienste geöffnet hat. Schritt 6: Wenn die von der Sonde generierte Antwort nicht identifizierbar ist, generiert Nmap auf der Grundlage dieser Antwort eine Fingerabdruckdatei und sendet sie dann an das Nmap-Entwicklungszentrum, um die Fähigkeit der Datenbank zur Identifizierung von Diensten zu verbessern.

Die Anzahl der an jeden Dienst gesendeten Sonden hängt von ihrer Definition in der Nmapservice-probes-Datei ab, und Parameter können auch verwendet werden, --version-intensity [0-9]um die Intensität des Scans zu variieren, d. h. die Anzahl der Sonden zu ändern.Nmap -sV --version-intensity 9 <target>

Standardmäßig sendet Nmap keine Versionserkennungstests an die TCP-Ports 9100 bis 9107. Dies liegt daran, dass einige Druckerdienste normalerweise auf diesen Ports ausgeführt werden und wenn diese Ports Tests empfangen, wird eine große Anzahl von Junk-Dateien zurückgegeben.

◆ 13.1 Der Speicherort der Datendateien in Nmap

Im Windows-Betriebssystem befinden sich diese Dateien im Ordner C:\Programme\Nmap\NSElib\data, beim 64-Bit-System ist dies etwas anders. In der Linux-Betriebssystemfamilie befinden sich diese Dateien in /usr/local/share/Nmap/NSElib/data und /usr/share/Nmap/selib/data.

◆ 13.4 Prüfdatendateien für Webanwendungen

Die Datei http-fingerprints.lua ist eine Datendatei, die in Form einer Lua-Tabelle gespeichert ist. Diese Datei enthält Informationen zu einigen gängigen Webanwendungen, einschließlich der Speicherorte wichtiger Dateien in diesen Anwendungen.

Die Datendatei http-sql-errors.lst enthält einige Zeichenfolgen, die Fehler identifizieren. Diese Datendatei wird hauptsächlich vom Skript http-sql-injection verwendet. Wird verwendet, um die Erkennung abzuschließen, ob die Anwendung der SQL-Injection widerstehen kann

Sie können auch den Parameter http-sql-injection.errorstrings verwenden, um die Datendatei zu ändern, die bei der Ausführung des Skripts verwendet wird

Die http-spider-Bibliotheksdatei in http-web-files-extensions.lstNSE verwendet diese Datei während des Scanvorgangs der Seite. Diese Datei enthält mehr als 200 gängige Webanwendungserweiterungen, und weitere Webanwendungserweiterungen können problemlos zu dieser Datei hinzugefügt werden

Die Datendatei http-devframework-fingerprints.lua besteht aus einer Lua-Tabelle und wird vom Skript http-devframework aufgerufen, um die Entwicklungssprache der Ziel-Webanwendung wie ASP, PHP usw. zu erkennen.

Die Datendatei http-folders.txt enthält 956 gängige Verzeichnisnamen in HTTP und wird vom Skript http-iis-webdav-vuln aufgerufen, um Schwachstellen auf IIS 5.1/6.0-Servern zu erkennen

Wenn Sie diese Datendatei nicht verwenden möchten, können Sie auch Parameter verwenden, --script-args folderdbum andere Datendateien anzugeben. Verwenden Sie beispielsweise /pentest/fuzzers/folders.txt als dieses Verzeichnis.
Fügen Sie hier eine Bildbeschreibung ein

Das vhosts-default.lst-Skript http-vhosts verwendet diese Datendatei, um zu bestimmen, ob der Zielserver eine virtuelle Maschine oder ein echter Webserver ist

Die Datei wp-plugins.lst enthält die Namen von 18.575 gängigen WordPress-Plugins. Das Skript http-wordpress-plugins nutzt diese Datei, um Brute-Force-Angriffe auf mit WordPress erstellte Server durchzuführen

Wenn nicht im http-wordpress-plugins-Skript angegeben --script-args http-wordpress-plugins.search, liest dieses Skript nur die ersten 100 Plugin-Namen

◆ 13.5 DBMS-Prüfdatendateien

Die Datei mysql-cis.audit befindet sich im Nmap-Installationsverzeichnis und erkennt hauptsächlich die Konfigurationssicherheit der MySQL-Datenbank basierend auf dem CIS MySQL v1.0.2-Benchmark. In NSE gibt es ein MySQL-Audit-Skript, das diese Datei verwendet

Die Datei oracle-default-accounts.lst enthält 687 Benutzernamen, die zur Authentifizierung in der Oracle-Datenbank verwendet werden

Die Oracle-Sids-Datei oracle-sids enthält 700 gängige Oracle-Datenbankinstanznamen

◆ 16.1 Gleichzeitige Ausführung in Nmap

Nmap unterteilt mehrere Ziel-IP-Adressräume in Scangruppen und scannt dann gleichzeitig eine Scangruppe. hostgroup stellt eine Scan-Gruppe dar und die Parameter --min-hostgroup und --max-hostgroup bestimmen die Unter- und Obergrenze der Anzahl in dieser Scan-Gruppe. Im Allgemeinen gilt: Je größer die Anzahl in einer Scangruppe, desto schneller ist der Scan.

◆ 16.3 Gleichzeitige Ausführung in Lua

Schritt 1: Erstellen Sie eine Coroutine mit coroutine.create(). In dieser Coroutine gibt es eine Schleifenfunktion, die den Ausdruck der Zahlen 1 bis 5 realisiert und gleichzeitig eine andere Coroutine anhält. co1 = coroutine.create( function() for i = 1, 5 do print(“coroutine #1:“…i) coroutine.yield(co2) end end ) Schritt 2: Erstellen Sie auf die gleiche Weise eine weitere Coroutine mit co2 als Name der Coroutine. co2 = coroutine.create( function() for i = 1, 5 do print(“coroutine #2:“…i) coroutine.yield(co1) end end ) Schritt 3: Verwenden Sie eine weitere Schleife, um die beiden Coroutinen auszuführen. für i = 1, 5 do coroutine.resume(co1) coroutine.resume(co2) end

Guess you like

Origin blog.csdn.net/Gherbirthday0916/article/details/131316309