Перейти к содержимому
Видео

Вредонос с фейковых вакансий из Северной Кореи: четыре причины, почему мой антивирус молчал

Дважды я запускал тестовое задание фейковой вакансии, и ни XProtect, ни антивирус не подали голоса. 53-секундное объяснение: я запустил код сам, он использовал доверенные инструменты, он был новым, а украденная сессия обходит 2FA. И что помогает: проверять, что делает код, до его первого запуска.

Опубликовано
Чтение
5 мин
Теги
  • security
  • macos
  • explainer
Содержание
  1. Молчание, дважды
  2. 1. Я запустил его сам
  3. 2. Доверенные инструменты
  4. 3. Новый — значит, без сигнатуры
  5. 4. Украденная сессия обходит 2FA
  6. Попадаются даже эксперты
  7. Что помогает
  8. Источники

Коротко: меня дважды атаковали через фейковые вакансии на Upwork, и мой антивирус оба раза промолчал. Источники называют четыре причины, по которым ему не к чему было придраться: я запустил код сам, поэтому проверки Mac отошли в сторону; он использовал доверенные инструменты вроде node, curl и bash; варианты были новыми, так что сигнатуры появились позже; а украденная сессия входа может обойти 2FA. Что помогает, по словам источников: считать любую установку запуском кода, настороженно относиться к любому, кто просит выполнить команду в терминале, и проверять, что делает код, до его первого запуска.

Молчание, дважды

Это моя собственная история; обе встречи я описал в посте Две фейковые вакансии на Upwork и один заражённый Mac. Больше всего меня задело вот что: "neither macOS's built-in XProtect nor traditional antivirus made a sound, either time" («ни встроенный в macOS XProtect, ни обычный антивирус ни разу не подали голоса»).

Это не значит, что антивирус бесполезен. Источники ниже говорят, что он запаздывает и его обходят, а не что он ничего не стоит.

1. Я запустил его сам

Microsoft Threat Intelligence описывает кампанию против macOS северокорейской группы Sapphire Sleet, "that relies on social engineering rather than software vulnerabilities" («которая полагается на социальную инженерию, а не на уязвимости в программах»).

По словам Microsoft: "By persuading users to manually execute AppleScript or Terminal‑based commands, Sapphire Sleet shifts execution into a user‑initiated context, allowing the activity to proceed outside of macOS protections such as Transparency, Consent, and Control (TCC), Gatekeeper, quarantine enforcement, and notarization checks." («Убеждая пользователей вручную выполнять команды AppleScript или Терминала, Sapphire Sleet переносит выполнение в контекст, инициированный самим пользователем, и это позволяет действовать в обход таких защит macOS, как Transparency, Consent, and Control (TCC), Gatekeeper, принудительный карантин и проверки нотаризации».)

2. Доверенные инструменты

Снова Microsoft: "This activity demonstrates how threat actors continue to rely on user interaction and trusted system utilities to bypass macOS platform security protections, rather than exploiting traditional software vulnerabilities." («Эта активность показывает, как злоумышленники по-прежнему полагаются на действия пользователя и доверенные системные утилиты, чтобы обойти защитные механизмы платформы macOS, а не эксплуатируют традиционные уязвимости в программах».)

Это совпадает с тем, что видел я: "These attacks come in new packaging every time and use the most ordinary tools there are, like node, curl and bash, so traditional antivirus has no reason to find them suspicious." («Эти атаки каждый раз приходят в новой упаковке и используют самые обычные инструменты вроде node, curl и bash, так что у традиционного антивируса нет причин что-то заподозрить».)

3. Новый — значит, без сигнатуры

Сигнатуры всё-таки появляются, когда кампания становится известной: Microsoft отмечает, что "Apple has also deployed XProtect signatures to detect and block the malware families associated with this campaign—macOS devices receive these signature updates automatically" («Apple также выпустила сигнатуры XProtect для обнаружения и блокировки семейств вредоносного ПО, связанных с этой кампанией, — устройства на macOS получают эти обновления сигнатур автоматически»).

