В репозитории PyPI были обнаружены сразу три вредоносных пакета (requesys, requesrs и requesr), занимавшиеся тайпсквоттингом и подделывающиеся под популярный пакет Requests. Все три пакета представляли собой шифровальщиков и, как оказалось, были созданы скучающим школьником.

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

Так, все версии пакета requesys (был скачан около 258 раз) содержали скрипты, которые сначала просматривали в Windows такие папки, как Documents, Downloads и Pictures, а затем начинали шифрование файлов.

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник: xakep