Сканер портов в личном кабинете Ростелекома

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

А теперь, собственно детали.

Придя утром на работу, я обнаружил в логе системы замечательные строчки от VNC:

Connections: rejecting blacklisted connection: 127.0.0.1::22715

Т.е. кто-то с локалхоста пытается залезть на порт 5900, значит это вирус или ещё что-то похуже. Конечно же, меня пробил холодный пот, и я пошёл искать данного вредителя. Быстрый анализ показал, что долбёжка идёт каждые 10 минут и делается 11 попыток подключиться. Осталось выяснить, кто это делает.

Раз коннекшен блокируется, надо сделать так, чтобы кто-то сидел на нём. Самый простой способ для меня оказался в том, чтобы поднять на ноде интеллектуальный tcp-сервер, который ничего не делает и просто держит соединение.

server.listen(5900, function () {});
Посмотрел, кто туда подключился, оказалось, что это Firefox:

Дальше я пошёл выяснять, какой же из табов или расширений фаерфокса это делает. Оказалось, что ни about:peformance, ни about:networking не показывают id процесса, который может делать сетевые запросы. Зато я выяснил, что это основной процесс браузера, а не дополнительный для вкладок или расширений, что затруднило выяснение вредителя (да, у меня как всегда открыта куча вкладок и найти нужную — достаточно тяжело).

Но с помощью терпения, я нашёл замечательную вкладку, в девелоперской консоли которой оказались замечательные строчки:

И этой вкладкой оказался Личный кабинет Ростелекома. После этого выяснилось, что запросы идут следующего вида:

14 достаточно интересных портов:

Порт
Описание

5900
VNC

6900
Bittorrent

5650
Pizza trojan

5931
?

5938
TeamViewer

5939
?

3389
RDP

8080
HTTP

51
F**k Lamers Backdoor

443
HTTPS

80
HTTP

22
SSH

445
SMB

5985
Microsoft Windows Remote Management

Большинство портов — это средства для удалённого управления компьютером. Выходит, далее следует ожидать попыток проникновения на эти порты снаружи. Зачем это может быть?

У меня в голове следующие варианты:

  • Личный кабинет взломан, и идёт попытка выяснить уязвимые компьютеры и подсадить пользователю троян
  • Это осознанное решение Ростелекома и попытка сделать что-то нехорошее пользователю
  • Это осознанное решение Ростелекома и попытка собрать данные о пользователе
  • При этом мой компьютер не находится в сети Ростелекома, так что данные действия выглядят весьма и весьма грязно.

    UPD: Дополнение от sashablashenkov
    Судя по этой странице, это какой-то Dynatrace Real user monitoring

    Dynatrace is the only vendor to capture the full visibility of customer experience across every digital transaction. No sampling of data, Dynatrace gives you a complete picture, from the frontend to the backend.
    Monitor user journeys
    Replay individual customer transactions for rapid problem handling
    Dynatrace provides a single problem notification that identifies the root cause of the problem
    Identify and resolve technical issues proactively

    Но зачем оно сканирует порты — не понять

    UPD2: runalsh уточнил, что это не Dynatrace, а group-ib

    Ещё немножко деталей. Скрипт находится по адресу:

    https://lk.rt.ru/ruxitagentjs_ICA2SVfhqrux_10169190521113456.js

    Т.е. это не какие-то внешние счётчики или аналитика, а собственный скрипт.

    Данный скрипт обфусцирован и функция, обращающаяся к портам выглядит как-то так:

    Aa: function () {
    var a = this.Tg();
    this.Qh(a);
    for (var e = 0; e < this.Ye.length; e++) (function (c, f) {
    if (!d.F.N(f.Gg, c) || !d.T.jh() || d.T.wb() || d.T.dc()) {
    var e = (new Date).getTime(),
    g = d.D.mb(Oa(1939), window.location[Ma(1402)] + $e(1358) + c),
    k;
    g.then(function () {
    clearTimeout(k);
    f.Ec(c, ua(1117), (new Date).getTime() — e, a)
    }).then(void 0, function () {
    clearTimeout(k);
    f.wc[c] ? delete f.wc[c] : f.Ec(c, Lb(1430), (new Date).getTime() — e, a)
    });
    k = G(function () {
    f.wc[c] = !0;
    g.te().abort();
    f.Ec(c, Mc(1251), (new Date).getTime() — e, a)
    }, f.$e || 10000)
    }
    }) (this.Ye[e], this)
    },
    В массиве Ye, как раз и содержатся данные 14 портов, инициализируется он таким образом:

    this.Ye = b[Uh(1218)];
    Т.е. кроме минификации, в Ростелекоме добавили ещё и обфускацию, значит они подозревали, что делают что-то не очень хорошее, и надо бы это скрыть.

    Что с этим делать дальше, я не знаю. Понятно, что стоит настроить браузеры для защиты от подобного (удивительно, но Firefox почему-то пропустил порт 5900, хотя решил заблокировать другие). Писать в Ростелеком — смысла нет, ибо ответы у них всегда однотипные и не отличаются какой-то разумностью.

    Ну а всем остальным знать, что сканирование портов может быть не только на подозрительных сайтах, но и таких приличных, как Ростелеком.

    Оставить комментарий