Bypass Firewall

Um dos grandes problemas ao scanear um host atrás de portas abertas, é quando o firewall bloqueia essa tentativa. Porém há maneiras mesmo havendo um firewall bloqueando, bypassar essa regra. Vamos supor que há um firewall bloqueando determinadas portas ao fazer um scan pelo nmap, ao fazermos isso não conseguimos receber a resposta dizendo que a porta está aberta. Uma técnica que pode ser feito para burlar isso, seria utilizar uma porta de origem, o tráfego de alguma determinada porta de origem pode estar sendo permitida pelo firewall. Uma das portas que poderíamos tentar: 53, 80, 443, etc. Se o firewall não foi muito bem configurado, podemos usar isso. Partindo pra prática, vamos rodar o nmap especificando a porta de origem que queremos utilizar.

Primeiro, veremos a regra do firewall que está configurada.

root@server5:/home/msfadmin/firewall# cat rules4.sh 
#!/bin/bash

# Ativar forward
sysctl -w net.ipv4.ip_forward=1

# Acertar as polĂ­ticas
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Permintir entrada de tráfego
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT 
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT 
iptables -A INPUT -d 172.16.1.5 -i eth0 -p tcp -m tcp --sport 53 --dport 1024:65535 -j ACCEPT 
iptables -A INPUT -d 172.16.1.5 -i eth0 -p tcp -m tcp --sport 80 --dport 1024:65535 -j ACCEPT 
iptables -A INPUT -d 172.16.1.5 -i eth0 -p tcp -m tcp --sport 443 --dport 1024:65535 -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 80 -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 443 -j ACCEPT 
iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1024:65535 --dport 53 -j ACCEPT 

# Mascaramento
iptables -t nat -A POSTROUTING -o 172.16.1.1/24 -j MASQUERADE

Aplicando essa regra, e executando o nmap temos o seguinte resultado.

┌──(root💀kali)-[/home/user/Desktop]
└─# sudo nmap -sS -Pn 172.16.1.5
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-03 10:44 EDT
Nmap scan report for 172.16.1.5
Host is up (0.21s latency).
Not shown: 998 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 13.87 seconds

Apenas a porta 22 e 80 aparece aberta. Agora, passando uma porta de origem, podemos burlar isso.

┌──(root💀kali)-[/home/user/Desktop]
└─# sudo nmap -sS -Pn -g 53 172.16.1.5                                                                                                                                                                                               
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-03 10:57 EDT
Nmap scan report for 172.16.1.5
Host is up (0.21s latency).
Not shown: 979 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
23/tcp   open     telnet
25/tcp   open     smtp
53/tcp   open     domain
80/tcp   filtered http
111/tcp  open     rpcbind
139/tcp  open     netbios-ssn
445/tcp  open     microsoft-ds
512/tcp  open     exec
513/tcp  open     login
514/tcp  open     shell
1099/tcp open     rmiregistry
1524/tcp open     ingreslock
2049/tcp open     nfs
3306/tcp filtered mysql
5900/tcp open     vnc
6000/tcp open     X11
6667/tcp open     irc
8009/tcp open     ajp13
8180/tcp open     unknown

Nmap done: 1 IP address (1 host up) scanned in 7.99 seconds

Com isso, conseguimos atingir serviços que antes não conseguimos, enviando a porta de origem junto.

Mas ao tentarmos conectar pelo browser na porta 8180, por exemplo, ele não nos mostra nada, fica apenas carregando a página. O motivo disso é porque o firewall está bloqueando, mas ainda há uma maneira de identificarmos o que está rodando no serviço utilizando o netcat, passando também uma porta de origem para burlar o filtro e por fim salvando num arquivo.

┌──(root💀kali)-[/home/user/Desktop]
└─# nc -vn -p 53 172.16.1.5 8180 > resultado.html
(UNKNOWN) [172.16.1.5] 8180 (?) open
GET / HTTP/1.0

Abrindo esse arquivo, podemos ver as informações do servidor.

Last updated