So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Vorwort

Vor langer Zeit, Anfang der 2000er Jahre, vergnĂŒgten sich viele Menschen damit, regelmĂ€ĂŸig die Netzwerke ihres Anbieters und manchmal sogar weiter entfernte Ziele nach Hinweisen auf Computer zu durchsuchen. Windows Maschinen und deren Ressourcen (SMB) waren zum Lesen (Schreiben) zugĂ€nglich. Die Suche erfolgte primitiv: Ein IP-Adressbereich oder eine Netzwerkmaske wurde angegeben, und verschiedene Tools – LANguard Network Scanner, xIntruder und Ă€hnliche – wurden verwendet, um die Adressen zu scannen und Server zu finden. HĂ€ufig waren verschiedene Netzwerkressourcen (Laufwerke, Drucker, Verzeichnisse) auf den gefundenen Maschinen lesbar, seltener jedoch beschreibbar. Über eine anonyme Sitzung mit IPC$ und dem Benutzer „Gast“ konnten die Ressourcen auf der Maschine aufgelistet werden. Manchmal wurden passwortlose Administratoren gefunden, und manchmal, nach einem aktiveren Vorgehen auf den gefundenen Maschinen, konnten Server mit dem Betriebssystem gefunden werden. Windows NT 4.0 oder Windows Server 2000. Wenn Sie das GlĂŒck hatten, Rechner mit dem damals gĂ€ngigen System zu finden. Windows Ab Windows 98 wurde es einfacher – das Betriebssystem wies damals zahlreiche SicherheitslĂŒcken auf, unter anderem in der SMB-Implementierung. Brute-Force-Angriffe, um Zugriff auf Ressourcen zu erlangen, waren innerhalb von Minuten möglich, sogar ĂŒber Einwahlverbindungen. FĂŒr alle, die in die Vergangenheit eintauchen möchten, folgt hier eine detaillierte Beschreibung des „Zugriffs“ auf 
 Windows 9x — Hacking aufgedeckt: Geheimnisse und Lösungen fĂŒr die Netzwerksicherheit. Kapitel 4: Hacking Windows 95/98 und ich. Aber darum geht es in diesem Artikel nicht.

Ich hĂ€tte nie gedacht, dass eine solche „Unterhaltung“ im Jahr 2019 möglich ist. Die Ähnlichkeit liegt darin, dass es fĂŒr alle Neugierigen einfacher ist, nach den verfĂŒgbaren Ressourcen anderer zu suchen. Als nĂ€chstes werden wir nicht ĂŒber einen Trend sprechen, der in den letzten zwei Jahren populĂ€r war – die Suche nach öffentlich zugĂ€nglichen MongoDB- oder Elasticsearch-Datenbanken –, sondern ĂŒber einen etwas profaneren Dienst.

DarĂŒber hinaus schlage ich vor, nicht das gesamte Verfahren der Handlungen und ihren ethischen Standard zu bewerten. Ich stelle fest, dass dieser Beitrag kein Aufruf zum Handeln ist, der auf einige Artikel des Strafgesetzbuchs der Russischen Föderation oder Ă€hnliche Normen aus der Gesetzgebung zurĂŒckgefĂŒhrt werden kann andere Staaten.

Netzwerkdateisystem (NFS)

Netzwerkdateisystem (NFS) — ein Protokoll fĂŒr den Netzwerkzugriff auf Dateisysteme, das die Verbindung (Mountierung) entfernter Dateisysteme ĂŒber das Netzwerk ermöglicht, Benutzern den Zugriff auf Dateien ermöglicht und die Arbeit mit diesen Dateien auf die gleiche Weise wie mit lokalen Dateien ermöglicht.

Die meisten Network-Attached Storage (NAS) auf dem Markt unterstĂŒtzen natĂŒrlich NFS und ermöglichen den Zugriff auf lokale Ressourcen sowie auf jeden Server mit einem Betriebssystem, auf dem der NFS-Dienst bereitgestellt werden kann.

Einstellungen fĂŒr den Zugriff auf Serverressourcen von jedem Betriebssystem aus Ubuntu und die IP-Adresse 192.168.1.1 sind in der Datei /etc/exports enthalten und sind EintrĂ€ge des folgenden Typs:

  • /data/place1 192.168.1.0/255.255.255.0(rw,no_subtree_check,nohide,async) 192.168.101.0/255.255.255.0(rw,no_subtree_check,nohide,async)
  • data/place2 192.168.1.0/255.255.255.0(rw,no_subtree_check,nohide,async) 192.168.101.0/255.255.255.0(rw,no_subtree_check,nohide,async)

In diesem Fall ist der Zugriff ĂŒber NFS auf den Server und seine Ressource /data/place1 fĂŒr Clients mit IP-Adressen aus den Netzwerken 192.168.1.0/255.255.255.0, 192.168.101.0/255.255.255.0 möglich.

