mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 21:24:06 +00:00
169 lines
9.9 KiB
Markdown
169 lines
9.9 KiB
Markdown
|
## Información Básica
|
|||
|
|
|||
|
> En informática, **iSCSI** es un acrónimo de **Internet Small Computer Systems Interface**, un estándar de almacenamiento basado en el protocolo de Internet (IP) para vincular instalaciones de almacenamiento de datos. Proporciona acceso a nivel de bloque a dispositivos de almacenamiento mediante el transporte de comandos SCSI sobre una red TCP/IP. iSCSI se utiliza para facilitar transferencias de datos a través de intranets y para administrar almacenamiento a larga distancia. Se puede utilizar para transmitir datos a través de redes de área local (LAN), redes de área amplia (WAN) o Internet y puede permitir el almacenamiento y recuperación de datos independientes de la ubicación.
|
|||
|
>
|
|||
|
> El protocolo permite a los clientes (llamados iniciadores) enviar comandos SCSI (CDB) a dispositivos de almacenamiento (objetivos) en servidores remotos. Es un protocolo de red de área de almacenamiento (SAN), que permite a las organizaciones consolidar el almacenamiento en matrices de almacenamiento mientras proporciona a los clientes (como servidores de bases de datos y web) la ilusión de discos SCSI conectados localmente. Principalmente compite con Fibre Channel, pero a diferencia de Fibre Channel tradicional que generalmente requiere cableado dedicado, iSCSI se puede ejecutar a larga distancia utilizando la infraestructura de red existente.
|
|||
|
|
|||
|
**Puerto predeterminado:** 3260
|
|||
|
```
|
|||
|
PORT STATE SERVICE VERSION
|
|||
|
3260/tcp open iscsi?
|
|||
|
```
|
|||
|
## Enumeración
|
|||
|
```
|
|||
|
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
|
|||
|
```
|
|||
|
Este script indicará si se requiere autenticación.
|
|||
|
|
|||
|
### [Fuerza bruta](../generic-methodologies-and-resources/brute-force.md#iscsi)
|
|||
|
|
|||
|
### [Montar ISCSI en Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
|
|||
|
|
|||
|
**Nota:** Puede suceder que cuando se descubran los objetivos, estos se encuentren listados bajo una dirección IP diferente. Esto suele ocurrir si el servicio iSCSI está expuesto a través de NAT o una IP virtual. En casos como estos, `iscsiadmin` fallará al conectarse. Esto requiere dos ajustes: uno en el nombre del directorio del nodo creado automáticamente por las actividades de descubrimiento, y otro en el archivo `default` contenido dentro de este directorio.
|
|||
|
|
|||
|
Por ejemplo, si está intentando conectarse a un objetivo iSCSI en 123.123.123.123 en el puerto 3260. El servidor que expone el objetivo iSCSI está en realidad en 192.168.1.2 pero expuesto a través de NAT. isciadm registrará la dirección _interna_ en lugar de la dirección _pública_:
|
|||
|
```
|
|||
|
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
|
|||
|
[...]
|
|||
|
```
|
|||
|
Este comando creará un directorio en tu sistema de archivos de la siguiente manera:
|
|||
|
```
|
|||
|
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
|
|||
|
```
|
|||
|
Dentro del directorio, hay un archivo predeterminado con todas las configuraciones necesarias para conectarse al objetivo.
|
|||
|
|
|||
|
1. Renombra `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` a `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/`
|
|||
|
2. Dentro de `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default`, cambia la configuración `node.conn[0].address` para que apunte a 123.123.123.123 en lugar de 192.168.1.2. Esto se puede hacer con un comando como `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`
|
|||
|
|
|||
|
Ahora puedes montar el objetivo según las instrucciones del enlace.
|
|||
|
|
|||
|
### [Montar ISCSI en Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
|
|||
|
|
|||
|
## **Enumeración manual**
|
|||
|
```bash
|
|||
|
sudo apt-get install open-iscsi
|
|||
|
```
|
|||
|
En primer lugar, es necesario **descubrir el nombre de los objetivos** detrás de la dirección 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
|
|||
|
```
|
|||
|
_Nota que mostrará la **IP y el puerto de las interfaces** donde puedes **alcanzar** esos **objetivos**. Incluso puede **mostrar IPs internas o diferentes IPs** de la que usaste._
|
|||
|
|
|||
|
Luego **capturas la segunda parte de la cadena impresa de cada línea** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ de la primera línea) y **tratas de iniciar sesión**:
|
|||
|
```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.
|
|||
|
```
|
|||
|
Entonces, puedes **cerrar sesión** usando `–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.
|
|||
|
```
|
|||
|
Podemos encontrar **más información** al usar simplemente **sin** ningún parámetro `--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
|
|||
|
```
|
|||
|
## **Shodan**
|
|||
|
|
|||
|
* `port:3260 AuthMethod`
|
|||
|
|
|||
|
## **Referencias**
|
|||
|
|
|||
|
{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %}
|
|||
|
|
|||
|
<details>
|
|||
|
|
|||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|||
|
|
|||
|
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|||
|
|
|||
|
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|||
|
|
|||
|
- Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
|||
|
|
|||
|
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|||
|
|
|||
|
- **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
|
|||
|
|
|||
|
</details>
|
|||
|
|
|||
|
**Hay un script para automatizar el proceso básico de enumeración de subredes disponible en** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
|