SlideShare une entreprise Scribd logo
1  sur  240
Télécharger pour lire hors ligne
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 LinuxUnix...................................................................... 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.1Classificaçã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_MACHINESOFTWAREClasses 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_USERsoftwareMicrosoftInternet Explorer
TypedURLs]
[-
HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersi
onExplorerRunMRU]
[-
HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersi
onExplorerRecentDocs]
[-
HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersi
onExplorerComDLg32Last VisitedMRU]
[-HKEY_CURRENT_USERsoftwareMicrosoftSearch
AssistantACMru]
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_USERsoftwareMicrosoftWindowsCurre
ntVersion]
[HKEY_LOCAL_MACHINEsoftwareMicrosoftWindowsCurre
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 = %dn", 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
google
 O carácter “~”, indica ao motor de busca que deve devolver resultados com a
palavra pesquisada e com sinónimos desta. Por exemplo, se for pesquisada a
palavra “barriga” são devolvidas páginas que contenham palavras indexadas
como “pança”, “abdómen”, “bandulho”, etc.
45
Imagem 14 - Exemplo de utilização do operador aspas ~ na pesquisa do
google
A notação para usar os operadores avançados do google é Operador:termo_a_pesquisa
Alguns dos operadores de pesquisa avançados que o google fornece são:
 Site: O termo a inserir para pesquisar é um URL seguido dos termos que
pretende pesquisar. Este operador permite fazer pesquisa no site que é indicado à
frente. Muitas vezes este método consegue ser mais útil para fazer pesquisa
dentro de um site que a funcionalidade de pesquisa do site onde se pretende
pesquisar. É possível por exemplo, obter facilmente qual a página de projecto
informático 1 se for inserida a frase “site:www.dei.estg.ipleiria.pt projecto
informatico 1”.
Imagem 15 - Exemplo de utilização do operador site na pesquisa do google
46
 Intitle: Este operador é usado para indicar ao motor de pesquisa que apenas deve
devolver páginas que tenham a frase pesquisada no título das paginas. Por
exemplo se for feita a pesquisa “intitle:sic” são devolvidas apenas as páginas
que incluem a palavra sic no título como “SIC Online - Home”, “SIC Radical”,
etc.
Imagem 16 - Exemplo de utilização do operador “intitle” na pesquisa do
google
 Inurl: Este operador devolve os endereços que contenham a expressão
procurada no URL da página. Este operador é muito útil para pesquisar sobre
assuntos específicos. Por exemplo, se inserirmos a frase “inurl:buffer_overflow”,
são devolvidos os endereços de páginas que incluam o tema na URL e que
certamente apresentam informação útil sobre o tema.
47
Imagem 17 - Exemplo de utilização do operador “inurl” na pesquisa do
google
 Link: O termo a inserir para pesquisar é um URL. Este operador devolve como
resultado as páginas que tem uma ligação para o URL indicado na pesquisa. Por
exemplo, se for inserida a para pesquisa “link:www.fccn.pt” são apresentados
como resultados as páginas que tem uma hiperligaçao no seu código para a
página www.fccn.pt;
Imagem 18 - Exemplo de utilização do operador “link” na pesquisa do
google
48
 Cache: O termo a inserir para pesquisar é um URL. Este operador faz com que o
google apresente a ultima versão que guardou em cache do endereço que foi
inserido. Este endereço é útil caso se pretenda ver um website que esteja offline.
Apenas é possível ver a página como foi guardada e não é possível interagir com
esta, ou seja, não é possível navegar dentro da página apresentada;
Imagem 19 - Exemplo de utilização do operador “cache” na pesquisa do
google
 Related: O termo a inserir para pesquisar é um URL. Este operador devolve
como resultado da pesquisa páginas que o google “pensa” terem um conteúdo
semelhante ao conteúdo do endereço inserido. Se for inserida a frase
“related:www.ipleiria.pt” vão ser apresentados os links para outros politécnicos
do país.
49
Imagem 20 - Exemplo de utilização do operador “related” na pesquisa do
google
 Define: Este operador devolve a definição do termo que é inserido. Se for
inserido a frase “define:trabalho” é apresentada a definição da palavra trabalho.
50
Imagem 21 - Exemplo de utilização do operador “define” na pesquisa do
google
 Filetype: Este operador permite fazer pesquisas por documentos com uma
determinada extensão. Por exemplo, se for inserida a frase “filetype:mp3” são
devolvidos links de páginas que contem ficheiro com a extensão “mp3”;
Imagem 22 - Exemplo de utilização do operador “filetype” na pesquisa do
google
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.
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking
relatorio de projecto-Documentação teórica das técnicas de hacking

Contenu connexe

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

Microsoft redes introdução
Microsoft redes   introduçãoMicrosoft redes   introdução
Microsoft redes introdução
João Dias
 
Apostila redes locais de computadores
Apostila redes locais de computadoresApostila redes locais de computadores
Apostila redes locais de computadores
fernandao777
 
Apostila sistemas de conectividade
Apostila sistemas de conectividadeApostila sistemas de conectividade
Apostila sistemas de conectividade
fernandao777
 
210 questoes informat cespe
210 questoes informat cespe210 questoes informat cespe
210 questoes informat cespe
Tereza Cristina
 
Projeto: Inclusão Digital Para A Melhor Idade
Projeto: Inclusão Digital Para A Melhor IdadeProjeto: Inclusão Digital Para A Melhor Idade
Projeto: Inclusão Digital Para A Melhor Idade
LABICEDCOM
 

Similaire à relatorio de projecto-Documentação teórica das técnicas de hacking (20)

Carlos daniel
Carlos danielCarlos daniel
Carlos daniel
 
Microsoft redes introdução
Microsoft redes   introduçãoMicrosoft redes   introdução
Microsoft redes introdução
 
Pim iv
Pim ivPim iv
Pim iv
 
Laudo Forense Digital (Cenário 4)
Laudo Forense Digital  (Cenário 4)Laudo Forense Digital  (Cenário 4)
Laudo Forense Digital (Cenário 4)
 
portfolio unopar
portfolio unoparportfolio unopar
portfolio unopar
 
Vpn alan-rafael
Vpn alan-rafaelVpn alan-rafael
Vpn alan-rafael
 
Apostila redes locais de computadores
Apostila redes locais de computadoresApostila redes locais de computadores
Apostila redes locais de computadores
 
Ftp
FtpFtp
Ftp
 
Arquitetura de computadores
Arquitetura de computadoresArquitetura de computadores
Arquitetura de computadores
 
PdC.Antonio_Jose_Gomes.PT
PdC.Antonio_Jose_Gomes.PTPdC.Antonio_Jose_Gomes.PT
PdC.Antonio_Jose_Gomes.PT
 
426828051 ciencia-da-computacao (1)
426828051 ciencia-da-computacao (1)426828051 ciencia-da-computacao (1)
426828051 ciencia-da-computacao (1)
 
036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql036 programando para-web-com-php-e-mysql
036 programando para-web-com-php-e-mysql
 
Tcc lucas rodrigues-14986
Tcc lucas rodrigues-14986Tcc lucas rodrigues-14986
Tcc lucas rodrigues-14986
 
Apostila sistemas de conectividade
Apostila sistemas de conectividadeApostila sistemas de conectividade
Apostila sistemas de conectividade
 
De javaparapython
De javaparapythonDe javaparapython
De javaparapython
 
sistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdfsistemas_operacionais-livro.pdf
sistemas_operacionais-livro.pdf
 
Um Modelo de Segurança de Redes para Ambientes Cooperativo
Um Modelo de Segurança de Redes para Ambientes CooperativoUm Modelo de Segurança de Redes para Ambientes Cooperativo
Um Modelo de Segurança de Redes para Ambientes Cooperativo
 
210 questoes informat cespe
210 questoes informat cespe210 questoes informat cespe
210 questoes informat cespe
 
Projeto: Inclusão Digital Para A Melhor Idade
Projeto: Inclusão Digital Para A Melhor IdadeProjeto: Inclusão Digital Para A Melhor Idade
Projeto: Inclusão Digital Para A Melhor Idade
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015
 

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

  • 1. 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. 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. 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. 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. 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. 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 LinuxUnix...................................................................... 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 20 3.1.1Classificaçã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. 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. 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. 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. 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. 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. 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. 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_MACHINESOFTWAREClasses 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. 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. 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. 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_USERsoftwareMicrosoftInternet Explorer TypedURLs] [- HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersi onExplorerRunMRU] [- HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersi onExplorerRecentDocs] [- HKEY_CURRENT_USERsoftwareMicrosoftWindowsCurrentVersi onExplorerComDLg32Last VisitedMRU] [-HKEY_CURRENT_USERsoftwareMicrosoftSearch AssistantACMru]
  • 31. 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_USERsoftwareMicrosoftWindowsCurre ntVersion] [HKEY_LOCAL_MACHINEsoftwareMicrosoftWindowsCurre ntVersion] int (*soma) (int um, int 2);
  • 32. 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. 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 = %dn", i); }
  • 34. 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. 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. 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. 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. 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. 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. 40 Imagem 9 – Esquema que representa as camadas do modelo TCP/IP
  • 41. 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. 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. 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. 44 Imagem 13 - Exemplo de utilização do operador aspas (“”) na pesquisa do google  O carácter “~”, indica ao motor de busca que deve devolver resultados com a palavra pesquisada e com sinónimos desta. Por exemplo, se for pesquisada a palavra “barriga” são devolvidas páginas que contenham palavras indexadas como “pança”, “abdómen”, “bandulho”, etc.
  • 45. 45 Imagem 14 - Exemplo de utilização do operador aspas ~ na pesquisa do google A notação para usar os operadores avançados do google é Operador:termo_a_pesquisa Alguns dos operadores de pesquisa avançados que o google fornece são:  Site: O termo a inserir para pesquisar é um URL seguido dos termos que pretende pesquisar. Este operador permite fazer pesquisa no site que é indicado à frente. Muitas vezes este método consegue ser mais útil para fazer pesquisa dentro de um site que a funcionalidade de pesquisa do site onde se pretende pesquisar. É possível por exemplo, obter facilmente qual a página de projecto informático 1 se for inserida a frase “site:www.dei.estg.ipleiria.pt projecto informatico 1”. Imagem 15 - Exemplo de utilização do operador site na pesquisa do google
  • 46. 46  Intitle: Este operador é usado para indicar ao motor de pesquisa que apenas deve devolver páginas que tenham a frase pesquisada no título das paginas. Por exemplo se for feita a pesquisa “intitle:sic” são devolvidas apenas as páginas que incluem a palavra sic no título como “SIC Online - Home”, “SIC Radical”, etc. Imagem 16 - Exemplo de utilização do operador “intitle” na pesquisa do google  Inurl: Este operador devolve os endereços que contenham a expressão procurada no URL da página. Este operador é muito útil para pesquisar sobre assuntos específicos. Por exemplo, se inserirmos a frase “inurl:buffer_overflow”, são devolvidos os endereços de páginas que incluam o tema na URL e que certamente apresentam informação útil sobre o tema.
  • 47. 47 Imagem 17 - Exemplo de utilização do operador “inurl” na pesquisa do google  Link: O termo a inserir para pesquisar é um URL. Este operador devolve como resultado as páginas que tem uma ligação para o URL indicado na pesquisa. Por exemplo, se for inserida a para pesquisa “link:www.fccn.pt” são apresentados como resultados as páginas que tem uma hiperligaçao no seu código para a página www.fccn.pt; Imagem 18 - Exemplo de utilização do operador “link” na pesquisa do google
  • 48. 48  Cache: O termo a inserir para pesquisar é um URL. Este operador faz com que o google apresente a ultima versão que guardou em cache do endereço que foi inserido. Este endereço é útil caso se pretenda ver um website que esteja offline. Apenas é possível ver a página como foi guardada e não é possível interagir com esta, ou seja, não é possível navegar dentro da página apresentada; Imagem 19 - Exemplo de utilização do operador “cache” na pesquisa do google  Related: O termo a inserir para pesquisar é um URL. Este operador devolve como resultado da pesquisa páginas que o google “pensa” terem um conteúdo semelhante ao conteúdo do endereço inserido. Se for inserida a frase “related:www.ipleiria.pt” vão ser apresentados os links para outros politécnicos do país.
  • 49. 49 Imagem 20 - Exemplo de utilização do operador “related” na pesquisa do google  Define: Este operador devolve a definição do termo que é inserido. Se for inserido a frase “define:trabalho” é apresentada a definição da palavra trabalho.
  • 50. 50 Imagem 21 - Exemplo de utilização do operador “define” na pesquisa do google  Filetype: Este operador permite fazer pesquisas por documentos com uma determinada extensão. Por exemplo, se for inserida a frase “filetype:mp3” são devolvidos links de páginas que contem ficheiro com a extensão “mp3”; Imagem 22 - Exemplo de utilização do operador “filetype” na pesquisa do google
  • 51. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.