22 - Pentesting SSH/SFTP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: melden Sie sich an für Intigriti, eine Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie uns bei https://go.intigriti.com/hacktricks heute bei und beginnen Sie, Prämien von bis zu 100.000 $ zu verdienen!
SSH (Secure Shell oder Secure Socket Shell) ist ein Netzwerkprotokoll, das eine sichere Verbindung zu einem Computer über ein unsicheres Netzwerk ermöglicht. Es ist entscheidend für die Wahrung der Vertraulichkeit und Integrität von Daten beim Zugriff auf entfernte Systeme.
Standardport: 22
SSH-Server:
openSSH – OpenBSD SSH, in BSD, Linux-Distributionen und Windows seit Windows 10 enthalten
Dropbear – SSH-Implementierung für Umgebungen mit geringem Speicher- und Prozessorressourcen, in OpenWrt enthalten
PuTTY – SSH-Implementierung für Windows, der Client wird häufig verwendet, die Nutzung des Servers ist seltener
CopSSH – Implementierung von OpenSSH für Windows
SSH-Bibliotheken (Server-seitige Implementierung):
wolfSSH – SSHv2-Serverbibliothek, die in ANSI C geschrieben ist und für eingebettete, RTOS- und ressourcenbeschränkte Umgebungen ausgelegt ist
Apache MINA SSHD – Apache SSHD Java-Bibliothek basiert auf Apache MINA
paramiko – Python SSHv2-Protokollbibliothek
ssh-audit ist ein Tool zur Überprüfung der Konfiguration von SSH-Servern und -Clients.
https://github.com/jtesta/ssh-audit ist ein aktualisierter Fork von https://github.com/arthepsy/ssh-audit/
Funktionen:
Unterstützung für SSH1- und SSH2-Protokollserver;
Analyse der SSH-Client-Konfiguration;
Banner erfassen, Gerät oder Software und Betriebssystem erkennen, Kompression erkennen;
Schlüsselwechsel-, Hostschlüssel-, Verschlüsselungs- und Nachrichten-Authentifizierungscode-Algorithmen sammeln;
Algorithmusinformationen ausgeben (verfügbar seit, entfernt/deaktiviert, unsicher/schwach/legacy usw.);
Algorithmusempfehlungen ausgeben (hinzufügen oder entfernen basierend auf der erkannten Softwareversion);
Sicherheitsinformationen ausgeben (verwandte Probleme, zugewiesene CVE-Liste usw.);
Analyse der SSH-Versionenkompatibilität basierend auf Algorithmusinformationen;
Historische Informationen von OpenSSH, Dropbear SSH und libssh;
Läuft auf Linux und Windows;
Keine Abhängigkeiten
Siehe es in Aktion (Asciinema)
Dies wird standardmäßig von nmap entdeckt. Aber Sie können auch sslcan oder sslyze verwenden.
ssh
In einigen Versionen von OpenSSH können Sie einen Timing-Angriff durchführen, um Benutzer zu enumerieren. Sie können ein Metasploit-Modul verwenden, um dies auszunutzen:
Einige gängige ssh-Anmeldeinformationen hier und hier und unten.
Wenn Sie einige ssh-Private-Keys kennen, die verwendet werden könnten... lassen Sie es uns versuchen. Sie können das nmap-Skript verwenden:
Oder das MSF-Hilfsmodul:
Or use ssh-keybrute.py
(native python3, leichtgewichtig und hat veraltete Algorithmen aktiviert): snowdroppe/ssh-keybrute.
Einige Systeme haben bekannte Mängel im Zufallsseed, der zur Erzeugung kryptografischer Materialien verwendet wird. Dies kann zu einem dramatisch reduzierten Schlüsselraum führen, der bruteforced werden kann. Vorgefertigte Schlüsselsets, die auf Debian-Systemen mit schwachem PRNG generiert wurden, sind hier verfügbar: g0tmi1k/debian-ssh.
Sie sollten hier nach gültigen Schlüsseln für die Zielmaschine suchen.
crackmapexec verwendet das ssh
-Protokoll und kann die Option --kerberos
verwenden, um über Kerberos zu authentifizieren.
Für weitere Informationen führen Sie crackmapexec ssh --help
aus.
Anbieter | Benutzernamen | Passwörter |
APC | apc, device | apc |
Brocade | admin | admin123, password, brocade, fibranne |
Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
D-Link | admin, user | private, admin, user |
Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin |
Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 |
IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer |
Juniper | netscreen | netscreen |
NetApp | admin | netapp123 |
Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle |
VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default |
Wenn Sie sich im lokalen Netzwerk des Opfers befinden, das sich mit Benutzernamen und Passwort mit dem SSH-Server verbinden möchte, könnten Sie versuchen, einen MitM-Angriff durchzuführen, um diese Anmeldeinformationen zu stehlen:
Angriffsweg:
Traffic-Umleitung: Der Angreifer leitet den Datenverkehr des Opfers auf seine Maschine um und unterbricht effektiv den Verbindungsversuch zum SSH-Server.
Abfangen und Protokollieren: Die Maschine des Angreifers fungiert als Proxy, der die Anmeldedaten des Benutzers erfasst, indem sie sich als legitimer SSH-Server ausgibt.
Befehlsausführung und Weiterleitung: Schließlich protokolliert der Server des Angreifers die Anmeldeinformationen des Benutzers, leitet die Befehle an den echten SSH-Server weiter, führt sie aus und sendet die Ergebnisse zurück an den Benutzer, wodurch der Prozess nahtlos und legitim erscheint.
SSH MITM tut genau das, was oben beschrieben ist.
Um den tatsächlichen MitM durchzuführen, könnten Sie Techniken wie ARP-Spoofing, DNS-Spoofing oder andere, die in den Network Spoofing attacks beschrieben sind, verwenden.
Wenn Sie ein Netzwerk mithilfe entdeckter SSH-Privatschlüssel auf Systemen durchqueren möchten, indem Sie jeden Privatschlüssel auf jedem System für neue Hosts verwenden, dann ist SSH-Snake genau das, was Sie brauchen.
SSH-Snake führt die folgenden Aufgaben automatisch und rekursiv aus:
Finden Sie auf dem aktuellen System alle SSH-Privatschlüssel,
Finden Sie auf dem aktuellen System alle Hosts oder Ziele (user@host), die die Privatschlüssel akzeptieren könnten,
Versuchen Sie, sich mit allen entdeckten Privatschlüsseln in alle Ziele einzuloggen,
Wenn eine Verbindung zu einem Ziel erfolgreich hergestellt wird, wiederholen Sie die Schritte #1 - #4 auf dem verbundenen System.
Es ist vollständig selbstreplicierend und selbstverbreitend – und vollständig dateilos.
Es ist üblich, dass SSH-Server standardmäßig den Root-Benutzer-Login zulassen, was ein erhebliches Sicherheitsrisiko darstellt. Das Deaktivieren des Root-Logins ist ein kritischer Schritt zur Sicherung des Servers. Unbefugter Zugriff mit administrativen Rechten und Brute-Force-Angriffe können durch diese Änderung gemildert werden.
So deaktivieren Sie den Root-Login in OpenSSH:
Bearbeiten Sie die SSH-Konfigurationsdatei mit: sudoedit /etc/ssh/sshd_config
Ändern Sie die Einstellung von #PermitRootLogin yes
zu PermitRootLogin no
.
Laden Sie die Konfiguration neu mit: sudo systemctl daemon-reload
Starten Sie den SSH-Server neu, um die Änderungen anzuwenden: sudo systemctl restart sshd
Es gibt einen häufigen Fehler bei SFTP-Setups, bei dem Administratoren beabsichtigen, dass Benutzer Dateien austauschen, ohne den Zugriff auf die Remote-Shell zu aktivieren. Trotz der Einstellung von Benutzern mit nicht-interaktiven Shells (z. B. /usr/bin/nologin
) und der Einschränkung auf ein bestimmtes Verzeichnis bleibt eine Sicherheitslücke. Benutzer können diese Einschränkungen umgehen, indem sie die Ausführung eines Befehls (wie /bin/bash
) sofort nach dem Einloggen anfordern, bevor ihre vorgesehene nicht-interaktive Shell übernimmt. Dies ermöglicht die unbefugte Ausführung von Befehlen und untergräbt die beabsichtigten Sicherheitsmaßnahmen.
Hier ist ein Beispiel für eine sichere SFTP-Konfiguration (/etc/ssh/sshd_config
– openSSH) für den Benutzer noraj
:
Diese Konfiguration erlaubt nur SFTP: Shell-Zugriff wird deaktiviert, indem der Startbefehl erzwungen und der TTY-Zugriff deaktiviert wird, aber auch alle Arten von Portweiterleitungen oder Tunneling werden deaktiviert.
Wenn Sie Zugriff auf einen SFTP-Server haben, können Sie auch Ihren Datenverkehr darüber tunneln, zum Beispiel mit der gängigen Portweiterleitung:
Der sftp hat den Befehl "symlink". Daher, wenn Sie schreibbare Rechte in einem Ordner haben, können Sie symlinks von anderen Ordnern/Dateien erstellen. Da Sie wahrscheinlich in einem chroot eingeschlossen sind, wird dies für Sie nicht besonders nützlich sein, aber wenn Sie auf den erstellten symlink von einem no-chroot dienst zugreifen können (zum Beispiel, wenn Sie auf den symlink über das Web zugreifen können), könnten Sie die symlinkten Dateien über das Web öffnen.
Zum Beispiel, um einen symlink von einer neuen Datei "froot" zu "/" zu erstellen:
Wenn Sie auf die Datei "froot" über das Web zugreifen können, sind Sie in der Lage, den Root ("/")-Ordner des Systems aufzulisten.
In hochsicheren Umgebungen ist es gängige Praxis, nur schlüsselbasierte oder Zwei-Faktor-Authentifizierung zu aktivieren, anstatt die einfache faktorenbasierte Passwortauthentifizierung. Oft werden jedoch die stärkeren Authentifizierungsmethoden aktiviert, ohne die schwächeren zu deaktivieren. Ein häufiges Beispiel ist die Aktivierung von publickey
in der openSSH-Konfiguration und die Festlegung als Standardmethode, ohne password
zu deaktivieren. Durch die Verwendung des ausführlichen Modus des SSH-Clients kann ein Angreifer sehen, dass eine schwächere Methode aktiviert ist:
Zum Beispiel, wenn ein Limit für Authentifizierungsfehler festgelegt ist und Sie nie die Möglichkeit haben, die Passwortmethode zu erreichen, können Sie die Option PreferredAuthentications
verwenden, um diese Methode zu erzwingen.
Überprüfen Sie die SSH-Serverkonfiguration, um sicherzustellen, dass nur die erwarteten Methoden autorisiert sind. Die Verwendung des ausführlichen Modus auf dem Client kann helfen, die Effektivität der Konfiguration zu sehen.
Sie finden interessante Anleitungen zur Härtung von SSH unter https://www.ssh-audit.com/hardening_guides.html
Bug-Bounty-Tipp: Melden Sie sich an für Intigriti, eine Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Schließen Sie sich uns heute unter https://go.intigriti.com/hacktricks an und beginnen Sie, Prämien von bis zu 100.000 $ zu verdienen!
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)