GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Systemadministratoren:Machen Sie sich mit der Leistungsfähigkeit von ncat vertraut, um versehentliche Sicherheitsrisiken zu vermeiden

Der ncat Der Befehl ist Teil der nmap-Suite und wurde speziell dafür geschrieben. Es stimmt, dass ncat hat so viele Verwendungsmöglichkeiten wie das berühmte Schweizer Taschenmesser, kann aber genauso gefährlich sein, wenn es falsch oder von böswilligen Akteuren verwendet wird. Eine seiner Stärken ist das ncat kann sowohl Client als auch Server sein. Dieser Artikel konzentriert sich auf einen Aspekt dieser Beziehung. Ich zeige Ihnen, wie Sie mit ncat eine lauschende Bash-Shell öffnen auf die jeder mit ncat zugreifen kann als Kunde. In meinem Artikel Linux-Fehlerbehebung:Einrichten eines TCP-Listeners mit ncat beschreibe ich, wie Sie ncat einrichten als Listener oder Server, der einen bestimmten Port abhört. Dieses Beispiel ist ähnlich, aber ich denke, Sie werden von der schieren Kraft von ncat beeindruckt sein gibt Ihnen. Es sollte Sie auch erschrecken – sehr.

ncat installieren

Überprüfen Sie Ihr System unter /usr/bin zuerst, um zu sehen, ob Sie ncat installieren müssen . Es ist normalerweise in jeder Red Hat Enterprise Linux-basierten Distribution enthalten. Wenn Sie feststellen, dass Sie es installieren müssen, lautet der Paketname nmap-ncat . Sie können entweder ncat installieren selbst oder installieren Sie nmap und das nmap-ncat Paket wird als Abhängigkeit installiert.

Ncat verwenden

Geben Sie ncat nicht aus Befehle als root, insbesondere für die Beispiele in diesem Artikel. Dadurch erhält jeder ohne Authentifizierung Root-Zugriff auf Ihr System. Jeder Benutzer kann ncat ausgeben Befehle, was sowohl eine seiner Eigenschaften als auch eine seiner Gefahren ist. Ich schlage vor, dass Sie ein Dienstkonto erstellen und mit ncat arbeiten mit diesem Konto. Vertrauen Sie mir, ich habe jedes Argument für und gegen Dienstkonten gehört, aber wenn Sie einmal ncat sehen in Aktion, sollten Sie das Dienstkonto für Interaktionen damit verwenden.

Stellen Sie eine Bash-Shell bereit

Das ist der lustige (und gefährliche) Teil der Verwendung von ncat . Wechseln Sie den Benutzer zu Ihrem neuen Dienstkonto. Ich habe meine schüchtern genannt .

[ken@server1 ~] $ su - bashful
Password: 
[bashful@server1 ~] $

Nachdem Sie die Benutzerkonten gewechselt haben, ist es an der Zeit, diese Shell zu öffnen. Es ermöglicht einen nicht authentifizierten Zugriff auf Ihr System über eine meist interaktive Shell. Sie werden sehen, was ich mit "meistens" interaktiv meine, sobald Sie eine Verbindung hergestellt haben. Dieser nächste Befehl verwendet ncat um eine Bash-Shell auszuführen, die auf einem TCP-Port lauscht. Für dieses Beispiel verwende ich Port 9922 auf Server1 (192.168.1.50). Das -l Option richtet einen Listening-Port ein. Das -k Option ist ein Keepalive-Flag, das den Socket beibehält. Wenn Sie -k nicht ausgeben Option, dann stirbt der Socket, nachdem Sie die Sitzung getrennt haben, und es können keine anderen Verbindungen zu ihm hergestellt werden.

[bashful@server1 ~] $ ncat -e "/bin/bash" -l 9922 -k &

Das -e Option führt den Befehl in Anführungszeichen aus, was in unserem Fall die Bash-Shell ist (/bin/bash ). Ich verwende das kaufmännische Und (& ) nach dem Befehl zum Freigeben meiner Eingabeaufforderung und setze den ncat Zuhörer in den Hintergrundmodus. Wenn Sie & nicht verwenden , dann "hängt" Ihr Terminal und erlaubt Ihnen nicht, damit zu interagieren. Wenn das kein Problem für Sie ist, lassen Sie es so wie es ist.

Ausgabe von netstat Befehl zeigt, dass der Listener vorhanden ist.

[bashful@server1 ~]$ netstat -an |grep 9922
tcp        0      0 0.0.0.0:9922            0.0.0.0:*               LISTEN     
tcp6       0      0 :::9922                 :::*                    LISTEN     
[bashful@server1 ~]$

Um sich von einem entfernten System mit dem Listening-Port zu verbinden, müssen Sie auch eine Ausnahme in der hostbasierten Firewall für Port 9922 öffnen.

[ken@server1 ~]$ sudo firewall-cmd --add-port=9922/tcp
success

