Portas de­sem­pe­nham um im­por­tante papel na trans­mis­são de dados, pois asseguram a chegada dos pacotes ao destino desejado. Elas moderam a relação entre com­pu­ta­do­res e programas, ou com­pu­ta­do­res e serviços, por meio de pro­to­co­los de rede TCP e UDP. Estes, quando com­bi­na­dos a um endereço IP, indicam ao sistema ope­ra­ci­o­nal o com­pu­ta­dor ou a aplicação que deve receber o pacote de dados.

O que é port scanning?

Sistemas ope­ra­ci­o­nais usam portas para en­ca­mi­nhar pacotes de dados de entrada e de saída às apli­ca­ções de destino. Assim sendo, portas nada mais são que in­ter­fa­ces que moderam a relação entre sistemas, programas em execução e a internet. Para que uma aplicação possa receber ou enviar dados por meio de uma porta, esta deve, pri­mei­ra­mente, estar aberta (liberada, ha­bi­li­tada). Contudo, ao ser aberta, uma porta torna-se um ponto de vul­ne­ra­bi­li­dade, pois invasores também podem entrar por ela. Para minimizar riscos de ataques, você deve analisar, com re­gu­la­ri­dade, as portas abertas do seu sistema e as apli­ca­ções por trás de cada uma delas.

Port scanning, também chamado de port scan ou de varredura de portas, trata-se do processo de análise das portas abertas de um sistema, realizado por fer­ra­men­tas es­pe­ci­a­li­za­das. Para executar essa ve­ri­fi­ca­ção, você não precisa estar de­vi­da­mente logado em um sistema, mas somente conectado a ele, por rede local ou pela internet. Um port scan envia pacotes de dados de teste para as portas de um sistema, a fim de receber as devidas respostas. Uma vez recebidas, estas são ana­li­sa­das e avaliadas. A depender da sua fer­ra­menta de port scanning, você não somente receberá in­for­ma­ções sobre portas abertas e fechadas como também sobre as apli­ca­ções ou serviços que estão as uti­li­zando.

Ad­mi­nis­tra­do­res de sistemas fazem var­re­du­ras de portas para monitorar o tráfego de dados em uma rede. Munidos dos re­sul­ta­dos apre­sen­ta­dos, eles tornam-se capazes de iden­ti­fi­car vul­ne­ra­bi­li­da­des e combatê-las, di­mi­nuindo chances de ataques. Outros problemas de rede também podem ser des­co­ber­tos e re­sol­vi­dos por meio de um port scan. Fer­ra­men­tas que executam port scanning pouco impactam o de­sem­pe­nho de sistemas, podendo ser usadas com segurança e sem hesitação.

Também é in­te­res­sante que com­pu­ta­do­res do­més­ti­cos passem por var­re­du­ras de portas, uma vez que apli­ca­ções que demandam uma conexão com a internet abrem portas au­to­ma­ti­ca­mente — a não ser que um firewall as impeça. Neste contexto, um port scanning pode iden­ti­fi­car portas abertas não mais ne­ces­sá­rias e fechá-las, di­fi­cul­tando a ação de invasores.

My­De­fen­der
Segurança ci­ber­né­tica fácil
  • Es­ca­ne­a­mento regular de vírus e malware
  • Backup au­to­má­tico e re­cu­pe­ra­ção de arquivos simples

Como funciona o port scanning?

Vários são os métodos uti­li­za­dos por scanners de portas para fazer port scan. Os mais comuns são baseados no protocolo TCP orientado à conexão. Para que você possa entender melhor var­re­du­ras de portas por este protocolo, vale a pena observar como uma conexão TCP é es­ta­be­le­cida, por meio do processo conhecido como three-way handshake:

  • Pri­mei­ra­mente, o cliente envia um pacote SYN (sin­cro­ni­za­ção) para a aplicação de destino por meio de uma porta.
  • Se o pacote encontra a porta aberta e consegue chegar à aplicação, esta responde ao cliente com um pacote SYN-ACK (sin­cro­ni­za­ção-con­fir­ma­ção), que informa que a sin­cro­ni­za­ção deu certo e que a conexão pode ser es­ta­be­le­cida.
  • Na terceira e última etapa do processo, o cliente retorna um pacote ACK (con­fir­ma­ção) à aplicação, que es­ta­be­lece a conexão de fato dando início à troca de dados.

