Языки программирования являются важным инструментом кибератак. Расскажем, чем привлекательны для киберпреступников PowerShell, Bash и JavaScript, в чём заключается секрет популярности C / C++ и как не стать жертвой вредоносных приложений на Python.
- Введение
- Какие языки программирования чаще всего используются для атак
- Не «Си» единым
- Python — один из наименее популярных языков среди создателей вредоносных программ
- Основные типы вредоносного кода на Python
- Существует ли специфическая стратегия защиты от вредоносных Python-приложений?
- Выводы
Введение
На текущий момент трудно было бы утверждать, что существуют полностью безопасные системы и программы. В любой из них может скрываться потенциальная уязвимость — ошибка, допущенная в процессе разработки, — наличие которой открывает путь к тяжёлым последствиям. Такими ошибками чаще всего пользуются злоумышленники. ИБ-компании постоянно отслеживают уязвимости и обновляют базы данных по языковой безопасности. В числе объектов такого мониторинга — государственная база данных США по уязвимостям (NVD), инструкции по безопасности, трекеры GitHub и проекты с открытым исходным кодом.
Отметим, что в эфире телепроекта AM Live недавно обсуждалось, как организовать процесс управления уязвимостями (Vulnerability Management) в 2024 году.
Для создания вредоносного кода злоумышленники пользуются разными языками программирования. Некоторые из них более популярны в преступной среде из-за простоты использования, совместимости с определёнными системами и доступности большого количества библиотек, при помощи которых можно найти решение для конкретной задачи.
Какие языки программирования чаще всего используются для атак
Важно принимать во внимание, что язык программирования — это всего лишь инструмент. Гораздо важнее навыки и опыт разработчика вредоносного кода, его квалификация в области операционных систем, под которые разрабатывается программа, наличие достаточных знаний по криптографии, понимание того, как устроены сетевые протоколы. Например, если злоумышленник умеет усложнять обнаружение на конечном устройстве и хорош в реализации функциональности, которая связывает вредоносную программу с серверами хакера, то не так важно, каким языком он воспользуется. Выбор языка программирования как инструмента будет обусловлен только тем, в какой среде вредоносный код будет запускаться и какие задачи с его помощью нужно решить.
Тем не менее по нашим наблюдениям, подтверждённым опытом коллег, наибольшее количество вредоносных программ с широкой функциональностью в основном разрабатывается на языках C и C++. Эти языки чаще других используются для создания самых серьёзных угроз, так как позволяют контролировать системные ресурсы, управлять ими и создавать сложные паттерны, затрудняющие анализ и обнаружение вредной программы в системе. Другая причина популярности C и C++ в преступной среде состоит в том, что это портируемые языки, к ним предъявляются минимальные требования по наличию зависимостей для корректной работы. Это означает, что код можно компилировать и адаптировать для запуска на различных платформах. Специалисты в области кибербезопасности упрекают «Си», среди прочего, в большом количестве примеров неопределённого поведения, что неизбежно ведёт к пробелам в безопасности и уязвимостям инфраструктуры.
Не «Си» единым
Преступное ИТ-сообщество с успехом пользуется и другими языками программирования. Для разработки вредоносных скриптов в среде Windows злоумышленники часто используют PowerShell.
Windows PowerShell — это командная оболочка и язык сценариев, созданные корпорацией Microsoft на основе платформ .NET Framework и .NET Core. PowerShell присутствует на всех устройствах под управлением ОС Windows и входит в число излюбленных инструментов хакеров из-за выдающихся возможностей по управлению системой и внесению в неё изменений. В подавляющем большинстве случаев PowerShell используется широким кругом специалистов из различных ИТ-сфер для автоматизации задач, управления системой, создания зависимостей для взаимодействия систем и различных решений, их корректной и бесперебойной работы. Разработчики вредоносных программ чаще всего создают свои инструменты / скрипты на языке PowerShell для того, чтобы перемещаться между устройствами, собирать информацию, закрепляться в системе, противодействовать обнаружению и модифицировать системные конфигурации для реализации дальнейших этапов атаки.
Для *nix-систем языком автоматизации и воспроизведения тех же вредоносных действий является Bash (Bourne again shell) — стандартная командная оболочка в большинстве дистрибутивов Linux. Программы на этом языке позволяют управлять системой и системными конфигурациями, а также системными компонентами и пользовательскими интерфейсами и данными. Эти возможности особенно привлекательны для злоумышленников, использующих их в своих преступных целях.
Создатели вредоносных программ не обошли стороной и веб-разработку, благодаря которой у пользователей есть доступ к сайтам и различным сервисам, опубликованными в сети «Интернет». В этой области внимания заслуживает наиболее популярный язык JavaScript. Киберпреступники применяют его при создании скриптов, например, для XSS-атак — внедрения вредоносного JS-кода, — когда создаются загрузчики и обфускаторы строк с опасной нагрузкой, впоследствии запускаемой на машине жертвы.
Перечень языков и их возможностей для преступной деятельности весьма широк, создавать вредоносные программы можно при помощи любого из них.
Python — один из наименее популярных языков среди создателей вредоносных программ
Есть языки программирования, к которым в среде злоумышленников прибегают намного реже; к ним относится Python. На фоне C и C++ он не особенно привлекателен для разработки серьёзной вредоносной функциональности. Причина известна: для надёжной работы файла здесь нужно больше зависимостей, чем при использовании других языков программирования, к тому же он медленнее по скорости выполнения операций в системе и занимает больше места.
Тем не менее команда отдела реагирования и цифровой криминалистики Angara SOC обнаружила преступную группировку, совершающую атаки на информационные ресурсы корпораций с помощью вредоносной программы на языке Python. Активность хакерской группировки M0r0k T34m (Morok Team) замечена с ноября 2023 года. Злоумышленники разработали программу-вымогатель M0r0k, написанную на Python и использующую алгоритм Fernet для рекурсивного шифрования файлов. Её особенность заключается в том, что все необходимые зависимости распаковываются в процессе работы, а в начало каждого зашифрованного файла добавляется строка «MR !» без дополнительного расширения. Организовывая коммуникацию с сервером управления в скомпрометированной сети, хакеры используют утилиту Ngrok для проброса порта 3389 (RDP), а это — открытый путь ко внутренним ресурсам машины.
Ngrok часто применяет группировка Shadow Wolf, также известная специалистам в области кибербезопасности как Shadow или C0met. По некоторым особенностям «почерка» создателей M0r0k эксперты определили, что в их число входят русскоговорящие хакеры, но страну, на территории которой они действуют, пока установить не удалось. Вредоносный код не похож на продукцию других хакерских группировок, в силу чего сделан вывод, что это новая группа кибермошенников.
Опасность преступной деятельности Morok Team возрастает в связи с тем, что они применяют уникальный набор тактик для атаки. Например, первоначальное проникновение в защищённую сеть осуществляется через уязвимости публичных приложений, после чего программисты-преступники создают учётные записи, максимально похожие на существующие. Это даёт злоумышленникам дополнительное время, в течение которого атака не обнаруживается, а высшие права доступа, присваиваемые фейковой учётной записи, позволяют причинить жертве атаки максимум ущерба вплоть до полного уничтожения или модификации всех файлов инфраструктуры.
Основные типы вредоносного кода на Python
Чаще всего можно встретить вредоносные программы на Python, которые относятся к следующим типам:
- Stealer (стилер) — ПО для сбора пользовательских и системных данных на устройстве жертвы, которые перенаправляются на сервер злоумышленника. Хороший пример стилера на Python разобран компанией Cybereason в докладе о вредоносной программе Snake.
- Downloader (загрузчик) — средство загрузки зависимостей, вредоносных программ и файлов со сторонних интернет-ресурсов или серверов злоумышленника.
- Miner (майнер) — это вредоносная компьютерная программа, которая использует вычислительные ресурсы ПК для добычи криптовалюты.
- Encryptor (шифровальщик) — средство вредоносного криптографического преобразования файлов на конечном устройстве.
Существует ли специфическая стратегия защиты от вредоносных Python-приложений?
Каких-либо методов и правил защиты устройств от вредоносных программ, разработанных именно на языке Python, не существует. Наиболее эффективным решением остаётся соблюдение общих рекомендаций по цифровой гигиене, требований и правил по информационной безопасности. Оптимальные меры защиты известны и, как правило, применяются специалистами в области кибербезопасности. Напомним, в чём они состоят.
- Максимальный охват конечных устройств антивирусными программами.
- Использование СЗИ в совокупности с комплексными мерами, к которым относятся мониторинг событий, получение регулярных обновлений, грамотное и безопасное конфигурирование и построение инфраструктуры.
- Постоянное обучение сотрудников, направленное на повышение цифровой грамотности, особенно при обработке писем из корпоративной почты с вложениями и ссылками.
- Резервное копирование критически важных данных.
Выводы
Проблемы безопасности программного обеспечения давно известны и многократно описаны, а новичков, изучающих языки программирования для создания приложений, обучают использовать правила «хорошего» кода и безопасной разработки. Даже быстрый обзор сетевых ресурсов даёт много ссылок, где эти рекомендации подробно и доступно изложены. Тем не менее даже при соблюдении всех правил безопасности на уровне создания софта случаются ошибки, приводящие к образованию прорех в его защите от злоумышленников. Для противодействия атакам через эти уязвимости технологии защиты интегрируются уже на уровне ОС.