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

158 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 3260 - Pentesting ISCSI
{{#include ../banners/hacktricks-training.md}}
## Basic Information
From [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
> In computing, **iSCSI** का अर्थ है **Internet Small Computer Systems Interface**, जो डेटा स्टोरेज सुविधाओं को जोड़ने के लिए एक इंटरनेट प्रोटोकॉल (IP)-आधारित स्टोरेज नेटवर्किंग मानक है। यह TCP/IP नेटवर्क के माध्यम से SCSI कमांड ले जाकर स्टोरेज उपकरणों तक ब्लॉक-स्तरीय पहुंच प्रदान करता है। iSCSI
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## गणना
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
यह स्क्रिप्ट यह संकेत करेगी कि क्या प्रमाणीकरण की आवश्यकता है।
### [Brute force](../generic-hacking/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` फ़ाइल में।
उदाहरण के लिए, आप 123.123.123.123 पर पोर्ट 3260 पर एक iSCSI लक्ष्य से कनेक्ट करने की कोशिश कर रहे हैं। 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` सेटिंग को 192.168.1.2 के बजाय 123.123.123.123 की ओर इंगित करने के लिए बदलें। यह `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` जैसे कमांड के साथ किया जा सकता है।
आप अब लिंक में दिए गए निर्देशों के अनुसार लक्ष्य को माउंट कर सकते हैं।
### [Mount ISCSI on Windows](<https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476(v=ws.10)?redirectedfrom=MSDN>)
## **Manual enumeration**
```bash
sudo apt-get install open-iscsi
```
पहले आपको 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 और पोर्ट** दिखाएगा जहाँ आप उन **लक्ष्यों** तक **पहुंच सकते** हैं। यह यहां तक कि **आंतरिक IPs या आपके द्वारा उपयोग किए गए IPs से अलग IPs** भी दिखा सकता है।_
फिर आप **प्रत्येक पंक्ति के मुद्रित स्ट्रिंग के 2nd भाग को पकड़ते हैं** (_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` का उपयोग करके **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 = <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**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability_Analysis/isciadm)
## **Shodan**
- `port:3260 AuthMethod`
## **References**
- [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)
{{#include ../banners/hacktricks-training.md}}