
Mecanismo MITM baseado em regras. Reescreve, redireciona e rejeita requisições e respostas HTTP(S), com suporte a regras em JavaScript.
Mecanismo MITM baseado em regras. Reescreve, redireciona e rejeita requisições e respostas HTTP(S), com suporte a JavaScript.
Devido à exigência da técnica MITM, você precisa gerar e confiar em seu próprio certificado raiz.
Por motivos de segurança, não confie cegamente em qualquer certificado raiz fornecido por estranhos. Você precisa gerar seu próprio certificado raiz e chave privada.
Usuários experientes podem usar o OpenSSL para realizar as operações necessárias. No entanto, para usuários sem experiência nessa área, você pode usar o seguinte comando para gerar o conteúdo necessário. O certificado e a chave privada gerados serão armazenados no diretório ca.
good-mitm.exe genca
Depois de usar o proxy fornecido pelo Good-MITM no seu navegador, você pode baixar o certificado diretamente acessando http://cert.mitm.plus. Isso é particularmente útil ao fornecer serviços para outros dispositivos.
Você pode adicionar o certificado raiz à zona de confiança do seu sistema operacional ou navegador, dependendo das suas necessidades.
Inicie o Good-MITM e especifique o arquivo ou diretório de regras a ser usado.
good-mitm.exe run -r rules
Use o proxy HTTP fornecido pelo Good-MITM no seu navegador ou sistema operacional: http://127.0.0.1:34567.
Consulte https://docs.mitmproxy.org/stable/howto-transparent/ para a documentação.
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo sysctl -w net.ipv4.conf.all.send_redirects=0
sudo useradd --create-home mitm
sudo -u mitm -H bash -c 'good-mitm run -r rules/log.yaml -b 0.0.0.0:34567'
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 80 -j REDIRECT --to-port 34567
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 443 -j REDIRECT --to-port 34567
sudo ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 80 -j REDIRECT --to-port 34567
sudo ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 443 -j REDIRECT --to-port 34567
Rule é usado para manipular o Good-MITM.
Uma regra válida deve incluir os seguintes componentes:
Name:Usado para diferenciar regras diferentes e facilitar a manutenção.Filter:Usado para selecionar o conteúdo a ser processado a partir de um conjunto de requests e responses.Action:Usado para executar as ações desejadas, incluindo redirect, reject, modification, etc.- name: "Block YouTube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Além disso, uma regra válida deve atender aos seguintes requisitos:
Filter é usado para selecionar as requisições e respostas que precisam ser processadas.
Atualmente, Filter inclui os seguintes tipos:
Nota
Na versão atual, os tipos relacionados adomaincorrespondem ao campohost, o que geralmente não afeta os resultados. Se um site estiver usando uma porta não padrão, a regra precisa especificar a porta. Esse comportamento será otimizado em versões futuras.
Ao especificar o filtro como all, ele corresponderá a todas as requisições e respostas. Isso normalmente é usado para executar ações de registro (logging).
- name: "log"
filter: all
action:
- log-req
- log-res
domain realiza uma correspondência completa com o nome de domínio.
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
domain-keyword realiza uma correspondência de palavra-chave contra o nome de domínio.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
domain-prefix realiza uma correspondência de prefixo com o nome de domínio.
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
domain-suffix realiza uma correspondência de sufixo com o nome de domínio.
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
url-regex realiza uma correspondência de expressão regular contra a URL completa.
- name: "youtube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
O campo filters suporta tanto filtros únicos quanto múltiplos filtros, sendo a relação entre múltiplos filtros OR.
- name: "youtube-2"
mitm:
- "*.youtube.com"
- "*.googlevideo.com"
filters:
- url-regex: '^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+(&oad|ctier)'
- url-regex: '^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads'
- url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
- url-regex: '^https?:\/\/\s.youtube.com/api/stats/qoe?.*adformat='
action: reject
Múltiplas regras com a mesma ação podem ser agregadas em uma única regra para facilitar a manutenção.
Action é usado para realizar operações em requisições ou respostas.
Atualmente, Action inclui as seguintes opções: