
A Simple Ransomware Vaccine

Una protección sencilla contra el ransomware
Con frecuencia vemos ransomware que elimina todas las copias de sombra mediante vssadmin. ¿Y si pudiéramos interceptar esa petición y matar el proceso que la invoca? Intentemos crear una vacuna sencilla.

Registramos un depurador para vssadmin.exe (y wmic.exe), que es nuestro raccine.exe compilado. Raccine es un binario que primero recoge todos los PID de los procesos padre y después intenta matar todos los procesos padre.
Ventajas:
vssadmin.exe o wmic.exe), lo que podría provocar problemas de integridad y romper nuestra raccinación en cada día de parchesDesventajas / Puntos ciegos:
vssadmin.exe delete shadows (o cualquier otra combinación en lista negra) ya no es posiblevssadmin.exe delete shadows, que podría ser un proceso de copia de seguridadvssadmin.exe (p. ej., mediante schtasks)vssadmin.exe (y wmic.exe) se intercepta y se pasa a raccine.exe como depurador (vssadmin.exe delete shadows se convierte en raccine.exe vssadmin.exe delete shadows)Combinaciones maliciosas:
delete y shadows (vssadmin, diskshadow)resize y shadowstorage (vssadmin)delete y shadowstorage (vssadmin)delete y shadowcopy (wmic)delete y catalog y -quiet (wbadmin)win32_shadowcopy o un elemento de una lista de comandos codificados (powershell)recoveryenabled (bcedit)ignoreallfailures (bcedit)^ lista desactualizada: consulta la regla YARA correspondiente
Lista de comandos codificados de Powershell: JAB, SQBFAF, SQBuAH, SUVYI, cwBhA, aWV4I, aQBlAHgA y muchos más
Emotet sin Raccine - Enlace

Emotet con Raccine - Enlace (ignora la actividad de procesos relacionada con la instalación de Raccine)

La infección se corta de raíz.
¡ÚSALO BAJO TU PROPIO RIESGO!
No podrás ejecutar comandos que utilicen los comandos en lista negra en una máquina raccinada hasta que apliques el parche de desinstalación raccine-reg-patch-uninstall.reg. Esto podría romper varias soluciones de copia de seguridad que ejecutan ese comando específico durante su trabajo. No solo bloqueará esa petición, sino que matará todos los procesos de ese árbol, incluida la solución de copia de seguridad y el proceso que la invoca.
Si tienes una monitorización de seguridad sólida que registre todas las ejecuciones de procesos, puedes revisar tus registros para ver si vssadmin.exe delete shadows, vssadmin.exe resize shadowstorage ... u otras líneas de comandos bloqueadas se usan con frecuencia o esporádicamente con fines legítimos, en cuyo caso deberías abstenerte de usar Raccine.
vssadmin.exe que contienen delete y shadows en su línea de comandos y, de lo contrario, pasa todos los parámetros a un nuevo proceso que invoca a vssadmin con sus parámetros originalesexplorer.exe de la lista blancawmic que llama a delete shadowcopy, sin salidas para los inicios de procesos en lista blanca (evita problemas con el procesamiento de salida de wmic)delete shadowstorage por @JohnLaTwC, revisión de código por @_hillu, icono de la aplicaciónbcdedit.exe /set {default} bootstatuspolicy ignoreallfailures y Tanto el paquete redistribuible de Visual C++ como .NET Framework se instalarán automáticamente al ejecutar install-raccine.bat.
Raccine.zip desde la sección Releasesraccine-installer.bat como administrador
El instalador por lotes incluye una opción de "desinstalación".
Como administrador, haz lo siguiente:
raccine-reg-patch-uninstall.reg%ProgramFiles%\Raccine y %ProgramData%\Raccinereg delete HKCU\Software\Raccine /Ftaskkill /F /IM RaccineSettings.exereg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Raccine Tray" /Fschtasks /DELETE /TN "Raccine Rules Updater" /FRecomendamos desinstalar y reinstalar para actualizar. La desinstalación elimina todas las claves de registro con configuraciones.
Raccine tiene un actualizador de firmas integrado desde la versión 1.2. Este programa, llamado RaccineRulesSync.exe, está configurado para ejecutarse una vez al día mediante una tarea programada. Puedes ejecutar una actualización de firmas manualmente usando la opción del menú del icono de la bandeja.
Desde la versión 1.0, Raccine utiliza además reglas YARA para determinar si la línea de comandos de un proceso o el proceso padre es malicioso o no. Raccine usa 2 conjuntos de reglas para dos propósitos diferentes.
./yara - reglas que se aplican a la línea de comandos con todos los parámetros, p. ej. WMIC.exe delete justatest./yara/in-memory - reglas que se aplican a la memoria del proceso padre de nuestro proceso interceptado, p. ej. ransomware.exe ejecutando nuestro proceso interceptado vssadmin.exeDesde la versión 1.1 pasamos una lista de variables externas al proceso de coincidencia YARA para permitir reglas YARA mucho más complejas e inteligentes que tengan en cuenta los atributos del proceso y de su padre.
El proceso de coincidencia se ve así en la línea de comandos:
"C:\Program Files\Raccine\yara64.exe" -d FromRaccine="true" -d Name="WMIC.exe" -d ExecutablePath="C:\Windows\System32\wbem\WMIC.exe" -d CommandLine="WMIC.exe delete justatest" -d Priority=32 -d FromRaccine="true" -d ParentName="cmd.exe" -d ParentExecutablePath="C:\Windows\System32\cmd.exe" -d ParentCommandLine="'C:\WINDOWS\system32\cmd.exe' " -d ParentPriority=32 C:\ProgramData\Raccine\yarayara\mal_emotet.yar C:\ProgramData\Raccine\yara\Rac1C6A.tmp
La siguiente lista muestra un ejemplo de regla YARA que utiliza las variables externas en su condición.
rule env_vars_test {
condition:
Name contains "WMIC.exe"
and CommandLine contains "delete justatest"
and ParentPriority >= 8
and (
ParentCommandLine contains "cmd"
or ParentCommandLine contains "powershell"
)
}
La carpeta GPO incluye Raccine.ADMX y Raccine.ADML. En el despliegue, el archivo Raccine.ADMX va en C:\Windows\PolicyDefinitions. Los archivos Raccine.ADML correspondientes van en C:\Windows\PolicyDefinitions\en-US.
Para usarlo: abre GPEDIT.MSC > Configuración del equipo > Plantillas administrativas > Sistema > Raccine
Después de configurar los cambios, es posible que debas actualizar la GPO ejecutando gpupdate.exe.
Se escribe un archivo de registro con todas las intercepciones y acciones realizadas en C:\ProgramData\Raccine\Raccine_log.txt

