Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PacketWhisper — PacketWhisper: Скрытое извлечение данных и обход атрибуции с использованием DNS-запросов и текстовой стеганографии. Избегайте проблем, связанных с типичными методами DNS-эксфильтрации. Передача данных между системами без прямого соединения устройств друг с другом или с общим конечным пунктом. Не требуется управлять DNS-сервером имен. | Kitploit
Инструменты/GitHubGitHub/trycatchhcf/packetwhisper
Эксфильтрация данныхСтеганографияКриптографияRed TeamingАнализ DNS
GitHubtrycatchhcf/packetwhisper

PacketWhisper

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

PacketWhisper: Скрытое извлечение данных и обход атрибуции с использованием DNS-запросов и текстовой стеганографии. Избегайте проблем, связанных с типичными методами DNS-эксфильтрации. Передача данных между системами без прямого соединения устройств друг с другом или с общим конечным пунктом. Не требуется управлять DNS-сервером имен.

6531226 лет назадПроверено Kitploit
Поделиться

PacketWhisper

PacketWhisper — скрытая передача данных и обход атрибуции с помощью DNS-запросов и текстовой стеганографии, без необходимости в контролируемых злоумышленником серверах имен или доменах; обход DLP/MLS-устройств; обход фильтрации данных и белых списков DNS-серверов. Преобразует любой тип файла (например, исполняемые файлы, Office, Zip, изображения) в список полных доменных имен (FQDN), использует DNS-запросы для передачи данных. Просто, но чрезвычайно эффективно.

(Обновление 27.05.2020: Да, я перенесу все свои проекты Github на Python3 в течение лета 2020 года.)

Автор

Joe Gervais (TryCatchHCF)

Чем это отличается от всех остальных методов эксфильтрации через DNS?

Традиционная эксфильтрация через DNS основана на одном из следующих подходов: DNS-туннелирование; скрытие данных в полях DNS-запроса; или закодированные/зашифрованные полезные нагрузки, разбитые на части и используемые в качестве поддоменов в DNS-запросе. Все эти методы требуют, чтобы злоумышленник контролировал домен и/или связанный с ним DNS-сервер для получения данных, что ведет к атрибуции. Эти подходы также уязвимы для черных списков DNS-серверов (распространено) и белых списков (становится все более распространенным). Еще одна проблема — аналитики DFIR знакомы с этими методами, а системы SIEM часто обнаруживают их и сигнализируют о них.

PacketWhisper преодолевает эти ограничения.

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

Как это работает

Чтобы это осуществить, PacketWhisper объединяет DNS-запросы с текстовой стеганографией. Используя набор инструментов Cloakify, он преобразует полезную нагрузку в список строк FQDN. Затем PacketWhisper использует список FQDN для создания последовательных DNS-запросов, передавая полезную нагрузку через (или внутри) сетевые границы, при этом данные скрыты на виду, и две системы никогда не соединяются напрямую друг с другом или с общим конечным пунктом. Шифры, используемые PacketWhisper, обеспечивают несколько уровней обмана, чтобы избежать генерации оповещений, а также ввести в заблуждение попытки анализа.

Для получения данных вы захватываете сетевой трафик, содержащий DNS-запросы, любым удобным для вас способом. (См. «Захват файла PCAP» ниже для примеров точек захвата.) Затем вы загружаете захваченный файл PCAP в PacketWhisper (запущенный на любой удобной системе), который извлекает полезную нагрузку из файла и деклакифицирует её в исходную форму.

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

Важное примечание: Мы используем DNS-запросы для передачи данных, а не успешные DNS-разрешения. PacketWhisper никогда не требует успешного разрешения ни одного из своих DNS-запросов. Фактически PacketWhisper даже не смотрит на DNS-ответы. Это расширяет наши сценарии использования и подчеркивает тот факт, что нам никогда не нужно контролировать домен, к которому мы обращаемся, и никогда не нужно контролировать DNS-сервер, обрабатывающий DNS-запросы.

Итак, используя PacketWhisper, мы преобразуем полезную нагрузку, которая выглядит так:

В список FQDN, подобный этому:

Который PacketWhisper превращает в DNS-запросы, отображающиеся в сетевом трафике так:

Которые вы захватываете как файл PCAP в любой точке пути разрешения DNS, а затем загружаете этот PCAP в свою локальную копию PacketWhisper для восстановления полезной нагрузки:

Учебник

Смотрите слайды DEF CON 26 (включены в проект) из моей презентации на Packet Hacking Village. Слайды представляют информацию о DNS-эксфильтрации, текстовой стеганографии / наборе инструментов Cloakify и о том, как PacketWhisper объединяет их в метод передачи данных. Я специально создавал слайды так, чтобы они были полезны сами по себе, поэтому информация и предыстория должны быть полными. Однако вы также можете посмотреть видео моей презентации на DC26 Packet Hacking Village, которое предоставляет дополнительный контекст.

Я включил в проект образец файла PCAP (ловко названный «sample.pcap»), который содержит отдельные полезные нагрузки для каждого из шифров. Они могли бы быть файлами любого типа, конечно, но в данном случае я просто передал текстовые файлы в PCAP. Загрузите его в PacketWhisper и попробуйте!

В качестве быстрого теста в вашей собственной среде запустите PacketWhisper из виртуальной машины, затем отправьте файл, выполняя захват пакетов на сетевом интерфейсе VM через хост-систему. Затем вы можете загрузить файл PCAP в любой удобный экземпляр PacketWhisper для декодирования файла. Просто помните, что это не быстрая передача. Маленькие файлы и терпение — ваши друзья.

Требования

  1. Python 2.7.x (порт на 3.6.x в разработке)
  2. Для декодирования полезных нагрузок: tcpdump (включен в Linux и MacOS) или WinDump (Windows)

Вопрос: «Почему вы не использовали Scapy или dnspython?»

Ответ: Я ненавижу зависимости проектов в своих операционных инструментах. Я стараюсь делать свои проекты максимально атомарными и самодостаточными для максимальной надежности, особенно на стороне клиента, где я могу не контролировать среду и/или иметь минимальные привилегии. Благодаря структуре PacketWhisper я могу запустить его на ограниченном хосте с оболочкой, просто заархивировав проект и распаковав его на целевом хосте.

Вопрос: «Почему PacketWhisper не является форком проекта Cloakify Toolset?»

Ответ: Тот же ответ, что и выше. Нам нужен лишь очень специфический поднабор возможностей Cloakify, а добавление всего остального в PacketWhisper приведет только к загромождению каталога и появлению инструментов/шифров, которые PacketWhisper не может использовать. Поскольку я владею обоими проектами, я обещаю синхронизировать любые изменения между ними.

Запуск PacketWhisper

$ python packetWhisper.py

Шифры на основе FQDN

Шифры на основе FQDN состоят из 3 категорий:

  1. Уникальные случайные поддомены FQDN (рекомендуется — избегает DNS-кеширования, обходит NAT)
  2. Уникальные повторяющиеся FQDN (DNS может кешировать, но обходит NAT)
  3. FQDN распространенных веб-сайтов (DNS-кеширование может блокировать, NAT мешает)

Уникальные случайные поддомены FQDN

РЕКОМЕНДУЕМЫЙ РЕЖИМ ШИФРОВАНИЯ ДЛЯ БОЛЬШИНСТВА СЛУЧАЕВ ИСПОЛЬЗОВАНИЯ

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

Эти шифры имитируют форматы различных сервисов, которые полагаются на сложные поддомены как средство идентификации сеанса, пользователя, кешированного контента и т. д. Этот подход помогает DNS-запросам PacketWhisper сливаться с остальным трафиком сети.

Первая часть имени поддомена на самом деле является строкой из списка шифров. Остальная часть имени поддомена рандомизируется, чтобы сделать каждый FQDN уникальным, что предотвращает преждевременное закрытие пути DNS-запроса из-за кеширования. Затем мы добавляем доменное имя. Мы конструируем FQDN таким образом, чтобы они выглядели как обычные FQDN, связанные с выбранным доменом, для лучшего слияния с нормальным веб-трафиком, наблюдаемым в любой сети.

Уникальные повторяющиеся FQDN

Созданы, чтобы выделяться среди всех остальных DNS-запросов в сети, но без какой-либо рандомизации. Это означает, что DNS-кеширование может помешать, но в качестве побочного преимущества ваши DNS-запросы будет легко найти даже в самых больших коллекциях мультиклиентских pcap-файлов. Это связано с тем, что FQDN представляют собой необычные конечные точки, такие как список «Джонов» (красных лектроидных пришельцев) из вымышленной компании Yoyodyne Propulsion Systems в фильме «Приключения Бакару Банзая через 8-е измерение».

FQDN распространенных веб-сайтов

Это FQDN, сконструированные из URL-адресов распространенных веб-сайтов.

ПРИМЕЧАНИЕ: Поскольку большинство сред имеют NAT на периметре (что скрывает IP-адрес клиента), этот режим обычно полезен только для передачи данных между системами, подключенными к одной локальной сети /24 (например, гостевой Wi-Fi в вашем любимом кафе).

Поскольку шифры распространенных веб-сайтов имеют только IP-адрес источника как способ отличить свои запросы от всех других похожих DNS-запросов в сети, PacketWhisper будет передавать уникальную «последовательность стука» в виде DNS-запроса в начале и конце полезной нагрузки, что поможет нам позже выделить передающий хост из файла pcap.

Пример FQDN: www.github.com

Передача клакифицированной полезной нагрузки

После выбора шифра PacketWhisper кодирует (клакифицирует) полезную нагрузку в список строк FQDN в соответствии с выбранным шифром. Затем он последовательно генерирует DNS-запросы для отправки данных по пути разрешения DNS. PacketWhisper добавляет небольшую задержку между каждым DNS-запросом, что помогает предотвратить неупорядоченные DNS-запросы.

Захват файла PCAP

Ключевым элементом здесь, конечно, является возможность захвата сетевого трафика, содержащего DNS-запросы, сгенерированные PacketWhisper. Есть много вариантов, поскольку вам нужно быть где-то, в любом месте с видимостью пути DNS-запроса.

Примеры точек захвата:

  • Подключение к той же локальной сети (например, в местном кафе)
  • Внутренние системы и устройства организации
  • Периметровые сетевые устройства
  • Сетевая инфраструктура за пределами организации
  • Сетевой отвод в любом месте пути запроса

Используйте свое воображение. Любое устройство на пути разрешения DNS является вариантом, включая настенные дисплеи. «Погодите, что?»

ПРИМЕЧАНИЕ: VPN-соединения блокируют видимость между хостом и узлом выхода VPN. Если у клиента, с которого вы передаете данные, активно VPN-соединение, вы не увидите никаких DNS-запросов, если не сможете захватывать трафик выше точки выхода VPN. Даже захват на той же системе не удастся. Поскольку многие из вас, вероятно, используют VPN, если вы хотите протестировать PacketWhisper, попробуйте передавать данные с размещенной виртуальной машины (VM) и захватывать трафик на сетевом интерфейсе VM на хост-системе.

Извлечение полезной нагрузки

После захвата файла pcap восстановите полезную нагрузку, запустив PacketWhisper на системе, где установлены tcpdump (включен в Linux и MacOS) или WinDump (Windows). PacketWhisper спросит, какой шифр использовался, затем извлечет полезную нагрузку из pcap и, наконец, декодирует извлеченную полезную нагрузку с помощью соответствующего шифра.

Важное примечание: В одном PCAP можно передавать одну полезную нагрузку на каждый используемый шифр. PCAP, содержащий более одной полезной нагрузки с использованием одного и того же шифра, вызовет проблемы. Например, мой прилагаемый файл «example.pcap» содержит 5 полезных нагрузок, по одной для каждого из доступных в настоящее время операционных шифров. Если бы одна из полезных нагрузок использовала тот же шифр, что и другая, PacketWhisper не сможет извлечь ни одну из них. Простое решение — разбить файл PCAP (именно поэтому код передачи PacketWhisper выводит UTC дату-время при начале и окончании передачи). Я работаю над возможностью использования нескольких полезных нагрузок с одним и тем же шифром, решение уже готово, просто нужно до него добраться.

Ограничения / Примечания по использованию

Убедитесь, что ваш файл PCAP действительно в формате PCAP. Если вы использовали tcpdump или WinDump для захвата файла, все будет в порядке. Однако Wireshark предлагает широкий выбор опций «Сохранить как...» для сохранения трафика Wireshark, и только одна из них на самом деле совместима с tcpdump/PCAP. Я работаю над улучшением отчетов об ошибках, чтобы помочь выявить ошибки на ранней стадии.

Не является безопасной схемой шифрования. PacketWhisper не является безопасной схемой шифрования. Он уязвим для атак частотного анализа. Используйте категорию шифров «Уникальные случайные поддомены FQDN» для увеличения энтропии и ослабления атак частотного анализа. Если требуется секретность полезной нагрузки, обязательно зашифруйте её перед использованием PacketWhisper для обработки.

Не является методом передачи с высокой пропускной способностью. PacketWhisper полагается на DNS-запросы, которые основаны на UDP, что означает, что порядок доставки (или даже успешная доставка) запроса не гарантируется. PacketWhisper по умолчанию добавляет небольшую задержку (0,5 секунды) между каждым DNS-запросом. Вы можете безопасно передавать полезные нагрузки со скоростью около 7,2 КБ в час (120 байт в минуту). Это основано на размере исходной полезной нагрузки, а не на выходном файле Cloakify. Вы можете отказаться от задержки между запросами, что значительно ускорит передачу, но с риском увеличения сетевого шума и повреждения полезной нагрузки.

И давайте посмотрим правде в глаза: если у вас есть не-DNS способы передачи данных, вы можете просто использовать основной проект Cloakify Toolset, чтобы скрыть файл на виду (возможно, превратить полезную нагрузку в список покемонов с координатами LatLon) и использовать всю доступную высокую пропускную способность через FTP/HTTP и т. д. DNS чрезвычайно полезен, когда другие протоколы заблокированы, но всегда помните о своих вариантах.

DNS — это DNS. У разных ОС разные политики кеширования DNS и т. д. Сети могут быть неработоспособны, изолированы и т. д. PacketWhisper включает быструю ручную проверку, чтобы увидеть, может ли он разрешать общие FQDN, но DNS часто бывает запутанным. Помните старую мантру IT-специалистов: «Это всегда DNS».

Обнаружение / Предотвращение

Смотрите слайды DEF CON 26 (включены в проект) из моей презентации на Packet Hacking Village. Стратегии смягчения последствий рассматриваются ближе к концу презентации. Как и во всем остальном, «Безопасность в глубину» — ваш друг, особенно учитывая, что пути разрешения DNS охватывают огромные территории, находящиеся вне контроля вашей организации.

План развития

Я добавлю режимы для широковещательных DNS-режимов локальной сети MDNS и LLMNR. Они предназначены для использования системами, подключенными к одной локальной сети, и устранят необходимость в доступе к неразборчивому режиму на захватывающем устройстве при захвате Wi-Fi-пакетов. (Эти протоколы отправляют трафик на x.y.z.255 в сети хоста, транслируя его всем остальным системам в той же локальной сети.)

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

Я также работаю над возможностью использования нескольких полезных нагрузок с одним и тем же шифром в одном файле PCAP. Решение уже прототипировано, но оно делает рабочий процесс извлечения PCAP менее удобным для пользователя. С операционной точки зрения это может быть больше проблем, чем пользы. Я всегда предпочитаю более чистый функционал, чем швейцарский армейский нож со сложностью.

Скачать инструмент