That has known cons, because many malware samples are created to recognize sandboxes.
Microsoft will take precautions to help prevent software from identifying a virtual environment.
1. Patch the Process Environment Block if they have debugging capabilities for software being monitored (e.g. they use the WinDbg engine in Visual Studio and it would be cool if they used it for disassembly in-memory of monitored programs and checks certain chunks of memory to identify interesting things from the disassembly (e.g. ASM instructions -> opcodes)).
2. Memory control. If they are patching memory within the address space of the monitored process to log operations via interception of various APIs which are user-mode based and don't pass down to a system service routine (KeServiceDescriptorTable) or too tricky to log it from kernel-mode then they can control memory read and spoof bytes so the sample never identifies the memory has been altered.
3. Patch the NtClose and NtCreateThreadEx exploitation (abuse) for identifying monitoring being occurred. There are many others as well. However all these common techniques, esp. user-mode ones, may be completely useless for the malware depending on the route they take. (see below notes)
Anyway Microsoft have their own virtual environment on the cloud I would hope so they can use the hyper-visor/enable debug mode (but still control device driver image loads -> either via SeRegisterImageVerificationCallback/MmLoadSystemImage interception) and intercept from kernel-mode. I'll use 64-bit environment as example:
- Intercept KiSystemCall64. Intercepting routines like KiSystemCall64 allows you to intercept all system service routine invocation system-wide which relies on the System Service Descriptor Table where the address is not already known and used directly. For example, when a system call is performed from user-mode, it lands at KiSystemCall64 which is pointed to by IA32_LSTAR, and then after this the address is taken from the SSDT and the real routine is called... Or when a Zw* routine is called in kernel-mode, it lands at KiSystemCall64 as well (for x64).
If I had my own cloud analysis environment:
- Enable debug mode at boot of the environment.
- Hyper-Visor implementation.
- Patch routines present within ntoskrnl.exe -> log activities.
- Use the logs to determine specific behavior having being occurred/scoring system.
That is just an example, but Microsoft having a sandbox mechanism in the cloud is a huge advantage, not disadvantage I think.