Was ist Nmap?
Nmap ist ein Portscanner der einem ermöglicht alle Ports auf einem Host/Subnetz zu prüfen. Es wird von Privatanwendern wie auch Admins und "Hackern" verwendet. NMap ist verfügbar für: Linux, Windows, Solaris, Debian, FreeBSD, OpenBSD, MacOS X und HP-UX. Nmap gehört zu denn weltweit besten PortScannern - seine Flexibilität und die Möglichkeiten sind beinahe unendlich *scherz*.
Installation unter Linux
Die neuste, stabile Version ist unter http://www.nmap.org zu finden. Der Download kann über den Browser der persönlichen Wahl oder einfach so erfolgen:
-> wget http://download.insecure.org/nmap/dist/nmap-3.00.tgz
oder
-> lynx http://www.insecure.org/nmap/nmap_download.html
Entpacken des Archivs:
-> mv nmap*.t*z /usr/local/
-> cd /usr/local/
-> gunzip nmap*.*z
-> tar -xvf nmap*.tar
-> cd nmap*
Installation:
-> ./configure
-> make
[spätestens jetzt benötigen wir rootrechte ( -> su )]
-> make install
Nmap ist nun installiert :=)
Nmap sagt mir "requires root privileges"
Diverse Parameter wie -O benötigen Rootrechte. Will man nicht als root, sondern mit einem anderen User scannen, so muß ein SUID Flag gesetzt werden. Dieses erlaubt einem User eine bestimmte Datei mit Rechten des Besitzers auszuführen. Dabei ist zu beachten, daß dieses Recht für die Datei und somit für alle User des Systems gesetzt wird!
Setzen des SUID-Flag: -> chmod 4751 /usr/local/nmap-3.*/nmap
Entfernen des SUID-Flag: -> chmod 0751 /usr/local/nmap-3.*/nmap
Was kann Nmap?
Nmap ist ohne Zweifel einer der besten und kompaktesten Portscanner (Security-Scanner)den es gibt - und dazu noch kostenlos.
Die Möglichkeiten sind fast unendlich. Im Folgenden werden die gebräuchlisten Paramter und deren Auswirkungen kurz beschrieben:
|
Bezeichnung
|
Parameter |
Beschreibung |
| Ping scan |
-sP |
Manchmal möchte man nur wissen, welche Hosts in einem Netz aktiv sind. Mit diesem Parameter sendet Nmap ein ICMP Echo Request Paket an jede IP des angegebenen Netzes. Rechner die antworten sind online - logisch ;-) Einige Server antworten nicht auf Pings - Nmap kann jedoch trotzdem feststellen ob der Host verfügbar ist. Dazu wird TCP ACK Paket an Port 80 gesendet - wird ein TCP RST Paket zurückgesendet, so steht fest, daß dieser Host verfügbar ist. |
| Portscan |
IP-Adresse |
normaler Portscan auf die angegebene Adresse |
| TCP SYN Stealth-Scan |
-sS |
Diese Art des Scannan wir auch als "halb-offener" Scan bezeichnet, da keine komplette TCP Verbindung geöffnet wird. Nmap sendet ein SYN-Packet, als ob eine richtige Verbindung geöffnet werden soll. Wird mit einem SYN|ACK Paket geantwortet, so "lauscht" auf dem Port ein Serverdienst - kommt ein RST Packet zurück, dann ist der Port geschlossen. Nach dem Empfang des ACK-Paketes, sendet Nmap sofot ein RST-Paket um die im Aufbau befindliche Verbindung wieder zu schließen. Der Vorteil liegt darin, daß ein solcher Verbindungsversuch von vielen Servern nicht aufgezeichnet wird. Es werden root-Rechte benötigt um diese Scanart zu verwenden. |
| TCP connect()scan |
-sT |
Es handelt sich hierbei um das einfachste TCP-Scan Verfahren. Dabei wird der connect() Ruf des verwendeten Betriebssystems genutzt um eine Verbindung zu einem beliebigen Port aufzubauen. Lauscht auf diesm Port ein Server, so ist der connect() Ruf erfolgreich, andernfalss ist der Port nicht erreichbar. Diese Art des Scans ist sehr leicht zu entdecken. |
| UDP scan |
-sU |
Mit diesem Sacn läßt sich feststellen, welche UDP-Ports offen sind. Dabei wird ein 0 Byte UDP Paket an jeden Port des Ziel-Hosts gesendet. Erhält Nmap ein IMCP Port unreachable Nachricht, so ist der Port geschlossen. Ansonsten wird angenommen, daß der Port offen ist. UDP-Port Scans können sehr langsam sein, da viele System nach RFC 1812 implementiert wurden. Dort ist spezifiziert, daß die ICMP Fehlermeldungs - Rate limitiert wird. |
| IP protcol scan |
-sO |
Dieser Scan stellt fest, welche IP Protokolle auf dem Zielrechner unterstützt werden. Es wird ein einfaches IP Packet ohne weitere Header-Informationen an jeden Port gesendet. Wird ein ICMP Protocol unreachable Nachricht zurückgesendet, so wird davon ausgegangen, daß das Protokol auf dem Zielrechner nicht verfügbar ist. Wird diese nicht gesendet, so wird davon ausgegange, daß das Protokoll erreichbar ist. Dabei ist zu beachten, daß einige Hosts (HP-UX, AIX, Digital UNIX) und Firewalls keine ICMP Protocol unreachable Meldungen versenden. |
| No-Ping-Scan |
-P0 |
Mit dieser Option wird das Anpingen des Hosts vor Scanbeginn verhindert - so können Rechner gescannt werden, die nicht auf einen Ping antworten. Damit können nur IPs, aber keine Domains gescannt werden. |
Neben diesen einfachen Scanmethoden gibt es noch erweiterte Optionen, die den Ursprung eines Scans verschleiern sollen bzw. dazu beitragen das Ergebnis zu verbessern:
Steahlt Scan (-sF), Xmas Tree-Scan (-sX) und Null-Scan (-sN) können eingesetzt werden, wenn ein SYN-Scan nicht verborgen genug um einige Paketfilter oder Firewalls zu täuschen. Mit Hilfe dieser Optionen kann es möglich sein, auch solche Schutzmaßnahmen zu täuschen. Der Grundgedanke ist, daß beim Scannen eines geschlossenen Ports eigentlich ein RST Paket gesendet werden müsste - offene Ports antworten dabei gar nicht. Der FIN-Scan nutzt ein einzelnes FIN Paket für den Scan. Während der Xmas Tree-Scan die FIN, URG und Push Flags aktiviert, schaltet der Null-Scan alle Flags aus.
Ein weiteres schönes Feature von Nmap ist der Fingerprint-Scan (-O) - TCP/IP Fingerprint Identifikation - damit lässt sich feststellen, welches Betriebssystem auf dem Zielhost installiert ist. Aufgrund der fleissigen Entwickler verfügt Nmap über eine sehr große Datenbasis zum Vergleich der Fingerprints.
Nutzung von Nmap unter Linux
-> man nmap # Ausführliche Hilfedatei zu Nmap
-> nmap -h # Kurzhilfe
-> nmap -V # Versionsabfrage
-> /usr/local/nmap-3.*/nmap # SUID-Flag als normaler User nutzen
Eine IP normal scannen (User mit Root-Rechten: -sS, andere User: -sT):
-> nmap 127.0.0.1
###TTY###
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost (127.0.0.1):
(The 1598 ports scanned but not shown below are in
state: closed)
Port State Service
22/tcp open ssh
25/tcp open smtp
139/tcp open netbios-ssn
Nmap run completed -- 1 IP address (1 host up) scanned
in 1 second
###TTY###
Mit dem Parameter -v kann man sich genauere Informationen zum Ablauf des Scannes anzeigen lassen.
-> nmap 127.0.0.1 -v
###TTY###
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Host localhost (127.0.0.1) appears to be up ... good.
Initiating Connect() Scan against localhost
(127.0.0.1)
Adding open port 139/tcp
Adding open port 22/tcp
Adding open port 25/tcp
The Connect() Scan took 0 seconds to scan 1601 ports.
Interesting ports on localhost (127.0.0.1):
(The 1598 ports scanned but not shown below are in
state: closed)
Port State Service
22/tcp open ssh
25/tcp open smtp
139/tcp open netbios-ssn
Nmap run completed -- 1 IP address (1 host up) scanned
in 0 seconds
###TTY###
Open, Closed, Filtered
Open : Der Port ist offen und kann von jedem xbeliebigen System erreicht werden.
Closed : Betrifft alle anderen Ports. Firewall ignoriert den Port, kein Dienst
steht dahinter und/oder der Dienst steht nicht in /etc/services.
Filtered : Die Firewall sperrt denn Port.
Ausblick
Damit ist der erste Teil der Nmap Einführung beendet - ich hoffe, daß ich es Ihnen etwas näher bringen konnte. Nmap ist sehr mächtig - missbrauchen Sie es nicht!
|