Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
fwknop — Autorização de Pacote Único > Port Knocking | Kitploit
Ferramentas/GitHubGitHub/mrash/fwknop
Autenticação e AutorizaçãoFerramentas DefensivasFerramentas de Criptografia/DescriptografiaSegurança de RedeCriptografiaAutenticação
GitHubmrash/fwknop

fwknop

Autorização de Pacote Único > Port Knocking

Ver Repositório
1.4k253há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Site

fwknop - Autorização por Pacote Único

Introdução

O fwknop implementa um esquema de autorização conhecido como Autorização por Pacote Único (SPA) para forte ocultação de serviços. O SPA requer apenas um único pacote que é criptografado, não reproduzível e autenticado via HMAC para comunicar o acesso desejado a um serviço que está oculto atrás de um firewall em uma postura de filtragem de rejeição padrão. A principal aplicação do SPA é usar um firewall para descartar todas as tentativas de conectar a serviços como SSH, a fim de tornar a exploração de vulnerabilidades (tanto 0-day quanto código não corrigido) mais difícil. Como não há portas abertas, qualquer serviço ocultado pelo SPA naturalmente não pode ser escaneado com o Nmap. O projeto fwknop suporta quatro firewalls diferentes: iptables, firewalld, PF e ipfw em Linux, OpenBSD, FreeBSD e Mac OS X. Há também suporte para scripts personalizados para que o fwknop possa ser adaptado para suportar outras infraestruturas como ipset ou nftables.

O SPA é essencialmente a próxima geração do Port Knocking (PK), mas resolve muitas das limitações apresentadas pelo PK, mantendo seus benefícios principais. As limitações do PK incluem uma dificuldade geral em proteger contra ataques de repetição, cifras assimétricas e esquemas HMAC geralmente não são suportáveis de forma confiável, e é trivialmente fácil montar um ataque DoS contra um servidor PK apenas falsificando um pacote adicional em uma sequência PK enquanto ela atravessa a rede (convencendo assim o servidor PK de que o cliente não conhece a sequência correta). Todas essas deficiências são resolvidas pelo SPA. Ao mesmo tempo, o SPA oculta serviços atrás de uma política de firewall de rejeição padrão, adquire dados SPA de forma passiva (geralmente via libpcap ou outros meios) e implementa operações criptográficas padrão para autenticação e criptografia/descriptografia de pacotes SPA.

Os pacotes SPA gerados pelo fwknop utilizam HMAC para criptografia autenticada no modelo de criptografar-depois-autenticar. Embora o uso de um HMAC seja atualmente opcional (habilitado via a opção de linha de comando --use-hmac), é altamente recomendado por três razões:

  1. Sem um HMAC, a autenticação criptograficamente forte não é possível com o fwknop a menos que o GnuPG seja usado, mas mesmo assim um HMAC ainda deve ser aplicado.
  2. Um HMAC aplicado após a criptografia protege contra ataques de oráculo de preenchimento do modo CBC, como o ataque Vaudenay e artimanhas relacionadas (como o ataque "Lucky 13" mais recente contra SSL).
  3. O código necessário pelo daemon fwknopd para verificar um HMAC é muito mais simples do que o código necessário para descriptografar um pacote SPA, então um pacote SPA sem um HMAC adequado nem mesmo é enviado através das rotinas de descriptografia.

A última razão acima é por que um HMAC ainda deve ser usado mesmo quando os pacotes SPA são criptografados com GnuPG, devido ao fato de que os dados SPA não são enviados através das funções libgpgme a menos que o HMAC seja verificado primeiro. GnuPG e libgpgme são corpos de código relativamente complexos, e portanto limitar a capacidade de um potencial atacante de interagir com esse código através de uma operação HMAC ajuda a manter uma postura de segurança mais forte. Gerar um HMAC para comunicações SPA requer uma chave dedicada além da chave de criptografia normal, e ambas podem ser geradas com a opção --key-gen.

O fwknop criptografa pacotes SPA com a cifra de bloco Rijndael ou via GnuPG e cifra assimétrica associada. Se o método de criptografia simétrica for escolhido, então como de costume a chave de criptografia é compartilhada entre o cliente e o servidor (veja o arquivo /etc/fwknop/access.conf para detalhes). A chave de criptografia real usada para a criptografia Rijndael é gerada através do algoritmo padrão de derivação de chave PBKDF1, e o modo CBC é definido. Se o método GnuPG for escolhido, então as chaves de criptografia são derivadas dos key rings GnuPG.

Casos de Uso

Pessoas que usam Autorização por Pacote Único (SPA) ou seu primo de segurança questionável, Port Knocking (PK), normalmente acessam o SSHD executando no mesmo sistema onde o software SPA/PK está implantado. Isto é, um firewall executando em um host tem uma política de rejeição padrão contra todas as conexões SSH de entrada para que o SSHD não possa ser escaneado, mas um daemon SPA reconfigura o firewall para conceder temporariamente acesso a um cliente SPA autenticado passivamente:

SPA-basic-access-SSHD "Uso básico do SPA para acessar o SSHD"

O fwknop suporta o acima, mas também vai muito além e faz uso robusto de NAT (para firewalls iptables/firewalld). Afinal, firewalls importantes são geralmente gateways entre redes, ao contrário de serem apenas implantados em hosts autônomos. O NAT é comumente usado nesses firewalls (pelo menos para comunicações IPv4) para fornecer acesso à Internet a redes internas que estão no espaço de endereço RFC 1918, e também para permitir que hosts externos acessem serviços hospedados em sistemas internos.

Como o fwknop se integra com NAT, o SPA pode ser aproveitado para acessar serviços internos através do firewall por usuários na Internet externa. Embora isso tenha muitas aplicações em redes tradicionais modernas, também permite que o fwknop suporte ambientes de computação em nuvem como o Amazon AWS:

SPA-Amazon-AWS-cloud "Uso do SPA em ambientes de nuvem Amazon AWS"

Interface do Usuário

A interface de usuário oficial multiplataforma do cliente fwknop, fwknop-gui (download, github), é desenvolvida por Jonathan Bennett. A maioria dos modos SPA do lado do cliente são suportados, incluindo solicitações NAT, chaves HMAC e Rijndael (GnuPG ainda não é suportado), salvamento de estrofe fwknoprc e muito mais. Atualmente o fwknop-gui é executado em Linux, Mac OS X e Windows - aqui está uma captura de tela do OS X: fwknop-gui-OS-X-screenshot "fwknop-gui no Mac OS X" Da mesma forma, um cliente Android atualizado também está disponível.

Tutorial

Um tutorial abrangente sobre o fwknop pode ser encontrado aqui:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html

Recursos

A seguir está uma lista completa de recursos suportados pelo projeto fwknop:

  • Implementa Autorização por Pacote Único em firewalls iptables e firewalld no Linux, firewalls ipfw em *BSD e Mac OS X, e PF no OpenBSD.
  • O cliente fwknop é executado em Linux, Mac OS X, *BSD e Windows com Cygwin. Além disso, há um aplicativo Android para gerar pacotes SPA.
  • Suporta ambos os métodos Rijndael e GnuPG para criptografia/descriptografia de pacotes SPA.
  • Suporta criptografia autenticada HMAC para ambos Rijndael e GnuPG. A ordem de operação é criptografar-depois-autenticar para evitar vários problemas criptanalíticos.
  • Ataques de repetição são detectados e frustrados pela comparação de digest SHA-256 de pacotes SPA de entrada válidos. Outros algoritmos de digest também são suportados, mas SHA-256 é o padrão.
  • Os pacotes SPA são capturados passivamente da rede via libpcap. O servidor fwknopd também pode adquirir dados de pacotes de um arquivo que é escrito por um sniffer Ethernet separado (como com tcpdump -w <file>), do escritor pcap ULOG do iptables, ou diretamente via um socket UDP no modo --udp-server.
  • Para firewalls iptables, as regras ACCEPT adicionadas pelo fwknop são adicionadas e removidas (após um tempo limite configurável) de cadeias iptables personalizadas para que o fwknop não interfira com qualquer política iptables existente que já possa estar carregada no sistema.
  • Suporta conexões NAT de entrada para comunicações SPA autenticadas (apenas firewalls iptables por enquanto). Isso significa que o fwknop pode ser configurado para criar regras DNAT para que você possa acessar um serviço (como SSH) executando em um sistema interno em um endereço IP RFC 1918 a partir da Internet aberta. Regras SNAT também são suportadas, o que essencialmente transforma o fwknopd em um gateway autenticador SPA para acessar a Internet de uma rede interna.
  • Múltiplos usuários são suportados pelo servidor fwknop, e cada usuário pode receber sua própria chave de criptografia simétrica ou assimétrica através do arquivo /etc/fwknop/access.conf.
  • Resolução automática do endereço IP externo via https://www.cipherdyne.org/cgi-bin/myip (isso é útil quando o cliente fwknop é executado atrás de um dispositivo NAT). Como o endereço IP externo é criptografado dentro de cada pacote SPA neste modo, ataques Man-in-the-Middle (MITM) onde um dispositivo intermediário intercepta um pacote SPA e o encaminha apenas a partir de um IP diferente na tentativa de obter acesso são frustrados.

Licença

O projeto fwknop é lançado como software de código aberto sob os termos da GNU General Public License (GPL v2) ou (a seu critério) qualquer versão posterior. A versão mais recente pode ser encontrada em http://www.cipherdyne.org/fwknop/

Estado Atual

Este arquivo README descreve o estado atual do projeto fwknop a partir do lançamento 2.5 em julho de 2013. Atualmente, temos uma implementação da biblioteca Firewall Knock Operator; libfko, bem como o cliente fwknop e aplicações servidoras. A biblioteca fornece a API e a funcionalidade de back-end para gerenciar os dados de Autorização por Pacote Único (SPA) que os outros componentes do fwknop empregam. Também pode ser usada por outros programas que precisam de funcionalidade SPA (veja o diretório perl para o módulo FKO perl como exemplo, e há bindings python também no diretório python).

Atualizando

Se você está atualizando de uma versão antiga do fwknop (e isso inclui a implementação original em perl também), então você vai querer ler o link a seguir para garantir uma transição suave para o fwknop-2.5 ou posterior:

http://www.cipherdyne.org/fwknop/docs/fwknop-tutorial.html#backwards-compatibility

Diversos

  • Perguntas ou comentários sobre o fwknop serão recebidos na lista de discussão fwknop.
  • Para análise estática, o fwknop usa o analisador estático CLANG e também a poderosa ferramenta Coverity Scan:

Compilando o fwknop

Esta distribuição usa GNU autoconf para configurar a compilação. Por favor, consulte o arquivo INSTALL para noções básicas sobre o uso do autoconf.

Existem algumas opções "configure" específicas do fwknop. Elas são (extraídas de ./configure --help):

root@kitploit:~
  --disable-client        Não compilar o componente cliente do fwknop. O
                          padrão é compilar o cliente.
  --disable-server        Não compilar o componente servidor do fwknop. O
                          padrão é compilar o servidor.
  --with-gpgme            suporte para criptografia gpg usando libgpgme
                          [default=check]
  --with-gpgme-prefix=PFX prefixo onde o GPGME está instalado (opcional)
  --with-gpg=/path/to/gpg Especificar o caminho para o executável gpg que gpgme irá
                          usar [default=check path]
  --with-firewalld=/path/to/firewalld
                          Especificar o caminho para o executável firewalld
                          [default=check path]
  --with-iptables=/path/to/iptables
                          Especificar o caminho para o executável iptables
                          [default=check path]
  --with-ipfw=/path/to/ipfw
                          Especificar o caminho para o executável ipfw [default=check
                          path]
  --with-pf=/path/to/pfctl
                          Especificar o caminho para o executável pf [default=check
                          path]
  --with-ipf=/path/to/ipf Especificar o caminho para o executável ipf [default=check
                          path]

Exemplos:

./configure --disable-client --with-firewalld=/bin/firewall-cmd
./configure --disable-client --with-iptables=/sbin/iptables --with-firewalld=no

Notas

Migrando da versão Perl do fwknop

Para aqueles que estão atualmente usando a versão Perl e planejam migrar para esta versão, há algumas coisas a serem consideradas:

  • Nem todos os recursos e funcionalidades do fwknop baseado em Perl foram portados para esta implementação. Consideramos importante manter a versão C tão enxuta e leve quanto possível. A maioria das características/funções omitidas (como alertas por e-mail) podem ser realizadas por outros meios (ou seja, usar um script externo para monitorar arquivos de log e alertar com base em mensagens de log apropriadas).

  • Existem algumas diferenças nas diretivas e valores dos arquivos de configuração e acesso do fwknop. Algumas delas são bastante sutis. Você deve prestar atenção cuidadosa à documentação e aos comentários nesses arquivos.

Para desenvolvedores do fwknop

Se você está obtendo esta distribuição do git, deve executar o script autogen.sh para gerar os arquivos autoconf. Se você receber erros sobre diretórios ou arquivos ausentes, tente executar autogen.sh novamente. Depois disso, você pode executar autoreconf -i quando quiser regenerar a configuração. Se, por algum motivo, o autoreconf não funcionar para você, o script autogen.sh deve ser suficiente.

As fontes nroff das páginas de manual do fwknop e fwknopd estão incluídas em seus respectivos diretórios (cliente e servidor). Esses arquivos nroff são derivados das fontes asciidoc no diretório 'docs'. Consulte o README em docs para obter detalhes.

Baixar ferramenta
  • Randomização de porta é suportada para a porta de destino dos pacotes SPA, bem como para a porta sobre a qual a conexão subsequente é feita através das capacidades NAT do iptables. O último se aplica a conexões encaminhadas para serviços internos e ao acesso concedido a sockets locais no sistema executando fwknopd.
  • Integração com Tor (conforme descrito nesta apresentação do DefCon 14). Observe que, como o Tor usa TCP para transporte, o envio de pacotes SPA através da rede Tor requer que cada pacote SPA seja enviado sobre uma conexão TCP estabelecida, então tecnicamente isso quebra o aspecto "único" de "Autorização por Pacote Único". No entanto, o Tor fornece benefícios de anonimato que podem superar essa consideração em algumas implantações.
  • Implementa um protocolo versionado para comunicações SPA, portanto é fácil estender o protocolo para oferecer novos tipos de mensagens SPA e manter a compatibilidade retroativa com clientes fwknop mais antigos ao mesmo tempo.
  • Suporta a execução de comandos shell em nome de pacotes SPA válidos.
  • O servidor fwknop pode ser configurado para impor múltiplas restrições em pacotes SPA de entrada além daquelas impostas por chaves de criptografia e detecção de ataques de repetição. Nomeadamente, idade do pacote, endereço IP de origem, usuário remoto, acesso a portas solicitadas, e mais.
  • Incluído com o fwknop está um conjunto abrangente de testes que emite uma série de testes projetados para verificar se tanto o cliente quanto o servidor do fwknop funcionam corretamente. Esses testes envolvem a captura de pacotes SPA sobre a interface de loopback local, a construção de regras de firewall temporárias que são verificadas quanto ao acesso apropriado com base na configuração de teste, e a análise da saída tanto do cliente fwknop quanto do servidor fwknopd em busca de marcadores esperados para cada teste. A saída do conjunto de testes pode ser facilmente anonimizada para comunicação a terceiros para análise.
  • O fwknop foi o primeiro programa a integrar port knocking com fingerprinting passivo de SO. No entanto, a Autorização por Pacote Único oferece muitos benefícios de segurança além do port knocking, portanto o modo de operação port knocking é geralmente descontinuado.