Search
Write a publication
Pull to refresh
39
29.1
Vadim Smirnov @SerpentFly

Software Engineer

Send message

Утечка хендлов в IP Helper API: как мы нашли и обошли ещё один баг Windows

Level of difficultyMedium
Reading time4 min
Views557

После статьи о баге в CancelIoEx решил рассказать ещё об одном дефекте в системных компонентах Windows — на этот раз в IP Helper (часть Windows API, отвечающая за работу с сетевой статистикой и таблицами соединений).

Этот API, среди прочего, даёт возможность сопоставлять перехваченные на уровне сети пакеты с локальными процессами. Казалось бы, проверенный механизм, который работает «под капотом» множества утилит и сетевых фильтров. Но в ходе тестирования WireSock Secure Connect в режиме split tunneling по процессам мы наткнулись на утечку, способную за считанные минуты выбить лимит хендлов в системе.

Поводом для расследования стало сообщение в нашей группе поддержки WireSock в Telegram: один из пользователей заметил аномально быстрый рост числа открытых дескрипторов процессов. Проблема стабильно воспроизводилась под нагрузкой и исчезала, если использовать фильтрацию по IP-адресам. Это стало первой зацепкой, которая в итоге вывела нас на баг в реализации IP Helper.

Отдельное спасибо пользователю @dno5iq, который обнаружил проблему, выполнил реверсинг GetOwnerModuleFromPidAndInfo и помог подтвердить наличие дефекта в её реализации.

Читать далее

Как Go зависает на Windows в CancelIoEx: история одного бага

Level of difficultyMedium
Reading time10 min
Views1.1K

Я не считаю себя специалистом по Go и лишь изредка обращался к этому языку, но хочу поделиться историей об одном баге на стыке Go и ядра Windows, с которым мне «посчастливилось» столкнуться.

Баг до сих пор остаётся актуальным (issue на GitHub), хотя есть основания надеяться, что он будет исправлен в следующем релизе Go.

Тем не менее, если звёзды сойдутся неудачно и ваша программа на Go внезапно зависнет у клиента в вызове CancelIoEx, а воспроизвести и проанализировать проблему не удастся, то, надеюсь, приведённый ниже материал поможет понять её причины и попробовать обойти проблему.

Читать далее

Когда VPN душат, в бой идёт SOCKS5: что нового в ProxiFyre 2.0

Level of difficultyMedium
Reading time4 min
Views84K

В последние месяцы я всё чаще сталкиваюсь с ситуациями, когда привычные VPN-соединения становятся всё менее надёжными или вовсе блокируются. Для тех, кто, как и я, продолжает получать доступ к домашней инфраструктуре из-за границы, особенно из стран с усиливающимся контролем за трафиком, это уже не просто неудобство, а реальный риск потери стабильной связи.

Моя собственная схема — домашний сервер за WireGuard-эндпоинтом — уже не раз демонстрировала странности: внезапные падения скорости, потеря UDP-пакетов (особенно в мобильных сетях). Всё вроде работает, но как-то не так: туннель подключается, но затем «виснет» или показывает подозрительно низкую пропускную способность. В таких случаях надёжным обходным путём становится туннелирование TCP-трафика через SOCKS5-прокси, например, поверх SSH.

Но и у SOCKS5 есть ограничение — сам по себе он ничего не даст, если не существует механизма для перенаправления трафика от нужных приложений. Многие программы не поддерживают прокси напрямую, а системный прокси на Windows — история сложная и не всегда результативная.

Читать далее

149-ФЗ против junk-пакетов: история одной блокировки

Level of difficultyEasy
Reading time3 min
Views4.1K

18 апреля 2025 года. Обычное утро. Почта спокойна, ничего подозрительного. Среди напоминаний о просроченной подписке и очередном пуше от GitHub оказывается письмо от Хабра:

«Сообщаем вам, что на ваш материал на сайте Habr.com было наложено ограничение доступа для пользователей из определённой страны...»

Читать далее

Поддержка AmneziaWG в Wiresock Secure Connect: маскировка WireGuard-трафика или избыточность?

Level of difficultyMedium
Reading time5 min
Views8.3K

