El sensor que mide la temperatura actual de una máquina es también una buena manera para saber si un programa está ejecutándose en un entorno virtualizado, algo normalmente útil para un código malicioso porque será indicativo de que probablemente esté siendo analizado en una sandbox. En un entorno no virtualizado la función devuelve una salida válida como: "25.05C: 77.09F: 298.2K". Pero para un entorno totalmente virtualizado lo que devuelve es "MSAcpi_ThermalZoneTemperature not supported" porque esta función no es compatible con procesadores virtualizados.
Pero para decepción de los autores de malware este método no siempre es válido: no todas las máquinas con Windows lo admitirán debido a la incompatibilidad con algunos sensores térmicos. Es una función de BIOS. A veces, el fabricante del BIOS proporciona DLLs a las que se puede hacer referencia para llamar a la función requerida y devolver el detalle, pero muchas otras veces no existe ese soporte del fabricante y simplemente no es posible obtener la temperatura en una máquina física tampoco. En cualquier caso no deja de ser una técnica anti-VM bastante importante:
Powershell
function Get-AntiVMwithTemperature {
$t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
$valorTempKelvin = $t.CurrentTemperature / 10
$valorTempCelsius = $valorTempKelvin - 273.15
$valorTempFahrenheit = (9/5) * $valorTempCelsius + 32
return $valorTempCelsius.ToString() + " C : " + $valorTempFahrenheit.ToString() + " F : " + $valorTempKelvin + "K"
}
Yara
rule Detect_AntiVMWithTemperature {
meta:
description = "Rue to detect AntiVMwithTemperature technique"
author = "Thibault Seret"
date = "2020-09-26"
strings:
$s1 = {72 6f 6f 74 5c 57 4d 49}
// root\WMI
$s2 = {53 45 4c 45 43 54 20 2a 20 46 52 4f 4d 20 4d 53 41 63 70 69 5f 54 68 65 72 6d 61 6c 5a 6f 6e 65 54 65 6d 70 65 72 61 74 75 72 65}
// SELECT * FROM MSAcpi_ThermalZoneTemperature
$s3 = {43 75 72 72 65 6e 74 54 65 6d 70 65 72 61 74 75 72 65}
// CurrentTemperature
condition:
all of them
Recursos adicionales:
- https://medium.com/@DebugActiveProcess/anti-vm-techniques-with-msacpi-thermalzonetemperature-32cfeecda802
- https://social.msdn.microsoft.com/Forums/en-US/19520825-b1fc-4778-8704-c492124bc029/getting-cpu-temp?forum=vblanguage
Fuente: https://search.unprotect.it/map/sandbox-evasion/temperature-sensor/
Comentarios
Publicar un comentario