Ransomware y el Acceso controlado a carpetas en Windows 10

Hace unos días escribí un artículo uno de los tipos de ataques relacionados con el robo de credenciales y cómo Windows Defender Credential Guard podía evitarlo. En esta ocasión haré el mismo ejercicio de mostrar una característica nueva de seguridad en Windows 10, pero esta vez enfocado a un tipo de peligro mucho más común: ransomware.

Windows 10 Fall Creators Update introdujo una serie de características de seguridad agrupadas en una categoría llamada Windows Defender Exploit Guard, que a su vez viene siendo el remplazo mejorado de lo que antes se conocía como EMET, pero ya integrado en Windows. Una de las categorías de Exploit Guard es Controlled Folder Access o Controla el acceso a la carpeta, como está traducido al español (algo rara esa traducción, por cierto). Cada aplicación que se ejecute es evaluada por Windows Defender; si determina que es maliciosa o no confiable, es decir, sospechosa, impide que haga modificaciones a cualquier archivo que esté dentro de las carpetas protegidas. Aunque está pensado para cualquier aplicación maliciosa que intente escribir, es especialmente útil para combatir el ransomware, pues si las aplicaciones no pueden modificar nuestros archivos, tampoco podrán, obviamente, proceder a cifrarlos para pedir recompensas.

Predeterminadamente, Controla el acceso a la carpeta agrega las carpetas más comunes en donde el usuario puede almacenar información a las carpetas protegida; estos directorios no se pueden modificar:

image

Antes de entrar en detalle sobre cómo habilitar la característica y configurar las opciones que Windows nos provee a través de directivas de grupo, hagamos una simulación sobre lo que podría pasar en las carpetas con datos importantes.

Jugando a ser ransomware: MalFile.exe

Para poder probar con calma Controla el acceso a carpeta, decidí escribir una pequeña aplicación en C utilizando algunas API de Windows para crear y cifrar archivos. El cifrado está basado en Cryptography API: Next Generation (CNG), de Microsoft, por si están interesados.

Pueden ver el código fuente y la versión 1.0 de esta aplicación en caso de que quieran hacer las mismas pruebas: https://github.com/SergioCalderonR/MalFile/releases 

Si utilizamos el parámetro –ef, la aplicación tomará un archivo de texto plano como primer argumento, leerá el contenido, cifrará el contenido y lo guardará en el archivo que indiquemos como segundo argumento con cualquier extensión. Además de esto, la aplicación eliminará el archivo fuente, así que solo quedará el que está cifrado. En otras palabras, estoy tratando de jugar a ser ransomware.

Ahora, en mi escenario tengo una carpeta llamada C:\Info y allí, un archivo Confidential.txt que tiene texto plato:

image

MalFile.exe necesita tres parámetros para cifrar: –ef, la ruta del archivo a cifrar y la ruta del archivo cifrado con cualquier extensión o bien en texto plano (.txt).

Suponiendo que la aplicación fuera un ransomware, el ataque se podría efectuar sin ningún problema, pues para hacer cifrado ni siquiera se necesitan privilegios administrativos. Yo voy a simular el ataque enviándole los parámetros y cifrando el archivo con extensión .neu, así:

MalFile.exe –ef C:\Info\Confidential.txt C:\Info\Encrypted.neu

image

Noten que la aplicación indica, paso a paso, todo lo que se hizo sobre el contenido del archivo y que elimina el archivo original (para fines de demo, pues no sería lo que haría un ransomware).

Si abrimos el archivo con un bloc de notas, vamos a ver todo el contenido cifrado y una pequeña descripción que aparecerá en texto plano:

image

El texto que no aparece cifrado es porque la función CryptProtectData de la API de Windows permite agregarlo para que viaje con el contenido, pero no lo cifra.

Siendo un verdadero ransomware, no sería un solo archivo, sino múltiples y estaríamos ya preocupados por no poder tener la información.

Protegiendo las carpetas importantes activando Controla el acceso a carpeta

Como mencioné al principio, Controla el acceso a carpeta o Controlled Folder Acces en inglés permite restringir las operaciones de escritura sobre archivos que estén en las carpetas protegidas, así que el ransomware o cualquier otro archivo malicioso no podría actuar, a menos que logre ser confiable dentro de la base de datos de Microsoft. Veamos qué pasa cuando tratamos de hacer el ataque anterior con la característica activada.

Primero, abrimos el Centro de seguridad de Windows Defender desde el menú de inicio:

image

