Рубрики
Без рубрики

Используйте Mitmproxy в качестве личного брандмауэра

Mitmproxy – очень универсальный и мощный инструмент, направленный на то, чтобы действовать в точности, как то, что подразумевает его название: … Теги с Python, учебником, безопасностью.

Mitmproxy Является ли очень универсальным и мощным инструментом, направленным на то, что имеется в том, что подразумевает его название: действовать как Человек в середине Расшифровав соединения TLS между браузером и целевым веб-сайтом.

Определив свой собственный Орган сертификата И потому, что вы явно рассказывают вашему браузеру доверять этому совершенно новым власть , вы можете позволить Mitmproxy Чтобы услышать трафик между вашим браузером и удаленным веб-сайтом, даже когда это соединение выполнено через TLS. Кроме того, используя его мощный Аддон Система, вы даже можете вместить поток данных и например, автоматически сохранять ресурсы, отрицать некоторые, чтобы загрузить, изменять заголовки, удалять файлы cooks и т. Д. Эти скрипты просты Python Сценарии, которые используют выделенные Mitmproxy Python API.

Это дало мне идею разработать простое метод для реализации крошечного персонального брандмауэра, чтобы избавиться от всех этих ресурсов Pesky Ads, таких как эти цифровые маркетинговые услуги. Используя один из 3 Mitmproxy Команды, вы можете получить представление о том, сколько из этих ресурсов загружаются при отправке на любой веб-сайт, как вы можете использовать меню разработчиков Chrome.

Остерегайтесь, когда начинается, Mitmproxy Можно увидеть и перехватить все трафик HTTPS между вашим браузером и удаленным сайтом. Поэтому вы должны принять все необходимые действия безопасности, чтобы предотвратить кого-либо, кроме вас, чтобы использовать вашу конфигурацию.

Так что давайте разработаем немного.

Первые шаги

  • Сначала скачайте Mitmproxy исполняемые файлы для вашей платформы. Я лично использую Linux, поэтому я только что загрузил архив и извлекил 3 исполняемых файла в выделенный каталог. Для разницы между тем, иди к https://docs.mitmproxy.org/stable/

  • Далее начните свой прокси без параметров на данный момент:

./mitmdump. которые по умолчанию слушают 8080 Порт TCP

  • Начните свой браузер Chrome и сообщите ему использовать Mitmproxy. : Гугл Хром

  • Гель до http://mitm.it и следуйте инструкциям. Для Linux я просто нажал Другое и сертификат CA, сгенерированный MITMPROXY, когда он сначала загружен: mitmproxy-ca-cert.pem

  • Теперь введите Chrome://Настройки/Сертификаты нажмите на Органы власти , Импорт и выберите файл CA, который вы загрузите. Сертификат CA теперь установлен.

  • Перезагрузите Chrome с той же аргументами командной строки и Voilà!

Примечание. Я не пытался установить файл CA для других браузеров, но кажется немного сложнее.

Подделка данных

Аддоны являются простыми сценариями Python, которые просто получают или даже измените трафик HTTPS. Список Addon образцов расположен здесь: https://docs.mitmproxy.org/stable/addons-examples/

Этот пример аддона используется для блокировки ресурсов в зависимости от списка Regex URL. Это может быть улучшено наверняка:

""" 
Block URLs matching a regex, by just returning an HTTP 404 code. As addons can be called with an argument,
the file containing the URLs is hardcoded, but could be extracted from an environment variable for example.

Unfortunately in Python, contrary to Rust, you can't define a regex set and try to match any regex for a string.

"""
import re
from mitmproxy import http
from mitmproxy import ctx

class BlockResource:
    def __init__(self):
        # define a new list for holding all compiled regexes. Compilation is done once when the addon
        # is loaded
        self.urls = []

        # read the configuration file having all string regexes
        for re_url in open('urls.txt'):
            self.urls.append(re.compile(re_url.strip()))

        # log how many URLS we have read
        ctx.log.info(f"{len(self.urls)} urls read")

    def response(self, flow):
        # test if the request URL is matching any of the regexes
        if any(re.search(url, flow.request.url) for url in self.urls):
            ctx.log.info(f"found match for {flow.request.url}")
            flow.response = http.HTTPResponse.make(404)

addons = [
    BlockResource()
]

И образец для URLS.TXT :

scorecardresearch\.com
geo\.yahoo\.com
adversting\.
ads\.
\.taboola\.
\.doubleclick\.
\.xiti\.
criteo
\.pubmatic\.
\.chartbeat\.net
\.twimg\.com
\.keywee\.co
\.\w+adserver\.com
outbrain
\.bouncex\.

Теперь просто начните Mitmproxy с -s Параметр: ./mitmdump -s -s ./block-urls.py.

Наверняка, для многих URL Regexes, это может быть подаптимальным, потому что Python должен попытаться сопоставить все регулярные вещества до того, что соответствует.

Бедес к Mitmproxy Команда для этого удивительного куска кода!

Надеюсь это поможет!

Фото Blaz Erzetic на Unsplash

Оригинал: “https://dev.to/dandyvica/use-mitmproxy-as-a-personal-firewall-4m6h”