So verwenden Sie das Netcat-Netzwerktool

Inhaltsverzeichnis

In diesem Tutorial werden wir über a . sprechen sehr leistungsfähiges Netcat Netzwerktool, allgemein als nc abgekürzt. Dieses Tool wird über die Befehlszeile verwendet und seine Syntax ist sehr einfach. Es ermöglicht uns, Daten über Sockets (TCP oder UDP) zu schreiben und zu empfangen. Es hat viele Funktionen und daher können wir es auf viele Arten verwenden. Es ist wichtig, seine Funktionsweise zu kennen, da wir damit das Netzwerk debuggen, testen und untersuchen können.

Netcat kann in 2 Modi betrieben werden:

KlientIn diesem Modus ist es für die Verbindung mit dem Listener verantwortlich (der an einer bestimmten Adresse und IP lauscht und die wir kennen müssen).

Server oder ListenerWarten Sie auf Verbindungen von Clients an einem bestimmten Port.

Wir gehen zu lernen Sie anhand praktischer Beispiele, wie Netcat oder nc funktioniert, so lernt man am besten. Dafür verwende ich das Betriebssystem Ubuntu 16.04.

Das erste, was wir sehen werden, ist die Netcat-Syntax:

 nc [Optionen] [Ziel] [Port]
Netcat Sie haben viele Möglichkeiten, sehen wir uns einige an:

Einige Netcar-Optionen

  • -l: Weist netcat an, zuzuhören.
  • -P: Zur Angabe des Herkunftshafens.
  • -S: Zur Angabe der Quelladresse.
  • -k: Um "unendliche" Verbindungen dem Listener zu ermöglichen (wird mit -l verwendet).
  • -oder: Netcat öffnet den Port als UDP statt als TCP (was standardmäßig der Fall ist).
  • -v: Mit dieser Option werden uns Verbindungsinformationen angezeigt.
  • -ich: Um die Verzögerung beim Senden und Empfangen anzuzeigen. (In Sekunden).
  • -4: Ermöglicht Netcat, nur IPv4 zu verwenden.
  • -6: Wie das vorherige, aber erzwingt die Verwendung von IPv6.

Es gibt weitere Optionen, die wir sehen können, indem wir den folgenden Befehl ausführen:

 nc -h
Unten seht ihr im Bild:

Wir werden mit den Beispielen beginnen, die einfachsten werden zuerst gehen, um sie zu komplizieren, aber nur ein wenig, Sie werden sehen, dass es sehr einfach zu verwenden ist.

Beispiel 1
Setzen Sie meinen Computer zum Abhören auf Port 87:

 sudo nc -l -p 87
HinweisEs würde genauso funktionieren, das Entfernen -P.

Jetzt stellen wir eine Verbindung von einem anderen Terminal her her, da ich sie auf demselben Computer ausführe, verwende ich localhost als Adresse:

 nc localhost 87
Wenn wir etwas vom gerade geöffneten Client schreiben, sehen wir es auch im lauschenden Terminal und überprüfen so, ob die Verbindung korrekt funktioniert. Aber wenn wir an den Listener schreiben, das erste Terminal, erreicht es auch den Client. Als nächstes hinterlasse ich ein Bild des Hörers und ein weiteres Bild des Kunden:

Wir sehen, dass sie in diesem Beispiel so kommunizieren, wie wir es wollten, gehen wir zu einem anderen.

Beispiel 2
Wir können den Server oder Listener veranlassen, die vom Client gesendeten Daten in einer Datei zu speichern, dafür unterscheidet sich der auszuführende Befehl nicht viel von dem im ersten Beispiel:

 sudo nc -l 87> testen
Notiztest ist der Name der Datei, in der Sie die eingehenden Informationen speichern.

Auf der Client-Seite ist der Befehl derselbe wie zuvor:

 nc localhost 87
Das folgende Bild zeigt, was auf dem Client ausgeführt wird (der Listener hört zu, bevor er sich verbindet, sonst hätte es keine Auswirkungen):

Und auf der Serverseite sehen wir, dass anscheinend nichts empfangen wird, aber sicher ist nur, dass es nicht auf dem Bildschirm angezeigt und in der Testdatei gespeichert wird:

Fahren wir mit einem anderen Beispiel fort.

Beispiel 3
Wir werden überprüfen, ob ein Bereich von Ports vorhanden ist, um festzustellen, ob sie geöffnet sind oder nicht. In diesem Beispiel beträgt der Bereich 80-90. Zuerst öffnen wir einen Server auf Port 80 wie im ersten Beispiel (also sehen wir, wie er funktioniert, wenn er geöffnet ist und wenn nicht):

 sudo nc -l 87
Und auf dem Kunden werden wir ausführen:
 nc -z -v localhost 80-90
Parameter -z wird zum Scannen verwendet, und die -v Wie wir zuvor gesehen haben, um Informationen anzuzeigen (wenn wir dies nicht angeben, wird nicht angezeigt, welcher Port geöffnet ist und welcher nicht), dann das Image des Clients:

Wir werden a sehen Beispiel in UDP.

Beispiel 4
Dieses Beispiel ist auch einfach, wir werden auf Port 2016 auf UDP warten und erzwingen, dass es eine IPv4-Adresse ist:

 sudo nc -l -u -4 2016
Und jetzt verbinden wir den Client:
 nc -u -4 2016
Ich stelle kein Bild zur Verfügung, da die Aufnahme dieselbe wie in Beispiel 1 sein wird, wobei natürlich der Teil des Befehls geändert wird. Kommen wir zu einem Beispiel, in dem wir Python-Code verwenden.

Beispiel 5
Wir werden einen Code so einfach wie möglich in Python schreiben, damit er auf eine Verbindung lauscht, Daten empfängt und endet.

 import socket s = socket.socket () s.bind (("192.168.56.1", 1987)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) .decode (" utf-8") drucken (Daten) 
Ich werde diesen Code unter Windows ausführen und dann von Linux aus eine Verbindung über netcat herstellen. Das folgende Bild zeigt die Clientseite unter Linux:

Und wie es unter Windows aussehen würde:

Wenn wir den Code etwas ändern, können wir ihn dazu bringen, einen Befehl auszuführen und uns seinen Inhalt zu senden, aber wir können auch eine Shell zurückgeben, die es uns ermöglicht, viele Dinge zu tun, also gehen wir zum nächsten Beispiel über.

Beispiel 6
In diesem Beispiel gehe ich a Python-Code Auf demselben Linux-Rechner, und ich werde mich mit netcat verbinden, werden wir überprüfen, ob eine Shell (/bin/bash) uns zurückgibt. Unten lasse ich den Python-Code so einfach und kurz wie möglich, nur für das Beispiel.

 import socket, subprocess s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .accept () p = subprocess.Popen (["/bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Der Python-Code wird ausgeführt und Folgendes wird angezeigt (das Bild zeigt, wie es bei einer Verbindung von netcat aussieht):

Wir sehen, dass es lauscht, wenn wir es ausführen, aber wenn ein Client eine Verbindung herstellt, wird die Verbindung geschlossen und wir haben eine Shell für uns.

Wir könnten auch einen Code erstellen, der sich mit unserer Maschine verbindet, dass wir ihn auf einen bestimmten Port abhören, im Allgemeinen gibt es viele Möglichkeiten, jetzt müssen Sie mit netcat "spielen", was, wie Sie gesehen haben, helfen kann uns in vielen Momenten.

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave