
Motor MITM basado en reglas. Reescribe, redirige y rechaza solicitudes y respuestas HTTP(S), admite reglas en JavaScript.
Motor MITM basado en reglas. Reescribe, redirige y rechaza solicitudes y respuestas HTTP(S), con soporte para JavaScript.
Debido al requisito de la técnica MITM, es necesario generar y confiar en su propio certificado raíz.
Por razones de seguridad, no confíe a ciegas en ningún certificado raíz proporcionado por desconocidos. Debe generar su propio certificado raíz y su clave privada.
Los usuarios con experiencia pueden usar OpenSSL para realizar las operaciones necesarias. Sin embargo, para los usuarios sin experiencia en esta área, pueden usar el siguiente comando para generar el contenido requerido. El certificado y la clave privada generados se almacenarán en el directorio ca.
good-mitm.exe genca
Después de usar el proxy proporcionado por Good-MITM en tu navegador, puedes descargar directamente el certificado visitando http://cert.mitm.plus. Esto es especialmente útil cuando se proporcionan servicios a otros dispositivos.
Puedes añadir el certificado raíz a la zona de confianza de tu sistema operativo o navegador, según tus necesidades.
Inicia Good-MITM y especifica el archivo o directorio de reglas que se va a utilizar.
good-mitm.exe run -r rules
Usa el proxy HTTP proporcionado por Good-MITM en tu navegador o sistema operativo: http://127.0.0.1:34567.
Consulta https://docs.mitmproxy.org/stable/howto-transparent/ para la documentación.
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 se utiliza para manipular Good-MITM.
Una regla válida debe incluir los siguientes componentes:
Name: Se utiliza para diferenciar distintas reglas y facilitar su mantenimiento.Filter: Se utiliza para seleccionar el contenido a procesar de un conjunto de requests y responses.Action: Se utiliza para realizar las acciones deseadas, incluyendo redirect, reject, modification, etc.- name: "Block YouTube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Además, una regla válida debe cumplir los siguientes requisitos:
Filter se utiliza para seleccionar las solicitudes y respuestas que deben procesarse.
Actualmente, Filter incluye los siguientes tipos:
Nota
En la versión actual, los tipos relacionados condomaincoinciden con el campohost, lo que normalmente no afecta a los resultados. Si un sitio web utiliza un puerto no estándar, la regla debe especificar el puerto. Este comportamiento se optimizará en futuras versiones.
Cuando se especifica el filtro como all, coincidirá con todas las solicitudes y respuestas. Esto se utiliza normalmente para realizar acciones de registro.
- name: "log"
filter: all
action:
- log-req
- log-res
domain realiza una coincidencia completa contra el nombre de dominio.
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
domain-keyword realiza una coincidencia de palabras clave contra el nombre de dominio.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
domain-prefix realiza una coincidencia de prefijo contra el nombre de dominio.
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
domain-suffix realiza una coincidencia de sufijo contra el nombre de dominio.
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
url-regex realiza una coincidencia de expresión regular contra la URL completa.
- name: "youtube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
El campo filters admite tanto filtros únicos como múltiples, siendo la relación entre múltiples 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
Se pueden agregar varias reglas con la misma acción en una sola regla para facilitar el mantenimiento.