Ngrok, entenda como funciona

O Ngrok é uma ferramenta que permite criar túneis seguros entre a sua máquina local e a internet, permitindo que você exponha serviços locais para o mundo exterior. Com o Ngrok, você pode testar, compartilhar e demonstrar aplicações web, APIs, servidores, dispositivos IoT e muito mais, sem a necessidade de configurar servidores, domínios, firewalls ou portas .

O que é um túnel?

Um túnel é uma conexão bidirecional entre a sua máquina local e um servidor remoto, que permite que o tráfego HTTP ou TCP seja encaminhado entre eles. O túnel é criado por um cliente, que é um programa que roda na sua máquina local, e um servidor, que é um serviço que roda na nuvem .

O cliente se conecta ao servidor usando um protocolo chamado ngrok, que é baseado em TLS (Transport Layer Security). O servidor aloca um endereço público (URL ou IP) para o seu túnel, que pode ser usado para acessar o seu serviço local a partir de qualquer lugar da internet. O servidor também mantém uma conexão persistente com o cliente, que permite que o tráfego seja enviado de volta para o seu serviço local .

Como usar o Ngrok?

Para usar o Ngrok, você precisa baixar e instalar o cliente na sua máquina local. Você pode encontrar o cliente para o seu sistema operacional no site oficial do Ngrok. Depois de baixar e descompactar o arquivo, você pode executar o cliente a partir da linha de comando.

O comando básico para criar um túnel é:

ngrok http <porta>

Onde <porta> é a porta do seu serviço local que você quer expor. Por exemplo, se você tem um servidor web rodando na porta 8000, você pode criar um túnel com o comando:

ngrok http 8000

O cliente vai se conectar ao servidor do Ngrok e criar um túnel. Você vai ver uma tela como esta:

ngrok by @inconshreveable                                       (Ctrl+C to quit)

Session Status                online
Account                       <your_account> (Plan: Free)
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://<random_string>.ngrok.io -> http://localhost:8000
Forwarding                    https://<random_string>.ngrok.io -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

Aqui você pode ver algumas informações sobre o seu túnel, como o status, a conta, a versão, a região, a interface web e os endereços de encaminhamento. Os endereços de encaminhamento são os URLs públicos que você pode usar para acessar o seu serviço local. Note que o Ngrok gera um endereço aleatório para cada túnel, que pode ser HTTP ou HTTPS. Você também pode ver as estatísticas das conexões, como o número total, o número aberto, os tempos de resposta e os percentis .

Agora você pode usar o seu navegador ou qualquer outro cliente HTTP para acessar o seu serviço local usando o endereço de encaminhamento. Por exemplo, se você acessar http://<random_string>.ngrok.io, você vai ver o mesmo conteúdo que você veria se acessasse http://localhost:8000 na sua máquina local. Você também pode compartilhar esse endereço com outras pessoas, que poderão acessar o seu serviço local a partir de qualquer lugar da internet .

Você também pode acessar a interface web do Ngrok, que é um painel de controle que mostra informações detalhadas sobre o seu túnel, como os logs das requisições, as respostas, os cabeçalhos, os corpos, os cookies, os parâmetros e muito mais. Você pode acessar a interface web usando o endereço http://127.0.0.1:4040 na sua máquina local .

Para encerrar o seu túnel, você pode pressionar Ctrl+C na linha de comando onde você executou o cliente do Ngrok. Isso vai desconectar o cliente do servidor e liberar o endereço de encaminhamento.

Para aqueles que querem aprender mais sobre o ngrok e diversas outras ferramentas de pentest, mas não tem nenhum conhecimento na área, ou querem aprimorá-las ainda mais, o curso de Pentest do Zero ao Profissional da Solyd Offensive Security é uma ótima opção. São 250 horas de conteúdo prático e teórico, divididos em mais de 350 aulas com materiais de estudos. Os alunos matriculados têm acesso a fóruns de dúvidas, suporte técnico com os professores e certificado de conclusão, além de uma plataforma exclusiva de CTF com dezenas de laboratórios para serem testados. O curso também oferece um voucher para o exame de certificação SYCP (Solyd Certified Pentester) que é um certificado hacking de peso internacional, e uma premiação de 3 mil reais em bitcoin para o primeiro colocado no ranking da plataforma.