Ethical Hacking: Identifizierung von Diensten mit nmap
Inhaltsverzeichnis
Im vorherigen Beitrag von Ethical Hacking Wir erklären kurz verschiedene Optionen, um eine Aufzählung von IP-Adressen und Subdomains bei der Durchführung eines Ethical Hacking-Prozesses zu erhalten. Wenn Ihnen gefallen hat, dass „dies sehr sicher ist, denn wer wird wissen, dass diese Subdomain existiert“ (obwohl Sie es nicht glauben können, ist es häufiger als es scheint), verpassen Sie nicht, wie die „Wer wird wissen, dass ich diesen Dienst mit einer so seltsamen Nummer in diesen Port stelle“…
Kurz gesagt, in diesem Beitrag werden wir versuchen zu sehen, wie es möglich ist, eine Bestandsaufnahme der offenen Ports in einer IP oder einem IP-Bereich vorzunehmen und sogar die Technologie unter einem offenen Port zu identifizieren, wenn dies möglich ist. Grundsätzlich konzentriert sich dieser Beitrag auf die Verwendung eines fantastischen und unverzichtbaren Tools, nmap. Obwohl es sich um ein Tool handelt, das normalerweise unter Linux verwendet wird (und natürlich in der Referenzsuite enthalten ist, die ich in diesen Posts verwende, Kali), können bereits Zusammenstellungen für andere Betriebssysteme gefunden werden.
Bevor wir uns an die Arbeit machen, möchten wir Sie warnen, dass nmap ein komplexes und vollständiges Tool mit einer Vielzahl von Optionen, Parametern usw. ist.; Dieser Beitrag ist nicht als Handbuch für die Verwendung des Tools gedacht, sondern als Einführung in die IT, um die Identifizierung von Diensten als eine Phase des ethischen Hackens vor der Erkennung von Schwachstellen zu verstehen. Um mehr über das Tool zu erfahren, empfehlen wir, das Handbuch zu lesen.
Mit dem Open-Source-Tool nmap können wir Netzwerk- und Port-Scans durchführen und ein einzelnes Ziel, einen Bereich, eine Liste von IPs … basierend auf TCP-, UDP-, ICMP-, SCTP-Anforderungen usw. scannen. und beinhaltet verschiedene Scan-Techniken. Wir empfehlen im Allgemeinen, einige Kenntnisse über Transportprotokolle aufzufrischen, z. B. sich daran zu erinnern, wie der Aufbau einer TCP-Verbindung mit der Aushandlung in drei Schritten funktioniert: zuerst SYN Typ Anruf vom Client an einen Port, RST Antwort, wenn der Port geschlossen ist oder SYN-ACK, wenn es offen ist, und die ACK vom Client an den Server, um den Prozess abzuschließen. Nmap stützt sich auf diese Arten von Nachrichten, um festzustellen, ob ein Port das Ziel überwacht oder nicht. Manchmal kann dies nicht verwendet werden oder wird vom Remote-Server erkannt, und es gibt andere Alternativen zum Scannen.
Allgemeine Syntax
nmap { }
Unser erster Scan
Wir können den folgenden Befehl ausführen:
nmap 45.33.49.119
Wir setzen keine Art von Umfrage, so verwenden Sie die Standard-Umfrage, TCP SYN. nmap sendet ein SYN und geht davon aus, dass der Port geöffnet ist, wenn er ein ACN SYN empfängt. Es gibt auch keinen zusätzlichen Parameter für Optionen, und als Ziel gibt es eine einzelne IP. Dieser Befehl gibt uns ein ähnliches Ergebnis wie das folgende:
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-01 18:12 CESTNmap scan report for ack.nmap.org (45.33.49.119)Host is up (0.19s latency).Not shown: 993 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp70/tcp closed gopher80/tcp open http113/tcp closed ident443/tcp open https31337/tcp closed EliteNmap done: 1 IP address (1 host up) scanned in 10.86 seconds
In wenigen Sekunden wird eine Liste der offenen Ports auf dieser IP zurückgegeben, einschließlich eines SSH-, eines SMTP-Mailservers, eines Webservers und einer möglichen hinteren Öffnung (https://www.speedguide.net/port.php?port=31337).
In vielen Fällen ist dies einfach ein erster Analysepunkt, obwohl beispielsweise die Software hinter einem FTP-Server, SSH usw., ist vollständig aktualisiert und es sind keine Schwachstellen bekannt. Sie können beispielsweise einen Brute-Force-Angriff mit einem Wörterbuch auf dem SSH- oder FTP-Server starten, auf das Sie zugreifen möchten (es gibt eine große Anzahl von Servern dieses Typs mit standardmäßigen oder unsicheren Anmeldeinformationen).
Es gibt automatische Tools (Bots), die im Grunde kontinuierlich große Bereiche von IPs scannen und nach erkennbaren offenen Ports suchen, z. B. Datenbanken (MongoDB, MySQL, PostgreSQL usw.), und wenn sie einen offenen Port erkennen, versuchen sie automatisch, sich mit Standardanmeldeinformationen anzumelden. Zum Beispiel bei typischen LAMP / WAMP-Installationen ein Root / Zugriff auf den MySQL-Port. Und im Grunde wurde eine große Anzahl von Datenbanken ohne vorherige menschliche Intervention gehackt. Dies ist auch dann praktikabel, wenn wir es in einem anderen Port geöffnet haben, da in vielen Fällen festgestellt werden kann, dass das, was sich in Port 5555 befindet, „irrezuführen“, um etwas zu sagen, ein MySQL durch den Fingerabdruck des Dienstes ist, wie wir sehen werden mehr voraus.
Kurz gesagt, es ist sehr gefährlich, Anmeldeinformationen standardmäßig auf Webservern, Routern, FTPs, SSHs, Datenbanken zu belassen … weil niemand ein Passwort haben muss, wird es ein Bot tun.
Ein erster Parameter
Wenn wir einige Informationen darüber haben möchten, wie nmap diese Informationen erhalten hat, können wir die Spuren mit dem Parameter -v (ausführlich) oder -vv erhöhen, wo wir sehen können, dass nmap SYN-Befehle ausgegeben hat und in einigen Fällen RESET empfangen hat (geschlossener Port), in anderen SYN-ACK (offener Port) und in anderen keine Antwort („gefiltert“), wodurch wir verstehen können, dass eine Firewall unsere Anforderung:
PORT STATE SERVICE REASON22/tcp open ssh syn-ack ttl 5325/tcp open smtp syn-ack ttl 5370/tcp closed gopher reset ttl 5280/tcp open http syn-ack ttl 53113/tcp closed ident reset ttl 52443/tcp open https syn-ack ttl 5331337/tcp closed Elite reset ttl 53
Erhöhen des zu scannenden IPs-Bereichs
nmap 192.168.10.0/24 (subred completa)nmap 192.168.10.1-20 (20 IPs)nmap 192.168.10.*nmap 192.168.10.1 192.168.10.2 192.168.10.3
Oder stellen Sie sich beispielsweise vor, wir haben IPs aus unserer anfänglichen Aufzählung gesammelt und eine Datei mit den verschiedenen IPs, die durch Tabulatoren oder Zeilenumbrüche getrennt sind (eine IP oder ein Bereich pro Zeile). Wir können die Datei mit dem Parameter -iL (Eingabeliste) laden und so das gesamte IP-Inventar scannen. Es erlaubt beispielsweise auch, bestimmte IPs mit –exclude oder –excludefile auszuschließen.
Definieren der zu scannenden Ports
Wir können die zu scannenden Ports manuell definieren. Wenn wir beispielsweise nach Webservern an den Ports 80, 443 und 8080 in einem Subnetz suchen, können wir dies mit dem Parameter -p tun:
nmap -p 80,443,8080 192.168.10.0/24
Wir können nmap auch bitten, die „N“ (Ganzzahl) häufigsten Ports zu scannen. Zum Beispiel, um die 25 häufigsten Ports in einem Bereich von IPs zu scannen:
nmap --top-ports 25 192.168.10.0/24
Eine Antwort wie diese erhalten:
PORT STATE SERVICE21/tcp closed ftp22/tcp open ssh23/tcp closed telnet25/tcp closed smtp53/tcp open domain80/tcp open http110/tcp closed pop3111/tcp open rpcbind135/tcp closed msrpc139/tcp open netbios-ssn143/tcp closed imap199/tcp closed smux443/tcp closed https445/tcp open microsoft-ds587/tcp closed submission993/tcp closed imaps995/tcp closed pop3s1025/tcp closed NFS-or-IIS1720/tcp closed h323q9311723/tcp closed pptp3306/tcp closed mysql3389/tcp closed ms-wbt-server5900/tcp open vnc8080/tcp closed http-proxy8888/tcp closed sun-answerbook
Wir können darum bitten, dass alle TCP-, UDP- und SCTP-Ports (langsamer) mit der Kennung -p- gescannt werden:
nmap -p- 192.168.10.0/24
Identifizieren von Betriebssystemen und Diensten
Wie wir sehen, können wir mit nmap Ports erkennen, die eine IP oder einen Bereich abhören. Später werden wir auch sehen, wie andere Erhebungstechniken definiert werden können. Darüber hinaus können wir mit nmap versuchen zu identifizieren, welche Technologie (Produkt, Version usw.) befindet sich hinter einem offenen Port oder sogar dem auf einem Server installierten Betriebssystem mit den Parametern -O und -sV. Diese Erkennung basiert auf der „Signatur“ (Fingerabdruck) der Antworten, die der Dienst auf bestimmte Anrufe gibt.
nmap -O -sV 192.168.10.5
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 6.7p1 Raspbian 5+deb8u3 (protocol 2.0)53/tcp open domain ISC BIND 9.9.5 (Raspbian Linux 8.0 (Jessie based))80/tcp open http Apache httpd 2.4.10 ((Raspbian))111/tcp open rpcbind 2-4 (RPC #100000)139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)4567/tcp open http Jetty 9.4.8.v201711215900/tcp open vnc RealVNC Enterprise 5.3 or later (protocol 5.0)MAC Address: B8:27:EB:CD:FE:89 (Raspberry Pi Foundation)Device type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: Host: RASPBERRYPI; OS: Linux; CPE: cpe:/o:linux:linux_kernel
In diesem Fall wissen wir nicht nur, dass diese Maschine bestimmte offene Ports hat. Es sagt uns auch, dass es sich um eine Himbeere handelt, auf der Raspbian ausgeführt wird (mit der wir beispielsweise einen Brute-Force-Test mit einem Benutzer „pi“ durchführen können, der der Standardbenutzer ist), und die Versionen der verschiedenen Ports, die zuhören, so dass diese Informationen verwendet werden können, um Schwachstellen über ungepatchte Versionen usw. auszunutzen.
Weitere Abfragetechniken verwenden
Standardmäßig verwendet nmap SYN als Abfragetechnik. Es ist eine schnelle und nicht sehr aufdringliche / erkennbare Technik, aber manchmal unterstützt sie insgesamt 12 verschiedene Techniken, die wir als Parameter definieren können, wie wir im Benutzerhandbuch des Tools sehen können.
Wenn wir beispielsweise einen Scan basierend auf UDP-Anrufen durchführen möchten, können wir einen Anruf vom Typ tätigen:
nmap -sU 192.168.10.5
Suche nach Schwachstellen mit nmap
Obwohl es „komfortablere“ und spezifischere Tools für die Suche nach Schwachstellen gibt, wie Nessus, oder Suiten wie Metasploit, die verschiedene Tools konsolidieren, können wir mit nmap auch Schwachstellenanalysen durchführen.
Dazu verwendet es eine Reihe von Lua-Skripten, die sich in einem Pfad unseres Computers befinden (im Fall von Kali in / usr / share / nmap / scripts /) und die mit –script aufgerufen werden können oder sein Äquivalent -sC .
Skripte können zu einer oder mehreren Kategorien gehören, so dass wir nmap bitten können, beispielsweise alle Skripte in einer Kategorie gegen einen Host auszuwerten. Es gibt einige besonders interessante Kategorien wie „vuln“ (Skripte zur Erkennung von Schwachstellen am Ziel), „Exploit“ usw.
Wenn wir beispielsweise die Skripte der Schwachstellenkategorie gegen einen Host scannen möchten:
nmap --script vuln scanme.nmap.org
PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=scanme.nmap.org| Found the following possible CSRF vulnerabilities: | | Path: http://scanme.nmap.org:80/| Form id: cse-search-box-sidebar|_ Form action: https://nmap.org/search.html|http-dombased-xss: Couldn't find any DOM based XSS. | http-enum: | /images/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)' | /shared/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)'| http-slowloris-check: | VULNERABLE:| Slowloris DOS attack| State: LIKELY VULNERABLE| IDs: CVE:CVE-2007-6750| Slowloris tries to keep many connections to the target web server open and hold them open as long as possible. It accomplishes this by opening connections to the target web server and sending a partial request. By doing so, it starves the http server's resources causing Denial Of Service.| Disclosure date: 2009-09-17| References:| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750|_ http://ha.ckers.org/slowloris/|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.9929/tcp open nping-echo31337/tcp open Elite
Wie wir sehen können, hat das Skript eine potenzielle Sicherheitsanfälligkeit basierend auf dem Slowloris-Denial-of-Service-Angriff erkannt. Wenn wir die Skripte analysieren, die sich auf der oben genannten Route befinden, stellen wir fest, dass genau eines diese Sicherheitsanfälligkeit ausnutzt, http-slowloris. Wenn wir weitere Informationen zum Skript wünschen, können wir den folgenden Befehl starten:
nmap --script-help http-slowloris
Erklären, wie das Skript funktioniert, wie es gestartet wird (es ist auch möglich, es mit der nmap selbst mit –script und –script-args zu tun) usw. Wir können zum Beispiel auch eine Beschreibung aller Skripte erhalten, die nach Schwachstellen suchen:
nmap --script-help vuln
Wir können zum Beispiel auch alle Skripte eines bestimmten Typs starten. Wenn wir beispielsweise Schwachstellen über das SMB-Protokoll auf einem bestimmten Host scannen möchten:
nmap --script smb-* 192.168.10.5
Wir können beispielsweise auch eine Sicherheitsanfälligkeit in unserem gesamten Netzwerk bewerten und ein bestimmtes Skript für einen Bereich auswählen. Der Parameter -script
nmap --script-help vuln
nmap --script
Kurz gesagt, nmap enthält sogar interessante Optionen, um Schwachstellen zu bewerten und sogar Exploits zu starten, obwohl es andere Tools gibt, die häufig für diesen Zweck verwendet werden.
Andere interessante Optionen
Wie wir kommentiert haben, hat nmap viele Optionen und es ist unmöglich zu versuchen, auch nur einen kleinen Prozentsatz in einem Beitrag abzudecken. Tatsächlich gibt es ein offizielles nmap-Buch mit fast 500 Seiten … Aber auf jeden Fall versuchen wir hier einige zu kommentieren, die interessant erscheinen.
Wie wir kommentiert haben, hat nmap viele Optionen und es ist unmöglich zu versuchen, auch nur einen kleinen Prozentsatz in einem Beitrag abzudecken. Tatsächlich gibt es ein offizielles nmap-Buch mit fast 500 Seiten … Aber auf jeden Fall versuchen wir hier einige zu kommentieren, die interessant erscheinen.
- Mit dem Tool können Sie das Scanergebnis in einer verarbeitbaren Ausgabedatei generieren, z. B. im XML-Format mit -oX oder -oN .
- Wenn wir große Bereiche von IPs scannen, können wir den DNS Reverse Resolution-Versuch mit dem Parameter -n deaktivieren.
- Während der Ausführung eines Befehls können wir die auf der Konsole angezeigte Informationsebene (Ausführlichkeit) durch Drücken der Taste „V“ erhöhen.
- Wenn wir eine Firewall haben, die uns schneidet, können wir versuchen -Pn.
Kurz gesagt, wir haben versucht, eine „kurze“ Einführung in nmap als Werkzeug zur Identifizierung offener Ports und Dienste auf einem Host oder einer Reihe von IPs zu entwickeln. In späteren Beiträgen werden wir andere Möglichkeiten sehen, Schwachstellen zu erkennen.
Alles bereit?
Es ist Zeit, Dokumente effizienter zu handhaben