A Primer on Network Communication

Sempre ouvimos que, para realizar testes de penetração, um pentester deve estar ciente dos conceitos básicos de rede, como endereços IP, sub-redes classful, sub-redes classless, portas e redes de transmissão. A primeira razão é que atividades como quais hosts estão ativos no escopo aprovado e quais serviços, portas e recursos eles têm abertos e responsivos determinarão que tipo de atividades um avaliador realizará no teste de penetração. O ambiente está sempre mudando e os sistemas são freqüentemente realocados. Portanto, é bem possível que vulnerabilidades antigas apareçam novamente e, sem o bom conhecimento de varredura de rede, pode acontecer que as varreduras iniciais tenham que ser refeitas. Em nossas seções subsequentes, discutiremos os fundamentos da comunicação em rede.

Modelo de referência

O Modelo de Referência oferece um meio de padronização, que é aceitável em todo o mundo, uma vez que as pessoas que usam a rede de computadores estão localizadas em uma ampla faixa física e seus dispositivos de rede podem ter arquitetura heterogênea. Para fornecer comunicação entre dispositivos heterogêneos, precisamos de um modelo padronizado, ou seja, um modelo de referência, que nos forneceria uma maneira de esses dispositivos se comunicarem.

Temos dois modelos de referência, como o modelo OSI e o modelo de referência TCP / IP. No entanto, o modelo OSI é hipotético, mas o TCP / IP é um modelo prático.

Modelo OSI

A Interface de Sistema Aberto foi projetada pela Organização Internacional de Padronização (ISO) e, portanto, também é chamada de Modelo ISO-OSI.

O modelo OSI consiste em sete camadas, conforme mostrado no diagrama a seguir. Cada camada tem uma função específica, porém cada camada fornece serviços para a camada acima.

Camada física

A camada física é responsável pelas seguintes atividades -

  • Ativando, mantendo e desativando a conexão física.

  • Definindo tensões e taxas de dados necessárias para a transmissão.

  • Convertendo bits digitais em sinal elétrico.

  • Decidir se a conexão é simplex, half-duplex ou full-duplex.

Camada de link de dados

A camada de enlace de dados executa as seguintes funções -

  • Executa sincronização e controle de erros para as informações que devem ser transmitidas pelo link físico.

  • Ativa a detecção de erros e adiciona bits de detecção de erros aos dados a serem transmitidos.

Camada de rede

A camada de rede executa as seguintes funções -

  • Para encaminhar os sinais através de vários canais para a outra extremidade.

  • Atuar como o controlador da rede, decidindo qual rota os dados devem seguir.

  • Para dividir as mensagens de saída em pacotes e para montar os pacotes de entrada em mensagens para níveis superiores.

Camada de transporte

A camada de transporte executa as seguintes funções -

  • Ele decide se a transmissão de dados deve ocorrer em caminhos paralelos ou em um único caminho.

  • Ele executa multiplexação, dividindo os dados.

  • Ele divide os grupos de dados em unidades menores para que sejam tratados com mais eficiência pela camada de rede.

A camada de transporte garante a transmissão de dados de uma extremidade à outra.

Camada de Sessão

A camada de sessão executa as seguintes funções -

  • Gerencia as mensagens e sincroniza conversas entre dois aplicativos diferentes.

  • Ele controla o logon e logoff, identificação do usuário, faturamento e gerenciamento de sessão.

Camada de apresentação

A camada de apresentação executa as seguintes funções -

  • Essa camada garante que a informação seja entregue de tal forma que o sistema receptor a compreenda e use.

Camada de aplicação

A camada de aplicativo executa as seguintes funções -

  • Oferece diversos serviços como manipulação da informação de diversas formas, retransferência dos arquivos de informação, distribuição dos resultados, etc.

  • As funções como LOGIN ou verificação de senha também são realizadas pela camada de aplicativo.

Modelo TCP / IP

O modelo de Protocolo de Controle de Transmissão e Protocolo de Internet (TCP / IP) é um modelo prático e é usado na Internet.

O modelo TCP / IP combina as duas camadas (camada física e de enlace de dados) em uma camada - camada Host-to-Network. O diagrama a seguir mostra as várias camadas do modelo TCP / IP -

Camada de aplicação

Esta camada é a mesma do modelo OSI e executa as seguintes funções -

  • Oferece diversos serviços como manipulação da informação de diversas formas, retransferência dos arquivos de informação, distribuição dos resultados, etc.

  • A camada de aplicativo também executa funções como LOGIN ou verificação de senha.

  • A seguir estão os diferentes protocolos usados ​​na camada de aplicação -

    • TELNET
    • FTP
    • SMTP
    • DN
    • HTTP
    • NNTP

Camada de transporte

Ele executa as mesmas funções da camada de transporte no modelo OSI. Considere os seguintes pontos importantes relacionados à camada de transporte -

  • Ele usa os protocolos TCP e UDP para transmissão de ponta a ponta.

  • O TCP é um protocolo confiável e orientado à conexão.

  • O TCP também lida com o controle de fluxo.

  • O UDP não é confiável e um protocolo sem conexão não executa o controle de fluxo.

  • Os protocolos TCP / IP e UDP são empregados nesta camada.

Camada de Internet

A função dessa camada é permitir que o host insira pacotes na rede e, em seguida, faça-os viajar de forma independente para o destino. No entanto, a ordem de recebimento do pacote pode ser diferente da sequência em que foram enviados.

O protocolo da Internet (IP) é empregado na camada da Internet.

Camada Host-to-Network

Esta é a camada mais baixa do modelo TCP / IP. O host precisa se conectar à rede usando algum protocolo, para que possa enviar pacotes IP por meio dele. Este protocolo varia de host para host e de rede para rede.

Os diferentes protocolos usados ​​nesta camada são -

  • ARPANET
  • SATNET
  • LAN
  • Rádio de pacote

Arquitetura Útil

A seguir estão algumas arquiteturas úteis, que são usadas na comunicação de rede -

A arquitetura de frame Ethernet

Um engenheiro chamado Robert Metcalfe inventou a rede Ethernet, definida pelo padrão IEEE 802.3, em 1973. Ela foi usada pela primeira vez para interconectar e enviar dados entre a estação de trabalho e a impressora. Mais de 80% das LANs utilizam o padrão Ethernet por sua velocidade, menor custo e facilidade de instalação. Por outro lado, se falamos de quadro, os dados viajam de host para host no caminho. Um quadro é constituído por vários componentes, como endereço MAC, cabeçalho de IP, delimitador de início e fim, etc.

O quadro Ethernet começa com Preâmbulo e SFD. O cabeçalho Ethernet contém os endereços MAC de origem e destino, após o qual a carga do quadro está presente. O último campo é CRC, que é usado para detectar o erro. A estrutura básica do frame Ethernet é definida no padrão IEEE 802.3, que é explicado a seguir -

O formato de quadro Ethernet (IEEE 802.3)

O pacote Ethernet transporta um quadro Ethernet como sua carga útil. A seguir está uma representação gráfica do quadro Ethernet junto com a descrição de cada campo -

Nome do Campo Preâmbulo SFD (delimitador de início de quadro) Destino MAC MAC de origem Tipo Dados CRC
Tamanho (em bytes) 7 1 6 6 2 46-1500 4

Preâmbulo

Um quadro Ethernet é precedido por um preâmbulo, 7 bytes de tamanho, que informa ao sistema receptor que um quadro está iniciando e permite que tanto o remetente quanto o receptor estabeleçam a sincronização de bits.

SFD (delimitador de início de quadro)

Este é um campo de 1 byte usado para indicar que o campo do endereço MAC de destino começa com o próximo byte. Às vezes, o campo SFD é considerado parte do Preâmbulo. É por isso que o preâmbulo é considerado 8 bytes em muitos lugares.

  • Destination MAC - Este é um campo de 6 bytes onde temos o endereço do sistema receptor.

  • Source MAC - Este é um campo de 6 bytes em que temos o endereço do sistema de envio.

  • Type- Define o tipo de protocolo dentro do quadro. Por exemplo, IPv4 ou IPv6. Seu tamanho é de 2 bytes.

  • Data- Isso também é chamado de Payload e os dados reais são inseridos aqui. Seu comprimento deve ser entre 46-1500 bytes. Se o comprimento for inferior a 46 bytes, o preenchimento de 0 é adicionado para atender ao comprimento mínimo possível, ou seja, 46.

  • CRC (Cyclic Redundancy Check) - Este é um campo de 4 bytes contendo CRC de 32 bits, que permite a detecção de dados corrompidos.

