Evitando firewalls na execução de um Pentest

Este artigo trará uma atividade bem interessante que é como evitar ser barrado por um firewall nas atividades de Pentest. Na execução de um Pentest você poderá encontrar diversos tipos de cenários dentre eles ambientes que utilizem a segmentação de rede como forma de defesa interna, iremos abordar as melhores práticas para que essa segmentação seja burlada e possamos caminhar na execução da atividade sem mais problemas.

No nosso cenário temos uma rede corporativa que possui conectividade através da internet, interface WAN, realizada por meio de um firewall e possui outras duas interfaces de rede segmentadas, VLAN USUARIOS e VLAN GERENCIA, que ficam responsáveis por separar determinado grupo de funcionários e uma DMZ, conforme modelo abaixo:

Como acontece na maioria dos casos a porta de entrada para a rede interna se dará pelo comprometimento da máquina localizada na DMZ. Utilizaremos o netcat para descobrir possíveis serviços.

Iremos verificar duas portas que possivelmente possam estar em um servidor de DMZ, a HTTP 80 e FTP 21:

Como podemos ver nas imagens conseguimos ver que os dois serviços estão ativos e que a versão do FTP utilizada é vulnerável e com exploit amplamente conhecido, descoberto nosso ponto de entrada vamos explorar e partindo do ponto que ainda não temos conhecimento da topologia da rede iremos verificar as interfaces de rede para ver se a máquina pode se comunicar com alguma outra rede interna:

Verificamos que existe duas interfaces, então iremos utilizar o utilitário tcpdump para verificar se existem conexões chegando na segunda interface de rede (interna) para que possamos descobrir possíveis ranges.

Primeiramente iremos realizar o upgrade para um shell pty com o comando:

python -c ‘import pty; pty.spawn(“/bin/bash”)’

Logo em seguida realizaremos o seguinte comando:

tcpdump -i et1 not arp

Feito isso, verificamos um tráfego direcionado ao servidor na DMZ via rede interna conforme imagem abaixo:

Após isso tentamos realizar um ping sweep nos ips descobertos porém sem sucesso, sendo assim sabemos que existe um firewall que controla também o ambiente interno.

Mesmo impossibilitado de realizar um ping sweep, conseguimos identificar uma rede segredada da DMZ através de análise de tráfego, conseguimos assim enumerar ativos sem ser barrados por um firewall. Como a conexão se inicia por uma porta alta, provavelmente a máquina trata-se de uma máquina de gerência ou de usuários comuns.

Agora temos uma questão, identificar qual o sistema operacional da máquina, para que possamos realizar um pivoteamento até esta rede. Iremos iniciar a nossa busca por sistemas que comumente são utilizados por usuários, o Windows. Porém antes de iniciarmos uma pergunta: Como faremos para que possamos ter contato com aquela máquina já que nem um ping sweep funciona? Neste caso iremos modificar todo nosso tráfego de rede para sair por uma única porta, a porta 80, desta forma o firewall irá pensar que trata-se de uma conexão legítima e liberará nosso tráfego.

Comando para redirecionar todos os pacotes para uma única porta:

iptables -t nat -A POSTROUTING -p tcp -j SNAT –to :80

O Windows por padrão habilita sua porta de compartilhamento de recursos, porta 445, que possui algumas vulnerabilidades conhecidas, iremos realizar um teste, usaremos o netcat assim verificaremos se a porta está aberta e categorizando assim como uma possível máquina Windows.

Como podemos ver a porta está aberta, e o principal objetivo foi concluído, conseguimos enganar o firewall fazendo se passar pela porta HTTP 80, assim obtemos conectividade com a rede segregada. Feito isso podemos buscar por algum exploit conhecido para tentar explorar falhas naquele serviço.

Diante do exposto vemos algumas técnicas tanto passivas como ativas para tentar burlar firewalls na execução de um Pentest, como falado anteriormente nem sempre temos uma rede simples, e precisamos pensar fora da caixa para podermos cumprir com os objetivos estabelecidos em um Pentest. Vale lembrar que alguns firewalls mais modernos utilizam a metodologia statefull em que as conexões são filtradas pelo seu estado sendo assim um empecilho para a mudança de porta já que o firewall entende que o natural do servidor não e abrir conexões e sim executar corresponder a abertura de conexões desta maneira não conseguimos realizar contato através de portas pedrões, por hoje foi só, espero que tenham curtido e até a próxima.