Тестовое задание с сюрпризом: как рекрутер прислал разработчику вредонос в Git-хуках

· Безопасность
Индийский разработчик получил заманчивое предложение о работе с зарплатой $10–15 тыс. в месяц, а вместе с ним — тестовый проект, начинённый скрытым вредоносным ПО. Разбор атаки показал целую многоступенчатую операцию.

cover.svg

Инженер Appaji рассказал, как обычное предложение о работе в LinkedIn обернулось знакомством с продуманной вредоносной кампанией. Рекрутер написал ему напрямую, предложив удалённую контрактную позицию Python-разработчика с оплатой $10 000–15 000 в месяц. Слишком щедрое предложение, названная зарплата ещё до собеседования и упоминание известного YC-стартапа насторожили автора, но он решил продолжить, сохраняя бдительность.

Спрятано в скрытых папках

После одобрения резюме соискателю прислали тестовое задание: ZIP-архив и вполне убедительный PDF с инструкциями об улучшении кодовой базы, архитектурных правках и — что важно — операциях с Git. Сам проект выглядел как обычный бэкенд на FastAPI и SQLAlchemy, а requirements.txt был чист.

Привычка, выработанная на CTF, спасла положение: автор запустил tree -a и обнаружил в каталоге .git/hooks набор заранее подготовленных хуков. Скрипт pre-commit определял операционную систему жертвы (macOS, Linux, Windows) и молча скачивал с сервера по «сырому» IP-адресу соответствующую полезную нагрузку. Отсюда и требование выполнить Git-команды в задании — чтобы гарантированно сработал хук.

Многоступенчатая цепочка

Первый скрипт загружал вторичную нагрузку, маскировал её в каталоге ~/Documents под именем tokenlinux.sh и запускал в фоне через nohup. Следующий этап тихо устанавливал Node.js, подтягивал package.json, parser.js и зависимости, после чего запускал обфусцированный парсер.

Параметр id=402 в запросах, по мнению автора, служил для присвоения уникального идентификатора каждой жертве — на разные ID сервер отдавал разные скрипты. Список зависимостей в package.json выдавал намерения: доступ к буферу обмена (clipboardy), файловой системе, а также hardhat — среда разработки для Ethereum. Автор предполагает, что цель — поиск и опустошение криптокошельков.

Детали и ирония

Попытка деобфусцировать parser.js через ИИ дала любопытный результат: Claude отказался анализировать код, сработала защита, тогда как Gemini охотно всё разобрал. Расширение .npl у промежуточного файла указало на известный почерк северокорейских группировок.

Атака оказалась массовой: другим кандидатам присылали варианты с папкой .vscode, где команды запускались просто при открытии каталога в редакторе. Исходный проект злоумышленники украли из невинного публичного репозитория на GitHub. Nmap-сканирование их сервера показало OpenSSH 9.6p1 на свежей Ubuntu без известных уязвимостей — с OPSEC у авторов дела шли лучше, чем с маскировкой самого вредоноса.

После того как автор публично раскрыл схему, аккаунт «рекрутера» исчез. Главный вывод прост: всегда проверяйте скрытые каталоги, прежде чем запускать чужой код.


Источник: Hacker News

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.