Школьник разместил шифровальщика в PyPI «ради шутки»

Эксперты из компании Sonatype обнаружили сразу три вредоносных пакета в официальном репозитории Python: requesys, requesrs и requesr — занимавшиеся тайпсквоттингом и маскирующиеся под популярный пакет Requests. Все три представляли собой шифровальщиков и были созданы скучающим школьником, пишет xakep.ru.

4 комментария

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

К моменту публикации доклада пакет requesys был скачан около 260 раз. Все три его версии содержали скрипты, которые сначала просматривали в Windows папки «Документы», «Загрузки» и «Изображения», а затем начинали шифровать файлы.

Также в коде была обнаружена одна забавная особенность: вредоносный скрипт запускался лишь в том случае, если имя пользователя ПК отличалось от «GIAMI». Видимо, это юзернейм самого автора малвари.

Если все проходило успешно, шифровальщик запускался в системе пострадавшего пользователя, который видел всплывающее сообщение с дальнейшими инструкциями: ему предлагалось связаться с автором пакета b8ff, или OHR (Only Hope Remains), через Discord-сервер.

Попасть на Discord-сервер хакера мог любой желающий. Там исследователи обнаружили канал «#ransomware-notifications, который содержал список имён пользователей 15 жертв, которые установили и запустили вредоносный пакет из PyPI. Автоматически сгенерированные сообщения также демонстрировали ключи дешифрования, которые жертвы могли использовать для разблокировки своих файлов.

При этом версии 1.0-1.4 содержали код шифрования и дешифрования в виде открытого текста, а версия 1.5 уже демонстрировала обфусцированный base64 исполняемый файл, что усложняло анализ. Но в целом он действовал так же, как малварь прошлых версий, то есть генерировал ключ шифрования/дешифрования, загружал копию ключа в Discord автора, шифровал файлы и побуждал жертв перейти в канал для спасения данных.

Аналитики без особого труда вычислили автора незамысловатого вредоноса: b8ff опубликовал код эксплойта на GitHub (с пометкой, что автор не несёт ответственности в случае неправомерного использования) и, не скрываясь, использовал этот же ник в PyPI, Discord, GitHub и на других сайтах. Оказалось, что у OHR есть даже канал на YouTube с довольно безобидными туториалами по взлому, которые теперь удалены.

Однако тайпсквоттерские пакеты не содержали никакого отказа от ответственности, то есть в их случае не было никаких заявлений и уведомлений о том, что пакеты опубликованы в рамках этичного исследования, и OHR не пытался удержать людей от заражения своих ПК. Напротив, сразу после установки пакеты запускали вредоносные скрипты.

«35 тысяч» репозиториев GitHub были клонированы и распространяли малварь
По теме
«35 тысяч» репозиториев GitHub были клонированы и распространяли малварь

В итоге исследователи решили связаться с автором шифровальщиков и узнать о его мотивах. B8ff легко пошел на контакт и сообщил, что вымогательский скрипт в этих пакетах являлся «полностью опенсорсным» и был частью проекта, который создавался «ради шутки». Несмотря на тот факт, что пакеты действительно шифровали пользовательские данные, автор заявил, что технически они безвредны.

«Технически это вымогатель без выкупа, — сказал b8ff, имея в виду, что он не требует денег после шифрования. — Все ключи дешифрования [отправляются] в канал #ransomware-notifications на моем сервере в Discord».

B8ff рассказал, что он из Италии и описал себя как школьника, который пока просто учится разработке и лишь недавно заинтересовался эксплойтами.

«Я был удивлен, когда понял, как легко создать такой эксплойт и насколько это интересно. Я ещё учусь в школе и на данный момент знаю Python, Lua, HTML, немного CPP и всё», — признался b8ff.

Эксперты уведомили о своей находке PyPI, но пока не получили ответа. После общения со специалистами b8ff сам помог предотвратить дальнейшие атаки и переименовал пакет requesys, чтобы разработчики, опечатавшиеся в названии requests, случайно не загружали программу-вымогатель. Два других пакета удалены из PyPI (правда неясно, самим автором добровольно или администраторами репозитория).


Читать на dev.by