En el Centro de seguridad de Windows, hacemos clic en Protección antivirus y contra amenazas:

image

En la página de Protección antivirus y contra amenazas, clic en Configuración de antivirus y protección contra amenazas:

image

Luego bajamos y activamos deslizando a la derecha para activar Controla el acceso a la carpeta:

image

A menos que el directorio que deseamos proteger esté en alguna ubicación predeterminada de usuario (documentos, imágenes, etc), hacemos clic en Carpetas protegidas:

image

Finalmente, hacemos clic en Agregar una carpeta protegida, navegamos hasta el directorio raíz y aceptamos para que quede dentro de la lista de Controla el acceso a la carpeta:

image

Aceptamos el UAC y listo, nuestra carpeta estará protegida.

Como dato adicional, también pueden agregar la carpeta desde PowerShell así:

Add-MpPreference –ControlledFolderAccessProtectedFolders [CarpetaProtegida]

Donde [CarpetaProtegida] hace referencia al directorio que va a protegeer Controla el acceso a la carpeta de Windows 10. En mi caso, quedaría así:

 Add-MpPreference –ControlledFolderAccessProtectedFolders C:\Info

image

De cualquiera de las dos formas deberíamos ver nuestra carpeta en la lista:

image

Aunque no lo indicaré en este artículo, también se puede habilitar la característica a través de directivas de grupo, incluso podemos usar un modo de auditoría para no afectar a las aplicaciones sin estar seguros de que todo funcionará.

¿Qué pasa ahora cuando una aplicación malitencionada intente hacer algo?

Jugando a ser ransomware: revancha

Utilizando MalFile, voy a probar dos escenarios: creación de archivos y cifrado de archivos. La diferencia es que ahora los archivos están protegidos.

Para crear un simple archivo de texto plano basta con usar el parámetro –nf junto con la ruta y extensión. Si intento crear un archivo en la carpeta C:\Info, esto es lo que pasa:

image

El manejador de errores de Windows está devolviendo un código de error 2, que es cuando no puede encontrar el archivo especificado. Esto es porque en el código estoy utilizando la función de CreateFile, que sirve para abrir o crear archivos. En un funcionamiento normal, independiente de que el archivo exista o no, debería crearlo desde cero, pues eso es lo que explícitamente le pedí cuando la escribí:

image

Ignoro por qué no devuelve un error diferente, pero puede indicar que solo permite hacer las operaciones de lectura. A parte de devolver el error y no permitir hacer la escritura, Windows Defender muestra una notificación al usuario del bloqueo similar a la siguiente:

image

Supongamos que tenemos nuestro archivo Confidential.txt con información importante y hasta ahora sano y salvo en la carpeta segura y lo intento cifrar usando de nuevo el parámetro de –ef, así:

MalFile.exe –ef C:\Info\Confidential.txt C:\Info\Encrypted.tulpep

image

La aplicación puede leer los datos, pasarlos a otro buffer para cifrarlos, pero no puede escribir en la misma carpeta otra vez, así que el archivo continuará intacto. También veremos la notificación por parte del Centro de seguridad de Windows Defender.

También podríamos suponer que dejando leer los datos, podríamos cifrarlos y luego escribirlos nuevamente, esto sería posible si como segundo parámetro le indicamos el mismo archivo fuente, así:

MalFile.exe –ef C:\Info\Confidential.txt C:\Info\Confidential.txt

Sin embargo, Controla el acceso a la carpeta también evita que un proceso no confiable pueda escribir sobre el mismo archivo:

image

Como pueden ver, Windows devuelve Acceso denegado. Interesante, ¿no?

Permitir acceso a aplicaciones manualmente

Desde que sea una aplicación comercial o esté firmada digitalmente, no deberían tener problemas para modificar archivos en la carpetas protegidas; sin embargo, habrá excepciones que encontrarán en el camino. Afortunadamente Windows Defender permite solventar esto, basta con devolvernos a la pantalla de Protección antivirus y contra amenazas y en vez de hacer clic en Carpetas protegidas, hacemos clic en Permitir que una aplicación acceda a una de las carpetas controladas:

image

Luego hacemos clic en Agregar una aplicación permitida, buscamos el ejecutable y aceptamos:

image

Después de esto, así esté habilitado Controla el acceso a carpeta permitirá la escritura sin problemas:

image

Hay un poco más de contenido sobre este tema, pero con esto es suficiente para conocer la característica y experimentarla.

Espero sea de utilidad.

Saludos,

—Checho
Follow me on Twitter

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *