В сети Tor отключили 333 узла за перехват SSH-соединений и сбор данных
Выходные узлы использовались для перехвата SSH-соединений и сбора незашифрованного почтового трафика в сети Tor. Когда обнаруживший проблему исследователь сообщил о ней специалистам Tor Project, заражённые узлы запретили использовать для выхода из Tor, а затем все выявленные заражённые серверы отключили. Всего были отключены 333 узла.
Доступ к серверам злоумышленники получили в августе и незаметно установили Ebury — бэкдор для OpenSSH под Linux, который похищает учётные данные. Перехват соединений начался 2 октября.
Исследователь обнаружил атаку при попытке подключиться к своему серверу по SSH через Tor. Соединение перенаправили на чужой сервер. SSH-клиент предупредил о несовпадении ключа с сохранённым значением. Полученный ключ ED25519 имел отпечаток `SHA256:6baCZCPsl+AfQuujUS81fMEE/C7UeJ+AwjrImqmDB3E`. Клиент указал на две возможные причины: замену ключа сервера или атаку «человек посередине».
Заражённые узлы перенаправляли SSH-соединения через порт 22 на один из двенадцати серверов перехвата. При этом зашифрованные соединения с сайтами работали как обычно. Если пользователь игнорировал предупреждение и продолжал вход, злоумышленники получали его пароль, подключались к настоящему серверу и отслеживали все вводимые команды. Через отдельное соединение атакующие заражали этот сервер Ebury.
Чтобы найти остальные заражённые узлы, исследователь написал скрипт, поочерёдно выбирающий узлы Tor и устанавливающий через них SSH-соединение между двумя серверами исследователя. Из трёх тысяч проверенных узлов около десятка подменяли отпечаток SSH-ключа. Ещё 300 не подменяли ключ, но направляли соединения через те же серверы перехвата.
Для дальнейшей проверки специалист развернул SSH-приманку на базе sshesame. Подключения атакующих к ней позволили изучить их инструменты и команды. Для работы с SSH злоумышленники использовали Python-библиотеку Paramiko. Перед установкой Ebury они проверяли идентификатор пользователя, наличие `sudo` и возможность выполнить команду с повышенными правами без пароля. Затем пытались через `sudo` декодировать данные из Base64 и передать их интерпретатору Perl.
Помимо SSH-соединений, атакующие собирали незашифрованные данные из электронной почты. Для этого на заражённых узлах заблокировали ряд портов. Вечером 2 октября исследователь передал результаты специалистам Tor Network Health — подразделения, которое следит за состоянием сети. Узлы начали отключать спустя два дня, а заражённым присвоили флаг `BadExit`. После этого клиенты перестали использовать их для выхода из сети Tor.
5 октября злоумышленники перезапустили многие узлы. С присвоенным флагом `BadExit` они работали только как промежуточные. Часть выявленных заражённых узлов остановили операторы, остальные — сами атакующие. В уведомлении Tor Network Health также описана смена настроек на захваченных Linux-серверах. Если узел Tor не был выходным, злоумышленники меняли файл `torrc` и включали эту функцию. После этого узел использовали для атаки на SSH-соединения.
Отключение 333 узлов отразилось на статистике Tor. На графике metrics.torproject.org видно резкое падение числа выходных узлов 4 октября. На момент публикации исследования их количество не вернулось к прежнему уровню.
