Estimados amigos de Inseguros !!!
En el post de hoy nos os voy a contar ninguna aventura, ninguna opinión, ningún proceso.
Hoy vamos a darle el turno al amigo Amador Pérez de New Vision Soflan @c0p3rnic0 para que nos cuente un interesante proyecto que ha llevado a cabo de manera altruista, si !!! gratis !!! para la lucha contra el ransomware que tanto nos preocupa.
El hombre se ha prestado a ayudarnos a todos con este script Powershell, por lo que le doy las gracias y espero que os guste.Gracias !!!!
PROTEIN es un script en Powershell desarrollado por Amador Pérez Trujillo
(aka @c0p3rnic0).
Amador Pérez
actualmente es el CEO de New
Vision SoftLan, empresa focalizada en proporcionar soluciones de
seguridad protegiendo el activo más valioso y sensible de una empresa: su
información.
PROTEIN utiliza las capacidades de
monitorización que proporciona .NET para controlar el uso que se hace de la
información almacenada en un repositorio (carpetas). A partir de la captura de
los eventos producidos en el repositorio, evalúa si los ficheros creados son
confiables. En el caso contrario actúa alertando al administrador de sistemas,
bloqueando la cuenta de usuario del dominio y deshabilitando la tarjeta de red
de la máquina infectada para detener su propagación.
¿Cómo funciona?
PROTEIN se basa en una función combinada de tres elementos para detectar
posibles ataques de ransomware:
- Blacklist:
Listado de extensiones conocidas de ransomware
- Whitelist:
Listado de extensiones permitidas en nuestro repositorio
- Honeypot:
carpeta utilizada para atrapar nuevos ransomware
Mediante la Blacklist, PROTEIN constantemente monitoriza la
creación de nuevos ficheros y los compara a los almacenados en esa lista. Actualmente
están registradas como extensiones de ransomware las siguientes:
.ecc,.ezz,.exx,.zzz,.xyz,.aaa,.abc,.ccc,.vvv,.xxx,ttt,.micro,.encrypted,.locked,.crypto,_crypt,.crinf,.r5a,.XRNT,.XTBL,.crypt,.R16M01D05,.pzdc,.good,.LOL!,.OMG!,.RDM,.RRK,.encryptedRSA,.crjoker,.EnCiPhErEd,.LeChiffre,.keybtc@inbox_com,.0x0,.bleep,.1999,.vault,.HA3,.toxcrypt,.magic,.SUPERCRYPT,.CTBL,.CTB2,.locky,.mp3,.hydracryp
El fichero que contiene la lista de extensiones en texto plano es
ransomware_list.config, un fichero en texto plano que puede ser modificado como
el usuario desee:
Tan pronto PROTEIN detecta
la creación de un fichero con una extensión de este tipo, se realizan tres
acciones :
1. Alerta por correo electrónico al administrador de sistema.
2. Bloquea el usuario del directorio activo que está siendo utilizado por el
ransomware para cifrar la información.
3. Deshabilita la tarjeta de red del ordenador del usuario infectado
para evitar la propagación del ransomware incluso reiniciando el sistema así
como cortando cualquier conexión con Internet bloqueando la descarga de claves
para cada fichero infectado con la automática desactivación del ataque.
4. Alerta al usuario de que ha sido infectado por un
ransomware mediante un mensaje emergente.
Por otro lado PROTEIN se
nutre de un listado de extensiones permitidas en el sistema como elemento
predictivo de nuevos ransomware no detectados (nuevos y no registrados por
nadie hasta la fecha) o no actualizados en la lista Blacklist de extensiones de
ransomware. Este listado se encuentra almacenado en el archivo "white_list.config".
Actualmente este fichero contiene 725 extensiones permitidas, estando cubierta
un amplio rango de las extensiones reconocidas por el sistema operativo y
programas comúnmente utilizados. En el caso de querer añadir una nueva
extensión permitida, tan sólo hace falta agregarla a este fichero que está en
texto plano.
- Por un
lado analizando una carpeta "Señuelo" (honeypot) y
actuando en caso de modificación de su contenido. Esa carpeta señuelo es
creada automáticamente cuando se instala (se ejecuta ./protein.ps1
--install) y se indica el repositorio a analizar. El nombre que se le da a
la carpeta "señuelo" es "_AntiRansomware",
conteniendo tres archivos tipo .docx que son los monitorizados comprobando
que en todo momento existen. En el caso de no existir alguno de esos
archivos (un ransomware está empezando ha actuar) automáticamente actua
según el procedimiento anteriormente explicado, es decir:
- Alerta
por correo electrónico al administrador de sistema
- Bloquea
el usuario del directorio activo que está siendo utilizado por el
ransomware para cifrar la información
- Deshabilita
la tarjeta de red del ordenador del usuario infectado para evitar la
propagación del ransomware incluso reiniciando el sistema así como
cortando cualquier conexión con Internet bloqueando la descarga de claves
mediante conexiones TOR con la automática desactivación del ataque
- Por el
otro analizando la lista de extensiones conocidas. En este caso, PROTEIN por defecto está configurado
para tan sólo registrar que se ha creado un nuevo fichero de extensión
desconocida y no actuar ante él (lo registra en un fichero de log), pudiéndose
cambiar la forma de actuar simplemente copiando el procedimiento
de envío de alertas y bloqueo de usuario y tarjeta de red para esta
acción, puesto que el código está publicado para su modificación.
Paralelmente PROTEIN almacena
un registro alertando de la infección para su consulta posterior. Como ejemplo
podemos ver como interceptó la infección de un ransomware en un repositorio
denominado "REPOSITORIO FICTICIO", mostrando el registro
creado en el log:
Podemos observar como detecta el fichero como un ransomware e
informa que se ha bloqueado, deshabilitado el usuario que está utilizando el
ransomware para cifrar la información y por último informa que ha deshabilitado
su tarjeta de red.
PROTEIN utiliza la Clase
io.filesystemwatcher de ,NET. Esta Clase escucha las notificaciones de cambio
del sistema de archivos y genera eventos cuando cambia un directorio o un
archivo de un directorio.
Aprovechando esta
funcionalidad, capturamos estos eventos y cuando se cree un archivo lo
analizamos para ver si es un ransomware o no.
Ransomware
creado para fines "no malvados" :
Desde este
enlace podéis descargar la herramienta tanto compilado en .exe como
en .ps1:
https://github.com/c0p3rnic0/PROTEIN
Tambien disponible en BitBucket: https://bitbucket.org/c0p3rnic0/protein
Tambien disponible en BitBucket: https://bitbucket.org/c0p3rnic0/protein
Gracias Amador por este excelente trabajo y por presentarlo en esta humilde comunidad !!!