Guia do hacker/Redes: uma visão geral
Esse capítulo será um pouco extenso, porque eu vou tentar explicar sobre os
protocolos mais importantes usados no dia-a-dia.
O conceito de rede de computadores é simples. Ela é formada por um conjunto de
dois ou mais computadores conectados entre si. Podemos fazer uma analogia à uma rede de
pesca. Suponha que cada nó da rede seja um computador, e este está se conectado com
vários outros.
Vale lembrar que os computadores de uma determinada rede não precisam obrigatoriamente estar conectados à internet. Três computadores de uma pequena empresa podem estar configurados para trocar informações apenas entre si, e isso é uma rede.
Um pouco mais sobre portas
editarJá falamos bem superficialmente sobre as portas, vamos aprofundar um pouquinho
mais agora.
As portas variam de 1 até 65535, e são divididas em dois intervalos: as portas
conhecidas e portas registadas.
As portas conhecidas estão entre 1 e 1023 e são usadas geralmente por serviços
padrões do sistema, ou por programas executados por usuários com privilégios.
As portas registadas estão entre 1024 e 65535 e são usadas por processos comuns e
por programas executados por um usuário comum.
protocolo de rede
editarO que é um protocolo?
Falando de uma forma clara, protocolo é a linguagem na qual os computadores se
comunicam entre si. Se eles não existissem, você não estaria lendo isso, porque não haveria
internet para você baixar esse livro. Eles são responsáveis por te conectar à internet e fazer
com que seu PC se comunique com outros.
Protocolos de rede são as linguagens que os PCs usam
para se comunicar entre si.
Existe uma pilha de protocolos chamada TCP/IP, e é a principal. Como o nome diz, é
uma pilha, então são vários protocolos empilhados em uma sequência e em algumas
camadas.
Eu espero muito que não esteja confuso, pois é fundamental você entender o
funcionamento da rede.
Veja, vou comentar sobre alguns protocolos das 4 camadas. Camada de Aplicação.
-HTTP (HyperText Transfer Protocol) – Talvez o mais conhecido dos protocolos,
é por causa dele que nos conectamos aos sites. Se você notar nas URLs dos sites, antes do
link, tem escrito http://.
Se esse protocolo não existisse, todos os sites que você conhece hoje não existiriam,
porque ele é o responsável por enviar os dados da requisição para o servidor, e retornar a
página HTML para o seu navegador.
O método de conexão é bem simples. O computador cliente (da pessoa que vê o
site)estabelece uma conexão com o computador servidor (que armazena o site), e envia uma
requisição para ele contendo a URI (caracteres usados para identificar protocolos) e uma
mensagem com as informações sobre o cliente, pedindo para que lhe seja retornado o
conteúdo HTML contido no servidor.
O servidor responderá à essa requisição com uma status line (linha de status), com a
versão do protocolo usado e um código contendo o retorno da operação sendo esse código
o de operação bem sucedida ou um código de erro. Depois dessa linha de status, a conexão
entre o cliente e o servidor é interrompida, já que as informações já estão sendo exibidas no
navegador do cliente. É por esse motivo que, se você abrir um site e desconectar da
internet, ele continua aberto (até você actualizar a página).
-FTP (File Transfer Protocol) – Ahh, o bom e velho FTP... Ele é responsável pela
transferência de arquivos entre o cliente e o servidor, e é bem mais rápida que a
transferência feita via HTTP.
Quem aqui já procurou “como invadir um site” no youtube já deve ter se deparado com
algum tutorial que usa esse protocolo como ‘ferramenta’. Na verdade, todos esses vídeos
são falsos, você não invade o site de fato. (Pelo menos não da forma que eles ensinam).
Talvez esse protocolo seja tão famoso quanto o HTTP, e é bem velho também.
Uma coisa que pouca gente sabe é que o FTP usa duas portas para se comunicar. A
porta 21 é usada para sincronizar e a porta 20 é usada para a transferência.
Para que a conexão seja efetuada, o computador cliente (que solicita a conexão)
precisa usar um programa de Cliente FTP, ou pode acessar o servidor diretamente usando
um navegador WEB, onde será colocado as credenciais (se necessárias) para logar no
servidor FTP. Com as credenciais aceitas, a conexão é efectuada e o cliente pode manipular
arquivos no servidor.
Durante a transferência dos arquivos, duas representações para a transmissão de
dados podem ser usadas (na verdade são quatro, mas vou mostrar apenas as duas mais
usadas):
Modo ASCII, onde o formato original dos dados é convertido em ASCII antes da
transmissão, e convertidos novamente para a forma original depois.
Esse método é mais usado para a transferência de arquivos pequenos, e não é
recomendado utilizá-lo para arquivos muito grandes.
Para quem não entendeu o que é ASCII, é um código para universalizar a
transferência de dados pela internet, já que os teclados de alguns países têm acentos e
caracteres especiais que não são usados em outros. Então tudo é convertido para ASCII para
que não haja erros. É como se fosse o SI (Sistema Internacional), só que na informática.
Modo binário, também conhecido como modo imagem, é o modo onde as máquinas
transmitem os arquivos byte-a-byte, e o receptor vai armazenando em formato de pilha, até
que todos os bytes sejam recebidos e o programa/arquivo possa rodar normalmente. Bem
usado para o envio de imagens, executáveis e outros arquivos pesados.
-DNS (Domain Name System) – Se ele não existisse, talvez a internet não teria
todo esse sucesso. Como eu expliquei na secção de página fake, o DNS é o protocolo que
transforma os endereços IPs nas URLs dos sites que acessamos.
Vou usar o mesmo exemplo de antes. IP do Google é 173.194.42.137, então, se você
digitar isso na barra de endereços do seu navegador, você será levado até o site do Google.
Mas seria difícil gravar os IPs de todos os sites que conhecemos, talvez você conseguiria
gravar uns 5 ou 6, mas são muitos números... E é para isso que serve o DNS, pra deixar os IPs
mais ‘bonitos’.
Cada computador, ao obter um endereço IP e de Gateway, também obtém um
endereço IP de um servidor DNS, sendo esse o responsável pela conversão,ou seja, toda vez
que você digitar www.google.com no navegador, o servidor DNS vai converter para IP e
assim você vai poder acessar o website.E cada vez que você entra num site, ele guarda as
informações em seu cache,para quando você precisar novamente, não precisar fazer
consulta à servidores DNS,economizando tempo e banda.
Camada de Transporte
editar- TCP (Transfer Control Protocol) – Olha ele aí, o grande TCP. O mais usado,
seguro, o top dos tops. O TCP é um ótimo protocolo porque é orientado à conexão, ou seja,
quando uma requisição TCP é enviada, você tem certeza que ele vai chegar ao destinatário
de forma correta, sem desvios, sem perdas. Todos os outros protocolos de aplicação usam
ele na transmissão de dados. Ele se encarrega a quebrar os pacotes e depois remontá-los no
destino,e, se um pacote estiver faltando ele se encarrega de pedir a retransmissão.
Os pacotes TCP têm campos chamados flags, que é onde ficam informações sobre o
tipo de pacote. Por exemplo, uma requisição de sincronização tem a flag “SYN” activada,
enquanto que uma requisição de finalização de conexão tem a flag “FIN”activada, e um
pedido de reiniciamento de conexão tem a flag “RST” activada. O computador que recebe os
pacotes interpreta essas flags e faz o que é pedido.
Para que o TCP possa enviar um arquivo ou estabelecer uma conexão, ele usa um
método chamado de Three-way Handshake ou seja um ‘aperto de mão’ em 3 vias. Preste
atenção agora, porque isso será útil no próximo capítulo: DoS (Negação de Serviços).
Quando o cliente quer acessar o servidor Telnet na porta 23, ele envia um pacote SYN
(Synchronize(sincronização)) para o servidor, pedindo para sincronizar com ele, e iniciar a
conexão.
-UDP (User Datagram Protocol) – Esse é um protocolo bem mais simples que o
TCP, e muito conhecido pela turma que gosta de fazer ataques de negação de serviço
(próximo tópico a ser abordado), justamente por não ser orientado à conexão e não fazer a
verificação se os dados foram enviados corretamente (diferente do TCP), então ele gasta
menos tempo em cada pacote, e pode assim, enviar mais pacotes no mesmo período de
tempo.Sendo assim, ele não precisa reenvia pacotes corrompidos e nem os confere. Alguns
outros protocolos usam ele como o DNS e o DHCP.
Aí você diz: “Mas Phoenix, se ele tem todas essas desvantagens, pra que usá-lo?”
E eu respondo: Velocidade.
Imagine-se assistindo uma livestream no youtube, onde tem 70 mil pessoas
conectadas, assistindo a mesma coisa. O servidor fica muito lento, porque a transmissão é
em tempo real, e é muita gente acessando ao mesmo tempo. Se todos os pacotes enviados e
recebidos fossem verificados, tal como os pacotes que se perderam no caminho, tudo ficaria
lento e o serviço pararia de funcionar (Negação de serviço, novamente... rs). Aí que entra o
UDP, ele é rápido, não faz verificação, então ele consegue transmitir todos os dados para
todo mundo. Por isso acontece a perda de qualidade e travamento quando tem muita gente,
já que ele não faz o reenvio de pacotes perdidos, o que se perdeu nunca vai chegar à você,
então a imagem trava até receber outro pacote.
Camada de Rede
editar- IP (Internet Protocol) – Também muito conhecido, o endereço IP serve para
identificar o ser computador na internet. Muitos já disseram “vou invadir seu PC pelo IP”,
mas não fazem ideia de como ele funciona.
O endereço IP é a nossa identificação na internet, como se fosse o nosso CPF, e este
é um endereço único de 32 bytes, pois são 4 octetos (8x8x8x8=32) xxx.xxx.xxx.xxx,sendo sua
faixa de actuação entre 0.0.0.0 e 255.255.255.255.
Lembre-se do exemplo da casa. Você precisa ir na casa de seu amigo, mas não sabe
onde é. O que você faz? Exacto, pergunta o endereço pra ele, só assim você consegue chegar
até lá.
E é +/- assim que acontece na internet, os computadores (tanto clientes e servidores)
precisam de um endereço IP para serem identificados e receberem as informações pela
rede. O endereço de IP é único no momento, ou seja, o IP que você está usando agora é só
seu, e de mais ninguém no mundo. Mas, se você desconectar, e outra pessoa conectar, ela
pode receber o seu IP antigo.
Mas sempre em tempos diferentes, nunca no mesmo tempo, se não acontece um
conflito, e os dois são desconectados para receberem novos IPs.
O IP se responsabiliza por fazer o endereçamento de pacotes, ou seja, ele é tipo ‘a
pessoa que coloca a carta no correio’ da internet. Ele pega a sua requisição, com o seu IP, IP
de destino e mensagem(como numa carta, remetente e destinatário),coloca tudo isso em
um pacote e manda ele pro protocolo de envio (TCP ou UDP).
Actualmente o endereço IP está na versão 4, que é conhecida como IPv4 (IP versão 4),
mas desde 2012, já está sendo usada a nova versão, o IPv6.
“Mas Phoenix, pra que actualizar o IP se ele tá funcionando?”
O IPv4 perdeu sua capacidade de expansão... São muitos computadores, servidores,
notebooks, celulares, tablets, e outras coisas conectadas à internet 24h por dia. Como o
endereço IP tem apenas 32 bits, todas as combinações resultariam em 4x109, que são
4.000.000.000 (quatro bilhões) de endereços. Mas veja, a Terra tem 8 bilhões de pessoas, e
em uma casa há mais de um computador, tablet, celular... Fora os que não foram vendidos.
Além das lan houses, e das salas com centenas de servidores.
Não é difícil de perceber que muita gente ficaria sem poder acessar a internet por
não ter IP. É por isso que o IPv6 foi criado.
Ao contrário do IPv4 que tem 32 bits, o IPv6 tem 128 bits, e suas combinações
resultariam em 3,4x1038 endereços. Pra quem quer ter uma noção do número de IPs, vou
escrever: 340.000.000.000.000.000.000.000.000.000.000.000.000;
Tentem achar um nome para esse número. Não é exagero, esse é realmente o
número certo.
Além disso ele cobre todos os buracos de segurança que tinham no IPv4, onde os
crackers faziam a festa. Isso combinado com o seu suporte obrigatório à IPSec (Extensão do
protocolo IP pra melhorar a privacidade, integridade dos dados e segurança) certamente vai
fazer os crackers terem dor de cabeça.
- ICMP (Internet Control Message Protocol) - Protocolo muito importante no
diagnostico da rede, pórem é um protocolo que está sendo muito bloqueado devido ao seu
mau uso por parte de usuários mal-intencionados. Hoje em dia, quase todos os firewalls ou
roteadores já bloqueiam a entrada desse protocolo em suas redes, permitindo apenas em
redes locais. O famoso Ping usa o protocolo ICMP, ou seja quando eu envio um ping à uma
máquina, na verdade eu envio para ela o pacote ICMP Echo Request e espero o ICMP Echo
Reply', assim posso saber que a outra maquina está activa e funcionando. Antigamente existia
um ataque chamado Ping Of Death, onde as pessoas tiravam serviços do ar enviando uma
milhares de pacotes ping com tamanhos alterados (Essa técnica é conhecida como Denial of
Service, e será o tema do nosso próximo capítulo), ou seja bem maior que o normal. Por isso,
hoje em dia poucos são os hosts que respondem a esse protocolo.
A funcionalidade dele é apenas essa, mostrar se uma determinada máquina está
activa na rede ou não. Você envia um pacote ping (ICMP Echo Request) para uma máquina
qualquer. Se ela estiver conectada à rede, e se o firewall dela não bloquear, ela responderá o
seu pedido com o pacote ICMP Echo Reply, dizendo que está activa.
Camada física
editar- USB (Universial Serial Bus) – Um protocolo muito conhecido, o USB faz parte
da camada física. E esse protocolo é visível, e está presente em nosso dia a dia. Você pode
tocá-lo, fisicamente. Ele foi criado porque antigamente, quando você precisava instalar
periféricos no computador, era necessário reiniciar a máquina, e isso não era uma boa ideia,
por conta do número de conexões internas sendo realizadas.
Daí surgiu a tecnologia PnP (Plug and Play), onde o usuário não é obrigado a reiniciar
a máquina, basta plugar o cabo e usá-lo.
O objetivo dele é fazer com que qualquer usuário sem experiência consiga instalar
periféricos em sua máquina, sem dificuldades.
O USB padrão 1.1 foi criado em 1996, e tinha uma taxa de
transferência de dados de 1,5Mbps, sendo alimentado por uma fonte de 5v, com 500mA.
As versões foram sendo lançadas ao longo dos anos, e em 2000 foi lançado o USB 2.0,
que é o mais comum até hoje. O USB 2.0 tem uma taxa de transferência de dado de 480
Mbps (cerca de 60MB/s (Não confunda Mbps com MB/s), tendo como fonte a mesma do
1.0.
Mais recentemente, em 2009, foi lançada a versão 3.0 do USB, com incríveis 5GBps
de transferência, e tem como fonte uma alimentação de 5V – 900mA, e pode enviar e
receber dados ao mesmo tempo.
- Bluetooth – Também muito utilizado em aparelhos celulares e em dispositivos
sem fio, o Bluetooth é um protocolo que usa a frequência de rádio de curto alcance para se
comunicar com dispositivos próximos, conseguindo transportar informações de um
dispositivo a outro sem a necessidade de cabos.
Ele está presente em celulares, mouses, teclados, fones de ouvido, notebooks,
impressoras, câmeras digitais, consoles de videogames, entre outros dispositivos. O mouse
que estou usando agora usa essa tecnologia!
Os dois dispositivos não precisam estar no mesmo campo de visão, só precisam estar
no mesmo ambiente, e, dependendo da fraquência de envio, o raio de alcance limite pode
aumentar. 1m, 10m, 100m, isso depende da potência máxima usada.
O Bluetooth se encontra agora na versão 3.0, suportando transferências de até
24Mb/s.
Como a faixa do Bluetooth é aberta, ou seja, pode ser utilizada por qualquer
dispositivo (que tenha capacidade), é necessário que o sinal do Bluetooth não sofra
interferência, se não, não seria útil. Já aconteceu de você pegar o controle do quarto, ou de
qualquer outro lugar, e usá-lo para desligar a televisão da sala? Pois é, isso acontece por
causa da interferência. O dispositivo que está recebendo os comandos pensa que o controle
que você usou é o original dele, e obedece suas ordens. O esquema de comunicação FHCDMA
(Frequency Hopping - Code-Division Multiple Access), que é usado pelo Bluetooth, faz
com que a frequência seja dividida em vários canais.
O dispositivo que estabelece a conexão muda de um canal para outro de maneira
bastante rápida. Este procedimento é chamado "salto de frequência" (frequency hopping) e
permite que a largura de banda da frequência seja muito pequena, diminuindo
sensivelmente as chances de interferência. No Bluetooth, pode-se utilizar até 79 frequências
(ou 23, dependendo do país), cada uma "espaçada" da outra por intervalos de 1 MHz.
Bom, finalmente terminamos de falar sobre redes. Sei que achou o capítulo um pouco entediante por ser só teoria, mas é necessário entender como a rede funciona para entender o próximo tópico, sobre ataques de negação de serviço, os ataques que deixam os sites fora do ar. Vamos lá!