Ransomware es un
tipo de malware que se instala de forma encubierta en un
ordenador, sin el conocimiento del usuario, después restringe el
acceso al sistema informático infectado y exige que el usuario
pague un rescate a los operadores del malware, para eliminar la
restricción.
El ataque del
ransomware consiste en cifrar archivos de forma sistemática, en el
disco duro del sistema, que se convierten en inaccesibles, si no se
paga el rescate.
Otros ataques pueden
simplemente bloquear los mensajes del sistema y la visualización de un
mensaje para convencer al usuario a pagar.
El ransomware normalmente se
propaga como un troyano, cuya carga útil se disfraza como un archivo
aparentemente legítimo, por ejemplo, como archivo descargado o
explotando una vulnerabilidad de software.
El ransomware intenta
leer y luego cifrar los archivos, creando un identificador para cada
archivo con el que interactúa. No importa qué algoritmo de cifrado
utilice, este es un concepto mas a bajo nivel, en función de cómo el
núcleo de Windows interactúa con el hardware del sistema. Si somos
capaces monitorizar la frecuencia de nuevos identificadores que son
creados por cada proceso, es posible detectar la actividad anormal
producida por el ransomware. Esto también se aplicaría al malware
destructivo que ha sido diseñado para sobrescribir una gran cantidad
de archivos para impedir su recuperación.
Teniendo en cuenta que
un objeto es una estructura de datos que representa un recurso del
sistema, tal como un archivo. Una aplicación no puede acceder
directamente a los datos de un objeto o a un recurso del sistema que
representa un objeto. En su lugar, una aplicación debe obtener un
identificador de objetos, que se puede utilizar para examinar o
modificar los recursos del sistema. Cada identificador tiene una
entrada en una tabla mantenida internamente. Estas entradas
contienen las direcciones de los recursos y los medios para
identificar el tipo de recurso. Esta es una de las varias capas de
abstracción que separan el usuario (y todos los procesos que están
en ejecución), a partir de los activos físicos, tales como el disco
duro. Cualquier solicitud de acceso a un archivo en el disco, tiene
que pasar por el núcleo de Windows y si desea modificar ese archivo
en el modo de usuario, es necesario crear un
identificador.
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:
- Genera un índice de todos los archivos se encarga de todos los procesos en ejecución.
- Pausas (/pause=X) para cantidad de tiempo.
- Monitoriza los índices, para mantener un recuento.
- Después los ciclos definidos (/cycles=X) , lleva a cabo un análisis.
- En el análisis comprueba si todos los procesos han sobrepasado el umbral (/threshold=X) de repetición de identificativo.
- 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.
Más información y
descarga de handle_monitor:
https://github.com/adamkramer/handle_monitor