Einführung
In diesem Labyrinth lernst du, wie du SSL-Zertifikate mit dem ssl-cert-Skript von Nmap erkennen kannst. Das Lab führt dich durch das Scannen von IP-Adressen und Domänennamen, um SSL/TLS-Zertifikatinformationen abzurufen und anzuzeigen, einschließlich des Betreibers, des Ausstellers und der Gültigkeitsdauer.
Du wirst Befehle wie nmap --script ssl-cert 192.168.1.1 und nmap --script ssl-cert scanme.nmap.org im Xfce-Terminal ausführen, um Optionen zur Angabe von Ports, zur Erhöhung der Ausführlichkeit und zum Speichern der Ergebnisse in einer Datei zu erkunden. Schließlich wirst du die Zertifikatdetails überprüfen und sie mit den Ergebnissen der Diensterkennung vergleichen.
Führe einen SSL-Zertifikatscan mit nmap --script ssl-cert 192.168.1.1 durch
In diesem Schritt werden wir Nmap verwenden, um einen SSL-Zertifikats-Scan auf einer angegebenen IP-Adresse durchzuführen. Nmap ist ein leistungsstarkes Netzwerkscanning-Tool, und sein Skripting-Engine ermöglicht es uns, seine Funktionalität zu erweitern. Das ssl-cert-Skript ist dazu gedacht, Informationen über SSL/TLS-Zertifikate von einem Zielserver abzurufen und anzuzeigen.
Zunächst verstehen wir die grundlegende Befehlsstruktur:
nmap --script ssl-cert <target_ip>
Hier ist <target_ip> die IP-Adresse des Servers, den Sie scannen möchten. In unserem Fall werden wir die IP-Adresse 192.168.1.1 scannen.
Öffnen Sie nun Ihren Xfce-Terminal. Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden. Wenn nicht, navigieren Sie thierhin mit dem Befehl cd:
cd ~/project
Als Nächstes führen Sie den folgenden Befehl aus, um den SSL-Zertifikats-Scan auszuführen:
sudo nmap --script ssl-cert 192.168.1.1
Es wird Ihnen möglicherweise nach Ihrem Passwort gefragt. Da der Benutzer labex sudo-Rechte ohne Passwort hat, drücken Sie einfach die Eingabetaste.
Hinweis: 192.168.1.1 ist eine private IP-Adresse und kann von Ihrer aktuellen Netzwerkkonfiguration möglicherweise nicht erreicht werden. Wenn Sie keinen Server an dieser Adresse haben, kann der Scan möglicherweise keine Ergebnisse zurückgeben oder zeitout. Für Testzwecke können Sie eine öffentliche IP-Adresse verwenden, von der Sie wissen, dass sie ein SSL-Zertifikat hat, wie scanme.nmap.org oder 8.8.8.8.
Versuchen wir stattdessen, scanme.nmap.org zu scannen:
sudo nmap --script ssl-cert scanme.nmap.org
Dieser Befehl wird versuchen, sich mit scanme.nmap.org zu verbinden und seine SSL-Zertifikatinformationen abzurufen. Die Ausgabe wird Details wie das Betreff, der Aussteller, die Gültigkeitsdauer und alle Subjektalternativen Namen (SANs) anzeigen.
Beispielausgabe (die tatsächliche Ausgabe wird variieren):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.031s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
PORT STATE SERVICE
22/tcp open ssh
| ssl-cert: Subject: commonName=scanme.nmap.org
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-03-18T14:23:03+00:00
| Not valid after: 2020-06-16T14:23:03+00:00
| MD5: ...
| SHA1: ...
| -----BEGIN CERTIFICATE-----
| ...
| -----END CERTIFICATE-----
Nmap done: 1 IP address (1 host up) scanned in 2.18 seconds
Diese Ausgabe zeigt die SSL-Zertifikatdetails für scanme.nmap.org, einschließlich des Betreibers, des Ausstellers und der Gültigkeitsdaten.
Scannen Sie Port 443 mit nmap --script ssl-cert -p 443 127.0.0.1
In diesem Schritt werden wir uns auf das Scannen eines bestimmten Ports, nämlich Port 443, konzentrieren, indem wir Nmap und das ssl-cert-Skript verwenden. Port 443 ist der Standardport für HTTPS (Hypertext Transfer Protocol Secure)-Traffic, der für die sichere Kommunikation im Internet verwendet wird. Indem wir den Port angeben, können wir den Scan einschränken und speziell für auf diesem Port laufende Dienste SSL-Zertifikatinformationen abrufen.
Der Befehl, den wir verwenden werden, lautet:
nmap --script ssl-cert -p 443 127.0.0.1
Zergliedern wir diesen Befehl:
nmap: Der Nmap-Befehlszeilen-Scanner.--script ssl-cert: Gibt an, dass wir dasssl-cert-Skript verwenden möchten, um SSL-Zertifikatinformationen abzurufen.-p 443: Diese Option 告诉 Nmap, nur Port 443 zu scannen.127.0.0.1: Dies ist die Loopback-Adresse, auch bekannt als localhost. Es bezieht sich auf Ihren eigenen Computer.
Öffnen Sie nun Ihren Xfce-Terminal und stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden:
cd ~/project
Führen Sie den folgenden Befehl aus, um Port 443 auf localhost zu scannen:
sudo nmap --script ssl-cert -p 443 127.0.0.1
Da 127.0.0.1 auf Ihren eigenen Computer verweist, wird dieser Befehl versuchen, das SSL-Zertifikat von jedem Dienst abzurufen, der auf Port 443 auf Ihrer LabEx VM läuft. Wenn kein Dienst auf Port 443 hört, wird Nmap melden, dass der Port geschlossen ist.
Wenn Sie auf Ihrer LabEx VM einen Webserver oder einen anderen Dienst konfiguriert haben, der HTTPS verwendet, sollten Sie eine Ausgabe ähnlich der folgenden sehen (die tatsächliche Ausgabe wird je nach Zertifikat und Serverkonfiguration variieren):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000086s latency).
PORT STATE SERVICE
443/tcp closed https
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
In diesem Beispiel zeigt die Ausgabe an, dass Port 443 geschlossen ist. Dies bedeutet, dass kein Dienst auf diesem Port auf dem localhost hört. Wenn ein Dienst läuft, wird die Ausgabe die SSL-Zertifikatdetails enthalten, ähnlich wie im vorherigen Schritt.
Wenn Sie diesen Befehl gegen einen Server testen möchten, von dem Sie wissen, dass er auf Port 443 HTTPS aktiviert hat, können Sie 127.0.0.1 durch die IP-Adresse oder die Domäne dieses Servers ersetzen. Beispielsweise:
sudo nmap --script ssl-cert -p 443 scanme.nmap.org
Dies wird Port 443 auf scanme.nmap.org scannen und seine SSL-Zertifikatinformationen abrufen.
Füge die Ausführlichkeit mit nmap -v --script ssl-cert 192.168.1.1 hinzu
In diesem Schritt werden wir der Ausführlichkeit unseres Nmap-Befehls hinzufügen. Die Ausführlichkeit in Nmap bedeutet, dass die Menge an angezeigten Informationen während des Scans erhöht wird. Dies kann hilfreich sein, um zu verstehen, was Nmap macht, und um Probleme zu beheben. Die Option -v erhöht das Ausführlichkeitsniveau. Wenn man -v mehrmals verwendet (z.B. -vv oder -vvv), wird die Ausführlichkeit noch weiter erhöht.
Der Befehl, den wir verwenden werden, lautet:
nmap -v --script ssl-cert 192.168.1.1
Zergliedern wir diesen Befehl:
nmap: Der Nmap-Befehlszeilen-Scanner.-v: Diese Option erhöht das Ausführlichkeitsniveau und liefert detailliertere Ausgabe.--script ssl-cert: Gibt an, dass wir dasssl-cert-Skript verwenden möchten, um SSL-Zertifikatinformationen abzurufen.192.168.1.1: Dies ist die Ziel-IP-Adresse.
Öffnen Sie nun Ihren Xfce-Terminal und stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden:
cd ~/project
Führen Sie den folgenden Befehl aus, um den SSL-Zertifikats-Scan mit Ausführlichkeit auszuführen:
sudo nmap -v --script ssl-cert 192.168.1.1
Wie zuvor erwähnt, ist 192.168.1.1 eine private IP-Adresse und kann möglicherweise nicht erreicht werden. Wenn Sie keinen Server an dieser Adresse haben, kann der Scan möglicherweise keine Ergebnisse zurückgeben oder zeitout. Für Testzwecke können Sie eine öffentliche IP-Adresse verwenden, von der Sie wissen, dass sie ein SSL-Zertifikat hat, wie scanme.nmap.org.
Versuchen wir, scanme.nmap.org mit Ausführlichkeit zu scannen:
sudo nmap -v --script ssl-cert scanme.nmap.org
Die Ausgabe wird nun Informationen über den Scanprozess enthalten, wie die verschiedenen Phasen, durch die Nmap geht, die Ports, die es durchsucht, und alle Fehler oder Warnungen, die auftreten.
Beispielausgabe (die tatsächliche Ausgabe wird variieren):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
NSE: Loaded 1 script for scanning.
Initiating Ping Scan at 10:00
Scanning scanme.nmap.org (45.33.32.156) [2 ports]
Completed Ping Scan at 10:00, 0.03s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:00
Completed Parallel DNS resolution of 1 host. at 10:00, 0.01s elapsed
Initiating Connect Scan at 10:00
Scanning scanme.nmap.org (45.33.32.156) [1000 ports]
Discovered open port 22/tcp on 45.33.32.156
Completed Connect Scan at 10:00, 2.15s elapsed (1000 total ports)
NSE: Script scanning scanme.nmap.org (45.33.32.156)
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 10:00
Completed NSE at 10:00, 0.02s elapsed
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.031s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
PORT STATE SERVICE
22/tcp open ssh
| ssl-cert: Subject: commonName=scanme.nmap.org
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-03-18T14:23:03+00:00
| Not valid after: 2020-06-16T14:23:03+00:00
| MD5: ...
| SHA1: ...
| -----BEGIN CERTIFICATE-----
| ...
| -----END CERTIFICATE-----
NSE: Script Post-scanning.
Initiating NSE at 10:00
Completed NSE at 10:00, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.34 seconds
Bemerken Sie die zusätzlichen Informationen über den Scanprozess, wie "Initiating Ping Scan", "Completed Connect Scan" und "NSE: Script scanning". Diese zusätzliche Details können hilfreich sein, um zu verstehen, wie Nmap funktioniert, und um Probleme zu diagnostizieren.
Speichern Sie die SSL-Ergebnisse mit nmap --script ssl-cert -oN ssl.txt 127.0.0.1
In diesem Schritt werden wir lernen, wie wir die Ergebnisse unseres Nmap-Scans in eine Datei speichern. Dies ist nützlich für eine spätere Analyse oder zum Teilen der Ergebnisse mit anderen. Nmap bietet mehrere Optionen zum Speichern der Ausgabe in verschiedenen Formaten. Die Option -oN speichert die Ausgabe in einem "normalen", menschlich lesbaren Format.
Der Befehl, den wir verwenden werden, lautet:
nmap --script ssl-cert -oN ssl.txt 127.0.0.1
Zergliedern wir diesen Befehl:
nmap: Der Nmap-Befehlszeilen-Scanner.--script ssl-cert: Gibt an, dass wir dasssl-cert-Skript verwenden möchten, um SSL-Zertifikatinformationen abzurufen.-oN ssl.txt: Diese Option 告诉 Nmap, die Ausgabe im normalen Format in eine Datei namensssl.txtzu speichern.127.0.0.1: Dies ist die Ziel-IP-Adresse (localhost).
Öffnen Sie nun Ihren Xfce-Terminal und stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden:
cd ~/project
Führen Sie den folgenden Befehl aus, um den SSL-Zertifikats-Scan auszuführen und die Ergebnisse in ssl.txt zu speichern:
sudo nmap --script ssl-cert -oN ssl.txt 127.0.0.1
Nach Abschluss des Scans finden Sie in Ihrem Verzeichnis ~/project eine Datei namens ssl.txt. Diese Datei enthält die Ausgabe des Nmap-Scans, einschließlich der SSL-Zertifikatinformationen (sofern vorhanden) für das Ziel.
Um zu überprüfen, dass die Datei erstellt wurde und die Scanergebnisse enthält, können Sie den Befehl cat verwenden, um den Inhalt der Datei anzuzeigen:
cat ssl.txt
Wenn ein Dienst mit einem SSL-Zertifikat auf 127.0.0.1 läuft, werden Sie die Zertifikatdetails in der Ausgabe sehen. Wenn kein Dienst läuft, wird die Datei Informationen über den Scan enthalten, aber keine Zertifikatdetails.
Beispielsweise könnte die ssl.txt-Datei, wenn Port 443 geschlossen ist, enthalten:
## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000086s latency).
PORT STATE SERVICE
443/tcp closed https
## Nmap done at Tue Oct 27 10:00:00 2023 -- 1 IP address (1 host up) scanned in 0.07 seconds
Wenn Sie einen anderen Zielhost scannen und die Ergebnisse speichern möchten, ersetzen Sie einfach 127.0.0.1 durch die gewünschte IP-Adresse oder Domäne. Beispielsweise:
sudo nmap --script ssl-cert -oN ssl.txt scanme.nmap.org
Dies wird scanme.nmap.org scannen und die Ergebnisse in ssl.txt speichern. Vergessen Sie nicht, die Inhalte von ssl.txt mit cat ssl.txt zu überprüfen, um die Scanergebnisse zu bestätigen.
Überprüfen Sie die Zertifikatdetails im Xfce-Terminal
In diesem Schritt werden wir die SSL-Zertifikatdetails überprüfen, die wir im vorherigen Schritt in die Datei ssl.txt gespeichert haben. Wir werden den Befehl cat verwenden, um den Inhalt der Datei im Xfce-Terminal anzuzeigen und dann die Zertifikatinformationen zu untersuchen.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden:
cd ~/project
Verwenden Sie jetzt den Befehl cat, um den Inhalt der Datei ssl.txt anzuzeigen:
cat ssl.txt
Die Ausgabe wird die Nmap-Scanergebnisse zeigen, einschließlich der SSL-Zertifikatdetails, wenn ein Dienst mit einem SSL-Zertifikat auf dem Ziel gefunden wurde.
Analysieren wir die Ausgabe. Die wichtigen Teile der SSL-Zertifikatinformationen umfassen typischerweise:
- Betreff (Subject): Dieses Feld enthält den Domänennamen oder die Entität, an die das Zertifikat ausgestellt wurde. Suchen Sie nach dem Attribut
commonName(CN) innerhalb des Betreff-Felds. - Aussteller (Issuer): Dieses Feld identifiziert die Zertifizierungsstelle (Certificate Authority, CA), die das Zertifikat ausgestellt hat. Suchen Sie wiederum nach dem Attribut
commonName(CN). - Typ des öffentlichen Schlüssels (Public Key type): Gibt den Typ des verwendeten öffentlichen Schlüsselalgorithmus an (z.B. RSA, DSA, ECDSA).
- Anzahl der Bits des öffentlichen Schlüssels (Public Key bits): Gibt die Schlüssellänge in Bits an (z.B. 2048, 4096). Größere Schlüssellängen bieten im Allgemeinen eine stärkere Sicherheit.
- Signaturalgorithmus (Signature Algorithm): Gibt den Algorithmus an, der zum Signieren des Zertifikats verwendet wird (z.B. sha256WithRSAEncryption).
- Nicht gültig vor (Not valid before): Das Datum und die Uhrzeit, ab der das Zertifikat gültig wird.
- Nicht gültig nach (Not valid after): Das Datum und die Uhrzeit, bis zu der das Zertifikat gültig ist. Es ist von entscheidender Bedeutung, sicherzustellen, dass die Zertifikate nicht abgelaufen sind.
- MD5/SHA1: Dies sind Hash-Werte des Zertifikats. Während MD5 als schwach angesehen wird, wird auch SHA1 abgelöst. SHA256 oder höher wird bevorzugt.
- -----BEGIN CERTIFICATE-----... -----END CERTIFICATE-----: Dies ist die tatsächliche codierte Zertifikatdaten im PEM-Format.
Beispielsweise könnte der relevante Teil der Ausgabe aussehen, wenn Sie scanme.nmap.org gescannt und die Ausgabe in ssl.txt gespeichert haben:
PORT STATE SERVICE
22/tcp open ssh
| ssl-cert: Subject: commonName=scanme.nmap.org
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-03-18T14:23:03+00:00
| Not valid after: 2020-06-16T14:23:03+00:00
| MD5: ...
| SHA1: ...
| -----BEGIN CERTIFICATE-----
| ...
| -----END CERTIFICATE-----
In diesem Beispiel können Sie sehen, dass das Zertifikat für scanme.nmap.org ausgestellt wurde, von Let's Encrypt Authority X3 ausgestellt wird, einen RSA-Schlüssel mit 2048 Bits verwendet und mit SHA256 signiert ist.
Indem Sie diese Details überprüfen, können Sie Einblicke in die Sicherheit und Gültigkeit des von dem Ziel-Dienst verwendeten SSL-Zertifikats erhalten.
Wenn Sie 127.0.0.1 gescannt haben und kein SSL-Dienst läuft, wird die Datei ssl.txt keine detaillierten Zertifikatinformationen enthalten. In diesem Fall möchten Sie möglicherweise einen einfachen Webserver mit aktiviertem SSL installieren (außerhalb des Rahmens dieses Labors), um ein Zertifikat für das Testen zu generieren.
Vergleichen Sie mit der Diensterkennung im Xfce-Terminal
In diesem Schritt werden wir die SSL-Zertifikatinformationen, die wir mit Nmap erhalten haben, mit dessen Diensterkennungskapazitäten vergleichen. Dies ermöglicht es uns, zu überprüfen, ob der erkannte Dienst mit den Zertifikatdetails übereinstimmt und eventuelle Diskrepanzen zu identifizieren.
Zunächst führen wir einen standardmäßigen Nmap-Diensterkennungsscan auf dem Ziel durch. Wir verwenden 127.0.0.1 als Ziel für dieses Beispiel. Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden:
cd ~/project
Führen Sie folgenden Befehl aus:
sudo nmap -sV 127.0.0.1
Die Option -sV aktiviert die Dienstversionserkennung. Nmap wird versuchen, den auf jedem geöffneten Port laufenden Dienst zu bestimmen.
Die Ausgabe wird die geöffneten Ports und den erkannten Dienst anzeigen. Beispielsweise:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000058s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
443/tcp open ssl/http ## Beispiel: Wenn ein Webserver mit SSL läuft
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds
Vergleichen Sie nun die Diensterkennungsergebnisse mit den SSL-Zertifikatdetails, die Sie im vorherigen Schritt überprüft haben (aus der Datei ssl.txt).
Beispielsweise, wenn Nmap's Diensterkennung Port 443 als ssl/http identifiziert und der commonName des SSL-Zertifikats mit der Domäne übereinstimmt, die mit dem Webserver assoziiert ist, stimmen dann die Diensterkennung und die Zertifikatdetails überein.
Wenn jedoch ein Unstimmigkeit auftritt, kann dies auf ein potenzielles Problem hinweisen:
- Falsche Dienstidentifizierung: Nmap kann den auf einem Port laufenden Dienst falsch identifizieren.
- Fehlerhafte Zertifikatkonfiguration: Das Zertifikat kann für einen anderen Domänennamen ausgestellt sein als der, der bedient wird.
- Man-in-the-Middle-Angriff: Ein Angreifer könnte die Verbindung abfangen und ein anderes Zertifikat vorlegen.
Um Diskrepanzen weiter zu untersuchen, können Sie spezifischere Nmap-Skripte oder Tools wie openssl verwenden, um das Zertifikat direkt zu untersuchen.
Beispielsweise, wenn die Diensterkennung auf Port 443 http anzeigt, aber das SSL-Zertifikat für eine andere Domäne ist, ist dies ein Alarmzeichen. Dies könnte auf eine fehlerhafte Konfiguration oder einen potenziellen Angriff hinweisen.
Zusammenfassend lässt sich sagen, dass das Vergleichen von Nmap's Diensterkennung mit SSL-Zertifikatdetails Ihnen dabei hilft, die Integrität und Sicherheit der auf einem Ziel laufenden Dienste zu überprüfen.
Zusammenfassung
In diesem Lab haben wir Nmap mit dem Skript ssl-cert verwendet, um SSL/TLS-Zertifikatinformationen von Zielservern zu scannen und abzurufen. Wir haben gelernt, wie man den grundlegenden Befehl nmap --script ssl-cert <target_ip> ausführt, um eine bestimmte IP-Adresse zu scannen, und haben potenzielle Probleme mit privaten IP-Adressen durch das Verwenden einer öffentlichen Adresse wie scanme.nmap.org für das Testen behandelt.
Wir haben auch die Ausführung des Scans mit sudo praktiziert und die Ausgabe beobachtet, die Details wie das Betreff, den Aussteller und die Gültigkeitsdauer des Zertifikats enthält. Dies liefert eine Grundlage für die weitere Erforschung der Fähigkeiten von Nmap bei der SSL-Zertifikatanalyse.



