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
Ferramentas/GitHubGitHub/denuitt1/mhr-cfw
Proxies Web e InterceptaçãoEvasão de IDS/IPSSegurança na NuvemRed Teaming
GitHubdenuitt1/mhr-cfw

mhr-cfw

Um Relay de Domain-Fronting que roteia tráfego através do GAS (Google Apps Script) e o encaminha para o Cloudflare Workers. Projetado para contornar DPI.

Ver Repositório
4.4k4162há 3 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

MHR-CFW

MITM Domain-Fronted HTTP Relay + Cloudflare Worker Exit

GitHub

InglêsPersa

Como Funciona

1 - GAS + Cloudflare Worker Exit

root@kitploit:~
Cliente -> Relay Local -> Google/CDN Front -> GAS (Google Apps Script) Relay -> Cloudflare Worker -> Saída
            |
            +-> Mostra www.google.com para o filtro DPI da rede

2 - GAS + Cloudflare Worker Middle + Self-Hosted Upstream Forwarder Relay Exit

root@kitploit:~
Cliente -> Relay Local -> Google/CDN Front -> GAS (Google Apps Script) Relay -> Cloudflare Worker -> Self-Hosted Upstream Forwarder -> Saída
            |
            +-> Mostra www.google.com para o filtro DPI da rede

No uso normal, o navegador envia o tráfego para o proxy em execução no seu computador. O proxy envia esse tráfego através da infraestrutura do Google, de modo que a rede veja apenas um domínio permitido, como www.google.com. Seu relay implantado então busca o site real através do cloudflare worker e envia a resposta de volta pelo mesmo caminho.

Isso significa que o filtro vê tráfego normal do Google, enquanto o destino real permanece oculto dentro da requisição do relay.


Como Usar

1 - Baixar o projeto e extrair

root@kitploit:~
git clone https://github.com/denuitt1/mhr-cfw.git
cd mhr-cfw
pip install -r requirements.txt

Não consegue acessar o PyPI diretamente? Use este espelho:

root@kitploit:~
pip install -r requirements.txt -i https://mirror-pypi.runflare.com/simple/ --trusted-host mirror-pypi.runflare.com

2 - Configurar o Cloudflare Worker (worker.js)

  1. Acesse o Cloudflare Dashboard e faça login com sua conta Cloudflare.
  2. Na barra lateral, navegue até Compute > Workers & Pages
  3. Clique em Create Application, escolha Start with Hello World e clique em Deploy
  4. Clique em Edit code e Delete todo o código padrão no editor.
  5. Abra o arquivo worker.js deste projeto (em deploy/), copie tudo e cole no editor do Apps Script.
  6. Importante: Altere o worker nesta linha para o worker que você criou:
    root@kitploit:~
    const WORKER_URL = "myworker.workers.dev";
    
  7. Clique em Deploy.

3 - Configurar o Google Relay (Code.gs)

  1. Acesse o Google Apps Script e faça login com sua conta Google.
  2. Clique em New project.
  3. Delete todo o código padrão no editor.
  4. Abra o arquivo Code.gs deste projeto (em deploy/), copie tudo e cole no editor do Apps Script.
  5. Importante: Altere a senha nesta linha para algo que só você saiba, e substitua a url do worker pela sua:
    root@kitploit:~
    const AUTH_KEY = "sua-senha-secreta-aqui";
    const WORKER_URL = "https://myworker.workers.dev";
    
  6. Clique em Deploy → New deployment.
  7. Escolha Web app como tipo.
  8. Defina:
    • Execute as: Eu
    • Who has access: Anyone
  9. Clique em Deploy.
  10. Copie o Deployment ID (parece uma longa string aleatória). Você precisará dele na próxima etapa.

⚠️ Lembre-se da senha que você definiu na etapa 3. Você usará a mesma senha no arquivo de configuração abaixo.

4 - Executar

Execute o arquivo run.bat (no Windows) ou run.sh (no Linux) para iniciar o relay.

Se estiver executando pela primeira vez, será exibido um assistente de configuração onde você deve inserir o AUTH_KEY e o Deployment ID do Google Apps Script. Você deverá ver uma mensagem dizendo que o proxy HTTP está rodando em 127.0.0.1:8085

5 - Uso

Recomendamos usar o cliente v2rayN e configurar um proxy socks5.

Você também pode usar a extensão Chrome do FoxyProxy ou a extensão Firefox para usar este proxy no seu navegador.

