Knockd (bate, bate, bate na porta do céu)

Knockd é um servidor port-knock. Ele escuta todo o tráfego em uma interface Ethernet (ou PPP), procurando por "batidas" sequências de requisições. Um cliente faz requisições para o servidor enviando um pacote TCP (ou UDP) para uma porta no servidor.

[ Hits: 9.344 ]

Por: Bruno Viana em 08/05/2017 | Blog: https://myshell.blog


Poc



Para teste, tenho dois cliente um com o IP: 192.168.0.138, o outro com 192.168.0.205 e um servidor com o IP: 192.168.0.21. A ideia é abrir a porta somente para o primeiro cliente.

Então, vamos escanear a porta 2222 do nosso servidor com o cliente 01:

# nmap -p 2222 192.168.0.21
Starting Nmap 6.40 ( http://nmap.org ) at 2017-01-18 11:41 BRT
Nmap scan report for 192.168.0.21
Host is up (0.00045s latency).
PORT STATE SERVICE
2222/tcp filtered EtherNet/IP-1
MAC Address: CA:47:3B:65:11:F3 (Unknown)

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


Agora, com o cliente 02:

# nmap -p 2222 192.168.0.21
Starting Nmap 7.40 ( https://nmap.org ) at 2017-01-18 14:00 Hora Padrão de Buenos Aires
Nmap scan report for 192.168.0.21
Host is up (0.0020s latency).
PORT STATE SERVICE
2222/tcp filtered EtherNetIP-1
MAC Address: CA:47:3B:65:11:F3 (Unknown)

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


No cliente 01, vamos executar o nosso script:

# ./knockOC.sh -s 192.168.0.21 -p 6390 7832 6276
./knockOC.sh: connect: Conexão recusada
./knockOC.sh: line 23: /dev/tcp/192.168.0.21/6390: Conexão recusada
./knockOC.sh: connect: Conexão recusada
./knockOC.sh: line 23: /dev/tcp/192.168.0.21/7832: Conexão recusada
./knockOC.sh: connect: Conexão recusada
./knockOC.sh: line 23: /dev/tcp/192.168.0.21/6276: Conexão recusada


Podemos acompanhar as batidas com o comando, no servidor:

tail -f /var/log/knockd.log
[2017-01-18 12:00] waiting for child processes...
[2017-01-18 12:00] shutting down
[2017-01-18 12:00] starting up, listening on eth0
[2017-01-18 14:06] 192.168.0.138: SSH: Stage 1
[2017-01-18 14:06] 192.168.0.138: SSH: Stage 2
[2017-01-18 14:06] 192.168.0.138: SSH: Stage 3
[2017-01-18 14:06] 192.168.0.138: SSH: OPEN SESAME
[2017-01-18 14:06] SSH: running command: /sbin/iptables -I INPUT -s 192.168.0.138 -p tcp --dport 2222 -j ACCEPT


SSH: Stage 1: significa que a primeira porta foi batida com sucesso, Stage 2 a segunda, e assim sucessivamente.

Se fizermos um scan novamente na porta 2222, a partir do primeiro cliente, teremos o seguinte resultado:

# nmap -p 2222 192.168.0.21
Starting Nmap 6.40 ( http://nmap.org ) at 2017-01-18 12:15 BRT
Nmap scan report for 192.168.0.21
Host is up (0.00044s latency).
PORT STATE SERVICE
2222/tcp open EtherNet/IP-1
MAC Address: CA:47:3B:65:11:F3 (Unknown)

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


No cliente 2, que não executou o script:

# nmap -p 2222 192.168.0.21
Starting Nmap 7.40 ( https://nmap.org ) at 2017-01-18 14:21 BRT
Nmap scan report for 192.168.0.21
Host is up (0.0020s latency).
PORT STATE SERVICE
2222/tcp filtered EtherNetIP-1
MAC Address: CA:47:3B:65:11:F3 (Unknown)

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


A porta foi aberta apenas para o primeiro cliente. Agora, podemos acessar via SSH normalmente.

Página anterior    

Páginas do artigo
   1. Configurações iniciais
   2. Configurações do cliente
   3. Poc
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criptografia quântica

Instalando a nova versão do HLBR - IPS invisível

Criptografia assimétrica com o RSA

Configurando logout automático para conta root

Sudoers 1.8.12 - Parte I - Manual

  
Comentários
[1] Comentário enviado por wagnerfs em 12/05/2017 - 11:27h

Descobri esse recurso um dia desses e por coincidência vi esse artigo. Bem interessante e útil.
_________________________
"GNU/Linux for human beings."

ºvº "Software Livre: não é pelo dinheiro.
/( _ ) É uma questão de consciência."
^ ^



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts