Tomada de controle da porta 445 / SMB (apenas em compromissos autorizados)
Escutar na porta SMB 445 e encaminhar para um endpoint SMB remoto. Quando 445 for a
porta local, a ferramenta primeiro libera a porta do servidor SMB interno do Windows:
root@kitploit:~
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100
Quando a porta local é 445, antes de vincular, a ferramenta irá automaticamente:
Verificar privilégios — confirmar que o processo está sendo executado como
administrador. Caso contrário, aborta com uma mensagem clara.
Mostrar o atual detentor — identificar o PID/processo atualmente vinculado à
porta 445 (normalmente System, PID 4, através do driver de kernel srvnet).
Desabilitar SMB e liberar a porta — parar LanmanServer e os drivers srv2 /
srvnet (parando recursivamente quaisquer serviços dependentes), exibindo cada
etapa para visibilidade.
Verificar e vincular — confirmar que a porta 445 está livre, depois vincular e encaminhar normalmente.
Exemplo de saída:
root@kitploit:~
[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445] service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445] service 'srv2' stopped
[445] Stopping 'srvnet'...
[445] service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)
⚠️ Parar estes serviços desabilita o compartilhamento de arquivos/impressoras no
host durante o compromisso. Restaure-o posteriormente com net start LanmanServer
(os drivers reiniciam sob demanda ou na próxima reinicialização). Use apenas em
sistemas que você está autorizado a testar.
Casos de Uso
Desenvolvimento Local
Acessar serviços executados em contêineres ou VMs
Encaminhar portas do WSL2 para o host Windows
Testar endpoints de webhook localmente
Ponte de Rede
Conectar diferentes segmentos de rede
Contornar restrições de firewall (uso autorizado apenas)
Acessar serviços internos a partir da DMZ
Acesso a Banco de Dados
Conexões seguras a banco de dados com lista de permissões de IP
Tunelar tráfego de banco de dados através de hosts intermediários
Expor bancos de dados locais para desenvolvimento remoto
Testes de Segurança
Monitorar e analisar padrões de tráfego TCP
Testar controles de acesso baseados em IP
Auditar tentativas de conexão com modo detalhado
Informações de Saída
O encaminhador fornece logs detalhados:
root@kitploit:~
[INFO] Configuration:
Local port: 8080
Remote host: 192.168.1.100
Remote port: 80
Allowed IP: 192.168.1.50 (filtered mode)
Verbose: OFF
[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop
[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)
Saída do Modo Detalhado
Quando a flag -v está habilitada, as conexões rejeitadas também são registradas:
root@kitploit:~
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)
Detalhes Técnicos
Otimizações de Desempenho
Tamanho do Buffer: Buffers de 8KB para transferência eficiente de dados
TCP_NODELAY: Algoritmo de Nagle desabilitado para menor latência
Keepalive: Configurações agressivas (10s inicial, intervalo de 1s) para detectar conexões mortas
Pool de Threads: Até 100 conexões simultâneas com threads de encaminhamento dedicadas
Accept Não Bloqueante: select() baseado em timeout para desligamento responsivo
Tratamento de Conexões
Cada conexão cria uma thread de encaminhamento dedicada que:
Estabelece conexão com o host remoto
Configura opções do socket (timeouts, keepalive, TCP_NODELAY)
Usa select() para encaminhamento bidirecional
Rastreia bytes transferidos em cada direção
Fecha graciosamente ambos os sockets na terminação
Tratamento de Erros
O encaminhador lida graciosamente com erros comuns de rede:
WSAECONNRESET - Conexão reiniciada pelo peer
WSAECONNABORTED - Conexão abortada
WSAENETRESET - Rede causou desconexão
WSAETIMEDOUT - Tempo limite da conexão excedido
Segurança de Threads
Seções críticas protegem o array de conexões
Flag running volátil para desligamento limpo
Sincronização de threads durante a limpeza
Considerações de Segurança
⚠️ Notas Importantes de Segurança:
Lista de Permissões de IP: Use o parâmetro [ip_permitido] em produção para restringir o acesso
Sem Criptografia: Este encaminhador não criptografa o tráfego. Use com túneis SSH ou VPNs para dados sensíveis
Autenticação: Nenhuma autenticação embutida. Certifique-se de que o serviço remoto tenha segurança adequada
Firewall: Configure o Firewall do Windows para restringir o acesso à porta de escuta
Logging: Desabilite o modo detalhado em produção para evitar inchaço do arquivo de log
Limites de Recursos: O limite de 100 conexões evita esgotamento de recursos
Solução de Problemas
Porta Já em Uso
root@kitploit:~
[ERROR] bind() failed: 10048
Solução: Outra aplicação está usando a porta. Escolha uma porta local diferente ou pare o serviço conflitante.
Não é Possível Conectar ao Remoto
root@kitploit:~
[ERROR] connect() to remote failed: 10061
Solução: Verifique se o host remoto está acessível e se o serviço está em execução na porta especificada.
Permissão Negada
root@kitploit:~
[ERROR] bind() failed: 10013
Solução: Portas abaixo de 1024 podem exigir privilégios de administrador. Execute como Administrador ou use um número de porta mais alto.
Conexão Rejeitada
root@kitploit:~
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)
Solução: Ative o modo detalhado (-v) para ver os IPs rejeitados ou remova a filtragem de IP.
Parando o Encaminhador
Pressione Ctrl+C para parar graciosamente o encaminhador. Ele irá:
Parar de aceitar novas conexões
Aguardar a conclusão das conexões ativas (até 5 segundos)
Fechar todos os sockets
Limpar os recursos
Exibir confirmação de limpeza
Limitações
Apenas Windows: Usa a API Winsock2 (não portável para Linux/macOS)
Apenas IPv4: Atualmente suporta apenas endereços IPv4
Filtro de IP Único: Apenas um endereço IP permitido pode ser especificado
Sem Balanceamento de Carga: O tráfego é encaminhado para um único endpoint remoto
Sem Inspeção de Tráfego: Encaminhamento TCP bruto sem análise de conteúdo
Sem Limitação de Largura de Banda: Nenhuma limitação ou QoS embutida
Melhorias Futuras
Possíveis recursos para versões futuras:
Suporte a IPv6
Múltiplas listas de permissão/negação de IP
Invólucro de criptografia SSL/TLS
Painel de estatísticas de tráfego
Suporte a arquivo de configuração
Limitação de largura de banda
Balanceamento de carga round-robin
Limitação de taxa de conexões
Suporte multiplataforma (Linux/macOS)
Licença
Este software é fornecido "como está" para fins educacionais e de administração legítima de redes. Use com responsabilidade e em conformidade com as leis e regulamentos aplicáveis.
Contribuindo
Contribuições são bem-vindas! Por favor, certifique-se de que:
O código segue o estilo existente
As alterações são bem testadas no Windows
Comentários explicam lógica complexa
O README é atualizado para novos recursos
Suporte
Para problemas, perguntas ou solicitações de recursos, abra uma issue no repositório do projeto.