# 3260 - Pentesting ISCSI {{#include ../banners/hacktricks-training.md}} ## Basic Information Από [Wikipedia](https://en.wikipedia.org/wiki/ISCSI): > Στον υπολογιστή, **iSCSI** είναι ένα ακρωνύμιο για το **Internet Small Computer Systems Interface**, ένα πρότυπο δικτύωσης αποθήκευσης βασισμένο σε Πρωτόκολλο Διαδικτύου (IP) για τη σύνδεση εγκαταστάσεων αποθήκευσης δεδομένων. Παρέχει πρόσβαση σε επίπεδο μπλοκ σε συσκευές αποθήκευσης μεταφέροντας εντολές SCSI μέσω ενός δικτύου TCP/IP. Το iSCSI χρησιμοποιείται για να διευκολύνει τις μεταφορές δεδομένων μέσω εσωτερικών δικτύων και για να διαχειρίζεται την αποθήκευση σε μεγάλες αποστάσεις. Μπορεί να χρησιμοποιηθεί για τη μετάδοση δεδομένων μέσω τοπικών δικτύων (LAN), ευρέων δικτύων (WAN) ή του Διαδικτύου και μπορεί να επιτρέψει την αποθήκευση και ανάκτηση δεδομένων ανεξάρτητα από την τοποθεσία. > > Το πρωτόκολλο επιτρέπει στους πελάτες (που ονομάζονται πρωτοστάτες) να στέλνουν εντολές SCSI (CDBs) σε συσκευές αποθήκευσης (στόχους) σε απομακρυσμένους διακομιστές. Είναι ένα πρωτόκολλο δικτύου αποθήκευσης (SAN), επιτρέποντας στους οργανισμούς να ενοποιούν την αποθήκευση σε συστοιχίες αποθήκευσης ενώ παρέχουν στους πελάτες (όπως διακομιστές βάσεων δεδομένων και ιστού) την ψευδαίσθηση τοπικά συνδεδεμένων δίσκων SCSI. Ανταγωνίζεται κυρίως το Fibre Channel, αλλά σε αντίθεση με το παραδοσιακό Fibre Channel που συνήθως απαιτεί ειδική καλωδίωση, το iSCSI μπορεί να λειτουργήσει σε μεγάλες αποστάσεις χρησιμοποιώντας την υπάρχουσα υποδομή δικτύου. **Default port:** 3260 ``` PORT STATE SERVICE VERSION 3260/tcp open iscsi? ``` ## Καταμέτρηση ``` nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx ``` Αυτό το σενάριο θα υποδείξει αν απαιτείται αυθεντικοποίηση. ### [Brute force](../generic-hacking/brute-force.md#iscsi) ### [Mount ISCSI on Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How_to_set_up_and_use_iSCSI_target_on_Linux) **Σημείωση:** Μπορεί να διαπιστώσετε ότι όταν ανακαλύπτονται οι στόχοι σας, καταγράφονται κάτω από μια διαφορετική διεύθυνση IP. Αυτό συμβαίνει συνήθως αν η υπηρεσία iSCSI είναι εκτεθειμένη μέσω NAT ή μιας εικονικής IP. Σε περιπτώσεις όπως αυτές, το `iscsiadmin` θα αποτύχει να συνδεθεί. Αυτό απαιτεί δύο ρυθμίσεις: μία στο όνομα του καταλόγου του κόμβου που δημιουργείται αυτόματα από τις δραστηριότητες ανακάλυψής σας και μία στο αρχείο `default` που περιέχεται σε αυτόν τον κατάλογο. Για παράδειγμα, προσπαθείτε να συνδεθείτε σε έναν στόχο iSCSI στη διεύθυνση 123.123.123.123 στην πόρτα 3260. Ο διακομιστής που εκθέτει τον στόχο iSCSI είναι στην πραγματικότητα στη διεύθυνση 192.168.1.2 αλλά εκτίθεται μέσω NAT. Το isciadm θα καταχωρήσει τη _εσωτερική_ διεύθυνση αντί για τη _δημόσια_ διεύθυνση: ``` 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 [...] ``` Αυτή η εντολή θα δημιουργήσει έναν φάκελο στο σύστημα αρχείων σας όπως αυτός: ``` /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ ``` Μέσα στον κατάλογο, υπάρχει ένα προεπιλεγμένο αρχείο με όλες τις ρυθμίσεις που είναι απαραίτητες για να συνδεθείτε στον στόχο. 1. Μετονομάστε το `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` σε `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` 2. Μέσα στο `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, αλλάξτε τη ρύθμιση `node.conn[0].address` ώστε να δείχνει στο 123.123.123.123 αντί για 192.168.1.2. Αυτό μπορεί να γίνει με μια εντολή όπως `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` Μπορείτε τώρα να προσαρτήσετε τον στόχο σύμφωνα με τις οδηγίες στον σύνδεσμο. ### [Mount ISCSI on Windows]() ## **Manual enumeration** ```bash sudo apt-get install open-iscsi ``` Πρώτα απ' όλα πρέπει να **ανακαλύψετε τα ονόματα των στόχων** πίσω από τη διεύθυνση 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 ``` _Σημειώστε ότι θα εμφανίσει τη διεύθυνση I**P και την πόρτα των διεπαφών** όπου μπορείτε να **φτάσετε** αυτούς τους **στόχους**. Μπορεί ακόμη και να **εμφανίσει εσωτερικές διευθύνσεις IP ή διαφορετικές διευθύνσεις IP** από αυτήν που χρησιμοποιήσατε._ Στη συνέχεια, **πιάστε το 2ο μέρος της εκτυπωμένης συμβολοσειράς κάθε γραμμής** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ από την πρώτη γραμμή) και **δοκιμάστε να συνδεθείτε**: ```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. ``` Στη συνέχεια, μπορείτε να **logout** χρησιμοποιώντας `–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. ``` Μπορούμε να βρούμε **περισσότερες πληροφορίες** γι' αυτό απλά χρησιμοποιώντας **χωρίς** κανένα `--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 ``` **Υπάρχει ένα σενάριο για την αυτοματοποίηση της βασικής διαδικασίας αρίθμησης υποδικτύου διαθέσιμο στο** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability_Analysis/isciadm) ## **Shodan** - `port:3260 AuthMethod` ## **Αναφορές** - [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) {{#include ../banners/hacktricks-training.md}}