Cada evento de bloqueo genera una entrada en el registro de eventos Application.

Los ID que genera Raccine
Desde la versión 0.10.0, Raccine se puede instalar en "modo simulación", que activa todos los desencadenantes, registra todas las acciones pero no mata nada. Este modo debe usarse en entornos en los que las soluciones de copia de seguridad u otro software legítimo se utilizan durante un período de tiempo razonable para comprobar si Raccine interferiría con otro software. La idea es instalar Raccine en modo simulación, dejar que registre durante una semana o un mes y luego revisar los registros para ver si habría bloqueado software legítimo utilizado en la organización.

Ejecuta raccine.exe y observa cómo muere el árbol de procesos padre (captura de pantalla de v0.1)

Disponible y requerida desde la versión 1.



En caso de que el ransomware que estás manejando actualmente use un nombre de proceso determinado, p. ej. taskdl.exe, puedes simplemente cambiar el parche .reg para interceptar las llamadas a ese nombre y dejar que Raccine mate todos los procesos padre del árbol de procesos que lo invoca.
Me gustaría ampliar Raccine pero carezco de habilidades de programación en C++, especialmente en la plataforma Windows.
Si algo le ocurre a tu instalación, p. ej. mensajes de error repentinos, servicios rotos o programas que ya no arrancan, ejecuta el archivo raccine-reg-patch-uninstall.reg en la subcarpeta reg-patches. Esto debería devolver todo a la normalidad.
Después de eso, también deberías poder realizar una desinstalación completa usando install-raccine.bat.
La pronunciación correcta es "Rax-Een".
bcdedit.exe /set {default} recoveryenabled nopowershell.exe y win32_shadowcopy o una lista de comandos codificadosC:\ProgramData\Raccine_log.txtdiskshadow.exe delete shadowstaskkill.exe| Variable | Descripción | Valor de ejemplo |
|---|
| FromRaccine | true | |
| Name | Nombre del archivo de imagen | WMIC.exe |
| ExecutablePath | Ruta completa al binario | C:\Windows\System32\wbem\WMIC.exe |
| CommandLine | Línea de comandos completa con parámetros | WMIC.exe delete justatest |
| Priority | Prioridad del proceso | 32 |
| ParentName | Nombre del archivo de imagen del padre | cmd.exe |
| ParentExecutablePath | Ruta completa al ejecutable del padre | C:\Windows\System32\cmd.exe |
| ParentCommandLine | Línea de comandos completa del padre con parámetros | C:\WINDOWS\system32\cmd.exe |
| ParentPriority | Prioridad del proceso padre | 32 |