Siehst du hier die Ausfallsicherung? Es ist die Firewall-Ausnahme, die ich mit meinem Konto und sudo erstellen musste . Wenn Sie eine hostbasierte Firewall oder IPTables laufen haben (und das sollten Sie besser), dann funktioniert dieser Dienst nicht, bis Sie diesen Port zulassen, was bedeutet, dass kein gewöhnlicher Benutzer dies ohne Administratorzugriff zum Laufen bringen kann. Andernfalls würden ncat-ausgebildete Benutzer überall Ports öffnen und Sie dabei in den Wahnsinn treiben. Ganz zu schweigen von den Sicherheitsproblemen, die Sie haben würden. Ich schweife ab.

Greifen Sie von einem entfernten System aus auf die Shell zu

Jetzt können Sie von einem entfernten System auf Port 9922 auf die Bash-Shell zugreifen.

[ken@server2 ~]$ ncat 192.168.1.50 9922

Von server2 , geben Sie ncat aus Befehl mit der Ziel-IP-Adresse von server1 und der lauschende Port 9922. Sobald Sie verbunden sind, passiert nichts, oder so könnte man glauben, weil das Terminal irgendwie hängen zu bleiben scheint. Aber was wirklich passiert, ist, dass Sie mit dem Raw-Socket kommunizieren und daher keine Eingabeaufforderung sehen. Beweisen Sie es, indem Sie who ausgeben Befehl.

[ken@server2 ~]$ ncat 192.168.1.50 9922
who
ken    pts/0        2020-08-26 13:39 (server2)

Sie können jeden beliebigen Befehl erteilen, den Sie diesem Benutzer schüchtern wünschen Zugriff hat. Wenn Sie einen Befehl ausgeben, der Root-Zugriff erfordert, werden Sie wahrscheinlich keine Antwort sehen. Das Terminal scheint im Zustand „hängen“ zu bleiben. Ihre Antwort erscheint tatsächlich auf dem Terminal von server1 . Wenn Sie beispielsweise den folgenden Befehl eingeben:

firewall-cmd --list-all

Sie sehen nichts auf server2 Bildschirm. Auf server1 Auf dem Bildschirm von erscheint Folgendes:

[bashful@server1 ~]$ Authorization failed.
    Make sure polkit agent is running or run the application as superuser.

Zum Trennen von server2 's geheime Shell, drücken Sie Strg+C Kombination und Ihre lokale Eingabeaufforderung gibt zurück.

Versuche das nicht bei der Arbeit

Nur zum Spaß, oder wenn Sie mir nicht glauben, töten Sie den aktuellen ncat mit Ihrem Dienstkonto oder als Root verarbeiten. Geben Sie dann denselben Befehl als Root-Benutzer erneut aus, um diese Bash-Shell als Root auszuführen. Verbinden Sie sich erneut von einem Remote-System und geben Sie diesen Firewall-Befehl erneut aus. Diesmal sehen Sie die Ergebnisse. Sie können jeden Befehl als Root ausführen, weshalb Sie diese Art von Dienst niemals als Root-Benutzer einrichten sollten.

Und jetzt sehen Sie die wirkliche Gefahr bei der Verwendung von ncat als Wurzel. Böswillige Akteure richten eine solche Shell auf einem geheimen Port ein, der von einem Port-Scan übersehen wird, und haben vollen Root-Zugriff ohne Authentifizierung.

Abschluss

Das sehr nützliche und potentiell sehr gefährliche ncat Kommando ist dein bester Freund und dein schlimmster Feind. Wie jedes andere Werkzeug im Schuppen hat es keine andere Absicht als das, was Sie ihm geben. Sie sollten den ncat studieren Befehl, seine Verwendung und seine Einschränkungen in Ihrer Umgebung. Denken Sie daran, jeden ncat zu töten Prozess, den Sie nicht ständig ausführen möchten, wenn Sie damit fertig sind, und entfernen Sie die Firewall-Ausnahme, die seinen Zugriff zulässt. Denken Sie auch daran, dass mit großer Kraft die Fähigkeit einhergeht, Dinge wirklich zu vermasseln.

[ Möchten Sie Ihre Fähigkeiten als Systemadministrator testen? Machen Sie noch heute einen Kompetenztest. ]


Linux
  1. So ändern Sie den SSH-Port unter Linux

  2. Portumleitungen unter Linux mit ncat einrichten

  3. Linux-Systemadministratoren:Machen Sie sich mit der Leistungsfähigkeit von ncat vertraut, um versehentliche Sicherheitsrisiken zu vermeiden

  4. 13 Linux-Sicherheits-Tutorials

  5. Überprüfen Sie die Portverwendung in Linux

So pingen Sie eine Portnummer in Linux an

Verwenden der SSH-Portweiterleitung als Sicherheitstool unter Linux

90 Linux-Befehle, die häufig von Linux-Systemadministratoren verwendet werden

Öffnen eines Ports unter Linux

Linux vs. Windows-Sicherheit

5 Best Practices für Linux SSH-Sicherheit zum Schutz Ihrer Systeme