139,445 - Pentesting SMB
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)
Das Network Basic Input Output System** (NetBIOS)** ist ein Softwareprotokoll, das entwickelt wurde, um Anwendungen, PCs und Desktops innerhalb eines lokalen Netzwerks (LAN) zu ermöglichen, mit Netzwerkhardware zu interagieren und die Übertragung von Daten über das Netzwerk zu erleichtern. Die Identifizierung und Lokalisierung von Softwareanwendungen, die in einem NetBIOS-Netzwerk betrieben werden, erfolgt über ihre NetBIOS-Namen, die bis zu 16 Zeichen lang sein können und oft von dem Computernamen abweichen. Eine NetBIOS-Sitzung zwischen zwei Anwendungen wird initiiert, wenn eine Anwendung (die als Client fungiert) einen Befehl ausgibt, um eine andere Anwendung (die als Server fungiert) über TCP Port 139 zu "rufen".
Technisch gesehen wird Port 139 als „NBT über IP“ bezeichnet, während Port 445 als „SMB über IP“ identifiziert wird. Das Akronym SMB steht für „Server Message Blocks“, das auch modern als Common Internet File System (CIFS) bekannt ist. Als Netzwerkprotokoll auf Anwendungsebene wird SMB/CIFS hauptsächlich verwendet, um den gemeinsamen Zugriff auf Dateien, Drucker, serielle Ports zu ermöglichen und verschiedene Kommunikationsformen zwischen Knoten in einem Netzwerk zu erleichtern.
Zum Beispiel wird im Kontext von Windows hervorgehoben, dass SMB direkt über TCP/IP betrieben werden kann, wodurch die Notwendigkeit für NetBIOS über TCP/IP entfällt, durch die Nutzung von Port 445. Umgekehrt wird auf anderen Systemen die Verwendung von Port 139 beobachtet, was darauf hinweist, dass SMB in Verbindung mit NetBIOS über TCP/IP ausgeführt wird.
Das Server Message Block (SMB) Protokoll, das im Client-Server-Modell arbeitet, ist dafür konzipiert, Zugriff auf Dateien, Verzeichnisse und andere Netzwerkressourcen wie Drucker und Router zu regeln. Es wird hauptsächlich innerhalb der Windows-Betriebssystemreihe verwendet und gewährleistet die Abwärtskompatibilität, sodass Geräte mit neueren Versionen von Microsofts Betriebssystem nahtlos mit solchen interagieren können, die ältere Versionen ausführen. Darüber hinaus bietet das Samba-Projekt eine kostenlose Softwarelösung, die die Implementierung von SMB auf Linux- und Unix-Systemen ermöglicht und so die plattformübergreifende Kommunikation über SMB erleichtert.
Freigaben, die willkürliche Teile des lokalen Dateisystems darstellen, können von einem SMB-Server bereitgestellt werden, wodurch die Hierarchie für einen Client teilweise unabhängig von der tatsächlichen Struktur des Servers sichtbar wird. Die Access Control Lists (ACLs), die Zugriffsrechte definieren, ermöglichen eine fein abgestimmte Kontrolle über Benutzerberechtigungen, einschließlich Attribute wie execute
, read
und full access
. Diese Berechtigungen können einzelnen Benutzern oder Gruppen basierend auf den Freigaben zugewiesen werden und sind von den lokalen Berechtigungen, die auf dem Server festgelegt sind, zu unterscheiden.
Zugriff auf die IPC$-Freigabe kann über eine anonyme Nullsitzung erlangt werden, die die Interaktion mit Diensten ermöglicht, die über benannte Pipes bereitgestellt werden. Das Dienstprogramm enum4linux
ist dafür nützlich. Richtig verwendet, ermöglicht es den Erwerb von:
Informationen über das Betriebssystem
Einzelheiten zur übergeordneten Domäne
Eine Zusammenstellung lokaler Benutzer und Gruppen
Informationen über verfügbare SMB-Freigaben
Die effektive Systemsicherheitsrichtlinie
Diese Funktionalität ist entscheidend für Netzwerkadministratoren und Sicherheitsfachleute, um die Sicherheitslage der SMB (Server Message Block)-Dienste in einem Netzwerk zu bewerten. enum4linux
bietet einen umfassenden Überblick über die SMB-Umgebung des Zielsystems, was entscheidend ist, um potenzielle Schwachstellen zu identifizieren und sicherzustellen, dass die SMB-Dienste ordnungsgemäß gesichert sind.
Der obige Befehl ist ein Beispiel dafür, wie enum4linux
verwendet werden kann, um eine vollständige Enumeration gegen ein Ziel, das durch target_ip
angegeben ist, durchzuführen.
Wenn Sie nicht wissen, was NTLM ist oder wie es funktioniert und wie man es ausnutzt, werden Sie diese Seite über NTLM sehr interessant finden, auf der erklärt wird, wie dieses Protokoll funktioniert und wie Sie es ausnutzen können:
Um nach möglichen Exploits für die SMB-Version zu suchen, ist es wichtig zu wissen, welche Version verwendet wird. Wenn diese Informationen in anderen verwendeten Tools nicht angezeigt werden, können Sie:
Das MSF Hilfsmodul _auxiliary/scanner/smb/smb_version verwenden
Oder dieses Skript:
Diese Informationen sollten bereits von enum4linux und enum4linux-ng gesammelt werden.
Oneliner
xdg-open smb://cascade.htb/
smb://friendzone.htb/general/
Es wird immer empfohlen zu überprüfen, ob Sie auf etwas zugreifen können. Wenn Sie keine Anmeldeinformationen haben, versuchen Sie es mit null Anmeldeinformationen/Gastbenutzer.
Es kann sein, dass Sie eingeschränkt sind, um Freigaben des Host-Systems anzuzeigen, und wenn Sie versuchen, sie aufzulisten, scheint es, als ob es keine Freigaben gibt, mit denen Sie sich verbinden können. Daher könnte es sich lohnen, einen kurzen Versuch zu unternehmen, sich manuell mit einer Freigabe zu verbinden. Um die Freigaben manuell aufzulisten, sollten Sie nach Antworten wie NT_STATUS_ACCESS_DENIED und NT_STATUS_BAD_NETWORK_NAME suchen, wenn Sie eine gültige Sitzung verwenden (z. B. Null-Sitzung oder gültige Anmeldeinformationen). Diese können anzeigen, ob die Freigabe existiert und Sie keinen Zugriff darauf haben oder ob die Freigabe überhaupt nicht existiert.
Häufige Freigabenamen für Windows-Ziele sind
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Häufige Freigabenamen aus Network Security Assessment 3rd edition)
Sie können versuchen, sich mit ihnen zu verbinden, indem Sie den folgenden Befehl verwenden
oder dieses Skript (unter Verwendung einer Null-Sitzung)
Beispiele
PowerShell
CMD-Konsole
MMC Snap-In (grafisch)
explorer.exe (grafisch), geben Sie \\<ip>\
ein, um die verfügbaren nicht versteckten Freigaben anzuzeigen.
Lesen Sie die vorherigen Abschnitte, um zu erfahren, wie Sie sich mit Anmeldeinformationen/Pass-the-Hash verbinden.
Commands:
mask: gibt die Maske an, die verwendet wird, um die Dateien im Verzeichnis zu filtern (z.B. "" für alle Dateien)
recurse: schaltet die Rekursion ein (Standard: aus)
prompt: schaltet die Aufforderung zur Eingabe von Dateinamen aus (Standard: ein)
mget: kopiert alle Dateien, die der Maske entsprechen, vom Host auf die Client-Maschine
(Informationen aus der Man-Seite von smbclient)
Snaffler****
CrackMapExec Spinne.
-M spider_plus [--share <share_name>]
--pattern txt
Besonders interessant sind von Freigaben die Dateien Registry.xml
, da sie Passwörter für Benutzer enthalten können, die über autologon über Gruppenrichtlinien konfiguriert sind. Oder web.config
-Dateien, da sie Anmeldeinformationen enthalten.
Die SYSVOL-Freigabe ist für alle authentifizierten Benutzer in der Domäne lesbar. Dort können Sie viele verschiedene Batch-, VBScript- und PowerShell-Skripte finden. Sie sollten die Skripte darin überprüfen, da Sie möglicherweise sensible Informationen wie Passwörter finden.
Möglicherweise können Sie die Registrierung lesen, indem Sie einige entdeckte Anmeldeinformationen verwenden. Impacket reg.py
ermöglicht es Ihnen, es zu versuchen:
Die Standardkonfiguration von einem Samba-Server befindet sich normalerweise in /etc/samba/smb.conf
und könnte einige gefährliche Konfigurationen haben:
Der Befehl smbstatus
gibt Informationen über den Server und darüber, wer verbunden ist.
Sie können sich mit Kerberos authentifizieren, indem Sie die Tools smbclient und rpcclient verwenden:
crackmapexec kann Befehle ausführen, indem es eine der mmcexec, smbexec, atexec, wmiexec missbraucht, wobei wmiexec die Standard-Methode ist. Sie können angeben, welche Option Sie mit dem Parameter --exec-method
bevorzugen:
Beide Optionen erstellen einen neuen Dienst (unter Verwendung von \pipe\svcctl über SMB) auf der Zielmaschine und nutzen ihn, um etwas auszuführen (psexec wird eine ausführbare Datei in den ADMIN$-Freigabe hochladen und smbexec wird auf cmd.exe/powershell.exe verweisen und die Argumente die Payload --file-less technique-- einfügen). Mehr Informationen über psexec und smbexec. In kali befindet es sich unter /usr/share/doc/python3-impacket/examples/
Using parameter-k
you can authenticate against kerberos instead of NTLM
Heimlich eine Befehlszeile ausführen, ohne die Festplatte zu berühren oder einen neuen Dienst über DCOM über Port 135 auszuführen. In kali befindet es sich unter /usr/share/doc/python3-impacket/examples/
Using parameter-k
you can authenticate against kerberos instead of NTLM
Mit dem Parameter-k
können Sie sich an Kerberos anstelle von NTLM authentifizieren.
Befehle über den Task Scheduler ausführen (unter Verwendung von \pipe\atsvc über SMB). In kali befindet es sich unter /usr/share/doc/python3-impacket/examples/
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Dies wird nicht empfohlen, da Sie ein Konto sperren könnten, wenn Sie die maximal erlaubte Anzahl an Versuchen überschreiten
Dieser Angriff verwendet das Responder-Toolkit, um SMB-Authentifizierungssitzungen in einem internen Netzwerk zu erfassen und sie an eine Zielmaschine zu relayen. Wenn die Authentifizierung sitzung erfolgreich ist, werden Sie automatisch in eine System-Shell geleitet. Weitere Informationen zu diesem Angriff hier.
Die Windows-Bibliothek URLMon.dll versucht automatisch, sich beim Host zu authentifizieren, wenn eine Seite versucht, über SMB auf einige Inhalte zuzugreifen, zum Beispiel: img src="\\10.10.10.10\path\image.jpg"
Dies geschieht mit den Funktionen:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Die von einigen Browsern und Tools (wie Skype) verwendet werden.
Ähnlich wie beim SMB-Trapping kann das Platzieren bösartiger Dateien auf einem Zielsystem (zum Beispiel über SMB) einen SMB-Authentifizierungsversuch auslösen, wodurch der NetNTLMv2-Hash mit einem Tool wie Responder abgefangen werden kann. Der Hash kann dann offline geknackt oder in einem SMB-Relay-Angriff verwendet werden.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Benutzername(n)
Häufige Passwörter
(leer)
(leer)
gast
(leer)
Administrator, admin
(leer), passwort, administrator, admin
arcserve
arcserve, backup
tivoli, tmersrvd
tivoli, tmersrvd, admin
backupexec, backup
backupexec, backup, arcada
test, lab, demo
passwort, test, lab, demo
Einstellung
Beschreibung
browseable = yes
Erlaubt das Auflisten verfügbarer Freigaben im aktuellen Share?
read only = no
Verhindert die Erstellung und Modifikation von Dateien?
writable = yes
Erlaubt Benutzern, Dateien zu erstellen und zu modifizieren?
guest ok = yes
Erlaubt die Verbindung zum Dienst ohne Verwendung eines Passworts?
enable privileges = yes
Berücksichtigt Privilegien, die einem bestimmten SID zugewiesen sind?
create mask = 0777
Welche Berechtigungen müssen den neu erstellten Dateien zugewiesen werden?
directory mask = 0777
Welche Berechtigungen müssen den neu erstellten Verzeichnissen zugewiesen werden?
logon script = script.sh
Welches Skript muss beim Login des Benutzers ausgeführt werden?
magic script = script.sh
Welches Skript sollte ausgeführt werden, wenn das Skript geschlossen wird?
magic output = script.out
Wo muss die Ausgabe des magischen Skripts gespeichert werden?