Como visitar a Universidade da Coréia com o sistema de arquivos em rede


Prefácio


Era uma vez, no início dos anos 2000, muitos se divertiam com o fato de "verificarem" regularmente as redes de seus provedores e, às vezes, destinos ainda mais distantes, a fim de detectar máquinas e recursos Windows (SMB), disponíveis para leitura (gravação). O processo de busca foi primitivo: foi definido um intervalo de endereços IP ou uma máscara de rede e, por meio de várias ferramentas - LANguard Network Scanner, xIntruder e similares - os endereços foram verificados e os servidores foram localizados. Freqüentemente, as máquinas detectadas estavam disponíveis para leitura, menos frequentemente para gravação, vários recursos de rede (discos, impressoras, diretórios). Através de uma sessão anônima, através do IPC $ e do usuário “Guest”, foi possível transferir recursos na máquina, às vezes havia membros dos “Administradores” sem senhas e, às vezes, após um impacto mais “ativo” nas máquinas detectadas, era possível encontrar servidores executando o Windows NT 4.0 ou Windows 2000 Server. Se a sorte era encontrar máquinas com o Windows 98, então generalizado, ficava mais fácil - naqueles dias o sistema operacional especificado continha muitas vulnerabilidades diferentes, incluindo a implementação do trabalho com SMB, o bruteforce para acesso ao recurso era realizado em questão de minutos, mesmo em dial-up conexões. Para quem quer mergulhar nos velhos tempos, está escrito em detalhes sobre o "acesso" ao Windows 9x - Hacking Exposed: Segredos e Soluções de Segurança de Rede. Capítulo 4: Hackeando o Windows 95/98 e Me . Mas o resto do artigo não é sobre isso.


Eu nunca teria pensado que, em 2019, esse "entretenimento" é possível. A semelhança está na facilidade de encontrar os recursos disponíveis de outras pessoas para todos os curiosos. Além disso, não focaremos em uma tendência popular nos últimos dois anos - a busca por bancos de dados MongoDB ou Elasticsearch abertos para acesso -, mas em um serviço um pouco mais realista.


Além disso, proponho não avaliar todo o procedimento, sua norma ética, observo que este post não é um chamado para ações que podem ser atribuídas a alguns artigos do Código Penal da Federação Russa ou normas similares das leis de outros estados.


Sistema de arquivos de rede (NFS)


Network File System (NFS) - um protocolo para acesso de rede a sistemas de arquivos, permite conectar (montar) sistemas de arquivos remotos através de uma rede, fornece aos usuários acesso a arquivos, permite trabalhar com esses arquivos da mesma maneira que com os locais.


A maioria do NAS (Network-Attached Storage) disponível no mercado oferece suporte ao NFS e fornece acesso a recursos locais e a qualquer servidor com um sistema operacional no qual é possível implantar o serviço NFS.


As configurações para acessar recursos do servidor a partir de qualquer sistema operacional Ubuntu e endereço IP 192.168.1.1 estão contidas no arquivo / etc / exportações e são entradas do formulário:


  • / 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)

Nesse caso, o acesso do NFS ao servidor e seu recurso / dados / local1 é possível para clientes com endereços IP das redes 192.168.1.0/255.255.255.0, 192.168.101.0/255.255.255.0.


Monte o recurso remoto em um diretório local, por exemplo, / home / user / example, se o cliente estiver em uma sub-rede permitida e o cliente para NFS estiver instalado, é possível através do comando (Ubuntu):
mount -t nfs 192.168.1.1:/data/place1 /home/user/example


Se, em vez de endereços IP, * ou (todos) for especificado, geralmente qualquer cliente poderá montar um recurso remoto em seu sistema.


O usuário (por exemplo, no Ubuntu) só precisa digitar o terminal: showmount -e ip-target e obter informações sobre os recursos disponíveis no servidor (lista de exportação do servidor).


Por exemplo:
showmount -e 81.24..
Export list for 81.24..:
/home/admin 192.168.52.1/24


Assim, o seguinte cenário é formado: para detectar servidores executando o NFS, determinar os recursos disponíveis nos servidores, consolidar o resultado em um único formulário de saída e prosseguir de acordo com a situação.


O que pode estar nos recursos - obviamente, qualquer coisa:


  • arquivos pessoais de usuários da Internet, por exemplo, nos casos de dispositivos NAS "abertos";
  • diretórios com arquivos de empresas inteiras, bancos de dados, arquivos de bancos de dados;
  • freqüentemente diretórios com endereços / home / * (algumas vezes com chaves em .ssh e graváveis);
  • diretórios com arquivos de sistemas de vigilância por vídeo;
  • outro ...

Obtendo endereços IP


No que diz respeito à descoberta de servidores com NFS na Internet global, existem duas maneiras: independentemente, usando várias ferramentas e resultados de varredura, bancos de dados e serviços de terceiros prontos. De fato, tudo se resume a obter uma lista de endereços IP. Na rede local, acho que a opção é óbvia - aja de forma independente.


As portas TCP abertas 111, 2049 podem servir como evidência do funcionamento do serviço NFS.
Para obter independentemente uma lista de endereços IP do servidor, basta varrer o intervalo de endereços ou toda a sub-rede quanto à presença das portas abertas indicadas. Qualquer ferramenta é adequada para isso: nmap, masscan e assim por diante.


Por exemplo, com o comando masscan -p111,2049 200.26.1XX.0/24 —rate=10000 rede 200.26.1XX.0 / 24 será varrida por vários segundos nas portas abertas 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
Além de cada um dos endereços IP detectados, é possível aplicar o comando:
showmount --no-headers -e 200.26.1XX.28
Resultado:
/usr/common *
Obviamente, é possível digitalizar milhões de endereços IP do espaço da Internet, mas esse não é o caminho mais rápido, e o maravilhoso serviço Shodan pode ser a solução para a subtarefa, é claro que existem outros, mas este com sintaxe e API muito convenientes. Investigar a descrição dos recursos do serviço não é o objetivo do artigo. Resumidamente - o serviço fornece uma pesquisa avançada por dispositivos conectados à Internet. Os critérios de pesquisa podem ser identificadores de rede e outros metadados: números de série de certificados e similares. Shodan possui muitos recursos para pesquisa direcionada, mas não encontrei uma pesquisa separada no NFS, pois, por exemplo, existe um critério de produto com um nome de produto: mongodb, elastic ou apache. Portanto, através do NFS da Web, é possível procurar as seguintes consultas: nfs, tcp 2049, tcp 111, Portmap: 2049 e assim por diante, conforme desejar.



Ou instale o cliente Shodan (CLI), inicialize sua API KEY no serviço e chame uma pesquisa na linha de comando, por exemplo:


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

Portanto, é fácil entender como obter as listas de endereços IP de dispositivos com um serviço NFS válido.


Recupere informações sobre os recursos NFS disponíveis em servidores específicos.


Existem várias maneiras de resolver esse problema em massa: escrever scripts bash, organizar um pipeline complicado a partir de uma cadeia de comandos com uma chamada para showmount e outras opções - quem gosta do quê.


Em minha pesquisa, resolvi esse problema em Python e de duas maneiras diferentes. O primeiro é conectar via ssh ao seu servidor Ubuntu pessoal com um cliente NFS e, em seguida, invocar o comando showmount nele com o pool de endereços IP desejado. A segunda solução está em Python puro.


Suponho que possa surgir uma pergunta: por que é tão difícil, por que em Python?


Porque, como no meu artigo anterior sobre Habr, usarei a ferramenta Lampyre, na qual em 26 de fevereiro eles publicaram uma API que permite gravar seus módulos na plataforma em Python.


Lampyre

Brevemente sobre Lampyre - uma plataforma de software para OSINT e análise de dados com um cliente "grosso" para Windows, um análogo da ferramenta popular e conhecida para o mesmo objetivo - Maltego. Como em Maltego, Lampyre "pronto para uso" fornece um conjunto de solicitações para vários serviços. As consultas são conceitualmente equivalentes às transformações de um produto mais conhecido. Se algo estiver faltando, agora é possível escrever seus próprios pedidos. Os pedidos fornecidos com o Lampyre são executados na infraestrutura da plataforma, escritos de forma independente - na máquina. Ou seja, o usuário deve ter o Python instalado e todas as bibliotecas necessárias usadas no código.


Decidi testar os recursos da API. O ponto principal é que o Lampyre já possui várias "solicitações" para a Shodan, principalmente porque o usuário não precisa ter sua própria API KEY do serviço. Assim, com uma solicitação, você pode obter listas de endereços IP com o serviço NFS gerado, e com a segunda solicitação, o módulo que escrevi verificará os recursos disponíveis e visualizará o resultado com as características dos recursos no mesmo gráfico.


E aqui a Coréia


Durante a pesquisa em Shodan e o teste do módulo, ficou interessante ver a situação com a qualidade e a quantidade de resultados da digitalização pelo serviço Shodan nos países asiáticos, como estão as coisas com recursos inseguros. A escolha recaiu sobre a República da Coréia, acho que não há necessidade de dizer que a Coréia do Sul é um país muito tecnologicamente avançado e sugeri que você pudesse encontrar algo interessante em suas redes.


Pesquisa por Shodan, em Consulta: nfs , em País: código da República da Coréia, kr



O resultado não demorou a chegar (na imagem abaixo, apenas parte do esquema geral).



Lista de Host:


  • 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

Todos eles, como podem ser vistos no gráfico e nos nomes, estão listados como AS1781 - Instituto Avançado de Ciência e Tecnologia da Coréia



O Instituto de Tecnologia Avançada da Coréia - a principal universidade acadêmica e de pesquisa da Coréia do Sul, localizada em Daejeon, está na segunda linha do ranking nacional na Coréia do Sul. A universidade é constantemente incluída em 5% das principais instituições de ensino da Coréia do Sul.


Usamos os endereços IP especificados como argumentos de entrada para o módulo escrito “Explore: NFS (SSH)” e, como resultado:



Elaborei rapidamente esse esquema para exibir os resultados de uma tabela em um gráfico (sobre esquemas e princípios para a construção de gráficos posteriormente neste artigo).



O resultado da combinação com um esquema Shodan



Ao analisar os vértices e os relacionamentos do gráfico, torna-se óbvio em que endereços o recurso / home está disponível, acessível a todos (*).


Para uma melhor percepção visual, altere as propriedades dos objetos gráficos e outras configurações do diagrama:



Obviamente, revezei-me na montagem de parte dos recursos em um dos meus servidores e comecei a estudar. Ele ficou praticamente o mesmo em todos os lugares - diretórios de usuários: asm, hoo, hyshin, jay, jiwon, jkhee110, jokangjin, kmh603, ksm782, lee, linus, lost + found, marvel_guest, pie, qwe, scloud, seokmin, sgim, thrlek, yoosj, ysha, zínia


Quase todos os diretórios com arquivos foram lidos e gravados. Alguns usuários no .ssh tinham arquivos_chave autorizados com acesso de gravação a eles.


Gerei minha chave, copiei-a para as chaves autorizadas de um dos usuários e conectei-me ao servidor via ssh na porta 2222, recebi o número da porta dos dados da Shodan.


Usuários, configurações de rede:



Hosts na rede:



O arquivo / etc / exportações e unidades:



Arquivo / etc / fstab e SO:



Acredito que essa seja uma rede de algum departamento para estudantes ou estudantes de pós-graduação, e eles realizam algum tipo de cálculo nos servidores, porque existem muitas fontes Python diferentes, algo relacionado à distribuição da GPU e da Anaconda e assim por diante. Eu não estudei tudo e comecei a pensar no que fazer com tudo isso, é claro, eu poderia "andar" na maioria dos nós (talvez eu pudesse pensar em algo mais exótico) , mas isso não me causou muito interesse. E pensei no seguinte: como o instituto é científico e avançado, deve haver áreas de segurança da informação. De fato, mesmo um laboratório inteiro: o Software Security Lab e seu chefe, Sang Kil Cha
Decidi escrever uma carta para ele, e é o que dizem, permitir que todos na Internet conectem recursos NFS com permissões de leitura e gravação é muito perigoso, aparentemente você precisa consertar algo, anexar capturas de tela e enviar.


Carta 1
Dear Sang Kil Cha,
Estou escrevendo para você, pois no site kaist.ac.kr você é referido como o principal SoftSec Lab da KAIST, e acredito que o seguinte assunto é da sua preocupação.
Durante nossa pesquisa no campo da segurança da informação, sem querer e por acaso, os seguintes servidores foram detectados:
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
Todos esses servidores têm o serviço NFS (Network File System) em funcionamento.
O nível de segurança do acesso a esses servidores é incrivelmente baixo.
Os diretórios pessoais desses servidores com todo o seu conteúdo podem ser acessados ​​por qualquer pessoa que utilize a Internet.
Por exemplo, configurações nfs - / etc / export 143.248.247.251 -> / home ou para 143.248.247.239
showmount -e 143.248.247.239
Lista de exportação para 143.248.247.239:
/ data
/ home / appl
Os diretórios de usuários da maioria dos servidores são acessíveis para leitura e gravação, incluindo seus subdiretórios, que contêm chaves de acesso ssh públicas e privadas.
A edição de arquivos permite adicionar novas chaves de acesso e obter acesso ssh remoto aos servidores e - a algumas sub-redes KAIST internas.
Somente para testar esse acesso superficial foi obtido, nenhuma modificação foi feita, nenhum dado foi editado, copiado ou excluído, nenhum dano foi causado à infraestrutura.
Por favor, veja os arquivos anexados para algum tipo de reconhecimento e prova.
Não tenho requisitos ou reivindicações, mas recomendo melhorar significativamente o nível de segurança da sua rede.

Logo eles me responderam, tradução gratuita: obrigado, encaminharemos para qualquer um.


Resposta 1
Obrigado por me avisar! Encaminharemos este e-mail para alguém responsável por nossa rede e segurança. Best, Sang Kil

Antes de publicar este artigo, decidi verificar, ver o que mudou:



De fato, o acesso aos recursos era permitido apenas a partir de máquinas na rede interna, mas e o servidor 143.248.247.251? De acordo com as entradas na tabela, os recursos do host nas configurações do NFS permanecem *. Esbocei outra versão do "mapeamento" da tabela em um gráfico:



Quais são as alterações no "mapeamento": os objetos NFS agora "se unem" com 2 atributos idênticos - caminho IP e NFS. O objeto Status é criado apenas quando o atributo value, que contém o conteúdo da coluna de registro bruto, contém o valor " * "
E o gráfico na tabela aparece em um novo formulário:



Agora, a propósito, o endereçamento da rede interna tornou-se claramente visível e, no servidor 143.248.247.251, também é possível editar o conteúdo dos diretórios do usuário, arquivos; em princípio, as possibilidades permaneciam as mesmas de antes.


Então, estou escrevendo uma segunda carta ao Sr. Sang Kil Cha, com um primeiro conteúdo semelhante, observando que alguns dos eventos serão apresentados em um artigo sobre o popular recurso habr.com:


Carta 2
Caro Sang Kil Cha, bom dia para você.
Decidi dar uma olhada se algo mudasse depois do meu e-mail para você e, de fato, as configurações de acesso foram alteradas. Mas, aparentemente, os engenheiros de segurança deixaram de fora o endereço IP 143.248.247.251 e suas configurações permaneceram as mesmas. Por favor, proteja este ip também para que nenhum estranho possa acessá-lo.
Estou escrevendo um artigo sobre o assunto Segurança da informação e o publicarei em https://habr.com . Este é um site muito popular na Rússia. O artigo incluirá algumas passagens sobre a baixa qualidade das configurações de acesso ao NFS com alguns exemplos do caso com seus servidores. Vou enviar o link para o meu artigo quando ele for publicado.