Formato Extended Ethernet Frame (Ethernet II frame)

A seguir está uma representação gráfica do quadro Ethernet estendido usando o qual podemos obter Payload maior que 1500 bytes -

Nome do Campo Destino MAC MAC de origem Tipo DSAP SSAP Ctrl Dados CRC
Tamanho (em bytes) 6 6 2 1 1 1 > 46 4

A descrição dos campos, que são diferentes do quadro Ethernet IEEE 802.3, é a seguinte -

DSAP (Ponto de Acesso do Serviço de Destino)

DSAP é um campo de 1 byte que representa os endereços lógicos da entidade da camada de rede destinada a receber a mensagem.

SSAP (ponto de acesso do serviço de origem)

SSAP é um campo de 1 byte que representa o endereço lógico da entidade da camada de rede que criou a mensagem.

Ctrl

Este é um campo de controle de 1 byte.

A arquitetura do pacote IP

O protocolo da Internet é um dos principais protocolos do conjunto de protocolos TCP / IP. Este protocolo funciona na camada de rede do modelo OSI e na camada de Internet do modelo TCP / IP. Portanto, esse protocolo tem a responsabilidade de identificar hosts com base em seus endereços lógicos e de rotear os dados entre eles pela rede subjacente. O IP fornece um mecanismo para identificar hosts de maneira exclusiva por meio de um esquema de endereçamento IP. O IP usa a entrega de melhor esforço, ou seja, não garante que os pacotes sejam entregues ao host de destino, mas fará o possível para chegar ao destino.

Em nossas seções subsequentes, aprenderemos sobre as duas versões diferentes de IP.

IPv4

Este é o protocolo da Internet versão 4, que usa um endereço lógico de 32 bits. A seguir está o diagrama do cabeçalho IPv4 junto com a descrição dos campos -

Versão

Esta é a versão do protocolo da Internet usado; por exemplo, IPv4.

IHL

Comprimento do cabeçalho da Internet; comprimento de todo o cabeçalho IP.

DSCP

Ponto de Código de Serviços Diferenciados; este é o tipo de serviço.

ECN

Notificação explícita de congestionamento; ele carrega informações sobre o congestionamento visto na rota.

Comprimento total

O comprimento de todo o pacote IP (incluindo cabeçalho IP e carga útil IP).

Identificação

Se o pacote IP for fragmentado durante a transmissão, todos os fragmentos conterão o mesmo número de identificação.

Bandeiras

Conforme exigido pelos recursos de rede, se o pacote IP for muito grande para ser manipulado, esses 'sinalizadores' informam se eles podem ser fragmentados ou não. Neste sinalizador de 3 bits, o MSB é sempre definido como '0'.

Fragment Offset

Este deslocamento informa a posição exata do fragmento no pacote IP original.

Tempo de Viver

Para evitar o loop na rede, cada pacote é enviado com algum conjunto de valores TTL, que informa à rede quantos roteadores (saltos) esse pacote pode cruzar. A cada salto, seu valor é diminuído em um e quando o valor chega a zero, o pacote é descartado.

Protocolo

Diz à camada de rede no host de destino a qual protocolo esse pacote pertence, ou seja, o protocolo de próximo nível. Por exemplo, o número do protocolo de ICMP é 1, TCP é 6 e UDP é 17.

Header Checksum

Este campo é usado para manter o valor de checksum de todo o cabeçalho, que é então usado para verificar se o pacote foi recebido sem erros.

Endereço de Origem

Endereço de 32 bits do remetente (ou origem) do pacote.

Endereço de Destino

Endereço de 32 bits do receptor (ou destino) do pacote.

Opções

Este é um campo opcional, que é usado se o valor de IHL for maior que 5. Essas opções podem conter valores para opções como Segurança, Rota de registro, Carimbo de data / hora, etc.

Se você deseja estudar o IPv4 em detalhes, consulte este link - www.tutorialspoint.com/ipv4/index.htm

IPv6

O Protocolo de Internet versão 6 é o protocolo de comunicação mais recente, que como seu predecessor IPv4 funciona na Camada de Rede (Camada-3). Junto com a oferta de uma enorme quantidade de espaço de endereçamento lógico, este protocolo possui amplos recursos, que abordam a lacuna do IPv4. A seguir está o diagrama do cabeçalho IPv4 junto com a descrição dos campos -

Versão (4 bits)

Representa a versão do Internet Protocol - 0110.

Classe de tráfego (8 bits)

Esses 8 bits são divididos em duas partes. Os 6 bits mais significativos são usados ​​para o tipo de serviço, para permitir que o roteador saiba quais serviços devem ser fornecidos a esse pacote. Os 2 bits menos significativos são usados ​​para Notificação explícita de congestionamento (ECN).

Etiqueta de fluxo (20 bits)

Este rótulo é usado para manter o fluxo sequencial dos pacotes pertencentes a uma comunicação. A origem rotula a sequência para ajudar o roteador a identificar que um determinado pacote pertence a um fluxo específico de informações. Este campo ajuda a evitar a reordenação de pacotes de dados. Ele é projetado para streaming / mídia em tempo real.

Comprimento da carga útil (16 bits)

Este campo é usado para informar aos roteadores quantas informações um determinado pacote contém em sua carga útil. A carga útil é composta de cabeçalhos de extensão e dados da camada superior. Com 16 bits, podem ser indicados até 65535 bytes; mas se os Cabeçalhos de Extensão contiverem Cabeçalho de Extensão Hop-by-Hop, a carga útil pode exceder 65535 bytes e este campo é definido como 0.

Próximo cabeçalho (8 bits)

Esse campo é usado para indicar o tipo de cabeçalho de extensão ou, se o cabeçalho de extensão não estiver presente, ele indica a PDU da camada superior. Os valores para o tipo de PDU de camada superior são iguais aos do IPv4.

Limite de salto (8 bits)

Este campo é usado para interromper o pacote para fazer um loop na rede infinitamente. É o mesmo que TTL no IPv4. O valor do campo Hop Limit é diminuído em 1 conforme ele passa por um link (roteador / salto). Quando o campo chega a 0, o pacote é descartado.

Endereço de origem (128 bits)

Este campo indica o endereço do originador do pacote.

Endereço de destino (128 bits)

Este campo fornece o endereço do destinatário pretendido do pacote.

Se você deseja estudar o IPv6 em detalhes, consulte este link - www.tutorialspoint.com/ipv6/index.htm

A arquitetura do cabeçalho TCP (Transmission Control Protocol)

Como sabemos, o TCP é um protocolo orientado à conexão, no qual uma sessão é estabelecida entre dois sistemas antes de iniciar a comunicação. A conexão será encerrada assim que a comunicação for concluída. O TCP usa uma técnica de handshake de três vias para estabelecer o soquete de conexão entre dois sistemas. O handshake de três vias significa que três mensagens - SYN, SYN-ACK e ACK, são enviadas e recebidas entre dois sistemas. As etapas de trabalho entre dois sistemas, sistemas iniciais e de destino, são as seguintes -

Step 1 − Packet with SYN flag set

Em primeiro lugar, o sistema que está tentando iniciar uma conexão começa com um pacote que tem o sinalizador SYN definido.

Step 2 − Packet with SYN-ACK flag set

Agora, nesta etapa, o sistema de destino retorna um pacote com conjuntos de sinalizadores SYN e ACK.

Step 3 − Packet with ACK flag set

Por fim, o sistema inicial retornará um pacote ao sistema de destino original com o sinalizador ACK definido.

A seguir está o diagrama do cabeçalho TCP junto com a descrição dos campos -

Porta de origem (16 bits)

Ele identifica a porta de origem do processo do aplicativo no dispositivo de envio.

Porta de destino (16 bits)

Ele identifica a porta de destino do processo do aplicativo no dispositivo receptor.

Número de sequência (32 bits)

O número de sequência de bytes de dados de um segmento em uma sessão.

Número de confirmação (32 bits)

Quando o sinalizador ACK é definido, esse número contém o próximo número de sequência do byte de dados esperado e funciona como uma confirmação dos dados anteriores recebidos.

Deslocamento de dados (4 bits)

Este campo implica o tamanho do cabeçalho TCP (palavras de 32 bits) e o deslocamento de dados no pacote atual em todo o segmento TCP.

Reservado (3 bits)

Reservado para uso futuro e definido como zero por padrão.

Sinalizadores (1 bit cada)

  • NS - O processo de sinalização de Notificação de congestionamento explícito usa este bit de soma de Nonce.

  • CWR - Quando um host recebe um pacote com o conjunto de bits ECE, ele configura as janelas de congestionamento reduzidas para reconhecer que o ECE recebeu.

  • ECE - Tem dois significados -

    • Se o bit SYN for definido como 0, então ECE significa que o pacote IP tem seu bit CE (experiência de congestionamento) definido.

    • Se o bit SYN for definido como 1, ECE significa que o dispositivo é compatível com ECT.

  • URG - Indica que o campo Ponteiro Urgente contém dados significativos e deve ser processado.

  • ACK- Indica que o campo de confirmação tem significância. Se ACK for limpo para 0, indica que o pacote não contém nenhum reconhecimento.

  • PSH - Quando definido, é uma solicitação para a estação receptora PUSH de dados (assim que eles chegarem) para o aplicativo receptor sem armazená-los em buffer.

  • RST - Sinalizador de redefinição tem os seguintes recursos -

    • É usado para recusar uma conexão de entrada.

    • É usado para rejeitar um segmento.

    • É usado para reiniciar uma conexão.

  • SYN - Este sinalizador é usado para configurar uma conexão entre hosts.

  • FIN- Este sinalizador é usado para liberar uma conexão e nenhum outro dado é trocado depois disso. Como os pacotes com sinalizadores SYN e FIN possuem números de sequência, eles são processados ​​na ordem correta.

Tamanho do Windows

Este campo é usado para controle de fluxo entre duas estações e indica a quantidade de buffer (em bytes) que o receptor alocou para um segmento, ou seja, quantos dados o receptor está esperando.

  • Checksum - Este campo contém a soma de verificação de Cabeçalho, Dados e Pseudo Cabeçalhos.

  • Urgent Pointer - Ele aponta para o byte de dados urgente se o sinalizador URG estiver definido como 1.

  • Options- Facilita opções adicionais, que não são cobertas pelo cabeçalho regular. O campo de opção é sempre descrito em palavras de 32 bits. Se este campo contiver dados menores que 32 bits, o preenchimento é usado para cobrir os bits restantes para atingir o limite de 32 bits.

Se você quiser estudar o TCP em detalhes, consulte este link - https://www.tutorialspoint.com/data_communication_computer_network/transmission_control_protocol.htm

A arquitetura de cabeçalho UDP (User Datagram Protocol)

UDP é um protocolo simples sem conexão ao contrário do TCP, um protocolo orientado a conexão. Envolve quantidade mínima de mecanismo de comunicação. No UDP, o receptor não gera uma confirmação do pacote recebido e, por sua vez, o remetente não espera por nenhuma confirmação do pacote enviado. Esta lacuna torna este protocolo não confiável e também mais fácil de processar. A seguir está o diagrama do cabeçalho UDP junto com a descrição dos campos -

Porta Fonte

Essas informações de 16 bits são usadas para identificar a porta de origem do pacote.

Porto de destino

Essas informações de 16 bits são usadas para identificar o serviço de nível de aplicativo na máquina de destino.

comprimento

O campo de comprimento especifica todo o comprimento do pacote UDP (incluindo o cabeçalho). É um campo de 16 bits e o valor mínimo é de 8 bytes, ou seja, o tamanho do próprio cabeçalho UDP.

Checksum

Este campo armazena o valor da soma de verificação gerado pelo remetente antes do envio. O IPv4 possui este campo como opcional, portanto, quando o campo de checksum não contém nenhum valor, ele passa a ser 0 e todos os seus bits são zerados.

Para estudar o TCP em detalhes, consulte este link - Protocolo de datagrama do usuário