Но новые варианты на момент обнаружения могут оставаться незамеченными. SentinelOne в начале 2025 года сообщала о "newly discovered samples that we have labelled 'FlexibleFerret' and which remain undetected by XProtect at the time of writing" («недавно обнаруженных образцах, которые мы назвали „FlexibleFerret“ и которые на момент написания XProtect не обнаруживает»).

Удаление пакетов тоже не решает проблему. Socket: "Since our July 14, 2025 update, we have identified and analyzed more than 338 malicious packages with over 50,000 cumulative downloads." («С момента нашего обновления от 14 июля 2025 года мы выявили и проанализировали более 338 вредоносных пакетов, которые в сумме скачали более 50 000 раз».) И: "We continue to see weekly upload bursts, rapid re-uploads after takedowns, and iterative changes to loaders and postinstall scripts." («Мы по-прежнему видим еженедельные всплески загрузок, быстрые повторные публикации после удаления и постепенные изменения загрузчиков и скриптов postinstall».)

4. Украденная сессия обходит 2FA

Microsoft, о фишинге в 2022 году: "Once the attacker obtains the session cookie, they can inject it into their browser to skip the authentication process, even if the target's MFA is enabled." («Получив сессионный cookie, атакующий может внедрить его в свой браузер и пропустить аутентификацию, даже если у жертвы включена MFA».)

В случае Bybit, по данным ФБР, "North Korea was responsible for the theft of approximately $1.5 billion USD in virtual assets from cryptocurrency exchange, Bybit" («Северная Корея ответственна за кражу виртуальных активов на сумму около 1,5 млрд долларов США с криптобиржи Bybit»). Safe{Wallet} в цитате The Hacker News: "The attack involved the compromise of a Safe{Wallet} developer's laptop ('Developer1') and the hijacking of AWS session tokens to bypass multi-factor authentication ('MFA') controls." («Атака включала компрометацию ноутбука разработчика Safe{Wallet} („Developer1“) и перехват сессионных токенов AWS для обхода многофакторной аутентификации („MFA“)».)

Попадаются даже эксперты

ФБР: "Given the scale and persistence of this malicious activity, even those well versed in cybersecurity practices can be vulnerable to North Korea's determination to compromise networks connected to cryptocurrency assets." («Учитывая масштаб и настойчивость этой вредоносной активности, даже хорошо разбирающиеся в кибербезопасности люди могут оказаться уязвимы перед решимостью Северной Кореи скомпрометировать сети, связанные с криптоактивами».)

Что помогает

  1. Проверяйте, что делает код, до его первого запуска, а не как он называется. Это мой вывод из обеих встреч.
  2. Любая установка — это код. Socket: "Treat every npm install as code execution and block risky behavior before it reaches developer machines or pipelines." («Считайте каждый npm install выполнением кода и блокируйте рискованное поведение до того, как оно доберётся до машин разработчиков или пайплайнов».)
  3. Никогда не вставляйте команду незнакомца. Microsoft советует: "Educate users about social engineering threats originating from social media and external platforms, particularly unsolicited outreach requesting software downloads, virtual meeting tool installations, or execution of terminal commands." («Рассказывайте пользователям об угрозах социальной инженерии из соцсетей и внешних платформ, особенно о непрошеных обращениях с просьбой скачать программу, установить инструмент для онлайн-встреч или выполнить команды в терминале».)

После двух этих встреч я сделал Tsuba — бесплатное приложение для Mac с одной идеей: "before unfamiliar code runs for the first time, it takes a look for you" («прежде чем незнакомый код запустится впервые, оно смотрит на него за вас»).

Источники

Видео анимировано кодом, а сценарий написан с помощью ИИ; каждая цитата выше сверена с источниками. Условно показаны щит «угроз нет», расходящиеся в стороны ворота, сканер и его рентген, шкала времени сигнатур и сессионный cookie. Этот пост объясняет риск и способы защиты, а не то, как работает вредонос. Видео на английском. Сделано в Shotloop — моём бесплатном Mac-приложении для объясняющих видео из кода, которые правятся по одной сцене за раз.

Следите

Делюсь сборками, экспериментами и выводами по ходу дела.

Новые видео на YouTube, короткие заметки в X. Каждый пост здесь ссылается на оба.

YouTube