В каком-то смысле эта статья является продолжением цикла материалов о реализации WireGuard-клиента на базе Cloudflare BoringTun и пользовательского пакетного фильтра на Windows. В этой статье мне еще раз хотелось бы поговорить о блокировках WireGuard-протокола и имеющихся возможностях по противодействию этим ограничениям. Одним из таких решений является AmneziaWG — надстройка над WireGuard, созданная в рамках проекта Amnezia VPN. В этом материале мы подробно разберём её особенности, подход к реализации и практическую применимость.

Читать далее

ProxiFyre: Open Source SOCKS5 Проксификатор для Windows

Level of difficultyMedium
Reading time3 min
Views25K

Один из проверенных временем и надёжных методов, не требующий сложной специализированной инфраструктуры, — это туннелирование TCP-соединений с использованием SSH. Этот протокол является критически важным для стабильности работы интернета, и вероятность его массовой блокировки выглядит крайне малой. Вероятно, наибольшими трудностями, с которыми мы можем столкнуться, являются ограничения на скорость соединения. Уникальной особенностью SSH является встроенный SOCKS5 прокси-сервер, который предоставляет функционал аналогичный VPN с возможностью реализации split tunneling на уровне отдельных приложений.

Читать далее

TeamViewer — быть или не быть

Reading time4 min
Views32K

Как мы помним, с 5 мая 2022 года в Беларуси и России перестал работать сервис TeamViewer. В комментариях к данному посту, я упомянул, как довольно несложно решил эту проблему и пообещал написать более развёрнутое руководство. К сожалению, примерно в то же время я начал заниматься вопросами собственной трудовой иммиграции и со временем стало сложновато. Теперь, когда я уже более менее освоился на новом месте, пришло время закрыть этот технический долг.

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

Читать далее

Обход блокировок WireGuard в Египте

Reading time5 min
Views65K

В 2021 году VPN протокол WireGuard стал настолько популярен в Египте, что удостоился чести пополнить список заблокированных, несказанно “обрадовав” не только клиентов Cloudflare Warp+, Mullvad Wireguard и других коммерческих VPN-провайдеров, но и некоторых пользователей корпоративных VPN. Предварительные исследования показали, что по всей видимости DPI нацелен на WireGuard Handshake Initiate пакеты, которые имеют фиксированный размер (148 байт) и узнаваемую структуру (первые четыре байта UDP пакета [0x01, 0x00, 0x00, 0x00]). Мы постараемся разобраться с особенностями работы DPI по блокировке WireGuard и попробуем ее обойти. Кого заинтересовал - добро пожаловать под кат.

Читать далее

WireGuard клиент для Windows на основе BoringTun

Reading time10 min
Views37K

В начале 2019 года компания Cloudflare представила BoringTun, реализацию WireGuard протокола, написанную на языке Rust. Код проекта распространяется под лицензией BSD-3-Clause и включает в себя библиотеку, которая может использоваться для интеграции функциональности клиента WireGuard в произвольные приложения для любых платформ, включая iOS и Android. Библиотека реализует только протокол WireGuard без сопутствующих механизмов туннелирования, которые предполагается реализовывать в зависимости от целевой платформы.

В этой статье мы рассмотрим реализацию альтернативного VPN клиента WireGuard под Windows на основе BoringTun и оценим ее эффективность в сравнении с существующими решениями. Кого заинтересовало, прошу под кат.

Читать далее

Двойной VPN, или как построить цепочку из WireGuard VPN серверов на Windows

Reading time5 min
Views39K

В этой статье мы рассмотрим процесс настройки цепочки VPN серверов с помощью WireGuard на Windows. В Интернете есть множество руководств, посвященных построению и настройке цепочек VPN серверов, однако большинство из них основаны на Linux и требуют определенных навыков администрирования данной ОС. В предыдущей статье мы уже узнали, как настроить WireGuard VPN Server в Windows, здесь же мы используем ту же технологию для создания цепочки WireGuard VPN из двух хостов Windows с помощью WireGuard и WireSock.

Если заинтересовал, то добро пожаловать под кат.

Читать далее

WireGuard Server на Windows

Reading time6 min
Views66K

Подозреваю, что я не один такой, кто держит дома в режиме 24/7 маленький и тихий системный блок с Windows в качестве сервера, на который можно зайти по RDP (с того же смартфона) и несколько переживает в связи с количеством «неслучайных» попыток к нему подключиться. Кому интересно рассмотреть еще один вариант решения с использованием WireGuard на Windows, прошу по кат...

Читать далее

Information

Rating
176-th
Location
Белград, Белград, Сербия
Date of birth
Registered
Activity