# 3260 - Pentesting ISCSI
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## Basic Information
From [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
> W informatyce, **iSCSI** to akronim od **Internet Small Computer Systems Interface**, standard sieciowy oparty na protokole Internetowym (IP) do 艂膮czenia zasob贸w pami臋ci masowej. Umo偶liwia dost臋p na poziomie blok贸w do urz膮dze艅 pami臋ci masowej, przesy艂aj膮c polecenia SCSI przez sie膰 TCP/IP. iSCSI jest u偶ywane do u艂atwienia transfer贸w danych przez intranety oraz do zarz膮dzania pami臋ci膮 masow膮 na du偶ych odleg艂o艣ciach. Mo偶e by膰 u偶ywane do przesy艂ania danych przez sieci lokalne (LAN), sieci rozleg艂e (WAN) lub Internet i mo偶e umo偶liwia膰 niezale偶ne od lokalizacji przechowywanie i pobieranie danych.
>
> Protok贸艂 pozwala klientom (nazywanym inicjatorami) na wysy艂anie polece艅 SCSI (CDB) do urz膮dze艅 pami臋ci masowej (cel贸w) na zdalnych serwerach. Jest to protok贸艂 sieci pami臋ci masowej (SAN), kt贸ry pozwala organizacjom na konsolidacj臋 pami臋ci masowej w macierze pami臋ci masowej, jednocze艣nie zapewniaj膮c klientom (takim jak serwery baz danych i serwery internetowe) iluzj臋 lokalnie pod艂膮czonych dysk贸w SCSI. G艂贸wnie konkuruje z Fibre Channel, ale w przeciwie艅stwie do tradycyjnego Fibre Channel, kt贸ry zazwyczaj wymaga dedykowanego okablowania, iSCSI mo偶e by膰 uruchamiane na du偶ych odleg艂o艣ciach, wykorzystuj膮c istniej膮c膮 infrastruktur臋 sieciow膮.
**Default port:** 3260
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## Enumeracja
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
Ten skrypt wska偶e, czy wymagana jest autoryzacja.
### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [Zamontuj ISCSI na Linuxie](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
**Uwaga:** Mo偶esz zauwa偶y膰, 偶e gdy twoje cele zostan膮 odkryte, s膮 one wymienione pod innym adresem IP. Zwykle zdarza si臋 to, gdy us艂uga iSCSI jest wystawiona przez NAT lub wirtualny adres IP. W takich przypadkach `iscsiadmin` nie b臋dzie w stanie si臋 po艂膮czy膰. Wymaga to dw贸ch poprawek: jednej do nazwy katalogu w臋z艂a automatycznie utworzonego przez twoje dzia艂ania odkrywcze oraz jednej do pliku `default` znajduj膮cego si臋 w tym katalogu.
Na przyk艂ad, pr贸bujesz po艂膮czy膰 si臋 z celem iSCSI na 123.123.123.123 na porcie 3260. Serwer wystawiaj膮cy cel iSCSI znajduje si臋 w rzeczywisto艣ci pod adresem 192.168.1.2, ale jest wystawiony przez NAT. isciadm zarejestruje adres _wewn臋trzny_ zamiast _publicznego_ adresu:
```
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
[...]
```
To polecenie utworzy katalog w twoim systemie plik贸w w ten spos贸b:
```
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
```
W katalogu znajduje si臋 domy艣lny plik z wszystkimi ustawieniami niezb臋dnymi do po艂膮czenia z celem.
1. Zmie艅 nazw臋 `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` na `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
2. W `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, zmie艅 ustawienie `node.conn[0].address`, aby wskazywa艂o na 123.123.123.123 zamiast 192.168.1.2. Mo偶na to zrobi膰 za pomoc膮 polecenia takiego jak `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`
Mo偶esz teraz zamontowa膰 cel zgodnie z instrukcjami w linku.
### [Zamontuj ISCSI na Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
## **R臋czna enumeracja**
```bash
sudo apt-get install open-iscsi
```
Przede wszystkim musisz **odkry膰 nazwy cel贸w** za adresem 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
```
_Note that it will show the I**P and port of the interfaces** where you can **reach** those **targets**. It can even **show internal IPs or different IPs** from the one you used._
Nast臋pnie **z艂ap drug膮 cz臋艣膰 wydrukowanego ci膮gu z ka偶dej linii** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ z pierwszej linii) i **spr贸buj si臋 zalogowa膰**:
```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.
```
Nast臋pnie mo偶esz **wylogowa膰 si臋** u偶ywaj膮c `鈥搇ogout`
```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偶emy znale藕膰 **wi臋cej informacji** na ten temat, u偶ywaj膮c **bez** 偶adnego parametru `--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
```
**Istnieje skrypt do automatyzacji podstawowego procesu enumeracji podsieci dost臋pny pod** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
## **Shodan**
* `port:3260 AuthMethod`
## **Referencje**
* [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)
{% hint style="success" %}
Ucz si臋 i 膰wicz Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Ucz si臋 i 膰wicz Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Wsparcie dla HackTricks
* Sprawd藕 [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Do艂膮cz do** 馃挰 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **艣led藕** nas na **Twitterze** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Dziel si臋 trikami hackingowymi, przesy艂aj膮c PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytori贸w github.
{% endhint %}