É possível que o servidor DHCP determine o sistema operacional do cliente?
Estou trabalhando em uma ferramenta de monitoramento para gateways em redes locais baseada na Web e gostaria de poder determinar de alguma forma em qual SO um dispositivo da rede está executando e me parece o lugar mais óbvio para descobrir isso. a hora em que um endereço IP é atribuído pelo servidor DHCP.
Se isso não acontecer, eu sei como filtrar o tráfego na porta 80 e extrair as informações do cabeçalho HTML, mas esse método depende da espera do dispositivo para navegar na web e, portanto, menos desejável do que uma detecção / resolução muito precoce, esp. como nem todos os dispositivos serão usados para navegar na internet.
Eu tenho controle completo da configuração do gateway - está executando uma distribuição debian reduzida, portanto, qualquer outra ferramenta que faça o trabalho - DHCP, DNS, ARP, etc, estou aberta a sugestões!
fonte
Respostas:
Algum trabalho foi realizado para determinar diferenças sutis nos pacotes DHCP de diferentes sistemas operacionais, resultando em impressões digitais do DHCP. Os exemplos incluem as opções presentes na solicitação DHCP e sua ordem, e o conteúdo de certas opções, como a opção 55 (lista de parâmetros).
Veja os documentos e assinaturas em fingerbank.org . Isso sugere (ainda não o testei) a impressão digital passiva do SO com base no tráfego DHCP. O resultado pode ser melhorado incluindo outras informações, como propriedades IP genéricas (TTL, diffserv, ...).
A impressão digital ativa pode fornecer um resultado melhor, mas pode não ser uma opção no seu caso de uso.
O site do Fingerbank menciona alguns produtos de código aberto que usam as assinaturas. O dispositivo DHCP proprietário Infoblox parece incluir um recurso semelhante, mas nenhum detalhe técnico é fornecido.
fonte
Alguns clientes DHCP não divulgam com segurança as informações do SO na inicialização. Como foi mencionado acima, há alguma propriedade intelectual associada a essas técnicas; por exemplo, Infoblox e Cisco ISE podem criar perfis de SO do cliente com base nos pacotes dhcp que veem. Na verdade, o Cisco ISE inclui alguns algoritmos de classificação de SO bastante sofisticados, se você puder enviar mais do que dhcp para ele.
Como alternativa, você pode usar uma heurística como o bug do Windows no campo "segundos decorridos", mas confiar em um bug do SO é uma maneira ruim de lidar com a detecção do SO.
Se você realmente precisar detectar o sistema operacional sem um dispositivo de fornecedor dedicado, basta emitir um endereço IP e verificar o host com NMAP depois de enviar o DHCP Ack. O uso de cabeçalhos HTTP não é tão confiável quanto o nmap , porque qualquer um pode alterar a sequência de caracteres UserAgent, se desejar. O nmap não é 100% confiável na detecção do sistema operacional, mas é tão bom quanto você descobrirá se precisar escolher um método único para tudo.
Eu faria disso uma opção configurável no servidor, já que algumas pessoas podem não gostar de uma verificação nmap padrão em todos os hosts DHCP.
Exemplo de verificação do SO nmap no Windows7:
fonte
-T5
bandeira para acelerar as coisas drasticamente .Como parte do próprio processo DHCP, não acredito nisso. No entanto, você pode raspar seus logs do dhcpd, observar os dks do dhcp e, com base naqueles, executar um processo externo como o nmap os fingerprinting para ver se você consegue descobrir o que está por trás do IP que acabou de ser atribuído.
fonte
A resposta mais curta e precisa é não. Você já obteve respostas úteis
nmap
, mas se for via DHCP, muitos clientes enviam seus identificadores de classe de fornecedor (opção 60 do DHCP) em seus pacotes de descoberta, para que o servidor DHCP possa oferecer uma oferta com opções específicas do fornecedor (opção 43 do DHCP). Se você executar o tcpdump, consulte os pacotes de descoberta DHCP enviados pelos clientes para a opção 60. Você pode ver coisas comoMSFT 5.0
para clientes Windows,udhcpc
geralmente para dispositivos incorporados que executam o cliente micro dhcp, etc. Lembre-se de que essas informações não são muito específicas, pois são usadas para distinguir o cliente DHCP em vez do sistema operacional.fonte