Personal Backup Software Self-Protection Testing Methodology (January 2017)
We tested 7 most popular personal backup products in their most recent versions issued by the date of the test (December 20, 2017) for Windows 7 x86. The list included:
- Acronis True Image 2017 New Generation 20.0.0.6106
- Carbonite Home 6.2.16804
- CrashPlan Free 4.8.0.331
- EaseUS ToDo Backup Free 10.0.0.0 build 20161212
- iDrive 6.5.1.22
- Macrium Reflect Home Edition 6.3 build 1665
- NovaBackup PC 18.5 build 926
Testing was conducted on a specially prepared test stand running under VirtualBox 5.1.12. A âcleanâ Windows 7 Home Premium x32 SP1 (6.1.7601) virtual machine was cloned for each backup product. VMware Workstation ran under Windows 10 (10.0.14393 x64) as well.
We used the default settings recommended by each product vendor when installing the backup software. All of the actions recommended by the installation programs (e.g., system restart, updating, etc.) were performed. All protection components that were not automatically enabled after installation were enabled manually.
Testing of backup product self-protection capabilities included the following parameters:
- Protection of the backup product's own files:
- Modules modification/removal;
- Removal upon reboot.
- Protection of the backup productâs registry keys:
- Modification/deletion of important registry keys (manually):
- Startup keys;
- Service keys;
- Configuration keys.
- Prevention of process termination:
- From the TaskManager;
- User-level API:
- Getting the handle of the process and using ZwTerminateProcess;
- Getting a list of all process threads, getting the handle of the process and use of ZwTerminateThread;
- Getting the handle of the process and use of ZwterminateJobObject;
- Getting the handle of the process and use of ZwDEbugActiveProcess;
- Using WinStationTerminateProcess.
- Getting process main window and sending WM_CLOSE using SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
- Getting process main window and sending WM_QUIT using SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
- Getting process main window and sending WM_SYSCOMMAND (SC_CLOSE) using SendMessage, PostMessage, SendMessageCallback, SendNotifyMessage, PostThreadMessage, SendMessageTimeout;
- Getting all process windows and sending all possible window events in the loop using SendMessage and PostMessage.
- Code injection (CreateRemoteThread):
- Getting the handle of the process and using ZwCreateThread with ExitProcess address.
- Getting a list of all process threads, getting the handle of the process and use of ZwSetContextThread with ExitProcess address;
- Getting a list of all process threads, getting the handle of the process and use of ZwQueueApcThread/ZwQueueApcThreadEx with the ExitProcess address.
- Getting a list of all process threads and injection of DLL closing the process using SetWindowsHookEx;
- Getting a list of all process threads and injection of DLL closing the process using SetWinEventHook.
- Getting the handle of the process and setting PAGE_NOACCESS attribute to every available memory unit using ZeProtectVirtualMemory;
- Getting the handle of the process deallocation all available memory using ZwFreeVirtualMemory;
- Getting the handle of the process and unmap all mapped objects using ZwUnmapViewOfSection;
- Getting the handle of the process and allocation of all available memory using ZwAllocateVirtualMemory;
- Getting the handle of the process and allocation of all available memory using ZwMapViewOfSection.
- Getting the handle of the process and override available memory using ZwWriteVirtualMemory.
- Getting the handle of the process and deallocation of all handles of the process using ZwDuplicateObject;
- Getting the handle of the process and allocation of all free handles of the process using ZwDuplicateObject.
- External manipulation using command-line tools.
- Internal manipulation using embedded in the main process of backup tool code.
- Remote backup server addresses manipulation using the hosts file modifications.
- Full disk encryption by ransomware, that modifying the MBR.
PLEASE NOTE: all tests were performed in User Mode. We did not test the kernel-level self-protection capabilities of the products as there is no use in such test in this particular case.
Testing of the self-protection capabilities was conducted manually or using specially developed utilities that imitate attacks. After each attack, the correct operation of the backup software (including individual modules, active processes, services and drivers) was verified.
If one of the processes was terminated during processes termination/modification test (ie the attack was successful), then all the other processes have been attacked again.
The testing process included the following steps:
- Installation of a backup software program on a clean virtual machine.
- System restart.
- Verification of the successful installation and correct operation of all modules.
- Saving an image of the virtual machine.
- Testing of one self-protection parameter.
- Verification of the correct operation of the programâs modules.
- Rollback to the saved image (step 4)
A separate clean virtual machine was used for each backup program (step 1). After testing the backup productâs self-protection capability based on one of the criteria, the virtual machine was rolled back to its original state after product installation (step 4).
- Login to post comments