# 3260 - Pentesting ISCSI
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! Altri modi per supportare HackTricks: * Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
## Informazioni di base Da [Wikipedia](https://en.wikipedia.org/wiki/ISCSI): > Nel campo dell'informatica, **iSCSI** è l'acronimo di **Internet Small Computer Systems Interface**, uno standard di rete di archiviazione basato su Internet Protocol (IP) per collegare strutture di archiviazione dati. Fornisce accesso a livello di blocco ai dispositivi di archiviazione trasportando comandi SCSI su una rete TCP/IP. iSCSI viene utilizzato per facilitare il trasferimento di dati su intranet e per gestire l'archiviazione su lunghe distanze. Può essere utilizzato per trasmettere dati su reti locali (LAN), reti geografiche (WAN) o Internet e può consentire l'archiviazione e il recupero dei dati indipendenti dalla posizione. > > Il protocollo consente ai client (chiamati initiator) di inviare comandi SCSI (CDB) ai dispositivi di archiviazione (target) su server remoti. È un protocollo di rete di archiviazione (SAN), che consente alle organizzazioni di consolidare l'archiviazione in array di archiviazione fornendo contemporaneamente ai client (come database e server web) l'illusione di dischi SCSI collegati localmente. Concorre principalmente con Fibre Channel, ma a differenza del tradizionale Fibre Channel che di solito richiede cavi dedicati, iSCSI può essere eseguito su lunghe distanze utilizzando l'infrastruttura di rete esistente. **Porta predefinita:** 3260 ``` PORT STATE SERVICE VERSION 3260/tcp open iscsi? ``` ## Enumerazione ### iSCSI Discovery The first step in enumerating iSCSI targets is to perform an iSCSI discovery. This involves sending an iSCSI discovery request to the target's IP address and port number. The target will respond with a list of available iSCSI targets. To perform an iSCSI discovery, you can use the `iscsiadm` command-line tool. Here is an example command: ``` iscsiadm -m discovery -t sendtargets -p : ``` Replace `` with the IP address of the target and `` with the port number. This command will send an iSCSI discovery request to the target and display the list of available targets. ### iSCSI Target Enumeration Once you have obtained the list of available iSCSI targets, you can proceed with enumerating each target to gather more information. This can include details such as the target's name, IQN (iSCSI Qualified Name), and supported authentication methods. To enumerate an iSCSI target, you can use the `iscsiadm` command-line tool again. Here is an example command: ``` iscsiadm -m node -T -p : -l ``` Replace `` with the name of the target, `` with the IP address, and `` with the port number. This command will log in to the specified target and display detailed information about it. ### iSCSI CHAP Authentication Enumeration If the iSCSI target uses CHAP (Challenge-Handshake Authentication Protocol) for authentication, you can also enumerate the CHAP credentials. CHAP is a widely used authentication method in iSCSI. To enumerate CHAP credentials, you can use the `iscsiadm` command-line tool once again. Here is an example command: ``` iscsiadm -m node -T -p : -o update -n node.session.auth.authmethod -v CHAP ``` Replace `` with the name of the target, `` with the IP address, and `` with the port number. This command will update the authentication method to CHAP and display the CHAP credentials. By performing these enumeration techniques, you can gather valuable information about iSCSI targets and their authentication methods, which can be useful for further penetration testing activities. ``` nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx ``` Questo script indicherà se è richiesta l'autenticazione. ### [Forza bruta](../generic-methodologies-and-resources/brute-force.md#iscsi) ### [Montare ISCSI su Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux) **Nota:** Potresti scoprire che quando i tuoi obiettivi vengono individuati, vengono elencati con un indirizzo IP diverso. Questo tende a succedere se il servizio iSCSI è esposto tramite NAT o un IP virtuale. In casi come questi, `iscsiadmin` non riuscirà a connettersi. Questo richiede due modifiche: una al nome della directory del nodo creato automaticamente dalle tue attività di scoperta e una al file `default` contenuto in questa directory. Ad esempio, stai cercando di connetterti a un target iSCSI su 123.123.123.123 alla porta 3260. Il server che espone il target iSCSI è in realtà a 192.168.1.2 ma esposto tramite NAT. isciadm registrerà l'indirizzo _interno_ anziché l'indirizzo _pubblico_: ``` 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 [...] ``` Questo comando creerà una directory nel tuo filesystem come segue: ``` /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ ``` All'interno della directory, c'è un file predefinito con tutte le impostazioni necessarie per connettersi all'obiettivo. 1. Rinomina `/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/` 2. All'interno di `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, cambia l'impostazione `node.conn[0].address` in modo che punti a 123.123.123.123 anziché a 192.168.1.2. Questo può essere fatto con un comando come `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` Ora puoi montare l'obiettivo seguendo le istruzioni nel link. ### [Montare ISCSI su Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN) ## **Enumerazione manuale** ```bash sudo apt-get install open-iscsi ``` Esempio da [iscsiadm docs](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm): Prima di tutto devi **scoprire il nome degli obiettivi** dietro l'indirizzo IP: ```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 ``` _Nota che mostrerà l'I**P e la porta delle interfacce** a cui puoi **raggiungere** quei **target**. Può anche **mostrare IP interni o IP diversi** da quello che hai utilizzato._ Quindi **cattura la seconda parte della stringa stampata di ogni riga** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ dalla prima riga) e **prova ad effettuare il login**: ```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. ``` Quindi, puoi **effettuare il logout** utilizzando `–logout` ```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. ``` Possiamo trovare **ulteriori informazioni** a riguardo semplicemente utilizzando **senza** alcun parametro `--login`/`--logout` ```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 ``` **C'è uno script per automatizzare il processo di enumerazione di base del subnet disponibile su** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm) ## **Shodan** * `port:3260 AuthMethod` ## **Riferimenti** * [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)
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! Altri modi per supportare HackTricks: * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).