# 3260 - Pentestiranje iSCSI
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
## 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 skladišnih objekata. Pruža pristup skladišnim uređajima na nivou bloka preko TCP/IP mreže. iSCSI se koristi za olakšavanje prenosa podataka preko intraneta i upravljanje skladištem na velikim udaljenostima. Može se koristiti za prenos podataka preko lokalnih mreža (LAN), širokopojasnih mreža (WAN) ili Interneta i omogućava skladištenje i dohvat podataka nezavisno od lokacije.
>
> Protokol omogućava klijentima (nazvanim inicijatorima) da šalju SCSI komande (CDB) uređajima za skladištenje (ciljevima) na udaljenim serverima. To je protokol za skladištenje na mreži (SAN), koji omogućava organizacijama da konsoliduju skladište u skladišne nizove, pružajući klijentima (kao što su baze podataka i veb serveri) iluziju lokalno povezanih SCSI diskova. Glavna konkurencija mu je Fibre Channel, ali za razliku od tradicionalnog Fibre Channel-a koji obično zahteva posebne kablove, iSCSI se može pokretati na velikim udaljenostima koristeći postojeću mrežnu infrastrukturu.
**Podrazumevani port:** 3260
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## Enumeracija
### iSCSI (Internet Small Computer System Interface)
iSCSI je standardni protokol za prenos blok podataka preko IP mreže. Koristi se za povezivanje i upravljanje skladištima podataka na daljinu. Da biste započeli proces penetracije iSCSI servisa, prvo morate izvršiti enumeraciju kako biste identifikovali dostupne mete i otkrili potencijalne slabosti.
#### Portovi
iSCSI koristi dva glavna TCP/IP porta:
- Port 860: Standardni port za iSCSI servis
- Port 3260: Alternativni port za iSCSI servis
#### Identifikacija mete
Da biste identifikovali mete iSCSI servisa, možete koristiti različite metode:
- Skeniranje otvorenih portova: Skenirajte ciljnu IP adresu kako biste pronašli otvorene portove 860 i 3260.
- Snifiranje mreže: Snimajte mrežni saobraćaj kako biste identifikovali iSCSI pakete koji se razmenjuju između klijenta i servera.
#### Otkrivanje servisa
Nakon identifikacije otvorenih portova iSCSI servisa, možete koristiti različite alate za otkrivanje servisa kako biste dobili više informacija o meti:
- `nmap`: Koristite nmap sa opcijom `-p` da biste skenirali otvorene portove iSCSI servisa.
- `iscsiadm`: Koristite iscsiadm alat za otkrivanje iSCSI servisa i dobijanje informacija o njima.
#### Identifikacija metapodataka
Kada otkrijete iSCSI servis, možete koristiti različite metode za identifikaciju metapodataka:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o metapodacima iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o metapodacima.
#### Identifikacija korisnika
Da biste identifikovali korisnike iSCSI servisa, možete koristiti različite metode:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o korisnicima iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o korisnicima.
#### Identifikacija ciljeva
Da biste identifikovali ciljeve iSCSI servisa, možete koristiti različite metode:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o ciljevima iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o ciljevima.
#### Identifikacija LUN-ova
Da biste identifikovali LUN-ove (Logical Unit Numbers) iSCSI servisa, možete koristiti različite metode:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o LUN-ovima iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o LUN-ovima.
#### Identifikacija CHAP autentifikacije
Da biste identifikovali CHAP (Challenge-Handshake Authentication Protocol) autentifikaciju iSCSI servisa, možete koristiti različite metode:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o CHAP autentifikaciji iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o CHAP autentifikaciji.
#### Identifikacija ACL-ova
Da biste identifikovali ACL-ove (Access Control Lists) iSCSI servisa, možete koristiti različite metode:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o ACL-ovima iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o ACL-ovima.
#### Identifikacija servisnih parametara
Da biste identifikovali servisne parametre iSCSI servisa, možete koristiti različite metode:
- `iscsiadm`: Koristite iscsiadm alat za prikupljanje informacija o servisnim parametrima iSCSI servisa.
- `Wireshark`: Snimajte mrežni saobraćaj i koristite Wireshark za analizu iSCSI paketa kako biste dobili informacije o servisnim parametrima.
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
Ovaj skript će pokazati da li je potrebna autentifikacija.
### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [Montiranje 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že se desiti da kada se otkriju ciljevi, oni budu navedeni pod drugom IP adresom. Ovo se obično dešava ako je iSCSI servis izložen putem NAT-a ili virtuelne IP adrese. U takvim slučajevima, `iscsiadmin` neće uspeti da se poveže. Potrebne su dve izmene: jedna u imenu direktorijuma čvorova koji su automatski kreirani tokom otkrivanja, i druga u `default` fajlu koji se nalazi unutar ovog direktorijuma.
Na primer, pokušavate da se povežete sa iSCSI ciljem na adresi 123.123.123.123 na portu 3260. Server koji izlaže iSCSI cilj je zapravo na adresi 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 na sledeći način:
```
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
```
Unutar direktorijuma se nalazi podrazumevani fajl sa svim podešavanjima potrebnim za povezivanje sa ciljem.
1. Preimenuj `/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. U fajlu `/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` tako da pokazuje na 123.123.123.123 umesto 192.168.1.2. Ovo se može uraditi komandom poput `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.
### [Montiranje ISCSI na Windows-u](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
## **Ručno nabrojavanje**
```bash
sudo apt-get install open-iscsi
```
Prvo što trebate uraditi je **otkriti imena ciljeva** iza IP adrese:
```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** na kojima možete **dostići** te **mete**. Može čak prikazati i interne IP adrese ili različite IP adrese od one koju ste koristili._
Zatim **uhvatite drugi deo ispisane niske svake linije** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ sa prve linije) i **pokušajte se prijaviti**:
```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 **odjaviti se** 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 samo korišćenjem **bez** bilo kakvog parametra `--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
```
**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)
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.