Главная » Хабрахабр » [Из песочницы] Критическая уязвимость серверов 1Cloud

[Из песочницы] Критическая уязвимость серверов 1Cloud

Хотим поделиться своим опытом работы с серверами 1cloud. Мы не хотим никого обвинять, просто хотим выставить проблему на всеобщее обозрение, чтобы у сотрудников 1cloud появилась мотивация для проведения детального анализа данной проблемы.

Началось все с того, что последние месяцы на Windows серверах 1cloud, мы начали замечать аномальную нагрузку, но не придавали этому особого значения, так как Windows сервера в основном использовались для выполнения различных мелких задач типа использование браузера и любых других программ, да и особо не было желания выяснять что там и как.

Мы используем сервера 1cloud уже около 1. Но на днях произошла весьма неприятная и оскорбительная ситуация со стороны сотрудников 1cloud, которая подтолкнула нас на публикацию данной статьи. Я был неприятно удивлен, когда зашел в аккаунт и увидел, что все 40 наших серверов заблокированы с пометкой «Сервер заблокирован администратором. 5-2х лет, правила использования серверов не нарушали. Собрался писать в сапорт и увидел новое сообщение от службы техподдержки, в котором было сказано:
Причина блокировки: брутфорс.».

Здравствуйте.

111. С Вашего сервера IP 111. 111 зафиксирована аномальная сетевая активность: попытки подключения к большому количеству произвольных серверов по порту 22 (SSH)
Возможно, сервер был взломан. 11. Вам необходимо оперативно устранить проблему.

В случае отсутствия реакции по данному обращению сервер будет отключен от сети.

Из-за ошибки сотрудника или из-за каких-либо проблем с системой управления серверами, были выключены все 40 серверов вместо одного проблемного, и они были недоступны в течение суток. От саппорта поступило сообщение следующего содержания:

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

Это конечно неприятная ситуация, но бывает, подумал я, и мы начали разбираться в проблеме, из-за которой сервера были блокированы. Сервера автоматически не включились, как нам обещали, и мне пришлось вручную запускать все сервера, но это мелочь по сравнению с основной проблемой. Залогинились на сервер, и сразу заметили странность, что по ssh мы подключались в последний раз 20го августа, а различные вредоносные файлы были залиты на сервер 21го и 22го числа. Как оказалось, во время создания каждого сервера на 1cloud, добавляется какой-то сомнительный пользователь «user», в папке которого в дальнейшем начала появляться куча вредоносных файлов, включая майнер xrig.

image

Сотрудник техподдержки пытался отрицать, что пользователь «user» добавляется автоматически при создании сервера, и утверждал, что они к этому не имеют никакого отношения. Начали звонить в сапорт, объяснили ситуацию, спросили, что за пользователь «user» добавляется при создании сервера и что в его папках делают вредоносные файлы. Сотрудник техподдержки не смог дать внятного ответа, откуда на вновь созданном сервере по умолчанию появился пользователь «user». Мы создали новый сервер для теста, на котором так же уже сразу присутствовал пользователь «user», но пока без вредоносных файлов, так как инджектят вредоносное ПО на сервер не сразу, а через сутки или более.

Сразу хотел бы уточнить, что клиентам 1cloud не выдают пароль от пользователя «user», более того сотрудник техподдержки мне упорно доказывал, что даже такого пользователя на их серверах нет и никогда не было, хотя мы видели таких пользователей на всех серверах на протяжении всего периода использования серверов. Полезли смотреть логи, оказалось, что кто-то, зная пароль, подконнектился к пользователю «user», и залил на сервер вредоносные файлы для майнинга и брутфорса.

В первые дни после создания сервера кто-то подключается к нему через пользователя «user», зная при этом его пароль, и получает контроль над Вашим сервером. Мы считаем, и все указывает на то, что кто-то из сотрудников 1cloud (очень надеюсь, что не руководство), начал промышлять черными делами, устанавливая майнеры и вредоносное ПО на сервера своих клиентов, за которые между прочим мы платим деньги. Перед тем как войти на сервер под пользователем «user», по логам видна попытка однократного подключения к пользователям user, admin, ubuntu, ubnt, test и osmc, а затем успешная авторизация через пользователя «user». Возможно это брут, скажете вы, но нет, к сожалению, по логам видно, что это не брут, а именно обычная авторизация без подбора паролей.

