
Proxy MITM HTTP/HTTPS e gravador.
[Hyperfox][1] é uma ferramenta de auditoria de segurança que proxy e registra tráfego HTTP e HTTPS entre dois pontos.
Você pode instalar a versão mais recente do hyperfox em /usr/local/bin com o seguinte comando (requer privilégios de administrador):
curl -sL 'https://raw.githubusercontent.com/malfunkt/hyperfox/master/install.sh' | sh
Se preferir não aceitar doces grátis desta van, você também pode baixar uma versão da nossa página de releases e instalá-la manualmente.
hyperfox a partir do código fontePara compilar hyperfox a partir do código fonte, você precisará de Go e um compilador C:
Use go install para compilar e instalar hyperfox:
go install github.com/malfunkt/hyperfox
Hyperfox cria um servidor proxy HTTP transparente e o vincula à porta 1080/TCP no localhost (-addr 127.0.0.1 -http 1080). O servidor proxy lê requisições HTTP em texto simples e as redireciona para o destino alvo (o cabeçalho Host é usado para identificar o destino), quando o destino alvo responde, o Hyperfox intercepta a resposta e a encaminha para o cliente original.
Todas as comunicações HTTP entre origem e destino são interceptadas pelo Hyperfox e registradas em um banco de dados SQLite que é criado automaticamente. Cada vez que o Hyperfox inicia, um novo banco de dados é criado (ex.: hyperfox-00123.db). Você pode alterar esse comportamento fornecendo explicitamente um nome de banco de dados (ex.: -db traffic-log.db).
Inicie o Hyperfox com a configuração padrão:
hyperfox
use cURL para solicitar qualquer página HTTP, o parâmetro -x informa ao cURL para usar o hyperfox como proxy:
curl -x http://127.0.0.1:1080 example.com
você deve conseguir ver um log da página que você solicitou na saída do Hyperfox:
...
127.0.0.1:44254 - - [11/Abr/2020:19:19:48 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
-ui)
Use o parâmetro -ui para ativar a interface do Hyperfox, que será aberta em uma nova janela do navegador:
hyperfox -db records.db -ui
O comando acima cria um servidor web que vincula a 127.0.0.1:1984. Se você quiser alterar o endereço ou porta de vinculação, use a opção -ui-addr:
hyperfox -db records.db -ui -ui-addr 127.0.0.1:3000
Alterar o endereço do servidor da interface é especialmente útil quando o Hyperfox está sendo executado em um host remoto ou sem cabeça e você deseja ver a interface de outro host.
Ativar a interface também ativa uma API REST mínima (em 127.0.0.1:4891) que é consumida pela aplicação front-end.
Observe que a API REST do Hyperfox é protegida apenas por uma chave gerada aleatoriamente que muda toda vez que o Hyperfox inicia, dependendo do seu caso de uso, isso pode não ser adequado.
Quando o parâmetro -ui-addr for diferente de 127.0.0.1, o Hyperfox exibirá um código QR para facilitar a conexão de dispositivos móveis:
hyperfox -db records.db -ui -ui-addr 192.168.1.23:1984
-ca-cert e -ca-key)As conexões SSL/TLS são seguras de ponta a ponta e protegidas contra espionagem. O Hyperfox não conseguirá ver nada que aconteça entre um cliente e um destino seguro. Isso é válido apenas enquanto a cadeia de confiança permanecer intacta.
Suponha que o cliente confie em um certificado de CA raiz que seja conhecido pelo Hyperfox; se isso acontecer, o Hyperfox poderá emitir certificados que serão confiáveis para o cliente.
Exemplos desses arquivos de CA raiz falsos podem ser encontrados aqui:
você também pode gerar seu próprio certificado e chave de CA raiz.
Existem várias maneiras de instalar certificados de CA raiz, dependendo do seu sistema operacional.
Este código QR pode ser útil ao instalar a CA raiz do Hyperfox em um dispositivo móvel:
Hyperfox root CA certificate
Use as flags -ca-cert e -ca-key para fornecer ao Hyperfox o certificado e a chave da CA raiz que você deseja usar:
hyperfox -ca-cert rootCA.crt -ca-key rootCA.key
o comando acima cria um servidor especial e o vincula a 127.0.0.1:10443, este servidor aguarda a chegada de uma conexão SSL/TLS. Quando uma nova conexão SSL/TLS chega, o Hyperfox usa a extensão SNI para identificar o servidor de nomes de destino e criar um certificado SSL/TLS para ele, este certificado é assinado com a chave da CA raiz fornecida.
Inicie o Hyperfox com os parâmetros TLS apropriados e -http 443 (a porta 443 requer privilégios de administrador).
sudo hyperfox -ca-cert ./ca/rootCA.crt -ca-key ./ca/rootCA.key -https 443
Use cURL para fazer uma requisição HTTPS para example.com: a opção -resolve informa ao cURL para pular a verificação DNS e usar 127.0.0.1 como se fosse o endereço legítimo de example.com, enquanto o parâmetro -k informa ao cURL para aceitar qualquer certificado TLS.
curl -k -resolve example.com:443:127.0.0.1 https://example.com
você deve conseguir ver um log da página que você solicitou na saída do Hyperfox:
127.0.0.1:36398 - - [11/Abr/2020:19:36:56 -0500] "GET https://example.com/ HTTP/2.0" 200 -1
/etc/hosts no localhostAdicione o host que você deseja inspecionar ao seu arquivo /etc/hosts:
example.com 127.0.0.1
Execute o Hyperfox com as opções que desejar, apenas lembre-se de usar as portas 80 para HTTP e 443 para HTTPS, o que requer privilégios de administrador. Além de -http e -https, use o parâmetro -dns com um resolvedor DNS válido:
sudo hyperfox -ui -http 80 -dns 8.8.8.8
isso fará com que o Hyperfox ignore o resolvedor DNS do SO e use um alternativo (lembre-se de que example.com aponta para 127.0.1).
Agora use cURL e tente acessar o destino:
curl http://example.com
O Hyperfox capturará a requisição e a exibirá em sua saída:
127.0.0.1:41766 - - [11/Abr/2020:19:43:30 -0500] "GET http://example.com/ HTTP/1.1" 200 -1
Veja ataque MITM com Hyperfox e arpfox.
Escolha uma [issue][2], corrija-a e envie um pull request.