# Wie funktioniert ein Penetrationstest mit Enginsight?

Ein Penetrationstest ist ein geplanter und kontrolliert durchgeführter automatisierter Angriff auf die eigenen Systeme, um Schwachstellen gezielt aufzudecken. Penetrationstests werden mit der Enginsight Komponente Hacktor durchgeführt.

Im Folgenden erklären wir dir, wie ein Penetrationstest mit Enginsight funktioniert.

***

## 4 Elemente des Penetrationstests

Der automatisierte Penetrationstest von Enginsight besteht aus vier Elementen:

1. [**Information Gathering**](#information-gathering): Durch Basis- und Deep-Scans erstellt der Hacktor ein Footprinting der Anwendungsumgebung, ermittelt also Informationen, die für einen Angriff ausgenutzt werden können.
2. [**CVE-Scan:**](#cve-scan) Der Hacktor untersucht die ermittelten Softwareanwendungen auf bekannte Sicherheitslücken, die ebenfalls ausgenutzt werden können.
3. [**Service-Bruteforce:**](#service-bruteforce) Durch das automatisierte Ausprobieren von Benutzer-Passwort-Kombinationen versucht der Hacktor, unsichere Login-Daten aufzudecken.
4. [**Service-Discovery:**](#service-discovery) Mit speziellen Checks, z.B. von Verschlüsselung, Authentifizierung und Rechte-Vergabe für bestimmte Dienste, deckt der Hacktor sicherheitsrelevante Konfigurationsmängel auf.

Enginsight ermittelt automatisiert, welche Checks für das jeweilige Zielsystem herangezogen werden müssen, und zeigt dir im Detail, ob ein Check bestanden wurde oder nicht und aus welchen Gründen er nicht bestanden wurde.

***

## **1. Information Gathering**

Ziel des Information Gatherings (Sammlung von Informationen) ist es, ein möglichst umfassendes Footprinting der untersuchten Systeme zu erstellen. Unter Footprinting wird das Sammeln von Informationen verstanden, die für die anschließenden Hacking-Angriffe genutzt werden.&#x20;

Dieses Vorgehen nutzen auch echte Hacker, um abzuschätzen, welche Angriffsvektoren erfolgversprechend sind. Deshalb ist es aus Sicherheitsperspektive am Besten, möglichst wenig über verwendete Technologien nach außen preiszugeben.

Der Enginsight Hacktor setzt beim Footprinting auf verschiedene Ansätze:

### **Basis-Scan**

<table><thead><tr><th width="177.37890625">Untersuchte Bereiche</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Ports</td><td>Offene Ports werden auf die dahinterliegende Anwendung untersucht und ob die verwendete Version preisgegeben wird.</td></tr><tr><td>HTTP-Header</td><td>HTTP-Header wie <em>X-Mod-Pagespeed</em> und <em>Server</em> werden darauf untersucht, ob sie Informationen zum System preisgegeben.</td></tr></tbody></table>

### **Deep-Scan**

<table><thead><tr><th width="246.859375">Untersuchte Bereiche</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Webanwendungen</td><td>Mittels statistischer Verfahren werden Webanwendungen auf die verwendeten Technologien untersucht (z.B. das genutzte CMS, Programmiersprachen und Libraries).</td></tr><tr><td>Betriebssystem (SNMP)</td><td>Über das Simple Network Management Protocol (SNMP) wird versucht, das verwendete Betriebssystem zu ermitteln.</td></tr><tr><td>Installierte Pakete (SNMP)</td><td>Über SNMP wird versucht, Zugriff auf installierte Pakete zu erhalten.</td></tr><tr><td>Remote Control Service</td><td>Es wird versucht, Informationen über verwendete Dienste zu erlangen, über die eine Fernwartung durchgeführt werden kann (z.B. SSH, VNC, RDP, Telnet).</td></tr><tr><td>mDNS</td><td>Es wird untersucht, ob Multicast-DNS (mDNS) Funktionalitäten aktiviert sind, über die ein Zugriff erfolgen kann.</td></tr></tbody></table>

***

## **2. CVE-Scan**

Zusätzlich überprüft der Hacktor die verwendeten Versionen von gefundenen Softwareanwendungen in einem netzwerkseitigen Flächen-Scan auf bekannte Sicherheitslücken (Common Vulnerabilities and Exposures; CVE).

Findet der Hacktor eine CVE, versucht er, sie über das Untersuchen von Meta-Informationen zu validieren. Das heißt, er prüft, ob die Sicherheitslücke bei dem entsprechend verwendeten Betriebssystem wirksam wird, sie also ausgenutzt werden kann. Ist dies der Fall, erhält die CVE die Kennzeichnung *validated*.&#x20;

Es kann vorkommen, dass es dem Hacktor nicht möglich ist, das Betriebssystem zweifelsfrei festzustellen. Die CVE kann dann nicht validiert werden. Sie taucht trotzdem im Audit-Bericht auf, erhält jedoch den Hinweis *invalidated*. In diesem Fall muss der Nutzer selbst nachprüfen, ob die Sicherheitslücke bei diesem System wirksam ist.

Auf unserem Blog erklären wir, warum wir CVEs über Meta-Informationen anstatt über Exploits, also das aktive Ausnutzen von Sicherheitslücken, validieren: [Sicherheitslücken (CVE) über Meta-Informationen oder Exploits validieren?](https://enginsight.com/de/blog/sicherheitsluecken-cve-ueber-meta-informationen-oder-exploits-validieren/)

***

## **3. Service-Bruteforce**

Im Rahmen des Service-Bruteforce-Angriffes versucht der Hacktor durch das massenhafte Ausprobieren von Passwörtern Zugriff auf das Zielsystem zu erlangen.

### Attackierte Dienste

Für folgende Dienste wird Bruteforce herangezogen:

* SSH (Secure Shell)
* Telnet
* FTP (File Transfer Protocol)
* MySQL
* MongoDB
* MS SQL
* OracleDB
* Redis
* MariaDB
* RabbitMQ
* PostgreSQL
* HTTP Basic Auth
* HTTP Web Forms (keine Single-Page-Webanwendungen oder JavaScript-Logins)
* SNMP (Simple Network Management Protocol)
* SMB (Server Message Block)
* RDP (Remote Desktop Protocol)
* RTSP (Real-Time Streaming Protocol)
* VNC (Virtual Network Computing)

### Passwortlisten

Enginsight stellt für Penetrationstests Passwortlisten zur Verfügung, die standardmäßig überprüft werden. Zudem kannst du in der Enginsight Plattform [eigene Passwortlisten](https://docs.enginsight.com/docs/manual/bedienung-der-plattform/penetrationstests/management/audit-definitionen/audit-definition-hinzufugen#eigene-passwortliste) in die Überprüfung miteinbeziehen. Darüber hinaus testet der Hacktor Service-spezifische Standard-Authentifizierungen.

***

## **4. Service-Discovery**

In der Entdeckungs-Phase untersucht der Hacktor die erkannten Dienste auf gängige Konfigurationsmängel. Er testet dabei unter anderem Authentifizierungs-Verfahren, Rechte-Vergaben und Verschlüsselungs-Verfahren.

### Service-übergreifende Checks

<table><thead><tr><th width="202.2890625">Name desChecks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Anfällig für Log4Shell (CVE-2021-44228)</td><td><p>Es wird eine verwundbare Version des Java-Frameworks Log4j, die sich für Log4Shell-Attacken ausnutzen lässt, verwendet (CVE-2021-44228). </p><div data-gb-custom-block data-tag="hint" data-style="warning" class="hint hint-warning"><p><strong>Bitte beachte</strong>: Damit dieser Check korrekte Ergebnisse liefert, muss eine Konnektivität vom Zielsystem zum Hacktor (Portbereich: 1 - 1000) sichergestellt sein (HTTP, SSH, FTP, SMTP, IMAP).</p></div></td></tr></tbody></table>

### DNS (Domain Name System)

<table><thead><tr><th width="261.56640625">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Fehlender DMARC Record</td><td>Der Domain-based Message Authentication, Reporting and Conformance (DMARC)-Eintrag fehlt, obwohl er vorhanden sein sollte. Er erlaubt der Absender-Domain festzulegen, wie E-Mail-Server mit Nachrichten umgehen sollen, die die Authentifizierung nicht bestehen.</td></tr><tr><td>Fehlender CAA Eintrag</td><td>Der Certification Authority Authorization (CAA)-Eintrag fehlt, obwohl er vorhanden sein sollte. Er dient dazu, bestimmte Zertifizierungsstellen (CAs) zu berechtigen, ein Zertifikat für die Domain auszustellen. So kann verhindert werden, dass Zertifikate für eine Domain missbräuchlich ausgestellt werden.</td></tr><tr><td>Fehlender SPF Record</td><td>Der Sender-Policy-Framework (SPF)-Eintrag fehlt, obwohl er vorhanden sein sollte. Er ermöglicht, IP-Adressen zum Versenden von E-Mails mit der Domain zu berechtigen. So kann Dritten untersagt werden, den Domain-Namen missbräuchlich zu verwenden.</td></tr><tr><td>Ungültiger Inhalt des DMARC Records</td><td>Der Inhalt des DMARC-Eintrags ist nicht gültig, da ein oder mehrere Tags nicht gesetzt sind.</td></tr><tr><td>Ungültiger Inhalt des SPF Records</td><td>Der SPF-Eintrag enthält unbekannte Einträge (bekannt sind: spf1, mx, ip4, ip6, exists, include, all, a, redirect, exp, ptr) und/oder unerlaubte Zeichen.</td></tr></tbody></table>

### FTP (File Transfer Protocol)

<table><thead><tr><th width="274.94921875">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Anonyme FTP-Session</td><td>Anonymous FTP erlaubt allen Benutzern einen freien Zugriff auf FTP-Verzeichnisse. Es sollte immer überprüft werden, ob dies wirklich notwendig ist und ob Lese- und Schreibrechte richtig konfiguriert sind.</td></tr><tr><td>Anonymer Zugang zum root (/) Verzeichnis</td><td>Das root-Verzeichnis ist Teil des Backends und ein Zugriff via FTP sollte nur autorisierten Benutzern mit entsprechenden Zugangsdaten gewährt werden.</td></tr><tr><td>Change Working Directory (cwd) Zugang für anonyme Nutzer</td><td>Der Befehl <code>cwd</code> erlaubt das Wechseln des aktiven Verzeichnisses auf dem FTP-Server. Diese Möglichkeit sollte anonymen Nutzern nicht gestatt sein.</td></tr><tr><td>Löschrechte für anonyme Nutzer</td><td>Anonyme Nutzer sollten niemals in der Lage sein, Dateien zu löschen. Daher sollte darauf geachtet werden, Lese- und Schreibrechte richtig zu konfigurieren.</td></tr><tr><td>Schreibrechte für anonyme Nutzer</td><td>Anonyme Nutzer sollten niemals über Schreibrechte verfügen. Daher sollte darauf geachtet werden, Lese- und Schreibrechte richtig zu konfigurieren.</td></tr></tbody></table>

### HTTP (Hypertext Transfer Protocol)

<table><thead><tr><th width="243.1328125">Name desChecks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Anfällig für ShellShock</td><td>Die Schwachstelle in der Unix-Shell Bash ermöglicht es Angreifern, auf dem Zielsystem beliebige Befehle auszuführen und nicht autorisierten Zugriff zu erhalten.</td></tr><tr><td>Common Source Leak</td><td>Dateien, die versteckt sein sollten, sind öffentlich zugänglich. Sie geben möglicherweise wichtige Informationen preis, die das Ziel potenziell angreifbar machen.</td></tr><tr><td>Common Credential Store</td><td>Dateien, die sensible Dateien beinhalten (bspw. Passwörter) sind öffentlich über HTTP zugänglich.</td></tr><tr><td>Cross Site Scripting (XSS)</td><td>Es ist Angreifern möglich, bspw. HTML-, JavaScript- oder CSS-Code unvalidiert in eine Webseite einzubetten.</td></tr><tr><td>Default-Seite wird angezeigt</td><td>Die Standardseite einer Anwendung, also die erste Seite einer Webseite, die automatisch geladen wird, wenn ein Benutzer eine Domain aufruft, ist über unsicheres HTTP erreichbar. Dies deutet darauf hin, dass eine Fehlkonfiguration vorliegt und möglicherweise sensible Bereiche für Unbefugte zugänglich sind.</td></tr><tr><td>Directory Listing ist aktiviert</td><td>Directory Listing ist eine Webserver-Funktion, die den Inhalt eines Verzeichnisses offenbart, das keine Indexdatei hat. Ein Angreifer kann sich so leicht Zugang zu privaten Inhalten auf dem Webserver verschaffen.</td></tr><tr><td>E-Mail-Harvesting</td><td>Der Host ist anfällig für das Sammeln (Harvesting) von E-Mail-Adressen. Böswillige Bots können diese Kontakte ermitteln und für eine spätere Verwendung speichern, z.B. um Phishing-Betrug zu begehen.</td></tr><tr><td>Erlaubt offene Umleitung</td><td>Der Host ermöglicht die Integration von benutzerdefinierten Daten in Umleitungsziele. Ein Angreifer kann so Benutzer auf eine beliebige externe Domain umleiten, was Phishing-Angriffe gegen Benutzer ermöglicht.</td></tr><tr><td>Erlaubt Zugriff auf Datenbank-Dump</td><td>Teilweise oder ganze Auszüge von Datenbanken, die für die Datensicherung oder Portierung erstellt wurden (Datenbank-Dump), sollten nicht öffentlich erreichbar sein.</td></tr><tr><td>Ermöglicht ungültige Umleitung</td><td>Die Webanwendung akzeptiert nicht vertrauenswürdige Eingaben. Dies kann ein Angreifer nutzen, um Benutzer auf eine nicht vertrauenswürdige URL weiterzuleiten.</td></tr><tr><td>Ermöglicht Zugriff auf Login-Seite kritischer Systeme</td><td>Die Login-Seite eines kritischen Systems ist über unsicheres HTTP erreichbar.</td></tr><tr><td>Ermöglicht Zugriff auf detaillierte Fehlerinformationen</td><td>Zu Diagnosezwecken erstellte Fehlermeldungen (Stack Traces) werden über die HTML-Seite ausgegeben oder können bspw. durch nicht validierte Eingaben ausgelesen werden. Stack Traces können sensible Informationen beinhalten, aus denen sich Angriffsvektoren ergeben.</td></tr><tr><td>Fehlende HTTPS-Umleitung</td><td>Über unsicheres HTTP aufgerufene Webseiten werden nicht auf sicheres HTTPS umgeleitet.</td></tr><tr><td>Gemischter HTTP-Inhalt gefunden</td><td>Auf die Webseite wird sicher über HTTPS zugegriffen, aber der Inhalt besteht aus Links, die über unsicheres HTTP aufgerufen werden.</td></tr><tr><td>Öffentlich erreichbares Backend</td><td>Das Backend ist öffentlich erreichbar. Der Zugriff darauf sollte immer eingeschränkt sein, z.B. über die Verwendung eines VPNs (Virtual Private Network).</td></tr><tr><td>Setzt Cookies ohne Zustimmung</td><td>Obwohl der Nutzer kein Einverständnis gegeben hat, werden Cookies gespeichert. Dies ist nur für technisch notwendige Cookies erlaubt.</td></tr><tr><td>Setzt Tracking-Cookies ohne Zustimmung</td><td>Obwohl der Nutzer kein Einverständnis gegeben hat, werden Cookies gesetzt, die für Tracking-Aktivitäten genutzt werden. Dies widerspricht den geltenden Datenschutzrichtlinien.</td></tr><tr><td>SQL Injection</td><td>Es ist einem Angreifer möglich, eigene Datenbankbefehle in eine SQL-Datenbank einzuschleusen, um Daten auszuspähen oder die Kontrolle über das System zu erlangen.</td></tr><tr><td>Unterstützt Command Injection</td><td>Es ist einem Angreifer durch die Eingabe nicht validierter Parameter möglich, auf dem Host-Server einer Webseite beliebige Befehle auszuführen.</td></tr><tr><td>Unterstützt File Inclusion</td><td>Es ist einem Angreifer möglich, schädliche Dateien und Code in eine Webanwendung einzuschleusen.</td></tr></tbody></table>

### HTTP-Header

<table><thead><tr><th width="258.03515625">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Fehlender Content-Security-Policy Header</td><td>Der Header Content-Security-Policy fehlt, obwohl er vorhanden sein sollte. Er regelt, welche Ressourcen in einer bestimmten Art und Weise im Browser geladen bzw. ausgeführt werden können und welche Quellen vertrauenswürdig sind, wodurch das Ausführen von schädlichem, eingeschleustem Code verhindert wird.</td></tr><tr><td>Fehlender Feature-Policy Header</td><td>Der Header Feature-Policy fehlt, obwohl er vorhanden sein sollte. Er bestimmt, welche Funktionen oder APIs eines Browsers verwendet werden dürfen und welche nicht zulässig sind. Er erhöht die Sicherheit und den Datenschutz, indem die Angriffsfläche minimiert und ungenutzte Funktionen deaktiviert werden.</td></tr><tr><td>Fehlender Referrer-Policy Header</td><td>Der Header Referrer-Policy fehlt, obwohl er vorhanden sein sollte. Er stellt sicher, dass Informationen über die Herkunft eines Website-Besuchers nur unter bestimmten Bedingungen gesendet werden dürfen. Er verhindert so, dass bspw. Passwörter in URLs oder Sitzungs-IDs an Drittanbieter weitergegeben werden. </td></tr><tr><td>Fehlender Strict-Transport-Security Header</td><td>Der Header Strict-Transport-Security fehlt, obwohl er vorhanden sein sollte. Die HTTP Strict Transport Security (HSTS) ist ein Sicherheitsmechanismus für HTTPS-Verbindungen, der sowohl vor Aushebelung der Verbindungsverschlüsselung als auch vor Session-Hijacking schützt.</td></tr><tr><td>Fehlender X-Content-Type-Options Header</td><td>Der Header <code>X-Content-Type-Options: nosniff</code> fehlt, obwohl er vorhanden sein sollte. Er verhindert, dass ein Browser das MIME (Multipurpose Internet Mail Extensions)-Datenformat einer Datei errät und einen anderen Inhaltstyp verwendet als den, der vom Server vorgegeben ist.</td></tr><tr><td>Fehlender X-Frame-Options Header</td><td>Der Header X-Frame-Options fehlt, obwohl er vorhanden sein sollte. Er teilt dem Browser mit, ob dieser eine Webseite in einem &#x3C;frame>, &#x3C;iframe> oder &#x3C;object> rendern, also einbetten, darf. Dadurch wird verhindert, dass Angreifer eine Seite in einem unsichtbaren Frame über einer gefälschten Website platzieren, um Besucher zu unbewussten Klicks zu verleiten.</td></tr><tr><td>Fehlender X-XSS-Protection Header</td><td>Der Header X-XSS-Protection fehlt, obwohl er vorhanden sein sollte. Er kann Browsern untersagen eine Webseite zu laden, wenn schädlicher Inline-Code erkannt wird, der auf eine Cross-Site-Scripting (XSS)-Attacke hindeutet.</td></tr><tr><td>Ungewöhnlicher HTTP Header</td><td>Es wurde ein unbekannter HTTP-Header erkannt, der potenziell Informationen preisgeben kann. Es sollte überprüft werden, ob der unbekannte HTTP-Header wirklich notwendig ist und ob er entfernt werden kann.</td></tr><tr><td>Unsicherer Set-Cookie</td><td>Der Header Set-Cookie lässt zu, dass Cookies vom Server zum Browser ohne Verschlüsselung übertragen werden. Dies ermöglicht XSS-Angriffe und die Übernahme von Benutzer-Sessions.</td></tr><tr><td>Vermeidbarer X-Mod-Pagespeed Header</td><td>Der Header X-Mod-Pagespeed ist aktiviert, obwohl er dies nicht sein sollte, um keine unnötigen Informationen wie die Version des Apache-Moduls oder angewandte Webseiten-Optimierungen preiszugeben.</td></tr><tr><td>Vermeidbarer X-Powered-By Header</td><td>Der Header X-Powered-By ist aktiviert, obwohl er dies nicht sein sollte, um keine unnötigen Informationen über die Standardkonfigurationen des Webservers preiszugeben.</td></tr></tbody></table>

### LDAP (Lightweight Directory Access Protocol)

<table><thead><tr><th width="236.28515625">Titel</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Erlaubt Unauthenticated Bind</td><td>Schlägt die Authentifizierung als Nutzer bei der Verbindung zu einem LDAP-Verzeichnisdienst fehl, weil das Passwort-Feld leer gelassen wurde, wird keine Warnung ausgegeben und es wird ein anonymer Zugang gewährt. Dies ermöglicht den Zugriff auf Verzeichnisdaten ohne Authentifizierung.</td></tr><tr><td>Erlaubt ungesichertes Simple Bind</td><td>Benutzername und Passwort werden im Klartext über eine unverschlüsselte Verbindung übertragen. Es wird dringend empfohlen, stattdessen verschlüsselte Verbindungen (LDAPS) oder starke Authentifizierung (SASL) zu verwenden.</td></tr></tbody></table>

### MongoDB

<table><thead><tr><th width="267.1328125">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Erlaubt das Löschen von Sammlungen</td><td>Nicht authentifizierte Benutzer können Dokument-Sammlungen löschen. Das Löschen von Sammlungen sollte nur entsprechend authentifizierten Nutzern erlaubt sein, um Datenverlust zu verhindern.</td></tr><tr><td>Erlaubt Hinzufügen von Sammlungen</td><td>Nicht authentifizierte Benutzer können Dokument-Sammlungen hinzufügen. Das Hinzufügen von Sammlungen sollte nur entsprechend authentifizierten Nutzern erlaubt sein, um das Einschleusen schädlicher Dokumente zu verhindern.</td></tr><tr><td>Erlaubt Zugriff auf Admin-DB</td><td>Benutzer, die keine Administratoren sind, haben Zugang zur Admin-Sammlung, deren Hauptzweck das Aufbewahren von System-Dokumenten sowie Authentifizierungs- und Autorisierungsdaten (wie Benutzernamen und Passwörter) ist. Auf diese sensiblen Informationen sollte nur der Administrator Zugriff haben.</td></tr><tr><td>Erlaubt Zugriff auf die Config-DB</td><td>Benutzer, die keine Administratoren sind, haben Zugang zur Config-Sammlung, wo Daten zur Verwaltung und zum Zugriffsmanagement der Datenbank liegen. Auf diese Daten sollte kein Zugriff möglich sein.</td></tr><tr><td>Erlaubt Zugriff auf Lokale DB</td><td>Benutzer, die keine Administratoren sind, haben Zugang zur Local-Sammlung, wo Daten zur Verwaltung und zum Zugriffsmanagement der Datenbank liegen. Auf diese Daten sollte kein Zugriff möglich sein.</td></tr><tr><td>Ermöglicht anonyme Anmeldung</td><td>Wenn eine MongoDB erstellt wird, sind keine Authentifizierungs-Mechanismen aktiv und der Nutzer hat alle Rechte. Um die Sicherheit der Datenbank zu erhöhen, sollte ein anonymer Zugang deaktiviert sein.</td></tr><tr><td>Ermöglicht den Zugriff auf verschiedene DBs</td><td>In Datenbank-Sammlungen, die nicht nicht zu den Standard-Sammlungen (Admin/Local/Config) gehören, liegen Daten zur Verwaltung und zum Zugriffsmanagement der Datenbank. Auf sie sollte kein Zugriff möglich sein.</td></tr></tbody></table>

### MySQL

<table><thead><tr><th width="282.8515625">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Anonyme Verbindung vom Root-Benutzer</td><td>Eine nicht passwortgeschützte Verbindung als Administrator (mit Root-Rechten) ist möglich.</td></tr><tr><td>Anonymer Benutzer gefunden</td><td>Beim Einrichten der MySQL-Instanz wird ein anonymer Benutzer erstellt, der es jedem ermöglicht, sich bei der Datenbank anzumelden, ohne ein Benutzerkonto eingerichtet zu haben. Er ist nur für Testzwecke gedacht und sollte vor der Produktivsetzung entfernt werden.</td></tr><tr><td>Benutzer mit Fernzugriff von einem beliebigen Host gefunden</td><td>Standardmäßig ist ein öffentlicher Fernzugriff auf MySQL aus Sicherheitsgründen deaktiviert. Ist ein Fernzugriff aktiviert, sollte dieser auf nur bestimmte IP-Adressen eingeschränkt werden.</td></tr><tr><td>Benutzer ohne Passwort gefunden</td><td>Für jeden Benutzer der MySQL-Datenbank sollte ein sicheres Passwort festgelegt werden.</td></tr><tr><td>Möglichkeit Benutzer-Privilegien zu ändern</td><td>Die Rolle von Nutzern kann geändert werden, zum Beispiel zu einem Nutzer mit Administrator-Rechten. So kann eigentlich nicht berechtigten Benutzern ein Zugriff auf die MySQL-Datenbank ermöglicht werden.</td></tr><tr><td>Möglichkeit neuen Benutzer zu erstellen</td><td>Die MySQL-Datenbank sollte so konfiguriert sein, dass es Unbefugten nicht möglich ist, einen neuen Benutzer anzulegen.</td></tr><tr><td>Test-DB gefunden</td><td>Einige MySQL-Server erstellen bei der Installation eine Datenbank mit dem Namen <em>test</em>, die für alle Benutzer zugänglich ist. Diese Einstellung wird auf alle Datenbanken, deren Bezeichnung mit <em>test</em>_ beginnt, übertragen. Die Test-Datenbank sollte daher prinzipiell entfernt werden.</td></tr><tr><td>Zugriff performance_schema DB</td><td>Das MySQL-Performance-Schema ist eine Funktion zur Überwachung von MySQL-Ausführungen. Diese Informationen sollten nicht öffentlich zugänglich sein.</td></tr></tbody></table>

### RDP (Remote Desktop Protocol)

<table><thead><tr><th width="265.8984375">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Fehlende RDP Network Level Authentication</td><td>Der Anmeldebildschirm ist erreichbar, ohne dass auf Netzwerkebene eine Authentifizierung notwendig ist. Dies ermöglicht unautorisierten Zugriff und Denial-of-Service-Angriffe.</td></tr></tbody></table>

### SMB (Server Message Block)

{% hint style="info" %}
Diese Checks betrifft die Nutzung des SMB-Protokolls über Microsoft-DS (Microsoft Directory Service) und NetBIOS-SSN (NetBIOS Session Service), wobei NetBIOS-SSN momentan nur für Linux- und nicht für Windows-Systeme unterstützt wird. &#x20;
{% endhint %}

<table><thead><tr><th width="251.10546875">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Vorhandene SMB Network Shares</td><td>Es existiert eine Netzwerk-Freigabe, die nicht unter die Standard-Freigaben fällt.</td></tr><tr><td>Erlaubt Gastzugriff</td><td>Bei fehlerhaftem Login wird automatisch ein Gastzugriff erteilt, der möglicherweise Zugriffsrechte auf sensible Daten besitzt.</td></tr><tr><td>Erlaubt Lesezugriff</td><td>Ein Lesezugriff auf freigegebene Ordner ist via SMB möglich.</td></tr><tr><td>Erlaubt Schreibzugriff</td><td>Ein Schreibzugriff auf freigegebene Ordner, die nicht standardmäßig eingestellt sind, ist via SMB möglich.</td></tr></tbody></table>

### SMTP (Simple Mail Transfer Protocol)

<table><thead><tr><th width="301.5703125">Titel</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Ermöglicht Benutzerenumeration mittels EXPN</td><td>Der SMTP-Befehl EXPN (Expand) gibt eine Liste von Alias-Adressen mit dazugehörigen Zielen aus. Er kann missbraucht werden, um valide Benutzernamen auszuspähen oder E-Mail-Adressen für die Zusendung von Spam-Nachrichten zu sammeln.</td></tr><tr><td>Ermöglicht Benutzerenumeration mittels VRFY</td><td>Der SMTP-Befehl VRFY (Verify) ermöglicht es zu überprüfen, ob eine E-Mail-Adresse vorhanden ist. Er kann missbraucht werden, um valide Benutzernamen auszuspähen oder E-Mail-Adressen für die Zusendung von Spam-Nachrichten zu sammeln.</td></tr><tr><td>Ermöglicht Versenden von externen E-Mails ohne Authentifizierung</td><td>Nicht authentifizierten Benutzern wird erlaubt, über den Mail-Relay-Server von externen E-Mail-Adressen Nachrichten an externe E-Mail-Adressen zu versenden. Der Mailserver lässt sich daher für Phishing-Angriffe oder das Versenden von Spam-Nachrichten missbrauchen.</td></tr><tr><td>Ermöglicht Versenden von internen E-Mails ohne Authentifizierung</td><td>Nicht authentifizierten Benutzern wird erlaubt, über den Mail-Relay-Server von internen E-Mail-Adressen Nachrichten an interne E-Mail-Adressen zu versenden Der Mailserver lässt sich daher für Identitätsfälschung (Spoofing) missbrauchen.</td></tr></tbody></table>

### SNMP (Simple Network Management Protocol)

<table><thead><tr><th width="241.4453125">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Verwendet gewöhnlichen Community String</td><td>Für SNMP werden ein oder mehrere Community Strings zur Nutzerauthentifizierung verwendet, die häufig verwendet werden und daher besonders unsicher sind.</td></tr><tr><td>Erlaubt Lesezugriff</td><td>Ein Lesezugriff auf Object Identifier (OID) ist via SNMP möglich.</td></tr><tr><td>Erlaubt Schreibzugriff</td><td>Ein Schreibzugriff auf Object Identifier (OID) ist via SNMP möglich.</td></tr></tbody></table>

### SSH (Secure Shell)

<table><thead><tr><th width="272.28515625">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Keine Unterstützung für SSH-Authentifizierung mit öffentlichem Schlüssel</td><td>Der Client sollte sich gegenüber dem Server mittels eines öffentlichen Schlüssels (Public Key) authentifizieren müssen, da Passwörter unsicher sein können und somit für Brute-Force-Angriffe anfällig sind.</td></tr><tr><td>Unsichere Mac Algorithmen</td><td>Der Message Authentication Code (MAC) dient dazu, Gewissheit über den Ursprung von Daten zu erhalten und sie auf Integrität zu überprüfen. Mittels Keyed-Hash Message Authentication Code (HMAC) wird diese Überprüfung abgesichert. Dabei sollte ein sicheres Verfahren zum Einsatz kommen.</td></tr><tr><td>Unsichere Schlüsselaustausch-Algorithmen</td><td>Im Rahmen des SSH-Verbindungsaufbaus findet ein Schlüsselaustausch (Key Exchange) statt. Der gemeinsame Sitzungsschlüssel wird für die Authentifizierung und Verschlüsselung der Sitzung genutzt. Wird eine unsichere Schlüsseltausch-Methode verwendet, ist die Absicherung der Verbindung gefährdet.</td></tr><tr><td>Unsichere Server-Host-Schlüsselalgorithmen</td><td>Im Rahmen des SSH-Verbindungsaufbaus findet ein Schlüsselaustausch (Key Exchange) statt. Währenddessen einigen sich Client und Server auf einen gemeinsamen Verschlüsselungs-Schlüssel. Dabei sollte ein sicheres Verschlüsselungsverfahren gewählt werden.</td></tr><tr><td>Unsichere SSH-Version</td><td>Im Jahr 2006 wurde SSH-1 durch eine überarbeitete Version des Netzwerkprotokolls (SSH-2) abgelöst. SSH-1 gilt aufgrund kryptografischer Schwächen als nicht mehr sicher und sollte daher nicht verwendet werden.</td></tr><tr><td>Unsichere Verschlüsselungsalgorithmen</td><td>Im Rahmen des SSH-Verbindungsaufbaus findet ein Schlüsselaustausch (Key Exchange) statt. Währenddessen einigen sich Client und Server auf einen gemeinsamen Verschlüsselungs-Algorithmus. Dabei sollte ein sicheres Verschlüsselungsverfahren gewählt werden.</td></tr><tr><td>Unsicherer öffentlicher Schlüssel</td><td>Der Server authentifiziert sich gegenüber dem Client. Exchange-Nachrichten des Servers erhalten einen öffentlichen Schlüssel (Public Key), den der Client nutzen kann, um die Authentizität zu prüfen. Dabei sollte ein sicheres Verfahren zum Einsatz kommen.</td></tr><tr><td>Unterstützt SSH-Passwort-Authentifizierung</td><td>Eine auf asymmetrischen Schlüsseln basierende Authentifizierung ist sicherer als die Nutzung eines Passworts. Deshalb sollte die Option einer Authentifizierung via Passwort in der Regel deaktiviert sein.</td></tr></tbody></table>

### SSL/TLS (Secure Sockets Layer/Transport Layer Security)

<table><thead><tr><th width="272.79296875">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Abgelaufenes Zertifikat</td><td>Das verwendete SSL/TLS-Zertifikat ist abgelaufen und damit ungültig. Es können keine sicheren Transaktionen mehr durchgeführt werden.</td></tr><tr><td>Ablauf der Gültigkeit der CRL (Certificate Revocation List)</td><td>Der Gültigkeitszeitraum der verwendeten Zertifikatsperrliste ist abgelaufen. Eine veraltete CRL kann bspw. nicht mehr anzeigen, ob ein Schlüssel kompromittiert wurde.</td></tr><tr><td>Abweichung zwischen Zertifizierungsstelle und Aussteller</td><td>Zertifizierungsstelle (Certificate Authority; CA) und Aussteller passen nicht zusammen.</td></tr><tr><td>Abweichung zwischen Zertifizierungsstelle und Seriennummer des Ausstellers</td><td>Zertifizierungsstelle und Seriennummer des Ausstellers passen nicht zusammen.</td></tr><tr><td>Anfällig für DROWN</td><td>Der Webserver verwendet das veraltete Protokoll SSLv2. Dadurch kann unter anderem aufgezeichneter TLS-Datenverkehr abgegriffen werden.</td></tr><tr><td>Anfällig für FREAK</td><td>Bei einer FREAK-Attacke werden die Kommunikationspartner dazu gebracht, sich auf eine unsichere Verschlüsselungsmethode zu einigen, obwohl sichere Verfahren zu Verfügung stehen. So können Daten leicht abgefangen und manipuliert werden.</td></tr><tr><td>Anfällig für Heartbleed</td><td>Aufgrund eines Programmfehlers in OpenSSL lässt sich der Server manipulieren, sodass er sensible Informationen preisgibt.</td></tr><tr><td>Anfällig für Logjam Attacken</td><td>Indem eine Schwachstelle im Diffie-Hellman-Schlüsselaustausch ausgenutzt wird, kommen Angreifer an die geheimen Schlüssel.</td></tr><tr><td>Anfällig für NULL Pointer Dereference</td><td>Durch das Versenden eines bösartigen Zertifikats kann ein Angreifer einen Denial-of-Service-Zustand verursachen.</td></tr><tr><td>Anfällig für SLOTH Attacke</td><td>Schwache Hash-Funktionen (MD5, SHA-1) erlauben eine SLOTH-Attacke. Dies kann zu Identitätsdiebstahl (Impersonation), dem Abfangen von Anmeldedaten und dem Schwächen der Verschlüsselung führen.</td></tr><tr><td>Anfällig für Sweet32 Attacken</td><td>Die Stream-Chiffre RC4 macht die Verbindung anfällig für Sweet32-Attacken. Durch das Abfangen großer Datenmengen in einer langen Sitzung kann ein Angreifer Kollisionen erzeugen, um verschlüsselte Daten, z.B. Sitzungs-Cookies, zu entschlüsseln und HTTPS-Verbindungen zu übernehmen.</td></tr><tr><td>Anfällig nach Maßgabe der Datenschutzgrundverordnung (DSGVO)</td><td>Die SSL/TLS-Verschlüsselung widerspricht dem aktuellen Stand der Technik und verstößt daher gegen Art. 32 DSVGO.</td></tr><tr><td>Anfällig nach Maßgabe des BSI (Bundesamt für Sicherheit in der Informationstechnik)</td><td>Die SSL/TLS-Verschlüsselung entspricht nicht den Maßgaben des BSI.</td></tr><tr><td>Chiffre unterstützt MD5</td><td>Die Hash-Funktion MD5 (Message-Digest Algorithm 5) gilt nicht mehr als ausreichend sicher und sollte daher nicht verwendet werden.</td></tr><tr><td>CRL Signatur nicht entschlüsselbar</td><td>Eine nicht entschlüsselbare CRL-Signatur kann bedeuten, dass die Zertifikatsperrliste beschädigt, abgelaufen oder die Signaturkette zur Zertifizierungsstelle unterbrochen ist. Dies führt dazu, dass Zertifikate nicht als gültig verifiziert werden können.</td></tr><tr><td>Die Schlüsselverwendung berücksichtigt nicht das Signieren von Zertifikaten</td><td>Ein Zertifikat wird zum Signieren anderer Zertifikate verwendet, obwohl das Attribut der Schlüsselverwendung (Key Usage) dies nicht zulässt, wodurch das Zertifikat eigentlich ungültig ist.</td></tr><tr><td>Die Zertifikatskette konnte nicht verifiziert werden</td><td>Der Browser kann die Zertifikatskette nicht verifizieren. Dadurch kann er die Vertrauenswürdigkeit eines Servers nicht bestätigen.</td></tr><tr><td>Fehlender Common Name in Subject Alternative Names</td><td>Der Common Name ist nicht in den Subjekt Alternative Names enthalten, weshalb die Validierung des Zertifikats blockiert wird.</td></tr><tr><td>Formatfehler im Feld lastupdate von crl</td><td>Das <em>lastupdate</em>-Feld für die Anzeige der letzten Aktualisierung in der CRL enthält eine ungültige Zeit.</td></tr><tr><td>Formatfehler im Feld nextupdate von crl</td><td>Das <em>nextupdate</em>-Feld für die Anzeige der anstehenden Aktualisierung in der CRL enthält eine ungültige Zeit.</td></tr><tr><td>Formatfehler im notafter Feld des Zertifikats</td><td>Das <em>notafter</em>-Feld für die Anzeige des Endes der Gültigkeit der CRL enthält eine ungültige Zeit.</td></tr><tr><td>Formatfehler im notbefore Feld des Zertifikats</td><td>Das <em>notbefore</em>-Feld für die Anzeige des Beginns der Gültigkeit der CRL enthält eine ungültige Zeit.</td></tr><tr><td>Keine Unterstützung für Authenticated Encryption (AEAD) Chiffren</td><td><p>Der AEAD-Verschlüsselungsstandard wird empfohlen, da er</p><p>die Vertraulichkeit (Unlesbarkeit) und Integrität (Unveränderbarkeit) einer Nachricht sicherstellt.</p></td></tr><tr><td>Keine Unterstützung für Perfect Forward Secrecy (PFS)</td><td>Die Unterstützung von PFS wird empfohlen. Es stellt sicher, dass der jeweils neu ausgehandelte Sitzungsschlüssel nicht aus dem Langzeitschlüssel rekonstruiert werden kann.</td></tr><tr><td>Keine Unterstützung für Secure Renegotiation</td><td>Der Server ist nicht in der Lage, eine sichere Neuaushandlung der SSL/TLS-Verbindung zu initiieren. Eine unsichere Neuaushandlung macht die Verbindung anfällig für Man-in-the-Middle-Angriffe, sodass z.B. bestehende verschlüsselte Sitzungen manipuliert werden können.</td></tr><tr><td>Kein Zertifikatsaussteller ermittelbar</td><td>SSL/TLS-Zertifikate werden von Certificate Authorities herausgegeben, die ermittelbar sein müssen.</td></tr><tr><td>Lokales Aussteller-Zertifikat nicht verfügbar</td><td>Eine SSL/TLS-Verbindung kann nicht hergestellt werden, da der Client das Zertifikat der ausstellenden Zertifizierungsstelle nicht im lokalen Speicher findet.</td></tr><tr><td>Nicht unterstützter Zertifikatszweck</td><td>Ein Zertifikat wird für eine Aufgabe verwendet, für die es nicht signiert wurde.</td></tr><tr><td>Öffentlicher Schlüssel nicht dekodierbar</td><td>Der öffentliche Schlüssel (Public Key) dient dazu, einen sicheren Schlüsselaustausch zu ermöglichen. Er sollte daher dekodierbar sein.</td></tr><tr><td>Pfadlängenbeschränkung überschritten</td><td>Die durch die Zertifizierungsstelle vorgegebene Pfadlängenbeschränkung wurde überschritten. es ist möglich, dass es sich um ein gefälschtes Zertifikat handelt.</td></tr><tr><td>Schwacher Diffie-Hellman Parameter</td><td>Ein schwacher Diffie-Hellman Parameter macht den Schlüsseltausch anfällig für Attacken.</td></tr><tr><td>Selbstsigniertes Zertifikat</td><td>Selbst signierte Zertifikate sind nicht von einer vertrauenswürdigen Zertifikatsstelle validiert und daher nicht zu empfehlen.</td></tr><tr><td>Selbstsigniertes Zertifikat in der Zertifikatskette</td><td>Selbst signierte Zertifikate sind nicht von einer vertrauenswürdigen Zertifikatsstelle validiert und daher nicht zu empfehlen.</td></tr><tr><td>Ungültige CRL (Certificate Revocation List)</td><td>Die verwendete Zertifikatsperrliste ist ungültig.</td></tr><tr><td>Ungültige CRL (Certificate Revocation List) Signature</td><td>Die digitale Signatur der Zertifikatsperrliste kann nicht verifiziert werden.</td></tr><tr><td>Ungültige Zertifikatssignatur</td><td>Die digitale Signatur des SSL/TLS-Zertifikats kann nicht verifiziert werden.</td></tr><tr><td>Ungültiger Hostname</td><td>Das Zertifikat enthält nicht den Hostnamen des Zielsystems.</td></tr><tr><td>Ungültiges Ablaufdatum des Zertifikats</td><td>Das Ablaufdatum des verwendeten Zertifikats ist nicht korrekt.</td></tr><tr><td>Ungültiges CA-Zertifikat</td><td>Das von der Zertifizierungsstelle ausgegebene Zertifikat ist ungültig.</td></tr><tr><td>Ungültiges Zertifikat</td><td>Das verwendete SSL/TLS-Zertifikat ist ungültig und sollte nicht mehr verwendet werden.</td></tr><tr><td>Unterstützt anonyme Chiffren</td><td>Anonyme Chiffren sind unsicher und sollten nicht verwendet werden.</td></tr><tr><td>Unterstützt client-initiierte SSL/TLS Renegotiation</td><td>Clients sollte es nicht erlaubt sein, eine Neuaushandlung der SSL/TLS-Verbindung zu initiieren. Diese Möglichkeit kann ausgenutzt werden, um den Server absichtlich zu überlasten und eine Denial of Service-Attacke (DoS) auszuführen.</td></tr><tr><td>Unterstützt für Poodle-Attacken anfällige Chiffren</td><td>Poodle-Attacken nutzen eine Sicherheitslücke in SSL 3.0, sodass verschlüsselte Informationen einer SSL3.0-Verbindung offen gelegt werden können.</td></tr><tr><td>Unterstützt gefährdete Chiffren</td><td>Chiffren, die unsichere kryptographischer Verfahren beinhalten, sollten nicht angeboten werden.</td></tr><tr><td>Unterstützt nicht das neueste Protokoll (TLSv1.3)</td><td>Das neueste und sicherste Protokoll TLS 1.3 wird nicht unterstützt.</td></tr><tr><td>Unterstützt Null-Chiffren-Verschlüsselung</td><td>Eine Null-Chiffre bedeutet, dass überhaupt keine Verschlüsselung verwendet wird. Dies ist außerhalb von Testzwecken niemals zu empfehlen.</td></tr><tr><td>Unterstützt RC4 Chiffren</td><td>RC4 gilt nicht mehr als ausreichend sicher und sollte daher nicht verwendet werden.</td></tr><tr><td>Unterstützt schwache SSL/TLS Chiffre (Algorithmus)</td><td>SSL/TLS-Chiffren legen fest, mit welchen Verschlüsselungsalgorithmen Schlüssel getauscht werden und wie die Kommunikation abgesichert wird. Werden unsichere SSL/TLS-Chiffren angeboten, ist die hergestellte Verbindung nicht mehr sicher.</td></tr><tr><td>Unterstützt schwache SSL/TLS Chiffre (Parameter)</td><td>SSL/TLS-Chiffren legen fest, mit welchen Verschlüsselungsalgorithmen Schlüssel getauscht werden und wie die Kommunikation abgesichert wird. Werden unsichere SSL/TLS-Chiffren angeboten, ist die hergestellte Verbindung nicht mehr sicher.</td></tr><tr><td>Unterstützt schwache SSL/TLS Handshake Parameter</td><td>Bei der Erstellung und Verifikation von Signaturen während des TLS-Handshakes wird ein unsicherer Signaturalgorithmus und/oder eine unsichere Hash-Funktion verwendet.</td></tr><tr><td>Unterstützt SSL/TLS Kompression</td><td>Von der Verwendung von SSL/TLS-Kompression, einer Funktion zur Reduzierung der Datenmenge vor der Verschlüsselung, wird abgeraten, da sie SSL/TLS angreifbar macht (insbesondere für CRIME, Compression Ratio Info-Leak Made Easy).</td></tr><tr><td>Verwendet bekannte Diffie-Hellman Primzahl</td><td>Die Verwendung einer unsicheren Diffie-Hellman-Primzahl gefährdet die Verschlüsselung.</td></tr><tr><td>Zertifikat abgelehnt</td><td>Das verwendete Zertifikat verursacht Probleme und wird daher abgelehnt.</td></tr><tr><td>Zertifikat CRL nicht erreichbar</td><td>Die Zertifikatsperrliste ist nicht erreichbar, was zu Verbindungsabbrüchen führt.</td></tr><tr><td>Zertifikat ist nicht vertrauenswürdig</td><td>Das verwendete Zertifikat wird als nicht vertrauenswürdig angesehen.</td></tr><tr><td>Zertifikat widerrufen</td><td>Das verwendete Zertifikat wurde widerrufen und sollte nicht mehr verwendet warden.</td></tr><tr><td>Zertifikatskette zu lang</td><td>Die Zertifikatskette ist zu lang und entspricht damit nicht den Vorgaben der Zertifizierungsstelle.</td></tr><tr><td>Zertifikatssignatur nicht entschlüsselbar</td><td>Die Signatur eines Zertifikats ermöglicht es einem Dritten, die Identität des Zertifikatsbesitzers zu bestätigen. Sie sollte daher lesbar sein.</td></tr></tbody></table>

### Telnet

<table><thead><tr><th width="271.43359375">Name des Checks</th><th>Beschreibung</th></tr></thead><tbody><tr><td>Keine Authentifizierung erforderlich</td><td>Telnet ist aufgrund seiner fehlenden Verschlüsselung nicht mehr zeitgemäß und sollte möglichst nicht mehr verwendet werden. Solltest du Telnet dennoch einsetzen, muss in jedem Fall eine Authentifizierungs-Methode genutzt werden.</td></tr><tr><td>Standardbenutzer mit Adminrechten</td><td>Ein Standardbenutzer sollte aus Sicherheitsgründen über keine Administrator-Rechte verfügen.</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.enginsight.com/docs/knowledge-base/penetrationstests/wie-funktioniert-ein-penetrationstest-mit-enginsight.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
