🔥🧱 Hackeando um firewall

Criei uma ferramenta para Bypass em regras de source port do firewall.

Estava assistindo uma aula do curso de Pentest profissional da Desec Security sobre bypass em regras de firewall.

Uma das aulas era sobre uma regra onde você pode informar que só aceita conexões em uma determinada porta se essa conexão vier de uma porta específica.

Exemplificando, eu poderia dizer o seguinte:

Só aceite conexões no meu web service que está na porta 80 se essa conexão for aberta a partir da porta 443 do usuário.

Então, caso eu abrisse o navegador e tentasse acessar o ip ou endereço do web service eu não obteria acesso pois, normalmente, quando uma conexão é aberta a porta de origem é uma porta alta, como por exemplo 5647.

Então, como sou antes de tudo um desenvolvedor, assim que ouvi isso pensei: E se eu criasse uma proxy que intermediasse essa comunicação e sempre que uma requisição for feita para o host remoto eu inicio ela a partir de uma porta específica?

Bom, foi ai que eu começei minha ferramenta.

Usei nodejs pois é uma linguagem que tenho muita segurança na parte backend do desenvolvimento, e toda a parte de servidor e requisições utilizei a biblioteca padrão do node, a http.

Uma outra biblioteca foi a url.

Caso você deseje dar uma olhada no código, aqui está: https://lnkd.in/etbsRXrF

É um código bem mau feito mesmo, apenas para conseguir fazer o bypass no firewall.

Você poderá ver no vídeo que funcionou extremamente bem.

Utilizei um sistema de filas bem mau implementado pois, nessa proxy, não é possível fazer requisições em paralelo, pois, caso eu inicie uma requisição a partir da porta 53, por exemplo, ela estará ocupada e não poderá ter outra conexões abertas a partir dela enquanto não fechar.

Para burlar isso, sempre que recebo uma requisição, eu não fecho ela, eu simplesmente adiciono em uma fila de requisições onde tenho um "event loop" que fica observando a fila procurando por requisições.

Caso duas requisições tenham sido feitas, esse loop irá executar a primeira e após finalizar completamente a requisição irá para a próxima requisição, o que claro, deixa tudo um pouco mais lento mas, para o nosso objetivo está mais que bom.

Caso queiram entender mais detalhes sobre esse cara e como tudo funciona por debaixo dos panos, com demonstrações e tudo mais, comentem aqui em baixo que posso postar um vídeo no YouTube exclusivo para esse propósito!

Quer ver o vídeo de demonstração? dê uma olhada no post do linkedin