Como atacar portas abertas e o que os cibercriminosos podem fazer

Temos certeza que todos vocês já tiveram que “abrir uma porta”, ou melhor, fazer um “encaminhamento de porta” no roteador, já que todos os computadores da rede local estão atrás do NAT. Para poder acessar esses dispositivos que estão na rede local da Internet, temos que “abrir uma porta” ou fazer “Encaminhamento de porta” no roteador, caso contrário, não poderemos acessar este serviço da Internet ( Servidor SSH, servidor FTP, servidor OpenVPN, etc.) Hoje, neste artigo, vamos explicar o que significa para uma porta ser aberta, como eles podem atacar portas abertas e o que podem fazer.

Como atacar portas abertas e o que os cibercriminosos podem fazer

O que significa uma porta estar “aberta”?

As comunicações ao nível da camada de transporte, utilizando principalmente os protocolos TCP e UDP, utilizam o que é conhecido como “socket de Internet”. Este socket constitui um mecanismo pelo qual dois processos (aplicações, por exemplo) podem trocar dados através da rede local ou através da Internet. Qualquer fluxo de dados que usa TCP ou UDP requer pelo menos as seguintes informações:

  • IP fonte
  • Porto de origem
  • IP de destino
  • Porto de destino

Numa rede local, de forma totalmente automática e transparente, as portas são continuamente abertas e fechadas pelos diferentes processos para poderem comunicar com outros computadores. Para que dois processos se comuniquem, é necessário que um processo seja capaz de “localizar” o outro para obter serviços ou fornecer serviços a você.

esquema del handshake de 3 vias

Quando definimos que uma "porta está aberta", pode ocorrer em dois cenários muito diferentes:

  • Uma porta aberta em um computador local , por exemplo, em nosso computador ou em um servidor local. Em princípio, todas as portas devem ser fechadas porque o firewall é normalmente configurado de forma restritiva (tudo bloqueado, exceto o que é especificamente permitido).
  • Uma porta aberta no NAT do roteador . Normalmente no roteador não temos nenhuma porta “aberta”, ou melhor, não temos na seção “Servidor Virtual” ou “Encaminhamento de portas” nenhuma porta para nenhum computador. Por padrão, em qualquer roteador esta tabela está vazia, no entanto, podemos registrar regras diferentes para abrir portas para computadores diferentes.

Quando precisamos abrir as portas localmente?

Se nosso computador local atua como um servidor “algo”, como, por exemplo, um servidor FTP, um servidor web, um servidor SSH, um VPN servidor, um servidor de banco de dados e muito mais, teremos que ter uma porta ou várias portas abertas nele. firewall para que os diferentes computadores da rede local ou da Internet possam acessar nossos serviços, caso contrário, eles não poderão acessar porque o firewall bloqueará essa comunicação e as conexões não serão estabelecidas.

Normalmente em um ambiente doméstico, se definirmos Windows 10 ou um Linuxbaseado em sistema operacional como “Rede privada” ou “Rede doméstica”, o firewall é desabilitado e todas as conexões de entrada serão permitidas. Porém, se o tivermos como “Rede pública” o firewall será ativado e bloqueará todas as conexões de entrada que não foram feitas anteriormente, portanto, estamos diante de um firewall “restritivo”.

Quando precisamos abrir portas no NAT do roteador?

Se tivermos um computador na rede local que funcione como servidor «para alguma coisa», como no caso anterior, e quisermos que estes serviços sejam acessíveis desde a Internet, será necessário fazer um «encaminhamento de porta» ou também conhecido como «portas abertas». Desta forma, se alguém abrir um socket com o endereço IP público e uma porta externa correspondente, esse fluxo de dados será automaticamente encaminhado para o computador para o qual “abrimos as portas”.

Qualquer roteador por padrão não tem nenhuma regra para realizar o encaminhamento de porta, teremos que fazer isso especificamente. Além disso, um detalhe muito importante é que se sua operadora possuir CG-NAT, mesmo que você abra uma porta no roteador externamente, você não poderá fazer nada para acessar os recursos internos da rede local.

Como você ataca uma porta?

Você não pode realmente “atacar” uma porta, o que é atacado é o serviço por trás dessa “porta” que está escutando para aceitar conexões de entrada. Por exemplo, se temos a porta 5555 aberta e um servidor FTP está configurado aqui, o que faremos é atacar o serviço FTP, mas não a porta. A porta ainda é uma “porta” para as informações, o que realmente é atacado são os serviços por trás dessas portas.

O termo atacar uma porta é comumente usado, quando na verdade deveria ser dito “faça uma varredura de porta” para verificar quais portas estão abertas em um determinado computador, para posteriormente atacar os serviços por trás desse serviço específico. Para fazer uma varredura de portas existem muitos métodos, mas, sem dúvida, o melhor que podemos usar é fazer uma varredura com Nmap, o programa quintessencial de descoberta de host e varredura de porta, além disso, também permitiria sua exploração por meio do NSE, que é um complemento do Nmap, com a possibilidade de crackear diferentes serviços e explorar vulnerabilidades conhecidas.

O Nmap é um programa muito fácil de usar, basta instalá-lo em qualquer sistema operacional baseado em Linux para iniciar seu funcionamento, ele está nos repositórios oficiais de cada distribuição, portanto, basta executar o seguinte comando:

sudo apt install nmap

Uma vez instalado, teremos que executar o comando específico para ver se uma porta está aberta, filtrada ou fechada:

nmap -p PUERTO IP

Também poderíamos verificar um intervalo de portas da seguinte maneira:

nmap -p PUERTOINICIAL-PUERTOFINAL IP

Por exemplo, se temos um servidor da web com HTTP e HTTPS em execução, é completamente normal que tenhamos as portas 80 e 443 abertas, assim:

Verificar portas abertas, filtradas ou fechadas com o Nmap é fácil, entretanto, recomendamos que você leia o wiki Nmap completo, onde temos manuais detalhados passo a passo dos diferentes tipos de varredura de portas que temos disponíveis.

O que um cibercriminoso pode fazer com uma porta aberta?

Quando temos uma porta aberta, pode haver vários casos em torno do que um cibercriminoso pode ou não pode fazer. Se tivermos uma porta aberta, mas não houver serviço por trás dela escutando, não será capaz de fazer nada, no entanto, o número da porta aberta pode ser “salvo” no caso de colocarmos um serviço para escutar no futuro .

Se tivermos uma porta aberta e houver um serviço por trás da escuta, ele pode realizar várias ações:

  • Use uma forma legítima para verificar seu funcionamento
  • Se o serviço exigir autenticação, ele pode executar um dicionário ou um ataque de força bruta para acessar o serviço.
  • Execute um ataque de negação de serviço para fazer com que o serviço pare de funcionar corretamente e pare de fornecer serviço.
  • Explorar uma vulnerabilidade de segurança no serviço, seja para acessar ilegitimamente os recursos do serviço, seja para entrar no sistema, seja para escalar privilégios e assumir o controle total do servidor.

Como você pode ver, com uma porta aberta e um serviço rodando atrás dela, um cibercriminoso pode realizar muitas ações maliciosas, portanto, é muito importante proteger os serviços por trás desta porta, para protegê-los, é aconselhável realizar as seguintes ações :

  • Configure corretamente o firewall para permitir o acesso apenas a quem realmente precisa, por exemplo, você pode filtrar por países.
  • Para mitigar ataques DoS, você pode configurar regras de firewall para negar muitas conexões simultâneas ao mesmo IP de origem.
  • Você pode instalar um programa como o fail2ban para detectar várias tentativas de login e, em seguida, dizer ao firewall para bloquear o IP de origem.
  • Fortalecendo o serviço que está ouvindo, seja um servidor SSH, FTP ou servidor web, há sempre configurações avançadas nesses serviços para protegê-los ainda mais.
  • Fortalecer o sistema operacional que hospeda o serviço, definindo políticas de autenticação robustas, atualizando o sistema e até utilizando sistemas avançados como SELinux entre outros.

Existem muitas medidas de segurança que podemos aplicar a um sistema e serviço para ficar mais seguro, mas você deve ter em mente que não existe 100% de segurança, portanto, você deve estar preparado para um incidente e ser capaz de recuperar o sistema.