Come visitare un'università coreana utilizzando il file system di rete

Come visitare un'università coreana utilizzando il file system di rete

prefazione

Molto tempo fa, all'inizio degli anni 2000, molte persone si divertivano a "scansionare" regolarmente le reti del proprio fornitore, e talvolta anche obiettivi più distanti, alla ricerca di rilevamenti. Windows Macchine e risorse su di esse (SMB), accessibili in lettura (scrittura). Il processo di ricerca era primitivo: veniva specificato un intervallo di indirizzi IP o una maschera di rete e venivano utilizzati vari strumenti, come LANguard Network Scanner, xIntruder e simili, per scansionare gli indirizzi e trovare i server. Spesso, varie risorse di rete (unità, stampanti, directory) erano accessibili in lettura e, meno spesso, in scrittura sulle macchine scoperte. Attraverso una sessione anonima utilizzando IPC$ e l'utente "Guest", era possibile enumerare le risorse sulla macchina; a volte venivano trovati membri "Administrators" senza password e a volte, dopo un intervento più "attivo" in relazione alle macchine scoperte, era possibile trovare server con il sistema operativo Windows NT 4.0 o Windows Server 2000. Se foste stati abbastanza fortunati da trovare macchine con il sistema allora comune Windows 98, è diventato più facile: a quel tempo, il sistema operativo conteneva numerose vulnerabilità, anche nell'implementazione di SMB. Gli attacchi di forza bruta per ottenere l'accesso a una risorsa potevano essere completati in pochi minuti, anche su connessioni dial-up. Per coloro che vogliono approfondire il passato, ecco una descrizione dettagliata dell'"accesso" a Windows 9 volte — Hacking svelato: segreti e soluzioni per la sicurezza di rete. Capitolo 4: Hacking Windows 95/98 e io. Ma non è di questo che tratta questo articolo.

Non avrei mai pensato che un simile “intrattenimento” fosse possibile nel 2019. La somiglianza sta nella facilità di ricerca delle risorse disponibili di altre persone per tutti coloro che sono curiosi. Successivamente, non parleremo di una tendenza che è stata popolare negli ultimi 2 anni - la ricerca di database MongoDB o Elasticsearch accessibili al pubblico - ma di un servizio un po' più banale.

Inoltre, propongo di non valutare l'intera procedura delle azioni, il loro standard etico; noto che questo post non è un invito all'azione che può essere attribuito ad alcuni articoli del codice penale della Federazione Russa o norme simili della legislazione di altri stati.

File system di rete (NFS)

File system di rete (NFS) — un protocollo per l'accesso in rete ai file system, consente di connettere (montare) file system remoti tramite la rete, fornisce agli utenti l'accesso ai file e consente di lavorare con questi file allo stesso modo di quelli locali.

La maggior parte dei NAS (Network-attached storage) sul mercato, ovviamente, supportano NFS e forniscono accesso alle risorse locali, nonché a qualsiasi server con un sistema operativo su cui è possibile implementare il servizio NFS.

Impostazioni per l'accesso alle risorse del server da qualsiasi sistema operativo Ubuntu e l'indirizzo IP 192.168.1.1 sono contenuti nel file /etc/exports e sono voci del seguente tipo:

  • /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 questo caso l'accesso tramite NFS al server e alla sua risorsa /data/place1 è possibile per i client con indirizzi IP delle reti 192.168.1.0/255.255.255.0, 192.168.101.0/255.255.255.0.

Monta una risorsa remota in una directory locale, ad esempio /home/user/example, se il client si trova in una sottorete consentita e il client per NFS è installato, eventualmente utilizzando il comando (Ubuntu):
mount -t nfs 192.168.1.1:/data/place1 /home/user/example

Se viene specificato * o (tutti) al posto degli indirizzi IP, spesso qualsiasi client può montare una risorsa remota sul proprio sistema.

All'utente (ad esempio, sotto UbuntuÈ sufficiente digitare nel terminale: showmount -e ip-target per ottenere informazioni sulle risorse disponibili sul server (elenco delle risorse esportate dal server).

Per esempio:
showmount -e 81.24.ХХХ.ХХХ
Export list for 81.24.ХХХ.ХХХ:
/home/admin 192.168.52.1/24

