# 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をマウントする]() ## **手動列挙** ```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 = 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) {{#include ../banners/hacktricks-training.md}}