Как понять, что ваш Telegram взломали
Эксперт компании «Лаборатория Касперского» Дмитрий Галов рассказал, как понять, взломан ли ваш аккаунт в мессенджере Telegram.
По его словам, для проверки в мессенджере нужно зайти в настройки, выбрать «Устройства», а затем «Активные сеансы». Эксперт подчеркнул, что это поможет увидеть чужие устройства, с которых заходили в ваш аккаунт, если это произошло.
Галов также посоветовал установить код-пароль для входа в Telegram, а на айфонах — Touch ID или Face ID. Кроме того, дополнительную безопасность может обеспечить включение двухфакторной аутентификации. «При обнаружении неизвестного или подозрительного устройства нужно завершить эту сессию и сменить пароль, если он был установлен», — порекомендовал специалист.
Как злоумышленники могут читать вашу переписку в Telegram. И как им в этом помешать
В конце 2019 года в отдел расследований киберпреступлений Group-IB обратились несколько российских предпринимателей, которые столкнулись с проблемой несанкционированного доступа неизвестных к их переписке в мессенджере Telegram. Инциденты происходили на устройствах iOS и Android, независимо от того клиентом какого федерального оператора сотовой связи являлся пострадавший.
Атака начиналась с того, что в мессенджер Telegram пользователю приходило сообщение от сервисного канала Telegram (это официальный канал мессенджера с синей галочкой верификации) с кодом подтверждения, который пользователь не запрашивал. После этого на смартфон жертвы падало СМС с кодом активации — и практически сразу же в сервисный канал Telegram приходило уведомление о том, что в аккаунт был произведен вход с нового устройства.

Во всех случаях, о которых известно Group-IB, злоумышленники заходили в чужой аккаунт через мобильный интернет (вероятно, использовались одноразовые сим-карты), а IP-адрес атакующих в большинстве случаев находился в Самаре.
Доступ под заказ
Исследование Лаборатории компьютерной криминалистики Group-IB, куда были переданы электронные устройства пострадавших, показало, что техника не была заражена шпионской вредоносной программой или банковским трояном, учетные записи не взломаны, подмены SIM-карты произведено не было. Во всех случаях злоумышленники получали доступ к мессенджеру жертвы с помощью СМС-кодов, получаемых при входе в аккаунт с нового устройства.
Эта процедура выглядит следующим образом: при активации мессенджера на новом устройстве, Telegram отправляет код через сервисный канал на все устройства пользователя, а потом уже (по запросу) на телефон уходит СМС-сообщение. Зная об этом, злоумышленники сами инициируют запрос на отправку мессенджером СМС с кодом активации, перехватывают это СМС и используют полученный код для успешной авторизации в мессенджере.
Таким образом, атакующие получают нелегальный доступ ко всем текущим чатам, кроме секретных, а также к истории переписки в этих чатах, в том числе к файлам и фотографиям, которые в них пересылались. Обнаружив это, легальный пользователь Telegram может принудительно завершить сессию злоумышленника. Благодаря реализованному механизму защиты обратного произойти не может, злоумышленник не может завершить более старые сессии настоящего пользователя в течении 24 часов. Поэтому важно вовремя обнаружить постороннюю сессию и завершить её, чтобы не потерять доступ к аккаунту. Специалисты Group-IB направили уведомление команде Telegram о своем исследовании ситуации.
Изучение инцидентов продолжается, и на данный момент точно не установлено, какая именно схема использовалась для обхода фактора СМС. В разное время исследователи приводили примеры перехвата СМС с помощью атак на протоколы SS7 или Diameter, используемые в мобильных сетях. Теоретически подобные атаки могут быть реализованы с нелегальным использованием специальных технических средств или инсайда в операторах сотовой связи. В частности, на хакерских форумах в Даркнете свежие объявления с предложениями взлома различных мессенджеров, в том числе и Telegram.

«Специалисты в разных странах, в том числе и в России, неоднократно заявляли о том, что социальные сети, мобильный банкинг и мессенджеры можно взломать с помощью уязвимости в протоколе SS7, однако это были единичные случаи целенаправленных атак или экспериментальных исследований, — комментирует Сергей Лупанин, руководитель отдела расследований киберпреступлений Group-IB, — В серии новых инцидентов, которых уже более 10, очевидно желание атакующих поставить этот способ заработка на поток. Для того, чтобы этого не произошло, необходимо повышать собственный уровень цифровой гигиены: как минимум использовать двухфакторную аутентификацию везде, где возможно, и добавлять к СМС обязательный второй фактор, что функционально заложено в том же Telegram».
Как защититься?
1. В Telegram уже реализованы все необходимые опции кибербезопасности, которые сведут усилия атакующих на нет.
2. На устройствах iOS и Android для Telegram необходимо перейти в настройки Telegram, выбрать вкладку «Конфиденциальность» и назначить «Облачный пароль\Двухшаговую проверку» или «Two step verification». Детальное описание по включению этой опции дано в инструкции на официальном сайте мессенджера: telegram.org/blog/sessions-and-2-step-verification (https://telegram.org/blog/sessions-and-2-step-verification)

3. Важно не устанавливать адрес электронной почты для восстановления этого пароля, поскольку, как правило, восстановление пароля к электронной почте тоже происходит через СМС. Аналогичным образом можно повысить защиту аккаунта в WhatsApp.
Что такое лог (log) программы.
Решая различные компьютерные задачи, можно не раз столкнуться с таким понятием как лог (с англ. log). Лог какой-то программы. Давайте попробуем разобраться что это такое и для чего это нужно.
Log (с англ. журнал). У большинства программ, которые установлены на вашем компьютере, есть этот самый журнал.
Журнал — это специальный текстовый файл, в который программа может вносить какие-то записи.
Т.е. это такой же обычный файл, который мы с вами можем создать на компьютере. Таким же образом программа работая на компьютере, может создать этот файл и вносить туда программным образом какие-то текстовые пометки.
Зачем же программе вести какие-то записи, какой-то журнал?
Дело в том, что если мы с вами будем следить за человеком, который работает на компьютере, мы можем сказать, что этот человек делал в конкретный момент времени, какие программы он запускал, какие ошибки он совершал при работе на компьютере и.т.д.
Но, если мы говорим о компьютерной программе, здесь все не так ясно. Все действия, которые производит программа, они скрыты от взгляда обычного пользователя. Они обычно происходят с такой большой скоростью событий, что человеческий глаз просто не успеет за все этим уследить.
Для того, чтобы отслеживать состояние какой-то программы. Что делала программа в какой-то конкретный момент времени, какие при этом возникали ошибки, кто с этой программой взаимодействовал и др. вопросы. Все события, которые происходили с этой программой, эта программа может записывать в специальный журнал, так называемый лог-файл.
Лог файлов для программы может быть несколько. В зависимости от назначения может быть так называемый access_log — это журнал, где фиксируются все взаимодействия пользователей с этой программой, что они делали и.т.д.
В лог файле может множество записей. Каждая текстовая строка — это одно взаимодействие с программой.
В каждой записи содержится информация о том, что происходило с программой и когда это происходило.
Также можно часто встретить так называемый error_log — это лог тех ошибок, которые возникали при работе с программой. В этом логе можно увидеть код ошибки, которая произошла в программе, когда эта ошибка произошла, каким пользователем операционной системы эта ошибка была вызвана и.т.д.
Давайте подведем итог, что такое лог и зачем он нужен. Это текстовый файл, в который программа записывает какие-то события, которые с ней происходят. Благодаря этим событиям мы можем получить какую-то дополнительную информацию, что происходило с этой программой в какой-то определенный момент времени, получить отладочную информацию, чтобы легче устранить какую-то ошибку.
В общем лог — это бесценная информация, который может воспользоваться любой пользователь компьютера, чтобы узнать что и в какой момент времени происходило с программой.
Лог — это первоисточник, в который нужно заглядывать если ваша программа работает с каким-то ошибками и не так, как нужно.
Надеюсь, что стало понятнее что такое лог-файл и зачем он нужен и вы теперь будете использовать этот журнал в своей работе.
Логирование в телеграм, или история о том, как я сделал питон библиотеку
Модуль logging в питоне — это мощный инструмент в разработке. Он помогает отследить ошибки, наблюдать за работой приложения и даже собирать статистику об использовании вашего сервиса. В этой статье я расскажу, как можно расширить возможности этого модуля и причем тут телеграмм.

Intro
Давным-давно, а точнее несколько месяцев назад, накануне Нового года, я сидел дома и решал задачу по машинному обучению. Связана она была с нейронными сетями и классификацией текстов, поэтому я естественно пользовался бесплатным GPU от гугла (colab). За окном шел снег, а модели обучались ну уж очень долго. Обучать модель оставалось всего несколько минут, как вдруг появляется уведомление, что подключение к runtime потеряно, а это значит, что обученную модель и сабмиты из этого runtime скачать я не смогу, и все придется начинать заново.

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

Копировал я этот код из ноутбука (jupyter notebook) в ноутбук, а потом осознал, что это можно встроить в модуль logging и завернуть в библиотеку, чтобы не таскать каждый раз большие куски кода, а использовать всего пару строк.
Logging.handlers
Понятно было, что за основу надо взять модуль для логирования, встроенный в питон. Очевидно, потому что изобретать свой велосипед мне не хотелось, а еще потому что, для использования в приложениях пришлось бы переписывать весь код логирования. Надо было найти способ перехватывать логи, и пересылать их в телеграмм. К счастью, в logging есть такой класс, как StreamHandler. Не буду вдаваться в подробности, но с помощью него можно сделать свою функцию, которая будет запускаться для каждой новой строки в логах и отправлять ее в телеграмм.
Tg-logger
И вот, держа в голове все вышеописанные идеи, я отправился писать свою библиотеку. Вот, что получилось.
Для тех, кому лень запускать код, но хочется понять, как это будет работать, я сделал бота @tg_logger_demo_bot.

Чтобы воспользоваться библиотекой нужно:
- создать телеграмм бота (как это сделать описано здесь)
- получить свой user_id (это можно сделать через @tg_logger_demo_bot с помощью команды /id )
Установим библиотеку через pip.
pip install tg-logger
Рассмотрим код примера
import logging import tg_logger # Telegram data token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" users = [1111111111] # Base logger logger = logging.getLogger('foo') logger.setLevel(logging.INFO) # Logging bridge setup tg_logger.setup(logger, token=token, users=users) # Test logger.info("Hello from tg_logger by otter18")
Особо интересна для нас строка, в которой подключается логирование в телеграмм.
# Logging bridge setup tg_logger.setup(logger, token=token, users=users)
В функцию setup() нужно просто передать тот logger, к которому вы хотите подключить мост. Если заглянуть в документацию, то можно посмотреть на другие параметры функции setup(). С помощью них можно, в частности, настроить формат, в котором логи будут отправлены.

TgFileLogger
Стоит также упомянуть, что функцию отправки файлов я тоже добавил.
import tg_logger # Telegram data token = "1234567890:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" users = [1111111111] # TgFileLogger example tg_files_logger = tg_logger.TgFileLogger( token=token, # tg bot token users=users, # list of user_id timeout=10 # 10 seconds by default ) file_name = "test.txt" with open(file_name, 'w') as example_file: example_file.write("Hello from tg_logger by otter18") tg_files_logger.send(file_name, "Test file")

Outro
- Весь исходный код есть на гитхабе: github.com/otter18/tg_logger.
- Документация на английском есть на Read the Docs.
- Библиотека доступна для скачивания через pip: pypi.org/project/tg-logger/.
