3 Invasores Categorias comuns
Curiosidades casuais de usuários leigos (configuração default do UNIX: read for world); Espionagem por pessoas internas : há motivação e treinamento; Tentativas determinadas para ganhar dinheiro; Espionagem militar ou comercial O esforço de proteção depende de quem se imagina que seja o inimigo: se é um estudante ou se é um governo estrangeiro hostil…
4 Dados de Segurança – br (1)
As redes do governo federal são alvos de uma média de incidentes por hora, cerca de 60 são considerados mais sérios. A maioria dos ataques às redes do governo federal está relacionada à desconfiguração, vulnerabilidade de códigos e de servidores, "phishing"(fraude eletrônica para "pescar" dados como senhas) e "malwares". Na área de segurança é fundamental desenvolver soluções proprietárias, segundo Otávio Cunha da Silva, coordenador geral do CEPESC (Centro de Pesquisas e Desenvolvimento para a Segurança das Comunicações) da Abin (Agência Brasileira de Inteligência), evitando assim a inserção de backdoors - maneira de ganhar acesso a serviços e sistemas. Segurança
5 Dados de Segurança – br (2)
Notícia fresca (27/05/2014): Segurança
6 Perda Acidental de Dados
Além das ameças dos invasores, podem se perder dados por acidente. Causas: Fenômenos naturais: incêndios, enchentes, guerras Erros de hardware ou software: defeitos na CPU, discos ruins, erros de programas Erros humanos: entrada incorreta de dados, montagem errada da fita Viva o backup!
7 Relação entre o texto plano e o texto cifrado
8 Ex: Transposição de Cifra
Chave: MEGABUCK	: KE=KD Algoritmo público: coloque o texto plano em linhas do tamanho da chave. Gere o texto cifrado colocando o texto gerado por colunas. A ordem das colunas é dada pela ordem alfabética das letras da chave.
9 Ex: Substituição monoalfabética (1)
Cada letra é substituída por letra diferente; Texto Plano: ABCDEFGHIJKLMNOPQRSTUVWXYZ Texto Cifrado: QWERTYUIOPASDFGHJKLZXCVBNM que é a chave. Dada a chave criptográfica, é fácil achar a chave de decriptação: Ch. Dec: KXVMCNOPHQRSZYIJADLEGWBUFT, pois um A no texto cifrado é um K no texto plano, etc.
10 Ex: Substituição monoalfabética (2)
Este sistema é seguro? Há 26! possíveis chaves ~ 4 * Problema: usando propriedades estatísticas das linguagens naturais se decifra: no inglês a letra mais comum é o e, seguida do t,o,a.... As duas combinações de letras mais comuns são th, in, er, re... Usando estas informações fica mais fácil quebrar o código.
11 Criptografia por Chave Secreta (Chave Simétrica)
12 Criptografia por Chave Pública (1)
13 Criptografia por Chave Pública (2)
14 RSA - 1 Baseia-se em princípios da teoria de números.
Cálculo de parâmetros: Escolha 2 números primos extensos, p e q Calcule n = p*q e z = (p-1) * (q-1) Escolha um número d tal que z e d sejam primos entre si (ou seja, único divisor comum entre eles é o 1). Encontre e de forma que e*d = 1 mod z (ou, e*d-1 divisível por z) Segurança
15 RSA - 2 Agrupe o texto em blocos de k bits, onde k é o maior inteiro tal que 2K < n. A chave pública consiste no par (e,n) Para criptografar a msg P, calcule C= Pe (mod n). A chave privada consiste no par (d,n). Para descriptografar C, calcule P = Cd (mod n). A segurança do método está na dificuldade de fatorar números extensos. Fatorando n, poderia encontrar-se p, q e z. Conhecendo z e e, encontra-se d. Segurança
16 Exemplo do RSA Neste exemplo, escolhe-se p=3, q=11, portanto n=33, z=20. Escolheu-se d=7, 7e = 1 mod 20 => e=3 RSA é lento para codificar grandes volumes de dados, portanto é utilizado para distribuição de chaves que são empregadas em algoritmos mais rápidos Segurança
17 Funções de Uma Via Função tal que dados f e seu parâmetro x é fácil calcular y = f(x). Mas dado y, é computacionalmente inviável encontrar x. A função f costuma embaralhar os bits de um modo bastante complexo. Função chamada de Função de Resumo Criptográfico. Um tipo de hash (de novo!!)
18 Assinatura Digital (1) Objetivos: (1) o receptor verifique a identidade do transmissor; (2) o transmissor não possa repudiar a mensagem ; (3) o receptor não tenha possibilidade de forjar ele mesmo a mensagem. Ex: compra de ações pela Internet. Uma maneira comum de fazer isto é através de uma função hash de uma via, difícil de inverter – As mais conhecidas são MD5 (Message Digest) que produz 16 bytes e SHA (Secure hash algorithm) que produz 20 bytes (Atualmente quebradas...).
19 Assinatura Digital (2) Após calcular o hash, o cifra com a chave privada (realiza a transformação matemática difícil). O receptor recebe documento e D(Hash). Submete à cifragem E(D(Hash)) = Hash. Calcula por sua vez o hash do documento original para ver se bate. Obs: o algoritmo E e D devem ser comutativos. Qual o Problema com a Segurança deste esquema? Quem enviou a msg pode repudiar?
20 Assinatura Digital (3) Alice pode dizer que não foi ela que enviou.
21 9.3 - Mecanismos de Proteção Modelo: Domínios de Proteção (1)
Domínio: conjunto de pares (objetos, direitos). Cada par especifica um objeto e um subconjunto das operações que podem ser realizadas. Um domínio pode corresponder, por ex, a um grupo Exemplos de três domínios de proteção Direitos: leitura, escrita, execução.
22 Domínios de Proteção (2)
Uma matriz de proteção Uma maneira de implementar
23 Domínios de Proteção (3)
Uma matriz de proteção com domínios como objetos Processos do domínio 1 podem alternar para o domínio 2, mas no domínio 2 não podem voltar para o domínio 1. Esta matriz não é armazenada na prática pois muito esparsa: armazenar somente os elementos que não são vazios.
24 Modelo: Listas de Controle de Acesso (1)
Armazenando a matriz por colunas: Uso de listas de controle de acesso (ACL - Access Control Lists) para gerenciar o acesso a arquivos Supõe cada domínio, um usuário. (No ex. A,B,C)
25 Listas de Controle de Acesso (2)
É possível associar a identificação de usuário (UID) e de grupo (GID) para definir a ACL. Ex: Ana é do grupo sysadm e do grupo de criadores de pombos. Seria possível restringir o acesso de Ana as senhas se estivesse logada no grupo crdpmb. Duas listas de controle de acesso
26 Modelo: Capacidades (1)
Armazenando a matriz por linhas – chamada lista de capacidades. Cada processo tem uma lista de capacidades
27 f (objetos, direitos, verificação)
Capacidades (2) Capacidade devem ser protegidas de adulterações por usuários; poderia se manter no núcleo, ou manter no espaço do usuário mas usar criptografia para proteção. Esquema conveniente para Sistemas Distribuídos : Processo cliente envia uma mensagem a servidor remoto para que crie um objeto para ele. Servidor cria a entrada de capacidade solicitada, e gera número aleatório (campo de verificação) que fica junto com o objeto (no i-node, por ex.) no servidor. Servidor envia a capacidade de volta ao usuário. Capacidade retornada ao usuário: servidor objeto direitos f (objetos, direitos, verificação)
28 f (objetos, direitos, verificação)
Capacidades (3) servidor objeto direitos f (objetos, direitos, verificação) A capacidade contém: Identificação do servidor; Número do Objeto (número do i-node); Os direitos armazenados; f – a função hash criptografada de todos os dados incluindo o campo aleatório de verificação. Quando usuário quer acessar o objeto, envia a capacidade. O sistema recalcula f com o campos que tem armazenados do objeto e verifica se conferem antes de conceder acesso.
29 Sistemas Confiáveis SOs com mais funcionalidade => mais complexidade => mais código => mais falhas, mais erros de segurança. Ex: Páginas html não eram perigosas, páginas com conteúdo dinâmico sim: programas remotos podem ser executados... Quem quis conteúdo dinâmico? Usuários unidos? Ou projetistas que não ligam para segurança? Briga eterna: Funcionalidades versus segurança. Sistemas confiáveis: tem uma base de computação confiável mínima. TCB (Trusted Computing Base)
30 Sistemas Confiáveis Base de Computação Confiável
Se a CB for T, seguir a especificação, a segurança não será comprometida, independente do que esteja errado. Monitor de referência: decide se deve processar ou não a requisição. (A maioria dos SOs não é assim... O MINIX, nem o FreeBSD). 30 Um monitor de referência
31 Segurança Multiníveis (1)
Documentos e usuários tem classificação de segurança; em ambiente militar : (1) Classificado, (2)Confidencial, (3) Secreto e (4) Altamente secreto. Usuários podem ler os níveis inferiores e escrever em níveis superiores: dar informação. O modelo de segurança multiníveis Bell-La Padula
32 Canais Subliminares (1)
Modelo Bell-La Padula mantém segredos, mas não garante a integridade. (O nível de baixo pode escrever o que quiser.) Formalismos não tem funcionado, pois as falhas persistem... Um sistema como (a): servidor não pode passar informação que tenha recebido do cliente para o colaborador ("comparsa"), usando matriz de proteção, pode arrumar outra maneira de passar informação... Canais subliminares ( ou ocultos).
33 Canais Subliminares (2)
Canal subliminar permite que um processo execute para passar dados que o sistema de proteção o impediria de passar diretamente. Ex: modulação do uso da CPU pelo servidor: Bit 1 - processamento intensivo por quantidade fixa de tempo; Bit 0 - inativo durante o mesmo intervalo de tempo; Processo colaborador apenas monitora a atividade da CPU. Este esquema burla por exemplo a matriz de proteção.
34 Canais Subliminares (2)
Ex da figura: O arquivo fica impedido ou desimpedido por certo intervalo fixo de tempo conhecido pelo servidor e pelo colaborador. Podem sofisticar a comunicação criando protocolos de comunicação. Ex: usar + arquivos: servidor impede File1 p/ sinalizar o envio de um bit; colaborador impede File2 p/ sinalizar o recebimento. Um canal subliminar usando impedimento de arquivo
35 Canais Subliminares (3)
Imagens da esquerda e direita parecem as mesmas; a da direita contém os textos de 5 peças de Shakespeare criptografados, inseridos nos bits menos significativos de cada valor de cor (700KB de texto). Figura de 1024x 768 pixels. Hamlet, Macbeth, Julius Caesar Mercador de Veneza, Rei Lear Zebras Encontrar e bloquear Canal Subliminar é extremamente difícil.
36 9.4 - Autenticação de Usuário
Quando usuário se conecta a um computador, o SO deve determinar quem é o usuário -> autenticação. A autenticação deve identificar: Alguma coisa que o usuário sabe Alguma coisa que o usuário tem Alguma coisa que o usuário é Estes princípios levam a esquemas diferentes de autenticação com diferentes complexidades propriedades de segurança. Nomenclatura: Hackers: grandes programadores com muito conhecimento. Crackers: tentam se infiltrar sem autorização em sistemas.
37 Autenticação Usando Senhas (1)
38 Autenticação Usando Senhas (2)
Como um cracker invadiu o computador de um laboratório de pesquisa do Dep. de Energia dos EUA. UUCP (Unix to Unix Copy) conta usada para tráfego de rede com poder de root. A combinação de discador de guerra e chutador de senhas pode ser fatal.
39 Autenticação Usando Senhas (3)
As senhas são armazenadas cifradas. Podem ser atacadas: "chutadas", cifradas e conferidas com o arquivo de senhas armazenadas. Para dificultar, se associa à senha um número aleatório de n bits chamado sal. (Altera a senha, altera o sal, armazenado junto). Junta-se senha e sal e cifra-os. Armazena resultado, não a senha em texto plano. Para adivinhar é preciso chutar a senha e o sal. No Unix n=12 Login Sal Senha+Sal Cifrados
40 Autenticação Usando Senhas (4)
41 Autenticação Usando um Objeto Físico
Cartões de plástico Cartões de faixa magnética - abrigam cerca de 140 bytes; não muito seguros pois se pode clonar com facilidade. Cartões com chip: Cartões só com memória - normalmente 1KB; Cartões com processador: CPUs com ROM e RAM podem interagir com o sistema remoto.
42 Autenticação Usando Biometria (1)
43 Autenticação Usando Biometria (2)
Muito popular é a análise de retina; até de gêmeos idênticos é diferente. O padrão de vasos sanguíneos retinais difere muito. Que tal fazer uma foto do olho da pessoa e colocar para ser reconhecida? Análise de assinatura – assinar com os mesmos movimentos, na mesma velocidade com a mesma pressão. Análise da voz – cada vez mais avançado, ao invés de repetir o texto padrão gravado, solicita que repita texto qualquer para confrontar alguns padrões de reconhecimento. Análise de urina e sangue... Quem aceita?
44 9.5 - Ataques de dentro do Sistema Bombas Lógicas
Programador da empresa escreve programa com potencial para causar danos - bomba lógica; A bomba não estoura desde que ele/ela alimente o programa diariamente com uma senha se programador é despedido, programa não é alimentado com senha, bomba explode: apaga disco, criptografa arquivos até re-contratar programador...
45 Alçapões (Trap door) (a) Código normal (b) Código com alçapão inserido
46 Conexão Impostora (Spoofing)
47 9.6 – Explorando erros de código Transbordo de Buffer (Overflow)
48 Transbordo de Buffer (Overflow)
49 Transbordo de Buffer (2)
50 Ataque à cadeia de formato (1)
Alguns programadores tem preguiça de digitar… Se ao invés de digitar: char *s="Hello world"; printf ("%s",s); Ele economizar 5 caracteres: printf(s); O próximo programador que altera o código, vai perguntar o nome do usuário: char s[100], g[100]="Hello"; gets(s); strcat(g,s); printf(g); Pode-se entrar com qualquer coisa, não só string...
51 Ataque à cadeia de formato (2)
O caracter de formato %n calcula quantos caracteres já foram impressos até onde ele aparece e armazena essa quantidade no próximo argumento de printf para que seja processado. printf("hello %nworld\n", &i); armazena 6 em i. Há possibilidade de escrever valores arbitrários em endereços de memória: forçar salto para código recém-chegado, atribui poder e direito de acesso igual ao do programa atacado. Para maiores detalhes:
52 Ataques por injeção de código
53 9.7 - Malware Programas maliciosos :
código transmitido para máquina alvo código executado lá, causando danos Antes de 2000 programas maliciosos eram diversão, agora escrito sob encomenda do crime organizado. Alguns malwares querem se propagar e infectar mais máquinas. Incluem vírus, vermes, cavalos de tróia.
54 Termos Zumbi – computador invadido com um malware que informa endereço da máquina capturada à máquinas remotas: uma porta dos fundos (back door) permite que a comandem; Botnet – robot networks – grupo de máquinas comandadas. A polícia holandesa encontrou uma botnet com 1,5 milhão de nós Keylogger – malware que registra tudo que é digitado e periodicamente envia a máquina remota
55 Mocinho x Bandido Bandido: Um keylogger obtém sua senha de cartão de crédito; O criminoso faz compras caras com dados da vítima; Mocinho: As empresas de cartão desenvolveram programas para verificar perfil de gastos dos usuários – compras fora do perfil são rapidamente identificadas; Bandido: também obtem perfil do usuário; ajustar compras que não chamem a atenção. Com muitos dados podem roubar a Identidade… Mocinho: adotar esquemas mais fortes de autenticação.
56 Trojan Horse - Cavalo de Tróia
Lenda (?) associada a conquista de Tróia pelos gregos (1200 ac). Odisseu teve a ideia de presentear os troianos com um grande cavalo de madeira, dizendo que estavam desistindo da guerra e aquele era um presente de paz. Programa livre disponibilizado para usuários inocentes, contém na verdade código destrutivo. Jogos, tocadores de música, visualizadores especiais de pornografia, e outros programas potencialmente interessantes que são voluntariamente instalados.
57 Trojan Horse - Cavalo de Tróia
58 main() { while(1) fork(); }.
59 Como Funcionam os Vírus (1)
60 Como Funcionam os Vírus (2)
61 Vírus Companheiro Não infecta um programa, não o altera, mas executa quando o outro for executado; Ex: quando usuário digita prog o DOS procura prog.com e se não encontra procura prog.exe. A maioria dos programas é .exe, então criar um semelhante prog.com que quando termina seu trabalho chama prog.exe - Usuário nem percebe…
62 Vírus de Programas executáveis (1)
63 Vírus de Programas executáveis (2)
64 Vírus de Programas Executáveis (3)
65 Vírus de Programas Executáveis (4)
66 Vírus de Setor de Boot BIOS traz MBR para RAM e executa-o.
67 Vírus de Setor de Boot Modo usual: o Windows carrega os drivers um por um e determina o vetor de interrupção. O vírus faz os vetores apontarem para ele se quiser o controle a cada interrupção. Depois do vírus ter capturado os vetores de interrupção e de desvio de controle da CPU
68 Vírus de Setor de Boot Quando SO carrega o driver da impressora, retoma o vetor de interrupção; a interrupção de relógio era do vírus, ele entra e retoma o controle do quiser… Depois do vírus ter percebido a perda do vetor de interrupção da impressora e tê-lo recuperado
69 Vírus de drivers de dispositivo
Infecta o driver ( que é um código executável); Quando SO o carrega, carrega o vírus; Se driver no modo núcleo, vírus faz o que quiser: pode tomar o desvio para chamadas de sistema;
70 Vírus de macro Programas como word e excel permitem a execução de comandos associados aos documentos; Quando se abre um documento, a macro associada pode ser executada; Fáceis de escrever e se espalhar (o que é ruim para a reputação dos escritores de vírus!); Para uma plataforma específica.
71 Vírus de código fonte Os mais portáveis.
Inserir em ponto estratégico a chamada ao vírus diretamente no código fonte disponível : run_virus(); Instalar o include apropriado: #include <virus.h> Possível de disparar remotamente.
72 Como os Vírus se Disseminam
Vírus colocados onde há chance de serem copiados (ex: sites shareware) Quando copiados infectam programas no disco rígido, disquetes e podem tentar se disseminar na rede local; Anexam-se à mensagens eletrônicas aparentemente inocentes e que quando executados, usam listas de contatos para replicar; Ex: Vírus "I love you" em 2000, causou US$ 1bi de prejuízo. Vírus para ActiveX do InternetExplorer fizeram valer o apelido de Internet Exploder.
73 O Verme da Internet Em 1988, Robert Tappan Morris, estudante de pós de Cornell escreveu um programa que explorava erros descobertos por ele no Unix e se replicaria em segundos em cada máquina que pudesse ter acesso. (Filho de especialista de Segurança da Agência Nacional americana que decifrava códigos, sr. Morris). Derrubou milhares de computadores por todo o mundol
74 O Verme da Internet O verme consiste de dois programas:
75 O Verme da Internet Consequencias:
Morris foi julgado e condenado a 3 anos de condicional com custas de US$ Foi criada a CERT – Computer Emergency Response Team que centraliza e relata tentativas de invasão. Após o episódio Morris concluiu seu PhD em Harvard e hoje é professor do MIT atuando no grupo de Sistemas Operacionais Distribuídos e Paralelos. 75
76 9.8 - Defesas Técnicas Antivírus e Antiantivírus (1)
77 Técnicas Antivírus e Antiantivírus (2)
78 Técnicas Antivírus e Antiantivírus (2)
79 Técnicas Antivírus e Antiantivírus (3)
Os vírus podem sofrer alguma mutação durante a cópia. Suponha que no procedimento de decifragem há o cálculo: X=(A+B+C-4). No assembly MOV Op1, Op2 é Op2=Op1. Exemplos de um vírus polimórfico Todos esses exemplos fazem a mesma coisa
80 Técnicas Antivírus e Antiantivírus (4)
81 Técnicas Antivírus e Antiantivírus (4)
82 Código Móvel (1) Exemplos de códigos móveis:
83 Código Móvel (2) Caixa de Areia (sandboxing): tenta confinar cada applet a um intervalo limitado de endereços virtuais gerado em tempo de exec. É difícil verificar se o salto pode ser realizado no caso de Jumps dinâmicos, quando o endereço é calculado em tempo de execução, tipo JMP (R1). Na mesma caixa todos os endereços tem o mesmo prefixo – por ex, os 8 primeiros bits. Verificar se os saltos dinâmicos cairão em endereço válido.
84 Código Móvel (2) S2 = o prefixo. S1 = endereço de destino.
4 linhas inseridas antes de um jump dinâmico S2 = o prefixo. S1 = endereço de destino. SHR – shift para direita para isolar o prefixo Memória (232)dividida em 256 caixas de areia de 16MB. Não pode fazer referências p/ fora da caixa.
85 Código Móvel (3) Utilização de interpretação
Applets podem ser interpretadas por navegador Web Exemplo: applets JVM – o interpretador verifica se endereço válido
86 Segurança em Java (1) Uma linguagem segura: não tem ponteiros, conversão de tipos, alocação de memória controlada pelo usuário, referências a vetores verificadas em t de execução. Quando uma applet chega, a JVM verifica: Applet tenta forjar ponteiros? Viola restrições de acesso em membros de classes privadas? Faz mau uso do tipo de uma variável? Geração transbordo/esvaziamento na pilha? Converte ilegal mente variáveis de um tipo para outro tipo?
87 Exemplos de proteção que pode ser especificada com o JDK 1.2
Segurança em Java (2) Cada usuário pode criar uma política de segurança a partir de uma lista de regras. Uma ação permite acesso da applet de determinada origem, assinada por alguém, a determinado arquivo, aos arquivos de um diretório, ou recursivamente a partir de diretório. Exemplos de proteção que pode ser especificada com o JDK 1.2