Se o processo de es­ta­be­le­ci­mento de conexão encontrar uma porta fechada, o cliente receberá um pacote RST (reset) na segunda etapa, o que im­pos­si­bi­li­tará o handshake.

Como trocar dados com inúmeras apli­ca­ções é inviável, pela demora e com­ple­xi­dade, um port scanning executa somente ten­ta­ti­vas de conexão simples, que serão mais bem ex­pli­ca­das nos próximos tópicos.

Varredura TCP SYN

Var­re­du­ras TCP SYN são também chamadas de var­re­du­ras se­mi­a­ber­tas, por não terem como objetivo o es­ta­be­le­ci­mento de uma conexão TCP completa. Neste método, um port scan envia pacotes SYN in­di­vi­du­ais somente para obter as res­pec­ti­vas respostas do des­ti­na­tá­rio. O des­ti­na­tá­rio, por sua vez, pode responder com um SYN-ACK, que confirma que a porta está aberta, ou com um pacote RST, que mostra que a porta está fechada. Caso nenhuma resposta seja obtida, muito pro­va­vel­mente esta terá sido barrada por um firewall.

Port scannings TCP SYN não ficam visíveis aos apli­ca­ti­vos ve­ri­fi­ca­dos e, portanto, não geram dados de registro. Jus­ta­mente por isso elas também são co­nhe­ci­das como stealth scans (var­re­du­ras secretas).

Varredura TCP connect

Uma varredura TCP connect não gera nem envia pacotes de dados por conta própria, por utilizar o sistema connect para tanto, dis­po­ni­bi­li­zado por quase todo sistema ope­ra­ci­o­nal. Neste método, uma conexão bem-sucedida é in­ter­pre­tada como uma porta aberta. Por outro lado, se a conexão falhar, a porta é com­pre­en­dida como fechada. Arquivos de registro das apli­ca­ções ana­li­sa­das gravam var­re­du­ras como essa sempre que a conexão é de­vi­da­mente es­ta­be­le­cida. Contudo, dados sobre o programa de port scanning utilizado não são gravados. Caso você não tenha a devida au­to­ri­za­ção para enviar pacotes de dados brutos, pode optar por uma varredura TCP connect ao invés de tentar realizar uma varredura TCP SYN.

Var­re­du­ras TCP FIN, xmas e null

Você também pode usar estes outros três métodos de port scanning para iden­ti­fi­car portas abertas e fechadas. Eles são baseados em dois prin­cí­pios de TCP listados na RFC 793:

  1. Pacotes de entrada que não são pacotes RST devem sempre ser res­pon­di­dos por uma porta fechada com outro pacote RST in­di­vi­dual.
  2. Todos os pacotes não marcados como SYN, RST ou ACK devem ser ignorados por portas abertas.

Var­re­du­ras TCP FIN, xmas e null exploram as situações descritas acima em port scannings re­a­li­za­dos em sistemas com­pa­tí­veis com RFC e com pacotes in­di­vi­du­ais:

  • O port scan null não faz uso de nenhuma marcação especial.
  • O port scan FIN envia pacotes FIN (finalizar).
  • O port scan xmas combina marcações FIN, PSH (empurrar) e URG (urgente), se acendendo como uma árvore de Natal (xmas, em inglês).

Os três métodos de varredura de portas funcionam exa­ta­mente da mesma forma. Obe­de­cendo normas es­ta­be­le­ci­das por do­cu­men­tos RFC, pacotes enviados para fins de testes fazem portas fechadas res­pon­de­rem com um pacote RST e portas abertas não res­pon­de­rem de forma alguma. En­tre­tanto, como apenas alguns ro­te­a­do­res geram uma mensagem de erro ao en­con­tra­rem portas com filtros, uma ausência de resposta também pode se dar por causa de um firewall. Mesmo que esses métodos sejam ainda menos de­tec­tá­veis que var­re­du­ras TCP SYN, eles possuem a des­van­ta­gem de serem in­com­pa­tí­veis com sistemas que não seguem as normas do RFC 793, como o Windows.

