hacktricks/network-services-pentesting/3260-pentesting-iscsi.md
2024-02-10 15:36:32 +00:00

14 KiB
Raw Blame History

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:

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.

  1. 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.
  2. Ändern Sie in /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default die Einstellung node.conn[0].address, um auf 123.123.123.123 anstelle von 192.168.1.2 zu verweisen. Dies kann mit einem Befehl wie sed -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

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: