
Proxy MITM HTTP/HTTPS e gravador.
Hyperfox é 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, corrija-a e envie um pull request.
Copyright (c) 2012-hoje José Nieto, https://xiam.io
É concedida permissão, gratuitamente, a qualquer pessoa que obtiver uma cópia deste software e dos arquivos de documentação associados (o "Software"), para lidar com o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e permitir que as pessoas a quem o Software for fornecido o façam, sujeitas às seguintes condições:
O aviso de copyright acima e este aviso de permissão devem ser incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUMA HIPÓTESE OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.