Varredura UDP

Em uma varredura UDP, ca­be­ça­lhos UDP vazios (sem dados), são enviados a todas as portas de destino. Se estas também res­pon­de­rem com um pacote UDP, serão con­si­de­ra­das abertas. Já se o port scanning receber a mensagem de erro do roteador “Port un­re­a­cha­ble” (tipo 3, código 3), in­ter­pre­tará a res­pec­tiva porta como fechada. Outras mensagens de erro também podem ser emitidas, indicando filtros nas portas.

A principal des­van­ta­gem de portas UDP é o alto consumo de tempo, já que mensagens de erro es­pe­cí­fi­cas demoram mais a serem enviadas, tanto por motivos de segurança quanto pela as­si­me­tria do processo. O núcleo do Linux, por exemplo, permite a emissão de somente uma mensagem por segundo. Neste sistema ope­ra­ci­o­nal, um port scan de 65.535 portas demoraria cerca de 18 horas para ser concluído.

Quais são as fer­ra­men­tas de port scanning dis­po­ní­veis?

Existem di­fe­ren­tes scanners de varredura no mercado, cada um com recursos es­pe­cí­fi­cos. Em sua maioria, fer­ra­men­tas de port scan são freewares ou open source, dis­po­ni­bi­li­za­das tanto por linha de comando quanto por interface gráfica do usuário.

Ao buscar por fer­ra­men­tas para a re­a­li­za­ção de um port scanning, você também se deparará com soluções on-line, capazes de realizar var­re­du­ras de portas di­re­ta­mente pelo navegador. Scanners on-line têm, contudo, fun­ci­o­na­li­da­des limitadas. O Port Scanner DNS tools, por exemplo, só verifica portas in­di­vi­du­ais. Por esse motivo, re­co­men­da­mos var­re­du­ras on-line somente para a execução de um port scanning rápido, em um com­pu­ta­dor doméstico.

Netcat: A fer­ra­menta de rede veterana

A fer­ra­menta de rede Netcat (nc) foi publicada em 1996 por um anônimo sob o pseudô­nimo de Hobbit. Ori­gi­nal­mente criada para pla­ta­for­mas UNIX, hoje a fer­ra­menta oferece portas para diversos sistemas, inclusive para Windows, e conta com com­ple­men­tos, como GNU Netcat, OpenBSD Netcat, Cryptcat e Netcat6 (também com­pa­tí­vel com IPv6), im­ple­men­ta­dos de forma padrão por di­fe­ren­tes dis­tri­bui­ções Linux.

A versão básica da linha de comando do Netcat é ge­ral­mente utilizada para enviar ou ler dados por meio de conexões de rede TCP e UDP. Contudo, ela também pode ser usada para a re­a­li­za­ção de var­re­du­ras de portas simples. Com um único comando, como nc -zv localhost 20-30, você con­se­guirá checar o status das portas 20 a 30 no sistema em execução. A varredura de portas UDP requer, contudo, o parâmetro adicional -u. Ao invés de chamar o localhost, você também pode executar o comando com o res­pec­tivo namehost ou com o endereço IP do sistema externo.

Nmap para var­re­du­ras abran­gen­tes

Nmap (Network Mapper) é uma fer­ra­menta de port scanning bem mais im­pres­si­o­nante e poderosa. Publicado em 1997, o programa de linha de comando ini­ci­al­mente de­sen­vol­vido para sistemas UNIX possui licença GPL e também dis­po­ni­bi­liza uma con­ve­ni­ente interface gráfica do usuário chamada Zenmap. Desde o ano 2000, o Nmap também conta com uma versão para Windows, embora esta tenha pequenas li­mi­ta­ções. Var­re­du­ras TCP connect, por exemplo, são feitas em tempo des­pro­por­ci­o­nal devido à API de rede do Windows. Varrer portas próprias também é um problema, e só é possível se executada de forma indireta.