6 - Testar sua conexão

Acesse ipleak.net no seu navegador. Você deverá ver seu endereço IP definido como o do cloudflare.

image

7 - Guias de Uso Adicionais

Usando o Proxy Dentro de uma Máquina Virtual

Quando você executa uma máquina virtual (VM), ela opera em um ambiente de rede isolado, separado do host. Por padrão, a VM não pode acessar diretamente serviços rodando em localhost da máquina host — incluindo este proxy.

Para corrigir isso, você precisa encontrar o IP do gateway que seu hipervisor atribui ao host e usá-lo no lugar de localhost ao configurar o proxy dentro da VM.

Exemplo: VirtualBox (modo NAT)

O host está sempre acessível de dentro da VM em 10.0.2.2. Configure o proxy:

root@kitploit:~
export http_proxy="http://10.0.2.2:8085"
export https_proxy="http://10.0.2.2:8085"
export all_proxy="socks5://10.0.2.2:8085"

Para tornar isso permanente, adicione as linhas acima ao ~/.bashrc e execute source ~/.bashrc.

Como este proxy realiza inspeção SSL, você pode ver erros de certificado. Instale o ca.crt incluído para corrigi-los:

root@kitploit:~
sudo cp ca.crt /usr/local/share/ca-certificates/ && sudo update-ca-certificates

Compartilhando o Proxy em uma Rede Local (ex.: Dispositivos Móveis)

Você pode usar este proxy no seu celular ou em qualquer outro dispositivo na mesma rede — sem software adicional.

1. Encontre o IP do seu host

root@kitploit:~
# Windows
ipconfig

# Linux / macOS
ip addr

Procure o IP do adaptador conectado ao seu roteador (ex.: 192.168.1.8).

2. Redirecione a porta (apenas Windows, se o serviço estiver vinculado ao localhost)

Execute o CMD como Administrador:

root@kitploit:~
netsh interface portproxy add v4tov4 listenaddress=192.168.1.8 listenport=8085 connectaddress=127.0.0.1 connectport=8085
netsh advfirewall firewall add rule name="Proxy 8085" dir=in action=allow protocol=TCP localport=8085

3. Configure o proxy no seu celular

Conecte seu celular ao mesmo Wi-Fi e defina o proxy manualmente:

  • Host: o IP do seu host (ex.: 192.168.1.8)
  • Porta: 8085

No Android: Configurações → Wi-Fi → Modificar → Proxy → Manual No iPhone: Ajustes → Wi-Fi → (rede) → Proxy HTTP → Manual

4. Instale o certificado CA

Transfira o ca.crt para o seu celular e então:

  • Android: Configurações → Segurança → Instalar certificado → Certificado CA
  • iPhone: Abra o arquivo → instalar perfil → Ajustes → Geral → Sobre → Configurações de Confiança de Certificados → ative-o

Opcional: IP de Saída Estável via Upstream Forwarder

CAPTCHAs (Cloudflare Turnstile/desafio bot, reCAPTCHA, hCaptcha) vinculam tokens ao IP que resolveu o desafio. Os Cloudflare Workers saem por diferentes IPs de borda a cada requisição, então a verificação no site alvo falha mesmo quando você resolve o desafio. Este complemento opcional permite que o Worker encaminhe todas as chamadas fetch() através de um pequeno servidor Node que você executa em um VPS com IP estável — fornecendo ao site alvo um endereço de saída consistente.

Quando você precisa disso

  • Sites atrás do desafio bot do Cloudflare continuam te redirecionando para a página de desafio.
  • Formulários de login te rejeitam após resolver um reCAPTCHA/hCaptcha.
  • Você precisa de continuidade de cookies entre requisições (ex.: cf_clearance).

Se você não enfrenta esses problemas, deixe desconfigurado — o Worker se comporta exatamente como antes.

Por que um servidor separado é necessário

Os Cloudflare Workers não expõem um IP de saída estável — fetch() sai por um pool rotativo de IPs de borda da Cloudflare, o que exatamente quebra tokens de CAPTCHA vinculados a IP. As opções de saída estática da Cloudflare (BYOIP, Egress Workers) são de nível Enterprise, então um pequeno VPS com IP estático é a solução prática. O forwarder é apenas um proxy fino que reemite o fetch() a partir de um endereço estável.

1. Implantar o forwarder em um VPS

