Как Flutter поймал MITM

от автора

Итак, погрузимся в прошлое, помянем конец октября 2023 года.

При обновлении Flutter до версии 3.13.8 после запуска flutter doctor я получил неожиданное предупреждение:

[!] Network resources    ✗ A cryptographic error occurred while checking "https://github.com/":      Connection terminated during handshake      You may be experiencing a man-in-the-middle attack, your network may      be compromised, or you may have malware installed on your computer.! Doctor found issues in 1 category.
Скриншот ошибки

Скриншот ошибки

Примерный перевод: Произошла криптографическая ошибка при проверке «https://github.com/»: Соединение прервано во время рукопожатия (handshake). Возможно, вы стали жертвой атаки «человек посередине» (man-in-the-middle), ваша сеть скомпрометирована, либо на вашем компьютере установлено вредоносное ПО.

Для меня это было неожиданностью, т к обычно не пользуюсь взломанным ПО, и я начал искать уязвимость на своём компьютере — сначала с помощью Windows Defender, затем антивирусом Bitdefender и другими антивирусами (перебрал штук 5 популярных). Но антивирусы не обнаружили ни одной угрозы, а только отправили в карантин нормальные файлы. Ок.

После этого я установил бесплатный фаервол и начал сканировать исходящие HTTP-запросы со своего компьютера. Причиной оказалась некая программа Infatica P2B Network по пути: C:\Program Files (x86)\Infatica P2B\infatica-service-app.exe Она устанавливается на компьютер скрытно; Тут было над чем подумать. Дело в том, что я очень хорошо помню что устанавливал и ее я точно не устанавливал, причем там даже не было галочек а ля «Яндекс чай в комплекте», далее сортировка по времени выдала, что в моём случае она появилась после установки K-Lite Mega Codec Pack. Интересно, вроде бы этим набором кодеков пользуюсь долго, никогда подобного не замечал, с этими мыслями я пошел в интернет…

Ее величество

Ее величество

Исследование: что произошло на самом деле

Коротко о причинно-следственной цепочке:

Утилита flutter doctor проверяет доступность ключевых хостов (github.com, pub.dev, storage.googleapis.com, maven.google.com) обычным HTTPS-запросом и анализирует TLS-рукопожатие. Если рукопожатие прерывается или сертификат «не тот», Flutter не может отличить злонамеренный перехват от любого другого вмешательства в трафик — поэтому он выдаёт максимально пессимистичное сообщение про man-in-the-middle. Это известное и нередкое поведение: в трекере flutter/flutter и у других инструментов та же ошибка возникала, например, из-за локально установленных сертификатов mkcert или прокси.

Infatica встраивает SDK в мобильные приложения и браузерные расширения, заимствуя простаивающий трафик у реальных пользователей, а затем предоставляет эти IP-адреса проверенным компаниям для задач веб-разведки — сравнения цен, проверки рекламы, исследования рынка. То есть ваш компьютер становится узлом-посредником чужого трафика (GitHub Infatica SDK). Infatica P2B не устанавливается с K-Lite автоматически, но инсталлятор включает её как «рекомендованный пакет» в процессе установки. На практике пользователи жалуются, что даже при попытке отказаться от дополнительного ПО Infatica всё равно установилась, и они заметили это лишь через пару дней. (Seletronic Eleven Forum). Infatica формально легальна, поэтому большинство движков не считают её вирусом. Talos рекомендует относить proxyware к категории потенциально нежелательных приложений (PUA) из-за рисков, особенно в корпоративной среде — и часть антивирусов (Malwarebytes) детектирует её именно как PUP/PUA, а не как угрозу (SecurityWeek).

Теперь более разжевано:

Что такое Infatica P2B и почему она вообще оказалась в системе

Infatica P2B — это не вирус в классическом понимании. Это клиент так называемой residential-прокси-сети (peer-to-business, P2B). Принцип работы такой:

  • компания встраивает свой SDK в бесплатные приложения, медиаплееры и браузерные расширения;

  • когда вы устанавливаете такое приложение, вместе с ним в систему попадает прокси-клиент;

  • ваш компьютер становится узлом-посредником: через ваш домашний IP-адрес и ваш интернет-канал прогоняется чужой трафик;

  • бизнес-клиенты Infatica платят за доступ к пулу «настоящих» жилых IP-адресов и используют их для парсинга, сравнения цен, проверки рекламы, обхода гео-ограничений и антибот-систем.

Residential-прокси ценятся именно потому, что трафик идёт через реальные домашние IP обычных пользователей и выглядит «нормальным» — его сложно отличить от поведения живого человека. Расплачивается за это владелец компьютера: своим каналом, своей репутацией IP-адреса и своим доверием.

Ключевой вопрос: как такая программа попадает в систему «по умолчанию»? Ответ — через бандлинг. Установщик K-Lite Mega Codec Pack предлагает Infatica P2B как «рекомендованный пакет» на одном из шагов мастера установки. Формально это «опциональное предложение» с галочкой, но на практике галочка стоит заранее, шаг легко проскочить нажатием «Далее», а часть пользователей сообщает, что Infatica устанавливалась даже после попытки отказаться от дополнительного ПО — и обнаруживали они её лишь спустя дни.

Так заявленная цель «установить кодеки для проигрывания видео» незаметно превращается в «сдать свой компьютер в аренду под чужой трафик».

Почему flutter doctor закричал именно про man-in-the-middle

Здесь стоит остановиться подробнее, потому что само сообщение Flutter вводит в заблуждение сильнее, чем нужно.

flutter doctor среди прочего проверяет доступность ключевых хостов, от которых зависит сборка: github.com, pub.dev, storage.googleapis.com, maven.google.com, cocoapods.org. Для каждого выполняется обычный HTTPS-запрос, и инструмент анализирует ход TLS-рукопожатия.

Если рукопожатие прерывается, не завершается или сертификат отличается от ожидаемого — Flutter не может определить причину. С точки зрения утилиты вмешательство в TLS-соединение выглядит одинаково, кем бы оно ни было вызвано:

  • настоящей атакой «человек посередине»;

  • корпоративным SSL-инспектирующим прокси;

  • локально установленным доверенным сертификатом (например, от mkcert);

  • антивирусом, который вскрывает HTTPS-трафик для проверки;

  • посторонним сетевым ПО, которое перехватывает или маршрутизирует соединения.

Поскольку отличить дружественный перехват от вредоносного программа не способна, она выдаёт максимально пессимистичную формулировку — про MITM, скомпрометированную сеть и вредоносное ПО. Это известное поведение: похожие сообщения регулярно встречаются в баг-трекере проекта Flutter и у пользователей других инструментов, и далеко не всегда они означают реальную атаку.

В нашем случае в цепочку сетевых соединений вклинился прокси-клиент Infatica. Любое стороннее ПО, которое сидит между приложением и сетью и трогает TLS-трафик, способно «сломать» рукопожатие к конкретным доменам — и flutter doctor честно, но грубо, сообщает об этом как о возможной MITM-атаке. Технически он прав: ваш трафик действительно идёт не туда, куда вы думаете. Просто виновник — не хакер, а «легальная» прокси-сеть, которую вы установили сами, не зная об этом.

Почему антивирусы ничего не нашли

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

В лучшем случае такие программы попадают в категорию PUA / PUP — потенциально нежелательных приложений. Часть продуктов (например, Malwarebytes) детектирует Infatica именно так. Но классический антивирус, настроенный на поиск «вирусов», спокойно проходит мимо.

Отсюда практический вывод: «антивирус ничего не нашёл» не равно «система чистая». Целый класс ПО — proxyware, рекламные SDK, трекеры, бандл-приложения — живёт ровно в этой серой зоне между «вредоносным» и «легальным».

Это не единичный случай: индустрия proxyware

Самое важное в этой истории — что она не уникальна. То, с чем я столкнулся, — частный пример большого и хорошо задокументированного явления.

