Para determinar um tipo de firewall e até mesmo o fabricante, você pode usar sua experiência com scanner de portas e ferramentas para criar informações sobre o firewall que seu alvo está executando. Ao identificar determinadas portas, você pode vincular os resultados a um firewall específico e, a partir desse ponto, determinar o tipo de ataque ou processo a ser executado para comprometer ou ignorar o dispositivo.
Alguns firewalls como o Check Point FireWall-1 e o Microsoft Proxy Server usam as portas TCP 256-259 e TCP 1080 e 1745.
Felizmente, você pode realizar o banner grabbing com Telnet para identificar o serviço em execução em uma porta. Se você encontrar um firewall com portas específicas em execução, isso pode ajudar na identificação. É possível pegar o banner e ver o que é respondido de volta.
Firewalking
Outra maneira eficaz de determinar a configuração de um firewall é através de firewalking. Firewalking pode soar como um processo difícil e teste de coragem, mas na verdade é o processo de sondagem um firewall para determinar a configuração de ACLs enviando pacotes TCP e UDP no firewall. A chave para fazer isso de forma bem sucedida é o fato de que os pacotes são definidos para ter mais um salto em seu tempo de vida (TTL), a fim de obtê-los passado o firewall ou obter uma resposta afirmando o contrário.
Para executar um firewalk contra um firewall, você precisa de três componentes:
- Firewalking Host – O sistema, fora da rede do alvo, a partir do qual os pacotes de dados são enviados para o host de destino, a fim de obter mais informações sobre a rede de destino;
- Gateway Host – O sistema na rede de destino que está conectado à Internet, através do qual o pacote de dados passa no seu caminho para a rede de destino;
- Host de Destino – O sistema de destino na rede para a qual os pacotes de dados são endereçados.
Usando Firewalk
Existem diferentes maneiras de executar o processo de firewalking usando diferentes ferramentas, mas uma que é popular é o Firewalk do Linux. Este programa foi projetado para fazer uso de métodos ativos para determinar quais protocolos de camada 4 passarão por um dispositivo. Quando executado, o Firewalk envia inúmeros pacotes TCP e/ou UDP com um conjunto TTL definido como sendo um passo além do alvo. Na prática, isso significa que se um pacote passar pelo firewall, ele expirará no próximo salto e o sistema scanner receberá uma mensagem ICMP_TIME_EXCEEDED. No entanto, para o tráfego que está bloqueado, nenhuma resposta será devolvida porque o dispositivo geralmente dá um drop nesses pacotes completamente.
O primeiro passo para fazer este processo funcionar é determinar o valor correto para o TTL. Como precisamos de tráfego para passar o firewall e para o próximo host, o TTL será definido para o número de saltos para chegar ao firewall mais um. Lembre-se de que quando você está determinando a contagem de saltos exata, você não está olhando para alcançar qualquer coisa mais longe na rede, apenas a contagem para obter um passo além do firewall. Tenha em mente que firewalking destina-se a analisar o firewall em si, e você irá depois para outros alvos mais tarde. Depois de ter determinado isso usando um utilitário, como traceroute, você pode começar a scan real.
Para ilustrar, aqui estão os resultados da execução Firewalk contra um alvo:
Firewalk 5.0 [gateway ACL scanner] Firewalk state initialization completed successfully. TCP-based scan. Ramping phase source port: 53, destination port: 33434 Hotfoot through 217.41.132.201 using 217.41.132.161 as a metric. Ramping Phase: 1 (TTL 1): expired [192.168.102.254] 2 (TTL 2): expired [212.38.177.41] 3 (TTL 3): expired [217.41.132.201] Binding host reached. Scan bound at 4 hops. Scanning Phase: port 21: A! open (port listen) [217.41.132.161] port 22: A! open (port not listen) [217.41.132.161] port 23: A! open (port listen) [217.41.132.161] port 25: A! open (port not listen) [217.41.132.161] port 53: A! open (port not listen) [217.41.132.161] port 80: A! open (port not listen) [217.41.132.161] Scan completed successfully.
Neste exemplo você pode ver que as portas 21 e 23 estão abertas e algo está escutando atrás dessas portas. As outras portas estão apenas abertas e nada está por trás deles com base nos resultados retornados.
Se você olhar para cima nos resultados, você verá a fase Ramping. Nesta etapa o script de firewalking está usando traceroute para ver quantos saltos leva para chegar ao alvo. Uma vez que este número é determinado para ser 3, Firewalk adiciona um salto para trazê-lo para 4 e limita ou define os limites da varredura para 4 saltos. Ao fazer isso, o scanner pode dizer se os pacotes chegaram ao ponto após o firewall ou foram parados pelo firewall
Firewalk com Kali
Na janela do terminal Kali, digite o seguinte comando:
Firewalk -S1-1024 -i <interface> -n -pTCP <gateway IP> <target IP>
Neste exemplo -S indica quais as portas a serem verificadas, -i é a interface de rede com a qual quer escanear, -n declara que para não fazer resolução de nome reverso e -p diz para usar TCP para a verificação. Os dois últimos são o endereço do gateway ou firewall, e o IP de destino é o ponto atrás do firewall. Preencha estes com os valores apropriados para seu ambiente e pressione ENTER.
O script do Firewalk agora estará em execução e fornecerá resultados após alguns momentos.
Depois que o Firewalk concluir dê uma olhada nos resultados e você deve ser capaz de ter uma ideia de como o tráfego é tratado. Você deve ver quais portas estão abertas, bem como quais os que têm algo ouvindo por trás deles ou não.
Você deve fazer Firewalking uma vez que você encontra portas abertas. Na prática, uma vez que um invasor encontra portas abertas, eles agora podem se concentrar nessas portas e configurar suas ferramentas para entrar no sistema através delas. Há outro benefício em encontrar essas portas abertas no firewall. As portas abertas por design do proprietário do sistema não podem executar qualquer tipo de log no tráfego que passa por elas.
Usando o Nmap para determinar a configuração de um firewall
Como vimos, o Nmap é capaz de fazer muitas coisas, e neste caso também pode realizar firewalking. Na prática, isso significa que o valor TTL dos pacotes é configurado para um passo além do firewall. Se o scan passa o firewall e atinge o próximo roteador, o TTL é diminuído em 1 e uma mensagem ICMP_TIME_EXCEEDED é retornada.
Começa com um TTL igual à distância para o alvo. Se a sonda expirar, ela é reenviada com um TTL diminuído em 1. Se você receber um ICMP_TIME_EXCEEDED, a verificação será concluída para este scan, o que significa que a porta está fechada.
Para tornar isso ainda mais eficaz, o Nmap tem um script embutido que executará firewalking para você. Você pode chamar esse script e segmentar uma vítima usando a seguinte sintaxe:
Nmap --script=firewalk --traceroute <target ip-address>
Neste exemplo, –script= especifica o script a ser usado. O próximo, –traceroute, executa um traceroute para o endereço IP de destino, a fim de determinar os limites para o processo de firewalking.
Sugestões de livros: