Hacker Geek OS Fingerprinting com Tamanhos de janela TTL e TCP
Você sabia que pode descobrir qual sistema operacional está executando um dispositivo em rede apenas observando a maneira como ele se comunica na rede? Vamos dar uma olhada em como podemos descobrir qual sistema operacional nossos dispositivos estão executando.
Por que você faria isso?
Determinar qual SO uma máquina ou dispositivo está executando pode ser útil por vários motivos. Primeiro vamos dar uma olhada em uma perspectiva cotidiana, imagine que você queira mudar para um novo ISP que ofereça acesso ilimitado à Internet por US $ 50 por mês, para que você faça uma avaliação do serviço deles. Ao usar a impressão digital do sistema operacional, você logo descobrirá que eles têm roteadores de lixo e oferecem um serviço PPPoE oferecido em várias máquinas do Windows Server 2003. Não parece mais um bom negócio, huh?
Outro uso para isso, embora não tão ético, é o fato de que as falhas de segurança são específicas do sistema operacional. Por exemplo, você faz uma varredura de porta e encontra a porta 53 aberta e a máquina está executando uma versão desatualizada e vulnerável de Bind, você tem uma ÚNICA chance de explorar a brecha de segurança desde que uma tentativa falhada iria travar o daemon.
Como funciona o Fingerprinting do sistema operacional??
Ao fazer uma análise passiva do tráfego atual ou até mesmo observar as antigas capturas de pacotes, uma das maneiras mais fáceis e eficazes de executar o Fingerprinting é simplesmente observar o tamanho da janela TCP e o tempo de vida (TTL) no cabeçalho IP do primeiro. pacote em uma sessão TCP.
Aqui estão os valores para os sistemas operacionais mais populares:
Sistema operacional | Tempo de Viver | Tamanho da Janela TCP |
Linux (Kernel 2.4 e 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista e 7 (Server 2008) | 128 | 8192 |
iOS 12.4 (roteadores Cisco) | 255 | 4128 |
A principal razão pela qual os sistemas operacionais têm valores diferentes se deve ao fato de que os RFCs para TCP / IP não estipulam valores padrão. Outra coisa importante a lembrar é que o valor TTL nem sempre corresponderá a um na tabela, mesmo que o seu dispositivo esteja executando um dos sistemas operacionais listados, você verá quando enviar um pacote IP através da rede do sistema operacional do dispositivo remetente configura o TTL para o TTL padrão para aquele SO, mas como o pacote atravessa os roteadores, o TTL é reduzido em 1. Portanto, se você vir um TTL de 117, pode ser esperado que seja um pacote enviado com um TTL de 128 e percorreu 11 roteadores antes de ser capturado.
Usar o tshark.exe é a maneira mais fácil de ver os valores, assim que você tiver uma captura de pacote, verifique se o Wireshark está instalado e navegue até:
C: \ Arquivos de Programas \
Agora segure o botão shift e clique com o botão direito do mouse na pasta wireshark e selecione a janela de comando aberta aqui no menu de contexto
Agora digite:
tshark -r "C: \ Usuários \ Taylor Gibb \ Desktop \ blah.pcap" "tcp.flags.syn eq 1" -T campos -e ip.src -e ip.ttl -e tcp.window_size
Certifique-se de substituir "C: \ Usuários \ Taylor Gibb \ Desktop \ blah.pcap" com o caminho absoluto para a sua captura de pacotes. Uma vez que você aperta enter, você verá todos os pacotes SYN da sua captura e um formato de tabela mais fácil de ler.
Agora, essa é uma captura de pacote aleatória que fiz de mim conectando-me ao How-To Geek Website, entre todas as outras conversas que o Windows está fazendo, posso dizer duas coisas com certeza:
- Minha rede local é 192.168.0.0/24
- Eu estou em uma caixa do Windows 7
Se você olhar para a primeira linha da tabela, verá que não estou mentindo, meu endereço IP é 192.168.0.84 meu TTL é 128 e meu tamanho de janela TCP é 8192, que corresponde aos valores do Windows 7.
A próxima coisa que vejo é um endereço 74.125.233.24 com um TTL de 44 e um tamanho de janela TCP de 5720, se eu olhar para minha tabela não há nenhum sistema operacional com um TTL de 44, no entanto, ele diz que o Linux que os servidores do Google executar tem um tamanho de janela TCP 5720. Depois de fazer uma pesquisa na web rápida do endereço IP, você verá que é de fato um servidor do Google.
O que mais você usa tshark.exe, diga-nos nos comentários.