Até hoje o inventor do Nmap, Gordon Lyon, jun­ta­mente com sua equipe de de­sen­vol­ve­do­res, continua a trabalhar nos recursos de port scan da fer­ra­menta. Técnicas de OS fin­ger­prin­ting, que re­co­nhe­cem o sistema ope­ra­ci­o­nal do des­ti­na­tá­rio, e outras que iden­ti­fi­cam serviços por trás de portas fazem do Nmap uma das soluções de varredura de portas mais populares do mundo. Sem contar os variados métodos de port scanning ofe­re­ci­dos, listado pela tabela abaixo:

Método de port scanning Comando Nmap Descrição
Varredura TCP connect nmap -sT host Port scan clássico para não-ad­mi­nis­tra­do­res
Varredura TCP SYN nmap -sS host Port scan rápido e discreto para ad­mi­nis­tra­do­res
Varredura TCP FIN, xmas, null nmap -sFhost
nmap -sXhost
nmap -sNhost
Port scan que pode contornarfirewalls
Varredura TCP ping nmap -sP host Não é um port scan clássico, mas ajuda a verificar a aces­si­bi­li­dade de um host
Varredura TCP ACK nmap -sA host Iden­ti­fica portas com filtros, mas não as distingue entre abertas e fechadas
Varredura TCP window nmap -sW host Com­pa­rá­vel à varredura ACK; consegue varrer alguns tipos de portas abertas e fechadas
Varredura TCP maimon nmap -sM host Combina as var­re­du­ras FIN e ACK
Varredura TCP idle nmap -sI host zumbi host Método de port scan mais discreto, mais complexo e, portanto, mais lento; opera por um terceiro com­pu­ta­dor, chamado pelo próprio Nmap de zumbi
Varredura UDP nmap -sU host Método de port scan para portas UDP sem conexão
Varredura SCTP Init nmap -sY host Port scan por SCTP, al­ter­na­tiva ao TCP e UDP
Varredura de protocolo IP nmap -sO host Não é um port scan pro­pri­a­mente dito, mas descobre os pro­to­co­los baseados em IP su­por­ta­dos pelo sistema de destino

Faça download do Nmap ou de sua interface gráfica Zenmap, mas não se esqueça de escolher o link es­pe­cí­fico para o seu sistema ope­ra­ci­o­nal. Opte, ainda, entre a versão atual (estável) e a versão beta, também dis­po­ni­bi­li­zada.

Por que port scanning pode ser ilegal?

Nem todas as situações en­vol­vendo var­re­du­ras de portas é legal. In­fe­liz­mente, alguns utilizam-se de port scans para iden­ti­fi­car falhas de segurança em terceiros e explorá-las ne­ga­ti­va­mente. Casos como estes podem acarretar problemas judiciais.

Port scannings em excesso podem paralisar sistemas de com­pu­ta­do­res, uma vez que re­qui­si­ções de conexão inin­ter­rup­tas so­bre­car­re­gam o sistema des­ti­na­tá­rio, levando-o a um crash. Ainda, os res­pon­sá­veis pelo sistema analisado podem detectar tal atividade e in­ter­pretá-la como um ataque. Pro­vi­dên­cias de proteção podem envolver a polícia e a justiça, uma vez que so­bre­car­re­gar sistemas de terceiros de­li­be­ra­da­mente é con­si­de­rado ataque DoS ou DDoS.

Antes de realizar um port scan, cer­ti­fi­que-se de estar de­vi­da­mente au­to­ri­zado a fazê-lo e de usar a res­pec­tiva tec­no­lo­gia somente para fins de segurança. Até mesmo por isso, fique de olho nas portas do seu próprio sistema, dos com­pu­ta­do­res da sua rede e nos serviços que as acessam.

Ir para o menu principal