26.01.2016

Проследить открытие документа. Утечки данных.

На последнем Black Hat Las Vegas был представлен интересный проект Canarytokens, который может элегантно решить проблему. Идея проекта очень проста: мы создаем поддельные «значимые» ресурсы (письма, документы, домены и так далее) и делаем так, чтобы при открытии любого из них атакующим на внешний ресурс отправлялся запрос со специальным токеном. Как только токен приходит, мы узнаем, что кто-то открыл документ, а значит, у нас утечка. Простейший вариант: создать вордовский документ с интересным названием типа passwords.doc с картинкой, вставленной с внешнего сайта.
«Офис» с давних времен поддерживает возможность подписать документ, что позволяет защитить его от последующих исправлений. Подпись создается с помощью обычного личного сертификата x509 (считай тот же, что и у HTTPS). При этом подпись документа проверяется сразу же при его открытии, то есть Protected View не останавливает этот процесс.
Второй момент заключается в том, что сертификат проверяется стандартным виндовым CryptoAPI. В самих сертификатах масса мест, где можно указать внешний URL. В первую очередь — проверка отзыва сертификата
(CRL, OCSP) и путь до Intermediate или Root CA («Поставщик центра сер-
тификации»). Таким образом, при проверке подписи «Офису» требуется
проверить сертификат, а потому ОС проверяет всю цепочку сертификатов
(от конечного до корневого), проходя по всем URL. Добыть валидный конечный сертификат с произвольными значениями
CRL и OCSP почти невозможно (эти поля контролируются CA), так что мы
возлагаем надежду только на местоположение сертификата Intermediate
CA — при проверке валидности ОС должна сходить и скачать его. Выходит,
нам нужно создать конечный сертификат и подписать им любой офисный
документ. Создать сертификат несложно: достаточно сделать специальный кон-
фиг и пару раз выполнить команду openssl. Подписать документ тоже не великая
проблема — заходишь во вкладку Insert, далее — Signature Line, вводим
произвольные значения, OK, двойной клик на подпись и выбираешь лич-ный сертификат.