Instant Messengers and URLs

What happens when you send a link?

Various stories about malware spreading over SVG files sent on Facebook were circulating over the interwebs lately. You can read more about this vector and the methods used by malicious hackers in this post, but what caught my interest was not the attack itself.

As you probably know, SVG is a vector image format that is, in fact, an XML file containing various drawing instructions and, surprisingly to some, capable of containing and running JavaScript code. For example, when opening in most modern browsers, this SVG will show you a blue circle and run an external script loaded from the redacted host.

SVG XML file
SVG file containing external JavaScript code.

This will work only when the browser is explicitly pointed to the SVG file URL or if the file is open from the disk; <img src= does not work anymore for obvious reasons.

So, when this SVG topic has popped up again, this time in the context of poor content filtering in Facebook Messenger, I instinctively thought about privacy implications introduced by this (apparently inefficient) security measure. I thought it could be a good idea to use JavaScript code delivered in SVG to check how modern instant messengers process this file format.

After a series of messages sent to my wife and colleagues, I feel a subtle hope that I will not be banned from using the messengers I’ve tested. And, of course, I have some results to share.

The good news is that Signal, Viber, WhatsApp, and both Facebook Messenger and Telegram in their “secret” modes, all five claiming end-to-end encrypted communications, were not caught cheating. Although in WhatsApp and Telegram, pasted URLs resulted in some activity originating from the client, no one else appeared in the web-server logs.

Bad news is that that’s pretty much all good news.

Starting from expected obvious: Slack does an active preview of the linked content to show it in the GUI. That’s cool; we all know that, so I use it as an example of how this kind of activity looks like for this post. So, when you send a link, the web-server serving it registers this request in the log:

54.89.92.4 — — [21/Nov/2016:16:02:31 +0000] “GET /avakl.js HTTP/1.1” 404 152 “-” “Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)"

Where 54.89.92.4 of course is a Slack instance in Amazon AWS:

$ whois 54.89.92.4 | grep Organization
Organization: Amazon Technologies Inc. (AT-88-Z)

Let’s take a look how other messengers deal with the links.

Skype sends 6 requests from 2 hosts, both belonging to Microsoft directly. A rich company can afford that.

23.101.61.176 — — [21/Nov/2016:15:38:44 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5”
23.101.61.176 — — [21/Nov/2016:15:38:44 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5”
23.101.61.176 — — [21/Nov/2016:15:38:44 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5”
23.101.61.176 — — [21/Nov/2016:15:38:44 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5”
104.45.18.178 — — [21/Nov/2016:15:38:44 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5”
104.45.18.178 — — [21/Nov/2016:15:38:44 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5”

Telegram fetches the image once, form it’s directly owned network.

149.154.167.163 — — [21/Nov/2016:15:35:18 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “TelegramBot (like TwitterBot)”
$ whois 149.154.167.163 | grep -E ‘^descr|^person|^address’
descr: Telegram Messenger Network
person: Nikolai Durov
address: P.O. Box 146, Road Town, Tortola, British Virgin Islands
descr: Telegram Messenger Amsterdam Network

The URL sent via Facebook Messenger on mobile results in four requests from different addresses.

31.13.102.98 — — [21/Nov/2016:19:44:51 +0000] “GET /avakl.svg HTTP/1.1” 206 328 “-” “facebookexternalhit/1.1 (+https://www.facebook.com/externalhit_uatext.php)"
173.252.120.119 — — [21/Nov/2016:19:44:52 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “facebookexternalhit/1.1 (+https://www.facebook.com/externalhit_uatext.php)"
173.252.123.130 — — [21/Nov/2016:19:44:53 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “facebookexternalhit/1.1 (+https://www.facebook.com/externalhit_uatext.php)"
173.252.123.129 — — [21/Nov/2016:19:45:12 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “-” “facebookexternalhit/1.1 (+https://www.facebook.com/externalhit_uatext.php)"

Facebook kindly explains its behavior by provided URL.

However, when the link is sent via Facebook web-site, look what happens:

31.13.113.194 — — [21/Nov/2016:15:11:58 +0000] “GET /avakl.svg HTTP/1.1” 206 328 “-” “facebookexternalhit/1.1”
66.220.145.243 — — [21/Nov/2016:15:12:01 +0000] “GET /avakl.svg HTTP/1.1” 200 328 “https://l.facebook.com/lsr.php?u=https%3A%2F%2F*******%2Favakl.svg&ext=1479741420&hash=AcnhtJ5F7tKqGD-kIHGSbCF0-TflNMaiR9WNCxHznoOqJw" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:01 +0000] “GET /kl.js HTTP/1.1” 200 283 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:01 +0000] “GET /favicon.ico HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:03 +0000] “GET /keylogger? HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:04 +0000] “GET /keylogger? HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:05 +0000] “GET /keylogger? HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:06 +0000] “GET /keylogger? HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:07 +0000] “GET /keylogger? HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”
66.220.145.243 — — [21/Nov/2016:15:12:08 +0000] “GET /keylogger? HTTP/1.1” 404 152 “https://*******/avakl.svg" “Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0”

As you can see, first, some Facebook-owned host fetches the SVG, and after that, there is a series of requests to “embedded” script URL, which demonstrates that the script is actually run at some “browser.”

Strangely enough, Google Hangouts haven’t shown any sign of interest in my links.

This leaves a lot of questions open. However, one thing is obvious: privacy policies are correct, and we don’t really own the stuff we send over Instant Messengers unless our comms are encrypted end-to-end.

During these tests I used awesome JavaScript keylogger by John Leitch.

Безпечні месенджери

Якби у мене був Топ-10 питань, які задають мені свідомі громадяни, які не байдужі до власної інформаційної безпеки, то на першому місці безперечно було б

Які мобільні месенджери безпечні, а які ні?

Я спробую висловити свою професійну думку щодо цього та поширити її серед якомога ширшої аудиторії, в чому розраховую на допомогу читачів.

tl;dr

Як і на всі інші питання у Всесвіті, на це можна відповісти або одним реченням, або в декількох томах. Отже, коротка відповідь:

Безпечні –

Не дуже безпечні –

Небезпечні –

Дуже небезпечні –

  • Skype
  • SnapChat
  • WeChat
  • Yahoo! Messenger
  • BlackBerry Messenger

Тепер докладніше.

Навіщо нам безпека миттєвих повідомлень?

Спершу даймо відповідь на питання, навіщо нам безпека у програмах для обміну повідомленнями, якщо є така чудова мобільна послуга, як SMS.

По-перше, SMS — небезпечні. У своїй фундаментальній незахищеності від загроз прослуховування та втручання в спілкування абонентів, мобільні мережі перевершили навіть Інтернет. Перехоплення та підробка SMS вже давно не є задачею, яка під силу лише міжнародним шпигунам, а вартість необхідного для її здійснення обладнання весь час зменшується.

По-друге, SMS — це дорого. Місцями непристойно дорого. Спілкування за допомогою месенджерів через мобільний інтернет або WiFi набагато дешевше. При цьому воно не додає суттєвих ризиків якщо ви подбали про безпеку під час вибору інструменту спілкування.

Які вимоги до безпеки миттєвих повідомлень?

Щоб правильно вибрати програму для листування миттєвими повідомленнями, вам потрібно дати собі відповідь на три прості питання:

  1. Чи слідкують за мною міжнародні шпигуни та/або правоохоронні органи?
  2. Чи хочу я зберігати історію листування?
  3. Які месенджери наразі популярні серед моїх друзів та знайомих або в моєму регіоні?

Отже, давайте по черзі.

1. Модель загроз

Як завжди перед вибором інструменту захисту варто поміркувати, що саме та від кого ми захищаємо.

Загалом є три основні категорії нападників у кіберпростір: опортуністи, яким більше нема чим зайнятися, кіберзлочинці, які крадуть в нас гроші або майно, та національні розвідувальні агенції, які таким чином нишпорять одне за одним, борються з тероризмом, та роблять ще багато того, про що нам краще не знати. Правильно обравши рівень нападника ви зможете більш вдумливо підійти до вибору програми-месенджера.

Також, подумайте про цінність даних, які передаються, та приватність учасників листування. В нашому житті багато різних людей та рівень секретності наших стосунків з ними також різний. Конфіденційність ділового листування можна порівняти з приватністю особистих повідомлень. Дані, які передаються, адресати, які їх отримують, та навіть самі факти здійснення обміну повідомленнями нерідко є предметом цікавості людей, які можуть використати їх не на вашу користь.

2. “2 peer or not 2 peer…”

Миттєві повідомлення в різних месенджерах наразі передаються двома принципово різними способами: напряму відправником адресату (peer-to-peer), або через сервер. Причому модель ця дуже образна: насправді месенджер може фізично передавати повідомлення через сервер, але при цьому вміст повідомлення буде зашифрований з кінця в кінець (end-to-end). Тобто сервер (та його оператор) не матиме змоги отримати до нього доступ, а отже цей процес буде майже так само безпечний, як і при справжньому peer-to-peer спілкуванні. “Майже”, тому що факти обміну повідомленнями все одно будуть реєструватися на сервері, а це за певних умов може бути загрозою приватності.

Як бачите, тут виникає один з класичних конфліктів між безпекою та зручністю програмного забезпечення. З одного боку, ми не хотіли б, щоб Google, Facebook та решта майкрософтів мали доступ до нашого листування. Бо хто зна, що собі думають їхні адміни, і взагалі, з ким вони потім цими даними діляться. Але з іншого боку, ми хотіли б зберегти історію листування та мати змогу відновити її на новому пристрої або після перевстановлення операційної системи або додатку месенджера.

Звичайно, під час обміну повідомленнями з увімкненим end-to-end шифруванням збереження історії можливе лише на пристроях учасників листування. Про це треба пам’ятати як перед вибором засобу листування, так і перед переїздом на нову платформу або пристрій. Багато месенджерів зберігають історію в резервних копіях, які вони створюють самостійно, або за допомогою стандартних засобів ОС.

3. В безпеці та не на самоті

Популярність месенджерів штука дивна та залежить від багатьох факторів, серед яких важливу роль відіграють вік користувачів та їхній ареал. Якщо у Південній Америці абсолютно усі користуються WhatsApp, то в Східній Європі найбільш поширені Viber та Telegram, причому Messenger не далеко відстав. Отже, обираючи засіб спілкування, поцікавтеся, які у цього вибору об’єктивні перспективи, щоб уникнути ролі одинака в пустелі.

Підсумуємо. З врахуванням цінності листування, приватності його учасників, та релевантних загроз, ви можете використати (або ні) повне (end-to-end) шифрування, в якому зберігається (або ні) анонімність учасників та історія повідомлень. У разі гострої потреби в захисті, ви можете звернути увагу на те, чи проводилось для месенджера формальне дослідження безпеки з позитивним висновком.

Нижче я навожу таблицю з відомими мені характеристиками популярних месенджерів. Сподіваюся, ці результати стануть вам в пригоді під час прийняття рішення про початок або продовження використання того чи іншого засобу спілкування.

Instant messengers comparison

Звертаю вашу увагу на “культурні особливості” деяких популярних месенджерів. Як бачите, в залежності від того, який режим спілкування ви обрали, Telegram та Messenger можуть реєструвати ваші повідомлення на сервері, або ні. Також, у WhatsApp за замовчуванням не увімкнені повідомлення про зміни даних співрозмовників: якщо ваш контакт перевстановить додаток або іншим чином змінить ключі шифрування, WhatsApp про це промовчить. Я раджу увімкнути такі застереження в пункті меню Settings -> Account -> Security.

Цілком нормально використовувати декілька різних месенджерів для різних цілей: для спілкування по роботі, з друзями та в сім’ї. А підтримка балансу між безпекою та зручністю — вашою та ваших співрозмовників — завжди є гарною ідеєю.

Особисто я використовую Viber та Messenger для спілкування з друзями та близькими, та Signal — для листування з клієнтами та колегами.

Залишайтеся в безпеці.

Оновлено 2017–01–12

  1. Через знайдені в них вразливості реалізації та бізнес-логіки, Viber та Telegtam “понижено” в рейтингу.
  2. Виправлена історична несправедливість: WhatsApp, як продукт, що використовує Signal API, відправлений в першу категорію.
  3. Додано Google Allo, який використовує Signal API в Incognito Mode.
  4. Додано деякі пояснення щодо (не)безпеки окремих месенджерів.
  5. Якщо ви хочете дізнатися більше про безпеку месенджерів, я рекомендую цей виступ.

Як видалити аккаунт з ВКонтакте і Однокласники

та перенести Mail.Ru та Yandex Mail на GMail

В минулому пості я спробував пояснити, чому користуватися інтернет-сервісами, розташованими на території РФ, це проти людської природи. Сподіваюся, на вас це подіяло, тому ось декілька порад щодо того, як позбутися цих шкідливих звичок.

По-перше, все виявилося навіть гірше, ніж я думав. Ні в ВКонтакте, ні в Однокласниках я не знайшов можливості експортувати дані користувача. Які, до речі, є в усіх популярних сервісах з часів заснування Facebook. Таким чином, еволюція зазначених вище сервісів зупинилася десь на рівні MySpace, в якому такої кнопки ще не було.

Щоправда, для ВКонтакте є якийсь скрипт дворічної давнини на GitHub, сумніваюся, що він працює. В будь-якому разі, якщо можливість експорту існує, то вона реалізована третіми постачальниками.

Щодо електронної пошти, тут ситуація набагато краща. Через те, що пошта працює по стандартним протоколам та RFC, мігрувати будь-яку поштову скриньку у Google Mail зовсім просто користуючись ось цими порадами: 3 ways to move email from other accounts to Gmail. Для повного перенесення даних треба обрати перший варіант, а після міграції налаштувати у старому поштовому сервісі безумовне переправлення на нову адресу без збереження копій у старій поштовій скриньці. Ще можна налаштувати автовідповідач, в якому повідомити відправникам нову адресу електронної пошти та попросити в майбутньому використовувати саме її. Після двох-трьох місяців в такому режимі, коли всі ваші контакти вже будуть в курсі змін, що відбулися, стару поштову скриньку можна буде видалити назавжди.

З видаленням аккаунтів в поштових сервісах все більш-менш зрозуміло, а от знайти посилання, за якими можна видалитися з Однокласників та ВКонтакте, з першої спроби мені не вдалося. Дякувати Гуглу, багато часу пошук не забрав: очевидно, це популярна тема. Отже, видалитися з зазначених сервісів можна ось так:

  • Видалитися з Однокласників. Ідемо на умови надання сервісу та натискаємо на посилання про видалення аккаунту в самому кінці сторінки. Після відповіді на питання що ж нам у них не сподобалось та введення паролю все закінчиться.
  • Видалитися з ВКонтакте. Переходимо на таку адресу — https://vk.com/settings?act=deactivate, обираємо причину, і все — тепер ви вільна людина.

Якщо в когось з читачів є інформація щодо методів експорту котиків та листування з колишніми з ОК та ВК — прошу поділитися з метою покращення КПД цього посту. Дякую заздалегідь.

Чому варто видалити аккаунт з ВКонтакте і Однокласники, а про Mail.Ru

Багатьом відомо, що з 20 липня та 1 серпня 2016 р. в Російській Федерації вступає в дію низка “антитерористичних” поправок до законів, які вкупі мають назву “пакет Ярової”. Про подробиці змін, які вже ухвалені парламентом та президентом, ви можете почитати ось тут, але якщо коротко, то тепер російські спецслужби та правоохоронні органи мають оперативний доступ до усіх даних користувачів соцмереж, поштових та інших інтернет-сервісів, які знаходяться в юрисдикції РФ, протягом 6 місяців. Саме на цей термін нові правила вимагають операторів зберігати листування користувачів.

Якщо з якихось невідомих мені причин ви досі користуєтесь інтернет-сервісами російського виробництва, я рекомендую вам переглянути цей підхід у бік міграції на послуги, які розташовані в якійсь більш цивілізованій юрисдикції. Тим більше, що якість такого продукту у 100% випадків буде значно вищою.

Якщо ваш основний аргумент це те, що ви все одно не зберігаєте у соцмережах ніякої чутливої інформації, я пропоную вам подумати про наступне. Чи знаєте ви, що додатково до даних, які ви свідомо завантажуєте у соцмережі, вони збирають про вас певний набір метаданих, таких як ваше розташування під час користування сервісом, а також дані про розташування місць, в яких були зроблені ваші фото? Інші приклади метаданих складають контакти та інтенсивність листування з кожним з них, періодичність користування сервісами та характер переходів по зовнішнім посиланням, і звичайно ж ваші вподобання щодо реклами, яку вам пропонують соцмережі, адже це їхня основна бізнес-модель. Це якщо ми говоримо про дані, які зберігають сервіс-провайдери. А що ж щодо того, куди ці дані потім передаються?

Як усім нам відомо, безплатного сиру без неприємних наслідків майже не буває. “Правило буравчика” в цьому випадку звучить так: якщо вам не доводиться за щось платити, то ви не клієнт, ви — товар. У випадку з соціальними мережами це справедливо на всі сто: клієнтом соцмережі є не її користувачі, які безплатно насолоджуються радістю спілкування. Клієнтами є ті, хто платить гроші, тобто всілякі рекламодавці, аналітичні агенції, власники бізнесу що рекламується тощо.

У більшості країн до цього переліку можна додати ще й державні спецслужби та правоохоронні органи, щоправда, платити за послуги не в їхньому стилі, тому вони створюють закони, згідно з якими інтернет сервіс-провайдери змушені надавати їм доступ до даних користувачів, якщо хочуть здійснювати діяльність на їхній території. Але в деяких юрисдикціях для отримання такого доступу слідчому треба отримати ордер в суді, так само як і на обшук оселі чи офісу. А в деяких, таких як Російська Федерація в найближчому майбутньому, ці неприємні незручності відсутні.

Отже, якщо ви вирішили адекватно відреагувати на майбутні зміни в угодах про надання послуг російських постачальників інтернет-сервісів, до ваших послуг купа альтернатив. Більшість з них, звичайно, змушені виконувати закони США та Євросоюзу, тобто через ордер до них мають доступ Європол, ФБР та інші. З тієї ж причини, необмежений стрімінг піратської музики з них теж дещо ускладнений, але це однозначно менша з двох зол.

Я спробую зібрати в наступному пості декілька порад щодо того, як видалити обліковий запис в уразливих соцмережах та як архівувати ваші дані, які там зберігаються.