13 KiB
3260 - Pentesting ISCSI
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Основна інформація
З Вікіпедії:
У комп'ютерних технологіях, 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
Mount ISCSI 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/
У каталозі є файл за замовчуванням з усіма налаштуваннями, необхідними для підключення до цілі.
- Перейменуйте
/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/
- У
/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
Ручна енумерація
sudo apt-get install open-iscsi
Приклад з iscsiadm docs:
По-перше, вам потрібно виявити імена цілей за IP:
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
Зверніть увагу, що він покаже IP та порт інтерфейсів, де ви можете досягти цих цілей. Він навіть може показати внутрішні IP-адреси або різні IP-адреси від тієї, яку ви використовували.
Тоді ви захоплюєте 2-гу частину надрукованого рядка кожного рядка (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe з першого рядка) і намагаєтеся увійти:
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
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
параметра
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
Є скрипт для автоматизації базового процесу перерахунку підмереж, доступний за адресою iscsiadm
Shodan
port:3260 AuthMethod
Посилання
- https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html
- https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.