Бесфайловый зловред PRIVATELOG прячет полезную нагрузку в CLFS-файлах

Бесфайловый зловред PRIVATELOG прячет полезную нагрузку в CLFS-файлах

Бесфайловый зловред PRIVATELOG прячет полезную нагрузку в CLFS-файлах

Эксперты Mandiant (дочка FireEye) проанализировали вредоносную программу, использующую необычный способ сохранения своего кода в памяти системных процессов. С этой целью зловред, получивший имя PRIVATELOG, и его инсталлятор STASHLOG используют контейнеры CLFS (Common Log File System, подсистемы журналирования общего назначения), содержимое которых недоступно для разбора средствами Windows и редко просматривается антивирусами.

Обычно бесфайловые Windows-зловреды используют для сокрытия от обнаружения возможности системного реестра, WMI или репозиторий CIM, доступные через различные API. С вредоносной полезной нагрузкой в файлах журнала CLFS эксперты, по их словам, столкнулись впервые.

Эта система Windows доступна как в режиме ядра, так и в пользовательском режиме приложений. Ее можно использовать для регистрации данных либо событий с целью хранения изменений состояния транзакции перед ее фиксацией. Соответствующие файлы программы создают, сохраняют и считывают с помощью отдельного API-интерфейса.

«Поскольку формат лог-файлов CLFS нечасто используют или указывают в техдокументации, современные парсеры не умеют их обрабатывать, — пишут аналитики в блоге Mandiant. —  Вредоносные данные, спрятанные в виде записей журнала, к тому же удобно использовать: они доступны через API».

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

 

При запуске и STASHLOG, и PRIVATELOG вначале отмечают все BLF-файлы в папке профиля пользователя и выбирают для использования объект с самой ранней датой создания. Инсталлятор получает целевую полезную нагрузку как аргумент и сохраняет содержимое в конкретный лог-файл CLFS. Код PRIVATELOG (64-битный prntvpt.dll) внедряется в память текущего процесса путем подмены порядка поиска DLL.

Конечная цель авторов нового зловреда пока неясна: в реальных атаках он пока не замечен и, по всей видимости, находится в стадии разработки. Не исключено, что его создал ради пробы какой-то ИБ-исследователь.

Способы защиты от новоявленной угрозы те же, что и от других зловредов: своевременный патчинг установленного ПО, мониторинг систем на наличие признаков вредоносной активности, использование почтовых антивирусов и тренинги для персонала. Аналитики также рекомендуют воспользоваться созданными в Mandiant правилами YARA для поиска признаков заражения STASHLOG и PRIVATELOG, а также регулярно просматривать логи EDR-систем на наличие IoC в записях о событиях process, imageload и filewrite.

Баг macOS ломает TCP через 49 дней без перезагрузки

В macOS нашли редкий, но очень неприятный баг: если компьютер работает без перезагрузки примерно 49,7 дня, у него может постепенно умирать TCP. По версии исследователей, проблема связана с переполнением 32-битного счётчика времени в ядре XNU, который используется TCP-подсистемой.

После этого внутренние TCP-таймеры якобы перестают нормально обновляться, соединения в состоянии TIME_WAIT не очищаются, временные порты постепенно заканчиваются, и система в какой-то момент просто перестаёт устанавливать новые TCP-соединения.

При этом ping может продолжать работать, что делает сбой особенно странным. В Photon пишут, что заметили аномалию на своих macOS-машинах, которые круглосуточно используются для мониторинга iMessage-сервисов.

По их описанию, часть узлов после примерно 49 дней 17 часов 2 минут 47 секунд аптайма перестала открывать новые TCP-сессии. После перезагрузки всё возвращалось в норму, но таймер, по сути, запускался заново.

Авторы утверждают, что смогли воспроизвести поведение на двух машинах и связали его с переменной tcp_now в XNU. В открытом репозитории Apple действительно есть TCP-код ядра Darwin/XNU, где используются 32-битные значения времени и логика сравнения временных меток TCP, на которую ссылаются исследователи.

Поведения бага выглядит так: сначала ничего не ломается в лоб, но закрытые TCP-соединения перестают вовремя исчезать из TIME_WAIT. Затем их становится всё больше, временные порты забиваются, новые подключения начинают зависать в SYN_SENT, а сервисы, которым нужны новые TCP-сокеты, начинают сыпаться.

Если эта находка подтвердится, то для обычного пользователя баг вряд ли станет массовой проблемой: большинство устройств на macOS перезагружаются чаще (хотя бы из-за обновлений). А вот для долго работающих Mac mini, билд-серверов, CI/CD-ферм, удалённых рабочих станций и серверных компьютеров, которые могут жить без ребута неделями, история выглядит уже куда серьёзнее.

Если у вас есть компьютер на macOS, который работает неделями без перезагрузки и критичен для сервисов, мы бы посоветовали следить за его аптаймом.

RSS: Новости на портале Anti-Malware.ru