Identificação Remota de Sistemas Operacionais Utilizando Análise de Processos Aleatórios e Redes Neurais Artificiais - PDF
Download "Identificação Remota de Sistemas Operacionais Utilizando Análise de Processos Aleatórios e Redes Neurais Artificiais"
Martín Pedroso Castel-Branco
1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO Identificação Remota de Sistemas Operacionais Utilizando Análise de Processos Aleatórios e Redes Neurais Artificiais João Paulo de Souza Medeiros Orientador: Prof. Dr. Agostinho de Medeiros Brito Júnior Dissertação de Mestrado apresentada ao Programa de Pós-graduação em Engenharia Elétrica e de Computação da UFRN (área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Mestre em Ciências. Número de ordem PPgEEC: M232 Natal, RN, junho de 2009
2 Divisão de Serviços Técnicos Catalogação da publicação na fonte. UFRN / Biblioteca Central Zila Mamede Medeiros, João Paulo de Souza. Identificação remota de sistemas operacionais utilizando análise de processos aleatórios e redes neurais artificiais / João Paulo de Souza Medeiros - Natal, RN, f. Orientador: Agostinho de Medeiros Brito Júnior. Dissertação (Mestrado) - Universidade Federal do Rio Grande do Norte. Centro de Tecnologia. Programa de Pós-graduação em Engenharia Elétrica e de Computação. 1. Sistemas operacionais identificação remota Dissertação. 2. TCP/IP Identificação de pilhas Dissertação. 3. Seguranças em redes industriais Dissertação. 4. Identificação de Honeypots Dissertação. I. Brito Júnior, Agostinho de Medeiros. II. Universidade Federal do Rio Grande do Norte. III. Título. RN/UF/BCZM CDU (043.3)
3 Identificação Remota de Sistemas Operacionais Utilizando Análise de Processos Aleatórios e Redes Neurais Artificiais João Paulo de Souza Medeiros Dissertação de Mestrado aprovada em 24 de junho de 2009 pela banca examinadora composta pelos seguintes membros: Prof. Dr. Agostinho de Medeiros Brito Júnior (orientador) DCA/UFRN Prof. Dr. Eduardo Bráulio Wanderley Netto IFRN Prof. Dr. Adrião Duarte Dória Neto DCA/UFRN Prof. Dr. Jorge Dantas de Melo DCA/UFRN Prof. Dr. Paulo Sérgio da Motta Pires DCA/UFRN
4 Aos meus pais, amigos e minha companheira, pela confiança, suporte e paciência em mim depositados.
5 Agradecimentos Ao meu orientador, Prof. Agostinho de Medeiros Brito Júnior, sou grato pela orientação e por todo o precioso conhecimento a mim repassado. Conste que este cumpriu seu papel com excelência e de forma amigável. Sou orgulhoso por ter sido seu primeiro orientado. Ao Prof. Paulo Sérgio da Motta Pires, pelo incentivo, compreensão e apoio. Sua exigência ajuda a descobrirmos de que somos feitos e do quão somos capazes. Sou grato também pelos valiosos conselhos e oportunidades, além do exemplo de profissionalismo. Aos Professores Adrião Duarte Dória Neto e Jorge Dantas de Melo pela clara demonstração de como conduzir a transferência do conhecimento de professor para aluno. À minha mãe, Maria Nerivan de Souza Medeiros, pela benção e incentivo, e por ter mostrado a mim que mãe é definição de esforço, determinação e lealdade. Ao meu pai, Josias Martinho de Medeiros. Por me influenciar com seus dons da paciência, superação e discernimento, além do apoio e suporte indispensáveis. Ao meu irmão, Luiz Paulo de Souza Medeiros, pela presença enriquecedora e por compartilhar de forma não linear os pontos críticos desta jornada. À minha companheira, Graciele Saionara Linhares de Lima, por sempre me ajudar a recuperar as forças e refletir sobre meus objetivos. Sua atenção e compreensividade foram fundamentais. Aos meus amigos e colegas de trabalho, Aguinaldo Bezerra Batista Junior, José Macedo Firmino Filho e Tiago Hiroshi Kobayashi, pelos comentários e sugestões pertinentes e pelas horas de trabalho compartilhadas. Ao meu amigo, João Batista Borges Neto, pelo apoio e discussões esclarecedoras, além do claro exemplo de coerência e objetividade. Ao grupo de desenvolvedores do Umit (especialmente ao Adriano Monteiro Marques e ao Luís A. Bastião Silva) pelo enriquecedor envolvimento no meu trabalho e pela oportunidade de inserção no mundo do desenvolvimento de código aberto. Ao grupo de desenvolvedores do Nmap (especialmente ao Gordon Fyodor Lion) pelos comentários, oportunidades e conhecimento ofertados. À Petrobras e a REDIC pelo suporte financeiro e ao LabSIN pela disponibilidade de equipamentos e local de trabalho.
6 Resumo É proposto um novo método para identificação remota de sistemas operacionais que operam em redes TCP/IP. Este método possui diversas aplicações relacionadas à segurança em redes de computadores e é normalmente adotado tanto em atividades de ataque quanto de defesa de sistemas. O método proposto é capaz de obter sucesso em situações onde diversas soluções atuais falham, inclusive no tratamento com dispositivos possivelmente vulneráveis ao processo de identificação. O novo método realiza a análise dos geradores de números aleatórios usados nas pilhas TCP/IP e, através do uso de redes neurais artificiais, cria mapas que representam o comportamento destes geradores. Tais mapas são usados para comparação com mapas rotulados que representam sistemas já conhecidos, concretizando o processo de identificação. Palavras-chave: Identificação Remota de Sistemas Operacionais, Identificação de Pilha TCP/IP, Segurança em Redes de Computadores, Identificação de Honeypots.
7 Abstract A new method to perform TCP/IP fingerprinting is proposed. TCP/IP fingerprinting is the process of identify a remote machine through a TCP/IP based computer network. This method has many applications related to network security. Both intrusion and defence procedures may use this process to achieve their objectives. There are many known methods that perform this process in favorable conditions. However, nowadays there are many adversities that reduce the identification performance. This work aims the creation of a new OS fingerprinting tool that bypass these actual problems. The proposed method is based on the use of attractors reconstruction and neural networks to characterize and classify pseudo-random numbers generators. Keywords: OS fingerprinting, TCP/IP fingerprinting, Network Security, Honeypots Indentification.
8 Sumário Sumário Lista de Figuras Lista de Tabelas Lista de Exemplos Lista de Algoritmos Glossário i iii vi vii ix xi 1 Introdução Aplicações e motivação Processo seletivo de intrusão Auxílio na exploração de vulnerabilidade Engenharia social Determinação de máquinas vulneráveis Inventário e detecção de dispositivos não-autorizados Funcionamento, componentes e subprocessos Planejamento e desafios Eficiência Eficácia Detectabilidade Tratabilidade Confiabilidade Histórico Objetivo e organização do trabalho Identificação da pilha TCP/IP Funcionamento Metodologias Testes de eficácia Nmap SinFP
9 2.3.3 Xprobe Testes de eficácia na presença de firewall Tradução de endereço Normalização de pacotes Intermediação de sincronização Testes de confiabilidade Nmap SinFP Xprobe Proposta Fundamentação Atratores e Espaço de Fase Debian FreeBSD NetBSD OpenBSD OpenSolaris Windows Windows XP Honeyd Detecção do SYN proxy do PF Mapas auto-organizáveis Processo competitivo Processo cooperativo Processo adaptativo Algoritmo e considerações Utilização Pós-processamento Distância de Hausdorff Extensões Implementação e resultados Caracterização Classificação Conclusão Trabalhos futuros A Atratores em Espaço de Fase 3D 72 A.1 Debian A.2 FreeBSD A.3 NetBSD A.4 OpenBSD A.5 OpenSolaris
10 A.6 Windows A.7 Windows XP B Desempenho das métricas 91 Referências Bibliográficas 108 Publicações e premiações 113 Índice Remissivo 115
11 Lista de Figuras 1.1 Representação gráfica do processo de OS fingerprinting Ilustração dos dois tipos de aquisição de dados Camadas do modelo TCP/IP e sua influência em OS fingerprinting Três máquinas interligadas através de uma rede local Formato da mensagem ICMP Echo Request e Echo Reply [Postel 1981a] Formato do cabeçalho do datagrama IP [Postel 1981b] Formato do cabeçalho do segmento TCP [Postel 1981c] Formato do cabeçalho do datagrama UDP [Postel 1980] Primeiro ambiente de testes utilizado Exemplo de utilização de firewall Segundo ambiente de testes utilizado (utilizando Honeyd e PF) Funcionamento de um SYN proxy Ilustração da aquisição de amostras de TCP ISNs Esboço das series formadas por 100 amostras de ˆR(t) amostras da função ˆR(t) do Debian Atrator do Debian Atrator do Debian (ampliado de a ) Atrator do Debian (ampliado de a ) amostras da função ˆR(t) do FreeBSD Atrator do FreeBSD amostras da função ˆR(t) do NetBSD Atrator do NetBSD amostras da função ˆR(t) do OpenBSD Atrator do OpenBSD amostras da função ˆR(t) do OpenSolaris Atrator do OpenSolaris amostras da função ˆR(t) do Windows Atrator do Windows amostras da função ˆR(t) do Windows XP Atrator do Windows XP amostras da função ˆR(t) do Honeyd amostras ruidosas da função ˆR(t) do Honeyd Atrator do Honeyd (pontos destacados usando ) Atrator do Honeyd (pontos normais em e ruidosos em )
12 (cem mil) amostras da função ˆR(t) do SYN proxy do PF Estrutura da rede neural SOM 4 3 para uma entrada bidimensional Resultado do treinamento da rede SOM para cada atrator Pós-procedimento da rede SOM em relação à densidade do atrator Pós-procedimento da rede SOM em relação ao fluxo do atrator Ilustração das distâncias de Hausdorff entre dois conjuntos de pontos Contextualização do subprocesso de caracterização Contextualização do subprocesso de classificação Avaliação relativa das métricas N s (X,Y,α) e M s (X,Y,β) Avaliação absoluta das métricas N s (X,Y,α) e M s (X,Y,β) A.1 Atrator do Debian A.2 Plano XY do atrator do Debian A.3 Plano Y Z do atrator do Debian A.4 Plano XZ do atrator do Debian A.5 Atrator do Debian (ampliado de a ) A.6 Plano XY do atrator do Debian (ampliado de a ) A.7 Plano Y Z do atrator do Debian (ampliado de a ) A.8 Plano XZ do atrator do Debian (ampliado de a ) A.9 Atrator do Debian (ampliado de a ) A.10 Plano XY do atrator do Debian (ampliado de a ) A.11 Plano Y Z do atrator do Debian (ampliado de a ) A.12 Plano XZ do atrator do Debian (ampliado de a ) A.13 Atrator do FreeBSD A.14 Plano XY do atrator do FreeBSD A.15 Plano Y Z do atrator do FreeBSD A.16 Plano XZ do atrator do FreeBSD A.17 Atrator do NetBSD A.18 Plano XY do atrator do NetBSD A.19 Plano Y Z do atrator do NetBSD A.20 Plano XZ do atrator do NetBSD A.21 Atrator do OpenBSD A.22 Plano XY do atrator do OpenBSD A.23 Plano Y Z do atrator do OpenBSD A.24 Plano XZ do atrator do OpenBSD A.25 Atrator do OpenSolaris A.26 Plano XY do atrator do OpenSolaris A.27 Plano Y Z do atrator do OpenSolaris A.28 Plano XZ do atrator do OpenSolaris A.29 Atrator do Windows A.30 Plano XY do atrator do Windows A.31 Plano Y Z do atrator do Windows A.32 Plano XZ do atrator do Windows A.33 Atrator do Windows XP
13 A.34 Plano XY do atrator do Windows XP A.35 Plano Y Z do atrator do Windows XP A.36 Plano XZ do atrator do Windows XP B.1 Gráfico da evolução de α para o Debian B.2 Gráfico da evolução de β para o Debian B.3 Gráfico da evolução de α para o FreeBSD B.4 Gráfico da evolução de β para o FreeBSD B.5 Gráfico da evolução de α para o Honeyd B.6 Gráfico da evolução de β para o Honeyd B.7 Gráfico da evolução de α para o NetBSD B.8 Gráfico da evolução de β para o NetBSD B.9 Gráfico da evolução de α para o OpenBSD B.10 Gráfico da evolução de β para o OpenBSD B.11 Gráfico da evolução de α para o OpenSolaris B.12 Gráfico da evolução de β para o OpenSolaris B.13 Gráfico da evolução de α para o Windows B.14 Gráfico da evolução de β para o Windows B.15 Gráfico da evolução de α para o Windows XP B.16 Gráfico da evolução de β para o Windows XP
14 Lista de Tabelas 1.1 Etapas de um procedimento de intrusão Exemplo de base de dados de assinaturas Discriminação das ferramentas de TCP/IP stack fingerprinting utilizadas Sistemas operacionais utilizados, suas respectivas versões e endereços Portas utilizadas nos testes de eficácia Resultado a avaliação das ferramentas Amostras da função G isn (t) dos sistemas operacionais analisados Amostras estimadas ˆR(t) dos sistemas operacionais analisados Média amostral e desvio padrão das amostras de ˆR(t) Classificação utilizando α = 0,1 e β = 0,
15 Lista de Exemplos 1.1 Mensagem enviada pela máquina L para a máquina R Resposta enviada pela máquina R para a máquina L Acesso ao serviço HTTP de maquina1.example.com Resposta da maquina1.example.com à requisição HTTP Resposta da maquina2.example.com à requisição HTTP Acesso anônimo ao serviço FTP Acesso ao serviço Telnet Exemplo de detalhe de implementação da pilha TCP/IP Resultado do Nmap para o Debian Resultado do Nmap para o FreeBSD Resultado do Nmap para o NetBSD Resultado do Nmap para o OpenBSD Resultado do Nmap para o OpenSolaris Resultado do Nmap para o Windows Resultado do Nmap para o Windows XP Resultado do SinFP para o Debian Resultado do SinFP para o FreeBSD Resultado do SinFP para o NetBSD Resultado do SinFP para o OpenBSD Resultado do SinFP para o OpenSolaris Resultado do SinFP para o Windows Resultado do SinFP para o Windows XP Resultado do Xprobe2 para o Debian Resultado do Xprobe2 para o FreeBSD Resultado do Xprobe2 para o NetBSD Resultado do Xprobe2 para o OpenBSD Resultado do Xprobe2 para o OpenSolaris Resultado do Xprobe2 para o Windows Resultado do Xprobe2 para o Windows XP Arquivo de configuração (/etc/pf.conf) da firewall PF Resultado do Nmap na presença de PAT Resultado do Nmap na presença de PAT (porta 80) Resultado do SinFP na presença de PAT (porta 22) Resultado do SinFP na presença de PAT (porta 80) Resultado do Xprobe2 na presença de PAT
16 2.29 Resultado do Nmap na presença de Normalização (porta 22) Resultado do Nmap na presença de Normalização (porta 80) Resultado do Nmap na presença de SYN proxy (porta 80) Resultado do SinFP na presença de SYN proxy (porta 80) Arquivo de configuração (/etc/honeyd.conf) do Honeyd Resultado do Nmap na presença do Honeyd emulando Linux Resultado do Nmap na presença do Honeyd emulando Windows Resultado do SinFP na presença do Honeyd emulando Linux Resultado do SinFP na presença do Honeyd emulando Windows Resultado do Xprobe2 na presença do Honeyd emulando Linux Resultado do Xprobe2 na presença do Honeyd emulando Windows Função do Honeyd responsável pela geração de TCP ISNs Mensagens de resposta de um SYN proxy para portas de origem distintas. 53
17 Lista de Algoritmos 1.1 Exemplo de procedimento de caracterização de OS fingerprinting ativo Exemplo de procedimento de caracterização de OS fingerprinting passivo Exemplo de procedimento de classificação (matching) Algoritmo de treinamento da rede SOM Procedimento de caracterização proposto Procedimento de classificação proposto
18 Glossário Convenções 1 A utilização de letras minúsculas em negrito em equações, denotam vetores ou variáveis aleatórias (por exemplo, x). A utilização de letras maiúsculas em negrito, denotam matrizes (por exemplo A). 2 Números precedidos por 0x estão representados na base hexadecimal. 3 A média amostral µ x apresentada em vários pontos deste documento é calculada como segue: µ x = 1 N N i=1 A variância σ 2 x é calculada com base na média amostral µ x e é definida como segue: σ 2 x = 1 N N i=1 x i. (x i µ x ) 2. Em ambas as equações apresentadas, N indica o número de amostras da variável aleatória x e x i a i-ésima amostras da mesma variável aleatória. 4 Em formulações do tipo a b assumir que a métrica utilizada é a distância Euclidiana, a menos que, seja indicado o contrário. 5 O conteúdo das mensagens dos protocolos de rede é apresentado de forma similar ao encontrado no exemplo a seguir: BC 35 7A 8B A z... v!.... E E A DD C0 A C0 A8. b. Z Esta ilustração deve ser interpretada da seguinte forma: do lado esquerdo, exterior ao quadro tem-se a numeração de blocos de 128 bits (ou 16 bytes). Ainda do lado esquerdo, porém na parte interior ao quadro, tem-se o conteúdo da mensagem. Finalmente do lado direito é ilustrado o conteúdo no formato ASCII, quando o valor correspondente na mensagem pode ser representado, caso contrário, um ponto (. ) é utilizado.
19 Siglas ADSL ASCII DDoS DNS DoS EOL FTP GCD GNG HTTP IANA ICMP IDS IP ISN LAN NAT NAPT MDC OS PPPoE PRNG RFC SO SOM PAT SSH TCP UDP VoIP WLAN Asymmetric Digital Subscriber Line American Standard Code for Information Interchange Distributed Denial of Service Domain Name System Denial of Service End of Line File Transfer Protocol Greatest Common Divisor Growing Neural Gas HyperText Transfer Protocol Internet Assigned Numbers Authority Internet Control Message Protocol Intusion Detection System Internet Protocol Initial Sequence Number Local Area Network Network Address Translation Network Address Port Translation Máximo Divisor Comum Operating System Point-to-Point Protocol over Ethernet Pseudo-Random Number Generator Request for Comments Sistema Operacional Self-Organizing Map Port Address Translation Secure Shell Transmission Control Protocol User Datagram Protocol Voice over Internet Protocol Wireless Local Area Network Simbologia µ x Média da variável aleatória x µ s Média amostral de s σ s Desvio padrão de s σ 2 s Variância de s ˆf(x) Estimativa da função f(x) XY Plano composto pelos eixos X e Y
20 Capítulo 1 Introdução A identificação remota de sistemas operacionais, ou OS fingerprinting (Operating System fingerprinting), é um processo que tem como finalidade a descoberta do sistema operacional de uma máquina remota. Entenda-se por remota uma máquina que é acessível por meio de uma rede de computadores. Esta identificação é realizada a partir da utilização de dados originados da máquina remota. As técnicas usadas para esse fim diferem entre si de acordo com os dados que eles utilizam e com a forma como esses dados são adquiridos. A forma com que estes dados são adquiridos depende da aplicação fim da identificação. Neste capítulo, serão apresentadas as aplicações e será definido todo o processo de identificação, além dos requisitos a serem considerados no projeto de uma ferramenta. Alguns métodos clássicos de identificação também são exemplificados. 1.1 Aplicações e motivação Diversas são as aplicações do processo de OS fingerprinting. Geralmente estão relacionadas ao gerenciamento e segurança de redes de computadores baseadas na pilha de protocolos TCP/IP (Transmission Control Protocol/Internet Protocol) e podem estar envolvidas tanto em procedimentos de ataques (ou intrusão) quanto de gerenciamento e proteção de redes de computadores. Porém, os próprios procedimentos de intrusão podem ser utilizados pelos gerentes de rede a fim de descobrir a vulnerabilidades da rede e tomar as devidas precauções Processo seletivo de intrusão As motivações que levam um indivíduo a invadir computadores são muitas vezes desconhecidas. Porém, o procedimento para realizar esta tarefa possui etapas bem definidas, apresentadas na Tabela 1.1. Nessa tabela, o procedimento de intrusão é dividido em 6 etapas distintas, sendo que cada uma delas depende de alguma forma da anterior. Nem sempre todas as etapas estão presentes, mas algumas delas são obrigatórias, pois sem elas os parâmetros necessários para a realização do ataque não seriam conhecidos. Mesmo assim, em alguns casos, etapas importantes são descartadas por serem passíveis de identificação, dando à máquina alvo a chance de se defender do possível ataque. A não execução das
21 Capítulo 1. Introdução 2 etapas 3, 4, ou 5 da Tabela 1.1 faz com que um ataque seja feito as cegas, implicando em um número maior de tentativas e, conseqüentemente, em uma perda de tempo maior. N o Etapa Motivação 1 Escolher alvo Pessoal, profissional, etc. 2 Identificar alvo Descobrir endereço do alvo (Internet). 3 Port-scan Descobrir portas abertas. 4 Service fingerprinting Identificar serviços. 5 OS fingerprinting Identificar sistema operacional. 6 Atacar alvo Utilizar programas que exploram vulnerabilidades. Tabela 1.1: Etapas de um procedimento de intrusão. Para ilustrar uma situação básica de intrusão, considere um exemplo em que um atacante tem como objetivo encontrar máquinas na Internet que possuam as portas 80/TCP e 22/TCP abertas e que executem algum sistema operacional baseado em Unix. Neste sentido, o atacante utiliza um programa que tenta identificar essas duas portas abertas em endereços quaisquer na Internet. O interesse na porta 80/TCP está relacionado a uma vulnerabilidade de uma versão especifica de um servidor HTTP (HyperText Transfer Protocol) que possibilita acesso a arquivos protegidos do sistema. Sistemas operacionais baseados em Unix possuem um arquivo localizado em /etc/shadow ou /etc/passwd que possui os nomes de usuários e suas senhas encriptadas. O atacante quer, de posse desse arquivo, desvendar as senhas dos usuários utilizando ferramentas adequadas. Ao desvendar uma senha, o atacante poderá utilizá-la para obter acesso à máquina remota através do serviço SSH (Secure Shell) disponível pela porta 22/TCP. Neste exemplo, as etapas de escolha do alvo e sua identificação na Internet são realizados de forma aleatória. Porém, as etapas de port-scan, service e OS fingerprinting foram utilizadas e são primordiais para desempenhar o ataque em questão. Port-scan consiste na tarefa de procurar por portas abertas em uma máquina remota [Fyodor 1997]. Mesmo após descobrir que as portas almejadas estão abertas, o atacante tem que verificar se a versão da aplicação que oferece o serviço associado àquela porta é vulnerável. Esta tarefa, denominada service fingerprinting, ou identificação de serviço, é normalmente realizada através de técnicas de inspeção de protocolos [Fyodor 2009b]. Nesse exemplo particular, a detecção do sistema operacional (OS fingerprinting) da máquina remota teve como finalidade descartar máquinas que provavelmente não possuiriam os arquivos desejados Auxílio na exploração de vulnerabilidade Mesmo quando é descoberta uma vulnerabilidade que é passível de exploração, é preciso saber qual sistema operacional hospeda o serviço vulnerável. Isto se deve ao fato de que, para explorar vulnerabilidades como estouro de pilha, ou buffer overflow, é geralmente necessária a utilização de código em assembly, que por sua vez, é dependente da arquitetura e do sistema operacional utilizado na máquina vulnerável. É comum o serviço deixar de operar normalmente se o código assembly enviado não for o adequado.
22 1.1. Aplicações e motivação 3 Caso o atacante conheça o sistema operacional do alvo, este contratempo é evitado, dando a chance de explorar a vulnerabilidade e e de não ter que que esperar a reativação do serviço para tentar invadir novamente [Fyodor 1998, Fyodor 2006, Fyodor 2009b] Engenharia social Saber quais dispositivos são utilizados pela organização que se pretende atacar pode também facilitar o processo de invasão. Considere o papel de um atacante que tem como objetivo obter uma lista das ligações VoIP (Voice over Internet Protocol) originadas e recebidas de uma determinada empresa. Ao realizar OS fingerprinting nas máquinas da rede de uma empresa ele encontra um gateway VoIP. De posse dessa informação o atacante cria uma atualização maliciosa para esse dispositivo que envia uma mensagem de texto para um pré-definido com a lista de chamadas realizadas na última hora. Logo após, o atacante contacta o setor de gerência do sistema VoIP da empresa dizendo ser um engenheiro da empresa que fabrica o gateway VoIP encontrado e que foi detectada uma falha de segurança no firmware do equipamento em questão. Em seguida o atacante pergunta para qual endereço de ele deve enviar o programa de atualização do dispositivo. Convencido pelas informações fornecidas pelo atacante, o administrador resolve repassar o endereço para envio da atualização e posteriormente instalá-la [Fyodor 2009b] Determinação de máquinas vulneráveis Eventualmente, são descobertas falhas de segurança em serviços básicos instalados por padrão em alguns sistemas operacionais. Em dezembro de 2004, por exemplo, a Sun publicou um alerta (Sun Alert 57659) que descreve um problema de segurança no serviço in.rwhod presente no sistema operacional Solaris. Para solucionar esse problema é necessário aplicar uma correção que remove a vulnerabilidade. Suponha que em uma determinada rede de servidores de uma grande empresa de serviços de hospedagem existem dezenas de computadores que utilizam diferentes versões desse sistema operacional. Sabe-se que a vulnerabilidade é presente nas versões 7, 8 e 9 do Solaris. Caso o administrador dessa rede opte por verificar uma máquina de cada vez, ele pode desperdiçar um tempo considerável com máquinas que possuam uma versão 10 ou uma versão mais antiga do Solaris. Enquanto o administrador verifica cada um de seus servidores, um atacante, que acaba de escrever um programa malicioso que provê acesso de superusuário às máquinas com a vulnerabilidade publicada, pode invadir um de seus servidores. O administrador pode evitar um desperdício de tempo substancial se utilizar OS fingerprinting para descobrir quais de seus servidores utilizam as versões afetadas do sistema operacional [Fyodor 2009b] Inventário e detecção de dispositivos não-autorizados Em redes controladas e com políticas de segurança rígidas podem existir restrições relacionadas à utilização de sistemas operacionais considerados inseguros. Por exem-