Ещё в 2021 году подразделение Cisco Talos выпустило исследование о целой категории ПО под названием proxyware — приложениях, которые превращают устройство пользователя в прокси-сервер. Основные выводы того и последующих отчётов:

  • Троянизированные установщики — один из самых распространённых векторов. Легальный продукт упаковывается в инсталлятор вместе с прокси-клиентом, а иногда и с откровенно вредоносным ПО. В одном из разобранных Talos случаев proxyware шёл единым набором с криптомайнером и инфостилером.

  • Злоумышленникам это выгодно. Прокси-сети из домашних IP позволяют скрывать происхождение атак эффективнее, чем Tor: список выходных узлов нельзя каталогизировать, потому что это обычные домашние компьютеры.

  • Масштаб огромен. Исследование Bitsight (2025) показало, что около 15% всех уникальных выходных IP-адресов residential-прокси-сетей одновременно были помечены как активно заражённые вредоносным ПО. Пользователи массово попадают в такие сети, просто принимая условия бесплатных приложений, VPN-сервисов и медиаплееров со встроенными прокси-SDK.

Конкретно по связке «K-Lite Codec Pack + Infatica» обсуждений тоже хватает: ветки на форумах по Windows 11, предупреждения на профильных площадках, и даже отдельный issue в одном из open-source проектов на GitHub с просьбой убрать K-Lite из рекомендаций именно из-за Infatica.

Иными словами, история «обновил инструмент разработчика — обнаружил скрытую прокси-сеть» — это не редкое стечение обстоятельств, а закономерный результат целой индустрии монетизации чужого интернет-канала.

Чем это реально опасно

Даже если оставить за скобками вопрос «вирус или не вирус», скрытый прокси-клиент создаёт вполне конкретные проблемы:

  1. Чужой трафик от вашего имени. Через ваш IP может идти парсинг, накрутка, обход антибот-систем, а иногда и откровенно противоправная активность. Отвечать формально будет ваш адрес.

  2. Репутация IP. Ваш домашний IP может попасть в чёрные списки. Результат — капчи на каждом шагу, блокировки сайтов, проблемы с онлайн-сервисами и банками.

  3. Расход канала и трафика. На лимитных тарифах это прямые деньги; на безлимитных — просадка скорости и фоновая нагрузка.

  4. Расширение поверхности атаки. Любое ПО, обрабатывающее сторонние сетевые пакеты, — потенциальная точка входа. А обновляющийся в фоне клиент опасен ещё и тем, что его серверы обновлений могут быть скомпрометированы, и тогда безобидная программа в один прекрасный день станет вредоносной.

  5. Корпоративные риски. Если такая штука заведётся на рабочей машине или машине удалённого сотрудника, чужой трафик пойдёт изнутри периметра компании — со всеми вытекающими последствиями для безопасности и репутации.

Как обнаружить и удалить

Что в итоге помогло и что можно посоветовать.

Диагностика:

  • Проверьте список установленных программ на наличие Infatica P2B Network и подобных записей.

  • Поищите процесс infatica-service-app.exe (в моём случае — C:\Program Files (x86)\Infatica P2B\).

  • Загляните в планировщик заданий и в список служб Windows — proxyware любит прописываться в автозапуск.

  • Если антивирус молчит — смотрите на сеть. Бесплатный фаервол с отслеживанием исходящих соединений показывает реальную картину куда лучше, чем сигнатурный сканер.

Удаление:

В моём случае проблему решило удаление Infatica P2B Network. Подойдёт любой из вариантов:

  • стандартное удаление программ через «Параметры» / «Панель управления» Windows;

  • специализированные деинсталляторы вроде Revo Uninstaller Pro или Reg Organizer — они дополнительно подчищают остаточные файлы и записи в реестре.

После удаления стороннего прокси-клиента flutter doctor перестал выдавать предупреждение про MITM, и сборка снова заработала корректно.

Ну вот и сказке конец)

ссылка на оригинал статьи https://habr.com/ru/articles/1037142/