# 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 %}
## Основна інформація
З [Вікіпедії](https://en.wikipedia.org/wiki/ISCSI):
> У комп'ютерних технологіях, **iSCSI** є абревіатурою для **Internet Small Computer Systems Interface**, стандарту зберігання даних на основі Інтернет-протоколу (IP) для з'єднання сховищ даних. Він забезпечує доступ на рівні блоків до пристроїв зберігання, передаючи команди SCSI через мережу TCP/IP. iSCSI використовується для полегшення передачі даних через інтрамережі та для управління зберіганням на великих відстанях. Його можна використовувати для передачі даних через локальні мережі (LAN), широкомасштабні мережі (WAN) або Інтернет і може забезпечити незалежне від місця зберігання та вилучення даних.
>
> Протокол дозволяє клієнтам (які називаються ініціаторами) надсилати команди SCSI (CDB) до пристроїв зберігання (цілей) на віддалених серверах. Це протокол мережі зберігання (SAN), що дозволяє організаціям консолідувати зберігання в масиви зберігання, одночасно надаючи клієнтам (таким як сервери бази даних і веб-сервери) ілюзію локально підключених дисків SCSI. Він в основному конкурує з Fibre Channel, але на відміну від традиційного Fibre Channel, який зазвичай вимагає спеціального кабелю, iSCSI може працювати на великих відстанях, використовуючи існуючу мережеву інфраструктуру.
**Порт за замовчуванням:** 3260
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## Перерахування
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
Цей скрипт вказуватиме, чи потрібна аутентифікація.
### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [Mount ISCSI on Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
**Примітка:** Ви можете виявити, що коли ваші цілі виявлені, вони перераховані під іншою IP-адресою. Це зазвичай трапляється, якщо служба iSCSI відкрито через NAT або віртуальну IP-адресу. У таких випадках `iscsiadmin` не зможе підключитися. Це вимагає двох налаштувань: одного для імені каталогу вузла, автоматично створеного вашими діями з виявлення, і одного для файлу `default`, що міститься в цьому каталозі.
Наприклад, ви намагаєтеся підключитися до цілі iSCSI на 123.123.123.123 на порту 3260. Сервер, що відкриває ціль iSCSI, насправді знаходиться за адресою 192.168.1.2, але відкритий через NAT. isciadm зареєструє _внутрішню_ адресу, а не _публічну_ адресу:
```
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
[...]
```
Ця команда створить каталог у вашій файловій системі, як ось цей:
```
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
```
У каталозі є файл за замовчуванням з усіма налаштуваннями, необхідними для підключення до цілі.
1. Перейменуйте `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` на `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
2. У `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` змініть налаштування `node.conn[0].address`, щоб вказати на 123.123.123.123 замість 192.168.1.2. Це можна зробити за допомогою команди, такої як `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`
Тепер ви можете змонтувати ціль відповідно до інструкцій у посиланні.
### [Монтування ISCSI на Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
## **Ручна енумерація**
```bash
sudo apt-get install open-iscsi
```
Приклад з [iscsiadm docs](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
По-перше, вам потрібно **виявити імена цілей** за 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
```
_Зверніть увагу, що він покаже I**P та порт інтерфейсів**, де ви можете **досягти** цих **цілей**. Він навіть може **показати внутрішні IP-адреси або різні IP-адреси** від тієї, яку ви використовували._
Тоді ви **захоплюєте 2-гу частину надрукованого рядка кожного рядка** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ з першого рядка) і **намагаєтеся увійти**:
```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.
```
Тоді ви можете **вийти** за допомогою `–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.
```
Ми можемо знайти **більше інформації** про це, просто використовуючи **без** будь-якого `--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
```
**Є скрипт для автоматизації базового процесу перерахунку підмереж, доступний за адресою** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
## **Shodan**
* `port:3260 AuthMethod`
## **Посилання**
* [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" %}
Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Підтримайте HackTricks
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
{% endhint %}