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

162 lines
9.4 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}}
## 基本情報
From [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
> コンピュータにおいて、**iSCSI**は**Internet Small Computer Systems Interface**の略で、データストレージ施設をリンクするためのインターネットプロトコルIPベースのストレージネットワーキング標準です。これは、SCSIコマンドをTCP/IPネットワーク上で運ぶことによって、ストレージデバイスへのブロックレベルアクセスを提供します。iSCSIは、イントラネット上でのデータ転送を促進し、長距離にわたるストレージ管理を行うために使用されます。これは、ローカルエリアネットワークLAN、広域ネットワークWAN、またはインターネットを介してデータを送信するために使用でき、場所に依存しないデータストレージと取得を可能にします。
>
> このプロトコルは、クライアントイニシエーターと呼ばれるがリモートサーバー上のストレージデバイスターゲットにSCSIコマンドCDBを送信することを許可します。これはストレージエリアネットワークSANプロトコルであり、組織がストレージをストレージアレイに統合し、クライアントデータベースやウェブサーバーなどにローカルに接続されたSCSIディスクの幻想を提供します。これは主にファイバーチャネルと競合しますが、通常専用の配線を必要とする従来のファイバーチャネルとは異なり、iSCSIは既存のネットワークインフラストラクチャを使用して長距離で実行できます。
**デフォルトポート:** 3260
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## 列挙
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
このスクリプトは、認証が必要かどうかを示します。
### [ブルートフォース](../generic-hacking/brute-force.md#iscsi)
### [LinuxでISCSIをマウントする](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`ファイルの2つの調整が必要です。
例えば、ポート3260で123.123.123.123の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`
リンクの指示に従ってターゲットをマウントできます。
### [WindowsでISCSIをマウントする](<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
```
まず最初に、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`を使用して**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`
## **参考文献**
- [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}}