Перейти к содержимому

Захват на уровне системы

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

Эта статья посвящена macOS. В Windows системные программы, которые проходят через системный сетевой стек (.NET / PowerShell и т. п.), обладают аналогичной возможностью; см. Захват на прикладном уровне на этой машине.


1. Он видит то, до чего «другие инструменты не дотягиваются»

Заголовок раздела «1. Он видит то, до чего «другие инструменты не дотягиваются»»

Хотите узнать, о чём встроенные приложения macOS, системные службы или те самые упрямые, глубоко скрытые программы переговариваются со своими серверами? Обычно вы упираетесь в стену на каждом шагу: захват через прокси отсекается (они отказываются от сертификата и просто выдают ошибку), чтение открытого текста изнутри программы блокируется системной защитой, а то, что вы перехватываете на сетевой карте, — это просто зашифрованный текст. Захват на уровне системы — один из немногих способов прочитать открытый текст их обмена.

Локальные методы захвата каждый идёт дальше предыдущего, и этот стоит в самом конце:

Цель Сетевая карта / по процессам Захват на прикладном уровне Захват на уровне системы на этой машине
Обычные программы ✅ (избыточно)
Закрепление сертификата / собственное шифрование 🔒 зашифрованный текст ✅ открытый текст ✅ открытый текст
Упрямые / сильно скрытые приложения 🔒 / ❌ ❌ отвергают вмешательство открытый текст
Встроенные приложения / системные службы 🔒 / ❌ ❌ отвергают вмешательство открытый текст

Когда ни один из предыдущих методов не справляется с целью, передайте её этому.


2. Что позволяет ему добраться до системных приложений

Заголовок раздела «2. Что позволяет ему добраться до системных приложений»
  • Не запускается внутри программы: встроенные приложения и упрямые программы блокируют любое вмешательство, которое запускается внутри программы, поэтому захват на прикладном уровне на них не работает. Захват на уровне системы заходит с другой стороны: без внедрения, без изменений в программе, без сертификатов. Он читает данные вне полосы на нижних уровнях системы, так что эта защита не может ему помешать.
  • Не касается сертификатов: он не выступает посредником и не касается сертификатов, поэтому закрепление сертификата попросту неприменимо. Насколько бы строгими ни были проверки сертификатов у этих приложений, повлиять на него они не могут.
  • Дотягивается до уровня, недоступного другим: встроенные приложения macOS, App Store и различные системные службы проходят через низкоуровневые сетевые каналы системы, которые как раз и оказываются общей слепой зоной всех предыдущих методов захвата. Захват на уровне системы покрывает именно этот уровень, выводя весь их открытый текст на полное обозрение.

  • Встроенные приложения и системные службы: сетевой обмен собственных программ macOS, таких как App Store, системные компоненты и фоновые службы.
  • Упрямые, глубоко скрытые приложения: сторонние программы, которые глубоко прячут свой трафик и отвергают любое вмешательство извне.
  • Обычные программы: с ними он, разумеется, тоже справляется, но это избыточно; для обычных программ предыдущие методы проще.

  1. Выберите цель: выберите запущенную программу из выпадающего списка или укажите путь / имя программы.
  2. При желании захватите «момент запуска»: позвольте инструменту сначала закрыть программу, а затем перезапустить её, чтобы захватить и трафик самого раннего запуска (в этот момент происходит много аутентификаций / рукопожатий).
  3. Запустите захват и смотрите открытый текст, который программа отправляет и получает.

Новый сеанс · Захват на уровне системы на этой машине: выберите запущенную программу (или укажите путь / имя) и наблюдайте за её обменом открытым текстом вне полосы с нижних уровней системы; можно отметить «перезапустить цель», чтобы охватить ранний запуск

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


Открытый текст, прочитанный с нижних уровней, проходит ту же обработку, что и в любом другом методе захвата:

  • Несколько режимов просмотра: структурированный, форматирование текста, шестнадцатеричный и автоопределение, переключаемые независимо для стороны отправки и получения. См. Просмотр и декодирование данных.
  • Автоматическая распаковка и определение: автоматически распаковывает gzip / brotli / deflate / zstd (в том числе несколько сложенных слоёв) и автоматически определяет и форматирует JSON, XML, protobuf / gRPC и многое другое.

6. Как выбрать среди четырёх локальных методов захвата

Заголовок раздела «6. Как выбрать среди четырёх локальных методов захвата»
Ваша ситуация Что использовать
Встроенные приложения macOS, упрямые программы (недостижимые другими методами) Захват на уровне системы на этой машине (эта статья)
Программа уже запущена / закрепление сертификата / не принимает прокси / собственное шифрование Захват на прикладном уровне на этой машине
Обычные программы, которые можно запустить командой (браузеры / скрипты / CLI) Захват по процессам на этой машине
Нужно увидеть весь трафик на машине или трафик не по HTTP Захват на сетевой карте на этой машине

Связанные материалы: Захват через прокси · Захват на прикладном уровне на этой машине · Просмотр и декодирование данных