Vulnerabilidade em Sistema Operacional

Propaganda
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
Download