Aprenda a usar o Netcat para auditoria de segurança em Linux

Nesta dica da semana da 4Linux, iremos aprender como trabalhar com o nc (Netcat), uma ferramente utilizada para auditoria de vulnerabilidades e segurança.

O que é?

O comando netcat é uma ferramenta implementada em sistemas Linux a partir de 1995, cuja função é estabelecer conexões entre hosts, ou seja entre as máquinas da sua rede, sendo ela interna ou externa.

O que Faz?

Basicamente o que o netcat faz é estabelecer uma conexão entre dois computadores, utilizando os protocolos TCP ou UDP como meio de tráfego para que seja possível escrever dados em conexões de rede.

Fazendo uma analogia direta com comandos do mundo Unix, podemos dizer que o netcat é como se fizessemos um cat utilizando sockets TCP e UDP.

Principais Parâmetros

O netcat é invocado em um terminal linux pelo comando nc, suas principais opções podem ser visualizadas com o seguinte comando:

nc -help

Abaixo algumas opções que serão úteis a nossos testes:

-e → Permite especifica o nome do programa a ser executado após uma conexão.

-l → Habilita o módulo “listen” do netcat, ou seja, a ferramenta passará a escutar as conexões ocorridas na porta especificada.

-p → Especifica qual porta será utilizada pelo netcat ao fechar uma conexão;

-u → Habilita o uso do protocolo UDP, por padrão o netcat trabalha utilizando o padrão TCP/IP de conexão;

-v → Permitirá restringir a quantidade de mensagens mostrada em tela, na prática poderemos criar conexões com maior nível de detalhamento no retorno das informações;

-w → Permite limitar o tempo de uma conexão com um valor numérico passado em segundos.

Para começarmos, abra dois terminais em sua máquina, no primeiro inicie o netcat colocando a ferramenta para escutar o tráfego em uma porta alta:

nc -vv -l -p 7000

A partir deste momento a porta 7000 estará aberta via netcat, para testar a comunicação com esta porta execute o seguinte comando do segundo terminal:

nc 127.0.0.1 7000

Olha ai o netcat funcionando…

Em nossos testes utilizarei a própria interface de loopback para fechar a conexão. Os testes que estamos executando é na própria máquina local, mas é possível também realizar os testes apartir de uma outra máquina na rede.

Se você possuir outra maquina na rede você poderá utilizá-la para coisas ainda mais interessante, como por exemplo, utilizando duas maquinas diferentes será possível abrir um chat nerd via netcat. =)

A partir do nectat é possível efetuar transferências de arquivos conforme o modelo abaixo, onde no primeiro comando abriremos uma conexão utilizando a porta 8000 e gravando a saída no arquivo recebi.txt.

nc -vv -l -p 8000 > recebi.txt

Agora a partir de um cliente com nc envio o arquivo ao meu servidor:

nc 127.0.0.1 8000 < /etc/hosts

Saia do nc e verifique se o arquivo foi enviado.

cat recebi.txt

Utilize o netcat como scanner para determinar se uma determinada porta esta aberta, neste exemplo verificaremos se um servidor esta aceitando conexões na porta 22 padrão do serviço SSH:

nc -vv 127.0.0.1 22

Utilizando a opção -e do netcat teremos um efeito muito interessante, poderemos simplesmente indicar uma shell como programa a ser executado ao fechar a conexão, dessa forma poderemos executar comandos através da porta aberta via nc, o interessante é que esses comandos serão executados no terminal onde a conexão foi aberta, ou seja, do lado do cliente (Entrada/STDIN), porém sua saída será enviada pela rede ao servidor (saída/STDOUT), na prática será como enviar comandos ao servidor via SSH.

No terminal que representa o servidor execute:

nc -vv -l -p 9000 -w 120 -e /bin/bash

No cliente faça uma conexão e envie os comandos:

nc -vv 127.0.0.1 9000

localhost [127.0.0.1] 9000 (?) open

ls /

ip a

cat /etc/hosts

Volte ao terminal anterior e verifique a saída dos comandos digitados, como utilizamos a opção -w esta conexão terá um limite de tempo de 2 minutos.

Dicas rápidas de segurança

O netcat em si já é uma ferramenta de segurança, seja em seu uso ofensivo como na abertura de backdoors ou como ferramenta de diagnóstico de vulnerabilidades, dessa forma tome cuidado ao efetuar testes com esta ferramenta, em um primeiro contato com este comando faça os testes a nível interno ou utilizando máquinas virtuais. Se necessário usar sua própria máquina atente-se para finalizar todas as conexões e processos abertos por esta ferramenta.

Referências

Instant Netcat Starter – Yerrid K.C.

Disponível em:www.packtpub.com

 

CURSOSCONSULTORIACONTATO

Anterior Aprenda a usar o comando chattr para bloquear arquivos e diretórios
Próxima Aprenda a converter um shell script em binário em passos simples

About author

Você pode gostar também

DevOps

Como Implementar a Análise de Qualidade de Código com DevOps e SonarQube

Dentro da ótica do DevOps e de como implementar agilidade com qualidade, temos os testes automatizados como um dos principais pilares para manter a essência do CI (Continuous Integration), porém

Infraestrutura TI

Avaliando a Segurança em Ambientes Kubernetes com Kubeaudit

Essa é a segunda parte falando de segurança em ambientes Kubernetes. Caso você ainda não tenha visto a Parte 1, fique a vontade para clicar no link abaixo: No post

DevOps

Entenda o SAST e como implementar com o Horusec em seu projeto

Saudações pessoal! Nós já falamos por aqui sobre DevSecOps e como implementar em nosso ciclo de desenvolvimento. Neste post iremos entrar em uma das etapas mais importantes deste ciclo de