Nmap, kurz für Network Mapper, ist eines der am häufigsten verwendeten Portmapper- und Netzwerk-Scan-Tools. Während es möglich ist, einige der Grundfunktionen von Nmap als unprivilegierter/normaler Benutzer auszuführen, erfordert die Nutzung der meisten erweiterten Funktionen root- oder sudo-Rechte.
Beispielsweise können einige erweiterte Port-Scanning-Funktionen wie NULL, Stealth SYN Scan und viele andere nur mit Root-Rechten funktionieren, da Nmap auf Rohpaketdaten zugreifen muss, um Ihnen angemessene/brauchbare Ergebnisse zu liefern.
Immer wenn Sie versuchen, solche erweiterten Funktionen ohne sudo-Berechtigungen auszuführen, fordert Sie das Tool mit der Meldung „Erfordert Root-Berechtigungen“ auf.

Leider kann es problematisch sein, sudo zum Ausführen von Nmap verwenden zu müssen, insbesondere wenn Sie nicht in der sudo-Gruppe sind.
Glücklicherweise können Sie Funktionen verwenden, um Nmap ohne Root- oder Sudo-Rechte auszuführen.
Was sind Fähigkeiten?
Linux-Fähigkeiten sind Linux-Kernel-Attribute, die es Programmen und Prozessen ermöglichen, Privilegien zu nutzen, die ansonsten dem Root-Benutzer vorbehalten sind.
Im Wesentlichen teilen sich die Linux-Funktionen die Befugnisse oder Privilegien von Root-Benutzern, sodass unprivilegierte Prozesse als privilegierte ausgeführt werden können, was bedeutet, dass sie keiner Berechtigungsprüfung unterzogen werden.
Es gibt zahlreiche Linux-Fähigkeiten. Du kannst Erfahren Sie mehr über die Linux-Fähigkeiten in den Manpages.
Der Kern dieses Handbuchs besteht darin, Ihnen zu zeigen, wie Sie drei Funktionen verwenden: CAP_NET_RAW, CAP_NET_ADMIN und CAP_NET_BIND_SERVICE, um Nmap die Berechtigungen zu geben, die es zum Ausführen benötigt, ohne nach Root-Benutzerberechtigungen zu suchen.
Notiz: Seien Sie vorsichtig, wenn Sie erweiterte Funktionen festlegen, da ein böswilliger Benutzer die Skript-Engine von Nmap ausnutzen kann, um Zugriff auf vollständige sudo-Berechtigungen zu erhalten, und Skripte verwenden kann, um lokale Host-Schwachstellen auszunutzen. Verwenden Sie diese Einstellungen daher mit Bedacht oder beschränken Sie den Zugriff von Nmap auf bestimmte Gruppen.
Die folgenden Linux-Fähigkeiten gewähren wir Nmap, um die Notwendigkeit von sudo- und Root-Berechtigungen zu beseitigen.
- CAP_NET_RAW: Durch das Setzen dieser Funktion kann ein Prozess auf rohe Paketdaten und Sockets zugreifen und diese verwenden.
- CAP_NET_ADMIN: Diese Fähigkeit gibt dem Prozess die Möglichkeit, verschiedene Netzwerkaktivitäten wie IP-Firewall-Administration, Schnittstellenkonfiguration, Festlegen des Diensttyps von TOS, Ändern von Routing-Tabellen usw. durchzuführen.
- CAP_NET_BIND_SERVICE: Diese Funktion bindet einen Socket an privilegierte Ports der Internetdomäne.
Linux-Fähigkeiten werden Threads bzw. Dateien in Sätzen von „effektiv“, „vererbbar“, „erlaubt“ und „Umgebung“ zugewiesen. Um Nmap die Fähigkeiten zu geben, die es benötigt, um ohne Root- oder Sudo-Rechte zu laufen, verwenden wir eip
wodurch Nmap diese Fähigkeiten nutzen kann, unabhängig davon, welcher Benutzer es ausführt.
Schritt 1: Installieren Sie libcap
Um Linux-Funktionen einzustellen, müssen Sie das libcap-Paket installieren. Mit diesem Paket können Sie den Befehl setcap verwenden. Verwenden Sie den Befehl:
sudo apt-get install libcap2-bin

Nachdem wir libcap installiert haben, können wir die verwenden setcap
Befehl zum Ändern der Linux-Funktionen.
Schritt 2: Stellen Sie die Nmap-Fähigkeiten ein
Führen Sie den folgenden Befehl aus, um die Nmap-Funktionen festzulegen, mit denen es ohne Root-Benutzerrechte ausgeführt werden kann:
sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)
Nachdem Sie die Funktionen festgelegt haben, können Sie überprüfen, ob sie angewendet wurden, indem Sie die verwenden getcap
Befehl.
getcap $(which nmap)

Notiz: Es ist zwingend erforderlich, den vollständigen Pfad zu Ihrem Nmap-Installationsordner anzugeben.
Schritt 3: Führen Sie Nmap mit dem Privileg-Flag aus
Nachdem wir diese drei Fähigkeiten eingestellt haben, können wir Nmap ohne sudo-Rechte ausführen, indem wir das Privileg-Flag verwenden, um Nmap wissen zu lassen, dass es diese Fähigkeiten hat. Führen Sie dazu Folgendes aus:
nmap --privileged -sS 192.168.0.112

Notiz: Sie müssen die verwenden --privileged
Option, sonst weiß Nmap nicht, dass es diese Privilegien hat.
Wenn Sie die Zeit sparen möchten, die zum Eintippen der nmap --privileged
Flag jedes Mal, können Sie die Umgebungsvariable NMAP_PRIVILEGED dauerhaft setzen, indem Sie die Exportzeile hinzufügen zu:
- ~/.xsessionrc: Dies funktioniert mit den meisten Desktop-/Grafikumgebungen und ist von Shells und Terminals vererbbar.
- ~/.profil: Dies funktioniert für Shells, die eine Anmeldung erfordern
- ~/.bashrc: funktioniert für bash
- ~/.gnomerc: funktioniert nur für GNOME
Einpacken
Die meisten Nmap-Port-Scanning- und Host-Discovery-Methoden erfordern root- oder sudo-Berechtigungen. Wie im Tutorial besprochen, können Sie diese Funktionalität überschreiben und Nmap ausführen, ohne ein Root oder in der Gruppe sudoers zu sein. Sehen Sie sich einige der besten Linux-Port-Scanner an, die Sie verwenden können.