# 3260 - Testowanie penetracyjne protokołu iSCSI
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
## Podstawowe informacje Z [Wikipedii](https://en.wikipedia.org/wiki/ISCSI): > W informatyce, **iSCSI** to skrót od **Internet Small Computer Systems Interface**, standard oparty na protokole Internet Protocol (IP) do sieciowego przechowywania danych, łączący obiekty przechowywania danych. Zapewnia dostęp na poziomie bloku do urządzeń przechowywania, przesyłając polecenia SCSI przez sieć TCP/IP. iSCSI jest używane do transferu danych w sieciach lokalnych (LAN), sieciach rozległych (WAN) lub w Internecie, umożliwiając niezależne od lokalizacji przechowywanie i pobieranie danych. > > Protokół umożliwia klientom (nazywanym inicjatorami) wysyłanie poleceń SCSI (CDB) do urządzeń przechowywania (celów) na zdalnych serwerach. Jest to protokół sieciowej pamięci masowej (SAN), który umożliwia organizacjom konsolidację pamięci masowej w tablicach pamięci, jednocześnie zapewniając klientom (takim jak serwery baz danych i serwery internetowe) iluzję lokalnie podłączonych dysków SCSI. Konkuruje głównie z Fibre Channel, ale w przeciwieństwie do tradycyjnego Fibre Channel, który zwykle wymaga dedykowanego okablowania, iSCSI może być uruchamiane na dużą odległość przy użyciu istniejącej infrastruktury sieciowej. **Domyślny port:** 3260 ``` PORT STATE SERVICE VERSION 3260/tcp open iscsi? ``` ## Wyliczanie ### iSCSI iSCSI (Internet Small Computer System Interface) to protokół komunikacyjny, który umożliwia przesyłanie bloków danych między serwerem a urządzeniem pamięci masowej. Podczas testowania penetracyjnego, wyliczanie iSCSI może dostarczyć cennych informacji na temat systemu docelowego. #### Skanowanie portów Aby rozpocząć wyliczanie iSCSI, można rozpocząć od skanowania portów, aby znaleźć otwarte porty iSCSI. Można to zrobić za pomocą narzędzi takich jak Nmap, skanując porty 3260 (domyślny port iSCSI). ```plaintext nmap -p 3260 ``` #### Wykorzystanie iscsiadm Po zidentyfikowaniu otwartego portu iSCSI, można użyć narzędzia iscsiadm do nawiązania połączenia z serwerem iSCSI i uzyskania informacji o dostępnych zasobach. ```plaintext iscsiadm -m discovery -t sendtargets -p ``` #### Analiza odpowiedzi Po wykonaniu powyższej komendy, otrzymamy odpowiedzi zawierające informacje o dostępnych zasobach iSCSI. Możemy przeanalizować te odpowiedzi, aby uzyskać informacje takie jak adresy IP, porty, identyfikatory iSCSI, nazwy zasobów itp. #### Wykorzystanie iscsiadm do nawiązania połączenia Po zidentyfikowaniu interesującego nas zasobu iSCSI, możemy użyć narzędzia iscsiadm do nawiązania połączenia z tym zasobem. ```plaintext iscsiadm -m node -T -p -l ``` #### Montowanie zasobu iSCSI Po nawiązaniu połączenia z zasobem iSCSI, możemy go zamontować na naszym systemie operacyjnym. ```plaintext mount /dev/sdX /mnt ``` Gdzie `/dev/sdX` to urządzenie iSCSI, które zostało nawiązane, a `/mnt` to ścieżka montowania. #### Analiza zasobów iSCSI Po zamontowaniu zasobu iSCSI, możemy przeglądać i analizować zawartość tego zasobu, aby znaleźć cenne informacje lub potencjalne luki w zabezpieczeniach. ### NFS NFS (Network File System) to protokół umożliwiający udostępnianie plików i katalogów między systemami operacyjnymi w sieci. Podczas testowania penetracyjnego, wyliczanie NFS może dostarczyć informacji na temat dostępnych zasobów NFS i potencjalnych luk w zabezpieczeniach. #### Skanowanie portów Aby rozpocząć wyliczanie NFS, można rozpocząć od skanowania portów, aby znaleźć otwarte porty NFS. Można to zrobić za pomocą narzędzi takich jak Nmap, skanując porty 111 i 2049 (domyślne porty NFS). ```plaintext nmap -p 111,2049 ``` #### Wykorzystanie showmount Po zidentyfikowaniu otwartych portów NFS, można użyć polecenia showmount, aby uzyskać informacje na temat dostępnych zasobów NFS. ```plaintext showmount -e ``` #### Analiza odpowiedzi Po wykonaniu powyższej komendy, otrzymamy odpowiedzi zawierające informacje o dostępnych zasobach NFS. Możemy przeanalizować te odpowiedzi, aby uzyskać informacje takie jak ścieżki dostępu, uprawnienia, nazwy zasobów itp. #### Montowanie zasobu NFS Po zidentyfikowaniu interesującego nas zasobu NFS, możemy go zamontować na naszym systemie operacyjnym. ```plaintext mount -t nfs :<ścieżka_zasobu> /mnt ``` Gdzie `` to adres IP systemu docelowego, a `<ścieżka_zasobu>` to ścieżka dostępu do zasobu NFS. #### Analiza zasobów NFS Po zamontowaniu zasobu NFS, możemy przeglądać i analizować zawartość tego zasobu, aby znaleźć cenne informacje lub potencjalne luki w zabezpieczeniach. ``` nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx ``` Ten skrypt wskaże, czy wymagane jest uwierzytelnienie. ### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi) ### [Montowanie ISCSI w systemie Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux) **Uwaga:** Może się zdarzyć, że gdy twoje cele zostaną odkryte, zostaną one wymienione pod innym adresem IP. Zdarza się to, gdy usługa iSCSI jest wystawiona przez NAT lub wirtualny adres IP. W takich przypadkach `iscsiadmin` nie będzie w stanie się połączyć. Wymaga to dwóch zmian: jednej w nazwie katalogu węzła automatycznie utworzonego podczas działań odkrywania, oraz jednej w pliku `default` znajdującym się w tym katalogu. Na przykład, próbujesz połączyć się z docelowym iSCSI o adresie 123.123.123.123 na porcie 3260. Serwer wystawiający docelowy iSCSI jest faktycznie pod adresem 192.168.1.2, ale jest wystawiony przez NAT. isciadm zarejestruje adres _wewnętrzny_ zamiast adresu _publicznego_: ``` 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 [...] ``` To polecenie utworzy katalog w systemie plików w ten sposób: ``` /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/ ``` W katalogu znajduje się domyślny plik z wszystkimi ustawieniami niezbędnymi do połączenia z celem. 1. Zmień nazwę `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` na `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` 2. W pliku `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` zmień ustawienie `node.conn[0].address`, aby wskazywało na 123.123.123.123 zamiast 192.168.1.2. Można to zrobić za pomocą polecenia `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` Teraz można zamontować cel zgodnie z instrukcjami pod linkiem. ### [Zamontuj ISCSI w systemie Windows](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN) ## **Ręczne wyliczanie** ```bash sudo apt-get install open-iscsi ``` Przykład z [dokumentacją iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm): Po pierwsze, musisz **odkryć nazwę celu** za pomocą adresu 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 ``` _Należy zauważyć, że zostaną wyświetlone I**P i porty interfejsów**, na których można **osiągnąć** te **cele**. Może nawet **pokazać wewnętrzne IP lub inne IP** niż to, które zostało użyte._ Następnie **przechwytujesz drugą część wydrukowanego ciągu znaków z każdej linii** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ z pierwszej linii) i **próbujesz się zalogować**: ```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. ``` Następnie możesz **wylogować się** używając `–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. ``` Możemy znaleźć **więcej informacji** na ten temat, używając jedynie **bez** jakichkolwiek parametrów `--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 ``` **Istnieje skrypt do automatyzacji podstawowego procesu wyliczania podsieci dostępny na** [**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)
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.