# 3260 - Pentesting ISCSI {{#include ../banners/hacktricks-training.md}} ## Osnovne informacije Sa [Wikipedia](https://en.wikipedia.org/wiki/ISCSI): > U računarstvu, **iSCSI** je akronim za **Internet Small Computer Systems Interface**, standard za umrežavanje skladišta zasnovan na Internet protokolu (IP) za povezivanje objekata za skladištenje podataka. Omogućava pristup skladišnim uređajima na nivou blokova prenoseći SCSI komande preko TCP/IP mreže. iSCSI se koristi za olakšavanje prenosa podataka preko intraneta i za upravljanje skladištem na velikim udaljenostima. Može se koristiti za prenos podataka preko lokalnih mreža (LAN), širokih mreža (WAN) ili Interneta i može omogućiti skladištenje i preuzimanje podataka nezavisno od lokacije. > > Protokol omogućava klijentima (nazvanim inicijatori) da šalju SCSI komande (CDB) skladišnim uređajima (ciljevima) na udaljenim serverima. To je protokol skladišne mreže (SAN), koji omogućava organizacijama da konsoliduju skladište u skladišne nizove dok klijentima (kao što su serverske baze podataka i web serveri) pruža iluziju lokalno povezanih SCSI diskova. Glavni konkurent mu je Fibre Channel, ali za razliku od tradicionalnog Fibre Channel-a koji obično zahteva posvećeno kabliranje, iSCSI se može koristiti na velikim udaljenostima koristeći postojeću mrežnu infrastrukturu. **Podrazumevani port:** 3260 ``` PORT STATE SERVICE VERSION 3260/tcp open iscsi? ``` ## Enumeracija ``` nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx ``` Ovaj skript će pokazati da li je autentifikacija potrebna. ### [Brute force](../generic-hacking/brute-force.md#iscsi) ### [Mount ISCSI na Linuxu](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How_to_set_up_and_use_iSCSI_target_on_Linux) **Napomena:** Možda ćete primetiti da kada su vaši ciljevi otkriveni, oni su navedeni pod drugom IP adresom. To se obično dešava ako je iSCSI usluga izložena putem NAT-a ili virtuelne IP adrese. U ovakvim slučajevima, `iscsiadmin` će se neuspešno povezati. Ovo zahteva dva podešavanja: jedno za naziv direktorijuma čvora koji je automatski kreiran vašim aktivnostima otkrivanja, i jedno za `default` datoteku koja se nalazi unutar ovog direktorijuma. Na primer, pokušavate da se povežete na iSCSI cilj na 123.123.123.123 na portu 3260. Server koji izlaže iSCSI cilj se zapravo nalazi na 192.168.1.2, ali je izložen putem NAT-a. isciadm će registrovati _internu_ adresu umesto _javne_ adrese: ``` 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 [...] ``` Ova komanda će kreirati direktorijum u vašem fajl sistemu kao što je ovaj: ``` /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ ``` Unutar direktorijuma, postoji podrazumevani fajl sa svim podešavanjima potrebnim za povezivanje sa ciljem. 1. Preimenujte `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` u `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` 2. Unutar `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, promenite podešavanje `node.conn[0].address` da pokazuje na 123.123.123.123 umesto na 192.168.1.2. Ovo se može uraditi sa komandom kao što je `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` Sada možete montirati cilj prema uputstvima u linku. ### [Mount ISCSI on Windows]() ## **Ručno enumerisanje** ```bash sudo apt-get install open-iscsi ``` Prvo što treba da uradite je da **otkrijete imena ciljeva** iza IP-a: ```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 ``` _Napomena da će prikazati I**P i port interfejsa** gde možete **dostići** te **ciljeve**. Može čak **prikazati interne IP adrese ili različite IP adrese** od one koju ste koristili._ Zatim **uhvatite 2. deo odštampanog stringa svake linije** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ iz prve linije) i **pokušajte da se prijavite**: ```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. ``` Zatim, možete **logout** koristeći `–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. ``` Možemo pronaći **više informacija** o tome jednostavno koristeći **bez** bilo kog `--login`/`--logout` parametra ```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 ``` **Postoji skripta za automatizaciju osnovnog procesa enumeracije podmreže dostupna na** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability_Analysis/isciadm) ## **Shodan** - `port:3260 AuthMethod` ## **Reference** - [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}}