Изследователи по киберсигурност алармират за нова версия на PamStealer, която гарантира, че основният зловреден код може да бъде възстановен единствено чрез верига за декриптиране от страна на сървъра.
Най-новите артефакти, според Jamf Threat Labs, продължават да разчитат на същия механизъм с дропер JavaScript for Automation (JXA), но променят примамката и метода на доставяне.
„Докато по-ранните варианти вграждаха ключовия си материал за декриптиране директно в изходния код на JXA, сега той извлича специализирана програма за декриптиране и извършва обмен на ключове със сървъра, преди зловредният код да може да бъде разопакован“, заявява изследователят по сигурността Тайс Хафлер в анализ. „Без съдействието на сървъра, зловредният код не може да бъде възстановен статично.“
Втората основна промяна е изборът на самата фалшива примамка. Докато предишни версии, забелязани през юли и август 2026 г., използваха фалшиви уебсайтове, представящи се за Maccy, Scoppr и Nancy Clipboard, сега жертвите са примамвани чрез фалшив уебсайт ('wavel[.]app'), рекламиращ несъществуваща услуга за криптовалутен портфейл с име Wavel.
Кликването върху бутона 'Download for macOS' на фалшивия сайт води до изтегляне на файл с дисков образ ('Wavel.dmg'), който съдържа компилиран AppleScript файл. Отварянето на файла стартира вградения в Apple Script Editor с инструкции за задействане на изпълнението на JXA дропер.
„При Maccy, Scoppr и Nancy, изходният код на JXA извършваше RC4 декриптиране на вградения зловреден код, правеше извиквания към Objective-C рамката през моста на JXA към Foundation и NSData и управляваше целия процес по изтегляне и подготовка“, обяснява Хафлер.
„При Wavel изходният код на JXA не съдържа нищо от това. Целият JXA слой сега е просто носител. Когато Script Editor изпълни файла, той декодира base64 низа и препраща резултата към /bin/zsh -s, където zsh чете и изпълнява декодираните байтове от стандартния вход. JXA процесът приключва веднага; zsh дроперът продължава във фонов режим.“
Decod-натият zsh скрипт развива инфекцията, като извършва следните действия -
- Изтегляне и извикване на програмата за декриптиране 'pkgunpack' от 'wavel.apple03cloudstore[.]com'
- Извършване на X25519 обмен на ключове
- Декриптиране и подготовка на пакета със зловреден код
- Потискане на известията на macOS, които предупреждават потребителите при добавяне на нов елемент за вход във фонов режим
- Инсталиране на четири дублиращи се метода за устойчивост (persistence) чрез LaunchAgent, възстановяващ zsh скрипт, който възстановява както пакета със зловреден код, така и LaunchAgent, ако не присъстват, и shell hook, добавен към ~/.zshrc, който задейства изпълнението на възстановяващия скрипт при всяка нова интерактивна zsh сесия
- Периодично проверяване и качване на директорията с подготвения зловреден код под формата на ZIP архив
Тъй като сървърът държи частния ключ, който завършва процеса по обмен на ключове, ключът за декриптиране на данни (DEK) не може да бъде възстановен без него, предотвратявайки декриптирането на зловредния код. Освен това, тъй като при всяко изпълнение се генерира нова еднократна двойка ключове, прихваната стойност на DEK не може да бъде използвана повторно за извличане на съдържанието на зловредния код.
Това от своя страна прави криптирания зловреден код практически неизползваем за статичен анализ без достъп до активна сесия за командване и контрол (C2).
| Генериране на еднократен ключ и обмен на DEK в реално време |
Нещо повече, възстановяващият скрипт се копира в папките 'post-checkout' и 'pre-commit' в '~/Library/Application Support/System/.githooks/', като опцията за конфигурация на Git 'git config --global core.hooksPath' е настроена към тази директория. В резултат на това всяко действие git checkout или git commit в което и да е хранилище на компрометираната система незабележимо ще активира възстановяващия скрипт.
Финалният етап е компонентът за кражба на данни (stealer), написан на Swift, което отбелязва разлика от неговия предшественик, реализиран на Rust. Въпреки промяната в използвания език за програмиране, крайната цел остава същата -
- Прихващане на системната парола чрез показване на фалшив прозорец за грешка (crash dialog) и повторна проверка на въведената информация чрез метод за валидиране, базиран на PAM
- Изброяване и извличане на елементи от keychain
- Кражба на идентификационни данни от браузъри, базирани на Chromium и Firefox, включително Google Chrome, Microsoft Edge, Mozilla Firefox, Brave, Vivaldi, Opera, Opera GX, Arc, Zen, Waterfox, LibreWolf, Yandex Browser и Cốc Cốc
- Събиране на системни характеристики (fingerprinting), подробни метаданни и профилната снимка на потребителя
- Събиране на потребителски файлове като .zsh_history, .zshrc, .bash_history и .gitconfig
- Изброяване на работещи процеси и инсталирани приложения
„Включването на Arc, Zen и по-рядко срещаните регионални браузъри и такива, фокусирани върху поверителността, разширява значително списъка с цели отвъд обичайното за масовия зловреден софтуер от тип stealer за macOS“, казва Хафлер.
„Този вариант на PamStealer отразява целенасочена инвестиция в инфраструктурата за доставяне. Програмата pkgunpack въвежда обмен на ключове в реално време, който обвързва декриптирането на зловредния код с наличността на сървъра: без съдействието на C2, вторият етап не може да бъде декриптиран. Този дизайн прави статичното възстановяване на зловредния код значително по-трудно и прехвърля част от оперативния контрол към оператора на сървъра.“