Pertanto, si forma il seguente scenario: rilevare i server con un servizio NFS in esecuzione, determinare le risorse disponibili sui server, consolidare il risultato in un unico modulo di output e quindi agire in base alla situazione.

Cosa può esserci nelle risorse - ovviamente qualsiasi cosa:

  • file personali degli utenti Internet, ad esempio, nel caso di dispositivi NAS “aperti”;
  • directory con file di intere imprese, database, archivi di database;
  • spesso directory con indirizzi /home/* (a volte con chiavi in ​​.ssh e scrivibili);
  • directory con file del sistema di videosorveglianza;
  • altro...

Ottenere indirizzi IP

Per quanto riguarda il rilevamento di server con servizio NFS su Internet globale, esistono 2 modi: in modo indipendente, utilizzando vari strumenti e risultati di scansione, database e servizi di terze parti già pronti. In realtà, tutto si riduce a ottenere un elenco di indirizzi IP. In una rete locale, penso che l'opzione sia ovvia: agire in modo indipendente.

Le porte TCP aperte 111, 2049 possono essere la prova del funzionamento del servizio NFS.
Per ottenere in modo indipendente un elenco di indirizzi IP del server, è sufficiente scansionare un intervallo di indirizzi o un'intera sottorete per la presenza delle porte aperte specificate. Qualsiasi strumento è adatto a questo: nmap, masscan e così via.

Ad esempio, dal comando masscan -p111,2049 200.26.1XX.0/24 —rate=10000 In pochi secondi, la rete 200.26.1XX.0/24 verrà scansionata per le porte aperte 111, 2049:
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
Quindi puoi applicare il comando a ciascuno degli indirizzi IP rilevati:
showmount --no-headers -e 200.26.1XX.28
Il risultato:
/usr/common *
Ovviamente è possibile scansionare da soli milioni di indirizzi IP su Internet, ma questo non è il modo più veloce, e quindi un servizio meraviglioso può essere la soluzione al problema secondario Shodan, ce ne sono ovviamente altri, ma questo è molto conveniente sintassi и API. Non è scopo dell'articolo approfondire la descrizione delle capacità del servizio. In breve, il servizio prevede una ricerca avanzata dei dispositivi connessi a Internet. I criteri di ricerca possono essere identificatori di rete e altri metadati: numeri di serie dei certificati e simili. Shodan ha molte funzionalità di ricerca mirata, ma non ho trovato una ricerca separata per NFS, poiché, ad esempio, esiste un criterio di prodotto che indica il nome del prodotto: mongodb, elastico o apache. Pertanto tramite Web NFS è possibile ricercare le seguenti query: nfs, tcp 2049, tcp 111, Mappa del porto:2049 e così via, come preferisci.

Come visitare un'università coreana utilizzando il file system di rete

Oppure installa il client Shodan (CLI), inizializza la tua API KEY sul servizio e richiama la ricerca dalla riga di comando, ad esempio:

  1. shodan search –fields ip_str,port Portmap:2049
  2. shodan search —fields ip_str,port —separator, nfs
    Il risultato:
    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
    ...

Quindi è chiaro come ottenere elenchi di indirizzi IP di dispositivi con un servizio NFS attivo.

Ottieni informazioni sulle risorse del servizio NFS disponibili su server specifici.

Esistono molti modi per risolvere questo problema in massa: scrivere script bash, organizzare una pipeline complicata da una catena di comandi con una chiamata showmount e altre opzioni, qualunque cosa tu voglia.

Nella mia ricerca, ho risolto questo problema in Python, utilizzando due metodi diversi. Il primo è stato collegandomi tramite SSH al mio server personale su Ubuntu con un client NFS e quindi richiamando il comando showmount su di esso con il pool di indirizzi IP desiderato. La seconda soluzione è in puro Python.

Suppongo che possa sorgere la domanda: perché è così difficile, perché in Python?

Perché, come nel mio precedente articolo su Habr, utilizzerò lo strumento Lampyre, pubblicato il 26 febbraio API, che ti consente di scrivere i tuoi moduli per la piattaforma in Python.

Lampira

Brevemente su Lampyre - una piattaforma software per OSINT e analisi dei dati con un client "spesso" per WindowsLampyre è un analogo del noto e popolare strumento Maltego, che svolge la stessa funzione. Come Maltego, Lampyre include una serie di query predefinite per diversi servizi. Queste query sono concettualmente analoghe alle trasformazioni presenti nel prodotto più conosciuto. Se manca qualcosa, è possibile scrivere query personalizzate. Le query fornite con Lampyre vengono eseguite sull'infrastruttura della piattaforma, mentre quelle scritte autonomamente vengono eseguite sulla macchina dell'utente. Ciò significa che l'utente deve avere Python installato e tutte le librerie necessarie utilizzate nel codice.

Ho deciso di testare le funzionalità dell'API. Il punto fondamentale è che Lampyre ha già diverse “richieste” a Shodan, soprattutto perché l'utente non ha bisogno di avere una propria API KEY dal servizio. Così con una richiesta si potranno ottenere liste di indirizzi IP con il servizio NFS abilitato, e con una seconda richiesta il modulo da me scritto controllerà le risorse disponibili e visualizzerà il risultato con le caratteristiche delle risorse sullo stesso grafico.

Cosa c’entra la Corea?

Durante la ricerca da Shodan e il test del modulo è diventato interessante vedere la situazione riguardo alla qualità e alla quantità dei risultati della scansione del servizio Shodan nei paesi asiatici e come stanno le cose con le risorse non protette. La scelta è caduta sulla Repubblica di Corea, penso che non sia necessario dire che la Corea del Sud è un paese tecnologicamente molto sviluppato e ho dato per scontato che nelle sue reti si potesse trovare qualcosa di interessante.

Ricerca per Shodan, nella query: nfs, in Paese: codice Repubblica di Corea, kr

Come visitare un'università coreana utilizzando il file system di rete

Il risultato non si è fatto attendere (l'immagine sotto mostra solo una parte dello schema generale).

Come visitare un'università coreana utilizzando il file system di rete

Elenco degli ospiti:

  • 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

Tutti loro, come si può vedere sia dal grafico che dai loro nomi, sono elencati come AS1781 - Istituto avanzato di scienza e tecnologia della Corea

Come visitare un'università coreana utilizzando il file system di rete

Istituto coreano di tecnologia avanzata è una delle principali università di insegnamento e ricerca della Corea del Sud, con sede a Daejeon, ed è al secondo posto a livello nazionale in Corea del Sud. L'università è costantemente classificata tra il 5% dei migliori istituti di istruzione in Corea del Sud.

Usiamo gli indirizzi IP specificati come argomenti di input nel modulo scritto “Esplora: NFS(SSH)” e come risultato:

Come visitare un'università coreana utilizzando il file system di rete

Ho rapidamente messo insieme uno schema per visualizzare i risultati della tabella in un grafico (maggiori informazioni sugli schemi e sui principi della costruzione dei grafici più avanti nel testo dell'articolo).

Come visitare un'università coreana utilizzando il file system di rete

Risultato della fusione con lo schema Shodan

Come visitare un'università coreana utilizzando il file system di rete

Analizzando i vertici e le connessioni del grafico diventa ovvio in quali indirizzi si trova la risorsa /home, accessibile a tutti (*).

Per una migliore percezione visiva, modifichiamo le proprietà degli oggetti grafici e altre impostazioni del diagramma:

Come visitare un'università coreana utilizzando il file system di rete

Naturalmente ho montato alcune risorse una per una su uno dei miei server e ho iniziato a studiare. Ovunque si è rivelato quasi lo stesso: directory utente: asm, hoo, hyshin, jay, jiwon, jkhee110, jokangjin, kmh603, ksm782, lee, linus, Lost+found, marvel_guest, pie, qwe, scloud, seokmin, sgim , thrlek, yoosj, ysha, zinnia7.

Quasi tutte le directory con file erano accessibili in lettura e scrittura. Alcuni utenti avevano file scrivibili Authorized_Keys disponibili nel loro file .ssh.

Ho generato la mia chiave, l'ho copiata nell'authorized_keys di uno degli utenti e mi sono connesso al server tramite ssh sulla porta 2222, ho ottenuto il numero di porta dai dati di Shodan.

Utenti, impostazioni di rete:

Come visitare un'università coreana utilizzando il file system di rete

Host sulla rete:

Come visitare un'università coreana utilizzando il file system di rete

/etc/exports file e unità:

Come visitare un'università coreana utilizzando il file system di rete

File /etc/fstab e sistema operativo:

Come visitare un'università coreana utilizzando il file system di rete

Credo che questa sia una rete di qualche dipartimento per studenti laureati o studenti, e sui server eseguono alcuni dei propri calcoli, perché ci sono molte fonti diverse in Python, qualcosa relativo alla GPU e alla distribuzione Anaconda, e Presto. Non ho studiato tutto e ho iniziato a pensare a cosa farne, ovviamente potevo "camminare" sulla maggior parte dei nodi(forse puoi inventare qualcosa di più esotico), ma non ha suscitato in me alcun particolare interesse. E mi è venuta la seguente idea: poiché l'istituto è scientifico e avanzato, dovrebbero esserci indicazioni sulla sicurezza informatica. Anzi, anche un intero laboratorio: Laboratorio di sicurezza del software e il suo leader Sang Kil Cha
Ho deciso di scrivergli una lettera, dicendo così e così, consentire a tutti su Internet di connettere risorse NFS con diritti di lettura e scrittura è molto pericoloso, a quanto pare è necessario correggere qualcosa, allegare screenshot e inviarli.

Lettera 1

Caro Sang Kil Cha,
Ti scrivo perché sul sito web kaist.ac.kr sei indicato come il principale SoftSec Lab di KAIST e credo che la seguente questione sia di tua preoccupazione.
Durante la nostra ricerca nel campo della sicurezza informatica, involontariamente e per caso sono stati rilevati i seguenti server:
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
Tutti questi server hanno il servizio NFS (Network File System) attivo e funzionante.
Il livello di sicurezza di accesso a questi server è incredibilmente basso.
Le directory home di questi server con tutto il loro contenuto sono accessibili a chiunque utilizzi Internet.
Ad esempio, impostazioni nfs — /etc/exports 143.248.247.251—>/home o per 143.248.247.239
showmount -e 143.248.247.239
Elenco di esportazione per 143.248.247.239:
/dati

/ Home /appl
Le directory utente della maggior parte dei server sono accessibili in lettura e scrittura, comprese le relative sottodirectory, che contengono chiavi di accesso ssh pubbliche e private.
La modifica dei file consente di aggiungere nuove chiavi di accesso e ottenere l'accesso ssh remoto ai server e quindi ad alcune sottoreti KAIST interne.
Solo per testare è stato ottenuto un accesso così superficiale, non è stata apportata alcuna modifica, nessun dato è stato modificato, copiato o cancellato, nessun danno è stato arrecato all'infrastruttura.
Si prega di consultare i file allegati per una sorta di riconoscimento e prova.
Non ho alcun requisito o pretesa, ma consiglio di migliorare in modo significativo il livello di sicurezza della tua rete.

Presto mi hanno risposto, traduzione libera: grazie, lo inoltreremo alla persona giusta.

Rispondi a 1

Grazie per avermi fatto sapere! Inoltrerò questa email a qualcuno responsabile della nostra rete e della sicurezza. Meglio, Sang Kil

Prima di pubblicare questo articolo, ho deciso di controllare e vedere cosa era cambiato:

Come visitare un'università coreana utilizzando il file system di rete

Infatti, l'accesso alle risorse era consentito solo dalle macchine della rete interna, ma che dire del server 143.248.247.251. Secondo le voci nella tabella delle risorse host nelle impostazioni NFS, * rimane lo stesso. Ho delineato un'altra opzione per "mappare" la tabella in un grafico:

Come visitare un'università coreana utilizzando il file system di rete

Quali sono i cambiamenti nella "mappatura": gli oggetti NFS sono ora "incollati insieme" con 2 attributi identici: IP e percorso NFS. L'oggetto Status viene creato solo quando l'attributo Value contenente il contenuto della colonna del record grezzo contiene il valore "*«
E il grafico della tabella appare in una nuova forma:

Come visitare un'università coreana utilizzando il file system di rete

Ora, a proposito, l'indirizzamento della rete interna è diventato chiaramente visibile, e sul server 143.248.247.251 è anche possibile modificare il contenuto delle directory e dei file dell'utente; in linea di principio, le possibilità rimangono le stesse di prima.

E così scrivo una seconda lettera al signor Sang Kil Cha, con un contenuto simile alla prima, sottolineando che alcuni degli eventi saranno descritti in un articolo sulla popolare risorsa habr.com:

Lettera 2

Caro Sang Kil Cha, buona giornata a te.
Ho deciso di dare un'occhiata se è cambiato qualcosa dopo la mia email e in effetti le impostazioni di accesso sono state modificate. Ma a quanto pare gli ingegneri della sicurezza hanno omesso l’indirizzo IP 143.248.247.251 e le sue impostazioni sono rimaste le stesse. Si prega di proteggere anche questo IP in modo che nessun estraneo possa accedervi.
Sto scrivendo un articolo sul tema della sicurezza informatica e lo pubblicherò su https://habr.com. Questo è un sito web molto popolare in Russia. L'articolo includerà alcuni passaggi sulla questione della bassa qualità delle impostazioni di accesso NFS con alcuni esempi del caso relativo ai vostri server. Ti invierò il link al mio articolo quando verrà pubblicato.

Come utilizzare l'API Lampyre e scrivere il tuo modulo

Il modulo dovrà accettare in input una lista di indirizzi IP o una lista di sottoreti nel form 192.168.0/24 - in questa fase sarà necessario validare autonomamente nel codice la correttezza dei dati di input per il coinvolgimento di stringhe negli indirizzi IP, nel caso di una sottorete: conversione in elenco IP.

Il passaggio successivo, utilizzando la libreria Python paramico contatterà il server ssh personale e in sequenza (c'è un tentativo di asincronia nel codice del concetto del modulo) chiamerà il comando:
timeout {timeouts} showmount --no-headers -e {ip}
L'output del risultato verrà analizzato tramite il codice Python in una struttura di output, una tabella: un elenco di dizionari in Python.
Chiavi del dizionario:

  • current_day – data della richiesta dell'utente
  • host_query: IP per il quale riceviamo informazioni
  • percorso_condiviso: risorsa NFS
  • status_ip — informazioni sulle capacità di accesso alla risorsa; se gli indirizzi IP sono elencati separati da ",", la stringa del dizionario viene duplicata all'interno dell'elenco.

Successivamente, secondo il concetto, viene effettuato un tentativo primitivo di analizzare il valore della chiave status_ip per: indirizzo IP, record host, valori "*" o "tutti"

Secondo la documentazione per API e spiegazioni dal supporto Lampyre.io - ogni modulo deve restituire i dati a una tabella, una o più, ma la tabella deve essere descritta all'interno dell'API (intestazioni delle attività, intestazione della tabella). In effetti, questo è il risultato principale del modulo.
Pertanto, il risultato finale, tenendo conto delle chiavi del dizionario, sarà una tabella:

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)

La tabella conterrà i valori (leggermente modificati) dall'analisi del risultato dell'esecuzione del comando showmount sul server. I nomi dei campi della classe parlano da soli; la colonna del record grezzo memorizzerà le informazioni sulle capacità di accesso alla risorsa. Tale analisi dei dati sulle risorse NFS può, in un certo senso, essere considerata OSINT; le informazioni sul possibile accesso da vari indirizzi IP danno un’idea sui proprietari della risorsa o sugli indirizzi all’interno della rete della risorsa. Ad esempio, l'indirizzo IP del server con il servizio NFS si trova in Ucraina e l'indirizzo IP consentito per l'accesso è in Germania:

Come visitare un'università coreana utilizzando il file system di rete

E se espandiamo lo studio di questo esempio, allora c'è la conferma della connessione dei server non solo tramite NFS, ma anche tramite un certificato agli indirizzi: 77.120.103.9, 138.201.202.135 e il dominio *.aniart.com. u:

Come visitare un'università coreana utilizzando il file system di rete

Come passare i dati a un modulo e scrivere su una tabella:
viene creata una classe SearchDataNFS personalizzata dalla classe Task:

class SearchDataNFS(Task)

Nel metodo get_id restituisce un UUID casuale univoco:

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

Nel metodo get_display_name indichiamo come verrà chiamato il Task e nel metodo get_description, secondo il nome, descrizione dell'attività:

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

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

Nel metodo get_headers Indichiamo quali tabelle utilizzeremo:

def get_headers(self):
    return NFSHeader

metodo get_enter_params determinerà l'aspetto della finestra di immissione dei dati di input. Dal codice è evidente che viene fornita in input una lista di stringhe che verranno poi autonomamente convertite in indirizzi IP:

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

Nel metodo eseguire L'esecuzione principale dell'attività avviene:

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

È possibile accedere ai parametri di input tramite enter_params.ips. Nel metodo reparse_ip_hosts — avviene la convalida implementata in modo indipendente delle stringhe negli indirizzi IP.

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 funzione thread_async_nfs_one_client viene stabilita una connessione al server con ssh (l'indirizzo IP, login e password sono codificati) e viene eseguito showmount, come ho indicato prima, il risultato viene analizzato, quindi nella funzione reparse_result_rows viene modificato ancora una volta. È importante notare che info è un elenco composto da dizionari, in ogni dizionario le chiavi sono denominate come campi della classe NFSHeader. Cioè, il dizionario si presenta così:

{
    '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'
}

È importante osservare i tipi di dati nel dizionario; devono essere gli stessi della descrizione della tabella.
Successivamente, il ciclo scorre gli elementi dell'elenco e li scrive tramite il metodo API (risultato_writer.write_line) a una tabella NFSHeader specifica.
Per una descrizione più dettagliata, leggere la documentazione.
In linea di principio il modulo è già pronto per essere aggiunto a Lampyre.

Usando il tuo modulo in Lampyre

Poiché viene utilizzato SSH e viene eseguito il comando showmount, ovviamente sarà necessario disporre dell'accesso SSH al server. Per i miei test, ho utilizzato una macchina virtuale in VirtualBox con Ubuntu e un client NFS installato su di esso.

Per lavorare con i propri moduli sulla macchina dell'utente, è richiesto Python 3.6, il percorso dell'interprete deve essere nelle variabili di sistema o il percorso deve essere specificato nel file LampyreconfigappSettings.config. Per impostazione predefinita, la chiave pythonPath nelle impostazioni è commentata.

Il caricamento di un modulo in Lampyre si effettua nei seguenti passaggi:

  1. Nella finestra Script caricare il file Lampyreuser_tasksontology.py (fornito con l'applicazione)
  2. Nella stessa finestra, carica il tuo modulo, in questo caso nfs_via_ssh.py. Se qualcosa va storto, il pulsante dovrebbe aiutare Dettagli
  3. Dopo il caricamento nella finestra Elenco delle richieste nella scheda Compiti apparirà la sezione Compiti locali (nel codice del modulo avrebbe potuto chiamarsi diversamente), in esso il nome Esplora:NFS(SSH):

    Come visitare un'università coreana utilizzando il file system di rete
    Finestra Elenco richieste aggiornata:

    Come visitare un'università coreana utilizzando il file system di rete

  4. Gli indirizzi IP dei server con NFS, come ho detto prima, si ottengono meglio eseguendo prima una richiesta Ricerca Shodan con parametri Domanda: tcp 2049 (puoi semplicemente indicare nfs). Parametro Pagina o intervallo, impostato su 1 per impostazione predefinita, significa che verrà restituita 1 pagina di risposte dal servizio Shodan, 1 pagina normalmente contiene 100 risultati (righe).
    Risultato dell'esecuzione Shodan:

    Come visitare un'università coreana utilizzando il file system di rete

  5. Copia gli indirizzi IP da una tabella o un diagramma negli appunti e incollali nella finestra del modulo IP Explore:NFS(SSH). Corri e attendi il risultato:

    Come visitare un'università coreana utilizzando il file system di rete

Naturalmente, è necessario tenere conto sia della larghezza di banda del proprio server che di quello di qualcun altro, nonché del timeout, che è codificato nel codice del modulo.

Il risultato si ottiene sotto forma di tabella, ma è possibile continuare e combinare il risultato della tabella con il grafico dei risultati dell'esecuzione della ricerca Shodan. All'inizio sarà un po' difficile da capire.

Visualizzazione di una tabella con il risultato

Iniziamo. C'è una tabella con una serie di colonne con valori dall'esecuzione del modulo utente. Ma se presti attenzione al pulsante Schema nella finestra Richieste, sarà inattivo. Perché la mappatura di una tabella su un grafico non è specificata e deve essere specificata.

Schema 1 (non il migliore)
Quando la tabella dei risultati del modulo è aperta, nell'angolo in basso a destra è presente l'elemento dell'interfaccia “Aggiungi modello di creazione”, cliccando sul quale appare la finestra “Modello di creazione”. Qui è dove puoi impostare la mappatura delle righe della tabella sugli oggetti del grafico; non descriverò il processo in dettaglio all'interno dell'articolo, segui il collegamento a canale della piattaforma Youtube mostra come fare, per gli scopi di questo articolo mi limiterò alle immagini di cosa dovrebbe succedere:

Come visitare un'università coreana utilizzando il file system di rete

Modello per il grafico:

Come visitare un'università coreana utilizzando il file system di rete

È importante notare che gli oggetti IP e Dominio sono disponibili in Lampyre e ho creato gli oggetti NFS e Rete. Ogni oggetto ha attributi in cui l'utente “mappa” le colonne della tabella. Inoltre, un oggetto può avere diversi attributi, alcuni dei quali - per cui i vertici dovrebbero essere “incollati insieme” nel grafico - sono fondamentali, altri - per visualizzare i nomi degli oggetti-vertici del grafico, questi possono essere gli stessi attributi o completamente diversi. Ad esempio, per un oggetto NFS sono stati creati 2 attributi, percorso NFS e Stato, l'attributo chiave è percorso NFS. Puoi assegnare la tua icona a un oggetto facendo clic sull'immagine dell'oggetto a destra. Dopo aver completato la "mappatura" delle colonne negli attributi dell'oggetto, puoi creare un diagramma: il pulsante menzionato sopra Schema diventerà attivo.
Modello mancante:

Come visitare un'università coreana utilizzando il file system di rete

Il modello per il grafico basato sulla tabella è composto:

Come visitare un'università coreana utilizzando il file system di rete

In generale, questo approccio alla "mappatura" dei valori dalle colonne e dalle righe della tabella agli oggetti del grafico esiste anche in un'altra applicazione: i2 (taccuino dell'analista IBM i2):

Come visitare un'università coreana utilizzando il file system di rete

Dopo aver visualizzato il grafico di tale "mappatura", diventa chiaro che questa non è l'opzione migliore: puoi vedere la relazione tra l'indirizzo IP del server e gli indirizzi IP e gli host da cui è possibile l'accesso, e le risorse NFS disponibili sul server, ma è possibile accedere a risorse diverse da IP diversi. Creiamo quindi un altro schema (per ogni tabella è possibile creare molti schemi).

Schema 2

Come visitare un'università coreana utilizzando il file system di rete

Già meglio. Tutto va a posto: su quale server si trovano le risorse e da quali indirizzi IP è possibile accedervi:

Come visitare un'università coreana utilizzando il file system di rete

Questa opzione per creare un modello di diagramma grafico da una tabella è utile solo quando non devi lavorare molto spesso con il tuo modulo o nel caso di importare file di testo (csv) nell'applicazione. Il fatto è che la "mappatura" creata in questo modo viene salvata solo nell'ambito dell'indagine in corso. Dopo aver creato una nuova “indagine”, il modulo verrà salvato e verrà eseguito con la tabella risultante, ma il diagramma non verrà salvato e dovrà essere ricostruito.

Per combinare i risultati di una ricerca Shodan e NFS, devi aprire lo schema di ricerca Shodan, attivare il pulsante Aggiungi alla scheda attiva e inserire il risultato del nostro modulo nella stessa scheda: gli schemi verranno combinati:

Come visitare un'università coreana utilizzando il file system di rete

Schemi combinati:

Come visitare un'università coreana utilizzando il file system di rete

Codice modulo per Lampyre è disponibile, esiste anche la seconda versione del modulo senza l'utilizzo di una connessione ssh.

Invece di trarre conclusioni, colleghi, verificate regolarmente la correttezza delle vostre impostazioni NFS e altro ancora.

Fonte: habr.com

Acquista hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting web affidabile con protezione DDoS, server VPS e VDS | ProHoster