UNIVERSIDADE ESTÁCIO DE SÁ LETÍCIA MARTINS MAITHÊ RODRIGUES MARCELA ROSA TAYNA BARROSO VULNERABILIDADE EM SISTEMA OPERACIONAL RIO DE JANEIRO 2015 1 UNIVERSIDADE ESTÁCIO DE SÁ LETÍCIA MARTINS MAITHÊ RODRIGUES MARCELA ROSA TAYNA BARROZO VULNERABILIDADE EM SISTEMA OPERACIONAL Trabalho apresentado à disciplina de Segurança da Informação do Curso técnico de informática para Web da Universidade Estácio de Sá como requisito parcial para avaliação bimestral. RIO DE JANEIRO 2015 2 VULNERABILIDADE EM SISTEMA OPERACIONAL Resumo: Este módulo trata dos principais aspectos de vulnerabilidade em sistema operacional. Inicialmente são apresentados conceitos básicos de segurança;em seguida, são descritos aspectos conceituais e mecanismos relacionados à autenticação de usuários, controle de acesso a recursos e serviços, integridade e privacidade do sistema operacional, das aplicações e dos dados armazenados. VULNERABILIDADE EM SISTEMA OPERACIONAL 3 Sumário: Vulnerabilidade ..................................................................................................5 Vulnerabilidades do Windows...........................................................................5.5 Buffer Overflow.................................................................................................5.5 Exemplo.................................................................................................5.6 Proteção contra Buffer Overflow............................................................7.7 Proteção ponteiro...................................................................................7.7 Cross-site scripting (xss)......................................................................................9 Ataque....................................................................................................9.9 Não persistente......................................................................................9.9 Proteção...............................................................................................9.10 Validação de Entrada...........................................................................9.10 Validação de Saída............................................................................10.11 Vírus Lovsan......................................................................................................11 Sintomas da infecção.........................................................................11.11 Erradicar o vírus.................................................................................11.11 Worm-Vírus........................................................................................................13 Combatendo o worm-vírus.................................................................13.13 Observação........................................................................................13.14 Vulnerabilidade Mac..........................................................................................15 Ataques dirigidos................................................................................15.15 Infecções de redes Mac-PC...............................................................15.15 Vulnerabilidade Linux.........................................................................................16 Conclusão..........................................................................................................18 Referencias Bibliográficas ................................................................................19 4 Vulnerabilidade Em segurança de computadores, uma vulnerabilidade é uma fraqueza que permite que um atacante reduza a garantia da informação de um sistema. Vulnerabilidade é a interseção de três elementos: uma suscetibilidade ou falha do sistema, acesso do atacante à falha e a capacidade do atacante de explorar a falha.Para explorar uma vulnerabilidade, uma atacante deve ter pelo menos uma ferramenta ou técnica aplicável que possa conectar a uma fraqueza do sistema. Desta forma, vulnerabilidade também é conhecida como superfície de ataque. Gerenciamento de vulnerabilidade é a prática cíclica de identificar, classificar, remediar e mitigar vulnerabilidades. Esta prática geralmente refere-se a vulnerabilidades de software nos sistemas de computador. Esta mesma pode ser explorada em um determinado sistema ou serviço vulnerável que esteja rodando na máquina. Vulnerabilidades do Windows Buffer Overflow Em segurança de computadores e programação, um estouro de buffer, ou saturação de buffer, é uma anomalia em que um programa, ao escrever dados para um tampão, derrapagens limite do buffer e substitui adjacentes de memória locais. Este é um caso especial de violação da segurança de memória. Estouro de buffer pode ser desencadeado por fatores de produção que são projetados para executar código ou alterar a forma como o programa funciona. Isso pode resultar em um comportamento errático do programa, incluindo erros de memória de acesso, incorretas, os resultados de um acidente ou uma violação da segurança do sistema. As linguagens de programação comumente associados com estouros de buffer incluem C e C++, que não fornecem nenhuma proteção embutida contra o acesso ou substituição de dados em qualquer parte da memória e não verificar automaticamente os dados gravados em uma matriz (o built-in tipo buffer) está dentro os limites dessa matriz. Um buffer overflow ocorre quando dados gravados em um tampão também corrompe os valores de dados em endereços de memória adjacentes à reserva destino, devido à insuficiência de verificação de limites. Isso pode ocorrer 5 quando copiar dados de um buffer para outro sem primeiro verificar que os dados se encaixam dentro do buffer de destino. Exemplo Para mais detalhes sobre estouros baseadas em pilha, consulte Pilha de estouro de buffer. No exemplo a seguir, um programa tem dois elementos de dados que são adjacentes na memória: um string buffer de 8 bytes de comprimento, A, e um dois-byte big-endianinteiro,B. Char A [8] = "“; Não assinado curto B = 1,979; Inicialmente, A contém nada além de zero bytes, e B contêm o número 1979. Nome da variável A B Valor [cadeia nula] 1979 Valor hexadecimal 00 00 00 00 00 00 00 00 07 BB Agora, o programa tenta armazenar a cadeia terminada com nulo “Excessivo” com ASCII codificação no tampão A. Strcpy (A, “Excessivo”); “Excessivo” é de 9 caracteres de comprimento e codifica para 10 bytes, incluindo o terminador, mas um pode tomar apenas 8 bytes. Ao não verificar o comprimento da corda, ele também substitui o valor de B: Nome da variável A B Valor 'E' 'X' 'C' 'E' 'S' 'S' 'Eu' 'V' 25856 Feitiço 65 78 63 65 73 73 69 76 65 00 Valor do B já foi inadvertidamente substituído por um número formado a partir de parte da cadeia de caracteres. Neste exemplo, "e", seguida por um zero byte se tornaria 25.856. 6 Escrevendo dados passados ao final de memória alocada às vezes pode ser detectado pelo sistema operacional para gerar uma falha de segmentação de erro que encerra o processo. Medidas de proteção Várias técnicas têm sido utilizadas para detectar ou evitar sobrecargas de buffer, com várias vantagens e desvantagens. A maneira mais confiável para evitar ou prevenir buffer overflows é usar proteção automática no nível da linguagem. Este tipo de proteção, no entanto, não pode ser aplicado a código legado, e muitas vezes técnico, negocial ou restrições culturais chamar para uma linguagem vulnerável. As seções seguintes descrevem as opções e implementações disponíveis. Proteção contra buffer overflow Proteção contra buffer overflow é usado para detectar os buffer overflows mais comuns, verificando que a pilha não foi alterado quando uma função retorna. Se ele tiver sido alterada, o programa sai com uma falha de segmentação . A implementação da Microsoft de Data ExecutionPrevention modo (DEP) protege explicitamente o ponteiro para a StructuredExceptionHandler (SEH) de ser substituído. Mais forte proteção pilha é possível através da divisão da pilha em duas: uma para dados e outra para função retorna. Esta divisão está presente na linguagem Forth. Embora não fosse uma decisão de design baseada em segurança. Independentemente disso, esta não é uma solução completa para o buffer overflows, como outros do que o endereço de retorno de dados sensíveis ainda pode ser substituído. Proteção ponteiro Buffer overflows trabalho manipulando ponteiros (incluindo endereços armazenados). PointGuard foi proposto como um compilador de extensão para impedir que os atacantes sejam capazes de manipular de forma confiável ponteiros e endereços. A abordagem funciona por ter o código compilador addto automaticamente ponteiros XOR-codificam antes e depois que eles são usados. Porque o atacante (teoricamente) não sabe o valor será usado para codificar / decodificar o ponteiro, ele não pode prever o que irá apontar para ele se substitui-lo com um novo valor. PointGuard nunca foi lançado, mas a Microsoft implementou uma abordagem semelhante começando no Windows Server 2003 SP1 e Windows XP SP2. Ao invés de implementar a proteção ponteiro como um recurso automático, a Microsoft adicionou uma rotina de API que pode ser chamado a critério do programador . Isto permite um melhor 7 desempenho (porque não é usado o tempo todo), mas coloca o ónus sobre o programador para saber quando é necessário. Porque XOR é linear, um invasor pode ser capaz de manipular um ponteiro codificado, substituindo apenas os bytes mais baixos de um endereço. Isso pode permitir que um ataque de sucesso se o atacante é capaz de tentar a façanha várias vezes ou é capaz de completar um ataque de causando um ponteiro para apontar para um dos vários locais (como qualquer local dentro de um trenó NOP). Microsoft adicionou uma rotação aleatória ao seu esquema de codificação para abordar esta fraqueza para substituições parciais. 8 Cross-site scripting (XSS) É um tipo de vulnerabilidade do sistema de segurança de um computador, encontrado normalmente em aplicações web que activam ataques maliciosos ao injectarem client-side script dentro das páginas web vistas por outros usuários. Um script de exploração de vulnerabilidade cross-site pode ser usado pelos atacantes para escapar aos controlos de acesso que usam a política de mesma origem. Ataque Através de um XSS, o cracker injeta códigos JavaScript em um campo texto de uma página já existente e este JavaScript é apresentado para outros usuários, porque persiste na página. Exemplo de ataque: Imaginem que o cracker insira, em um fórum de um website alvo de ataque, um texto que contenha um trecho de JavaScript. Este JavaScript poderia, por exemplo, simular a página de login do site, capturar os valores digitados e enviá-los a um site que os armazene. Quando o texto do fórum for apresentado a outros usuários, um site atacado pelo XSS exibirá o trecho de JavaScript digitado anteriormente nos browsers de todos os outros usuários, provocando a brecha de ataque. O invasor envia um script para o servidor: <script>malicious.js... = SYN onde o servidor recebe o script e interpreta uma nova página inserindo o código como resposta da requisição ao atacante = SYN/ACK. Por fim, o atacante recebe a resposta em seu browser = ACK Se você estiver usando plugins/extensões em seu navegador como: NoScript ou o Google chrome com o "XSS Auditor" habilitado, os ataques de Cross Site Scripting emsites que estejam vulneráveis não irão funcionar. Não persistente: A vulnerabilidade cross-site scripting não persistente (ou refletida) é, de longe, o tipo mais comum. Estas falhas aparecem quando os dados fornecidos por um cliente web, mais comumente em parâmetros de consulta HTTP ou envios de formulários HTML, é imediatamente utilizado pelos scripts do lado do servidor para analisar e exibir uma página de resultados de e para o usuário, sem a limpeza adequada do pedido. Como os documentos HTML têm uma estrutura plana e serial que mistura instruções de controle, formatação e conteúdo real, 9 todos os dados fornecidos pelo usuário, não validados incluídos na página resultante sem codificação HTML adequada, pode levar a injeção de marcação. Persistente A vulnerabilidade XSS persistente (ou armazenados) é uma variante mais devastadora de uma falha de script cross-site: ocorre quando os dados fornecidos pelo atacante são salvos pelo servidor e, em seguida, exibidos em páginas "normais" retornadas para outros usuários no curso de uma navegação normal, sem HTML adequada. Proteção Apesar de várias ocorrências de XSS e das diferentes formas de exploração, impedir a própria vulnerabilidade é conceitualmente simples. O que a torna problemática na prática é a dificuldade de identificar todos os campos da aplicação onde há dados manipulados pelo usuário e que serão posteriormente exibidos em tela. A causa do XSS refletido e persistente é que estes dados são inseridos em respostas da aplicação sem validação. Para eliminar tais vulnerabilidades, o primeiro passo é identificar todas as instâncias dentro da aplicação em que os dados são colocados nas respostas das requisições. Uma vez identificados os locais destes dados, é necessário realizar os seguintes procedimentos: Validação de Entrada Validação de Saída Validação da entrada Este é o momento em que a aplicação recebe os dados fornecidos pelo usuário, que podem ser apresentados em respostas futuras. É necessário que a aplicação realize uma validação dentro do contexto daquele conteúdo, tornando-o mais restrito possível, por exemplo: Limitando o tamanho do campo a ser inserido Definindo o conjunto de caracteres aceito pela aplicação Estabelecendo uma expressão regular para os dados Estas regras de validações variam de acordo com o campo e com o contexto da aplicação, por exemplo, nomes, endereços de e-mails, números de contas e cartões, ou seja, de acordo com o tipo de informação, espera-se um formato pré-determinado de conteúdo. Validação da Saída 10 Agora é a vez da aplicação copiar em suas respostas os dados que originados por algum usuário ou até mesmo por terceiros. Estes dados devem ser codificados em HTML para tratar potenciais caracteres maliciosos. Vírus LovSan Aparecido durante o Verão de 2003, o vírus LovSan (conhecido igualmente sob os nomes W32/Lovsan.worm, W32/Lovsan.worm.b, W32.Blaster.Worm, W32/Blaster-B, WORM_MSBLAST.A, MSBLASTER, Win32.Poza, Win32.Posa.Worm, Win32.Poza.B) é o primeiro vírus explorar a falha RPC/DCOM (Remote Procedure Call, ou seja, em português, chamada de procedimento distante) dos sistemas Microsoft Windows que permitem a processos distantes comunicar. Explorando a falha graças a uma profusão de tampão, um programa malicioso (como o vírus LovSan) pode tomar o controlo da máquina vulnerável. Os sistemas afectados são os sistemas Windows NT 4.0,2000, XP e Windows Server 2003. Sintomas da infecção: A exploração da vulnerabilidade RPC provoca diversos disfuncionamentos nos sistemas afetados, vinculados à desativação do serviço RPC (Processo svchost.exe/rpcss.exe). Os sistemas vulneráveis apresentam os sintomas seguintes: Copiar/colar defeituosos ou impossíveis Abertura de uma ligação hipertexto numa nova janela impossível Deslocação de ícones impossíveis Função busca de ficheiro de windows errática Encerramento da porta 135/TCP Reinício de Windows XP: o sistema é incessantemente relançadopor AUTORIDADE NT/system com a mensagem (s) seguinte (s): <preclass="code">Windows deve agora arrancar porque o serviço chamada de procedimento distante (RPC) terminou de maneira inesperada Erradicar o vírus Para erradicar o verme LovSan, o melhor método consiste, em primeiro lugar, em desinfectar o sistema com a ajuda do conjunto de desinfecção seguinte : Fazer o download do conjunto de desinfecção Se o seu sistema reiniciar continuamente, é necessário desativar o reinício automático: 11 Inicialmente, faça Iniciar/executar e seguidamente escreva o comando seguinte que permite adiar o reinício automático: Shutdown-a. Clique em O meu computador com o botão direito. Clique em Propriedades/Avançado/Arranque e recuperação/Parâmetros Desmarque o compartimento “arrancar automaticamente”! Poderá restabelecer esta opção quando o seu sistema funcionar de novo normalmente. É seguidamente indispensável atualizar o sistema com a ajuda do serviço Windows Update ou atualizando o seu sistema com o patch correspondente de acordo com o seu sistema de exploração. Patch para Windows 2000 Patch para Windows XP 12 Worm-vírus A mensagem de erro a seguir ou outro erro semelhante aparece antes de o computador ser automaticamente desligado: Este sistema está sendo desligado. Salve todo o trabalho em andamento e faça logoff. Quaisquer alterações não salvas serão perdidas. Este desligamento foi iniciado pela AUTORIDADE/SISTEMA NT. Tempo antes de desligar: Mensagem 00:00:XX: O Windows precisa ser reiniciado agora porque o serviço de chamada de procedimento remoto (RPC - Remote Procedure Call) foi encerrado inesperadamente. Figura: A mensagem de erro real Outros sintomas podem incluir instabilidade, panes e vulnerabilidade do sistema. Esse erro provavelmente é causado por um vírus do tipo worm conhecido como Blaster, LoveSan, MSBlaster ou Welchia (também pode ter outros nomes e variações). O worm pode explorar uma vulnerabilidade da segurança em computadores desprotegidos que estejam executando o Microsoft Windows XP ou Windows 2000. Ele afeta os sistemas que não possuam o patch da Microsoft instalado MS03-039. Encontrar o arquivo "Msblast.exe" indica que o vírus está ativo em seu computador. Entretanto, esse arquivo não está presente em todas as variantes do worm. Mesmo que você não encontre esse arquivo no computador, o worm pode ainda residir em seu sistema. Use as etapas abaixo para atualizar seu computador com o patch de segurança da Microsoft mais recente e remova o vírus do sistema. Combatendo o worm-vírus 13 Siga as etapas abaixo para impedir que o computador seja reiniciado, para remover o vírus e para impedir que ele reinfecte o computador. A HP não garante o sucesso desse procedimento, uma vez que o vírus pode existir em formas diferentes. Quando o computador precisar de reparos ou quando a recuperação do sistema for executada, o software é alterado de volta a sua configuração original, o que significa dizer que é configurado à mesma condição de quando foi comprado. Todas as atualizações de driver e software instaladas no computador desde que foi ligado pela primeira vez são perdidas. Nessa condição de "quase novo", o computador está mais suscetível a vírus, porque todas as atualizações de segurança instaladas anteriormente são removidas. 14 Vulnerabilidade Mac O Mac OS X, assim como outros sistemas operacionais, possui várias falhas de segurança, inclusive não detectadas e que podem garantir o acesso não autorizado ao sistema. Uma vez que o computador esteja infectado, criminosos podem usar este acesso para instalar outros programas maliciosos. Ataques dirigidos Alguns códigos exploram vulnerabilidades com o objetivo de infectar uma pessoa específica e roubar dados que só ela possui. Normalmente este processo ocorre através de um e-mail com um anexo suspeito que é usado para instalar o malware. Infecções de redes Mac – PC Alguns malwares foram feitos para se adaptar ao sistema operacional que encontram. Aqueles que se reproduzem por USB, por exemplo, podem infectar tanto Macs quanto PCs. 15 Vulnerabilidade Linux Abaixo estão listadas as 10 maiores vulnerabilidades do Sistema Operacional Linux/Unix, traduzido de Outubro de 2003 e que são válidas ainda hoje: 1. BIND - O BIND é o principal serviço de ataque dos hackers. A maioria dos bugs já foram resolvidos mas a maioria das pessoas mantém as versões mais antigas por uma questão de funcionalidade e por não disporem de tempo para a migração. 2. RPC - O RPC é um serviço para a chamadas de procedimentos que serão executados remotamente. É extremamente importante para a funcionalidade da rede interna, poissão utilizados para distribuição de carga, processamento distribuído, cliente/servidor, etc. O NFS, que é um dos compartilhamentos de rede mais conhecidos e utilizados, usa diretamente o RPC. 3. Apache - Sem dúvidas nenhuma é um Web Server bem mais robusto que o IIS, mas não deixa de estar exposto à internet. Vários ataques a sistemas operacionais NIX ocorrem pelo Apache, principalmente para servidores com execução de scripts e permissões de acesso à programas. 4. Contas de usuários - Esta vulnerabilidade ocorre principalmente sobre contas com senhas fracas ou nulas. Parece ridículo, mas tem pessoas que conseguem invadir sistemas descobrindo senhas pelo método da tentativa e erro, e, geralmente, as senhas são as mais óbvias possíveis. Não é o sistema que é hackeado mas a conta do usuário. Uma vez tendo acesso ao sistema, o hacker pode se tornar bastante incômodo. 5. Serviço de transferência em ASCII - FTP e e-mail são os programas diretamente relacionados a estes serviços. Tudo que passar por eles e for texto puro, não encriptado (o que ocorre na maioria das instalações), o conteúdo pode ser capturado. Basta alguma informação ou senha secreta para que a porta esteja aberta. 6. Sendmail - É, talvez, o pior serviço de e-mail do NIX, em comparação com os seus próprios concorrentes. Tende a ser lento e problemático. Mas é o mais utilizado, porque é extremamente operacional. É possível colocá-lo para funcionar rapidamente. Por isto é a maior fonte de furos existente na comunidade. Se puder, substitua. 7. SNMP - Uma excelente ferramenta administrativa, principalmente para grandes corporações. Mas por ser um projeto baseado na comunicação com a rede, está sujeito à vulnerabilidades. O serviço é ativado por default no sistema Linux, o que causa o esquecimento por parte dos usuários. 16 8. SSH - É a solução ideal para acesso remoto seguro, abolindo de vez o Telnet. No entanto, pode se tornar totalmente ineficaz se não for administrado corretamente. Escolha o nível de segurança mais desejado, lembrando que ele é diretamente proporcional ao trabalho para configurá-lo. E não se esqueça de proteger chaves privadas dos usuários! 9. Compartilhamento de arquivos- Ocorre principalmente com NIS/NFS. Podem comprometer a segurança abrindo brechas para ataques externos. 10. SSL's - Embora sejam extremamente eficazes para criar conexões seguras entre cliente/servidor, os SSL's permitem o acesso ao servidor por parte do cliente. Pode se tornar uma porta para o acesso de hackers. 17 Conclusão O Trabalho foi feito no intuito de mostrar que uma vulnerabilidade do computador é especificamente uma falha ou fraqueza, que pode ser explorada por “atacantes” para contornar ou violar, políticas de segurança e obter acesso não autorizado a um sistema de computador ou rede, assim permitindo que seja impossível usar um produto de software sem expor o computador no qual ele está instalado a riscos de segurança desnecessários. 18 Referencias Bibliográficas https://www.exacti.com.br/novidade/sistemas-operacionais-mais-vulneraveis-de-2014 http://www.showmetech.com.br/divulgada-lista-dos-sistemas-com-mais-vulnerabilidades-de-2014/ http://info.abril.com.br/noticias/seguranca/2015/02/mac-os-x-e-ios-lideram-lista-de-sistemasoperacionais-mais-vulneraveis.shtml http://www2.ic.uff.br/~otton/graduacao/informaticaI/Ataques.pdf 19