# 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**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
## Grundlegende Informationen
Aus [Wikipedia](https://en.wikipedia.org/wiki/ISCSI) ü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.
```bash
nmap -p 3260
```
### 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.
```bash
telnet 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.
```bash
iscsiadm -m discovery -t sendtargets -p
```
### 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.
```bash
iscsiadm -m node -T -p -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.
```bash
iscsiadm -m node -T -p -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.
```bash
hydra -L -P 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](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [ISCSI unter Linux mounten](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
**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](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
## **Manuelle Aufzählung**
```bash
sudo apt-get install open-iscsi
```
Beispiel aus [iscsiadm-Dokumentation](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
Zunächst müssen Sie den Namen der **Ziele entdecken**, die sich hinter der IP-Adresse befinden:
```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 es die I**P-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**:
```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 kannst du dich mit `–logout` **abmelden**.
```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 **weitere Informationen** darüber finden, indem wir einfach **ohne** Verwendung eines `--login`/`--logout` Parameters vorgehen.
```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 =
iface.ipaddress =
iface.iscsi_ifacename = default
iface.net_ifacename =
iface.transport_name = tcp
iface.initiatorname =
iface.bootproto =
iface.subnet_mask =
iface.gateway =
iface.ipv6_autocfg =
iface.linklocal_autocfg =
iface.router_autocfg =
iface.ipv6_linklocal =
iface.ipv6_router =
iface.state =
iface.vlan_id = 0
iface.vlan_priority = 0
iface.vlan_state =
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 =
node.session.auth.password =
node.session.auth.username_in =
node.session.auth.password_in =
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**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm) **verfügbar ist.**
## **Shodan**
* `port:3260 AuthMethod`
## **Referenzen**
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm](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**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) **bei oder folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories senden.**