Mounten Sie eine Remote-Ressource in ein lokales Verzeichnis, zum Beispiel /home/user/example, wenn sich der Client in einem zulĂ€ssigen Subnetz befindet und der Client fĂŒr NFS installiert ist, möglicherweise mithilfe des Befehls (Ubuntu):
mount -t nfs 192.168.1.1:/data/place1 /home/user/example

Wenn * oder (everyone) anstelle von IP-Adressen angegeben wird, kann hÀufig jeder Client eine Remote-Ressource auf seinem System bereitstellen.

An den Benutzer (zum Beispiel unter UbuntuGeben Sie einfach im Terminal Folgendes ein: showmount -e ip-target und Sie erhalten Informationen ĂŒber die auf dem Server verfĂŒgbaren Ressourcen (die Exportliste des Servers).

Zum Beispiel:
showmount -e 81.24.ЄЄЄ.ЄЄЄ
Export list for 81.24.ЄЄЄ.ЄЄЄ:
/home/admin 192.168.52.1/24

Somit entsteht das folgende Szenario: Server mit einem laufenden NFS-Dienst erkennen, die verfĂŒgbaren Ressourcen auf den Servern ermitteln, das Ergebnis in einer einzigen Ausgabeform konsolidieren und dann entsprechend der Situation handeln.

Was kann auf den Ressourcen stehen – natĂŒrlich alles:

  • persönliche Dateien von Internetnutzern, beispielsweise bei „offenen“ NAS-GerĂ€ten;
  • Verzeichnisse mit Dateien ganzer Unternehmen, Datenbanken, Datenbankarchive;
  • oft Verzeichnisse mit /home/*-Adressen (manchmal mit SchlĂŒsseln in .ssh und beschreibbar);
  • Verzeichnisse mit VideoĂŒberwachungssystemdateien;
  • andere...

Beziehen von IP-Adressen

Hinsichtlich der Erkennung von Servern mit NFS-Dienst im globalen Internet gibt es zwei Möglichkeiten: unabhĂ€ngig, mithilfe verschiedener Tools und vorgefertigter Scanergebnisse, Datenbanken und Dienste von Drittanbietern. TatsĂ€chlich kommt es darauf an, eine Liste der IP-Adressen zu erhalten. In einem lokalen Netzwerk halte ich es fĂŒr naheliegend, unabhĂ€ngig zu agieren.

Offene TCP-Ports 111, 2049 können ein Hinweis auf die FunktionsfÀhigkeit des NFS-Dienstes sein.
Um unabhĂ€ngig eine Liste der Server-IP-Adressen zu erhalten, scannen Sie einfach einen Adressbereich oder ganze Subnetze auf das Vorhandensein der angegebenen offenen Ports. DafĂŒr eignet sich jedes Tool: nmap, masscan und so weiter.

Zum Beispiel durch den Befehl masscan -p111,2049 200.26.1XX.0/24 —rate=10000 In wenigen Sekunden wird das Netzwerk 200.26.1XX.0/24 nach offenen Ports 111, 2049 durchsucht:
Scanning 256 hosts [2 ports/host]
Discovered open port 2049/tcp on 200.26.1XX.28
Discovered open port 111/tcp on 200.26.1XX.15
Discovered open port 111/tcp on 200.26.1XX.20
Discovered open port 111/tcp on 200.26.1XX.28
Anschließend können Sie den Befehl auf jede der erkannten IP-Adressen anwenden:
showmount --no-headers -e 200.26.1XX.28
Ergebnis:
/usr/common *
NatĂŒrlich ist es möglich, Millionen von IP-Adressen im Internet selbst zu scannen, aber das ist nicht der schnellste Weg, und dann kann ein wunderbarer Dienst die Lösung fĂŒr die Teilaufgabe sein Shodan, es gibt natĂŒrlich noch andere, aber dieser ist sehr praktisch Syntax Đž API. Der Zweck dieses Artikels besteht nicht darin, nĂ€her auf die Beschreibung der LeistungsfĂ€higkeit des Dienstes einzugehen. Kurz gesagt bietet der Dienst eine erweiterte Suche nach GerĂ€ten, die mit dem Internet verbunden sind. Suchkriterien können Netzwerkkennungen und andere Metadaten sein: Seriennummern von Zertifikaten und dergleichen. Shodan verfĂŒgt ĂŒber viele gezielte Suchfunktionen, aber ich habe keine separate Suche fĂŒr NFS gefunden, da es beispielsweise ein Produktkriterium gibt, das den Produktnamen angibt: Mongodb, Elastic oder Apache. Daher ist es ĂŒber Web NFS möglich, nach den folgenden Abfragen zu suchen: nfs, tcp 2049, tcp 111, Portmap:2049 und so weiter, wie Sie möchten.

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Oder installieren Sie den Shodan-Client (CLI), initialisieren Sie Ihren API-SCHLÜSSEL fĂŒr den Dienst und rufen Sie die Suche ĂŒber die Befehlszeile auf, zum Beispiel:

  1. shodan search –fields ip_str,port Portmap:2049
  2. Shodan-Suche – Felder ip_str, Port – Trennzeichen, NFS
    Ergebnis:
    139.196.154.23,111,
    198.27.116.37,111,
    95.211.192.96,111,
    80.23.66.122,111,
    210.116.82.97,111,
    192.198.82.3,111,
    165.227.67.242,111,
    116.12.48.9,111,
    85.34.250.102,111,
    182.75.249.197,111,
    192.151.212.175,111,
    119.216.107.127,111,
    217.59.68.2,111,
    178.159.12.97,111,
    ...

Es ist also klar, wie man Listen mit IP-Adressen von GerÀten mit einem aktiven NFS-Dienst erhÀlt.

Erhalten Sie Informationen zu verfĂŒgbaren NFS-Dienstressourcen auf bestimmten Servern.

Es gibt viele Möglichkeiten, dieses Problem massenhaft zu lösen: Schreiben Sie Bash-Skripte, organisieren Sie eine knifflige Pipeline aus einer Befehlskette mit einem Aufruf von showmount und anderen Optionen – was auch immer Sie möchten.

Im Rahmen meiner Recherche habe ich dieses Problem in Python mit zwei verschiedenen Methoden gelöst. Die erste Methode bestand darin, mich per SSH mit meinem persönlichen Server zu verbinden. Ubuntu Mit einem NFS-Client kann man anschließend den Befehl `showmount` mit dem gewĂŒnschten IP-Adresspool aufrufen. Die zweite Lösung ist in reinem Python implementiert.

Ich nehme an, dass sich die Frage stellen könnte: Warum ist es so schwierig, warum in Python?

Denn wie in meinem vorherigen Artikel ĂŒber Habr werde ich das Lampyre-Tool verwenden, das am 26. Februar veröffentlicht wurde API, mit dem Sie Ihre eigenen Module fĂŒr die Plattform in Python schreiben können.

Lampyre

Kurz zu Lampyre – einer Softwareplattform fĂŒr OSINT und Datenanalyse mit einem umfangreichen Client fĂŒr WindowsLampyre ist ein Analogon zum bekannten und beliebten Tool Maltego fĂŒr Ă€hnliche Zwecke. Wie Maltego bietet auch Lampyre standardmĂ€ĂŸig eine Reihe von Abfragen fĂŒr verschiedene Dienste. Diese Abfragen entsprechen konzeptionell den Transformationen des bekannteren Produkts. Sollte eine Abfrage fehlen, können Sie eigene Abfragen erstellen. Die mit Lampyre mitgelieferten Abfragen werden auf der Infrastruktur der Plattform ausgefĂŒhrt, wĂ€hrend selbst erstellte Abfragen lokal auf dem Rechner des Benutzers ausgefĂŒhrt werden. Dies setzt voraus, dass Python und alle im Code verwendeten Bibliotheken installiert sind.

Ich habe beschlossen, die API-Funktionen zu testen. Der entscheidende Punkt ist, dass Lampyre bereits mehrere „Anfragen“ an Shodan hat, insbesondere da der Benutzer keinen eigenen API-SCHLÜSSEL vom Dienst benötigen muss. So können Sie mit einer Anfrage Listen von IP-Adressen mit aktiviertem NFS-Dienst erhalten, und mit der zweiten Anfrage prĂŒft das von mir geschriebene Modul die verfĂŒgbaren Ressourcen und visualisiert das Ergebnis mit den Eigenschaften der Ressourcen im selben Diagramm.

Was hat Korea damit zu tun?

WĂ€hrend der Suche von Shodan und dem Testen des Moduls wurde es interessant zu sehen, wie sich die QualitĂ€t und QuantitĂ€t der Scanergebnisse des Shodan-Dienstes in asiatischen LĂ€ndern verhĂ€lt und wie es um ungeschĂŒtzte Ressourcen steht. Die Wahl fiel auf die Republik Korea. Ich denke, dass SĂŒdkorea ein sehr technologisch entwickeltes Land ist, und ich bin davon ausgegangen, dass in seinen Netzwerken etwas Interessantes zu finden ist.

Suche nach Shodan, in der Suchanfrage: NFS, im Land: Code der Republik Korea, kr

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Das Ergebnis ließ nicht lange auf sich warten (das Bild unten zeigt nur einen Teil des allgemeinen Schemas).

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Hostliste:

  • psi.kaist.ac.kr
  • hulk.kaist.ac.kr
  • messi.kaist.ac.kr
  • marvel.kaist.ac.kr
  • kaist.ac.kr
  • ai1.kaist.ac.kr
  • jarvis3.kaist.ac.kr
  • baraddur.kaist.ac.kr
  • rho.kaist.ac.kr
  • jarvis.kaist.ac.kr

Alle von ihnen sind, wie sowohl in der Grafik als auch anhand ihrer Namen zu sehen ist, als AS1781 aufgefĂŒhrt - Korea Advanced Institute fĂŒr Wissenschaft und Technologie

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Korea Institute of Advanced Technology ist eine fĂŒhrende Lehr- und ForschungsuniversitĂ€t in SĂŒdkorea mit Sitz in Daejeon und belegt landesweit den zweiten Platz in SĂŒdkorea. Die UniversitĂ€t gehört durchweg zu den besten 5 % der Bildungseinrichtungen in SĂŒdkorea.

Wir verwenden die angegebenen IP-Adressen als Eingabeargumente fĂŒr das geschriebene Modul „Explore: NFS(SSH)“ und als Ergebnis:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Ich habe schnell ein Schema zum Anzeigen von Tabellenergebnissen in einem Diagramm zusammengestellt (mehr zu Schemata und Prinzipien zum Erstellen von Diagrammen spÀter in diesem Artikel).

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Ergebnis der ZusammenfĂŒhrung mit dem Shodan-Schema

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Bei der Analyse der Eckpunkte und Verbindungen des Diagramms wird deutlich, an welchen Adressen sich die /home-Ressource befindet, auf die jeder zugreifen kann (*).

FĂŒr eine bessere visuelle Wahrnehmung Ă€ndern wir die Eigenschaften von Diagrammobjekten und andere Diagrammeinstellungen:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

NatĂŒrlich habe ich einige der Ressourcen einzeln auf einem meiner Server bereitgestellt und mit dem Lernen begonnen. Es stellte sich heraus, dass es ĂŒberall fast gleich war - Benutzerverzeichnisse: asm, hoo, hyshin, jay, jiwon, jkhee110, jokangjin, kmh603, ksm782, lee, linus, lost+found, marvel_guest, pie, qwe, scloud, seokmin, sgim , thrlek, yoosj, ysha, zinnia7.

Fast alle Verzeichnisse mit Dateien waren lesend und schreibend zugĂ€nglich. Einige Benutzer verfĂŒgten ĂŒber beschreibbare „authorized_keys“-Dateien in ihrer .ssh-Datei.

Ich habe meinen SchlĂŒssel generiert, ihn in die „authorized_keys“ eines der Benutzer kopiert und ĂŒber SSH auf Port 2222, der Portnummer, die ich aus Daten von Shodan erhalten habe, eine Verbindung zum Server hergestellt.

Benutzer, Netzwerkeinstellungen:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Hosts im Netzwerk:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

/etc/exports Datei und Laufwerke:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Datei /etc/fstab und Betriebssystem:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Ich glaube, dass dies ein Netzwerk einer Abteilung fĂŒr Doktoranden oder Studenten ist und auf den Servern einige ihrer eigenen Berechnungen durchgefĂŒhrt werden, da es in Python viele verschiedene Quellen gibt, die mit der GPU und der Anaconda-Distribution zu tun haben bald. Ich habe nicht alles studiert und angefangen, darĂŒber nachzudenken, was ich damit machen soll. NatĂŒrlich konnte ich die meisten Knoten „durchgehen“.(Vielleicht fĂ€llt dir etwas Exotischeres ein), aber es hat bei mir kein besonderes Interesse geweckt. Und mir kam folgende Idee: Da das Institut wissenschaftlich und fortschrittlich ist, sollte es Anweisungen zur Informationssicherheit geben. TatsĂ€chlich sogar ein ganzes Labor: Software-Sicherheitslabor und ihr AnfĂŒhrer Sang Kil Cha
Ich beschloss, ihm einen Brief zu schreiben, in dem ich dies und das sagte. Es ist sehr gefĂ€hrlich, jedem im Internet zu erlauben, NFS-Ressourcen mit Lese- und Schreibrechten zu verbinden. Anscheinend mĂŒssen Sie etwas reparieren. Ich habe Screenshots angehĂ€ngt und sie gesendet.

Brief 1

Lieber Sang Kil Cha,
Ich schreibe Ihnen, da Sie auf der Website kaist.ac.kr als das fĂŒhrende SoftSec-Labor bei KAIST bezeichnet werden, und ich glaube, dass die folgende Angelegenheit Sie beschĂ€ftigt.
Bei unserer Recherche im Bereich Informationssicherheit wurden unbeabsichtigt und zufÀllig folgende Server entdeckt:
143.248.247.131 - psi.kaist.ac.kr
143.248.247.4 – jarvis3.kaist.ac.kr
143.248.247.169
143.248.247.223
143.248.247.235
143.248.247.251 – marvel.kaist.ac.kr
143.248.247.239 – jarvis.kaist.ac.kr
143.248.247.194 – hulk.kaist.ac.kr
143.248.2.23
Auf allen diesen Servern ist der NFS-Dienst (Network File System) aktiv.
Das Sicherheitsniveau des Zugriffs auf diese Server ist unglaublich niedrig.
Auf die Home-Verzeichnisse dieser Server mit all ihren Inhalten kann jeder zugreifen, der das Internet nutzt.
Zum Beispiel die Einstellungen nfs – /etc/exports 143.248.247.251 – >/home oder fĂŒr 143.248.247.239
showmount -e 143.248.247.239
Exportliste fĂŒr 143.248.247.239:
/Daten

/ Home /appl
Benutzerverzeichnisse der meisten Server sind zum Lesen und Schreiben zugĂ€nglich, einschließlich ihrer Unterverzeichnisse, die öffentliche und private SSH-ZugriffsschlĂŒssel enthalten.
Durch das Bearbeiten von Dateien können neue ZugriffsschlĂŒssel hinzugefĂŒgt und Remote-SSH-Zugriff auf die Server und dann auf einige innere KAIST-Subnetze erhalten werden.
Einzig zu Testzwecken wurde ein solch flacher Zugang erlangt, es wurden keine Änderungen vorgenommen, keine Daten bearbeitet, kopiert oder gelöscht, es wurde kein Schaden an der Infrastruktur angerichtet.
Bitte sehen Sie sich die beigefĂŒgten Dateien an, um eine BestĂ€tigung und einen Nachweis zu erhalten.
Ich habe keine Anforderungen oder AnsprĂŒche, empfehle jedoch eine deutliche Verbesserung Ihres Netzwerksicherheitsniveaus.

Bald antworteten sie mir, kostenlose Übersetzung: Vielen Dank, wir leiten es an die richtige Person weiter.

Beantworten Sie 1

Vielen Dank fĂŒr den Hinweis! Ich werde diese E-Mail an jemanden weiterleiten, der fĂŒr unser Netzwerk und unsere Sicherheit verantwortlich ist. Beste GrĂŒĂŸe, Sang Kil

Bevor ich diesen Artikel veröffentlichte, beschloss ich, zu ĂŒberprĂŒfen, was sich geĂ€ndert hatte:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

TatsĂ€chlich war der Zugriff auf Ressourcen nur von Maschinen im internen Netzwerk erlaubt, aber was ist mit dem Server 143.248.247.251? GemĂ€ĂŸ den EintrĂ€gen in der Tabelle fĂŒr Host-Ressourcen in den NFS-Einstellungen bleibt * gleich. Ich habe eine weitere Möglichkeit skizziert, die Tabelle in ein Diagramm zu „abbilden“:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Was sind die Änderungen beim „Mapping“: NFS-Objekte werden jetzt mit zwei identischen Attributen „zusammengeklebt“ – IP und NFS-Pfad. Das Statusobjekt wird nur erstellt, wenn das Value-Attribut, das den Inhalt der Rohdatensatzspalte enthĂ€lt, den Wert „*«
Und die Grafik aus der Tabelle erscheint in neuer Form:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Nun ist ĂŒbrigens die Adressierung des internen Netzwerks deutlich sichtbar geworden und auf dem Server 143.248.247.251 ist es auch möglich, die Inhalte von Benutzerverzeichnissen und Dateien zu bearbeiten; Im Prinzip bleiben die Möglichkeiten die gleichen wie bisher.

Und so schreibe ich Herrn Sang Kil Cha einen zweiten Brief mit Àhnlichem Inhalt wie der erste und stelle fest, dass einige der Ereignisse in einem Artikel auf der beliebten Ressource habr.com beschrieben werden:

Brief 2

Lieber Sang Kil Cha, guten Tag.
Ich habe beschlossen, nachzuschauen, ob sich nach meiner E-Mail an Sie etwas geÀndert hat, und tatsÀchlich wurden die Zugriffseinstellungen geÀndert. Aber offenbar haben die Sicherheitsingenieure die IP-Adresse 143.248.247.251 weggelassen und ihre Einstellungen blieben gleich. Bitte sichern Sie auch diese IP, damit kein Fremder darauf zugreifen kann.
Ich schreibe einen Artikel zum Thema Informationssicherheit und werde ihn unter veröffentlichen https://habr.com. Dies ist eine sehr beliebte Website in Russland. Der Artikel enthĂ€lt einige Passagen zum Thema schlechte QualitĂ€t der NFS-Zugriffseinstellungen sowie einige Beispiele fĂŒr den Fall Ihrer Server. Ich werde Ihnen den Link zu meinem Artikel senden, sobald er veröffentlicht wird.

So verwenden Sie die Lampyre-API und schreiben Ihr eigenes Modul

Das Modul muss als Eingabe eine Liste von IP-Adressen oder eine Liste von Subnetzen in der Form 192.168.0/24 akzeptieren. In dieser Phase muss die Richtigkeit der Eingabedaten fĂŒr unabhĂ€ngig im Code ĂŒberprĂŒft werden Einbeziehung von Zeichenfolgen in IP-Adressen, im Falle eines Subnetzes - Konvertierung in IP-Liste.

Der nÀchste Schritt ist die Verwendung der Python-Bibliothek paramiko kontaktiert den persönlichen SSH-Server und ruft nacheinander (es gibt einen Versuch der AsynchronitÀt im Code des Modulkonzepts) den Befehl auf:
timeout {timeouts} showmount --no-headers -e {ip}
Die Ausgabe des Ergebnisses wird durch Python-Code in eine Ausgabestruktur, eine Tabelle, analysiert: eine Liste von WörterbĂŒchern in Python.
SchlĂŒssel im Wörterbuch:

  • current_day – Datum der Benutzeranfrage
  • host_query – IP, ĂŒber die wir Informationen erhalten
  • shared_path – NFS-Ressource
  • status_ip – Informationen ĂŒber die Zugriffsmöglichkeiten auf die Ressource; wenn IP-Adressen durch „“, getrennt“ aufgefĂŒhrt sind, wird die Wörterbuchzeichenfolge in der Liste dupliziert.

Als nĂ€chstes wird gemĂ€ĂŸ dem Konzept ein einfacher Versuch unternommen, den Wert des status_ip-SchlĂŒssels nach folgenden Werten zu analysieren: IP-Adresse, Host-Datensatz, „*“- oder „everyone“-Werte

Laut der Dokumentation fĂŒr API und ErklĂ€rungen vom Support Lampyre.io – jedes Modul muss Daten an eine oder mehrere Tabellen zurĂŒckgeben, aber die Tabelle muss innerhalb der API beschrieben werden (Aufgabenköpfe, Tabellenkopf). TatsĂ€chlich ist dies das Hauptergebnis des Moduls.
Somit wird das Endergebnis unter BerĂŒcksichtigung der WörterbuchschlĂŒssel eine Tabelle sein:

class NFSHeader(metaclass=Header):
    display_name = 'Search data from NFS services'

    current_day = Field('Date', ValueType.Datetime)
    host_query = Field('Search ip', ValueType.String)
    shared_path = Field('NFS path', ValueType.String)
    ip = Field('ip address', ValueType.String)
    network = Field('network address', ValueType.String)
    host = Field('host', ValueType.String)
    status = Field('raw record', ValueType.String)

Die Tabelle enthĂ€lt (leicht geĂ€nderte) Werte aus der Analyse des Ergebnisses der AusfĂŒhrung des Befehls showmount auf dem Server. Die Namen der Klassenfelder sprechen fĂŒr sich; in der Rohdatenspalte werden Informationen ĂŒber die Zugriffsmöglichkeiten auf die Ressource gespeichert. Eine solche Analyse von Daten ĂŒber NFS-Ressourcen kann gewissermaßen als OSINT betrachtet werden; Informationen ĂŒber den möglichen Zugriff von verschiedenen IP-Adressen geben einen Einblick in die EigentĂŒmer der Ressource oder die Adressierung innerhalb des Netzwerks der Ressource. Beispielsweise befindet sich die IP-Adresse des Servers mit dem NFS-Dienst in der Ukraine und die fĂŒr den Zugriff zugelassene IP-Adresse in Deutschland:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Und wenn wir das Studium dieses Beispiels erweitern, dann gibt es eine BestĂ€tigung der Verbindung der Server nicht nur ĂŒber NFS, sondern auch ĂŒber ein Zertifikat an den Adressen: 77.120.103.9, 138.201.202.135 und die DomĂ€ne *.aniart.com. ua:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

So ĂŒbergeben Sie Daten an ein Modul und schreiben in eine Tabelle:
Aus der Task-Klasse wird eine benutzerdefinierte SearchDataNFS-Klasse erstellt:

class SearchDataNFS(Task)

In der Methode get_id Gibt eine eindeutige zufĂ€llige UUID zurĂŒck:

def get_id(self):
    return 'bf51fd57-3fec-4416-9d07-905935a484b4'

In der Methode get_display_name Wir geben an, wie die Aufgabe heißen wird, und zwar in der Methode get_description, entsprechend dem Namen, der Beschreibung der Aufgabe:

def get_display_name(self):
    return 'Explore: NFS(SSH)'

def get_description(self):
    return 'Explore NFS resourses'

In der Methode get_headers Wir geben an, welche Tabellen wir verwenden werden:

def get_headers(self):
    return NFSHeader

Verfahren get_enter_params bestimmt das Aussehen des Eingabedateneingabefensters. Aus dem Code ist ersichtlich, dass es sich bei der Eingabe um eine Liste von Zeichenfolgen handelt, die spÀter unabhÀngig voneinander in IP-Adressen umgewandelt werden:

def get_enter_params(self):
    ep_coll = EnterParamCollection()
    ep_coll.add_enter_param('ips', 'IP', ValueType.String, is_array=True, 
                            value_sources=[Attributes.System.IPAddress], 
                            description='IPs, networks')
    return ep_coll

In der Methode ausfĂŒhren Die HauptausfĂŒhrung der Aufgabe erfolgt:

ips = []
for input_ip in set(map(lambda z: z.strip(), enter_params.ips)):
    ips.extend(reparse_ip_hosts(input_ip))

Der Zugriff auf Eingabeparameter erfolgt ĂŒber enter_params.ips. In der Methode reparse_ip_hosts — Es erfolgt eine unabhĂ€ngig implementierte Validierung von Zeichenfolgen in IP-Adressen.

targets = ((ip, port) for ip in ips for port in ports)
lines = thread_async_nfs_one_client(targets)
info = reparse_result_rows(lines)
fields_table = NFSHeader.get_fields()
for data_id in info:
    tmp = NFSHeader.create_empty()
    for field in fields_table:
        if field in data_id:
            tmp[fields_table[field]] = data_id[field]
            result_writer.write_line(tmp, header_class=NFSHeader)

In Funktion thread_async_nfs_one_client Mit SSH wird eine Verbindung zum Server hergestellt (IP-Adresse, Login und Passwort sind fest codiert) und Showmount wird ausgefĂŒhrt, wie ich bereits angedeutet habe. Das Ergebnis wird analysiert und dann in die Funktion ĂŒbernommen reparse_result_rows es wird noch einmal geĂ€ndert. Es ist wichtig zu beachten, dass es sich bei info um eine Liste bestehend aus WörterbĂŒchern handelt. In jedem Wörterbuch werden die SchlĂŒssel als Felder der NFSHeader-Klasse benannt. Das heißt, das Wörterbuch sieht so aus:

{
    'current_day': datetime.datetime(2019, 3, 6, 16, 48, 17), 
    'host_query': '192.168.1.1',
    'shared_path': '/volume1/workspace',
    'ip': '192.168.10.10',
    'network': '',
    'host': '',
    'status': '192.168.10.10'
}

Es ist wichtig, die Datentypen im Wörterbuch zu beachten; sie mĂŒssen mit denen in der Tabellenbeschreibung ĂŒbereinstimmen.
Als nĂ€chstes durchlĂ€uft die Schleife die Elemente der Liste und schreibt sie ĂŒber die API-Methode (result_writer.write_line) zu einer bestimmten NFSHeader-Tabelle.
FĂŒr eine detailliertere Beschreibung lesen Sie bitte die Dokumentation.
Im Prinzip ist das Modul bereits bereit, zu Lampyre hinzugefĂŒgt zu werden.

Verwendung Ihres Moduls in Lampyre

Da ich SSH verwende und den Befehl `showmount` ausfĂŒhre, benötigen Sie SSH-Zugriff auf Ihren Server. FĂŒr meine Tests habe ich eine virtuelle Maschine in VirtualBox verwendet. Ubuntu und ein darauf installierter NFS-Client.

Um mit eigenen Modulen auf dem Rechner des Benutzers arbeiten zu können, ist Python 3.6 erforderlich, der Pfad zum Interpreter muss in den Systemvariablen stehen, bzw. der Pfad dorthin muss in der Datei angegeben werden LampyreconfigappSettings.config. StandardmĂ€ĂŸig ist der SchlĂŒssel pythonPath in den Einstellungen auskommentiert.

Das Laden eines Moduls in Lampyre erfolgt in folgenden Schritten:

  1. Laden Sie im Fenster „Skripte“ die Datei Lampyreuser_tasksontology.py (im Lieferumfang der Anwendung enthalten).
  2. Laden Sie im selben Fenster Ihr Modul, in diesem Fall nfs_via_ssh.py. Wenn etwas schief geht, sollte der Button helfen Details
  3. Nach dem Laden im Fenster Liste der Anfragen in der Registerkarte Aufgaben Der Abschnitt wird angezeigt Lokale Aufgaben (im Modulcode hĂ€tte es auch anders heißen können), darin der Name Entdecken:NFS(SSH):

    So besuchen Sie eine koreanische UniversitÀt mit dem Network File System
    Aktualisiertes Fenster „Liste der Anfragen“:

    So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

  4. IP-Adressen von Servern mit NFS erhĂ€lt man, wie bereits erwĂ€hnt, am besten, indem man zunĂ€chst eine Anfrage ausfĂŒhrt Shodan-Suche mit Parametern Abfrage: TCP 2049 (Sie können einfach angeben NFS). Parameter Seite oder Bereich, standardmĂ€ĂŸig auf 1 gesetzt, bedeutet, dass 1 Seite mit Antworten vom Shodan-Dienst zurĂŒckgegeben wird, 1 Seite hat normalerweise 100 Ergebnisse (Zeilen).
    Ergebnis der Shodan-Hinrichtung:

    So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

  5. Kopieren Sie IP-Adressen aus einer Tabelle oder einem Diagramm in die Zwischenablage und fĂŒgen Sie sie in das Modulfenster „IP Explore:NFS(SSH)“ ein. FĂŒhren Sie es aus und warten Sie auf das Ergebnis:

    So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

NatĂŒrlich ist es notwendig, sowohl die Bandbreite Ihrer eigenen und fremden Server als auch das Timeout zu berĂŒcksichtigen, das im Modulcode fest codiert ist.

Das Ergebnis wird in Form einer Tabelle erhalten, Sie können jedoch fortfahren und das Ergebnis der Tabelle mit dem Ergebnisdiagramm der AusfĂŒhrung der Shodan-Suche kombinieren. Das wird zunĂ€chst etwas schwer zu verstehen sein.

Visualisierung einer Tabelle mit dem Ergebnis

Fangen wir an. Es gibt eine Tabelle mit einer Reihe von Spalten mit Werten aus der AusfĂŒhrung des Benutzermoduls. Wenn Sie jedoch auf die SchaltflĂ€che „Schema“ im Fenster „Anfragen“ achten, ist sie inaktiv. Denn die Zuordnung einer Tabelle zu einem Diagramm ist nicht spezifiziert und muss spezifiziert werden.

Schema 1 (nicht das beste)
Wenn die Tabelle aus dem Modulergebnis geöffnet ist, befindet sich in der unteren rechten Ecke ein OberflĂ€chenelement „Erstellungsvorlage hinzufĂŒgen“, durch Anklicken erscheint das Fenster „Erstellungsvorlage“. Hier können Sie die Zuordnung von Tabellenzeilen zu Diagrammobjekten festlegen. Ich werde den Vorgang im Artikel nicht im Detail beschreiben, folgen Sie dem Link zu Plattformkanal Youtube zeigt, wie das geht, fĂŒr die Zwecke dieses Artikels beschrĂ€nke ich mich auf Bilder dessen, was passieren sollte:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Vorlage fĂŒr die Grafik:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Es ist wichtig zu beachten, dass die IP- und DomĂ€nenobjekte in Lampyre verfĂŒgbar sind und ich die NFS- und Netzwerkobjekte erstellt habe. Jedes Objekt verfĂŒgt ĂŒber Attribute, denen der Benutzer die Tabellenspalten „zuordnet“. DarĂŒber hinaus kann ein Objekt mehrere Attribute haben, von denen einige – nach denen die Scheitelpunkte im Diagramm „zusammengeklebt“ werden sollen – entscheidend sind, andere – fĂŒr die Anzeige der Namen der Scheitelpunktobjekte des Diagramms können dies sein gleiche Attribute oder völlig unterschiedliche. FĂŒr ein NFS-Objekt wurden beispielsweise zwei Attribute erstellt: NFS-Pfad und Status. Das SchlĂŒsselattribut ist NFS-Pfad. Sie können einem Objekt Ihr eigenes Symbol zuweisen, indem Sie rechts auf das Bild des Objekts klicken. Nach Abschluss der „Zuordnung“ der Spalten zu Objektattributen können Sie ein Diagramm erstellen – die oben erwĂ€hnte SchaltflĂ€che Schema wird aktiv.
Vorlage fehlt:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Die Vorlage fĂŒr die Grafik auf Basis der Tabelle besteht aus:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Im Allgemeinen gibt es diesen Ansatz zum „Zuordnen“ von Werten aus Tabellenspalten und -zeilen in Diagrammobjekte auch in einer anderen Anwendung – i2 (IBM i2 Analystennotizbuch):

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Nach der Visualisierung des Diagramms einer solchen „Zuordnung“ wird klar, dass dies nicht die beste Option ist: Sie können die Beziehung der IP-Adresse des Servers zu den IP-Adressen und Hosts sehen, von denen aus der Zugriff möglich ist, sowie die verfĂŒgbaren NFS-Ressourcen auf dem Server Server, aber auf unterschiedliche Ressourcen kann von unterschiedlichen IPs aus zugegriffen werden. Daher erstellen wir ein weiteres Schema (fĂŒr jede Tabelle können Sie viele Schemata erstellen).

2-Schema

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Schon besser. Alles passt zusammen – auf welchem ​​Server sich Ressourcen befinden und von welchen IP-Adressen aus auf sie zugegriffen werden kann:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Diese Möglichkeit, eine Diagrammvorlage aus einer Tabelle zu erstellen, ist nur dann praktisch, wenn Sie nicht sehr oft mit Ihrem eigenen Modul arbeiten mĂŒssen oder wenn Sie Textdateien (CSV) in die Anwendung importieren. Tatsache ist, dass das so erstellte „Mapping“ nur im Rahmen der laufenden Ermittlungen gespeichert wird. Nach dem Erstellen einer neuen „Untersuchung“ wird das Modul gespeichert und mit der resultierenden Tabelle ausgefĂŒhrt, das Diagramm wird jedoch nicht gespeichert und muss erneut erstellt werden.

Um die Ergebnisse einer Shodan- und NFS-Suche zu kombinieren, mĂŒssen Sie das Shodan-Suchschema öffnen, die SchaltflĂ€che „Zur aktiven Registerkarte hinzufĂŒgen“ aktivieren und das Ergebnis unseres Moduls auf derselben Registerkarte platzieren – die Schemata werden kombiniert:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Kombinierte Systeme:

So besuchen Sie eine koreanische UniversitÀt mit dem Network File System

Modulcode fĂŒr Lampyre ist verfĂŒgbargibt es auch die zweite Version des Moduls ohne Verwendung einer SSH-Verbindung.

Anstatt eine Schlussfolgerung zu ziehen, liebe Kollegen, ĂŒberprĂŒfen Sie regelmĂ€ĂŸig die Richtigkeit Ihrer NFS-Einstellungen und mehr.

Source: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster