EN3611 Segurança de Redes Prof. João Henrique Kleinschmidt Prática 2 Certificados digitais Permissões Comandos Password cracker Entregar um relatório respondendo as questões propostas e principais observações feitas durante a prática. 1 Certificados digitais a. Verifique em seu navegador se existem certificados instalados e dê exemplos. b. Acesse um site seguro (ex: www.gmail.com; www.submarino.com.br) e obtenha o certificado digital do site. c. Qual a validade do certificado? Quem emitiu este certificado? Qual a validade do certificado da autoridade certificadora? Qual a cadeia de certificados? Quais algoritmos e tamanhos de chaves foram utilizados? d. Gere um certificado digital utilizando a ferramenta keytool do Java. Ele é executado na linha de comando (semelhante a um prompt do antigo DOS) que no Windows é ativada a partir do menu Iniciar/Executar, digitando cmd. Para o keytool funcionar é preciso estar na pasta \bin do jdk do Java. Ex: C:\Arquivos de Programas\Java\jdk1.6.0_21\bin. Comandos: Gerar certificado no keystore: keytool genkey alias nome_alias Listar certificados do keystore: keytool list Exportar certificado para um arquivo: keytool exportcert alias nome_alias file nome_arquivo.cer Gerar uma requisição de assinatura de certificado: keytool certreq alias nome_alias file nome_arquivo.csr e. Verifique outras opções disponíveis digitando keytool. Gere um novo certificado alterando a validade para 2 anos e o tamanho de chave. f. Qual a diferença do certificado gerado por você e os certificados obtidos no exercício 1.b? 2 Modificação de permissões de arquivos a) Vá para o seu diretório home. Crie um subdiretório chamado documentos: $ mkdir documentos b) Entre no diretório documentos. c) Crie os seguintes arquivos vazios com o uso do touch (um de cada vez):
$ touch capl.txt [ENTER] $ touch cap2.txt [ENTER] Repita para cap3.txt, intro.txt, conc.txt, capzbkp.txt, cap3bkp.txt, figl.gif, fig2.jpg e fig3.gif. d) Veja os bits de permissões para o diretório documentos/ (use a opção -l do comando ls). (você precisa ter feito os itens a, b e c da seção 2.3) Note que: usuário (u), grupo (g) e outros (o) leitura (r), do Inglês 'read', gravação (w), do Inglês 'write' e execução (x), do Inglês 'execute' e) Faça o diretório documentos/ ficar disponível apenas para o dono e indisponível para o grupo e outros nos 3 modos (leitura, escrita e execução): $ chmod go-rwx documentos f) Modifique as permissões de documentos/ para que o mesmo fique com as permissões de leitura e escrita para grupo e outros e sem a opção de execução para grupo e outros: $ chmod go+rw documentos g) Modifique as permissões de documentos/ para que grupo e outros fiquem sem permissão de escrita mas com permissões para leitura e execução. h) Retire todas as permissões do arquivo cap1.txt para dono, grupo e outros. 3 Comandos ifconfig, ping, traceroute e netstat Quais informações podem ser obtidas com o uso destes comandos? O que um hacker pode obter de informações importantes com o ifconfig e o ping? Explique como um hacker pode usar o traceroute para obter informações para um possível ataque. O que um administrador de rede pode fazer para evitar que o traceroute seja utilizado por hackers? Como o netstat pode ajudar um usuário a melhorar a segurança do seu computador? Exemplos de uso: ping 168.23.1.2 traceroute www.ufabc.edu.br traceroute www.globo.com netstat a: mostra conexões e portas abertas netstat /?: mostra a ajuda do comando.
4 Password cracker John the Ripper John the Ripper é um quebrador de senhas. Leia as instruções e comandos abaixo e os exemplos disponíveis no site do John. Teste e descreva como o John the Ripper funciona, seus principais comandos e modos de quebra de senhas. Descreva como (e se) você conseguiu descobrir senhas com o John. http://www.openwall.com/john/ http://www.openwall.com/john/doc/examples.shtml Para instalar, digite: apt-get install john Use o comando abaixo para testar a capacidade do John em sua máquina local. Que informações são possíveis de observar? john --test Crie um arquivo texto no formato password (<user>:<hash>) com um hash válido. Você pode criar um arquivo password.txt dentro de /home com o seguinte texto: myuser:azl.zwwxih15q Para usar o John use o seguinte comando: john password.txt O processo de quebrar senhas demanda bastante recurso de CPU e pode demorar um pouco (ou até dias, dependendo da senha!). Use o comando unshadow do John para obter um arquivo de senhas em formato padrão Unix. unshadow /etc/passwd /etc/shadow > mypasswd.txt Execute o John: john mypasswd.txt O John tenta quebrar senhas de vários modos: single crack, modo dicionário de palavras, incremental. Verifique na documentação o que são estes modos. Se o John for sucedido em quebrar algum das senhas irá escrevê-las em ~/.john/john.pot. Para ler estas senhas quebradas, usa-se o seguinte comando: john --show mypasswd.txt Para verificar se a senha de root foi quebrada, filtre por UID:
john --show --users=0 mypasswd.txt Para usar John usando modo incremental: john --incremental mypasswd.txt john --incremental=alpha mypasswd.txt
Anexo Comandos básicos do Linux (apenas para consulta) Explore sua conta Linux a) Verifique se você realmente está no seu diretório home: $ pwd (deverá aparecer na linha de baixo /home/seulogin) b) Liste o conteúdo do seu diretório home: $ ls c) Se o seu ls não está configurado para mostrar os caracteres diferenciadores no final dos nomes dos arquivos, acrescente esta opção ao ls: $ ls -F d) Caso nenhum arquivo tenha aparecido, tente a opção de listagem de todos os arquivos: $ ls -a e) Liste todos os arquivos com a opção de informação completa dos arquivos: $ ls -la Observe os campos apresentados na listagem completa, tente lembrar o que informa cada um deles. f) Procure descobrir outras opções do ls chamando o manual online: $ man ls Para sair do manual tecle Q. g) Verifique quem mais está usando o sistema no momento: $ who h) Pergunte ao LINUX quem é o dono da sessão na qual você está trabalhando agora: $ whoami i) Liste informações do sistema sobre o seu Iogin: $ finger seulogin Explore outros diretórios do sistema de arquivos Linux a) Vá para o diretório raiz do LINUX: $ cd / b) Liste o conteúdo deste diretório. c) Entre no diretório bin/ (A barra é só para indicar que é um diretório! Não precisa ser digitada) $ cd bin a) Liste o conteúdo de bin com o comando ls -F e observe os nomes dos arquivos apresentados. Arquivos terminados com um * são executáveis ou arquivos de lote. Tente localizar o executável do comando ls e do who. b) Identifique quem é o dono do programa ls: $ ls -l ls Veja o campo que identifica o dono do arquivo e seu grupo.
c) Volte para o diretório raiz: $ cd.. Um erro comum é digitar o.. colado ao cd. No DOS isto é possível, no LINUX não. d) Entre no diretório etc/ e) Liste as informações completas do arquivo passwd: $ ls -l passwd f) Liste o conteúdo do arquivo passwd: $ cat passwd g) Liste novamente o conteúdo de passwd com pausa. Use o recurso de autocompletar para poupar digitação (tecla TAB): $ more pas[tab][enter] h) Volte para o seu diretório home. Há diversas formas de se fazer isso: $ cd [ENTER] ou $ cd ~login [ENTER] i) Agora volte um nível acima do seu diretório e liste o conteúdo de home/: $ cd.. $ ls -l j) Identifique, para o seu diretório home, os bits de permissão (9 colunas mais à esquerda a partir da segunda). o) Repita o último comando teclando seta-para-cima ( ). A shell do LINUX possui seu Doskey embutido. p) Liste todos os comandos usados nesta sessão de trabalho: $ history