Como usar a API Lampyre e escrever seu módulo


O módulo precisará aceitar uma lista de endereços IP ou uma lista de sub-redes na forma de 192.168.0 / 24 como entrada - nesse estágio, será necessário validar os dados de entrada sobre o envolvimento de cadeias nos endereços IP independentemente do código, no caso de uma sub-rede - converter para lista de IPs.


A próxima etapa, através da biblioteca paramiko Python, será acessada no servidor ssh pessoal e seqüencial (há uma tentativa de assincronia no código de conceito do módulo), o comando é chamado:
timeout {timeouts} showmount --no-headers -e {ip}
A saída do resultado será analisada através do código Python na estrutura de saída, tabela: uma lista de dicionários em Python.
Chaves no dicionário:


  • current_day - data da solicitação do usuário
  • host_query - IP para o qual as informações são recebidas
  • shared_path - recurso NFS
  • status_ip - informações sobre o acesso ao recurso, se os endereços IP estiverem listados através de ",", a sequência de caracteres do dicionário será duplicada na lista.

Além disso, de acordo com o conceito do conceito, é feita uma tentativa primitiva de analisar o valor da chave status_ip no assunto: endereço IP, registro do host, os valores "*" ou "todos"


De acordo com a documentação da API e explicações do suporte Lampyre.io - cada módulo deve retornar dados para a tabela, um ou mais, mas a tabela deve ser descrita como parte da API (cabeçalhos de tarefas, cabeçalho da tabela). De fato, este é o principal resultado do módulo.
Assim, o resultado final, considerando as chaves do dicionário, será uma tabela:


 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) 

Os valores (ligeiramente modificados) da análise do resultado do comando showmount no servidor serão gravados na tabela. Os nomes dos campos da classe falam por si mesmos; na coluna de registro bruto, as informações sobre o acesso ao recurso serão armazenadas. De certa forma, essa análise de dados sobre os recursos NFS também pode ser considerada um OSINT. As informações sobre o possível acesso de vários endereços IP dão uma idéia dos proprietários do recurso ou do endereçamento na rede de recursos. Por exemplo, o endereço IP do servidor com NFS está localizado na Ucrânia e o endereço IP permitido para acesso está na Alemanha:



E se você expandir o estudo deste exemplo, imediatamente haverá confirmação da conexão dos servidores não apenas através do NFS, mas também através de um certificado nos endereços: 77.120.103.9, 138.201.202.135 e o domínio * .aniart.com.ua:



Como transferir dados para um módulo e gravar em uma tabela:
Crie sua própria classe SearchDataNFS a partir da classe Task:


 class SearchDataNFS(Task) 

No método get_id , retornamos um UUID aleatório exclusivo:


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

No método get_display_name especifique como a Tarefa será chamada e no método get_description , de acordo com o nome, a descrição da Tarefa:


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

No método get_headers especifique quais tabelas vamos usar:


 def get_headers(self): return NFSHeader 

O método get_enter_params determinará a aparência da janela de entrada. A partir do código, é óbvio que uma lista de strings é fornecida à entrada, que posteriormente será convertida em endereços IP independentemente:


 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 

No método execute , a principal tarefa de execução ocorre:


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

Os parâmetros de entrada são acessados ​​via enter_params.ips. No método reparse_ip_hosts , reparse_ip_hosts uma validação auto-implementada de seqüências de caracteres em endereços 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) 

