frantech solutions что такое
Et tu, Brute? Что хотят от нас брутфорсеры?
Каждый владелец сервера с «белым» IP-адресом наблюдал в логах бесчисленные попытки подключиться к серверу по SSH с разных точек мира. Администраторы ставят средства противодействия, такие как fail2ban, переносят SSH на другие порты и всячески пытаются защититься от брутфорсеров. Но чего же хотят эти замечательные люди от наших серверов?
Поверхностный ответ, конечно, прост: наживы на бесплатных вычислительных ресурсах и полученных чувствительных данных. Но этот ответ недостаточно подробный. Давайте разложим виртуальные «приманки» и проследим, что происходит, когда автоматический брутфорс оказывается успешным.
В данной статье мы рассматриваем только случаи попадания под «автоматический» перебор и исключаем целенаправленные атаки на наш сервер.
Не пытайтесь повторить описанное в статье, если у вас нет должной подготовки. Ни в коем случае не повторяйте на продакшн-серверах!
Сперва узнаем «врага» в лицо.
Пассивно-агрессивное наблюдение
У нас есть сервер, который уже пару недель стоит с открытым 22 портом. Этого достаточно, чтобы его заметили и начали атаковать.
Для начала узнаем, откуда к нам приходят, как часто и с какими данными. Не будем изобретать велосипед и просто (это действительно просто!) модернизируем исходный код OpenSSH. Ставим необходимые зависимости.
Команда для Ubuntu:
Получаем самую свежую версию с GitHub:
Проводим этап конфигурации перед сборкой. Здесь и далее мы проводим все операции от имени суперпользователя. Чтобы не сломать оригинальный SSH-сервер, указываем префикс для установки патченной версии.
Если все прошло без ошибок, то можно приступать к изменению исходного кода OpenSSH. Брутфорс организуется по методу аутентификации password. Заглядываем в файл auth-passwd.c. В этом файле интересна функция auth_password(), вернее ее начало.
Этот метод вызывается всякий раз, когда кто-нибудь пытается пройти аутентификацию по паролю. Контекст аутентификации (Authctxt) и структура ssh содержат все полезные нам поля:
Конечно, это не самый потокобезопасный код. Но так как мы пишем всего одну строку и нам не критичен порядок записей, то буферы ОС сами разберутся. Собираем и устанавливаем. Установка необходима для генерации ключей хоста.
Правим конфиг /root/ssh/etc/sshd_config, добавляем следующую строчку.
Если не разрешить вход для суперпользователя, то метод auth_password не будет вызываться. Уносим свой рабочий локальный SSH на другой порт и запускаем нашу ловушку.
За 10 дней наблюдений было предпринято 74 865 попытки зайти c 1 131 IP-адресов. В среднем в секунду было от одной до двух попыток аутентификации. Максимально зафиксированное число — 10 попыток за секунду. Примечательно, что все они были совершены с одного IP-адреса.
В этой статье не будет указания точных IP-адресов, так как это очень непостоянная информация. А вот статистика по странам и автономным системам (AS) будет весьма полезна.
Легко заметить, что Китай преобладает по количеству брутфорса.
Вот так выглядит топ самых настырных адресов из следующих AS:
В этом топе отображаются самые активные брутфорсеры, но если взглянуть на весь список адресов, то обнаружится еще одна интересная закономерность: почти половина останавливается на 50 или 70 попытках.
По источникам брутфорса посмотрели, перейдем к топу паролей. Нам удалось собрать словарь на 2 018 пользователей и 32 238 паролей. Вот топ паролей:
Вот он: ababablkljkjhghfgdfdgjhkfdgfhghfgfgqqqqqqwwwwwwgqqqqqqababab.
Примечательно, что это не попытка ручного подбора методом соприкосновения головы и клавиатуры, а вполне себе словарный пароль, который засветился шесть раз с разных мест.
Также один адрес перебирал пароль по датам, а еще несколько десятков адресов как будто бы плохо сконфигурированы: они всегда приходили с паролем root, а в имени пользователя был просто набор символов, например, 1!2@3#4$5%6^7&8*9(0)-_=+.
Из полученной информации следуют такие выводы:
Карт-бланш
Сперва необходимо выяснить, как действует атакующий. Единственное, в чем мы можем быть уверены, так это в том, что на сервер зайдут через ssh. Сперва пропатчим метод аутентификации, чтобы пропускать всех, кто к нам пришел.
Далее изучаем документацию и находим три полезных ключа для sshd.
Запуск программ в *NIX-подобных системах сопряжен с двумя системными вызовами: fork(2) и execve(2). Первый просто дублирует текущий процесс и не несет никакой полезной информации, а вот второй содержит путь и аргументы новой программы.
Воспользуемся удобным инструментом для трассировки системных вызовов в программах — strace. Настраиваем фильтр по execve, разрешаем трассировать потомков и снимаем ограничения на длину выводимой строки. Итоговая команда для трассировки выглядит так:
На выходе получается несколько перегруженный лог, так как атакующий запускает команды, содержащие конвейеры. Тем не менее, извлечь из лога итоговый скрипт несложно.
К слову, именно этот публичный ключ уже фигурировал на Хабре, но при других обстоятельствах, а автор не потерял доступ к собственному оборудованию. Потенциально имя ключа может пролить свет на назначение этого ботнета, так как во второй части имени ключа, fckr, легко восстановить недостающие гласные. А вот что такое mdr, автору понять не удалось.
На первый взгляд кажется, что атакующий бот проверяет наличие сессий на сервере (команда w) и стесняется что-либо загружать. Возможно, конечно, владелец ботнета остерегается администраторов, которые внимательно относятся к своим серверам, и выжидает некоторое время перед загрузкой зловредных бинарников.
Сделаем вид, что мы безответственные администраторы, и составим следующий shell-скрипт, который запустим через nohup:
Так, первая попытка позволит нападающему пройти в ОС сервера и изменить данные для подключения на свои, а после отключения SSH-сервер перезапустится на обычный, который примет теперь уже подходящие доступы.
Единственный минус данного метода — необходимо несколько раз перезапустить скрипт, прежде чем брутфорсер придет с логином root. Но нам повезло — первый же встречный пришел с логином root.
Но отдаваться первому встречному было плохой идеей. Атакующий собрал информацию о виртуальной машине, сменил пароль и ключ, и в течение следующих двух дней никто по новому ключу не пришел.
Пришлось откатить виртуальную машину на момент до атаки. Из этой попытки был сделан вывод, что ловить хороших людей по одному нецелесообразно: их намерения неясны и тратят много времени.
Решение простое: раз уж мы разрешили заходить каждому встречному, а каждый встречный выполняет отдельные команды в неинтерактивном режиме, так давайте будем записывать приходящие команды вместо исполнения. Находим метод do_child() в session.c.
Можно просто записывать все команды и ничего не выводить, но, кажется, атакующий принимает решения на основе полученной информации. По крайней мере при отсутствии вывода атакующий отключился после первой команды.
Пришлось придумать способ «отсеять» атакующих, которые выполняют простой сбор информации о машине, и запретить деструктивные действия. Также я попытался сделать сервер более привлекательным для атакующих и сделал обманывающие заглушки, которые «говорят», что в сервере 72 ядра, а процессор — Intel® Xeon® Gold 6354.
При этом запуск интерактивной сессии не будет логироваться, но это, на мой взгляд, было не так важно, так как нас атакуют боты. Это предположение, конечно, оказалось неверным, но процесс ssh трассируется на системный вызов execve, поэтому команды мы все равно узнаем.
Колизей
Первое время приходили только атакующие с ключом mdrfckr. Заглушки в сервере SSH не давали им испортить мой ключ, а больше вреда от них и не было. В первый час к нам заглянули 12 серверов, которые суммарно выполнили этот скрипт 79 раз. Кажется, что этот ботнет очень простой и его единственная цель — заставить администратора понервничать и вспомнить, как сбросить пароль в Linux. Дело было под вечер, поэтому виртуальная машина была оставлена в покое в надежде утром найти следы более «серьезных» атакующих.
Утром я вернулся к гипервизору и увидел, что vCPU трудятся на 100%. Заглянул внутрь сервера, проверил логи strace и понял, что ночью мой сервер был полем жарких битв.
Первым пришел любопытствующий скрипт из Испании (Мадрид, AS12479 Orange Espagne SA).
Следом пришел майнер из Америки (Невада, AS53667 FranTech Solutions). В отличие от всех предыдущих, майнер максимально непривередлив. Как-нибудь прокатит. При этом IP-адрес нападавшего и IP-адрес сервера с архивом (Нью-Йорк, AS53667 FranTech Solutions) не совпадают.
Кстати, именно этот майнер дожил до встречи со мной. У него два исполняемых файла krn и krane, а также текстовый файл config.json, это конфиг XMRIG. Тем не менее, майнер непрост: он подчищает за собой историю в .bash_history, удаляет конфиг и исходный архив, а также чистит за собой логи.
Далее были попытки протолкнуть исполняемый файл 8nlh4fpijnyueflljkd2bi9f69 через scp по путям:
На этом моменте место для логирования закончилось, и выяснить IP-адрес атакующего теперь не представляется возможным, так как strace сохраняет только pid. Недостаток места повлиял и на crontab.
Успех был достигнут только по последнему пути, но исходный файл тут же был стерт, а его место занял dhpcd. Этот сервис тоже дожил до встречи со мной, но оригинальный файл уже отсутствовал. К счастью, procfs позволяет вытащить файл даже после его удаления.
Следующий зашедший пытался сменить пароли для пользователей ubuntu, test, oracle, admin, test1, после чего проверил authorized_keys на предмет ключа mdrfckr и заменил ключи на собственный безымянный.
Далее был загружен исполняемый файл r в /dev/shm. Похоже, что данный исполняемый файл избавляется от конкурентов. Он проверяет наличие aliyun.one и скачивающихся скриптов в cron, а затем удаляет множество файлов и грубо завершает другие вредоносные процессы.
/bin, а также по файлам запущенных процессов (/proc/$PID/exe) и применил следующий фильтр:
Назначение этой проверки осталось неизвестным.
Затем в логах появились вторые попытки перечисленных атакующих, а потом — рассвет и прекращение эксперимента. Казалось, что можно очистить сервер от лишнего ПО, заменить команду rm пустышкой и попытаться еще раз.
В идеале, конечно, нужно подменить или запретить системный вызов unlink(2), чтобы вообще ничего не удалялось, но этот трюк достаточно сложный. И может скорее навредить, чем помочь.
Вторая попытка
Теперь первым пришел невиданный ранее посетитель. Он работал через интерактивную оболочку и интересовался наличием masscan на моем сервере. Затем он собрал подробную информацию по процессору и памяти. После — собрал информацию об IP, запустил тесты дисковой подсистемы и проверил скорость доступа к сети Интернет.
Интересно, что скрипт тестирования скачивался с передачей адреса и через stdin: это помогло скрыть источник скрипта от логов трассировки.
Однако большая часть скрипта легко восстанавливается по логу трассировки.
Затем пришел эксперт по смене паролей. Его единственная цель — сменить пароль. И он не справился! Ни одна из перечисленных команд не выполнилась успешно на моем сервере.
А вот и «зашифрованные» в base64 скрипты пошли:
При этом в скрипте используется dota3.tar.gz, но этот файл, увы, не был загружен на сервер. 🙁
Последним на сервер зашел уже известный нам krane, он же продолжил трудиться до рассвета.
Выводы
Мы предложили Интернету беззащитную виртуалку и посмотрели, что произойдет. Все в рамках наших ожиданий, но давайте подведем итог.
FranTech Solutions
FranTech Solutions insights
Lost to
Total lost 22,905,603 to:
Gained from
Total Gained 23,674,539 from:
Lost to
Total lost 22,905,603 to:
Gained from
Total Gained 23,674,539 from:
FranTech Solutions TLDs
FranTech Solutions customer reviews (9)
Provider with good price to value ratio. I like fast support. (Thank you for help guys.) Clients can not expect miracles from the support for rather low price they are paying. They support DirectAdmin. Uptime is very good so far.
Amateurs. I’m on vacation, and my order is being rejected. Even after a verified payment. Customer service is pretty stupid. They refer to the TOS. But I do not read there that it is forbidden to go on holiday.
Karen S delayed my services from being provisioned and roughly 48 hours later, kept stalling and was responding 3 to 6 hours in between each response. I’ll never be using these people.
I’ve been using a VPS from Frantech for over 3 years now. Overall, the service is great, but the support has always been excellent. They are open about any downtime, and quick to respond to any issues, which btw have been few and far between. Happy with them!!
Claudio Luiz Ferreira
IPs by Service
The percentage of FranTech Solutions IP addresses which point to servers hosting high risk services:
Anonymizing VPN | 87% |
---|---|
Tor Exit Node | 4% |
Server | 6% |
Public Proxy | 3% |
Web Proxy | 0% |
Percentage IPs by Country
The percentage of FranTech Solutions IP addresses which fall under each country:
United States | 80% |
---|---|
Luxembourg | 16% |
Canada | 3% |
Poland | 1% |
Egypt | 1% |
United Kingdom | 1% |
India | 1% |
Puerto Rico | 1% |
Russia | 1% |
N/A | 1% |
Brazil | 1% |
Central African Republic | 1% |
Iceland | 1% |
Palau | 1% |
Percentage IPs by Organisation
The percentage of FranTech Solutions IP addresses which fall under each organization for whom they manage IPs:
BuyVM | 14% |
---|---|
BuyVM Services | 3% |
QuickPacket, LLC | 2% |
LETBOX | 1% |
ASSERTIVENET | 1% |
HostFlyte Server Solutions | 1% |
Kodo Technologies | 1% |
Private Customer | 1% |
VirtusHost | 1% |
Accelerate Hosting & Network Solutions | 1% |
Boomer LTD | 1% |
Router Hosting | 1% |
XXOR AB | 1% |
Pump Networks Ltd | 1% |
Fedorait Networks | 1% |
UK7 | 1% |
Central Server Solutions, Aquatic Tech LLC | 1% |
Robert Rademacher | 1% |
SkypeProtector | 1% |
GuruTechie LLC | 1% |
The SixXS Project | 1% |
Thinkpenguin Inc | 1% |
Neko LLC | 1% |
FREEMESH | 1% |
EURL DZSecurity | 1% |
EricGillette.com, Inc | 1% |
Anti-DDoS.PRO | 1% |
Achieve Wireless Inc | 1% |
AACS, Inc | 1% |
IPs by Fraud Score
The highest risk FranTech Solutions IP addresses based on our fraud score:
Frantech Solutions
760 Mission Ct, Fremont (CA), 94530, United States
Продвинуть
Как только мы заметим, что появились первые посетители из Facebook, то Ваша страница получит бесплатное продвижение на 3 месяца!
Похожие места поблизости
Hurricane Electric
760 Mission Ct, Fremont (CA), 94539, United States
AVer USA
668 Mission Ct, Fremont (CA), 94539, United States
FM Industries, Inc
221 E Warren Ave, Fremont (CA), 94539, United States
Acme Pacific Repairs
1347 Fulton Pl, Fremont (CA), 94539-7075, United States
Arrow Recovery Group
46025 Warm Springs Blvd, Fremont (CA), 94539-7013, United States
Hotelsoft Inc.
47102 Mission Falls Ct, Fremont (CA), 94539, United States
EITAGlobal
161 Mission Falls Ln, Ste 216, Fremont (CA), 94539, United States
LED One Distribution
45885 Hotchkiss St Fremont, CA, United States
LED One
45885 Hotchkiss St, Fremont (CA), 94539, United States
Pape’ Material Handling
47132 Kato Rd, Fremont (CA), 94538, United States
Breedu Inc.
2090 Warm Springs Ct, # 100, Fremont (CA), 94539, United States
HandScape Inc
939 Corporate Way, Fremont (CA), 94539, United States
ChannelShark
877 Corporate Way, Fremont (CA), 94539-6115, United States
J C Paper
47422 Kato Rd, Fremont (CA), 94538-7319, United States
San Francisco Herb & Natural Food Company
47444 Kato Rd, Fremont (CA), 94538-7319, United States
BIG Design
46808 Lakeview Blvd, Fremont (CA), 94538, United States
Corsair
47100 Bayside Pkwy, Fremont (CA), 94538, United States
Opnext
46555 Landing Pkwy, Fremont (CA), 94538-6496, United States
Solyndra
47488 Kato Rd, Fremont (CA), 94538, United States
Attivo Networks
47697 Westinghouse Dr, Fremont (CA), 94539, United States