Tutorial de como utilizar netcat, nmap e wireshark
Este tutorial faz parte do GUIA COMPLETO do professional em Segurança Ofensiva de Software, saiba mais.
Aula 3: Varredura de rede
O processo de procurar por portas abertas em uma máquina é conhecido como port scanning e é considerado ilegal em muitos países pois gera muito tráfego podendo sobrecarregar alguns dispositivos.
Um scan por portas TCP se baseia no princípio 3-way-handshake:
- Flag ACK significa porta aberta.
- Flag RST significa porta fechada.
- Sem resposta significa porta filtrada (bloqueada por firewall).
- Resposta ICMP "port unreachable" significa porta fechada.
- Sem respostas significa que a porta está aberta ou filtrada.
Figura 1: Disponibilizando nc.exe via FTP |
[cp `locate nc.exe` `pwd`]
Figura 2: Varredura de portas e leitura de banners usando Netcat |
Sabendo que:
[nc.exe -vn 192.168.1.4 1-100 -w 60]
Figura 3: Banner serviço na porta 80 |
[nc -lvp 4444]
[nc -v 192.168.1.4 4444]3.1.3 Transferência com Netcat
Figura 5: Netcat transferência de arquivo |
É possível realizar transferência de arquivos de texto ou binários com Netcat, para isso na máquina Kali foi redirecionado a saída da escuta para um arquivo e na máquina Windows XP foi realizado redirecionamento de entrada com o arquivo que deseja transferir (Figura 5).
3.1.4 Bind shell e Reverse shell com Netcat
Figura 6: Firewall do Windows bloqueando Netcat |
É possível enviar a linha de comandos da máquina Windows XP para a máquina Kali, este processo é conhecido como bind shell. Para isso primeiramente é necessário liberar no firewall do Windows o netcat para realizar escuta na porta (Figura 6).
Figura 7: Bind shell |
Iniciando o Netcat no Windows em modo escuta passando o executável de sua linha de comando, na máquina Kali basta se conectar à porta configurada na máquina Windows XP (Figura 7) para conseguir realizar um bind shell.
Figura 8: Reverse shell |
Já o processo de reverse shell, é necessário que inicie primeiramente a escuta e aguarde a conexão da outra máquina para receber sua shell (Figura 8).
A diferença principal de um bind shell e reverse shell é que no bind shell o atacante inicializa um serviço no computador alvo no qual ele conseguirá se conectar remotamente. Enquanto que no reverse shell o atacante deve inicializar o servidor em sua máquina para que a máquina alvo se conecte como cliente ao servidor do atacante. É preferível realizar um reverse shell pois o atacante não precisa de saber o endereço IP do alvo e pode facilmente burlar bloqueios de firewall já que maioria dos firewalls não checam pacotes que estão saindo da rede.
3.1.5 SBD Netcat clone
A maioria dos sistemas IPS/IDS identificam a assinatura de tráfego de uma conexão shell exposta e a sinalizam como maligno. Existem vários clones criptografados do Netcat e um deles é o SBD.
Figura 9: Transferência sbd.exe via Netcat |
Utilizando o Netcat é possível transferir o arquivo executável do SBD para a máquina Windows (Figura 9).
Figura 10: Firewall Windows bloqueando SBD |
Para escutar portas, é necessário liberar o SBD no firewall do Windows (Figura 10) clicando em “Desbloquear”.
Figura 11: Bind shell utilizando SBD |
Figura 12: Reverse shell SBD |
Também é semelhante o procedimento de reverse shell no SBD (Figura 12).
3.2.1 Wireshark
Figura 13: Follow TCP Stream |
É uma ferramenta que permite farejar o tráfego de rede. Por exemplo após capturar pacotes de tráfego de uma rede, utilizando a opção “Follow TCP Stream” é possível remontar os fragmentos da sessão e visualizar o banner do serviço FTP, bem como a versão que está rodando e também o usuário e senha do usuário do IP 192.168.1.37 (vermelho) que se conectou ao servidor FTP no IP 192.168.1.34 (azul) (Figura 13).
Figura 14: Filtrar requisições HTTP GET para endereço específico |
É possível filtrar o conteúdo capturado, por exemplo o filtro “http contains GET and ip.addr == 192.168.1.5” permite filtrar as requisições http GET para um endereço específico (Figura 14).
3.3.1 Nmap
Com o Nmap você pode varrer os hosts configurados na sua rede local virtual buscando versões de sistemas operacionais, portas TCP e UDP abertas e serviços nos hosts. Por padrão seu scan abrange portas 1 a 1024, portanto é necessário especificar caso queira identificar outras portas, consulte seu manual digitando "man nmap" (sem aspas) no terminal para saber mais.
Figura 15: Nmap scan local network TCP |
Utilizando o argumento -sS no comando do Nmap significa para não realizar conexão TCP completa e o -O habilita a descoberta de sistema operacional, já -sV habilita descoberta de versão de determinado serviço (Figura 15). O IP informado naquele padrão significa que a ferramenta irá varrer toda a rede local.
Depois de algum tempo, na saída do comando você encontrará informações úteis por exemplo:
Nmap scan report for 192.168.1.4 Host is up (0.000088s latency). Not shown: 997 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp Pure-FTPd 22/tcp open ssh OpenSSH 9.0p1 Debian 1+b1 (protocol 2.0) 80/tcp open http Apache httpd 2.4.54 ((Debian)) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6.32 OS details: Linux 2.6.32 Network Distance: 0 hops Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Para varrer por portas UDP apenas substitua -sS por -sU no comando. E para varrer um site basta digitar o endereço do site em vez do IP. Você pode utilizar o site scanme.nmap.org para testar legalmente. Recomendo adicionar a opção -F para testar apenas as portas mais utilizadas e -vv para visualizar o progresso da varredura.
3.4.1 Outras ferramentas
Existem diversas ferramentas de varredura, é importante saber consultar seus manuais para extrair o máximo de seu potencial durante uma varredura. Exemplos:
- OpenVAS, Nessus, ZAProxy: scanners de vulnerabilidades
- Hping: TCP/IP packet assembler/analyzer
- Stunnel: proxy desenhado para suportar TLS encrpytion
COMENTÁRIOS