
Основанный на правилах движок MITM. Перезапись, перенаправление и отклонение HTTP(S)-запросов и ответов, поддержка правил JavaScript.
MITM-движок на основе правил. Перезапись, перенаправление и отклонение HTTP(S)-запросов и ответов, поддержка JavaScript.
Из-за требований техники MITM вам необходимо сгенерировать и сделать доверенным собственный корневой сертификат.
В целях безопасности не следует слепо доверять любому корневому сертификату, предоставленному незнакомцами. Вам необходимо сгенерировать собственный корневой сертификат и закрытый ключ.
Опытные пользователи могут использовать OpenSSL для выполнения необходимых операций. Однако пользователи без опыта в этой области могут воспользоваться следующей командой для генерации требуемого содержимого. Сгенерированный сертификат и закрытый ключ будут сохранены в каталоге ca.
good-mitm.exe genca
После использования прокси, предоставляемого Good-MITM, в вашем браузере вы можете напрямую скачать сертификат, перейдя по адресу http://cert.mitm.plus. Это особенно полезно при предоставлении услуг другим устройствам.
Вы можете добавить корневой сертификат в зону доверия вашей операционной системы или браузера в зависимости от ваших потребностей.
Запустите Good-MITM и укажите файл или каталог правил для использования.
good-mitm.exe run -r rules
Используйте HTTP-прокси, предоставляемый Good-MITM, в вашем браузере или операционной системе: http://127.0.0.1:34567.
Документацию см. на https://docs.mitmproxy.org/stable/howto-transparent/.
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 используется для управления Good-MITM.
Корректное правило должно включать следующие компоненты:
Name:Используется для различения разных правил для упрощения поддержки.Filter:Используется для выбора содержимого, подлежащего обработке, из набора requests и responses.Action:Используется для выполнения нужных действий, включая redirect, reject, modification и т. д.- name: "Block YouTube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Кроме того, корректное правило должно соответствовать следующим требованиям:
Filter используется для выбора запросов и ответов, которые необходимо обработать.
В настоящее время Filter включает следующие типы:
Примечание
В текущей версии типы, связанные сdomain, сопоставляются с полемhost, что обычно не влияет на результаты. Если веб-сайт использует нестандартный порт, правило должно указывать порт. Это поведение будет оптимизировано в будущих версиях.
Если указать фильтр как all, он будет соответствовать всем запросам и ответам. Обычно это используется для выполнения действий логирования.
- name: "log"
filter: all
action:
- log-req
- log-res
domain выполняет полное совпадение с именем домена.
- name: "redirect"
filter:
domain: 'none.zu1k.com'
action:
redirect: "https://zu1k.com/"
domain-keyword выполняет сопоставление по ключевому слову с именем домена.
- name: "reject CSDN"
filter:
domain-keyword: 'csdn'
action: reject
domain-prefix выполняет сопоставление по префиксу с именем домена.
- name: "ad prefix"
filter:
domain-prefix: 'ads' // example: "ads.xxxxx.com"
action: reject
domain-suffix выполняет сопоставление по суффиксу доменного имени.
- name: "redirect"
filter:
domain-suffix: 'google.com.cn'
action:
redirect: "https://google.com"
url-regex выполняет сопоставление с регулярным выражением по всему URL.
- name: "youtube tracking"
mitm: "*.youtube.com"
filter:
url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
action: reject
Поле filters поддерживает как одиночные фильтры, так и несколько фильтров, при этом связь между несколькими фильтрами — 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
Несколько правил с одним и тем же действием можно объединить в одно правило для упрощения поддержки.
Action используется для выполнения операций над запросами или ответами.
В настоящее время Action включает следующие параметры: