14 KiB
3260 - Pentesting iSCSI
Lernen Sie das Hacken von AWS von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.
Grundlegende Informationen
Aus Wikipedia übersetzt:
Bei iSCSI handelt es sich um die Abkürzung für Internet Small Computer Systems Interface, einen auf dem Internetprotokoll (IP) basierenden Speichernetzwerkstandard zur Verknüpfung von Datenspeichereinrichtungen. Es ermöglicht den blockbasierten Zugriff auf Speichergeräte, indem SCSI-Befehle über ein TCP/IP-Netzwerk übertragen werden. iSCSI wird verwendet, um Datenübertragungen über Intranets zu erleichtern und die Speicherverwaltung über große Entfernungen hinweg zu ermöglichen. Es kann verwendet werden, um Daten über lokale Netzwerke (LANs), Weitverkehrsnetze (WANs) oder das Internet zu übertragen und eine standortunabhängige Datenspeicherung und -abfrage zu ermöglichen.
Das Protokoll ermöglicht es Clients (Initiatoren), SCSI-Befehle (CDBs) an Speichergeräte (Ziele) auf entfernten Servern zu senden. Es handelt sich um ein Speicherbereichsnetzwerk (SAN)-Protokoll, das es Organisationen ermöglicht, Speicher in Speicherarrays zu konsolidieren und gleichzeitig Clients (wie Datenbank- und Webserver) mit der Illusion von lokal angeschlossenen SCSI-Festplatten zu versorgen. Es konkurriert hauptsächlich mit Fibre Channel, aber im Gegensatz zu herkömmlichem Fibre Channel, für das normalerweise dedizierte Verkabelung erforderlich ist, kann iSCSI über große Entfernungen mit vorhandener Netzwerkinfrastruktur betrieben werden.
Standardport: 3260
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
Enumeration
Die Enumeration ist ein wichtiger Schritt im Pentesting-Prozess, um Informationen über das Zielnetzwerk zu sammeln. Es gibt verschiedene Techniken, um Informationen über iSCSI-Dienste zu sammeln:
Portscanning
Verwenden Sie Tools wie Nmap, um offene Ports auf dem Zielhost zu identifizieren. Überprüfen Sie, ob der iSCSI-Port (Standard: 3260) geöffnet ist.
nmap -p 3260 <ziel-ip>
Banner Grabbing
Verwenden Sie Tools wie Telnet oder Netcat, um den iSCSI-Dienst zu erreichen und den Bannertext abzurufen. Dies kann Informationen über die verwendete iSCSI-Implementierung und Version liefern.
telnet <ziel-ip> 3260
iSCSI Discovery
Verwenden Sie das iSCSI-Discovery-Protokoll, um Informationen über verfügbare iSCSI-Targets zu erhalten. Dies kann mit Tools wie iscsiadm
oder iscsiadm-discovery
durchgeführt werden.
iscsiadm -m discovery -t sendtargets -p <ziel-ip>
iSCSI Target Enumeration
Sobald ein iSCSI-Target identifiziert wurde, können Sie weitere Informationen über das Target abrufen. Verwenden Sie Tools wie iscsiadm
oder iscsiadm-node
und geben Sie die IP-Adresse des Targets an.
iscsiadm -m node -T <ziel-ip> -p <ziel-ip> -l
iSCSI Target IQN-Enumeration
Verwenden Sie das iSCSI Qualified Name (IQN), um Informationen über das Target zu erhalten. Verwenden Sie Tools wie iscsiadm
oder iscsiadm-node
und geben Sie die IQN des Targets an.
iscsiadm -m node -T <ziel-iqn> -p <ziel-ip> -l
iSCSI Target Authentication Bypass
Überprüfen Sie, ob der iSCSI-Dienst keine oder schwache Authentifizierung verwendet. Dies kann es Ihnen ermöglichen, sich ohne gültige Anmeldeinformationen mit dem Target zu verbinden.
iSCSI Target Information Leakage
Suchen Sie nach Informationen über das iSCSI-Target in öffentlich zugänglichen Quellen wie Suchmaschinen, Foren oder sozialen Medien. Dies kann Ihnen zusätzliche Informationen über das Target liefern.
iSCSI Target Misconfiguration
Überprüfen Sie, ob das iSCSI-Target falsch konfiguriert ist und sensible Informationen preisgibt. Dies kann durch Überprüfen von Konfigurationsdateien oder durch Ausnutzen von Schwachstellen erfolgen.
iSCSI Target Brute-Force
Versuchen Sie, das iSCSI-Target durch Brute-Force-Angriffe auf Anmeldeinformationen zu kompromittieren. Verwenden Sie Tools wie Hydra oder Medusa, um Benutzernamen und Passwörter auszuprobieren.
hydra -L <benutzerliste> -P <passwortliste> <ziel-ip> iscsi
iSCSI Target Denial of Service (DoS)
Versuchen Sie, das iSCSI-Target durch Denial-of-Service-Angriffe außer Betrieb zu setzen. Dies kann durch Überfluten des Targets mit Anfragen oder durch Ausnutzen von Schwachstellen erfolgen.
iSCSI Target Exploitation
Überprüfen Sie, ob das iSCSI-Target anfällig für bekannte Schwachstellen ist. Verwenden Sie Tools wie Metasploit, um Schwachstellen auszunutzen und Zugriff auf das Target zu erlangen.
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
Dieses Skript gibt an, ob eine Authentifizierung erforderlich ist.
Brute-Force
ISCSI unter Linux mounten
Hinweis: Es kann vorkommen, dass Ihre Ziele unter einer anderen IP-Adresse aufgelistet werden, wenn der iSCSI-Dienst über NAT oder eine virtuelle IP-Adresse freigegeben ist. In solchen Fällen schlägt iscsiadmin
fehl, eine Verbindung herzustellen. Hierfür sind zwei Anpassungen erforderlich: eine am Verzeichnisnamen des automatisch erstellten Knotens durch Ihre Entdeckungsaktivitäten und eine an der Datei default
, die sich in diesem Verzeichnis befindet.
Beispiel: Sie versuchen, eine iSCSI-Zieladresse unter 123.123.123.123 auf Port 3260 zu verbinden. Der Server, der das iSCSI-Ziel freigibt, befindet sich tatsächlich unter 192.168.1.2, ist jedoch über NAT freigegeben. Isciadm registriert die interne Adresse anstelle der öffentlichen Adresse:
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[...]
Dieser Befehl erstellt ein Verzeichnis in Ihrem Dateisystem wie folgt:
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
Innerhalb des Verzeichnisses befindet sich eine Standarddatei mit allen Einstellungen, die erforderlich sind, um eine Verbindung zum Ziel herzustellen.
- Benennen Sie
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
in/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/
um. - Ändern Sie in
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default
die Einstellungnode.conn[0].address
, um auf 123.123.123.123 anstelle von 192.168.1.2 zu verweisen. Dies kann mit einem Befehl wiesed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default
durchgeführt werden.
Sie können das Ziel nun gemäß den Anweisungen im Link einbinden.
ISCSI unter Windows einbinden
Manuelle Aufzählung
sudo apt-get install open-iscsi
Beispiel aus iscsiadm-Dokumentation:
Zunächst müssen Sie den Namen der Ziele entdecken, die sich hinter der IP-Adresse befinden:
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382
[fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382
Beachten Sie, dass es die IP-Adresse und den Port der Schnittstellen anzeigt, über die Sie diese Ziele erreichen können. Es kann sogar interne IPs oder unterschiedliche IPs von derjenigen anzeigen, die Sie verwendet haben.
Dann fangen Sie den zweiten Teil des gedruckten Strings jeder Zeile (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe von der ersten Zeile) und versuchen Sie sich anzumelden:
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login
Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
Dann kannst du dich mit –logout
abmelden.
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --logout
Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260]
Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
Wir können weitere Informationen darüber finden, indem wir einfach ohne Verwendung eines --login
/--logout
Parameters vorgehen.
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260
# BEGIN RECORD 2.0-873
node.name = iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
node.tpgt = 1
node.startup = manual
node.leading_login = No
iface.hwaddress = <empty>
iface.ipaddress = <empty>
iface.iscsi_ifacename = default
iface.net_ifacename = <empty>
iface.transport_name = tcp
iface.initiatorname = <empty>
iface.bootproto = <empty>
iface.subnet_mask = <empty>
iface.gateway = <empty>
iface.ipv6_autocfg = <empty>
iface.linklocal_autocfg = <empty>
iface.router_autocfg = <empty>
iface.ipv6_linklocal = <empty>
iface.ipv6_router = <empty>
iface.state = <empty>
iface.vlan_id = 0
iface.vlan_priority = 0
iface.vlan_state = <empty>
iface.iface_num = 0
iface.mtu = 0
iface.port = 0
node.discovery_address = 192.168.xx.xx
node.discovery_port = 3260
node.discovery_type = send_targets
node.session.initial_cmdsn = 0
node.session.initial_login_retry_max = 8
node.session.xmit_thread_priority = -20
node.session.cmds_max = 128
node.session.queue_depth = 32
node.session.nr_sessions = 1
node.session.auth.authmethod = None
node.session.auth.username = <empty>
node.session.auth.password = <empty>
node.session.auth.username_in = <empty>
node.session.auth.password_in = <empty>
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 15
node.session.err_timeo.lu_reset_timeout = 30
node.session.err_timeo.tgt_reset_timeout = 30
node.session.err_timeo.host_reset_timeout = 60
node.session.iscsi.FastAbort = Yes
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.DefaultTime2Wait = 2
node.session.iscsi.MaxConnections = 1
node.session.iscsi.MaxOutstandingR2T = 1
node.session.iscsi.ERL = 0
node.conn[0].address = 192.168.xx.xx
node.conn[0].port = 3260
node.conn[0].startup = manual
node.conn[0].tcp.window_size = 524288
node.conn[0].tcp.type_of_service = 0
node.conn[0].timeo.logout_timeout = 15
node.conn[0].timeo.login_timeout = 15
node.conn[0].timeo.auth_timeout = 45
node.conn[0].timeo.noop_out_interval = 5
node.conn[0].timeo.noop_out_timeout = 5
node.conn[0].iscsi.MaxXmitDataSegmentLength = 0
node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD
Es gibt ein Skript, um den grundlegenden Subnetz-Enumeration-Prozess zu automatisieren, das unter iscsiadm verfügbar ist.
Shodan
port:3260 AuthMethod
Referenzen
- https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html
- https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.