11 KiB
3260 - Pentesting ISCSI
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Verifique os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
Do Wikipedia:
Em computação, iSCSI é um acrônimo para Internet Small Computer Systems Interface, um padrão de rede de armazenamento baseado em Protocolo de Internet (IP) para conectar instalações de armazenamento de dados. Ele fornece acesso em nível de bloco a dispositivos de armazenamento transportando comandos SCSI por uma rede TCP/IP. O iSCSI é usado para facilitar transferências de dados em intranets e para gerenciar armazenamento em longas distâncias. Pode ser usado para transmitir dados em redes locais (LANs), redes de longa distância (WANs) ou na Internet e pode permitir armazenamento e recuperação de dados independentes de localização.
O protocolo permite que clientes (chamados iniciadores) enviem comandos SCSI (CDBs) para dispositivos de armazenamento (alvos) em servidores remotos. É um protocolo de rede de área de armazenamento (SAN), permitindo que organizações consolidem o armazenamento em matrizes de armazenamento, enquanto fornecem aos clientes (como servidores de banco de dados e web) a ilusão de discos SCSI localmente conectados. Ele compete principalmente com Fibre Channel, mas ao contrário do Fibre Channel tradicional que geralmente requer cabeamento dedicado, o iSCSI pode ser executado em longas distâncias usando a infraestrutura de rede existente.
Porta padrão: 3260
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
Enumeração
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
Este script indicará se a autenticação é necessária.
Força bruta
Montar ISCSI no Linux
Nota: Você pode descobrir que, quando seus alvos são descobertos, eles são listados sob um endereço IP diferente. Isso tende a acontecer se o serviço iSCSI estiver exposto via NAT ou um IP virtual. Em casos como esses, iscsiadmin
falhará ao se conectar. Isso requer duas alterações: uma no nome do diretório do nó criado automaticamente por suas atividades de descoberta e outra no arquivo default
contido neste diretório.
Por exemplo, se você está tentando se conectar a um alvo iSCSI em 123.123.123.123 na porta 3260. O servidor que expõe o alvo iSCSI está na verdade em 192.168.1.2, mas exposto via NAT. O isciadm registrará o endereço interno em vez do endereço público:
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 irá criar um diretório no seu sistema de arquivos assim:
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
Dentro do diretório, há um arquivo padrão com todas as configurações necessárias para se conectar ao alvo.
- Renomeie
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
para/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/
- Dentro de
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default
, altere a configuraçãonode.conn[0].address
para apontar para 123.123.123.123 em vez de 192.168.1.2. Isso pode ser feito com um comando comosed -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
Agora você pode montar o alvo conforme as instruções no link.
Montar ISCSI no Windows
Enumeração Manual
sudo apt-get install open-iscsi
Exemplo de documentos do iscsiadm:
Primeiramente, você precisa descobrir o nome dos alvos por trás do 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
Note que ele mostrará o IP e porta das interfaces onde você pode alcançar esses alvos. Ele até pode mostrar IPs internos ou IPs diferentes daquele que você usou.
Em seguida, você pega a 2ª parte da string impressa de cada linha (iqn.1992-05.com.emc:fl1001433000190000-3-vnxe da primeira linha) e tenta fazer login:
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.
Em seguida, você pode sair usando –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.
Podemos encontrar mais informações sobre isso apenas usando sem nenhum parâmetro --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
Existe um script para automatizar o processo básico de enumeração de sub-redes disponível em iscsiadm
Shodan
port:3260 AuthMethod
Referências
- https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html
- https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud.