Атака

2 октября в 09:35 утра 333 зараженных exit-узла начали координированную кампанию по перехвату SSH-соединений и сбору максимально возможного объёма незашифрованных данных.

Для масштаба: во всей сети Tor работает около 3000 exit-релеев, то есть примерно 10% были под контролем атакующих.

Доступ к серверам был получен двумя месяцами ранее, в августе, и тихо развёрнут бэкдор Ebury 1.8.3 — OpenSSH backdoor и тип stealer для Linux.

Атака преследовала два основных направления:

  1. Сбор максимально возможного объёма незашифрованного трафика почты
  2. Перехват SSH-соединений (MITM)

Блокировав определённые порты, они сделали свои exit-узлы обработчиками только незашифрованного трафика почты. Подробный анализ одного из пострадавших (опытного оператора Tor релеев) освещает это в деталях.

В этом посте основное внимание уделяется второй атаке — SSH MITM. Если в цепи окажется один из тех 333 зараженных exit-узлов, ничего подозрительного на первый взгляд не произойдёт. Зашифрованный веб-трафик передаётся как обычно, но при попытке SSH-соединения на порте 22 соединение незаметно перенаправляется на один из 12 серверов перехвата SSH.

Инфраструктура атакующих

Именно это произошло со мной в пятницу утром. SSH-соединение было перенаправлено, и я получил такое предупреждение:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:6baCZCPsl+AfQuujUS81fMEE/C7UeJ+AwjrImqmDB3E.
Please contact your system administrator.

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

  1. Крадёт пароль
  2. Открывает соединение с вашим сервером и наблюдает каждую вводимую команду (MITM)
  3. Открывает второе соединение с вашим сервером и заражает его Ebury

Как они были удалены

В пятницу вечером исследователь связался с командой сетевого здоровья Tor Project с найденными данными. Команда подтвердила, что это была новая атака, и начала работу, связавшись с операторами поражённых релеев.

«Такой атаки мы раньше не видели»
— Команда сетевого здоровья Tor
Злокачественные exit-узлы Tor переходят в оффлайн

Хронология событий:

  1. Пт, 2 октября: начало перехвата.
  2. Вс, 4 октября: команда сетевого здоровья опубликовала объявление операторам, те начали отключать свои exit-узлы.
  3. Вс, 4 октября: релеям был присвоен флаг BadExit, клиенты перестали использовать их для выхода трафика.
  4. Пн, 5 октября: атакующие перезапустили множество релеев, но поскольку они уже были отмечены флагом, могли работать только как middle-релеи.
  5. Пн, 5 октября: все заражённые серверы были отключены — частично операторами, частично самими атакующими.

В своём объявлении команда здоровья описала закономерность:

«Похоже, атакующий получает доступ к хостам на Linux и, когда эти машины не работают как exit-узлы, редактирует файл torrc, превращая их в exit-узлы для проведения SSH-атаки»
— Tor Network Health в объявлении

Влияние 333 выключенных exit-узлов хорошо видно на графиках. На metrics.torproject.org чётко заметен спад 4 октября, который так и не восстановился с тех пор.

Количество exit-узлов Tor снижается

Рассмотрите возможность запуска релея: community.torproject.org/relay/setup/

Технические детали: как я их нашёл

С помощью exitmap был написан простой скрипт, который:

  1. Закреплял exit-узел
  2. Открывал SSH-соединение с сервера A на сервер B
  • Сервер A проверял, получен ли от сервера B корректный SSH-отпечаток
  • Сервер B проверял, пришло ли соединение с закреплённого exit-узла или с одного из 12 серверов перехвата SSH

Скрипт был запущен против примерно 3000 exit-релеев. Около дюжины выдали поддельный отпечаток, более 300 не перехватывали, но перенаправляли трафик через те же 12 серверов перехвата. Самого перенаправления было достаточно, чтобы подтвердить заражение узла.

При дальнейшем анализе использовался sshesame как honeypot. Обман MITM так, чтобы тот вошёл в honeypot, показал использование paramiko (Python SSH библиотеки) и попытку установки Ebury через Perl:

> echo "U=$(id -u) S=$(command -v sudo >/dev/null 2>&1 && (sudo -n true 2>/dev/null && echo nopass || echo maybe) || echo none)"
> sudo bash -c 'echo <base64> | base64 -d | perl'

Сначала проверка прав доступа, потом выполнение base64-закодированной команды.

Открытые вопросы

Самый большой вопрос — как они вообще получили доступ к этим серверам. Одна из теорий предполагает, что сама компания хостинга была скомпрометирована (обсуждается здесь), но это только теория. На самом деле никто не знает.

Второй вопрос — кто стоит за атакой. Использование Ebury и масштабный сбор незашифрованных данных указывают на финансово мотивированную преступную группировку. Но и это просто предположение.

«Учитывая, что Ebury распространялась на 400 000 серверов с 2009 по 2023 год, весьма вероятно, что там могут быть и другие скомпрометированные Tor-релеи»
— Marc-Etienne M. Léveillé (lists.torproject.org)

Также есть подозрение, что атака была намеренно запущена в пятницу в надежде, что никто не захочет портить выходной для реагирования. Тем больше уважения к команде Tor, что они среагировали так быстро!

Выводы

Урок остаётся тем же, что всегда: дополнительная безопасность — это стоящее вложение. Отключите аутентификацию по паролям в пользу SSH-ключей. Сам обязательно куплю себе аппаратный ключ. :)

«В конечном счёте, релеи и бриджи нужно рассматривать как высоконацеленные production-машины»
— George (lists.torproject.org)