11 KiB
3260 - Pentesting ISCSI
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Grundinformationen
Von Wikipedia:
In der Informatik ist iSCSI ein Akronym für Internet Small Computer Systems Interface, einen auf dem Internetprotokoll (IP) basierenden Speicher-Netzwerkstandard zur Verbindung von Datenspeichereinrichtungen. 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 Speicher-Arrays zu konsolidieren, während es Clients (wie Datenbank- und Webserver) 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 bestehender Netzwerk-Infrastruktur 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
Mount ISCSI auf Linux
Hinweis: Sie stellen möglicherweise fest, 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 von Ihren 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 wird die interne Adresse anstelle der öffentlichen Adresse registrieren:
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 gibt es 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 innerhalb von
/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 jetzt gemäß den Anweisungen im Link einbinden.
ISCSI unter Windows einbinden
Manuelle Aufzählung
sudo apt-get install open-iscsi
Beispiel aus den iscsiadm-Dokumenten:
Zuerst müssen Sie die Zielnamen hinter der IP entdecken:
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 anzeigen als die, die Sie verwendet haben.
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:
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.
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.
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 zur Automatisierung des grundlegenden Subnetz-Enumerationsprozesses, das verfügbar ist unter iscsiadm
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
{% hint style="success" %}
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.