11 KiB
3260 - Pentesting ISCSI
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.
Informations de base
En informatique, iSCSI est l'acronyme de Internet Small Computer Systems Interface, une norme de réseau de stockage basée sur le protocole Internet (IP) pour relier des installations de stockage de données. Il fournit un accès au niveau des blocs aux dispositifs de stockage en transmettant des commandes SCSI sur un réseau TCP/IP. L'iSCSI est utilisé pour faciliter les transferts de données sur les intranets et pour gérer le stockage à de longues distances. Il peut être utilisé pour transmettre des données sur des réseaux locaux (LAN), des réseaux étendus (WAN) ou Internet et peut permettre le stockage et la récupération de données indépendamment de l'emplacement.
Le protocole permet aux clients (appelés initiateurs) d'envoyer des commandes SCSI (CDBs) à des dispositifs de stockage (cibles) sur des serveurs distants. C'est un protocole de réseau de zone de stockage (SAN), permettant aux organisations de consolider le stockage dans des tableaux de stockage tout en fournissant aux clients (tels que les serveurs de bases de données et web) l'illusion de disques SCSI attachés localement. Il est principalement en concurrence avec Fibre Channel, mais contrairement au Fibre Channel traditionnel qui nécessite généralement un câblage dédié, l'iSCSI peut être exécuté sur de longues distances en utilisant l'infrastructure réseau existante.
Port par défaut : 3260
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
Énumération
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
Ce script indiquera si une authentification est requise.
Force brute
Monter ISCSI sur Linux
Note : Vous pouvez constater que lorsque vos cibles sont découvertes, elles sont répertoriées sous une adresse IP différente. Cela se produit souvent si le service iSCSI est exposé via NAT ou une IP virtuelle. Dans des cas comme ceux-ci, iscsiadmin
échouera à se connecter. Cela nécessite deux ajustements : un pour le nom du répertoire du nœud automatiquement créé par vos activités de découverte, et un pour le fichier default
contenu dans ce répertoire.
Par exemple, vous essayez de vous connecter à une cible iSCSI sur 123.123.123.123 au port 3260. Le serveur exposant la cible iSCSI est en réalité à 192.168.1.2 mais exposé via NAT. isciadm enregistrera l'adresse interne plutôt que l'adresse publique :
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
[...]
Cette commande va créer un répertoire dans votre système de fichiers comme ceci :
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
Dans le répertoire, il y a un fichier par défaut avec tous les paramètres nécessaires pour se connecter à la cible.
- Renommez
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
en/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/
- Dans
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default
, changez le paramètrenode.conn[0].address
pour qu'il pointe vers 123.123.123.123 au lieu de 192.168.1.2. Cela peut être fait avec une commande telle quesed -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
Vous pouvez maintenant monter la cible comme indiqué dans le lien.
Monter ISCSI sur Windows
Énumération manuelle
sudo apt-get install open-iscsi
Tout d'abord, vous devez découvrir le nom de la cible derrière l'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
Notez qu'il affichera l'IP et le port des interfaces où vous pouvez atteindre ces cibles. Il peut même afficher des IP internes ou différentes IP de celle que vous avez utilisée.
Ensuite, vous capturez la 2ème partie de la chaîne imprimée de chaque ligne (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe de la première ligne) et essayez de vous connecter :
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.
Ensuite, vous pouvez vous déconnecter en utilisant –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.
Nous pouvons trouver plus d'informations à ce sujet en utilisant simplement sans aucun paramètre --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
Il existe un script pour automatiser le processus de base d'énumération de sous-réseaux disponible sur iscsiadm
Shodan
port:3260 AuthMethod
Références
{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %}
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres moyens de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le merchandising officiel PEASS & HackTricks
- Découvrez La Famille PEASS, notre collection d'NFTs exclusifs
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de hacking en soumettant des PR aux dépôts github HackTricks et HackTricks Cloud.