Страницы

DIY. Gurkhas Sword


Объём важной для нас информации растёт из года в год, а привычку контролировать доступ к сети своих устройств и приложений мы оставили где-то во временах диалапа. Ещё чуть-чуть и мы шагнём в облака, где о контроле за потоками информации можно будет забыть.
Как не потерять след своих документов в глобальной паутине под катом.



Современный хакер чем-то напоминает инспектора Гаджета – круг его возможностей определяется не только умениями, но и набором инструментов и трюков, предназначенных для решения конкретных задач.
Об одном из таких трюков – отслеживание документов MS Word – я вам сегодня и расскажу.

GCHQ JTRIG Top Secret Wiki - Gurkhas Sword

В арсенале распространителей кибердемократии, любезно выложенном в общий доступ господином Сноуденом , есть такой инструмент – Gurkhas Sword, который предназначен для отслеживания IP адресов пользователей с помощью специально сконструированного документа Microsoft Office. 


В основе его, по всей видимости, лежит одна интересная функция пакета MS Office – возможность встраивания в документ картинок, динамически подгружаемых при открытии документа из сети Интернет.

Зачем следить за документами?

Есть несколько сценариев, когда такой функционал может оказаться незаменимым:
1. Можно следить за тем, кто и когда открывал твое резюме;
2. Можно отследить перемещение конкурсной заявки или другого конфиденциального документа, если ты волнуешься, что адресат мог слить информацию конкуренту;
3. Можно положить в закрытую папку на сервере файл MY_BANK_CARD_WITH_PIN.docx и узнать первым о том, что тебя взломали, когда файл откроют с чужого IP адреса;
4. Можно сделать свое GCHQ с барышнями и преферансом и следить за каждым документом, покидающим корпоративный периметр.

Маячок

В качестве маячка целесообразно использовать очень маленькую однопиксельную гифку, найти которую легко в Гугле по запросу «tiniest gif» . Размер такой гифки будет порядка десятков байт: 26 для черной, 35 для белой и 37 для прозрачной. 

Имплантируем маячок

Чтобы вставить маячок в документ Word необходимо вызвать диалог добавления картинки (Insert > Pictures) и обязательно выбрать в меню вставки «Insert and Link»

В поле “File name” необходимо указать URL картинки, предварительно загруженной на твой следящий сервер.
Имплантированный маячок выглядит как-то так:

Или вот так, если его намеренно выделить мышкой:

Как видишь, если не знать где искать, обнаружить наш маркер практически невозможно.
При открытии файла, Word отобразит имеющуюся картинку и пошлёт запрос на наш вебсервер для загрузки обновленной копии. Вот этот запрос нам и нужен, и именно его мы и будем отслеживать.
Да, кстати. Все скачанные из сети файлы Word по умолчанию открывает в режиме защищённого просмотра, где наш трюк, к сожалению, не сработает. Поэтому перед отправкой документа запакуй его в архив! Это позволит обойти ограничение.

Серверная часть

В качестве бэкенда я использую VPS в облаке DigitalOcean. Самый простой виртуальный сервер обойдётся тебе в $5 в месяц. Если ты студент – то можешь зарегистрироваться в студенческой программе Github и получить ваучер на $100 .
В качестве операционной системы для сервера я выбрал Ubuntu 14.04. Подробная инструкция по установке и настройке сервера есть на сайте DigitalOcean.
Если ты не хочешь особо заморачиваться с настройкой вебсервера, то вот тебе самое простое решение – SimpleHTTPserver. Это python-модуль вебсервера, который идёт в комплекте с операционной системой.

Запустить его можно так:
создаем директорию. В качестве имени выбираем будущий идентификатор документа/маркера
mkdir <id>
Скачиваем в директорию наш маркер
wget –P <id> http://ip/beacon.gif 
Запускаем наш вебсервер. Утилита nohup позволяет запускать задачи в фоне. Просматривать задачи можно командой job. Завершать командой kill %1. 
nohup python -m SimpleHTTPServer 80 & 
Просмотреть собранные логи можно в любой момент командой 
cat hohup.out | grep –v <твой IP адрес> | grep <id>
Выглядеть они будут примерно так
Но SimpleHTTPServer есть ряд недостатков, которые сводят на нет его преимущества. Он позволяет кому угодно просматривать вебдиректорию (что разом засветит все наши <id> чужому), не умеет логировать User-Agent и не очень стабилен. 
Намного удобней работать с lighttpd.

Устанавливаем lighttpd на нашу Убунту.
sudo apt-get install lighttpd
Первым делом стоит включить логирование http запросов и изменить формат логов, добавив туда поле User-Agent и адрес запрашиваемого ресурса (id нашего маячка).
Открываем конфигурационный файл lighttpd
Nano /etc/lighttpd/lighttpd.conf
И добавляем необходимые модули как на рисунке.
Затем добавляем в заголовок HTTP ответа вебсервера запрет на кэширование ресурсов (мы ведь не хотим, чтобы кэширующий корпоративный прокси отдавал клиенту наш маркер вместо нас). 
Итоговый конфиг будет выглядеть как-то так:
 Подробное описание формата логов есть на страничке модуля mod_accesslog 
Ах да, чуть не забыл. Чтобы не остаться без заветных логов, необходимо изменить параметры их ротации, иначе логи будут автоматически удаляться через определенное время.
Файл конфигурации демона logrotate лежит по адресу /etc/logrotate.d/lighttpd. Настроить его можно, к примеру, так.

 Теперь каждую неделю рабочий файл /var/log/lighttpd/lighttpd.log будет переименовываться в lighttpd.log.1 и система будет создавать новый файл для логов. Всего логи будут храниться 54 недели.

Стоит так же на всякий случай запретить хождение по сайту поисковых ботов
echo -e 'User-agent: *\nDisallow: /' > /var/www/robots.txt
Просматривать логи lighttpd можно командой 
cat /var/log/lighttpd/lighttpd.log | grep –v <твой_IP> | grep <id>
Вот пример такого лога:

Как видно из примера, теперь у нас есть возможность определять, как минимум, версию MS Office и операционную систему пользователя. Крупные поля User-Agent дают даже возможность для последующей идентификации пользователя по сигнатуре.

Что еще можно сделать?

Если вам понравилась эта тема, то можно пойти дальше и добавить пару продвинутых функций:
  • использовать https вместо http. Это позволит скрыть для сетевых посредников название маркера
  • добавить парсер поля User-Agent с целью определения версий MS Office и операционной системы пользователя
  • написать скрипт, который будет присылать вам уведомления на email или sms при появлении новых записей в логах с нужным полем id
  • еще можно добавить в скрипт запросы к базам WHOIS и GeoIP чтобы сразу видеть кто и откуда просматривал ваши документы 
Сегодня редко кто блокирует доступ легитимных приложений к сети Интернет, поэтому этот трюк прекрасно работает даже в жестко настроенной корпоративной среде. В качестве защиты от него можно посоветовать всегда использовать защищённый режим просмотра документов, либо закрыть доступ приложениям MS Office к сети Интернет, что может сказаться и на легитимных документах. 
Контроль за распространением документов – головная боль специалистов службы информационной безопасности. При этом удобных коммерческих решений попросту нет. При удачном стечении обстоятельств, этот метод отслеживания документов может вас серьезно выручить, выявив утечку или взлом ваших систем, и даже помочь найти нарушителя.

Контроль за документами Microsoft Office внутри компании можно так же организовать с помощью механизмов управления правами (IRM, Information Rights Management) Активной Директории домена Windows. Однако эти процедуры, зачастую, создают больше проблем чем преимуществ за пределами корпоративной среды. 
Похожий функционал (но с серьезными ограничениями) был реализован в сервисе Hodeydocs (https://www.honeydocs.com/ ). Проект более не активен.
Отслеживать пользователей через подгружаемые картинки можно так же с помощью сервиса http://iplogger.ru/ или ему подобных, но это не так весело, как делать все самому. Правда ведь?

3 комментария:

  1. Как-то скриптом просматривать логи не очень удобно.
    honeydocs был хорош. жаль что альтернативы не появилось

    ОтветитьУдалить
  2. Альтернатива появилась, читаем http://lockboxx.blogspot.ru/2015/09/honeytags-opensource-honeydocs-project.html

    ОтветитьУдалить