Сам себе канарейка. Добавляем Canarytokens в документы Office
Содержание статьи
Раньше на получении IP такие игры и заканчивались. Но что, если нужно делать это массово и как‑то централизованно управлять процессом? А еще хотелось бы внедрять свою «канарейку» в любой документ, а не только в пустую заготовку. В этой статье мы покажем, как сделать собственный движок для управления «канарейками».
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
О канарейках
Если совсем коротко: «канарейка» — это способ заставить объект отстучаться наружу при обращении к нему. Чаще всего для этого используют уникальный URL, заранее сгенерированный для конкретного документа. Запрос к нему позволяет зафиксировать IP-адрес, User-Agent, GeoIP, реферер, параметры устройства и другую телеметрию.
Для документа и приложения, в котором ты его открываешь, все выглядит как легитимная активность: ну тянет документик внешнюю картинку — и пусть. Или делает DNS-запрос — мы что, звери, чтобы ему мешать? Часто канарейки используют проприетарные особенности форматов и популярных приложений, например Microsoft Word, Microsoft Excel и просмотрщиков PDF.
В свободных офисных форматах — LibreOffice, OpenOffice, Apache OpenOffice и подобных, а также в открывашках PDF канарейки будут срабатывать через раз, но чаще не будут. Но если средство безопасности или песочница вытащит URL из документа и решит проверить его активным запросом, канарейка оповестит нас: открытие было — значит, все работает.
Давай попробуем классику. Заходим на сайт Canarytokens, выбираем Word, указываем почту для алерта и, если нужно, комментарий, а затем скачиваем сгенерированный файл. Так же сделаем для PDF.

Открой любой документ в Microsoft Office — только сначала выйди из защищенного просмотра и включи режим редактирования — или закинь PDF в старенький Adobe Acrobat Reader. При открытии документа прилетит «письмо счастья».

Но если открыть файл в других редакторах — например, в EZViewer или просто в браузере — либо в свежих версиях Adobe Acrobat, уведомление не придет. Или, слава богам безопасности, появится запрос‑предупреждение.

Мини‑офтоп. В корпоративной среде можно добавить сайты, которые ловят канарейки, в список доверенных — тогда предупреждение о соединении не появится. Например, в Adobe Acrobat это настраивается в параметрах программы или в реестре:
HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat\DC\TrustManager\cTrustedSites\cAlwaysTrustedForJavaScript

Теперь немного пореверсим документы и разберемся, как так вышло.
Канарейки в PDF
Анализ PDF-объектов
Давай кратко освежим в памяти структуру файла PDF. Как ты знаешь, просто открыть PDF в обычном текстовом редакторе и поправить содержимое не выйдет.
PDF состоит из множества хитро переплетенных объектов. Даже чтобы просто найти текст в сыром PDF-файле, приходится проваливаться внутрь объектов и декодировать их.
Мы применим специальные утилиты и библиотеки, чтобы анализировать структуры PDF-документов и внедрять в них объекты. Можно, к примеру, использовать онлайн‑инструменты вроде Inspect PDF: они позволяют интерактивно раскрывать объекты. Но такой подход годится только для небольших документов.

Если работаешь в своей инфраструктуре, проще и безопаснее взять готовые утилиты — их полно: есть огромный список на GitHub, pdfxplr для быстрого поиска полезной инфы вроде URL, email и IP-адресов, а еще PDForensic — правда, на ряде документов он у нас работал не очень.

Казалось бы, почему просто не взять открытые шаблоны и код и не вкорячить их в свои ИТ‑решения? Потому что такой путь усложняет работу с уже существующими файлами — например, их маркировку. А нам нужна универсальность: хотим доставлять свою канарейку в каждый дом.
Для поиска дефолтных канареек тоже есть готовые решения — например, одно описано в блоге Adam on Security.
Практика
Сразу скажем: эта статья не вышла бы без PoC и огромной работы камрада aaaaaaaalesha. Он исследовал и реализовал способы внедрять канареек в любое место документа — за это ему отдельное спасибо.
Сработаем на опережение: сначала напишем простейший сервер, который будет слушать прилетающих канареек. Возьмем Python и поставим Flask командой pip3 . Создай каталог templates и положи в него белую картинку размером 1 × 1 пиксель — pic.. Формат можешь выбрать любой: GIF, PNG или какой тебе нравится.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Оформи подписку на материалы по тегу
Если тебе интересна эта тема целиком, можно открыть доступ не к одному материалу, а ко всем платным статьям выбранного тега.
Вариант 3. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»




Подпишись на наc в Telegram!
Только важные новости и лучшие статьи
Подписаться