Опубликован инструмент для обхода проверки подписей драйверов в Windows

Опубликован инструмент для обхода проверки подписей драйверов в Windows

Опубликован инструмент для обхода проверки подписей драйверов в Windows

Пользователь GitHub hfiref0x опубликовал инструмент для обхода проверки цифровых подписей драйверов (Driver Signature Enforcement) в 64-битных системах Windows. Инструмент получил имя TDL (Turla Driver Loader).

Как пишет специалист, для работы с TDL потребуются учитывать следующие нюансы:

  • Windows x64 версий 7/8/8.1/10.
  • TDL предназначен только для 64-битных Windows, Vista не поддерживается, поскольку устарела.
  • Для работы требуются права администратора.
  • Загруженные драйверы должны быть специально разработаны для работы в режиме «driverless».
  • Нет поддержки SEH для целевых драйверов.
  • Нет возможности выгрузки драйверов.
  • Разрешен только импорт ntoskrnl.

Эксперт утверждает, что его инструмент использует схожую с эксплоитом режима ядра WinNT/Turla VirtualBox технику для записи кода в память ядра и последующего выполнения этого кода. TDL также использует собственный шелл-код для маппинга специально разработанного драйвера и вызова его точки входа (DriverEntry), обратите внимание, что параметры DriverEntry будут недействительными и не должны использоваться.

В качестве примеров специально разработанных драйверов hfiref0x опубликовал DummyDrv и DummyDrv2.

Доступен полный исходный код TDL, для создания инструмента вам потребуется Microsoft Visual Studio 2015 U1 и более поздние версии. Для сборки драйверов нужно будет установить Microsoft Windows Driver Kit 8.1 или более поздние версии. Сам TDL основан на старом драйвере Oracle VirtualBox, который был создан в 2008 году.

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

Правила обработки запросов при этом добавляются динамически, а фильтрация осуществляется по регулярным выражениям, соответствующим подмножествам знаков, которые могут присутствовать на определенных позициях в URL.

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

В Google подтвердили возможность подобной атаки по стороннему каналу, но заявили, что решить проблему нереально.

RSS: Новости на портале Anti-Malware.ru