
Moteur MITM basé sur des règles. Réécriture, redirection et rejet des requêtes et réponses HTTP(S), prend en charge les règles JavaScript.
Moteur MITM basé sur des règles. Réécriture, redirection et rejet des requêtes et réponses HTTP(S), prise en charge de JavaScript.
En raison de l'exigence de la technique MITM, vous devez générer et faire confiance à votre propre certificat racine.
Pour des raisons de sécurité, veuillez ne pas faire aveuglément confiance à tout certificat racine fourni par des inconnus. Vous devez générer votre propre certificat racine et votre propre clé privée.
Les utilisateurs expérimentés peuvent utiliser OpenSSL pour effectuer les opérations nécessaires. Cependant, pour les utilisateurs sans expérience dans ce domaine, vous pouvez utiliser la commande suivante pour générer le contenu requis. Le certificat et la clé privée générés seront stockés dans le répertoire ca.
good-mitm.exe genca
Après avoir utilisé le proxy fourni par Good-MITM dans votre navigateur, vous pouvez télécharger directement le certificat en visitant http://cert.mitm.plus. Cela est particulièrement utile lorsque vous fournissez des services à d'autres appareils.
Vous pouvez ajouter le certificat racine à la zone de confiance de votre système d'exploitation ou de votre navigateur, selon vos besoins.
Démarrez Good-MITM et spécifiez le fichier de règles ou le répertoire à utiliser.
good-mitm.exe run -r rules
Utilisez le proxy HTTP fourni par Good-MITM dans votre navigateur ou votre système d'exploitation : http://127.0.0.1:34567.
Consultez https://docs.mitmproxy.org/stable/howto-transparent/ pour la documentation.
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 est utilisé pour manipuler Good-MITM.
Une règle valide doit inclure les composants suivants :
Name : utilisé pour différencier les différentes règles afin de faciliter la maintenance.Filter : utilisé pour sélectionner le contenu à traiter parmi un ensemble de requests et responses.Action : utilisé pour effectuer les actions souhaitées, notamment redirect, reject, modification, etc.- name: "Block YouTube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
De plus, une règle valide doit répondre aux exigences suivantes :
Filter est utilisé pour sélectionner les requêtes et réponses qui doivent être traitées.
Actuellement, Filter inclut les types suivants :
Remarque
Dans la version actuelle, les types liés àdomaincorrespondent au champhost, ce qui n'affecte généralement pas les résultats. Si un site web utilise un port non standard, la règle doit spécifier le port. Ce comportement sera optimisé dans les versions futures.
Lorsque le filtre est spécifié comme all, il correspondra à toutes les requêtes et réponses. Ceci est généralement utilisé pour effectuer des actions de journalisation.
- name: "log"
filter: all
action:
- log-req
- log-res
domain effectue une correspondance complète avec le nom de domaine.
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
domain-keyword effectue une correspondance de mots-clés sur le nom de domaine.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
domain-prefix effectue une correspondance de préfixe sur le nom de domaine.
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
domain-suffix effectue une correspondance de suffixe sur le nom de domaine.
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
url-regex effectue une correspondance par expression régulière sur l'URL entière.
- name: "youtube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Le champ filters prend en charge les filtres uniques et les filtres multiples, la relation entre plusieurs filtres étant OR.