
Motore MITM basato su regole. Riscrittura, reindirizzamento e rifiuto di richieste e risposte HTTP(S), supporta regole JavaScript.
Motore MITM basato su regole. Riscrittura, reindirizzamento e rifiuto di richieste e risposte HTTP(S), con supporto JavaScript.
A causa della necessità della tecnica MITM, è necessario generare e considerare attendibile un proprio certificato root.
Per motivi di sicurezza, non fidarti ciecamente di alcun certificato root fornito da estranei. Devi generare il tuo certificato root e la tua chiave privata.
Gli utenti esperti possono utilizzare OpenSSL per eseguire le operazioni necessarie. Tuttavia, per gli utenti senza esperienza in questo ambito, è possibile utilizzare il seguente comando per generare il contenuto richiesto. Il certificato e la chiave privata generati verranno salvati nella directory ca.
good-mitm.exe genca
Dopo aver utilizzato il proxy fornito da Good-MITM nel tuo browser, puoi scaricare direttamente il certificato visitando http://cert.mitm.plus. Questo è particolarmente utile quando si forniscono servizi ad altri dispositivi.
Puoi aggiungere il certificato radice alla zona attendibile del tuo sistema operativo o browser, a seconda delle tue esigenze.
Avvia Good-MITM e specifica il file di regole o la directory da utilizzare.
good-mitm.exe run -r rules
Usa il proxy HTTP fornito da Good-MITM nel tuo browser o sistema operativo: http://127.0.0.1:34567.
Consulta https://docs.mitmproxy.org/stable/howto-transparent/ per la documentazione.
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 viene utilizzato per manipolare Good-MITM.
Una regola valida dovrebbe includere i seguenti componenti:
Name:Utilizzato per differenziare le diverse regole per una più facile manutenzione.Filter:Utilizzato per selezionare il contenuto da elaborare da un insieme di requests e responses.Action:Utilizzato per eseguire le azioni desiderate, tra cui redirect, reject, modification, ecc.- name: "Block YouTube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Inoltre, una regola valida dovrebbe soddisfare i seguenti requisiti:
Filter viene utilizzato per selezionare le richieste e le risposte che devono essere elaborate.
Attualmente, Filter include i seguenti tipi:
Nota
Nella versione attuale, i tipi relativi adomaincorrispondono al campohost, il che di solito non influisce sui risultati. Se un sito web utilizza una porta non standard, la regola deve specificare la porta. Questo comportamento sarà ottimizzato nelle versioni future.
Quando si specifica il filtro come all, corrisponderà a tutte le richieste e risposte. Questo viene tipicamente utilizzato per eseguire azioni di logging.
- name: "log"
filter: all
action:
- log-req
- log-res
domain esegue una corrispondenza completa sul nome di dominio.
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
domain-keyword esegue una corrispondenza di parole chiave sul nome di dominio.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
domain-prefix esegue una corrispondenza di prefisso sul nome di dominio.
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
domain-suffix esegue una corrispondenza di suffisso sul nome di dominio.
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
url-regex esegue una corrispondenza con espressione regolare sull'intero URL.
- name: "youtube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Il campo filters supporta sia filtri singoli che filtri multipli, con la relazione tra più filtri che è 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
Più regole con la stessa azione possono essere aggregate in un'unica regola per una più facile manutenzione.