A implementação de referência é deploy/upstream-forwarder/upstream_forwarder.js. Requer Node 18+ e nenhuma dependência. Execute-o por trás do Caddy ou nginx com TLS — o Worker rejeita URLs de forwarder sem HTTPS.

root@kitploit:~
# No seu VPS (exemplo Ubuntu/Debian):
sudo apt install -y nodejs   # deve ser 18+
export AUTH_KEY="alguma-string-longa-aleatoria-com-pelo-menos-32-caracteres"
export PORT=8787
node deploy/upstream-forwarder/upstream_forwarder.js

Coloque na frente do Caddy para TLS automático:

root@kitploit:~
forwarder.example.com {
    reverse_proxy 127.0.0.1:8787
}

Teste rápido:

root@kitploit:~
curl -X POST https://forwarder.example.com/fwd \
  -H "x-upstream-auth: $AUTH_KEY" \
  -H "content-type: application/json" \
  -d '{"u":"https://httpbin.org/ip","m":"GET","h":{}}'

O corpo da resposta decodificado deve mostrar o IP do VPS.

2. Conectar o Worker ao forwarder

No painel Cloudflare → seu Worker → Settings → Variables and Secrets:

Salve e reimplante o Worker.

3. Verificar

Navegue até https://httpbin.org/ip através do proxy — você deve ver o IP do VPS, não o da Cloudflare. Em seguida, visite novamente um site protegido por CAPTCHA que não estava funcionando — o desafio agora deve ser validado.

O forwarder deve exigir autenticação. Sem AUTH_KEY ele se recusa a iniciar. Qualquer pessoa com a URL e a chave pode usá-lo como relay, portanto mantenha ambos em segredo.

4. Escopo do forwarder para hosts específicos (opcional)

Por padrão, toda requisição tratada pelo Worker passa pelo forwarder, então tráfego não relacionado também consome largura de banda do VPS. Para enviar apenas os sites que precisam de um IP de saída estável através do VPS, liste-os em forwarder_hosts no config.json — mesma sintaxe do bypass_hosts (nome do host exato ou .suffix). Qualquer item não correspondido recai no fetch() direto no Worker.

root@kitploit:~
{
   ...
   "forwarder_hosts": [
       "example.com",
       ".cf-protected-suffix"
   ]
   ...
}

Deixe a lista vazia (ou remova a chave) para manter o comportamento histórico de "encaminhar tudo".


Aviso Legal

MHR-CFW é fornecido apenas para fins educacionais, de teste e pesquisa.

  • Fornecido sem garantia: Este software é fornecido "COMO ESTÁ", sem garantia expressa ou implícita, incluindo comercialização, adequação a um propósito específico e não violação.
  • Limitação de responsabilidade: Os desenvolvedores e contribuidores não são responsáveis por quaisquer danos diretos, indiretos, incidentais, consequenciais ou outros resultantes do uso deste projeto ou da impossibilidade de usá-lo.
  • Responsabilidade do usuário: Executar este projeto fora de ambientes de teste controlados pode afetar redes, contas, proxies, certificados ou sistemas conectados. Você é o único responsável pela instalação, configuração e uso.
  • Conformidade legal: Você é responsável por cumprir todas as leis e regulamentos locais, nacionais e internacionais antes de usar este software.
  • Conformidade com serviços Google: Se você usar Google Apps Script ou outros serviços Google com este projeto, é responsável por cumprir os Termos de Serviço, regras de uso aceitável, cotas e políticas da plataforma do Google. O uso indevido pode levar à suspensão ou encerramento da sua conta Google ou implantações.
  • Termos de licença: O uso, cópia, distribuição e modificação deste software são regidos pela licença do repositório. Qualquer uso fora desses termos é proibido.

Contribuidores

  • Agradecimento especial a onlymaj

Fontes

  • Este projeto é baseado no MasterHttpRelayVPN

Licença

MIT

Baixar ferramenta
NomeTipoValor
UPSTREAM_FORWARDER_URLSecrethttps://forwarder.example.com/fwd
UPSTREAM_AUTH_KEYSecreto mesmo AUTH_KEY que você definiu no VPS
UPSTREAM_FAIL_MODEVariableclosed (padrão) — retorna 502 em caso de falha no forwarder. Use open para cair no fetch direto.
UPSTREAM_TIMEOUT_MSVariable (opcional)padrão 25000