Dado dois endereços IP públicos e o conhecimento que ambos estão na mesma rede / 27, seria possível determinar de um local remoto (ou seja, país diferente) se eles pertencem a um ou dois servidores?
Dado dois endereços IP públicos e o conhecimento que ambos estão na mesma rede / 27, seria possível determinar de um local remoto (ou seja, país diferente) se eles pertencem a um ou dois servidores?
Respostas:
Não, não é, no caso geral.
Algumas adições, para deixar nossos convidados felizes:
Curioso quanto ao "porquê". As preocupações com as máquinas com dois roteadores são normalmente localizadas como dor de cabeça de alguns administradores de sistemas sem nome. Os detalhes devem ser ocultados pelo modelo OSI.
Resposta centrada no Linux adiante.
Existem algumas maneiras de gerar impressões digitais e fazer um palpite educacional.
nmap -o e nmap com uma varredura de porta decente. Os servidores nem sempre se ligam às duas NICs. Mas muitas vezes eles fazem.
Endereços MAC. Se você tinha algum meio de obter os endereços MAC, os fabricantes gostam de usar endereços consecutivos para hardware integrado. Dois endereços MAC quase idênticos são provavelmente a mesma placa-mãe. Isso não se aplica aos cartões de pós-venda, é claro.
Saudações. Telnet, ftp, smtp e similares oferecem informações de identificação. Veja se esses serviços estão em execução, ofereça informações distintas suficientes. As faixas provavelmente são raras hoje, mas ainda valem uma chance.
Teste o comportamento independente da NIC. Por exemplo, tente desarmar hosts host fornecendo autenticação falsa para ssh uma dúzia de vezes. Se negar hosts for disparado, o soquete será fechado imediatamente na próxima tentativa. Veja se isso está acontecendo no outro IP também.
A / 27 net é ... o que, 29 hosts? Eu diria que as chances de identificar uma máquina de casas duplas com alta confiança são muito pequenas, talvez 5%. Mas, dado tão poucos hosts, você poderá adivinhar.
Pergunta divertida para uma entrevista. Eu posso roubá-lo, na verdade.
Teoricamente, você pode dar um nível de confiança significativo na maioria dos casos. Porém, existem algumas ressalvas que tornam muito mais difícil na prática.
Estarei sobrepondo outras respostas e provavelmente perdi algumas coisas, mas esse é pelo menos um raciocínio detalhado sobre o motivo pelo qual esses bits específicos são importantes ou não.
Primeiro, esqueça todos os pensamentos sobre os endereços MAC. A menos que você tenha acesso direto ao segmento de rede, não poderá vê-lo.
Também não confie nas verificações de portas. É trivial para portas de firewall apenas para determinados IPs, ter software escutando apenas em determinados IPs ou ter um sistema IDS / IPS que aplica filtragem quando uma varredura é detectada. Tudo isso estragará seus testes.
Ok, então a maneira que você pode dizer é simples: a probabilidade de duas caixas serem exatamente idênticas é baixa, a menos que estejam relacionadas de qualquer maneira. Então, o que você está realmente fazendo é tentar provar que são caixas diferentes, não tentar provar que são as mesmas.
Ping. Você precisa testar os dois ao mesmo tempo e fazer muitos testes. Acontece que, embora haja instabilidade nos tempos da rede, há um ruído pseudo-aleatório de alta qualidade, se você tiver amostras suficientes em um período de tempo pequeno, o ruído será calculado em média o suficiente para fornecer uma comparação precisa.
Cada salto da camada 2 em uma rede adiciona uma pequena quantidade de latência, diferentes níveis de congestionamento fornecerão diferentes valores de latência. Se os dois IPs mostrarem latência simultânea significativamente diferente, você poderá assumir que eles provavelmente não são a mesma caixa.
Advertência 1: Um único servidor com dois uplinks (não vinculados) e configurado com um IP diferente em cada uplink pode ter um desequilíbrio de uplink suficiente para descartá-lo.
Verificação de porta. As portas de destino podem estar em um dos três estados: escutando, fechado, filtrado. O local em que eles estão não é muito útil, conforme observado acima, mas ainda há informações úteis a serem obtidas.
Caixas com portas abertas em vários IPs provavelmente executarão o mesmo software em todos os IPs. É possível executar, digamos, nginx em um IP e apache em outro, mas a maioria das pessoas não se incomoda. Imprima os serviços em execução para procurar semelhanças. Procure por qual software e versão ele está anunciando, quais opções ele suporta, que nome de host (se houver) é anunciado, se há alguma peculiaridade no comportamento do software, coisas assim.
Os serviços da Web são os menos úteis para isso, muito mais úteis são coisas como SMTP (difícil de combinar e combinar devido ao suporte ao sendmail, vaza muitas informações), SNMP (uma mina de ouro da informação), SSH (quem executa vários daemons SSH? ) e HTTPS (se você tiver sorte e eles estiverem executando o mesmo software, poderá verificar diferenças na configuração do SSL, uma configuração idêntica, mas incomum, é um bom indicador). O NTP costumava ser um bom teste, mas agora está sendo travado com força devido ao seu uso pesado como um amplificador de DoS, o SNTP não é realmente preciso o suficiente para uma arma fumegante da mesma maneira.
Impressão digital da camada 3. A principal maneira de obter impressões digitais remotamente de um sistema operacional é de peculiaridades na implementação do TCP / IP. Os detalhes exatos são longos demais para serem analisados aqui, mas essencialmente os metadados de pacotes vazam muitas informações, assim como a porta fechada ou filtrada responde a uma conexão e como um host se comporta ao receber pacotes malformados. Embora essas características não sejam uma coisa certa para dizer o que está sendo executado, elas são razoavelmente garantidas para serem próximas das mesmas para cada IP vinculado a uma pilha TCP / IP específica. Sistemas significativamente diferentes devem ter características significativamente diferentes.
Advertência 2: É provável que duas caixas executando exatamente o mesmo sistema operacional e patches de fornecedor sejam iguais. No Windows, duas cópias da mesma versão do Windows executando atualizações automáticas serão bastante indistinguíveis, a menos que tenham firewalls diferentes em execução. No Linux, é provável que as diferenças estejam relacionadas principalmente a exatamente qual versão e opções do kernel são fornecidas. Este teste só pode dar alta probabilidade de que dois IPs não estejam no mesmo sistema operacional.
Repetir ataques. Com a lista de portas abertas nos dois IPs, execute ações idênticas em cada IP e procure discrepâncias no comportamento. Coisas como tempos limite, mensagens de erro, limites de novas tentativas etc. Alguns softwares são mais difíceis ou menos configurados para serem diferentes com base no IP. Se você souber que um IP está aceitando correio para um domínio específico, veja se o outro IP também aceita correio para esse domínio.
Advertência 3: trata-se de dados de qualidade inferior à parte de impressão digital de serviço do teste 2, porque esse material é mais fácil de configurar de maneira diferente em IPs diferentes e há todo tipo de interação possível nos bastidores. A alta chance de resultados falsos gera pouca confiança nesses resultados.
Então, como eu disse, a teoria subjacente é que diferentes hosts provavelmente terão configurações diferentes e isso vazará informações.
O que isso não explica é que é muito mais difícil dizer se o mesmo site em execução em dois IPs é o mesmo servidor ou dois servidores configurados para redundância. Também não considera os administradores de sistema que estão executando o gerenciamento de configurações para manter seus sistemas muito semelhantes. Também não considera hosts que estão DNAT executando vários serviços executados em hosts diferentes em um único endereço IP.
A tecnologia de virtualização lança algumas chaves estranhas nos trabalhos. Sistemas em contêiner como o Docker estão compartilhando o suficiente da pilha para fazer com que os contêineres separados pareçam mais semelhantes do que realmente podem ser. As redes virtuais conectadas a um nic físico devem ser impossíveis de distinguir do hardware fisicamente separado, mas não são, decorrentes principalmente do fato de que a ponte é um software e, portanto, os pacotes precisam passar pela pilha de IP do host.
Há muitas maneiras de confundir as pessoas que tentam testar a repetibilidade. O melhor que você pode esperar é um padrão com baixa margem de dúvida.
A moral disso, para as pessoas que executam servidores, é que você deve configurar seus servidores para vazar o mínimo de informações possível:
Desative as informações do banner o máximo possível. Quanto menos um ataque souber sobre sua configuração, melhor para você.
O software aceita apenas conexões no IP em que ele deveria estar sendo exibido e somente quando necessário. Se não precisar ser acessível externamente, vincule-o apenas ao host local. Reduzir a superfície de ataque é sempre bom.
Se você absolutamente precisa ouvir algo e deseja evitar a correlação entre dois IPs, tente reduzir ao mínimo as opções incomuns. Você quer que ele se misture.
Tenha um firewall em execução com uma política de descarte padrão. Acho que pode haver valor em uma configuração do IDS que responda a invasores com respostas aleatórias; o ruído dificultaria a confiança de um invasor em seus resultados, mas resultaria em fazer você se destacar.
Módulos de atraso aleatórios são inúteis para evitar ataques de tempo. Não mesmo. Escolha um número aleatório e role um dado várias vezes, anotando o resultado mais o número que você escolheu no início. Você termina com um intervalo com um deslocamento fixo. Se o número aleatório for substituído, o intervalo se moverá. Se o intervalo for alterado, o deslocamento permanecerá o mesmo e é apenas uma questão de repetir o processo de amostragem para obter uma nova linha de base.
Os normalizadores de pilha de IP existem, mas foram uma parte negligenciada da pesquisa de segurança da última vez que olhei. Provavelmente seria um bom mercado investir em um fornecedor de segurança.