Ransomware is a type of malware that is installed covertly on a computer, without the knowledge of the user, then restricts access to the infected computer system and requires the user to pay a ransom to the malware operators, to eliminate the restriction.
 
The ransomware attack consists in systematically encrypting files on the hard drive of the system, which become inaccessible, if the ransom is not paid.
 
Other attacks can simply block system messages and display a message to convince the user to pay.
 
The ransomware usually spreads like a trojan, whose payload is disguised as an apparently legitimate file, for example, as a downloaded file or exploiting a software vulnerability.
The ransomware tries to read and then encrypt the files, creating an identifier for each file with which it interacts. No matter what encryption algorithm you use, this is a lower level concept, depending on how the Windows kernel interacts with the system hardware. If we are able to monitor the frequency of new identifiers that are created by each process, it is possible to detect the abnormal activity produced by the ransomware. This would also apply to destructive malware that has been designed to overwrite a large number of files to prevent its recovery.
 
Taking into account that an object is a data structure that represents a system resource, such as a file. An application can not directly access the data of an object or a system resource that represents an object. Instead, an application must obtain an object identifier, which can be used to examine or modify system resources. Each identifier has an entry in an internally maintained table. These entries contain the addresses of the resources and the means to identify the type of resource. This is one of several layers of abstraction that separate the user (and all processes that are running), from physical assets, such as the hard drive. Any request to access a file on the disk,
 
Basado en este patrón de identificación esta diseñada la herramienta para Windows, llamada handle_monitor, que hace un balance de cada identificador de archivo, por proceso a través del sistema. A continuación, tiene una pequeña pausa (a discreción del usuario) y comprueba de nuevo los nuevos identificadores que no se han visto antes y se calcula el número de nuevos identificadores creados. Si el umbral pasa  un número definido de ciclos, a continuación, se genera una alerta y se realiza una acción (tal como la suspensión del proceso sospechoso).
 
Secuencia de funcionamiento:
  1. Genera un índice de todos los archivos se encarga de todos los procesos en ejecución.
  2. Pausas (/pause=X) para cantidad de tiempo.
  3. Monitoriza los índices, para mantener un recuento.
  4. Después los ciclos definidos (/cycles=X) , lleva a cabo un análisis.
  5. En el análisis comprueba si todos los procesos han sobrepasado el umbral (/threshold=X) de repetición de identificativo.
  6. Si es así, se bien generar una alerta para el proceso (/suspend).

 

 

Por defecto, sólo se busca ejecutables sin firmar (para reducir el ruido), pero se puede incluir firmados con "/signed".
 
Modo de empleo de  handle_monitor: 
 
handle_monitor.exe <parametros opcionales>
 
Parámetros opcionales:
 
/cycles=X, número de ciclos de monitorización (por defecto: 10)
/threshold=X, establecer umbral de sospecha para el número de nuevos identificadores (por defecto: 10).
/pause=X, establecer pausa en milisegundos entre los ciclos (por defecto: 1000).
/signed, incluir ejecutables firmados en el proceso de revisión.
/suspend, suspender procesos que se consideren sospechosos.
/verbose, mostrar mensajes detallados.
 
More information and download handle_monitor:
https://github.com/adamkramer/handle_monitor