hacktricks/network-services-pentesting/3260-pentesting-iscsi.md
2024-03-29 19:49:46 +01:00

14 KiB
Raw Blame History

3260 - Тестування на проникнення ISCSI

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Основна інформація

З Вікіпедії:

У комп'ютерній науці 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

Цей скрипт покаже, чи потрібна аутентифікація.

Брутфорс

Підключення ISCSI на 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

Ручне перелічення

sudo apt-get install open-iscsi

Приклад з документації iscsiadm:

Спочатку вам потрібно виявити імена цілей за 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

References

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks: