Впервые опубликовано в сентябрьском номере «Хакера» за 2013 год
Паранойей я, в общем-то, не страдаю. Когда нечего скрывать, не так уж сильно и запариваешься, что кто-то может читать твою почту или получить пароль к твоему ящику. Никакой папки top secret никто там не найдет — ее там просто нет. Однако недавно случилась забавная история, которая все же заставила заиграть нотки паранойи и у меня.
Странная активность в ящике
Все началось с того, что я полез в папку с исходящими письмами, чтобы найти там какой-то мейл. И увидел там то, чего никто из нас увидеть бы не хотел: письма, которые я не отправлял! Это не могло быть ошибкой: два письма были отправлены буквально только что и два точно таких же днем ранее.
Все дела тут же были отложены в сторону, и голова быстро загрузилась одним-единственным вопросом: что за фигня? (Новый закон о СМИ запрещает нам использовать более жесткие формулировки этого вопроса, хотя тут они могли бы быть уместны.)
Рассудительность
Надо сказать, что письма были очень странными и даже бессмысленными. Это совершенно точно не был спам. И не какие-то личные данные. Это вообще не было похоже ни на что, кроме как на сообщение от системы мониторинга.
В заголовке было указано «Website down», а в теле письма фигурировал адрес http://dvd.xakep.ru (это часть сайта, посвященная DVD-диску журнала) с подписью «Непредвиденная ошибка». Но я не помню, чтобы настраивал мониторинг. Тем более с отправкой уведомлений на адрес mqukisbx@sharklasers.com. Пикантности добавляло то, что этот сервис используется для создания временных email’ов, и я его точно видел впервые.
Хакер #176. Анонимность в интернете
Я посмотрел хедеры одного из писем, где явно было указано, что письмо отправлялось через SMTP. На всякий случай я отправил мейл через веб-морду Gmail’а и убедился, что хедеры в этом случае подставляются другие. Значит, доступ был получен не ко всему аккаунту, а, скорее всего, к одному из паролей приложений (в случае, когда включена двухфакторная авторизация, необходимо создавать статические пароли, чтобы использовать их в приложениях, которые двухфакторную авторизацию не поддерживают, — например в почтовых клиентах). Быстрое решение — отозвать все пароли приложений. Изменил я и обычный пароль — ну так, на всякий случай.
Я практически сразу открыл лог активностей, в котором фиксируются все обращения к аккаунту (в том числе для отправки почты по SMTP). Никаких подозрительных IP-адресов не было. Это, с одной стороны, радовало — значит, с других машин обращений не было. Но, с другой стороны, пугало — значит, используется одно из моих устройств? Но какое?! Я пошел спать.
Непонимание
Сложно описать словами удивление, когда на следующее утро я увидел те же самые письма. И это после того, как были сменены все пароли.
Задача явно становится интереснее. Кажется, что единственный вариант в том, что одно из моих устройств заражено. Но в это верилось слабо:
- В последнее время я работаю только на Mac и после смены паролей нигде, кроме как на своем ноутбуке, пассы не вводил. Неужели заражена OS X? Тут я впервые в жизни поставил на мак антивирус, который, естественно, ничего не нашел, но зато сделал что-то ужасное с системой, из-за чего ее потом пришлось переустановить.
- Ранее я отозвал все пароли приложений, а, судя по хедерам, письма все равно отправлялись через SMTP. Но без пароля приложения это невозможно!
- В списке активностей не было записей на время отправки сообщений. WTF?
Почти паника
К этому времени я уже успел отправить задачку многочисленным друзьям из сферы ИБ и работающим в Google (кстати, выяснилось, что у Gmail нет никакой возможности написать что-то в суппорт или позвонить в call-центр), но никакого сколько-нибудь вразумительного объяснения не было.
Я решил сделать еще один эксперимент: на защищенном канале (мало ли кто снифает Wi-Fi — выше я писал, что не страдаю паранойей, — видимо, я соврал), а именно 3G оператора, и с 99,99% незараженного устройства (взял iPad Mini) я еще раз поменял пароль. Вышел из системы и больше пароль не вводил.
Это невозможно!
Надо ли говорить, что я увидел в ящике поутру? Черт подери, там были те же самые письма, отправленные от моего имени! Это уже было не смешно. Я не входил в аккаунт, и это объективно не мог сделать кто-то другой. Что происходит?
К этому моменту я был на 100% убежден, что проблема не во мне. И не в моих девайсах. Как мне казалось, это был явный глюк Google, который никто не мог объяснить. При этом добраться непосредственно до суппорта гугла так и не получалось, хотя ответы (вернее, банальные рекомендации) пытались дать разные инженеры компании. Что бы ты делал на моем месте? У тебя есть догадки?
Разгадка
Когда руки уже опустились, я решил еще раз трезво на все посмотреть. Все же на глюк это похоже не было. Письма явно относятся к dvd.xakep.ru, то есть имеют связь со мной — это не может быть совпадением. И я не исключал, что когда-то действительно настраивал мониторинг.
И тут меня осенило. Я зациклился на почте, но, возможно, дело в каком-то другом сервисе гугла? Я когда-то делал мониторинг сайтов на Google App Engine, а еще… В этот момент я открыл Google Docs и вбил там злополучный адрес, на который уходили письма, — mqukisbx@sharklasers.com. Ответ сервера сразу поставил все на свои места. Я все вспомнил!
Google Docs нашел документ «Копия Is My Site Down — Digital Inspiration». Когда-то очень давно я игрался со скриптовым движком таблиц Google Docs (что-то вроде VBA в Excel’е) и пробовал делать разные интересные вещи — кажется, у нас даже был на эту тему Proof-of-concept. Тогда я наткнулся на статью о том, как реализовать мониторинг веб-сервера только на Google Docs (bit.ly/HYQdju), и сделал копию предложенного скрипта. Тот использовал функцию для получения страницы (UrlFetchApp) и функцию для отправки сообщения (MailApp.sendEmail). Причем адрес сервера я поправил (на dvd.xakep.ru), а адрес получателя оставил авторский. Скрипт почему-то засбоил и начал каждую ночь отправлять алерты, которые чуть не свели меня с ума :).
Оказалось, что это никакой не глюк, не APT и не заговор, а банальный склероз, помноженный на паранойю. Я всего лишь забыл про забавный скрипт.
P. S. И все-таки задачка получилась интересной. А ситуация все равно вызывает вопросы. Какой-то скрипт может слать сообщения от твоего имени, и это никак не отображается в логе активности. Почему? Получается идеальный механизм для скрытной отправки сообщений, если есть доступ к Google-аккаунту. И ведь наверняка можно сделать удаленное управление рассылкой — через те же самые скрипты Google Docs!