hacktricks/network-services-pentesting/3260-pentesting-iscsi.md

188 lines
11 KiB
Markdown
Raw Permalink Normal View History

# 3260 - Pentesting ISCSI
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
## Basic Information
2022-04-28 16:01:33 +00:00
From [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
2024-02-08 21:36:35 +00:00
> 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
2022-05-01 13:25:53 +00:00
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## Enumeracja
2024-02-11 01:46:25 +00:00
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
Ten skrypt wskaże, czy wymagana jest autoryzacja.
2021-01-15 09:05:40 +00:00
2024-02-11 01:46:25 +00:00
### [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.
2024-02-11 01:46:25 +00:00
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:
2024-02-11 01:46:25 +00:00
```
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:
```
2024-02-11 01:46:25 +00:00
/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`
2024-02-11 01:46:25 +00:00
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)
2024-02-08 21:36:35 +00:00
## **Ręczna enumeracja**
2024-02-11 01:46:25 +00:00
```bash
sudo apt-get install open-iscsi
```
Przede wszystkim musisz **odkryć nazwy celów** za adresem IP:
2024-02-08 21:36:35 +00:00
```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.
```
2024-02-11 01:46:25 +00:00
Następnie możesz **wylogować się** używając `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ż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 = <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
```
**Istnieje skrypt do automatyzacji podstawowego procesu enumeracji podsieci dostępny pod** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
2020-09-18 11:59:55 +00:00
2022-05-01 13:25:53 +00:00
## **Shodan**
2020-09-18 11:59:55 +00:00
* `port:3260 AuthMethod`
## **Referencje**
2022-04-28 16:01:33 +00:00
2024-02-08 21:36:35 +00:00
* [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)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Ucz się i ćwicz Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Wsparcie dla HackTricks</summary>
2022-04-28 16:01:33 +00:00
* 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.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}