3260 - Pentesting ISCSI
Reading time: 7 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Από Wikipedia:
Στον υπολογιστή, 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
Mount ISCSI 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/
Μέσα στον κατάλογο, υπάρχει ένα προεπιλεγμένο αρχείο με όλες τις ρυθμίσεις που είναι απαραίτητες για να συνδεθείτε στον στόχο.
- Μετονομάστε το
/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/
- Μέσα στο
/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
sudo apt-get install open-iscsi
Πρώτα απ' όλα πρέπει να ανακαλύψετε τα ονόματα των στόχων πίσω από τη διεύθυνση IP:
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
Σημειώστε ότι θα εμφανίσει τη διεύθυνση IP και την πόρτα των διεπαφών όπου μπορείτε να φτάσετε αυτούς τους στόχους. Μπορεί ακόμη και να εμφανίσει εσωτερικές διευθύνσεις IP ή διαφορετικές διευθύνσεις IP από αυτήν που χρησιμοποιήσατε.
Στη συνέχεια, πιάστε το 2ο μέρος της εκτυπωμένης συμβολοσειράς κάθε γραμμής (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe από την πρώτη γραμμή) και δοκιμάστε να συνδεθείτε:
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
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
παράμετρο.
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
Υπάρχει ένα σενάριο για την αυτοματοποίηση της βασικής διαδικασίας αρίθμησης υποδικτύου διαθέσιμο στο iscsiadm
Shodan
port:3260 AuthMethod
Αναφορές
- https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html
- https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.