3260 - Pentesting ISCSI

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

Grundlegende Informationen

Von Wikipedia:

In der Informatik ist iSCSI ein Akronym für Internet Small Computer Systems Interface, einen auf dem Internet Protocol (IP) basierenden Standard für die Vernetzung von Datenspeichern. Es bietet blockbasierten Zugriff auf Speichergeräte, indem SCSI-Befehle über ein TCP/IP-Netzwerk übertragen werden. iSCSI wird verwendet, um Datentransfers über Intranets zu erleichtern und um Speicher über große Entfernungen zu verwalten. Es kann verwendet werden, um Daten über lokale Netzwerke (LANs), Weitverkehrsnetze (WANs) oder das Internet zu übertragen und kann standortunabhängigen Datenspeicher und -abruf ermöglichen.

Das Protokoll ermöglicht es Clients (genannt Initiatoren), SCSI-Befehle (CDBs) an Speichergeräte (Ziele) auf entfernten Servern zu senden. Es ist ein Protokoll für Speicherbereichsnetzwerke (SAN), das es Organisationen ermöglicht, Speicher in Speicherarrays zu konsolidieren, während es Clients (wie Datenbank- und Webservern) die Illusion von lokal angeschlossenen SCSI-Disketten bietet. Es konkurriert hauptsächlich mit Fibre Channel, aber im Gegensatz zu traditionellem Fibre Channel, das normalerweise dedizierte Verkabelung erfordert, kann iSCSI über große Entfernungen unter Verwendung der vorhandenen Netzwerkinfrastruktur betrieben werden.

Standardport: 3260

PORT     STATE SERVICE VERSION
3260/tcp open  iscsi?

Aufzählung

nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx

Dieses Skript zeigt an, ob eine Authentifizierung erforderlich ist.

Brute force

ISCSI unter Linux einbinden

Hinweis: Es kann sein, dass Ihre Ziele unter einer anderen IP-Adresse aufgeführt sind, wenn sie entdeckt werden. Dies passiert häufig, wenn der iSCSI-Dienst über NAT oder eine virtuelle IP exponiert ist. In solchen Fällen wird iscsiadmin nicht erfolgreich eine Verbindung herstellen. Dies erfordert zwei Anpassungen: eine am Verzeichnisnamen des automatisch durch Ihre Entdeckungsaktivitäten erstellten Knotens und eine an der default-Datei, die sich in diesem Verzeichnis befindet.

Zum Beispiel versuchen Sie, eine Verbindung zu einem iSCSI-Ziel unter 123.123.123.123 am Port 3260 herzustellen. Der Server, der das iSCSI-Ziel exponiert, befindet sich tatsächlich unter 192.168.1.2, wird jedoch über NAT exponiert. 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/

Im Verzeichnis 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 innerhalb von /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default die Einstellung node.conn[0].address, sodass sie auf 123.123.123.123 anstelle von 192.168.1.2 verweist. 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 jetzt gemäß den Anweisungen im Link einbinden.

Mount ISCSI on Windows

Manuelle Aufzählung

bash
sudo apt-get install open-iscsi

Zuerst müssen Sie die Ziel-Namen hinter der IP entdecken:

bash
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 die IP und den Port der Schnittstellen angezeigt werden, über die Sie diese Ziele erreichen können. Es kann sogar interne IPs oder andere IPs als die von Ihnen verwendete anzeigen.

Dann fangen Sie den 2. Teil des gedruckten Strings jeder Zeile (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe aus der ersten Zeile) und versuchen Sie sich anzumelden:

bash
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 können Sie logout mit –logout verwenden.

bash
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 mehr Informationen darüber finden, indem wir einfach ohne irgendeinen --login/--logout Parameter verwenden.

bash
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 Prozess der Subnetzenumeration zu automatisieren, verfügbar unter iscsiadm

Shodan

  • port:3260 AuthMethod

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks