Методология теста самозащиты систем резервного копирования и восстановления данных (январь 2017)

Методология теста самозащиты систем резервного копирования и восстановления данных (январь 2017)

Методология теста самозащиты систем резервного копирования и восстановления данных (январь 2017)

В тестировании принимали участие системы резервного копирования и восстановления данных для персонального домашнего использования, работающие на платформе Windows 7 x86. Все версии тестируемых систем являются актуальными на момент начала теста (20.12.2016). Среди них:

 

 

 

 

  1. Acronis True Image 2017 New Generation 20.0.0.6106
  2. Carbonite Home 6.2.16804
  3. CrashPlan Free 4.8.0.331
  4. EaseUS ToDo Backup Free 10.0.0.0 build 20161212
  5. iDrive 6.5.1.22
  6. Macrium Reflect Home Edition 6.3 build 1665
  7. NovaBackup PC 18.5 build 926

Тест проводился на специально созданном стенде на основе средства виртуализации VirtualBox 5.1.12, хостовой операционной системой являлась Windows 10 (10.0.14393 x64). Для каждой системы резервного копирования и восстановления данных клонировалась "чистая" виртуальная машина под операционной системой Windows 7 Home Premium x32 SP1 (6.1.7601). Тест проводился в среде с отключённой функцией Контроля Пользовательских Записей (UAC).

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

Тестирование самозащиты средств резервного копирования и восстановления данных проводилось по следующим параметрам: 

  1. Защита собственных файлов:
    1. модификация/удаление модулей;
    2. удаление после перезагрузки.
  2. Защита своих ключей реестра:
    1. модификация/удаление значимых ключей реестра (вручную):
      • ключи автозапуска;
      • ключи сервисов;
      • ключи конфигурации.
  3. Защита своих процессов:
    1. Предотвращение завершения процессов:
      • из TaskManager;
      • API с уровня пользователя:
        1. получение хендла процесса и использование ZwTerminateProcess;
        2. перечисление всех потоков процесса, получение хендла потока и использование ZwTerminateThread;
        3. получение хендла процесса и использование ZwTerminateJobObject;
        4. получение хендла процесса и использование ZwDebugActiveProcess;
        5. использование WinStationTerminateProcess.
      • посылка сообщений (SendMessage API):
        1. нахождение главных окон процесса и посылка WM_CLOSE через SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
        2. нахождение главных окон процесса и посылка WM_QUIT через SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
        3. нахождение главных окон процесса и посылка WM_SYSCOMMAND (SC_CLOSE) через SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
        4. нахождение всех окон процесса и посылка всех возможных оконных сообщений в цикле через SendMessage и PostMessage.
    2. Модификация процесса/кода:
      • инжектирование кода (CreateRemoteThread):
        1. получение хендла процесса и использование ZwCreateThread с адресом ExitProcess.
      • инжектирование кода (Set New Thread Context):
        1. перечисление всех потоков процесса, получение хендла потока и использование ZwSetContextThread с адресом ExitProcess;
        2. перечисление всех потоков процесса, получение хендла потока и использование ZwQueueApcThread/ZwQueueApcThreadEx с адресом ExitProcess.
      • инжектирование DLL;
        1. перечисление всех потоков процесса и вброс dll-ки, закрывающей его через SetWindowsHookEx;
        2. перечисление всех потоков процесса и вброс dll-ки, закрывающей его через SetWinEventHook.
      • изменение атрибутов защиты памяти (Memory Attributes Modification):
        1. получение хендла процесса и установка на всех доступных блоках памяти атрибута PAGE_NOACCESS через ZeProtectVirtualMemory;
        2. получение хендла процесса и освобождение всей доступной памяти через ZwFreeVirtualMemory;
        3. получение хендла процесса и освобождение всеx маппированных объектов через ZwUnmapViewOfSection;
        4. получение хендла процесса и забивание всей доступной памяти через ZwAllocateVirtualMemory;
        5. получение хендла процесса и забивание всей доступной памяти через ZwMapViewOfSection.
      • запись в процесса (WriteProcessMemory):
        1. Получение хендла процесса и уничтожение (перезапись нулями) содержимого доступных блоков памяти через ZwWriteVirtualMemory. 
      • модификация объектов процесса (Modification of process objects):
        1. получение хендла процесса и освобождение всех хендлов внутри процесса через ZwDuplicateObject;
        2. получение хендла процесса и полное забивание всех свободных  хендлов внутри процесса через ZwDuplicateObject.
  4. Защита объектов резервного копирования в облаке:
    1. Внешние манипуляции с помощью средств командной строки.
    2. Внутренние манипуляции с помощью кода, внедрённого в основной управляющий процесс средства резервного копирования.
  5. Восстановление данных из облака на жёсткий диск:
    1. Манипуляции с адресами удалённых серверов резервного копирования в облако с помощью модификации файла hosts.
    2. Полное шифрование диска с помощью шифратора-вымогателя, модифицирующего MBR.

В отличии от аналогичных тестов антивирусных программ проверки возможности выгрузки драйверов и самозащита на уровне системы (изменение разрешений на доступ к файлам и ключам реестра) для данного типа программ не учитывались. Вместо этого были добавлены проверки защиты объектов резервного копирования в облаке и проверки возможностей восстановления системных настроек из облака в случае их повреждения вредоносной программой.

Важно! Все тестовые кейсы работают из User Mode. Проверка самозащиты от атак на уровне ядра не проверялась, так как в данном случае она теряет всякий смысл. Проверка самозащиты производилась при помощи специально подготовленных утилит, имитирующих атаки или вручную, с правами локального администратора. После каждой атаки обязательно проводилась проверка работоспособности средства резервного копирования.

Если в ходе тестов на завершение/модификацию процессов один из них завершался (т.е. атака на него удавалась), то все остальные процессы подвергались атаке повторно. 

Шаги проведения тестирования: 

  1. Установка средства резервного копирования на чистую машину;
  2. Перезагрузка системы, если в этом есть необходимость;
  3. Проверка успешной установки и работоспособности всех модулей программы; Сохранение образа виртуальной машины;
  4. Проверка самозащиты по одному из параметров;
  5. Повторная проверка работоспособности модулей программы;
  6. Откат системы к сохраненному ранее образу (пункт 4).

Для каждого средства резервного копирования выделялась отдельная чистая виртуальная машина - шаг 1. После каждой проверки самозащиты по какому-либо критерию, машина откатывалась в первоначальное состояние - шаг 4.

 

Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Telegram, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.
Если вы являетесь производителем и хотели бы видеть свой продукт в списке протестированных по данной методологии или обновить его результаты, не дожидаясь нового планового теста, вы можете воспользоваться услугой индивидуального тестирования.