A função thread_async_nfs_one_client conecta ao servidor com ssh (o endereço IP, o nome de usuário e a senha são definidos por hardcode) e o showmount é executado, conforme indicado anteriormente, o resultado é analisado e depois modificado novamente na função reparse_result_rows . É importante observar que info é uma lista composta por dicionários. Em cada dicionário, as chaves são nomeadas como campos da classe NFSHeader. Ou seja, o dicionário fica assim:


 { '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 observar os tipos de dados no dicionário, eles devem ser os mesmos que na descrição da tabela.
Ainda mais no loop, ocorre a iteração nos elementos da lista e a gravação através do método API ( result_writer.write_line ) em uma tabela NFSHeader específica.
Para uma descrição mais detalhada, você deve ler a documentação.
Basicamente, o módulo está pronto para ser adicionado ao Lampyre.


Usando seu módulo em Lampyre


Devido ao fato de o ssh ser usado e à execução do comando showmount, é claro, você deve ter acesso ao seu servidor via ssh. Para meus testes, esse papel foi desempenhado pela máquina virtual no Virtualbox com o Ubuntu e o cliente NFS instalado.


Para trabalhar com módulos nativos na máquina do usuário, é necessário o Python 3.6, o caminho para o intérprete deve estar nas variáveis ​​do sistema ou o caminho para ele deve ser especificado no Lampyre\config\appSettings.config . Por padrão, a chave pythonPath é comentada nas configurações.


O carregamento de um módulo no Lampyre é realizado nas seguintes etapas:


  1. Na janela Scripts, carregue o arquivo Lampyre \ user_tasks \ ontology.py (vem com o aplicativo)
  2. Na mesma janela, carregue seu módulo, neste caso, nfs_via_ssh.py. Se algo der errado, o botão Detalhes deve ajudar
  3. Após o carregamento, na janela Lista de solicitações , na guia Tarefas , a seção Tarefas locais será exibida (no código do módulo, você poderia chamá-lo de maneira diferente), com o nome Explorar: NFS (SSH) :


    Janela Lista de solicitações atualizada:

  4. Os endereços IP dos servidores com NFS, como eu disse anteriormente, são melhor obtidos executando primeiro a consulta de pesquisa Shodan com os parâmetros Query: tcp 2049 (você pode simplesmente especificar nfs ). O parâmetro Page ou range , definido por padrão como 1, significa que 1 página de respostas do serviço Shodan será retornada. Em uma página, geralmente há 100 resultados (linhas).
    O resultado da execução de Shodan:

  5. Copie os endereços IP da tabela ou do diagrama para a área de transferência e cole-os na janela do módulo IP Explore: NFS (SSH). Execute e espere o resultado:


Obviamente, você deve levar em consideração a largura de banda de seus próprios servidores e os estrangeiros, e o tempo limite, que são definidos rigidamente no código do módulo.


O resultado é obtido na forma de uma tabela, mas você pode continuar e combinar o resultado da tabela com o gráfico dos resultados da execução da pesquisa Shodan. Será um pouco difícil de perceber a princípio.


Visualização da tabela com o resultado


Vamos começar. Há uma tabela com um conjunto de colunas com valores da execução do módulo do usuário. Mas se você prestar atenção ao botão Esquema da janela Solicitações, ele estará inativo. Como o mapeamento da tabela para o gráfico não está especificado, ele deve ser definido.


Esquema 1 (não é o melhor)
Com a tabela aberta a partir do resultado do módulo, no canto inferior direito, há um elemento de interface "Adicionar modelo de criação", clicando no qual a janela "Modelo de criação" é exibida. Neste, você pode especificar o mapeamento das linhas da tabela para objetos gráficos, não descreverei o processo detalhadamente no artigo, o link no canal da plataforma no Youtube mostra como fazer isso, no artigo vou me limitar a imagens do que deve acontecer:



Modelo para gráfico:



É importante observar que os objetos IP, Domínio estão em Lampyre e eu criei objetos NFS e Rede. , «» . , , — «» — , — - , . , NFS – 2 , NFS path Status, — NFS path. — . «» — Schema .
:



:



«» — i2 (IBM i2 Analyst's Notebook) :



«» , : IP- IP- , , NFS , IP. ( ).


2



. — , IP- :



, , (csv) . , «» . «» , .


Shodan NFS Shodan search, add to active tab — :



:



Lampyre , ssh.


— , NFS .

Source: https://habr.com/ru/post/pt444382/


All Articles