135. Aug 20 03:46:59 debian8x64 sshd[1328]: Invalid user test from 219. 144
Aug 20 03:46:59 debian8x64 sshd[1328]: input_userauth_request: invalid user test [preauth]Aug 20 03:46:59 debian8x64 sshd[1328]: pam_unix(sshd:auth): check pass; user unknown
Aug 20 03:46:59 debian8x64 sshd[1328]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 136. 136. 135. 135. 144
Aug 20 03:47:02 debian8x64 sshd[1328]: Failed password for invalid user test from 219. 144 port 1072 ssh2
Aug 20 03:47:02 debian8x64 sshd[1328]: Connection closed by 219. 136. 136. 135. 136. 144 [preauth]Aug 20 03:47:03 debian8x64 sshd[1330]: reverse mapping checking getaddrinfo for 144. 219.broad.gz.gd.dynamic. 135. 135. 163data.com.cn [219. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:03 debian8x64 sshd[1330]: Invalid user debian from 219. 136. 136. 135. 135. 144
Aug 20 03:47:03 debian8x64 sshd[1330]: input_userauth_request: invalid user debian [preauth]Aug 20 03:47:03 debian8x64 sshd[1330]: pam_unix(sshd:auth): check pass; user unknown
Aug 20 03:47:03 debian8x64 sshd[1330]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 144
Aug 20 03:47:05 debian8x64 sshd[1330]: Failed password for invalid user debian from 219. 136. 136. 135. 135. 144 port 8178 ssh2
Aug 20 03:47:05 debian8x64 sshd[1330]: Connection closed by 219. 144 [preauth]Aug 20 03:47:06 debian8x64 sshd[1332]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:07 debian8x64 sshd[1332]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 144 user=root
Aug 20 03:47:09 debian8x64 sshd[1332]: Failed password for root from 219. 136. 136. 135. 135. 144 port 14224 ssh2
Aug 20 03:47:09 debian8x64 sshd[1332]: Connection closed by 219. 144 [preauth]Aug 20 03:47:10 debian8x64 sshd[1334]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:10 debian8x64 sshd[1334]: Invalid user debian from 219. 144
Aug 20 03:47:10 debian8x64 sshd[1334]: input_userauth_request: invalid user debian [preauth]Aug 20 03:47:11 debian8x64 sshd[1334]: pam_unix(sshd:auth): check pass; user unknown
Aug 20 03:47:11 debian8x64 sshd[1334]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 136. 136. 135. 135. 144
Aug 20 03:47:13 debian8x64 sshd[1334]: Failed password for invalid user debian from 219. 144 port 21466 ssh2
Aug 20 03:47:13 debian8x64 sshd[1334]: Connection closed by 219. 136. 136. 135. 136. 144 [preauth]Aug 20 03:47:15 debian8x64 sshd[1336]: reverse mapping checking getaddrinfo for 144. 219.broad.gz.gd.dynamic. 135. 135. 163data.com.cn [219. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:15 debian8x64 sshd[1336]: Invalid user osmc from 219. 136. 136. 135. 135. 144
Aug 20 03:47:15 debian8x64 sshd[1336]: input_userauth_request: invalid user osmc [preauth]Aug 20 03:47:15 debian8x64 sshd[1336]: pam_unix(sshd:auth): check pass; user unknown
Aug 20 03:47:15 debian8x64 sshd[1336]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 144
Aug 20 03:47:16 debian8x64 sshd[1336]: Failed password for invalid user osmc from 219. 136. 136. 135. 135. 144 port 28516 ssh2
Aug 20 03:47:17 debian8x64 sshd[1336]: Connection closed by 219. 144 [preauth]Aug 20 03:47:18 debian8x64 sshd[1338]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:18 debian8x64 sshd[1338]: Invalid user ubnt from 219. 144
Aug 20 03:47:18 debian8x64 sshd[1338]: input_userauth_request: invalid user ubnt [preauth]Aug 20 03:47:18 debian8x64 sshd[1338]: pam_unix(sshd:auth): check pass; user unknown
Aug 20 03:47:18 debian8x64 sshd[1338]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 136. 136. 135. 135. 144
Aug 20 03:47:20 debian8x64 sshd[1338]: Failed password for invalid user ubnt from 219. 144 port 34656 ssh2
Aug 20 03:47:20 debian8x64 sshd[1338]: Connection closed by 219. 136. 136. 135. 136. 144 [preauth]Aug 20 03:47:22 debian8x64 sshd[1340]: reverse mapping checking getaddrinfo for 144. 219.broad.gz.gd.dynamic. 135. 135. 163data.com.cn [219. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:22 debian8x64 sshd[1340]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 136. 136. 135. 135. 144 user=root
Aug 20 03:47:24 debian8x64 sshd[1340]: Failed password for root from 219. 144 port 40882 ssh2
Aug 20 03:47:24 debian8x64 sshd[1340]: Connection closed by 219. 136. 136. 135. 136. 144 [preauth]Aug 20 03:47:25 debian8x64 sshd[1342]: reverse mapping checking getaddrinfo for 144. 219.broad.gz.gd.dynamic. 135. 135. 163data.com.cn [219. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:25 debian8x64 sshd[1342]: Invalid user admin from 219. 136. 136. 135. 135. 144
Aug 20 03:47:25 debian8x64 sshd[1342]: input_userauth_request: invalid user admin [preauth]Aug 20 03:47:26 debian8x64 sshd[1342]: Failed none for invalid user admin from 219. 144 port 47736 ssh2
Aug 20 03:47:26 debian8x64 sshd[1342]: Connection closed by 219. 136. 136. 135. 136. 144 [preauth]Aug 20 03:47:27 debian8x64 sshd[1344]: reverse mapping checking getaddrinfo for 144. 219.broad.gz.gd.dynamic. 135. 135. 163data.com.cn [219. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:27 debian8x64 sshd[1344]: Invalid user test from 219. 136. 136. 135. 135. 144
Aug 20 03:47:27 debian8x64 sshd[1344]: input_userauth_request: invalid user test [preauth]Aug 20 03:47:27 debian8x64 sshd[1344]: pam_unix(sshd:auth): check pass; user unknown
Aug 20 03:47:27 debian8x64 sshd[1344]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=219. 144
Aug 20 03:47:29 debian8x64 sshd[1344]: Failed password for invalid user test from 219. 136. 136. 135. 135. 144 port 50546 ssh2
Aug 20 03:47:29 debian8x64 sshd[1344]: Connection closed by 219. 144 [preauth]Aug 20 03:47:30 debian8x64 sshd[1346]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:31 debian8x64 sshd[1346]: Accepted password for user from 219. 144 port 56492 ssh2
Aug 20 03:47:31 debian8x64 sshd[1346]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:33 debian8x64 sshd[1350]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:33 debian8x64 sshd[1350]: Accepted password for user from 219. 144 port 60134 ssh2
Aug 20 03:47:33 debian8x64 sshd[1350]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:35 debian8x64 sshd[1354]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:35 debian8x64 sshd[1354]: Accepted password for user from 219. 144 port 4485 ssh2
Aug 20 03:47:35 debian8x64 sshd[1354]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:38 debian8x64 sshd[1358]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:38 debian8x64 sshd[1358]: Accepted password for user from 219. 144 port 9509 ssh2
Aug 20 03:47:38 debian8x64 sshd[1358]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:42 debian8x64 sshd[1362]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:42 debian8x64 sshd[1362]: Accepted password for user from 219. 144 port 15833 ssh2
Aug 20 03:47:42 debian8x64 sshd[1362]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:43 debian8x64 sshd[1346]: pam_unix(sshd:session): session closed for user user
Aug 20 03:47:44 debian8x64 sshd[1366]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:44 debian8x64 sshd[1366]: Accepted password for user from 219. 144 port 19619 ssh2
Aug 20 03:47:44 debian8x64 sshd[1366]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:46 debian8x64 sshd[1370]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:46 debian8x64 sshd[1370]: Accepted password for user from 219. 144 port 23935 ssh2
Aug 20 03:47:46 debian8x64 sshd[1370]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:48 debian8x64 sshd[1374]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:49 debian8x64 sshd[1374]: Accepted password for user from 219. 144 port 28277 ssh2
Aug 20 03:47:49 debian8x64 sshd[1374]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:51 debian8x64 sshd[1378]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:51 debian8x64 sshd[1378]: Accepted password for user from 219. 144 port 31735 ssh2
Aug 20 03:47:51 debian8x64 sshd[1378]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:53 debian8x64 sshd[1383]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:53 debian8x64 sshd[1383]: Accepted password for user from 219. 144 port 36097 ssh2
Aug 20 03:47:53 debian8x64 sshd[1383]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:47:55 debian8x64 sshd[1388]: reverse mapping checking getaddrinfo for 144. 136. 135. 136. 163data.com.cn [219. 219.broad.gz.gd.dynamic. 136. 135. 135. 144] failed - POSSIBLE BREAK-IN ATTEMPT!
Aug 20 03:47:56 debian8x64 sshd[1388]: Accepted password for user from 219. 144 port 39885 ssh2
Aug 20 03:47:56 debian8x64 sshd[1388]: pam_unix(sshd:session): session opened for user user by (uid=0)
Aug 20 03:48:16 debian8x64 sshd[1350]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:19 debian8x64 sshd[1354]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:22 debian8x64 sshd[1358]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:25 debian8x64 sshd[1362]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:27 debian8x64 sshd[1366]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:29 debian8x64 sshd[1370]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:31 debian8x64 sshd[1374]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:34 debian8x64 sshd[1378]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:36 debian8x64 sshd[1383]: pam_unix(sshd:session): session closed for user user
Aug 20 03:48:38 debian8x64 sshd[1388]: pam_unix(sshd:session): session closed for user user
136.

На данный момент нам удалось выяснить, что данная уязвимость точно присутствует в шаблоне Debian 8, остальное пусть сотрудники 1cloud проверяют сами, мы и так сделали достаточно, сообщив им об этой уязвимости. Вывод из этого один – сервера 1cloud на сегодняшний день небезопасно использовать для хостинга каких-либо важных проектов, так как ваши данные могут быть утеряны в связи с тем, что в 1cloud завелся какой-то крот, оставивший дыру в шаблонах ОС.

Перед нами нехотя извинились, и сказали, что они якобы когда-то там займутся заменой шаблонов ОС, и исключат из них все лишнее. После длительных телефонных бесед с 1cloud мы не смогли получить вразумительного объяснения по поводу происходящего. Вам полностью плевать на своих клиентов? Навязывается вопрос, ребята, что лишнее вам нужно убрать из шаблонов ОС? Вывод один –1cloud ценит лишь профит, данные клиентов для них не представляют никакой ценности! Как можно было продавать сервера с подобной брешью тысячам своим клиентов, хранящих на этих серверах терабайты важных данных? Ребята из 1cloud, если считаете, что я не прав – докажите мне обратное!

Мы готовы обсуждать данную ситуацию, но только с кем-то компетентным, а не с сотрудником сапорта, который упорно пытался нам доказать, что никаких пользователей с именем «user» вы не добавляете при создании сервера. Мы открыты к общению, уважаемые сотрудники 1cloud, если у вас есть какие-то вопросы – пишите тикет. Мы также готовы предоставить все необходимые данные, которые помогут покончить с продажей уязвимых серверов 1cloud раз и навсегда!


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

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Наш путь к централизованному хранению логов

Приветствую всех! Я работаю системным инженером в компании «Онланта». На одном из наших проектов я занимался внедрением и сопровождением Elastic Stack. Мы прошли путь от сбора логов фактически вручную до централизованного, автоматизированного процесса. Вот уже два года мы практически не ...

Java Script != JavaScript. Пять джав в одном классе. Скриптуем так, чтобы запомнили навсегда

На этой неделе у JUG.ru Group, скорее всего, выйдет анонс. Пока не скажу чего. Участие в тайных проектах будит креатив, поэтому вот вам очередной ночной видосик про джаву. Чуть менее чем полностью он состоит из скринкаста. Невероятные новости: теперь он ...