
A Simple Ransomware Vaccine

Простая защита от программ-вымогателей
Мы довольно часто видим, как программы-вымогатели удаляют все теневые копии с помощью vssadmin. Что если просто перехватывать этот запрос и убивать вызвавший его процесс? Попробуем создать простую вакцину.

Мы регистрируем отладчик для vssadmin.exe (и wmic.exe) — им является наш скомпилированный raccine.exe. Raccine — это бинарный файл, который сначала собирает все PID родительских процессов, а затем пытается убить все родительские процессы.
Преимущества:
vssadmin.exe или wmic.exe), что могло бы привести к проблемам с целостностью и ломать нашу «ракцинацию» в каждый день обновленийНедостатки / Слепые зоны:
vssadmin.exe delete shadows (или любой другой комбинации из чёрного списка) становится невозможнымvssadmin.exe delete shadows, а это может быть процесс резервного копированияvssadmin.exe (например, через schtasks)vssadmin.exe (и wmic.exe) перехватывается и передаётся raccine.exe как отладчику (vssadmin.exe delete shadows превращается в raccine.exe vssadmin.exe delete shadows)Вредоносные комбинации:
delete и shadows (vssadmin, diskshadow)resize и shadowstorage (vssadmin)delete и shadowstorage (vssadmin)delete и shadowcopy (wmic)delete и catalog и -quiet (wbadmin)win32_shadowcopy или элемент из списка закодированных команд (powershell)recoveryenabled (bcedit)ignoreallfailures (bcedit)^ устаревший список: смотрите соответствующее YARA-правило
Список закодированных команд PowerShell: JAB, SQBFAF, SQBuAH, SUVYI, cwBhA, aWV4I, aQBlAHgA и многие другие
Emotet без Raccine — Ссылка

Emotet с Raccine — Ссылка (игнорируйте активность процессов, связанную с установкой Raccine)

Инфекция пресекается на корню.
ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!
Вы больше не сможете запускать команды, использующие указанные в чёрном списке команды, на «ракцинированной» машине, пока не примените патч для удаления raccine-reg-patch-uninstall.reg. Это может сломать различные решения для резервного копирования, которые выполняют эту конкретную команду во время своей работы. Будет заблокирован не только сам запрос, но и убиты все процессы в этом дереве, включая решение для резервного копирования и вызвавший его процесс.
Если у вас есть надёжный мониторинг безопасности, который журналирует все запуски процессов, вы можете проверить свои журналы, чтобы понять, используются ли vssadmin.exe delete shadows, vssadmin.exe resize shadowstorage ... или другие заблокированные командные строки часто или эпизодически в легитимных целях; в таком случае вам следует воздержаться от использования Raccine.
delete и shadows, а в остальных случаях передаёт все параметры новому процессу, который вызывает vssadmin с исходными параметрамиexplorer.exe из белого спискаwmic с вызовом delete shadowcopy; нет вывода для запусков процессов из белого списка (позволяет избежать проблем с обработкой вывода wmic)delete shadowstorage от @JohnLaTwC, ревью кода от @_hillu, иконка приложенияbcdedit.exe /set {default} bootstatuspolicy ignoreallfailures и bcdedit.exe /set {default} recoveryenabled noКак пакет Visual C++ Redistributable, так и .NET Framework будут установлены автоматически при запуске install-raccine.bat.
Raccine.zip из раздела Релизыraccine-installer.bat от имени администратора
Пакетный установщик включает опцию «удаление».
От имени администратора выполните:
raccine-reg-patch-uninstall.reg%ProgramFiles%\Raccine и %ProgramData%\Raccinereg delete HKCU\Software\Raccine /Ftaskkill /F /IM RaccineSettings.exereg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Raccine Tray" /Fschtasks /DELETE /TN "Raccine Rules Updater" /FДля обновления мы рекомендуем удалить и заново установить программу. При удалении стираются все ключи реестра с настройками.
Начиная с версии 1.2, в Raccine встроен модуль обновления сигнатур. Эта программа с именем RaccineRulesSync.exe настроена на запуск раз в день через запланированное задание. Вы можете запустить обновление сигнатур вручную, используя опцию в меню значка в трее.
Начиная с версии 1.0, Raccine дополнительно использует YARA-правила, чтобы определять, является ли командная строка процесса или родительский процесс вредоносными. Raccine использует два набора правил для двух разных целей.
./yara — правила, которые применяются к командной строке со всеми параметрами, например WMIC.exe delete justatest./yara/in-memory — правила, которые применяются к памяти процесса родительского процесса нашего перехваченного процесса, например ransomware.exe, запустившего перехваченный нами процесс vssadmin.exeНачиная с версии 1.1, мы передаём список внешних переменных в процесс сопоставления YARA, чтобы можно было создавать гораздо более сложные и продуманные YARA-правила, учитывающие атрибуты процесса и его родителя.
Процесс сопоставления в командной строке выглядит так:
"C:\Program Files\Raccine\yara64.exe" -d FromRaccine="true" -d Name="WMIC.exe" -d ExecutablePath="C:\Windows\System32\wbem\WMIC.exe" -d CommandLine="WMIC.exe delete justatest" -d Priority=32 -d FromRaccine="true" -d ParentName="cmd.exe" -d ParentExecutablePath="C:\Windows\System32\cmd.exe" -d ParentCommandLine="'C:\WINDOWS\system32\cmd.exe' " -d ParentPriority=32 C:\ProgramData\Raccine\yarayara\mal_emotet.yar C:\ProgramData\Raccine\yara\Rac1C6A.tmp
В следующем листинге показан пример YARA-правила, использующего внешние переменные в своём условии.
rule env_vars_test {
condition:
Name contains "WMIC.exe"
and CommandLine contains "delete justatest"
and ParentPriority >= 8
and (
ParentCommandLine contains "cmd"
or ParentCommandLine contains "powershell"
)
}
Папка GPO содержит Raccine.ADMX и Raccine.ADML. При развёртывании файл Raccine.ADMX помещается в C:\Windows\PolicyDefinitions. Сопутствующий файл Raccine.ADML помещается в C:\Windows\PolicyDefinitions\en-US.
Для использования: откройте GPEDIT.MSC > Конфигурация компьютера > Административные шаблоны > Система > Raccine
После внесения изменений может потребоваться применить групповую политику, выполнив gpupdate.exe.
Файл журнала со всеми перехватами и выполненными действиями записывается в C:\ProgramData\Raccine\Raccine_log.txt

Каждое событие блокировки создаёт запись в журнале событий Application.

Идентификаторы, которые генерирует Raccine
Начиная с версии 0.10.0, Raccine можно установить в «режиме симуляции», который активирует все триггеры, записывает все действия, но ничего не убивает. Этот режим следует использовать в средах, где решения для резервного копирования и другое легитимное ПО работают достаточно долго, чтобы можно было проверить, не помешает ли Raccine другому программному обеспечению. Идея в том, чтобы установить Raccine в режиме симуляции, дать ему вести журнал неделю или месяц, а затем проверить журналы и понять, заблокировал бы он легитимное ПО, используемое в организации.

Запустите raccine.exe и наблюдайте, как умирает дерево родительских процессов (скриншот v0.1)

Доступен и обязателен начиная с версии 1.



Если программа-вымогатель, с которой вы сейчас работаете, использует определённое имя процесса, например taskdl.exe, вы можете просто изменить .reg-патч для перехвата вызовов этого имени и позволить Raccine убить все родительские процессы в дереве вызвавшего процесса.
Я хотел бы расширить Raccine, но мне не хватает навыков программирования на C++, особенно на платформе Windows.
Если с вашей установкой что-то случится, например внезапные сообщения об ошибках, сломанные службы или программы, которые больше не запускаются, выполните файл raccine-reg-patch-uninstall.reg во вложенной папке reg-patches. Это должно вернуть всё в нормальное состояние.
После этого вы также сможете выполнить полное удаление с помощью install-raccine.bat.
Правильное произношение — "Rax-Een".
powershell.exe и win32_shadowcopy или списка закодированных командC:\ProgramData\Raccine_log.txtdiskshadow.exe delete shadows| Переменная | Описание | Пример значения |
|---|
| FromRaccine | true | |
| Name | Имя файла образа | WMIC.exe |
| ExecutablePath | Полный путь к бинарному файлу | C:\Windows\System32\wbem\WMIC.exe |
| CommandLine | Полная командная строка с параметрами | WMIC.exe delete justatest |
| Priority | Приоритет процесса | 32 |
| ParentName | Имя файла образа родительского процесса | cmd.exe |
| ParentExecutablePath | Полный путь к исполняемому файлу родительского процесса | C:\Windows\System32\cmd.exe |
| ParentCommandLine | Полная командная строка родительского процесса с параметрами | C:\WINDOWS\system32\cmd.exe |
| ParentPriority | Приоритет родительского процесса | 32 |