# Guia do hacker/Redes: uma visão geral

Guia do hacker
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

Já 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

O 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

- 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

- 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

- 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á!