Як «захищені» месенджери захищені від крадіжки SMS

  1. Зловмисник отримує доступ до SMS жертви і викрадає аккаунт
  2. Яку інформацію при цьому отримує атакуючий
  3. Атакуючий від імені жертви пише співрозмовнику жертви - чи побачить співрозмовник, що «щось не так»?
  4. Чи може жертва вбудованими в месенджер засобами запобігти викраденню свого аккаунта шляхом крадіжки...
  5. Чому двухфакторная авторизація в Telegram не працює, тобто не запобігає викрадення аккаунта
  6. Рекомендації для користувачів
  7. Signal:
  8. Telegram:

07 Июня, 2016, 16:00

8637

Популярні додатки для обміну повідомленнями заявляють про те, що листування в них надійно захищена від сторонніх очей. Але наскільки це відповідає правді? Консультант по цифровій безпеки Микола Костинян розбирався в цьому - спеціально для AIN.UA.

після злому Telegram-акаунтів російських опозиціонерів шляхом отримання кодів підтвердження з SMS третіми особами, ми вирішили експериментальним шляхом розібратися, наскільки «захищені» месенджери - Signal, WhatsApp і Telegram - захищені від такого роду атак. За результатами експерименту ми запропонуємо рекомендації для користувачів як убезпечити свої акаунти.

Під викраденням аккаунта користувача ми розуміємо отримання доступу до аккаунту жертви атакуючим - або одночасно з жертвою (у обох будуть активні сесії), або замість жертви (у жертви активна сесія припиниться). Тобто зловмисник на своєму пристрої зареєстрував / активував / увійшов в додаток Signal, WhatsApp або Telegram від вашого імені і може писати повідомлення або дзвонити від вашого імені іншим користувачам.

Отже, якщо зловмисник зможе отримати SMS користувача замість нього або разом з ним, то:

  1. Чи зможе він викрасти аккаунт користувача Signal, WhatsApp або Telegram, який зареєстрований на цей номер телефону?
  2. Чи може користувач вбудованими в месенджер засобами запобігти такій викрадення свого аккаунта?
  3. Яку інформацію в результаті успішної атаки отримає атакуючий (контакти, вміст листування, історію дзвінків)?
  4. Чи дізнається жертва, що у неї викрали аккаунт?
  5. Якщо атакуючий напише від імені жертви кому-небудь з її контактів, чи зможе співрозмовник зрозуміти, що йому пишуть з викраденого аккаунта? Або що «щось не так»?

Короткі результати експерименту:

Для експерименту ми використовували смартфон Google Nexus 5x на Adnroid 6 Для експерименту ми використовували смартфон Google Nexus 5x на Adnroid 6.0.1, звичайний телефон Nokia 1280 для отримання SMS і iPhone 4s на iOS 9.3.1.

Зловмисник отримує доступ до SMS жертви і викрадає аккаунт

Важливо зрозуміти, що потрібно для авторизації: щоб сім-карта з цим номером була активна в момент авторизації в цьому пристрої - або досить будь-яким способом отримати доступ до вмісту SMS і вручну ввести код підтвердження.

Отже, атакуючий встановив собі на Android-смартфон все месенджери, в цьому смартфоні НЕ встановлена ​​сім-карта з номером жертви. Сім-карта жертви знаходиться в телефоні Nokia 1280.

Атакуючий у себе на смартфоні вказує номер телефону жертви і намагається увійти в додаток:

WhatsApp дозволяє вручну ввести код підтвердження, отриманий через SMS на Nokia, і атакуючий успішно жене аккаунт жертви

Telegram дозволяє вручну ввести код підтвердження, і атакуючий успішно жене аккаунт жертви

Telegram, якщо була включена двухфакторная авторизація, дозволяє вручну ввести код підтвердження, і атакуючий успішно жене аккаунт жертви (подробиці - в розділі про непрацюючої двухфакторной авторизації в Telegram)

Signal не дозволяє вручну ввести код підтвердження в додатку на Android, але дозволяє в додатку на iOS (про це нижче). На Android додаток вимагає автоматичного поттягіванія коду з SMS або отримання його через телефонний дзвінок. При цьому якщо переслати отриману SMS з Nokia на Android, то Signal код підтвердження з такою SMS не «дізнається».

Якщо атакуючий може прийняти телефонний дзвінок на номер жертви, то під час дзвінка робот продиктує код підтвердження, який додаток Signal на Android запропонує йому ввести вручну. Тобто Signal на Android не дозволяє вручну ввести код підтвердження з SMS, але дозволяє вручну ввести код підтвердження, отриманий через телефонний дзвінок.

Якщо атакуючий не може прийняти телефонний дзвінок, існує інше рішення: спробувати ні з Android, а з iPhone - Signal для iPhone дозволяє ввести код підтвердження вручну, і SMS виглядає по-іншому:

Саме для цього нам знадобився iPhone. Надалі в ході експерименту ми для зручності використовуємо Android (зареєструвалися через телефонний дзвінок на Nokia 1280).

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

Яку інформацію при цьому отримує атакуючий

  • WhatsApp: ніяку, «голий» аккаунт.
  • Telegram: всі контакти з несекретних чатів, всю переписку з несекретних чатів. Із секретних чатів не отримує нічого.
  • Telegram (при активній двухфакторной авторизації): ніяку, «голий» аккаунт.
  • Signal: ніяку, «голий» аккаунт.

Що при цьому бачить жертва і чи розуміє, що її аккаунт викрали

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

WhatsApp при цьому пропонує жертві «верифікувати», тобто активувати додаток на своєму телефоні знову. Якщо жертва здатна отримувати SMS на свій номер, вона може «верифікувати» - і тоді атакуючого, в свою чергу, викине з системи (деактивує аккаунт на його телефоні). Одночасно з жертвою атакуючий не зможе користуватися цим обліковим записом:

Одночасно з жертвою атакуючий не зможе користуватися цим обліковим записом:

Telegram: жертва бачить повідомлення про вхід в свій аккаунт з іншого пристрою, інструкцію як завершити Telegram-сесію на пристрої атакуючого, а також пропозицію включити двухфакторную авторизацію. Перед цим жертва також отримає код для входу, так як при вході з нового пристрою Telegram спочатку відправляє код на інші додатки у вигляді сервісного повідомлення, а вже потім (якщо натиснути на «Did not get the code?») Через SMS:

») Через SMS:

Telegram, якщо була включена двухфакторная авторизація: жертва бачить додаток таким, яким воно було при установці. Вітальний екран розповідає про Telegram і пропонує зареєструватися або увійти в уже існуючий акаунт:

Вітальний екран розповідає про Telegram і пропонує зареєструватися або увійти в уже існуючий акаунт:

Signal: жертва нічого не бачить, але при цьому не може відправляти повідомлення. При спробі відправити повідомлення жертва бачить помилку:

При спробі відправити повідомлення жертва бачить помилку:

Натиснувши на повідомлення для перегляду подробиць, жертва теж не побачить ніяких пояснень чому повідомлення не надсилається. «Failed to send», і все. Більш того, жертву вводить в оману кнопка «RESEND», яка не працює знову і знову:

Більш того, жертву вводить в оману кнопка «RESEND», яка не працює знову і знову:

У Signal, як і у WhatsApp, на один номер телефону одночасно може бути зареєстровано лише один додаток (веб-версія не береться до уваги, це «приєднане» пристрій, а не окремий основний вхід в систему), про це можна почитати на сайті розробника.

Тобто коли атакуючий успішно жене аккаунт жертви, Signal жертви перестає працювати ( «йде в офлайн») - але ніяк про це жертві прямо не повідомляє (на відміну від WhatsApp), а замість цього видає помилки при спробі відправити повідомлення. Ці помилки ідентичні тим, які бачить користувач при проблемах з підключенням до мережі.

Для порівняння: якщо у користувача WhatsApp викрали аккаунт, він не може подивитися свою переписку в чатах, контакти, історію дзвінків - нічого, тільки пропозиція «верифікувати». Для користувача все виглядає так, ніби він тільки що з нуля встановив WhatsApp собі на пристрій. Якщо у користувача Telegram з включеною двухфакторной авторизацією викрали аккаунт, для нього все виглядає так само: ніби він тільки що з нуля встановив додаток Telegram собі на пристрій.

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

Атакуючий від імені жертви пише співрозмовнику жертви - чи побачить співрозмовник, що «щось не так»?

WhatsApp: при настройках за умовчанням співрозмовник нічого не бачить. Якщо ж співрозмовник у себе в налаштуваннях включить «Show security notifications» (Settings => Account => Security => Show security notifications), то побачить в тому ж чаті попередження про те, що у співрозмовника змінився «код безпеки»:

Якщо співрозмовник натисне на повідомлення про втрату чинності, то побачить подробиці - що, можливо, співрозмовник перевстановив додаток на своєму телефоні або ж змінив телефон; а також пропозицію верифікувати новий додаток співрозмовника:

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

Telegram, якщо була включена двухфакторная авторизація: співрозмовник побачить, що жертва знову зареєструвалася в Telegram (приєдналася до Telegram). Пізніше, через 12-16 годин, в старих чатах замість імені жертви буде вказано «Deleted Account»:

Signal: співрозмовник в тому ж чаті побачить повідомлення, що отримано повідомлення з невідомим ключем. І щоб побачити отримане повідомлення, потрібно натиснути на повідомлення:

Коли співрозмовник натисне на повідомлення, система змусить його верифікувати новий ключ - або ж просто «повірити» і прийняти його без перевірки. Варто відзначити, що більшість користувачів так і зроблять - просто приймуть новий ключ без перевірки:

Чи може жертва вбудованими в месенджер засобами запобігти викраденню свого аккаунта шляхом крадіжки даних з SMS

WhatsApp: ні, не може. Тут передбачена верифікація тільки через отримання SMS. Відповідно, у кого дані для входу з SMS - того і аккаунт.

Signal: ні, не може. Тут теж передбачена верифікація тільки через отримання SMS (або телефонний дзвінок).

Telegram: ні, не може. Включена двухфакторная авторизація не завадить атакуючому викрасти аккаунт. Детальніше про це в наступному розділі.

Чому двухфакторная авторизація в Telegram не працює, тобто не запобігає викрадення аккаунта

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

Якщо у жертви в Telegram включена двухфакторная авторизація, то у атакуючого відбувається наступне:

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

2. У цей момент жертва отримує системне повідомлення у себе в додатку (або додатках) Telegram:

3. Атакуючий натискає «Did not get the code?» І Telegram відправляє код через SMS:

4. Тут атакуючий вводить код з SMS і дізнається, що в налаштуваннях облікового запису включена двухфакторная авторизація і що йому потрібно ввести пароль (в даному випадку «10» це підказка для пароля, обрана при включенні двухфакторной):

5. Далі атакуючий прикидається, ніби він забув пароль - «Forgot password?». Тут атакуючому повідомляють, що код відновлення відправлений на електронну пошту (якщо жертва при включенні двухфакторной авторизації вказала адресу електронної пошти). Атакуючий не бачить адреси електронної пошти - він бачить лише те, що після «собачки»:

6. В цей момент жертва отримує код для скидання пароля на адресу електронної пошти (якщо вона вказала адресу електронної пошти при включенні двухфакторной авторизації):

7. Атакуючий натискає «ok» і бачить віконце, куди потрібно ввести код для скидання пароля, який був відправлений на електронну пошту. Тут атакуючий каже, що у нього проблеми з доступом до своєї пошти - «Having trouble accessing your e-mail?». Тоді Telegram пропонує «reset your account»:

8. Атакуючий натискає «ok» і бачить два варіанти - або ввести пароль, або натиснути «RESET MY ACCOUNT». Telegram пояснює, що при «перевстановлення» аккаунта загубиться вся переписка і файли з усіх чатів:

9. Атакуючий натискає «RESET MY ACCOUNT» і бачить попередження, що це дію неможливо буде скасувати і що при цьому всі повідомлення і чати будуть видалені:

10. Атакуючий натискає «RESET» і Telegram просить вказати ім'я для «переустановленного» аккаунта:

11. Власне, все, атакуючий успішно викрав аккаунт: він увійшов під номером телефону жертви і може писати від її імені повідомлення:

12. Жертва при цьому бачить додаток таким, яким воно було відразу після установки. Вітальний екран розповідає про Telegram і пропонує зареєструватися або увійти в уже існуючий акаунт:

13. Коли атакуючий пише від імені жертви кому-небудь з контактів жертви, цей контакт бачить, що жертва щойно приєдналася до Telegram (що підозріло), а також нове повідомлення (або повідомлення) в новому чаті від жертви. Через 12-16 годин контакт також побачить, що в старих чатах замість імені жертви вказано «Deleted Account»:

Якщо жертва має можливість отримувати SMS на цей номер телефону, вона може увійти в додаток Telegram на своєму пристрої. Якщо атакуючий на викраденому акаунті не включив двухфакторную авторизацію, жертва може увійти і в меню Settings => Privacy and Security => Active Sessions припинити всі інші сесії (тобто сесії атакуючого):

Якщо ж атакуючий на викраденому акаунті включив двухфакторную авторизацію - жертва, в свою чергу, таким же чином може «викрасти назад» свій аккаунт.

Виходить, що єдина користь від двухфакторной авторизації в Telegram - щоб атакуючий не отримав переписку зі звичайних (не таємно) чатів. Тобто Telegram з включеною двухфакторной авторизацією дає приблизно те ж саме, що Signal і WhatsApp забезпечують і так, без ніякої двухфакторной авторизації.

Павло Дуров, творець месенджера Telegram, сказав :

Рекомендації для користувачів

WhatsApp:

1. Обов'язково включити в настройках Settings => Account => Security => Show security notifications. Тоді ви будете отримувати системні повідомлення, якщо ваш співрозмовник напише вам з іншої програми або пристрою, - і зможете, запідозривши недобре, перевірити, чи дійсно ви спілкуєтеся з тим, з ким ви думаєте, чи це атакуючий пише від його імені. Для цього потрібно натиснути на повідомлення про зміну коду безпеки:

Далі потрібно натиснути «VERIFY»:

І верифікувати код безпеки вашого співрозмовника. Для цього попросіть співрозмовника теж відкрити екран верифікації коду безпеки вашого з ним розмови (з вашого чату йому потрібно перейти в Меню налаштувань - View contact - Encryption). Тут ви можете або відсканувати QR-код один одного, або звірити 60-ти значний номер (наприклад, просто зателефонувавши по телефону і по черзі зачитуючи один одному набори цифр):

2. Попросіть ваших співрозмовників зробити те ж саме - включити до появи повідомлення безпеки. А також завжди верифікувати коди безпеки, коли приходить таке повідомлення.

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

4. Напишіть розробникам WhatsApp, щоб вони зробили двухфакторную авторизацію ([email protected]).

Signal:

1. Якщо бачите в чаті повідомлення, що отримано повідомлення з невідомим ключем і Signal пропонує вам верифікувати його - обов'язково зробіть це. Будь-яким іншим способом зв'яжіться (зателефонуйте, наприклад) з вашим співрозмовником, запитаєте перевстановлювати він Signal, в ідеалі звірте відбитки ( «фінгерпрінт») ключів (в вашому поточному чаті потрібно натиснути на Меню => Conversation settings => Verify identity).

2. Попросіть співрозмовників робити те ж саме: якщо від вашого імені приходить повідомлення з невідомим ключем, вони повинні зв'язатися з вами і все з'ясувати.

3. Якщо при спробі відправити повідомлення ви бачите помилку - можливо, хтось інший зареєструвався в Signal з вашим номером телефону, а ваше поточне додаток «пішло в офлайн» (і Signal вам про це ніяк не повідомляє). Якщо кнопка «RESEND» не працює знову і знову, а видимих ​​проблем з підключенням до мережі у вас немає (працюють інші месенджери, пошта, відкриваються сайти в браузері), - найпростіше перевстановити Signal (видалити додаток і встановити знову) і зареєструватися заново.
Якщо після переустановлення і перереєстрації все запрацювало - запитайте у своїх контактів Хіба ж не писав їм хтось від вашого імені поки ви були «в офлайні».

4. Напишіть розробникам Signal, щоб вони зробили двухфакторную авторизацію.

5. Напишіть розробникам Signal, щоб вони зробили виразне повідомлення про те, що ваше поточне додаток «пішло в офлайн» через те, що хтось зареєстрував інший додаток з вашим номером телефону. І що до перереєстрації ваше додаток працювати не буде.

Telegram:

1. Увімкніть двухфакторную авторизацію: Settings => Privacy and Security => Two-Step Verification. Це не захистить ваш аккаунт від угону, але захистить вашу переписку з не таємно чатів від атакуючого.

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

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

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

5. Якщо бачите ще один секретний чат від якого-небудь співрозмовника, краще зв'язатися з ним будь-яким іншим способом і перевірити чи дійсно це він вам пише. В ідеалі, потрібно верифікувати співрозмовника секретного чату завжди (в вашому поточному секретному чаті потрібно натиснути на ім'я співрозмовника => Encryption Key). Те ж саме потрібно зробити якщо бачите, що ваш співрозмовник «приєднався до Telegram».

6. Попросіть співрозмовників робити те ж саме: якщо від вашого імені вони бачать ще один секретний чат, або що ви «приєдналися до Telegram» - нехай зв'яжуться з вами і все з'ясують.

7. Напишіть розробникам Telegram і попросіть зробити повідомлення про те, що співрозмовник пише з нової програми / пристрої.

8. Напишіть розробникам Telegram і попросіть зробити справжню двухфакторную авторизацію - таку, яка працює і яка не дозволить атакуючому викрасти ваш аккаунт.

Автор: Микола Костинян, тренер і консультант по цифровій безпеки

Помітілі помилку? Віділіть ее та натісніть Ctrl + Enter, щоб повідоміті нам.

Але наскільки це відповідає правді?
Чи може користувач вбудованими в месенджер засобами запобігти такій викрадення свого аккаунта?
Яку інформацію в результаті успішної атаки отримає атакуючий (контакти, вміст листування, історію дзвінків)?
Чи дізнається жертва, що у неї викрали аккаунт?
Якщо атакуючий напише від імені жертви кому-небудь з її контактів, чи зможе співрозмовник зрозуміти, що йому пишуть з викраденого аккаунта?
Або що «щось не так»?
Кщо натиснути на «Did not get the code?
Атакуючий від імені жертви пише співрозмовнику жертви - чи побачить співрозмовник, що «щось не так»?
3. Атакуючий натискає «Did not get the code?
5. Далі атакуючий прикидається, ніби він забув пароль - «Forgot password?

Новости